/*----------------------------------------------
*
* 	scrollsmoothly.js
* Copyright (c) 2008 KAZUMiX
* http://d.hatena.ne.jp/KAZUMiX/
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
----------------------------------------------*/

(function(){
    var easing = 0.25;
    var interval = 20;
    var d = document;
    var targetX = 0;
    var targetY = 0;
    var targetHash = '';
    var scrolling = false;
    var splitHref = location.href.split('#');
    var currentHref_WOHash = splitHref[0];
    var incomingHash = splitHref[1];
    var prevX = null;
    var prevY = null;

    // ドキュメント読み込み完了時にinit()を実行する
    addEvent(window, 'load', init);

    // ドキュメント読み込み完了時の処理
    function init(){
        // ページ内リンクにイベントを設定する
        setOnClickHandler();
        // 外部からページ内リンク付きで呼び出された場合
        if(incomingHash){
            if(window.attachEvent && !window.opera){
                // IEの場合はちょっと待ってからスクロール
                setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
            }else{
                // IE以外はそのままGO
                scrollTo(0, 0);
                setScroll('#'+incomingHash);
            }
        }
    }

    // イベントを追加する関数
    function addEvent(eventTarget, eventName, func){
        if(eventTarget.addEventListener){
            // モダンブラウザ
            eventTarget.addEventListener(eventName, func, false);
        }else if(window.attachEvent){
            // IE
            eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
        }
    }
    
    function setOnClickHandler(){
        var links = d.links;
        for(var i=0; i<links.length; i++){
            // ページ内リンクならスクロールさせる
            var link = links[i];
            var splitLinkHref = link.href.split('#');
            if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
                addEvent(link, 'click', startScroll);
            }
        }
    }

    function startScroll(event){
        // リンクのデフォルト動作を殺す
        if(event){ // モダンブラウザ
            event.preventDefault();
            //alert('modern');
        }else if(window.event){ // IE
            window.event.returnValue = false;
            //alert('ie');
        }
        // thisは呼び出し元になってる
        setScroll(this.hash);
    }

    function setScroll(hash){
        // ハッシュからターゲット要素の座標をゲットする
        var targetEle = d.getElementById(hash.substr(1));
        if(!targetEle)return;
        // スクロール先座標をセットする
        var ele = targetEle
        var x = 0;
        var y = 0;
        while(ele){
            x += ele.offsetLeft;
            y += ele.offsetTop;
            ele = ele.offsetParent;
        }
        targetX = x;
        targetY = y;
        targetHash = hash;
        // スクロール停止中ならスクロール開始
        if(!scrolling){
            scrolling = true;
            scroll();
        }
    }

    function scroll(){
        var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
        var currentY = d.documentElement.scrollTop||d.body.scrollTop;
        var vx = (targetX - currentX) * easing;
        var vy = (targetY - currentY) * easing;
        var nextX = currentX + vx;
        var nextY = currentY + vy;
        if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
           || (prevX === currentX && prevY === currentY)){
            // 目標座標付近に到達していたら終了
            scrollTo(targetX, targetY);
            scrolling = false;
            location.hash = targetHash;
            prevX = prevY = null;
            return;
        }else{
            // 繰り返し
            scrollTo(parseInt(nextX), parseInt(nextY));
            prevX = currentX;
            prevY = currentY;
            var scope = this;
            setTimeout(function(){scroll.apply(scope)},interval);
        }
    }

}());


/*----------
jquery.cookie.js
----------*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
var path = options.path ? '; path=' + options.path : '';
var domain = options.domain ? '; domain=' + options.domain : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};

/*----------------------------------------------
*
* 	jQuery document ready
*
----------------------------------------------*/

$(function(){
	
		/*----------------------------------------------
			Rollover Script
			create:10-03-04
		----------------------------------------------*/

    $("img,input:image").mouseover(function(){
				//src属性に_off.が含まれる場合に実行
				if($(this).attr("src").match(/_off\./)) {
						//src属性の_off.を_on.に置換
        		$(this).attr("src",$(this).attr("src").replace('_off.', '_on.'));
						$(this).mouseout(function(){
								//マウスアウトでsrc属性の_on.を_off.に置換
        				$(this).attr("src",$(this).attr("src").replace('_on.', '_off.'));
    				})
				}
		}).each(function(){
				if($(this).attr("src").match(/_off\./)) {
						//_on画像をプリロード
						var img = $("<img>,<input>:image").attr("src",$(this).attr("src").replace('_off.', '_on.'))
				}
    });

		/*----------------------------------------------
			sizeChange.js
		----------------------------------------------*/

		CONTAINER = $("#Container");
		var CHANGE = $("#SizeChange");
		CONTAINER.css("font-size",$.cookie('fsize'));
		CHANGE.show().css("cursor","pointer");
		$("li.Big",CHANGE).click(Big);
		$("li.Reset",CHANGE).click(Reset);


		/*----------------------------------------------
			Global Navigation
		----------------------------------------------*/

		var Btn = $("#GlobalNav li");
		var Aco = $("#Header div.GlbNav02");
		
    Btn.click(function(){
				var index = Btn.index(this);
				
				//既に開いているメニューのボタンを押したとき
				if($(this).hasClass("On")){
						Aco.find("ul").css("opacity","0").end().slideUp("fast").removeClass("Open");
						Btn.removeClass("On");
						$("img",this).attr("src",$("img",this).attr("src").replace('_act.', '_off.'));
						return false;
				}
				//開いているメニューとは別のボタンを押したとき
				else if(Aco.hasClass("Open")||Aco.hasClass("Active")){
						Aco.find("ul").css("opacity","0").end().slideUp("fast").eq(index).slideDown("fast").find("ul").delay(200).animate({opacity: 1.0}, 100, "linear");
						//Btn.removeClass("On").attr("src",$("img",Btn).attr("src").replace('_act', '_off.'));
						Btn.removeClass("On").each(function(){
							$("img",this).attr("src",$("img",this).attr("src").replace('_act.', '_off.'));
						});
						
						$(this).addClass("On");
						$("img",this).attr("src",$("img",this).attr("src").replace('_on.', '_act.').replace('_off.', '_act.'));
						return false;
				}
				//何れも開いていないとき
				else {
					Aco.find("ul").css("opacity","0").end().slideUp("fast").eq(index).addClass("Open").slideDown("fast").find("ul").delay(200).animate({opacity: 1.0}, 100, "linear");
					$(this).addClass("On").find("img").attr("src",$("img",this).attr("src").replace('_on.', '_act.').replace('_off.', '_act.'));
					return false;
				}
    }).css("cursor","pointer");
		
});


/*----------------------------------------------
	sizeChange 用関数
----------------------------------------------*/
function Big(){
	var FontSize = CONTAINER.css("font-size");
	//alert(FontSize); //現在のフォントサイズ
	var FontSizeBig = parseInt(FontSize)+1;
	//alert(FontSizeBig); 1px足したフォントサイズ
	CONTAINER.css("font-size",FontSizeBig+"px");
	$.cookie("fsize", null);
	$.cookie("fsize",FontSizeBig+"px",{expires:7,path:'/'});
};

function Reset(){
	CONTAINER.css("font-size","13px");
	$.cookie("fsize", null);
	$.cookie("fsize","13px",{expires:7,path:'/'});
};


/*----------------------------------------------
	Google Analytics
----------------------------------------------*/
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-21081213-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
