/*
* mopSliderTimo 2.5.0
 * By Hiroki Miura (http://www.mopstudio.jp)
 * Copyright (c) 2009 mopStudio
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * November 17, 2009
 */
 
var autoS=[],indiS=[],mopSldWS=[],intervalS=[],itemMgnS=[],moveS=[];
var animS=[],preTurnS=[],turnS=[],nextMovS=[],nextMovBkS=[],nextNumS=[],nextNumBkS=[];
var sclNumS=[],sldNumS=[];
var posiS=[],posiBkS=[];
var chkNumS=[],chkNumBkS=[];
var mpSldMoS=[];
var boxWS=[],sldWS=[],btnWS=[];
var wchDgS=[];
var btnPastS=[],boxPastS=[],btnPosiS=[],boxPosiS=[],btnMvNumSS=[],boxMvNumSS=[]; 
var finalCountS=[];
var mpSldCount=0,mpSldNoS=[];
var itemNumS=[],boxW=[];
var sclMaxS=[];

jQuery.fn.extend({
	mopSlider:function(){
		var ua=navigator.userAgent,browser,os,ie67=false;
		var px="px"
		var btnPosi,boxPosi,btnPast,boxPast,wchDg="";
		var btnMvNum,btnMoveTo,boxMvNum,boxMoveTo;
		var timeCheck1,timeCheck2,dragCheck1,dragCheck2,finalTime1,finalTime2;
		var mpSldNm;
		var sclMax,sclNum,caseW,itemNum,sldNum,chkNum,movNum;
		var mpSldMo;
		var boxW,itemMgnAll;
		var finalCount=0;
		var indication
		//スライドエリア幅
		var mopSldW=$(this).width();
		//スライドエリア高さ
		var mopSldH=471;
		//スライドメータ幅
		var sldW=807;
		//スライドボタン幅
		var btnW;
		//ボックスマージン
		var itemMgn=0;
		var shuffle=0;
		var mpSldNo=1;//スライドの数
		var auto;
		var move;
		var interval;
		var anim,turn="go",preTurn="go";
		var posi,posiBk;
		var nextMov=[],nextMovBk=[];
		var nextNum=0,nextNumBk=0;
		var sclW=0,sclWbk=0;
		auto='n';
		move=1000;
		interval=2000;
		itemMgn=0;
		shuffle='n';
		mpSldCount+=1;
		var num=mpSldCount;
		mpSldNo=num;
		mpSldNoS.push(mpSldNo);
		mpSldNm="#mopSlider"+mpSldNo;
		var noSharp=mpSldNm.split("#")[1];
		$(mpSldNm).hide();
		var arr=jQuery.makeArray($(this).children());
		Array.prototype.shuffle = function() {
			var i = this.length;
			while(i){
				var j = Math.floor(Math.random()*i);
				var t = this[--i];
				this[i] = this[j];
				this[j] = t;
			};
			return this;
		};
		if((shuffle=='y')||(shuffle==1)){
			arr.shuffle();
			$(arr).appendTo(this);
		};
		if(ua.indexOf("Mac",0)>=0){os="mac";}else if(ua.indexOf("Win",0)>=0){os="win";};
		if(ua.indexOf("MSIE 6")>-1){browser="ie6";};
		if(ua.indexOf("MSIE 7")>-1){browser="ie7";};
		if((browser=="ie6")||(browser=="ie7")){ie67=true;};
		
		//スライド領域ポジション
		$(this).css({position:"absolute",overflow: "hidden",left: "0px",display: "block"});
		//スライド内アイテム数
		itemNum=$(this).children().length;
		itemNumS.push(itemNum);
		var allW=0;
		var num=0;
		//スライド内アイテム数幅合計
		for (i=1; i<(itemNum+1); i++){
			var itemW=eval($(this).children().eq(num).css("width").split("px")[0]);
			nextMov.push(itemW);
			var itemH=eval($(this).children().eq(num).css("height").split("px")[0]);
			//var mgn=(mopSldH-itemH)/2;
			//$(this).children().eq(num).css({marginTop:mgn+px});
			num+=1;
			allW+=itemW;
		};
		var lengthNum=nextMov.length;
		for (i=1; i<(nextMov.length); i++){
			var pushW=nextMov[lengthNum-1];
			nextMovBk.push(pushW);
			lengthNum-=1;
		};
		//マージン
		itemMgnAll=itemMgn*itemNum;
		//前幅
		boxW=allW+itemMgnAll+itemMgn;

		//スライドエリア
		$(this).wrap('<div id="mopSlider"><div id="'+noSharp+'"><div class="holder"></div></div></div>');

		$("#slider").css({left:($("#slider").parent().width()-$("#slider").width())/2+"px"});
		var chousei = 272;

		sclMax=boxW-$("#mopSlider").width();
		sclNum=(sclMax)*0.01;/*0 to100 (box)*/
		sldNum=(sldW-96)*0.01;/*0 to100 (slider)*/
		var lastLength,lastLengthBk;
		//最後のスライドNo
		for (i=1; i<(nextMov.length+1); i++){
			var lenchCheck=i-1;
			sclW+=nextMov[lenchCheck];
			if(sclW>=sclMax){
				lastLength=lenchCheck;
				break;
			}
		}
		//最初のスライド
		for (i=1; i<(nextMovBk.length+1); i++){
			var lenchCheckBk=i-1;
			sclWbk+=nextMovBk[lenchCheckBk];
			if(sclWbk>=sclMax){
				lastLengthBk=lenchCheckBk;
				break;
			}
		}
		var lastMov=eval(nextMov[lastLength]);
		//あまり=スクロール幅-スクロール最大値
		var amari=sclW-sclMax;
		//スクロール最大値-最終box幅+あまり
		chkNum=sclMax-lastMov+amari;
		var lastMovBk=eval(nextMovBk[lastLengthBk]);
		var amariBk=sclWbk-sclMax;
		chkNumBk=lastMovBk-amariBk;
		nextMov[lastLength]-=amari;
		nextMovBk[lastLengthBk]-=amariBk;
		var holderWidth=(mopSldW+sclMax*2);
		$(mpSldNm+" .holder").css({width:holderWidth+"px",height:mopSldH+px,position:"relative",left:-(sclMax)+px,cursor:'move'});
		$(mpSldNm+" .holder").children().css({width:boxW+px,left:sclMax/2+chousei+px});
		$(mpSldNm+" .holder").children().children().css({marginLeft:itemMgn+"px",float:"left",position:"relative"});
		
		if(auto=='y'){anim="y";}else if(auto=='n'){anim="n";}else if(auto=='nn'){anim="nn";}else if(auto=='yn'){anim="y";}
		animS.push(anim);
		autoS.push(auto);
		
		//indiS.push(indication);
		nextMovS.push(nextMov); nextMovBkS.push(nextMovBk);
		preTurnS.push(preTurn); turnS.push(turn);
		sclNumS.push(sclNum); sldNumS.push(sldNum);
		chkNumS.push(chkNum); chkNumBkS.push(chkNumBk);
		mpSldMoS.push(mpSldMo);
		boxWS.push(boxW); mopSldWS.push(mopSldW);
		nextNumS.push(nextNum); nextNumBkS.push(nextNumBk);
		sldWS.push(sldW); btnWS.push(btnW);
		wchDgS.push(wchDg);
		btnPastS.push(btnPast); boxPastS.push(boxPast);
		btnPosiS.push(btnPosi); boxPosiS.push(boxPosi);
		finalCountS.push(finalCount);
		btnMvNumSS.push(finalCount); boxMvNumSS.push(finalCount);
		intervalS.push(interval);
		itemMgnS.push(itemMgn);
		sclMaxS.push(sclMax);
		moveS.push(move);

		$(mpSldNm).show();
		
		/*スライダーボタン*/
		$(".sliderBtn").draggable({
			axis:"x",
			containment:"parent",
			start:function(){
				$("#slidertbuttonsProducts").attr('class',"");
				$("#slidertbuttonsTechnology").attr('class',"");
				for (i=1; i<(mpSldNoS.length+1); i++){
					var j=i-1;
					if(mpSldNo==i){
						wchDgS[j]="btn";
					}
				}
				btnMvNum=0;
				dragCheck1=setInterval("mpSldF.dragCheckItv('"+mpSldNo+"','"+mpSldNm+"')",20);
				timeCheck1=setInterval("mpSldF.timeCheckItv('"+mpSldNo+"','"+mpSldNm+"')",50);
			},
			drag:function(){},
			stop:function(){
				clearInterval(dragCheck1);
				mpSldF.finalMove(mpSldNo,mpSldNm);
			}
		});
		$(mpSldNm+" .holder").children().draggable({
			axis:"x",
			containment:"parent",
			start:function(){
				$("#slidertbuttonsProducts").attr('class',"");
				$("#slidertbuttonsTechnology").attr('class',"");
				for (i=1; i<(mpSldNoS.length+1); i++){
					var j=i-1;
					if(mpSldNo==i){
						wchDgS[j]="holder";
					}
				}
				boxMvNum=0;
				dragCheck1=setInterval("mpSldF.dragCheckItv('"+mpSldNo+"','"+mpSldNm+"')",20);
				timeCheck1=setInterval("mpSldF.timeCheckItv('"+mpSldNo+"','"+mpSldNm+"')",50);
			},
			drag:function(){},
			stop:function(){
				clearInterval(dragCheck1);
				mpSldF.finalMove(mpSldNo,mpSldNm);
				$(".holder").css({backgroundImage:"url(img/holder.jpg)",backgroundRepeat:"repeat-x"});
			}
		});
		$(".sliderBtn").mousedown(
			function(){
				clearInterval(timeCheck1);
				clearInterval(finalTime1);
			}
		);
		$("#mopSlider .holder").children().mousedown(
			function(){
				clearInterval(timeCheck1);
				clearInterval(finalTime1);
			}
		);
		var movCheck=function(mpSldNo,mpSldNm,autoFlg){
			var j=mpSldNo-1;
			sldNum=sldNumS[j];
			var boxPosiPx=$(mpSldNm+" .holder").children().css("left");
			boxPosi=eval(boxPosiPx.split("px")[0]);
			var boxPosi0=-(boxPosi-sclMaxS[j]);
			var boxNum=-(boxPosi0/sclNumS[j]);
			if(((boxPosi0)>(chkNumS[j]))&&(preTurnS[j]=="go")){
				preTurnS[j]="bk";
			}else if(((boxPosi0)<(chkNumBkS[j]))&&(preTurnS[j]=="bk")){
				preTurnS[j]="go";
			};
			//自動センター戻し
			if(autoFlg==1){
				$(".sliderBtn").css({left:($("#slider").parent().width()-$("#slider").width())/2+"px"});
			}else{
				$(".sliderBtn").css({left:-(boxNum*sldNumS[j])+px});
			}
		}
		var turnCheck=function(mpSldNo){
			var j=mpSldNo-1;
			if(preTurnS[j]=="bk"){
				turnS[j]="bk";
				mpSldF.goInit(mpSldNo);
			}else if(preTurnS[j]=="go"){
				turnS[j]="go";
				mpSldF.bkInit(mpSldNo);
			};
		}
		mpSldF={
			dragCheckItv:function(mpSldNo,mpSldNm){
				var sldNum100;
				var boxPosi0;
				var boxNum;
				var j=mpSldNo-1;
				btnPosiS[j]=eval($(".sliderBtn").css("left").split("px")[0]);
				boxPosiS[j]=eval($(mpSldNm+" .holder").children().css("left").split("px")[0]);
				sldNum100=btnPosiS[j]/sldNumS[j];
				boxPosi0=-(boxPosiS[j]-sclMaxS[j]);
				boxNum=-(boxPosi0/sclNumS[j]);
				if(wchDgS[j]=="btn"){
					var chouseiLeft = Math.floor(-(sldNum100*sclNumS[j])+sclMaxS[j]);
					//調整する
					if(chouseiLeft > 272){
						chouseiLeft = Math.floor(-(sldNum100*sclNumS[j])+sclMaxS[j]+chousei);
					}
					if(chouseiLeft>10700){
						chouseiLeft = Math.floor((ie67) ? 10892:10820);
					}
					$(mpSldNm+" .holder").children().css({left:chouseiLeft+px});
				}else if(wchDgS[j]=="holder"){
					$(".sliderBtn").css({left:-(boxNum*sldNumS[j])+px});
				};
				$(".mopCheck").html(boxNum+" "+sldNum100);
			},
			move:function(mpSldNo,mpSldNm){
				var j=mpSldNo-1;
				if(itemNumS[j]!=1){
					turnCheck(mpSldNo);
				}
				mpSldMoS[j]=setTimeout("mpSldF.move('"+mpSldNo+"','"+mpSldNm+"')",intervalS[j]+moveS[j]);
			},
			goInit:function(mpSldNo){
				var j=mpSldNo-1;
				nextNumS[j]=0;
				posiS[j]=(nextMovS[j][nextNumS[j]]+itemMgnS[j]);
			},
			bkInit:function(mpSldNo){
				var j=mpSldNo-1;
				nextNumBkS[j]=0;
				if(itemNumS[j]!=1){
					posiBkS[j]=(nextMovBkS[j][nextNumBkS[j]]+itemMgnS[j]);
				}else{
					posiBkS[j]=(nextMovS[j][nextNumS[j]]+itemMgnS[j]);
				}
			},
			manualAct:function(mpSldNo,mpSldNm){
				$(mpSldNm+" .holder").children().stop();
				var j=mpSldNo-1;
				clearInterval(mpSldMoS[j]);
				animS[j]='n'
				$(".indi").html(indiS[j]);
				$(mpSldNm+" .holder").children().css({cursor:"move"});
			},
			autoAct:function(mpSldNo,mpSldNm,chkNum,chkNumBk,autoFlg){
				for (i=1; i<(mpSldNoS.length+1); i++){
					var j=i-1;
					if(mpSldNo==i){
						//sclMax=boxWS[j]-mopSldWS[j];
						animS[j]='y';
						turnS[j]="go";
						clearInterval(0);
					}
				}
				$(mpSldNm+" .holder").children().css({cursor:""});
				mpSldF.goInit(mpSldNo);
				mpSldF.bkInit(mpSldNo);
				mpSldF.auto(mpSldNo,mpSldNm);
				moveSS=1000;
				var leftpx=0,thispx=0,leftno;
				var tClass;
				var bodyWT=$("body").width();
				//中央
				if(autoFlg==1){
					leftpx = sclMax/2+chousei;
					//クラスリセット
					$("#slidertbuttonsProducts").attr('class',"");
					$("#slidertbuttonsTechnology").attr('class',"");
				}else if(autoFlg==2){//プロダクト
					$("#slidertbuttonsTechnology").attr('class',"");
					tClass = $("#slidertbuttonsProducts").attr('class');
					if(!tClass) tClass="pclass6";
					leftno = tClass.replace("pclass","");
					//1まで
					if(leftno==1){
						leftno=7;
						leftpx = sclMax;
						//alert(leftpx);
					}else{
						var tmpno = leftno;
						for(i=0;i<leftno;i++){
							leftpx += eval(nextMov[i]);
						}
						leftpx =  sclMax-leftpx+eval(bodyWT);
					}
					$("#slidertbuttonsProducts").removeClass(tClass);
					$("#slidertbuttonsProducts").addClass('pclass'+(eval(leftno)-1));
				}else if(autoFlg==3){//テクノロジー
					$("#slidertbuttonsProducts").attr('class',"");
					tClass = $("#slidertbuttonsTechnology").attr('class');
					if(!tClass) tClass="tclass7";
					leftno = tClass.replace("tclass","");
					//15まで
					if(leftno==15){
						leftno=7;
					}
					for(i=0;i<leftno;i++){
						leftpx += eval(nextMov[i]);
					}
					leftpx = sclMax-leftpx;
					$("#slidertbuttonsTechnology").removeClass(tClass);
					$("#slidertbuttonsTechnology").addClass('tclass'+(eval(leftno)+1));
				}
				$(mpSldNm+" .holder").children().animate(
					{left:leftpx+px},
					{	
						duration:moveSS,
						easing:'swing',
						step:function(){
							movCheck(mpSldNo,mpSldNm,autoFlg);
						},
						complete:function(){
							for (i=1; i<(mpSldNoS.length+1); i++){
								var j=i-1;
								if(mpSldNo==i){
									mpSldMoS[j]=setTimeout("mpSldF.move('"+mpSldNo+"','"+mpSldNm+"')",intervalS[j]);
								}
							}
						}
					}
				);
			},
			auto:function(mpSldNo,mpSldNm){
				var j=mpSldNo-1;
			},
			timeCheckItv:function(mpSldNo,mpSldNm){
				var j=mpSldNo-1;
				btnPastS[j]=btnPosiS[j];
				boxPastS[j]=boxPosiS[j];
			},
			finalMove:function(mpSldNo,mpSldNm){
				var j=mpSldNo-1;
				finalCountS[j]=0;
				if((btnPosiS[j]!=undefined)&&(btnPastS[j]!=undefined)){
					btnMvNumSS[j]=btnPosiS[j]-btnPastS[j];
					boxMvNumSS[j]=boxPosiS[j]-boxPastS[j];
				}
				finalTime1=setInterval("mpSldF.finalTimeItv('"+mpSldNo+"','"+mpSldNm+"')",50);
			},
			finalTimeItv:function(mpSldNo,mpSldNm){
				var j=mpSldNo-1;
				finalCountS[j]+=1;
				if(finalCountS[j]==1){
					btnMvNum=btnMvNumSS[j];
					boxMvNum=boxMvNumSS[j];
					mpSldNmTemp=mpSldNm;
				}
				btnPosiS[j]=eval($(".sliderBtn").css("left").split("px")[0]);
				boxPosiS[j]=eval($(mpSldNmTemp+" .holder").children().css("left").split("px")[0]);
				if(wchDgS[j]=="btn"){
					if((btnMvNum<0.1)&&(btnMvNum>-0.1)){
						btnMvNum=0;
					}else{
						if(browser=="ie6"){
							btnMvNum=btnMvNum/1.75;
						}else{
							btnMvNum=btnMvNum/1.5;
						}
					}
					btnMoveTo=btnMvNum+btnPosiS[j];
					if(btnMoveTo>(sldWS[j]-btnWS[j])){
						btnMoveTo=sldWS[j]-btnWS[j];
					}else if(btnMoveTo>=710){
						btnMoveTo=711;
					}else if(btnMoveTo<0){
						btnMoveTo=0;
					};
					$(".sliderBtn").css({left:btnMoveTo+px});
					btnPastS[j]=btnMoveTo;
					if(btnMvNum==0){
						clearInterval(finalTime1);
					}
					mpSldF.checkFinal(mpSldNo,mpSldNm);
				}
				else if(wchDgS[j]=="holder"){
					if((boxMvNum<1)&&(boxMvNum>-1)){
						boxMvNum=0;
					}else{
						if(browser=="ie6"){
							boxMvNum=boxMvNum/1.75;
						}else{
							boxMvNum=boxMvNum/1.5;
						}
					}
					boxMoveTo=boxMvNum+boxPosiS[j];
					if(boxMoveTo>sclMaxS[j]){
						boxMoveTo=sclMaxS[j];
					}else if(boxMoveTo<0){
						boxMoveTo=0;
					};
					$(mpSldNmTemp+" .holder").children().css({left:boxMoveTo+px});
					/*set boxPast*/
					boxPastS[j]=boxMoveTo;
					if(boxMvNum==0){
						clearInterval(finalTime1);
					}
					mpSldF.checkFinal(mpSldNo,mpSldNm);
				}
			},
			checkFinal:function(mpSldNo,mpSldNm){
				var sldNum100;
				var boxPosi0;
				var boxNum;
				var j=mpSldNo-1;
				btnPosiS[j]=eval($(".sliderBtn").css("left").split("px")[0]);
				boxPosiS[j]=eval($(mpSldNm+" .holder").children().css("left").split("px")[0]);
				sldNum100=btnPosiS[j]/sldNumS[j];
				boxPosi0=-(boxPosiS[j]-sclMaxS[j]);
				boxNum=-(boxPosi0/sclNumS[j]);
				if(wchDgS[j]=="btn"){
					$(mpSldNm+" .holder").children().css({left:Math.floor(-(sldNum100*sclNumS[j])+sclMaxS[j])+px});
				}else if(wchDgS[j]=="holder"){
					$(".sliderBtn").css({left:-(boxNum*sldNumS[j])+px});
				};
			}
		}
		/*end mpSldF*/
		//中央戻し
		$("#slidertbuttonsOutdoor").click(
				function(){
					for (i=1; i<(mpSldNoS.length+1); i++){
						var j=i-1;
						if(mpSldNo==i){
							mpSldF.autoAct(mpSldNo,mpSldNm,chkNum,chkNumBk,1);
							clearInterval(mpSldMoS[j]);
						}
					}
				}
			);
		//プロダクト
		$("#slidertbuttonsProducts").click(
				function(){
					for (i=1; i<(mpSldNoS.length+1); i++){
						var j=i-1;
						if(mpSldNo==i){
							mpSldF.autoAct(mpSldNo,mpSldNm,chkNum,chkNumBk,2);
							clearInterval(mpSldMoS[j]);
						}
					}
				}
			);
		//テクノロジー
		$("#slidertbuttonsTechnology").click(
				function(){
					for (i=1; i<(mpSldNoS.length+1); i++){
						var j=i-1;
						if(mpSldNo==i){
							mpSldF.autoAct(mpSldNo,mpSldNm,chkNum,chkNumBk,3);
							clearInterval(mpSldMoS[j]);
						}
					}
				}
			);
		var clickToManual=function(){
			for (i=1; i<(mpSldNoS.length+1); i++){
				var j=i-1;
				if(mpSldNo==i){
					if(animS[j]=="y"){
						mpSldF.manualAct(mpSldNo,mpSldNm);
					}
				}
			}
		}
		$(mpSldNm+" .holder").children().mousedown(function(){clickToManual();});
		$(".sliderBtn").mousedown(function(){clickToManual();});
		animGo=function(mpSldNo,mpSldNm){
			var j=mpSldNo-1;
			if(animS[j]=="y"){
				if(animS[j]=="y"){
					mpSldF.auto(mpSldNo,mpSldNm);
				}
					mpSldMoS[j]=setTimeout("mpSldF.move('"+mpSldNo+"','"+mpSldNm+"')",intervalS[j]);
			}else if(animS[j]=="n"){
				mpSldF.manualAct(mpSldNo,mpSldNm);
			}
		}
		setTimeout("animGo('"+mpSldNo+"','"+mpSldNm+"')",500);
		mpSldF.goInit(mpSldNo);
		mpSldF.bkInit(mpSldNo);
	}
});