
if(typeof(Widgets)=="undefined"){Widgets={};}



Widgets.ProductDisplay={
    productSlider:null, sliderVal:0, animationId:false, viewportWidth:946,
    contentWidth:946, categories:[
    {id:'idisplay-cat1',offset:0},{id:'idisplay-cat2',offset:0.32}],
	arrowScrollAmount:0.24,
iPhoneScrollAmount:0.22,
iPhoneContainerWidth:834,
isSliding:false,
lastX:0.32,
isMouseDown:false,
dif:0,
overlap:0,
offsetImageWidth:127,
sliderOffset:291,
offsetContentWidth:-946,
clicked:false,
startIndex:0,

isIpScroll:false,
hasIpDragged:false,
init:function(setupArgs){
if(typeof(setupArgs.categories)!='undefined')this.categories=setupArgs.categories;
if(typeof(setupArgs.imageOverlap)!='undefined')this.overlap=setupArgs.imageOverlap;
if(typeof(setupArgs.sliderCentering)!='undefined')this.sliderOffset=setupArgs.sliderCentering;
if(typeof(setupArgs.startupCategory)!='undefined')this.startIndex=setupArgs.startupCategory;
if(typeof(setupArgs.arrowScrollAmount)!='undefined')this.arrowScrollAmount=setupArgs.arrowScrollAmount;
if(typeof(setupArgs.iPhoneCategories)!='undefined'){this.iPhoneCategories=setupArgs.iPhoneCategories;}
if(typeof(setupArgs.iPhoneScrollAmount)!='undefined')this.iPhoneScrollAmount=setupArgs.iPhoneScrollAmount;
if(typeof(setupArgs.iPhoneContainerWidth)!='undefined')this.iPhoneContainerWidth=setupArgs.iPhoneContainerWidth;

$('displayslidertrack').style.visibility="visible";
$('idisp-idisplaycontainer').style.overflow="hidden";

this.viewportWidth=$('idisp-idisplaycontainer').getWidth();
this.offsetImageWidth=$$('#displayslider .idisplay-image')[0].getWidth()-this.overlap;
this.contentWidth=this.offsetImageWidth*$$('#displayslider .idisplay-image').length;
this.offsetContentWidth=-1*(this.contentWidth-this.viewportWidth);

this.productSlider=new Control.Slider('displaysliderhandle','displayslidertrack',{
axis:'horizontal'
});



Widgets.ProductDisplay.animateSlide(this.categories[this.startIndex].offset);


this.productSlider.options.onChange=function(value){
$('displaysliderhandleimage').style.left=$('displaysliderhandle').style.left;

if(Widgets.ProductDisplay.isThrow&&!Widgets.ProductDisplay.isSliding){
Widgets.ProductDisplay.isSliding=true;
Widgets.ProductDisplay.isThrow=false;

var mod=value+Widgets.ProductDisplay.throwMod;
if(mod<0)mod=0;
if(mod>1)mod=1;
Widgets.ProductDisplay.animateSlide(mod);
}
else if(!Widgets.ProductDisplay.isSliding&&value){
Widgets.ProductDisplay.isSliding=true;
Widgets.ProductDisplay.animateSlide(value);
}
};

this.productSlider.options.onSlide=function(value){
$('displaysliderhandleimage').style.left=$('displaysliderhandle').style.left;
if(value&&!Widgets.ProductDisplay.isSliding){
Widgets.ProductDisplay.isSliding=true;
Widgets.ProductDisplay.isThrow=false;
if(Widgets.ProductDisplay.isMouseDown){
Widgets.ProductDisplay.dif=value-Widgets.ProductDisplay.lastX;
Widgets.ProductDisplay.lastX=value;


if(Widgets.ProductDisplay.dif>0.05){
Widgets.ProductDisplay.isThrow=true;
Widgets.ProductDisplay.throwMod=0.2;
}
else if(Widgets.ProductDisplay.dif<-0.04){
Widgets.ProductDisplay.isThrow=true;
Widgets.ProductDisplay.throwMod=-0.2;
}
}

var w=Widgets.ProductDisplay.offsetContentWidth;
$('displayslider').style.left=w*value+"px";

this.sliderVal=value;
Widgets.ProductDisplay.lastX=value;
Widgets.ProductDisplay.colorCats();
Widgets.ProductDisplay.isSliding=false;
}

Element.setStyle($('idisp-idisplaycontainer'),{overflow:"hidden"});
};

Event.observe('displayslidertrack','mousedown',function(e){
var o=e.offsetX||e.layerX;
if(Event.element(e).id=='displayslidertrack'&&o<100)Widgets.ProductDisplay.animateSlide(0);
});
Event.observe('idisplay-leftarrow','mousedown',function(){
Widgets.ProductDisplay.left();
});
Event.observe('idisplay-rightarrow','mousedown',function(){
Widgets.ProductDisplay.right();
});

Event.observe('displaysliderhandle','mousedown',function(){
Widgets.ProductDisplay.isMouseDown=true;
$('displaysliderhandle').style.zIndex="5";
});

Event.observe('displaysliderhandle','mouseup',function(){
Widgets.ProductDisplay.isMouseDown=false;
});

Widgets.ProductDisplay.categories.each(function(c){
Event.observe($(c.id),'mouseup',function(e){
Widgets.ProductDisplay.animateSlide(c.offset);
});
});
},

animateSlide:function(toX){

if(toX>1)toX=1;
if(toX<0)toX=0;
Widgets.ProductDisplay.sliderVal=toX;
window.clearInterval(Widgets.ProductDisplay.animationId);
var w=Widgets.ProductDisplay.offsetContentWidth;
var stopPoint=w*toX;

var sliderStopPoint=(Math.round(Widgets.ProductDisplay.viewportWidth-Widgets.ProductDisplay.sliderOffset)*toX);

Widgets.ProductDisplay.isSliding=true;
Widgets.ProductDisplay.animationId=window.setInterval(function(){
var sliderPos=parseInt($('displayslider').getStyle('left'))||0;
var handlePos=parseInt($('displaysliderhandle').getStyle('left'))||0;
var x=Widgets.ProductDisplay.calculateDecel(sliderPos,stopPoint);
var sx=Widgets.ProductDisplay.calculateDecel(handlePos,sliderStopPoint);
$('displayslider').style.left=x+"px";
$('displaysliderhandle').style.left=sx+"px";
$('displaysliderhandleimage').style.left=sx+"px";
Widgets.ProductDisplay.colorCats();

if(x==stopPoint){
window.clearInterval(Widgets.ProductDisplay.animationId);
Widgets.ProductDisplay.isSliding=false;
}
},30);

},

colorCats:function(){
var sliderX=parseInt($('displaysliderhandle').getStyle('left'))+(($('displaysliderhandle').getWidth()-20)/2);
Widgets.ProductDisplay.categories.each(function(c){
var left=parseInt($(c.id).getStyle('left'))
var clr=Math.ceil((Math.min(sliderX,left)/Math.max(sliderX,left))*10);
$(c.id).className='idisplay-catclass'+clr;
});
},

left:function(){
Widgets.ProductDisplay.animateSlide(Widgets.ProductDisplay.sliderVal-Widgets.ProductDisplay.arrowScrollAmount);
},

right:function(){
Widgets.ProductDisplay.animateSlide(Widgets.ProductDisplay.sliderVal+Widgets.ProductDisplay.arrowScrollAmount);
},

calculateDecel:function(from,to){
var n=from-Math.floor((from-to)*.4);
if(Math.abs(from-to)<4)return to;
else return n;
}
};

