// UTF-8
/**
 * 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;
		}
};

/*----------------------------------------------
*
* 	jRollover 1.0
* 	since:11-02-23
*		MIT license.
*
----------------------------------------------*/
 
(function($){
		$.fn.jRollover = function(options) {
				
				// 初期値、オプションの初期値を設定
        var set = $.extend({
						offName : "_off",
						onName : "_on",
						preload : false						
        },options || {}); // optionsに値があれば上書き
				
        var self = $(this);
				
				//offName. を探すためのRegExp
				var m = new RegExp(set.offName + "\.");
				
				// ロールオーバー処理内容
				var rollover = function() {
						var img = $(this);					
						//src属性にoffName.が含まれる場合に実行
						if(img.attr("src").match(m)) {
								//src属性のoffName.をonName.に置換
								img.attr("src",img.attr("src").replace(set.offName+".", set.onName+"."));
								img.mouseout(function(){
										//マウスアウトでsrc属性のonName.をoffName.に置換
										img.attr("src",img.attr("src").replace(set.onName+".", set.offName+"."));
								})
						}
				};

				// セレクタで指定した要素を処理
				self.mouseover(rollover);
				
				// preload が true の時オンマウス画像をプリロード
				if(set.preload === true) {
						self.each(function(i) {
								var preimg = $(this);
								if(preimg.attr("src").match(m)) {
										var img = $("<img>").attr("src",preimg.attr("src").replace(set.offName+".", set.onName+"."))
								}
						})
				}
		
				// メソッドチェーン用
				return this;
				
		};
})(jQuery);


/*----------------------------------------------
*
* 	jBTextResizer 1.0
* 	since:11-06-15
*		MIT license.
* 	c 2011 Bridge Corporation Inc.
*
----------------------------------------------*/
 
(function($){
		$.fn.jBTextResizer = function(options) {
				
				var self = $(this);
				
				// 初期値、オプションの初期値を設定
        var set = $.extend({
						target : $("#container"), //サイズ変更をする対象のセレクタ
						btnBig : "sizeBig", //大ボタンのid名
						btnReset : "sizeReset", //リセット（中）ボタンのid名
						btnSmall : "sizeSmall", //小ボタンのid名
						className : "active", //アクティブ時のclass名
						defaultSize : 14.66, //targetに指定する基準フォントサイズ
						plus: 2, //拡大時のフォントサイズ増加値
						minus: 2, //縮小時のフォントサイズ減少値
						cookie : true, //クッキーを使用するか
						expires : 7 //クッキーの保存期間
        },options || {}); // optionsに値があれば上書き
				
				//ボタンのカーソルを指にして、フォント切り替えを可視化
				self.css("cursor","pointer").parent().show();
				
				//クッキーを使用する場合、クッキーに保存されているフォントサイズをtargetに指定する
				if(set.cookie === true) {
						set.target.css("font-size",$.cookie('fsize'));
						if(set.defaultSize < parseFloat($.cookie('fsize'))) {
								$("#"+set.btnBig).find("span").addClass(set.className);
								$("#headerNav li").css("marginLeft","1.0em");
						} else if(set.defaultSize > parseFloat($.cookie('fsize'))){
								$("#"+set.btnSmall).find("span").addClass(set.className);
								$("#headerNav li").css("marginLeft","1.7em");
						} else {
								$("#"+set.btnReset).find("span").addClass(set.className);
								$("#headerNav li").css("marginLeft","1.7em");
						}
				}
				
				// タブ処理内容
				var sizeChange = function() {
						
						var child = $(this).find("span");
						
						if(child.is("."+set.className)) {
								//アクティブな時の処理
								return false;
						} else {
						
								//現在のフォントサイズを取得
								var fontSize = set.target.css("font-size");
								
								//クリックしたボタンで処理を分岐
								switch($(this).attr("id")){
									case set.btnBig:
										var fontSize = set.defaultSize+set.plus;
										$("#headerNav li").css("marginLeft","1.0em");
										break;
									case set.btnReset:
										var fontSize = set.defaultSize;
										$("#headerNav li").css("marginLeft","1.7em");
										break;
									case set.btnSmall:
										var fontSize = set.defaultSize-set.minus;
										$("#headerNav li").css("marginLeft","1.7em");
										break;
								}
								
								//変更後のサイズを指定
								set.target.css("font-size",fontSize+"px");
								
								//全てのボタンからclassを外す
								self.find("span").removeClass(set.className);
								
								//クリックしたボタンにclassを付ける
								child.addClass(set.className);
								
								//クッキーを使用する場合、変更後のサイズを保存
								if(set.cookie === true) {
										$.cookie("fsize", null);
										$.cookie("fsize",fontSize+"px",{expires: set.expires,path:'/'});
								}
								
						}
						if(autoHeightSwitch==1){$("#infoBlock02 ul.movieList > li").autoHeight({column:2});}
				};
				
				// セレクタで指定した要素を処理
				self.click(sizeChange);

				// メソッドチェーン用
				return this;
				
		};
})(jQuery);


/*----------------------------------------------
*
* 	jRollover 1.0
*
----------------------------------------------*/


//コンフリクト回避
jQuery.noConflict();

/*----------------------------------------------
*
* 	jQuery document ready
*
----------------------------------------------*/

jQuery(document).ready(function($){
		
		autoHeightSwitch = 0;
		
		/*rollover
		---------------------------------------------*/		
		$("img,input:image").jRollover();

		/*フォントサイズ変更
		---------------------------------------------*/

		$("#fontSizeChange dd").jBTextResizer({
				target : $("#container"),
				className : "active"
		});
		
		/*IE用hover処理
		---------------------------------------------*/
		$("#fontSizeChange span").hover(function(){
			$(this).css({"opacity":"0.6"});
		},
		function(){
			$(this).css({"opacity":"1.0"});
		});

		/*----------------------------------------------
		*
		* 	Top Style & products
		*
		----------------------------------------------*/
		
		//商品詳細画像切替
		var dtl = $("#itemImgList li a");
		var lImg = $("#detailPhoto img.picture");
		var zoomAnc = $("#detailPhotoBlock a.zoomAnc");
		
		dtl.click(function() {
				var changeSrc = $("img",this).attr("src");
				var index = $(this).parent().index();
				lImg.fadeOut("fast",
						function() {
								$(this).attr("src", changeSrc.replace(/68.jpg$/, '330.jpg').replace(/_thumb/, ''));
								setTimeout(function fadeInImg(){
									lImg.css("marginTop",function(){
										var ht = $(this).height();
										var ht = (400-ht)/2;
										return ht;
									}).fadeIn("fast");
								}
								,200);
						}
				);

				return false;
		}).css("cursor","pointer");
		
		
});


/*----------------------------------------------
*
* 	jQuery onload
*
----------------------------------------------*/
/*
jQuery.event.add(window, "load", function(){
																					
		//画像の上下中央寄せ
		var imgList = jQuery("#itemImgList img");
		var imgList2 = jQuery("#detailPhoto img");
		
		imgList.css("marginTop",function(){
			var ht = jQuery(this).height();
			var ht = (68-ht)/2;
			return ht;
		});

		imgList2.css("marginTop",function(){
			var ht = jQuery(this).height();
			var ht = (400-ht)/2;
			return ht;
		});

});
*/
