// mopSlider 2.4 (Modified)
// Copyright (c) 2009, Hiroki Miura (www.mopstudio.jp)
// Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php

jQuery.fn.extend({
	mopSlider:function(setting){
		var ua=navigator.userAgent,browser,os,ie67=false;
		var px="px"
		var btnPosi,boxPosi,btnPast,boxPast,whichDrag="";
		var btnMoveNum,btnMoveTo,boxMoveNum,boxMoveTo;
		var timeCheck1,timeCheck2,DragCheck1,DragCheck2,finalTime1,finalTime2;
		var mopSliderName;
		var nextMov=[];
		var scrollMax,scrollNum,caseW,itemNum,sliderNum,checkNum,movNum;
		var mopSliderMotion;
		var boxW;
		var finalCount=0;
		var indication=setting.indi
		var mopSliderW=setting.w;
		var mopSliderH=setting.h;
		var sldW=setting.sldW;
		var btnW=setting.btnW;
		var shuffle=setting.shuffle;
		var mopSliderNo=setting.no;
		var mopSliderType=setting.type;
		
		if(location.host=="localhost"){ var path="http://"+location.host+"/orbel.com/images/app/"; }
		else{ var path="http://"+location.host+"/images/app/"; };
		
		// UI Variables
		var btnLeft=new Image();
		var btnLeftF=new Image();
		var btnRight=new Image();
		var btnRightF=new Image();
		var btnCenter=new Image();
		var btnChange=new Image();
		var btnChangeA=new Image();
		var btnChangeF=new Image();
		btnLeft.src=path+"button-left.png";
		btnLeftF.src=path+"button-left.png";
		btnRight.src=path+"button-right.png";
		btnRightF.src=path+"button-right.png";
		btnCenter.src=path+"button-center.png";
		btnChange.src=path+"slider-right.png";
		btnChangeA.src=path+"slider-right-active.png";
		btnChangeF.src=path+"slider-right-hover.png";
		
		if(setting.shuffle==null){shuffle=0};
	
		if((mopSliderNo==null)||(mopSliderNo=="01")){
			mopSliderName="#mopSlider01";
			mopSliderNo="01";
		}
		else { mopSliderName="#mopSlider"+setting.no; }
		
		var noSharp=mopSliderName.split("#")[1];
		$(mopSliderName).hide();
		
		
		// Shuffle
		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==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;
		var itemW=150;
		var allW=0;
		var num=0;
		
		for (i=1; i<(itemNum+1); i++){
			nextMov.push(itemW);
			num+=1;
			allW+=itemW;
		};
		// Add Margins
		boxW = allW+9;
		
		// HTML
		$(this).wrap('<div id="mopSlider"><div id="'+noSharp+'"><div class="holder"></div></div></div>');
		$(this).parent().after(
		'<div class="sliderCase" style="z-index:60;">'+
			'<div class="slider">'+
				'<div class="sldLeft"></div>'+
				'<div class="sldCenter"></div>'+
				'<div class="sldRight"></div>'+
				'<div class="sliderBtn">'+
					'<div class="sldBtnLeft"></div>'+
					'<div class="sldBtnCenter"><div class="indiImg"></div></div>'+
					'<div class="sldBtnRight"></div>'+
				'</div>'+
			'</div>'+
		'</div>'+
		'<div class="shadowLeft"><div class="shadowLeftImg"></div></div>'+
		'<div class="shadowRight"><div class="shadowRightImg"></div></div>'
		);
		
		// CSS
		var sldH = 50;
		var shadW = 15;
		// Slider Area
		$(mopSliderName+" .sliderCase").css({height:"30px",position:"relative",top:"10px"});
		// Slider Bar
		$(mopSliderName+" .slider").css({height:"30px",position:"relative",top:"0px",left:"0px"});
		$(mopSliderName+" .sldLeft").css({left:"0px",position:"absolute",height:"30px",width:"30px",backgroundImage:"url("+path+"slider-left.png)",backgroundRepeat:"no-repeat"});
		$(mopSliderName+" .sldCenter").css({left:"30px",width:sldW-60+px,position:"absolute",height:"30px",backgroundImage:"url("+path+"slider-center.png)",backgroundRepeat:"repeat-x"});
		$(mopSliderName+" .sldRight").css({right:"0px",position:"absolute",height:"30px",width:"30px",backgroundImage:"url("+path+"slider-right.png)",backgroundRepeat:"no-repeat"});
		// Slider Button
		$(mopSliderName+" .sliderBtn").css({position:"absolute",height:"30px",left:"0px",cursor:"pointer"});
		$(mopSliderName+" .sldBtnLeft").css({left:"0px",position:"absolute",height:"30px",width:"20px",backgroundImage:"url("+btnLeft.src+")",backgroundRepeat:"no-repeat",backgroundPosition:"top"});
		$(mopSliderName+" .sldBtnCenter").css({left:"20px",width:btnW-40+px,position:"absolute",height:"30px",backgroundImage:"url("+btnCenter.src+")",backgroundRepeat:"repeat-x",backgroundPosition:"top"});
		$(mopSliderName+" .sldBtnRight").css({right:"0px",position:"absolute",height:"30px",width:"20px",backgroundImage:"url("+btnRight.src+")",backgroundRepeat:"no-repeat",backgroundPosition:"top"});
		$(mopSliderName+" .indi").css({textAlign:"center"});
		$(mopSliderName+" .indiImg").css({height:"30px",width:"140px",textAlign:"center",backgroundImage:"url("+path+"button-text.png)",backgroundRepeat:"no-repeat",backgroundPosition:"top"});
		// Background
		$(mopSliderName).css({width:mopSliderW+px,height:mopSliderH+sldH,position:"relative",overflow:"hidden",margin:"0 auto 0 auto",backgroundImage:"url("+path+"bg-slider.jpg)",backgroundPosition:"left bottom",backgroundRepeat:"no-repeat"});
		// Inner Shadow
		$(mopSliderName+" .shadowLeft").css({height:mopSliderH,width:shadW,position:"absolute",top:"0px",left:"0px",zindex:"40"});
		$(mopSliderName+" .shadowRight").css({height:mopSliderH,width:shadW,position:"absolute",top:"0px",right:"0px",zindex:"40"});
		$(mopSliderName+" .shadowLeftImg").css({height:mopSliderH,width:shadW,backgroundImage:"url("+path+"shadow-left.png)",backgroundRepeat:"repeat-y"});
		$(mopSliderName+" .shadowRightImg").css({height:mopSliderH,width:shadW,backgroundImage:"url("+path+"shadow-right.png)",backgroundRepeat:"repeat-y"});
		
		scrollMax=boxW-mopSliderW;
		scrollNum=scrollMax*0.01;    // 0 to 100 (Box)
		sliderNum=(sldW-btnW)*0.01;  // 0 to 100 (Slider)
		var holderWidth=(mopSliderW+scrollMax*2);
		$(mopSliderName+" .holder").css({width:holderWidth+"px",height:mopSliderH+px,position:"relative",left:-(scrollMax)+px/*,backgroundImage:"url("+path+"bg-slider.jpg)",backgroundPosition:"center"*/});
		$(mopSliderName+" .holder").children().css({width:boxW+px,left:scrollMax+px});
		$(mopSliderName+" .holder").children().children().css({float:"left",position:"relative"});
		$(mopSliderName+" .sliderCase").css({width:sldW+px});
		var sldCaseW = eval($(mopSliderName+" .sliderCase").css("width").split("px")[0]);
		var sliderLeftMgn=(mopSliderW-sldCaseW)/2;
		$(mopSliderName+" .sliderCase").css({left:sliderLeftMgn+px});
		$(mopSliderName+" .slider").css({width:sldW+px});
		$(mopSliderName+" .sliderBtn").css({width:btnW+px});
		
		// PNG Fix
		$(this).pngFix();
		$("#mopSlider .leftTop, #mopSlider .shadowLeft, #mopSlider .shadowRight, #mopSlider .item").pngFix();
		// $("#mopSlider *").pngFix();
		$(mopSliderName+" .indi").html(indication);
		$(mopSliderName).show();
		
		// Draggable
		$(mopSliderName+" .sliderBtn").draggable({
			axis:"x",
			containment:"parent",
			start:function(){
				whichDrag="btn";
				btnMoveNum=0;
				if(mopSliderNo=="01"){
					DragCheck1=setInterval("mopSliderFunc.DragCheckItv('"+mopSliderNo+"','"+mopSliderName+"','"+whichDrag+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"','"+sldW+"','"+btnW+"')",20);
					timeCheck1=setInterval("mopSliderFunc.timeCheckItv('"+mopSliderName+"','"+whichDrag+"')",50);/*finalMove speed*/
				}
				else if(mopSliderNo=="02"){
					timeCheck2=setInterval("mopSliderFunc.timeCheckItv('"+mopSliderName+"','"+whichDrag+"')",50);/*finalMove speed*/
					DragCheck2=setInterval("mopSliderFunc.DragCheckItv('"+mopSliderNo+"','"+mopSliderName+"','"+whichDrag+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"','"+sldW+"','"+btnW+"')",20);
				}
			},
			drag:function(){},
			stop:function(){
				clearInterval(DragCheck1);
				clearInterval(DragCheck2);
				mopSliderFunc.finalMove(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW);
			}
		});
		
		/*
		$(mopSliderName+" .holder").children().draggable({
			axis:"x",
			containment:"parent",
			start:function(){
				whichDrag="holder";
				boxMoveNum=0;
				if(mopSliderNo=="01"){
					timeCheck1=setInterval("mopSliderFunc.timeCheckItv()",50);
					DragCheck1=setInterval("mopSliderFunc.DragCheckItv('"+mopSliderNo+"','"+mopSliderName+"','"+whichDrag+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"','"+sldW+"','"+btnW+"')",20);
				}
				else if(mopSliderNo=="02"){
					timeCheck2=setInterval("mopSliderFunc.timeCheckItv()",50);
					DragCheck2=setInterval("mopSliderFunc.DragCheckItv('"+mopSliderNo+"','"+mopSliderName+"','"+whichDrag+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"','"+sldW+"','"+btnW+"')",20);
				}
				
			},
			drag:function(){},
			stop:function(){
				clearInterval(DragCheck1);
				clearInterval(DragCheck2);
				mopSliderFunc.finalMove(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW);
			}
		});
		*/
		
		$("#mopSlider .sliderBtn").mousedown(
			function(){
				clearInterval(timeCheck1);
				clearInterval(timeCheck2);
				clearInterval(finalTime1);
				clearInterval(finalTime2);
			}
		);
		$("#mopSlider .holder").children().mousedown(
			function(){
				clearInterval(timeCheck1);
				clearInterval(timeCheck2);
				clearInterval(finalTime1);
				clearInterval(finalTime2);
			}
		);
		
		// Slider Button Hover
		$("#mopSlider .sliderBtn").mouseover(
			function(){
				$(mopSliderName+" .sldBtnLeft").css({backgroundPosition:"left -30px"});
				$(mopSliderName+" .sldBtnRight").css({backgroundPosition:"left -30px"});
				$(mopSliderName+" .sldBtnCenter").css({backgroundPosition:"left -30px"});
				$(mopSliderName+" .indiImg").css({backgroundPosition:"left -30px"});
			}
		);
		$("#mopSlider .sliderBtn").mouseout(
			function(){
				$(mopSliderName+" .sldBtnLeft").css({backgroundPosition:"top"});
				$(mopSliderName+" .sldBtnRight").css({backgroundPosition:"top"});
				$(mopSliderName+" .sldBtnCenter").css({backgroundPosition:"top"});
				$(mopSliderName+" .indiImg").css({backgroundPosition:"top"});
			}
		);
		
		// Reset Button, Add-On Effects
		$("#mopSlider .sliderBtn").mouseup(
			function(){
				btnPosi=eval($(mopSliderName+" .sliderBtn").css("left").split("px")[0]);
				if(btnPosi>4){$(mopSliderName+" .sliderCaseRight").css({backgroundImage:"url("+btnChangeA.src+")"});}
				else{$(mopSliderName+" .sliderCaseRight").css({backgroundImage:"url("+btnChange.src+")"});}
			}
		);
		
		// Reset Button
		$(mopSliderName+" .sliderCaseRight").mouseover(
			function(){
				btnPosi=eval($(mopSliderName+" .sliderBtn").css("left").split("px")[0]);
				if(btnPosi!=0){
					$(mopSliderName+" .sliderCaseRight").css({cursor:"pointer"});
					if(browser!="ie6"){$(mopSliderName+" .sliderCaseRight").css({backgroundImage:"url("+btnChangeF.src+")"});}}
					else{$(mopSliderName+" .sliderCaseRight").css({cursor:""});}
			}
		);
		$(mopSliderName+" .sliderCaseRight").mouseout(
			function(){
				btnPosi=eval($(mopSliderName+" .sliderBtn").css("left").split("px")[0]);
				if(btnPosi!=0){
					if(browser!="ie6"){$(mopSliderName+" .sliderCaseRight").css({backgroundImage:"url("+btnChangeA.src+")"});}
				}
			}
		);
		$(mopSliderName+" .sliderCaseRight").click(
			function(){
				btnPosi=eval($(mopSliderName+" .sliderBtn").css("left").split("px")[0]);
				if(btnPosi!=0){
					if(browser!="ie6"){
						$(mopSliderName+" .sldBtnLeft").css({backgroundImage:"url("+btnLeftF.src+")"});
						$(mopSliderName+" .sldBtnRight").css({backgroundImage:"url("+btnRightF.src+")"});
					}
				}
				$(mopSliderName+" .sliderBtn").animate({left:"0px"},{duration:"1000",easing:"linear",complete:function (){complate()}});
				$(mopSliderName+" .holder").children().animate({left:scrollMax+px},{duration:"1000",easing:"linear",complete:function (){complate()}});
			}
		);
		
		var complate=function(){
			if(browser!="ie6"){
				$(mopSliderName+" .sldBtnLeft").css({backgroundImage:"url("+btnLeft.src+")"});
				$(mopSliderName+" .sldBtnRight").css({backgroundImage:"url("+btnRight.src+")"});
				$(mopSliderName+" .sliderCaseRight").css({backgroundImage:"url("+btnChange.src+")"});
			}
		}
		mopSliderFunc={
			DragCheckItv:function(mopSliderNo,mopSliderName,whichDrag,scrollNum,boxW,mopSliderW,sldW,btnW){
				scrollMax=boxW-mopSliderW;
				sliderNum=(sldW-btnW)*0.01;
				var btnPosiPx=$(mopSliderName+" .sliderBtn").css("left");
				var boxPosiPx=$(mopSliderName+" .holder").children().css("left");
				btnPosi=eval(btnPosiPx.split("px")[0]);
				boxPosi=eval(boxPosiPx.split("px")[0]);
				var sliderNum100=btnPosi/sliderNum;
				var boxPosi0=-(boxPosi-scrollMax);
				var boxNum=-(boxPosi0/scrollNum);
				if(whichDrag=="btn"){
					$(mopSliderName+" .holder").children().css({left:-(sliderNum100*scrollNum)+scrollMax+px});
				}else if(whichDrag=="holder"){
					$(mopSliderName+" .sliderBtn").css({left:-(boxNum*sliderNum)+px});
				};
			},
			timeCheckItv:function(mopSliderName,whichDrag){
				btnPast=btnPosi;
				boxPast=boxPosi;
			},
			finalMove:function(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW){
				finalCount=0;
				if((btnPosi!=undefined)&&(btnPast!=undefined)){
					btnMoveNumStart=btnPosi-btnPast;
					boxMoveNumStart=boxPosi-boxPast;
					if(mopSliderName=="#mopSlider01"){
						finalTime1=setInterval("mopSliderFunc.finalTimeItv('"+mopSliderName+"','"+whichDrag+"','"+btnMoveNumStart+"','"+boxMoveNumStart+"','"+sldW+"','"+btnW+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"')",50);/*last slip move*/
					}
					if(mopSliderName=="#mopSlider02"){
						finalTime2=setInterval("mopSliderFunc.finalTimeItv('"+mopSliderName+"','"+whichDrag+"','"+btnMoveNumStart+"','"+boxMoveNumStart+"','"+sldW+"','"+btnW+"','"+scrollNum+"','"+boxW+"','"+mopSliderW+"')",50);/*last slip move*/
					}
				}
			},
			finalTimeItv:function(mopSliderName,whichDrag,btnMoveNumStart,boxMoveNumStart,sldW,btnW,scrollNum,boxW,mopSliderW){
				finalCount+=1;
				if(finalCount==1){
					btnMoveNum=btnMoveNumStart;
					boxMoveNum=boxMoveNumStart;
					mopSliderNameTemp=mopSliderName;
				}
				btnPosi=eval($(mopSliderNameTemp+" .sliderBtn").css("left").split("px")[0]);
				boxPosi=eval($(mopSliderNameTemp+" .holder").children().css("left").split("px")[0]);
				if(whichDrag=="btn"){
					if((btnMoveNum<0.1)&&(btnMoveNum>-0.1)){
						btnMoveNum=0;
					}else{
						if(browser=="ie6"){
							btnMoveNum=btnMoveNum/1.75;
						}else{
							btnMoveNum=btnMoveNum/1.5;
						}
					}
					btnMoveTo=btnMoveNum+btnPosi;
					if(btnMoveTo>(sldW-btnW)){
						btnMoveTo=sldW-btnW;
					}else if(btnMoveTo<0){
						btnMoveTo=0;
					};
					$(mopSliderNameTemp+" .sliderBtn").css({left:btnMoveTo+px});
					/* Set btnPast */
					btnPast=btnMoveTo;
					
					if(btnMoveNum==0){
						clearInterval(finalTime1);
						clearInterval(finalTime2);
					}
					mopSliderFunc.checkFinal(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW);
				}
				else if(whichDrag=="holder"){
					if((boxMoveNum<1)&&(boxMoveNum>-1)){
						boxMoveNum=0;
					}else{
						if(browser=="ie6"){
							boxMoveNum=boxMoveNum/1.75;
						}else{
							boxMoveNum=boxMoveNum/1.5;
						}
					}
					boxMoveTo=boxMoveNum+boxPosi;
					if(boxMoveTo>scrollMax){
						boxMoveTo=scrollMax;
					}else if(boxMoveTo<0){
						boxMoveTo=0;
					};
					$(mopSliderNameTemp+" .holder").children().css({left:boxMoveTo+px});
					/* Set boxPast */
					boxPast=boxMoveTo;
					if(boxMoveNum==0){
						clearInterval(finalTime1);
						clearInterval(finalTime2);
					}
					mopSliderFunc.checkFinal(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW);
				}
			},
			checkFinal:function(mopSliderName,whichDrag,sldW,btnW,scrollNum,boxW,mopSliderW){
				btnPosi=eval($(mopSliderName+" .sliderBtn").css("left").split("px")[0]);
				boxPosi=eval($(mopSliderName+" .holder").children().css("left").split("px")[0]);
				var sliderNum100=btnPosi/sliderNum;
				var boxPosi0=-(boxPosi-scrollMax);
				var boxNum=-(boxPosi0/scrollNum);
				if(whichDrag=="btn"){
					$(mopSliderName+" .holder").children().css({left:-(sliderNum100*scrollNum)+scrollMax+px});
				}else if(whichDrag=="holder"){
					$(mopSliderName+" .sliderBtn").css({left:-(boxNum*sliderNum)+px});
				};
			}   // END mopSliderFunc
		}
	}
});