function getScale(targetWidth,maxWidth,maxHeight){return({width:targetWidth,height:((targetWidth/maxWidth)*maxHeight).round(),scale:(maxWidth/targetWidth)})
}var SpinsetZoom=new Class({Implements:Options,options:{viewerWidth:null,viewerHeight:null,fixedScale:null,fixedQuality:null,maxWidth:null,maxHeight:null,maxQuality:null,gridFactor:null,startingX:null,startingY:null},initialize:function(src,viewer,options){this.src=src;
this.viewer=$(viewer);
this.setOptions($merge(this.options,options));
this.viewer.addClass("zoom_viewer");
this.outerContainer=new Element("div").addClass("zoom_outer_container").inject(this.viewer);
this.container=new Element("div",{styles:{width:this.options.viewerWidth+"px",height:this.options.viewerHeight+"px"}}).addClass("zoom_container").inject(this.outerContainer);
this.scaleData=getScale(this.options.viewerWidth,this.options.maxWidth,this.options.maxHeight);
this.fixed=new Element("img",{styles:{width:this.options.viewerWidth,height:this.options.viewerHeight},src:this.src+"?scl="+this.scaleData.scale+"&qlt="+this.options.fixedQuality+"&fmt=jpeg&wid="+this.scaleData.width+"&hei="+this.options.viewerHeight+"&op_sharpen=1"}).addClass("zoom_fixed").inject(this.container);
this.highres=new Element("div",{styles:{width:this.options.maxWidth+"px",height:this.options.maxHeight+"px",opacity:0}}).addClass("zoom_highres");
this.lowres=new Element("img",{styles:{width:this.options.maxWidth,height:this.options.maxHeight},src:this.src+"?scl="+this.scaleData.scale+"&qlt="+this.options.fixedQuality+"&fmt=jpeg&wid="+this.scaleData.width+"&hei="+this.scaleData.height+"&op_sharpen=1"}).addClass("zoom_lowres").addClass("zoom_fixed").inject(this.highres);
this.grid=[];
for(var x=0;
x<this.options.gridFactor;
x++){for(var y=0;
y<this.options.gridFactor;
y++){var idx=this.grid.length;
var w=(this.options.maxWidth/this.options.gridFactor).round();
var h=(this.options.maxHeight/this.options.gridFactor).round();
this.grid[idx]=new Element("div",{styles:{width:w+"px",height:h+"px",top:(h*y).round()+"px",left:(w*x).round()+"px"}}).addClass("zoom_grid");
this.grid[idx].inject(this.highres)
}}this.highres.inject(this.container);
this.cover=new Element("div",{styles:{width:this.options.maxWidth+"px",height:this.options.maxHeight+"px"}}).addClass("zoom_cover").inject(this.container);
this.controlContainer=new Element("div").addClass("control_container").inject(this.container);
this.zoomControl=new Element("img",{src:"http://s7d2.scene7.com/is/image/DSWShoes/buttons-zoom",events:{click:function(){this.zoom()
}.bind(this)}}).addClass("control_zoom").inject(this.controlContainer);
if(!this.options.overlayMode){this.overlayControl=new Element("img",{src:"http://s7d2.scene7.com/is/image/DSWShoes/buttons-larger",events:{click:function(){var swatchWidth=0;
var len=this.options.colors.length;
for(var i=0;
i<len;
i+=9){if(this.options.colors[i]){swatchWidth+=66
}}var selectedSpin=$(this.options.spinset).spinset.options.selectedSpin;
if(selectedSpin==null){selectedSpin=$(this.options.spinset).spinset.options.defaultSpin
}var selectedColor=$(this.options.spinset).spinset.options.selectedColor;
if(selectedColor==null){selectedColor=$(this.options.spinset).spinset.options.selectedColor
}var url="/dsw_shoes/catalog/modals/productOverlay.jsp?prodId="+this.options.productId+"&swatchColumnWidth="+swatchWidth+"&selectedSpin="+selectedSpin+"&defaultColor="+$(this.options.spinset).spinset.options.defaultColor+"&focusedColor="+$(this.options.spinset).spinset.options.focusedColor+"&selectedColor="+selectedColor;
ModalWindow.open(url,this.options.productTitle,"modalwindow "+(680+swatchWidth)+" 525 noscroll")
}.bind(this)}}).addClass("control_overlay").inject(this.controlContainer)
}if(this.options.mediaModal!=null){this.mediaControl=new Element("img",{src:"http://s7d2.scene7.com/is/image/DSWShoes/buttons-video",events:{click:function(){var t=this.options.mediaModal.description.trim().replace(/^(.*)_[0-9]+_[0-9]+$/,"$1");
var w=this.options.mediaModal.description.trim().replace(/^.*_([0-9]+)_[0-9]+$/,"$1");
var h=this.options.mediaModal.description.trim().replace(/^.*_[0-9]+_([0-9]+)$/,"$1");
ModalWindow.open(this.options.mediaModal.url,t,"modalwindow "+w+" "+h)
}.bind(this)}}).addClass("control_media").inject(this.controlContainer)
}},zoom:function(){if(this.highres.getStyle("opacity")==0){this.zoomIn()
}else{this.zoomOut()
}},zoomIn:function(){if(this.highres.getStyle("opacity")==0){if(this.zoomControl){this.zoomControl.set("src","http://s7d2.scene7.com/is/image/DSWShoes/buttons-zoomout")
}if(this.options.startingY){var topCenter=this.options.startingY
}else{var topCenter=((this.options.maxHeight-this.options.viewerHeight)/2).round()
}if(this.options.startingX){var leftCenter=this.options.startingX
}else{var leftCenter=((this.options.maxWidth-this.options.viewerWidth)/2).round()
}this.highres.setStyles({top:"-"+topCenter+"px",left:"-"+leftCenter+"px"});
this.cover.setStyles({top:"-"+topCenter+"px",left:"-"+leftCenter+"px"});
new Fx.Tween(this.highres,{duration:"normal"}).start("opacity",1);
if(!this.highres.drag){this.highres.dragAction=function(){var currentTop=this.highres.getStyle("top").toInt()*-1;
var currentBottom=currentTop+this.options.viewerHeight;
var currentLeft=this.highres.getStyle("left").toInt()*-1;
var currentRight=currentLeft+this.options.viewerWidth;
var len=this.grid.length;
for(var i=0;
i<len;
i++){var width=this.grid[i].getStyle("width").toInt();
var height=this.grid[i].getStyle("height").toInt();
var top=this.grid[i].getStyle("top").toInt();
var bottom=top+height;
var left=this.grid[i].getStyle("left").toInt();
var right=left+width;
var tl=(top>currentTop&&top<currentBottom&&left>currentLeft&&left<currentRight);
var tr=(top>currentTop&&top<currentBottom&&right>currentLeft&&right<currentRight);
var bl=(bottom>currentTop&&bottom<currentBottom&&left>currentLeft&&left<currentRight);
var br=(bottom>currentTop&&bottom<currentBottom&&right>currentLeft&&right<currentRight);
if((tl||tr||bl||br)&&(this.grid[i].getStyle("background-image").match(/spacer\.gif/))){var src=this.src+"?rgn="+left+","+top+","+width+","+height+"&scl=1&qlt="+this.options.maxQuality+"&fmt=jpeg";
this.grid[i].setStyle("background-image","url("+src+")")
}}}.bind(this);
this.highres.drag=new Drag(this.highres,{handle:this.cover,modifiers:{x:"left",y:"top"},limit:{x:[(this.options.maxWidth*-1)+this.options.viewerWidth,0],y:[(this.options.maxHeight*-1)+this.options.viewerHeight,0]},onComplete:this.highres.dragAction});
new Fx.Tween(this.highres,{duration:"normal"}).start("opacity",1)
}this.highres.dragAction();
this.cover.setStyle("cursor","move")
}},zoomOut:function(){if(this.zoomControl){this.zoomControl.set("src","http://s7d2.scene7.com/is/image/DSWShoes/buttons-zoom")
}if(this.highres.getStyle("opacity")==1){new Fx.Tween(this.highres,{duration:"fast"}).start("opacity",0);
this.cover.setStyle("cursor","default")
}},show:function(){this.zoomOut();
this.cover.setStyle("cursor","default");
this.highres.setStyle("opacity",0);
this.outerContainer.setStyle("display","block")
},hide:function(){this.outerContainer.setStyle("display","none");
this.highres.setStyle("opacity",0);
this.zoomOut()
}});
var Spinset=new Class({Implements:Options,options:{zoom:null,tileWidthPrimary:63,tileHeightPrimary:62,tileWidthSecondary:58,tileHeightSecondary:62,tileLimit:7,overlayMode:false,mediaModal:null,defaultSpin:0,focusedSpin:null,selectedSpin:null,defaultColor:0,focusedColor:null,selectedColor:null},initialize:function(src,zoom,menu,count,options){this.src=src;
this.zoomElement=$(zoom);
this.menuElement=$(menu);
this.count=count;
this.setOptions($merge(this.options,options));
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){this.options.spindexes[i].zoom=new SpinsetZoom(this.options.spindexes[i].src,this.zoomElement,$merge(this.options.zoom,{productId:this.options.productId,productTitle:this.options.productTitle,overlayMode:this.options.overlayMode,colors:this.options.colors,mediaModal:this.options.mediaModal,spinset:this.options.spindexes[i].spinset}));
var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){this.options.spindexes[i].alternates[j].zoom=new SpinsetZoom(this.options.spindexes[i].alternates[j].src,this.zoomElement,$merge(this.options.zoom,{productId:this.options.productId,productTitle:this.options.productTitle,overlayMode:this.options.overlayMode,colors:this.options.colors,mediaModal:this.options.mediaModal,spinset:this.options.spindexes[i].spinset}))
}}this.createSpinsetMenu();
this.createColorMenu()
},createSpinsetMenu:function(){var selectedSpinStart=this.options.selectedSpin;
if(!this.menuContainer){this.menuContainer=new Element("div").addClass("tile_container").inject(this.menuElement);
this.primary=new Element("div").addClass("tile_primary").inject(this.menuContainer);
this.secondary=new Element("div").addClass("tile_secondary").inject(this.menuContainer);
this.IE6spacer=new Element("div").setStyles({clear:"both",width:"0px",height:"0px","line-height":"0px","font-size":"0px"}).inject(this.menuContainer);
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){this.options.spindexes[i].focus=function(){$(this.spinset).spinset.focusSpin(this.index)
}.bind(this.options.spindexes[i]);
this.options.spindexes[i].unfocus=function(){$(this.spinset).spinset.unfocusSpin()
}.bind(this.options.spindexes[i]);
this.options.spindexes[i].click=function(){if($(this.spinset).spinset.options.selectedSpin==this.index){$(this.spinset).spinset.unselectSpin(this.index)
}else{$(this.spinset).spinset.selectSpin(this.index)
}}.bind(this.options.spindexes[i]);
if(i==this.options.defaultSpin){this.primaryScale=getScale(this.options.tileWidthPrimary,this.options.zoom.maxWidth,this.options.zoom.maxHeight);
if(this.options.spindexes[i].alternates.length>0){var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){this.options.spindexes[i].alternates[j].tileSrc=this.options.spindexes[i].alternates[j].src+"?scl="+this.primaryScale.scale+"&qlt="+this.options.zoom.fixedQuality+"&fmt=jpeg&wid="+this.primaryScale.width+"&hei="+this.options.tileHeightSecondary+"&op_sharpen=1"
}}this.options.spindexes[i].tile=new Element("img",{styles:{width:this.options.tileWidthPrimary+"px",height:this.options.tileHeightPrimary+"px"},src:this.options.spindexes[i].src+"?scl="+this.primaryScale.scale+"&qlt="+this.options.zoom.fixedQuality+"&fmt=jpeg&wid="+this.primaryScale.width+"&hei="+this.options.tileHeightSecondary+"&op_sharpen=1",events:{mouseenter:this.options.spindexes[i].focus,mouseleave:this.options.spindexes[i].unfocus,click:this.options.spindexes[i].click}}).inject(this.primary)
}else{var secondaryScale=getScale(this.options.tileWidthSecondary,this.options.zoom.maxWidth,this.options.zoom.maxHeight);
this.options.spindexes[i].tile=new Element("img",{styles:{width:this.options.tileWidthSecondary+"px",height:this.options.tileHeightSecondary+"px"},src:this.options.spindexes[i].src+"?scl="+secondaryScale.scale+"&qlt="+this.options.zoom.fixedQuality+"&fmt=jpeg&wid="+secondaryScale.width+"&hei="+this.options.tileHeightSecondary+"&op_sharpen=1",events:{mouseenter:this.options.spindexes[i].focus,mouseleave:this.options.spindexes[i].unfocus,click:this.options.spindexes[i].click}}).inject(this.secondary);
if(i+1<len){new Element("img",{src:"/dsw_shoes/images/spacer.gif"}).addClass("tile_spacer").inject(this.secondary)
}}}}if(this.options.overlayMode){if(this.options.selectedColor!=null){this.selectColor(this.options.selectedColor)
}if(selectedSpinStart!=null){this.selectSpin(selectedSpinStart)
}}else{if(this.options.selectedColor!=null){this.selectColor(this.options.selectedColor)
}else{if(this.options.focusedColor!=null){this.focusColor(this.options.focusedColor)
}else{if(this.options.selectedSpin!=null){this.selectSpin(this.options.selectedSpin)
}else{if(this.options.focusedSpin!=null){this.focusSpin(this.options.focusedSpin)
}else{this.focusSpin(this.options.defaultSpin)
}}}}}},createColorMenu:function(){if(this.options.overlayMode&&$(this.options.swatchContainer)){var max=9;
var count=0;
var containers=[new Element("div",{styles:{"margin-left":"4px",width:"62px"}})];
this.options.colors.each(function(color){var swatch=new Element("img",{src:this.src.replace(/^(.*)_[0-9]+_ss_.*$/,"$1_"+color.code+"_ss_sw?$swatches$")});
swatch.addClass("overlay_swatch");
if(color.code==this.options.selectedColor){swatch.addClass("swatchActive")
}swatch.addEvent("mouseenter",function(){swatch.addClass("swatchActiveTemporary");
var code=swatch.get("src").replace(/^.*_([0-9]+)_ss_sw.*$/,"$1");
this.focusColor(code)
}.bind(this));
swatch.addEvent("mouseleave",function(){swatch.removeClass("swatchActiveTemporary");
this.unfocusColor()
}.bind(this));
swatch.addEvent("click",function(img){$(this.options.swatchContainer).getElements("img").removeClass("swatchActive");
swatch.addClass("swatchActive");
this.selectColor(color.code)
}.bind(this));
if(count>=max){count=0;
containers[containers.length]=new Element("div",{styles:{width:"62px"}})
}swatch.inject(containers[containers.length-1]);
count++
}.bind(this));
var containerlen=containers.length;
for(var i=0;
i<containerlen;
i++){containers[i].inject($(this.options.swatchContainer))
}}},selectColor:function(color_code){this.options.focusedColor=null;
this.options.selectedColor=color_code;
this.selectSpin(this.options.defaultSpin)
},unselectColor:function(){this.options.selectedColor=null;
this.selectSpin(this.options.defaultSpin)
},focusColor:function(color_code){this.options.focusedColor=color_code;
this.focusSpin(this.options.defaultSpin)
},unfocusColor:function(color_code){this.options.focusedColor=(this.options.selectedColor=="null"||this.options.selectedColor==""||this.options.selectedColor==null)?this.options.defaultColor:this.options.selectedColor;
if(this.options.selectedSpin!=null&&this.options.selectedSpin!=this.options.defaultSpin){var colorUsed=null;
if(this.options.focusedColor!=null){colorUsed=this.options.focusedColor
}else{if(this.options.selectedColor!=null){colorUsed=this.options.selectedColor
}else{colorUsed=this.options.defaultColor
}}var altlen=this.options.spindexes[this.options.defaultSpin].alternates.length;
for(var j=0;
j<altlen;
j++){if(colorUsed==this.options.spindexes[this.options.defaultSpin].alternates[j].color){if(this.options.spindexes[this.options.defaultSpin].tile.get("src")!=this.options.spindexes[this.options.defaultSpin].alternates[j].tileSrc){this.options.spindexes[this.options.defaultSpin].tile.set("src",this.options.spindexes[this.options.defaultSpin].alternates[j].tileSrc)
}}}this.focusSpin(this.options.selectedSpin)
}else{this.focusSpin(this.options.defaultSpin)
}},selectSpin:function(spindex){this.unselectSpin(false);
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){if(i==spindex){if(i==0){var foundColor=false;
if(this.options.selectedColor==null&&this.options.defaultSpin==spindex){this.options.selectedColor=this.options.defaultColor
}if(this.options.selectedColor!=null){var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){if(this.options.selectedColor==this.options.spindexes[i].alternates[j].color){foundColor=true;
if(this.options.spindexes[i].tile.get("src")!=this.options.spindexes[i].alternates[j].tileSrc){this.options.spindexes[i].tile.set("src",this.options.spindexes[i].alternates[j].tileSrc)
}this.options.spindexes[i].alternates[j].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetSelected")
}}}if(!foundColor){this.options.spindexes[i].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetSelected")
}}else{this.options.spindexes[i].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetSelected")
}}}this.options.selectedSpin=spindex
},unselectSpin:function(){var auto=(arguments.length>0)?arguments[0]:true;
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){if(i==this.options.defaultSpin){var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){this.options.spindexes[i].alternates[j].zoom.hide()
}}this.options.spindexes[i].tile.removeClass("spinsetSelected");
this.options.spindexes[i].zoom.hide()
}this.options.selectedSpin=null;
if(auto){this.selectSpin(this.options.defaultSpin)
}},focusSpin:function(spindex){this.unfocusSpin(false);
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){if(i==spindex){if(i==this.options.defaultSpin){var foundColor=false;
var colorUsed=null;
if(this.options.focusedColor!=null){colorUsed=this.options.focusedColor
}else{if(this.options.selectedColor!=null){colorUsed=this.options.selectedColor
}else{colorUsed=this.options.defaultColor
}}if(colorUsed!=null){var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){if(colorUsed==this.options.spindexes[i].alternates[j].color){foundColor=true;
if(this.options.spindexes[i].tile.get("src")!=this.options.spindexes[i].alternates[j].tileSrc){this.options.spindexes[i].tile.set("src",this.options.spindexes[i].alternates[j].tileSrc)
}this.options.spindexes[i].alternates[j].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetFocused")
}}}if(!foundColor){this.options.spindexes[i].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetFocused")
}}else{this.options.spindexes[i].zoom.show();
this.options.spindexes[i].tile.addClass("spinsetFocused")
}}}this.options.focusedSpin=spindex
},unfocusSpin:function(){var auto=(arguments.length>0)?arguments[0]:true;
var len=this.options.spindexes.length;
for(var i=0;
i<len;
i++){if(i==this.options.defaultSpin){var altlen=this.options.spindexes[i].alternates.length;
for(var j=0;
j<altlen;
j++){this.options.spindexes[i].alternates[j].zoom.hide()
}}this.options.spindexes[i].tile.removeClass("spinsetFocused");
this.options.spindexes[i].zoom.hide()
}this.options.focusedSpin=null;
if(auto){if(this.options.selectedSpin!=null){this.selectSpin(this.options.selectedSpin)
}else{this.focusSpin(this.options.defaultSpin)
}}}});
