(function($) {
    jQuery(function() {
        jQuery.yuga.selflink();
    });


    jQuery.yuga = {
        // URIを解析したオブジェクトを返すfunction
        Uri: function(path){
            var self = this;
            this.originalPath = path;
            //絶対パスを取得
            this.absolutePath = (function(){
                var e = document.createElement('span');
                e.innerHTML = '<a href="' + path + '" />';
                return e.firstChild.href;
            })();
            //絶対パスを分解
            var fields = {'schema' : 2, 'username' : 5, 'password' : 6, 'host' : 7, 'path' : 9, 'query' : 10, 'fragment' : 11};
            var r = /^((\w+):)?(\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/.exec(this.absolutePath);
            for (var field in fields) {
                this[field] = r[fields[field]];
            }
            this.querys = {};
            if(this.query){
                jQuery.each(self.query.split('&'), function(){
                    var a = this.split('=');
                    if (a.length == 2) self.querys[a[0]] = a[1];
                });
            }
        },
        //現在のページと親ディレクトリへのリンク
        selflink: function (options) {

            var c = jQuery.extend({
                selfLinkAreaSelector:'#globalnav',
                selfLinkClass:'current',
                parentsLinkClass:'parentsLink',
                postfix: '_cr',
                changeImgSelf:true,
                changeImgParents:true
            }, options);
            jQuery(c.selfLinkAreaSelector+((c.selfLinkAreaSelector)?' ':'')+'a[href]').each(function(){
                var href = new jQuery.yuga.Uri(this.getAttribute('href'));
                var setImgFlg = false;
                if ((href.absolutePath == location.href) && !href.fragment) {
                    //同じ文書にリンク
                    jQuery(this).addClass(c.selfLinkClass);
                    setImgFlg = c.changeImgSelf;
                } else if (0 <= location.href.search(href.absolutePath)) {
                    //親ディレクトリリンク
                    jQuery(this).addClass(c.parentsLinkClass);
                    setImgFlg = c.changeImgParents;
                }
                if (setImgFlg){
                    //img要素が含まれていたら現在用画像（_cr）に設定
                    jQuery(this).find('img').each(function(){
                        this.originalSrc = jQuery(this).attr('src');
                        this.currentSrc = this.originalSrc.replace(new RegExp('('+c.postfix+')?(\.gif|\.jpg|\.png)$'), c.postfix+"$2");

                        // Insert By Nagata
                        if (this.currentSrc != null && this.currentSrc != "") {
                            this.currentSrc = this.currentSrc.replace('navi_home_cr', 'navi_home');
                        }

                        jQuery(this).attr('src',this.currentSrc);
                    });
                }
            });
        }
    };
})(jQuery);





/**
 * メニューのicon出現
 * （離れたポジションにgoodsをロールオーバーで表示）
 */
jQuery(document).ready(function() {

    jQuery("#globalnav ul li").hover(function() { //Hover over event on list item
        //jQuery(this).css({ 'background' : '#1376c9 url(images/icon_book.gif) no-repeat'}); //Add background color and image on hovered list item
        jQuery(this).find("span").show(); //Show the subnav
    } , function() { //on hover out...
        //jQuery(this).css({ 'background' : 'none'}); //Ditch the background
        jQuery(this).find("span").hide(); //Hide the subnav
    });

});


/**
 * jQuery.画像のロールオーバー
 *
 * @version  1.0.2
 * @author   rew <rewish.org@gmail.com>
 * @link     http://rewish.org/javascript/jquery_rollover_plugin
 * @license  http://rewish.org/license/mit The MIT License
 * Inspired by:
 * Telepath Labs (http://dev.telepath.co.jp/labs/article.php?id=15)
 */

jQuery.fn.rollover = function(suffix) {
    suffix = suffix || '_on';
    return this.not('[src*="'+ suffix +'."]').each(function() {
        var img = jQuery(this);
        var src = img.attr('src');
        var _on = [
            src.substr(0, src.lastIndexOf('.')),
            src.substring(src.lastIndexOf('.'))
        ].join(suffix);

        // Insert By Nagata
        if (src.indexOf("_cr") == -1) {
            jQuery('<img>').attr('src', _on);
        }

        img.hover(
            function() {
                // Insert By Nagata
                if (src.indexOf("_cr") != -1) {
                    return;;
                }
                img.attr('src', _on);
            },

            function() {
                // Insert By Nagata
                if (src.indexOf("_cr") != -1) {
                    return;;
                }
                img.attr('src', src);
            }
        );
    });
};



//config
jQuery(document).ready(function($) {
   // input type="image"
    $('form input:image').rollover('');
   // set suffix
    $('.rollover a img').rollover('');
 });
//config-end


/**
 * 開閉
 * .author_side .author_inner
 * ("slow") ("normal") ("fast") (1500)
 */
jQuery(document).ready(function() {
  jQuery(".author_side .author_inner").hover(function(){
        jQuery(this).css("cursor","pointer");
  });
  jQuery(".author_side .author_inner").click(function(){
    jQuery(this).next().slideToggle("fast");
  });
});


/**
 * 開閉
 * opening
 * ("slow") ("normal") ("fast") (1500)
 */
jQuery(document).ready(function() {
  jQuery(".opening").hover(function(){
        jQuery(this).css("cursor","pointer");
  });
  jQuery(".opening").click(function(){
    jQuery(this).next().slideToggle("fast");
  });
});

/**
 * 検索窓
 * 非フォーカス時にヒントの表示されるテキストボックス
 */
jQuery(document).ready(function(){
    jQuery('#s')
        .blur(function(){
          var $$=jQuery(this);
          if($$.val()=='' || $$.val()==$$.attr('title')){
            $$.css('color', '#999')
              .val($$.attr('title'));
          }
        })
        .focus(function(){
          var $$=jQuery(this);
          if($$.val()==$$.attr('title')){
              jQuery(this).css('color', '#000')
                   .val('');
          }
        })
        .parents('form:first').submit(function(){
          var $$=jQuery('#ｓ');
          if($$.val()==$$.attr('title')){
            $$.triggerHandler('focus');
          }
        }).end()
        .blur();
      });


/**
 * jQuery.文字サイズ変更
 *
 * FONT SIZER VERSION 1.0
 * Developed by fluidByte (http://www.fluidbyte.net)
 */

//config
jQuery(document).ready(function() {
    fontResizer('0.9em','1em','1.2em');
});
//config-end

function fontResizer(smallFont,medFont,largeFont)
{
function clearSelected() {
    jQuery(".smallFont").removeClass("curFont");
    jQuery(".medFont").removeClass("curFont");
    jQuery(".largeFont").removeClass("curFont");
    }
function saveState(curSize) {
    var date = new Date();
    date.setTime(date.getTime()+(7*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    document.cookie = "fontSizer"+"="+curSize+expires+"; path=/";
    }

jQuery(".smallFont").click(function(){
    jQuery('html').css('font-size', smallFont);
    clearSelected();
    jQuery(".smallFont").addClass("curFont");
    saveState(smallFont);
    });

jQuery(".medFont").click(function(){
    jQuery('html').css('font-size', medFont);
    clearSelected();
    jQuery(".medFont").addClass("curFont");
    saveState(medFont);
    });

jQuery(".largeFont").click(function(){
    jQuery('html').css('font-size', largeFont);
    clearSelected();
    jQuery(".largeFont").addClass("curFont");
    saveState(largeFont);
    });

function getCookie(c_name) {
    if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)); } } return ""; }

var savedSize = getCookie('fontSizer');

if (savedSize!="") {
    jQuery('html').css('font-size', savedSize);
    switch (savedSize) {
    case smallFont: jQuery(".smallFont").addClass("curFont");
    break; case medFont: jQuery(".medFont").addClass("curFont");
    break; case largeFont: jQuery(".largeFont").addClass("curFont");
    break; default: jQuery(".medFont").addClass("curFont");
    } }
else { jQuery('html').css('font-size', medFont); jQuery(".medFont").addClass("curFont"); }
}


/**
 * jQuery.divの範囲までリンク
 *
 * BiggerLink v2.0.1
 * http://www.ollicle.com/eg/jquery/biggerlink/
 * Copyright (c) 2009 Oliver Boermans
 * http://creativecommons.org/licenses/MIT/
 */

(function(jQuery) {
    jQuery.fn.biggerlink = function(options) {

        // Default settings
        var settings = {
            biggerclass:'bigger', 	// class added to the first contained link and others that trigger it
            hoverclass:'hover', 		// class added to parent element on hover/focus
            hoverclass2:'hover2', 	// class added to parent element on hover/focus of other links
            clickableclass:'hot', 	// class added to parent element with behaviour
            otherstriggermaster: true,	// will all links in containing biggerlink element trigger the first link
            follow: 'auto'				// follow master link on click? : 'auto',true,false
        };
        if(options) {
            jQuery.extend(settings, options);
        }
        jQuery(this).filter(function(){
             return jQuery('a',this).length > 0;

        }).addClass(settings.clickableclass).css('cursor', 'pointer').each(function(i){

            // store element references
            var big = jQuery(this).data('biggerlink',{hovered:false,focused:false,hovered2:false,focused2:false});
            var links = {
                all: jQuery('a',this),
                big: jQuery(this),
                master: jQuery('a:first',this).data('biggerlink',{status:'master'}).addClass(settings.biggerclass),
                other: jQuery('a',this).not(jQuery('a:first',this)).data('biggerlink',{status:'other'})
            };


            jQuery('a',this).andSelf().each(function(){
                var newdata = jQuery.extend(jQuery(this).data('biggerlink'),links);
                jQuery(this).data('biggerlink',newdata);
            });



            // Add title of first link with title to parent if not already set
            var thistitle = big.attr('title');
            var newtitle = big.data('biggerlink').master.attr('title');
            if(newtitle && !thistitle)
            {
                big.attr('title', newtitle);
            }



        // events on biggerlink element

        big
            .mouseover(function(event){
                window.status = jQuery(this).data('biggerlink').master.get(0).href;
                jQuery(this).addClass(settings.hoverclass);
                jQuery(this).data('biggerlink').hovered = true;
            })
            .mouseout(function(event){
                window.status = '';
                if(!jQuery(this).data('biggerlink').focused)
                {
                    jQuery(this).removeClass(settings.hoverclass);
                }
                jQuery(this).data('biggerlink').hovered = false;
            })
            .bind('click',function(event){

                // if clicked direct or non-link
                if(!jQuery(event.target).closest('a').length)
                {
                    jQuery(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'});
                    event.stopPropagation();
                }
            });



            // focus/blur

            links.all
            .bind('focus',function(){
                jQuery(this).data('biggerlink').big.addClass(settings.hoverclass);
                jQuery(this).data('biggerlink').big.data('biggerlink').focused = true;
            }).bind('blur',function(){
                if(!jQuery(this).data('biggerlink').big.data('biggerlink').hovered)
                {
                    jQuery(this).data('biggerlink').big.removeClass(settings.hoverclass);
                }
                jQuery(this).data('biggerlink').big.data('biggerlink').focused = false;
            });



            // click/focus/blur event on master (first) link within biggerlink

            links.master
            .bind('click',function(event){
                if(event.source == 'biggerlink')
                {
                    if(settings.follow === true || settings.follow == 'auto' && event.result !== false)
                    {
                        window.location = jQuery(this).attr('href');
                    }
                    else
                    {
                        event.stopPropagation();
                    }
                }
            });


            // links other than the first (master) link also within biggerlink

            // other links are independent
            if(settings.otherstriggermaster)
            {
                links.other.addClass(settings.biggerclass)
                .bind('click',function(event){
                    // trigger click events on master link instead
                    jQuery(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'});

                    // stop this link being followed
                    event.preventDefault();

                    // prevent events on parent elements being triggered
                    event.stopPropagation();
                });
            }

            // other links are slaves of master link
            else
            {
                links.other
                .bind('focus',function(){
                    jQuery(this).data('biggerlink').big.addClass(settings.hoverclass2);
                    jQuery(this).data('biggerlink').big.data('biggerlink').focused2 = true;
                })
                .bind('blur',function(){
                    if(!jQuery(this).data('biggerlink').big.data('biggerlink').hovered2)
                    {
                        jQuery(this).data('biggerlink').big.removeClass(settings.hoverclass2);
                    }
                    jQuery(this).data('biggerlink').big.data('biggerlink').focused2 = false;

                })
                .bind('mouseover',function(event){
                    jQuery(this).data('biggerlink').big.addClass(settings.hoverclass2);
                    jQuery(this).data('biggerlink').big.data('biggerlink').hovered2 = true;
                    event.stopPropagation();
                })
                .bind('mouseout',function(event){
                    if(!jQuery(this).data('biggerlink').big.data('biggerlink').focused2)
                    {
                        jQuery(this).data('biggerlink').big.removeClass(settings.hoverclass2);
                    }
                    jQuery(this).data('biggerlink').big.data('biggerlink').hovered2 = false;
                    event.stopPropagation();
                });

                if(!links.other.attr('title'))
                {
                    links.other.attr('title','');
                }
            }
        });
        return this;
    };
})(jQuery);

//config
jQuery(function(){
        jQuery('#aDiv div').biggerlink();
    });
//config-end


/**
 *
 * スライドスクロール
 * jQuery required (tested on version 1.2.6)
 * Copyright (c) 2008 nori (norimania@gmail.com)
 * http://moto-mono.net
 * Licensed under the MIT
 *
 */

//config
jQuery(function(){
    jQuery("a[href*='#']").slideScroll();
    });
//config-end

jQuery.fn.slideScroll = function(options){

    var c = jQuery.extend({
        interval: 20, // 変化はあんまりないかも
        easing: 0.6, // 0.4 ~ 2.0 くらいまで
        comeLink: false
    },options);
    var d = document;

    // timerとposのscopeをjQuery.fn.slideScroll内に限定する
    var timer;
    var pos;

    // スクロール開始時の始点を得る
    function currentPoint(){
        var current = {
            x: d.body.scrollLeft || d.documentElement.scrollLeft,
            y: d.body.scrollTop || d.documentElement.scrollTop
        }
        return current;
    }

    // 現在のウィンドウサイズとターゲット位置から最終到達地点を決める
    function setPoint(){

        // 表示部分の高さと幅を得る
        var h = d.documentElement.clientHeight;
        var w = d.documentElement.clientWidth;

        // ドキュメントの最大の高さと幅を得る
        var maxH = d.documentElement.scrollHeight;
        var maxW = d.documentElement.scrollWidth;

        // ターゲットの位置が maxH(W)-h(w) < target < maxH(W) なら スクロール先をmaxH(W)-h(w)にする
        pos.top = ((maxH-h)<pos.top && pos.top<maxH) ? maxH-h : pos.top;
        pos.left = ((maxW-w)<pos.left && pos.left<maxW) ? maxW-w : pos.left;
    }

    // 次のスクロール地点を決める
    function nextPoint(){
        var x = currentPoint().x;
        var y = currentPoint().y;
        var sx = Math.ceil((x - pos.left)/(5*c.easing));
        var sy = Math.ceil((y - pos.top)/(5*c.easing));
        var next = {
            x: x - sx,
            y: y - sy,
            ax: sx,
            ay: sy
        }
        return next;
    }

    // 到達地点に近づくまでスクロールを繰り返す
    function scroll(href){
        var movedHash = href;
        timer = setInterval(function(){
            nextPoint();

            // 到達地点に近づいていたらスクロールをやめる
            if(Math.abs(nextPoint().ax)<1 && Math.abs(nextPoint().ay)<1){
                clearInterval(timer);
                window.scroll(pos.left,pos.top);
                location.href = movedHash;
            }
            window.scroll(nextPoint().x,nextPoint().y);
        },c.interval);
    }

    // URIにhashがある場合はスクロールする
    function comeLink(){
        if(location.hash){
            if(jQuery(location.hash) && jQuery(location.hash).length>0){
                pos = jQuery(location.hash).offset();
                setPoint();
                window.scroll(0,0);
                if(jQuery.browser.msie){
                    setTimeout(function(){
                        scroll(location.hash);
                    },50);
                }else{
                    scroll(location.hash);
                }
            }
        }
    }
    if(c.comeLink) comeLink();

    // アンカーにclickイベントを定義する
    jQuery(this).each(function(){
        if(this.hash && jQuery(this.hash).length>0
            && this.href.match(new RegExp(location.href.split("#")[0]))){
            var hash = this.hash;
            jQuery(this).click(function(){

                // ターゲットのoffsetを得る
                pos = jQuery(hash).offset();

                // スクロール中ならスクロールをやめる
                clearInterval(timer);

                // 到達地点を決めてスクロールを開始する
                setPoint();
                scroll(this.href);
                return false;
            });
        }
    });
}

/**
 * 特定のclassがあれば、span～を挿入する
 */

jQuery.fn.extend({
	  inlineBgFix: function() {
	    if (jQuery.browser.msie && jQuery.browser.version < 8.0) {
	    	jQuery(this)
	        .append('<span class="liexternal_ie">&nbsp;</span>');
	    }
	  }
	});

jQuery(function() {
	jQuery("a.liexternal").inlineBgFix();
	});

