
YAHOO.namespace("Smb.Asteroids.Extensions.SlideShow.Utils");(function(){var testElement=function(node,method){return node&&node.nodeType==1&&(!method||method(node));};YAHOO.Smb.Asteroids.Extensions.SlideShow.Utils={insertAfter:function(newnode,node){if(newnode&&node&&node.parentNode){if(node.nextSibling){node.parentNode.insertBefore(newnode,node.nextSibling);}else{node.parentNode.appendChild(newnode);}}},getAncestorBy:function(node,method){while(node=node.parentNode){if(testElement(node,method)){return node;}}
return null;},getAncestorByClassName:function(node,className){node=$(node);if(!node){return null;}
var method=function(el){return $D.hasClass(el,className);};return YAHOO.Smb.Asteroids.Extensions.SlideShow.Utils.getAncestorBy(node,method);}};})();
YAHOO.namespace("Smb.Asteroids.Extensions.SlideShow");(function(){var SSU=YAHOO.Smb.Asteroids.Extensions.SlideShow.Utils;var SS=YAHOO.Smb.Asteroids.Extensions.SlideShow;var imageData=YAHOO.Smb.Asteroids.ImageData;var ua=navigator.userAgent.toLowerCase();var isIE=!ua.isOpera&&ua.indexOf('msie')>-1;var Constants={'CLASS_DISPLAYNONE':'displayNone','CLASS_DIMMED':'dimmed','CLASS_ALLOWZOOMIN':'yssImg_allowZoomIn','CLASS_YSSIMGSINGLE':'yssImg_single','CLASS_RTEIMG':'yssImg_RTE','CLASS_MODFIELD':'modfield','CLASS_MODBDCONTAINER':'module_bd_container','CLASS_YSSDKIMG':'yssDKImg','CLASS_ZOOMINCTRL':'imgZoomInCtrl'};SS.init=function(){SS.ZoomIn.init();};SS.ZoomIn={interactors:new Array(),viewer:null,addInteractor:function(interactor){interactor.onZoomIn.subscribe(this.onZoomIn,this,true);this.interactors.push(interactor);},init:function(){if(this.interactors.length===0){this.addInteractor(SS.HoverInteractor);this.addInteractor(SS.ThumbClickInteractor);}
for(var i=0,len=this.interactors.length;i<len;i++){this.interactors[i].setup();}
if(this.viewer===null){this.viewer=new SS.PopupViewer();}},onZoomIn:function(type,args,me){var zimg=args[1];var imgSrc=null;if($D.hasClass(zimg,Constants.CLASS_MODFIELD)&&(!$D.hasClass(zimg,Constants.CLASS_YSSIMGSINGLE))){var mbdcontainer=SSU.getAncestorByClassName(zimg,Constants.CLASS_MODBDCONTAINER);if(mbdcontainer){imgSrc=new SS.ImageSourceList();imgSrc.harvestImages(mbdcontainer,zimg);}}
if(imgSrc===null){var caption='';var guid=zimg.getAttribute('rel');var width=-1,height=-1;if(guid&&imageData&&imageData[guid]){caption=imageData[guid].caption;width=imageData[guid].astWidth;height=imageData[guid].astHeight;}
if(width===-1||height===-1){var matches=(/yssAstImg_(\S+)_(\d+)X(\d+)/).exec(zimg.className);if(matches){width=matches[2];height=matches[3];}}
imgSrc=new SS.ImageSourceSingle(zimg.getAttribute('src'),zimg.getAttribute('alt'),caption,width,height);}
var showCaption=$D.hasClass(zimg,Constants.CLASS_YSSDKIMG)?'no':'yes';this.viewer.setData(imgSrc,{'showCaption':showCaption});this.viewer.launch();}};SS.HoverInteractor={ctrlObj:null,onZoomIn:new YAHOO.util.CustomEvent('onZoomIn',this),curZImg:null,init:function(){if(this.ctrlObj===null){this.ctrlObj=document.createElement('div');$D.addClass(this.ctrlObj,Constants.CLASS_ZOOMINCTRL);$E.on(this.ctrlObj,'click',this.fireOnZoomIn,this,true);SSU.insertAfter(this.ctrlObj,$('body'));}},fireOnZoomIn:function(e){$E.stopEvent(e);if(this.curZImg!==null){this.onZoomIn.fire(e,this.curZImg);}},getZoomInImages:function(el){var elem=$(el)||$('body');return $D.getElementsByClassName(Constants.CLASS_ALLOWZOOMIN,'img',elem);},setup:function(el){this.init();var zimgs=this.getZoomInImages(el);var that=this;for(var i=0,len=zimgs.length;i<len;i++){$E.on(zimgs[i],'mouseover',function(e){that.showControl(e);});$E.on(zimgs[i],'mouseout',function(e){that.hideControl(e);});}
$E.on(this.ctrlObj,'mouseout',function(e){that.hideControl(e);});},teardown:function(el){var zimgs=this.getZoomInImages(el);for(var i=0,len=zimgs.length;i<len;i++){$E.purgeElement(zimgs[i]);}},showControl:function(e){var zimg=$E.getTarget(e);var elXY=$D.getXY(zimg);var offsetWidth=zimg.offsetWidth;var offsetHeight=zimg.offsetHeight;var rightPadding=parseInt($D.getStyle(zimg,'padding-right'),10);var bottomPadding=parseInt($D.getStyle(zimg,'padding-bottom'),10);var rightBorder=parseInt($D.getStyle(zimg,'border-right-width'),10);var bottomBorder=parseInt($D.getStyle(zimg,'border-bottom-width'),10);$D.setStyle(this.ctrlObj,'display','block');var ctrlWidth=this.ctrlObj.offsetWidth;var ctrlHeight=this.ctrlObj.offsetHeight;var x=elXY[0]+offsetWidth-rightPadding-rightBorder-ctrlWidth;var y=elXY[1]+offsetHeight-bottomPadding-bottomBorder-ctrlHeight;$D.setXY(this.ctrlObj,[x,y]);this.curZImg=zimg;},hideControl:function(e){var relTarget=$E.getRelatedTarget(e);if(relTarget===this.ctrlObj||relTarget===this.curZImg){return;}
$D.setStyle(this.ctrlObj,'display','none');this.curZImg=null;}};SS.ThumbClickInteractor={onZoomIn:new YAHOO.util.CustomEvent('onZoomIn',this),_getZoomInImages:function(el){var elem=$(el)||$('body');return $D.getElementsByClassName(Constants.CLASS_ALLOWZOOMIN,'img',elem);},setup:function(el){var zimgs=this._getZoomInImages(el);var that=this;for(var i=0,len=zimgs.length;i<len;i++){if($D.hasClass(zimgs[i],Constants.CLASS_YSSDKIMG)){continue;}
$E.on(zimgs[i],'click',function(e){$E.stopEvent(e);that.onZoomIn.fire(e,$E.getTarget(e));});}}};SS.ImageSource=function(){};SS.ImageSource.prototype={get:function(index){},getStartIndex:function(){return 0;},count:function(){},_constructImgObj:function(url,alttext,caption,width,height){width=width||-1;height=height||-1;return{'url':url,'alttext':alttext,'caption':caption,'width':width,'height':height};},_getZoomInURL:function(url){var matches=/(.*)(?:_sq_thumb_s)\.(\w+)$/i.exec(url);if(matches){return matches[1]+'_large.'+matches[2];}
matches=/(.*)(?:_sq_thumb_m)\.(\w+)$/i.exec(url);if(matches){return matches[1]+'_large.'+matches[2];}
matches=/(.*)(?:_thumb)\.(\w+)$/i.exec(url);if(matches){return matches[1]+'_large.'+matches[2];}
matches=/(.*)(?:_std)\.(\w+)$/i.exec(url);if(matches){return matches[1]+'_large.'+matches[2];}
return url;}};SS.ImageSourceSingle=function(url,alttext,caption,width,height){$LOG('creating ImageSourceSingle');this.setImage(url,alttext,caption,width,height);};YAHOO.extend(SS.ImageSourceSingle,SS.ImageSource);SS.ImageSourceSingle.prototype.setImage=function(url,alttext,caption,width,height){var zurl=this._getZoomInURL(url);this._imgObj=this._constructImgObj(zurl,alttext,caption,width,height);};SS.ImageSourceSingle.prototype.get=function(index){return this._imgObj;};SS.ImageSourceSingle.prototype.count=function(){return 1;};SS.ImageSourceList=function(){$LOG('creating ImageSourceList');this._list=new Array();};YAHOO.extend(SS.ImageSourceList,SS.ImageSource);SS.ImageSourceList.prototype.harvestImages=function(mbdcontainer,curImgEl){var els=$D.getElementsByClassName(Constants.CLASS_MODFIELD,'img',mbdcontainer);var guid,el,url,alt,caption,width,height;this._start=-1;for(var i=0,len=els.length;i<len;i++){el=els[i];if(!$D.hasClass(el,Constants.CLASS_ALLOWZOOMIN)){continue;}
url=el.getAttribute('src');url=this._getZoomInURL(url);alt=el.getAttribute('alt');caption='';guid=el.getAttribute('rel');width=-1;height=-1;if(guid&&imageData&&imageData[guid]){caption=imageData[guid].caption;width=imageData[guid].astWidth;height=imageData[guid].astHeight;}
this.addImage(url,alt,caption,width,height);if(el===curImgEl){this._start=this._list.length-1;}}
$LOG(this._list);};SS.ImageSourceList.prototype.addImage=function(url,alttext,caption,width,height){this._list.push(this._constructImgObj(url,alttext,caption,width,height));};SS.ImageSourceList.prototype.get=function(index){return this._list[index];};SS.ImageSourceList.prototype.getStartIndex=function(){return this._start;};SS.ImageSourceList.prototype.count=function(){return this._list.length;};SS.ImgSwapper=function(){};SS.ImgSwapper.prototype={defaultTransition:'fade',viewer:null,nextImgObj:null,_currentImgObj:null,_inSwap:false,init:function(popViewerInst){$LOG('initialized swappper!\npopViewerInts: '+popViewerInst);this.viewer=popViewerInst;},swap:function(imgObj,transPointer){this.setSwapStatus(1);this.nextImgObj=imgObj;transPointer=(transPointer&&transPointer.constructor==Function)?transPointer:((SS.ImgSwapper._transitions[transPointer])?SS.ImgSwapper._transitions[transPointer]:SS.ImgSwapper._transitions[this.defaultTransition]);if(transPointer&&transPointer.constructor==Function)transPointer.apply(this,[imgObj]);},setImgAttributes:function(domObj,currentImg){var v=this.viewer;var v_wh=v._viewPaneDimensions;var imgObj=(currentImg&&this._currentImgObj)?this._currentImgObj:this.nextImgObj;if(!domObj)domObj=this.viewer._imgStage;$LOG('setting img to\n\tsrc: '+imgObj.url+'\n\timgObj: '+domObj);domObj.setAttribute('alt',imgObj.alttext);domObj.removeAttribute('width');domObj.removeAttribute('height');var availH=(v_wh.height-v._imgCaption.offsetHeight-$('closeButtonCell').offsetHeight)*.95;var availW=v_wh.width*.95;var imgH;$LOG('img resizing env:\n\twidth available: '+availW+'\n\theight available: '+availH+'\n\timg width: '+imgObj.width+'\n\timg height: '+imgObj.height);if(imgObj.width<=0||imgObj.height<=0){domObj.setAttribute('width',availW*.5);domObj.setAttribute('height',availH*.5);imgH=availH*.5;}else{if(imgObj.width/imgObj.height>availW/availH){domObj.setAttribute('width',Math.min(availW,imgObj.width));imgH=Math.max(1,Math.floor((imgObj.height/imgObj.width)*Math.min(availW,imgObj.width)));domObj.setAttribute('height',imgH);$LOG('setting '+imgObj+'\'s width to '+Math.min(availW,imgObj.width)+'px');}else{domObj.setAttribute('height',Math.min(availH,imgObj.height));imgH=Math.min(availH,imgObj.height);$LOG('setting height to '+Math.min(availH,imgObj.height)+'px');}}
var topRow=$('closeButtonCell');var topRowH=topRow.offsetHeight+parseInt($D.getStyle(topRow,'margin-top'),10)+parseInt($D.getStyle(topRow,'margin-bottom'),10);var bottomRow=$('captionCell');var bottomRowH=bottomRow.offsetHeight+parseInt($D.getStyle(bottomRow,'margin-top'),10)+parseInt($D.getStyle(bottomRow,'margin-bottom'),10);var parentH=Math.max(1,v_wh.height-topRowH-bottomRowH);$D.setStyle(domObj,'margin-top',-imgH/2+'px');$D.setStyle('imageCell','height',parentH+'px');domObj.setAttribute('src',imgObj.url);},setSwapStatus:function(swapping){this._inSwap=Boolean(swapping);if(this._inSwap){$D.setStyle('slideshow-prev','opacity',.3);$D.setStyle('slideshow-next','opacity',.3);}else{$D.setStyle('slideshow-prev','opacity',1);$D.setStyle('slideshow-next','opacity',1);}},getSwapStatus:function(){return Boolean(this._inSwap);}};SS.ImgSwapper._transitions={'fade':function(tgtImgObj){var that=this;var img=this.viewer._imgStage;var txt=this.viewer._imgCaption;var duration={inT:.7,outT:.4};var nextImgIn=function(){if(that.viewer.isClosing()||that.viewer.isClosed()){return;}
that._currentImgObj=tgtImgObj;$D.setStyle(img,'opacity',0);$D.setStyle(img,'display','inline');that.setImgAttributes(img,tgtImgObj);var anim=new $A(img,{opacity:{to:1}});anim.duration=duration.inT;anim.onComplete.subscribe(function(){$LOG('animated '+tgtImgObj);that.setSwapStatus(0);that.viewer._queueNextImage();});anim.animate();};var nextTxtIn=function(){if(that.viewer.isClosing()||that.viewer.isClosed()){return;}
$D.setStyle(txt,'opacity',0);that.viewer._setCaptionText(tgtImgObj);var anim=new $A(txt,{opacity:{to:1}});anim.duration=duration.inT;anim.animate();};if(this._currentImgObj){var outParamsObj={opacity:{from:1,to:0}};var previousImgOut=new $A(img,outParamsObj);previousImgOut.duration=duration.outT;previousImgOut.onComplete.subscribe(function(){nextImgIn();});previousImgOut.animate();var previousTxtOut=new $A(txt,outParamsObj);previousTxtOut.duration=duration.outT;previousTxtOut.onComplete.subscribe(function(){nextTxtIn();});previousTxtOut.animate();}else{nextTxtIn();nextImgIn();}},'none':function(){this.setImgAttributes();}};SS.ImgSwapper.addTransition=function(label,routine){if(label.constructor==String&&routine.constructor==Function)SS.ImgSwapper._transitions[label]=routine;};SS.PopupViewer=function(){this.createDom();this.slideShowSpeed=5000;this.defSwapper(SS.ImgSwapper);};SS.PopupViewer.prototype={_preloader:new Image(),defSwapper:function(swapper){this.swapper=new swapper();this.swapper.init(this);},setData:function(imgObjSrc,cfgObj){this.reset();this._imgObjSrc=imgObjSrc;this._imgCount=this._imgObjSrc.count();this._cfgObj={'showIndex':'auto','showCaption':'yes','showSlideShow':'auto','startIndex':imgObjSrc.getStartIndex()};if(cfgObj){for(var prop in cfgObj){this._cfgObj[prop]=cfgObj[prop];}}
this._index=this._cfgObj.startIndex;},createDom:function(){this._createGlassPane();this._createViewPane();this._createSlideShowPane();},_createGlassPane:function(){if(this._glassPane){return;}
this._glassPane=document.createElement('iframe');this._glassPane.setAttribute('id','imgviewer-overlay');this._hideGlassPane();SSU.insertAfter(this._glassPane,$('body'));},_createViewPane:function(){if(this._viewPane){return;}
this._viewPane=document.createElement('div');this._viewPane.setAttribute('id','imgviewer-stage');SSU.insertAfter(this._viewPane,this._glassPane);var closeBtnText='close';this._viewPane.innerHTML='<div id="closeButtonCell"><p id="imgviewer-index"></p><a id="imgviewer-closeButton" href="#Close"/><span>'+closeBtnText+'</span></a></div><div id="imageCell"><img id="imgviewer-stageImage"/></div><div id="captionCell"><p id="imgviewer-caption"></p></div>';this._imgIndex=$('imgviewer-index');this._imgStage=$('imgviewer-stageImage');this._imgCaption=$('imgviewer-caption');$E.on('imgviewer-closeButton','click',this.close,this,true);$E.on('imageCell','mouseover',this._showSlideShowPane,this,true);$E.on('imageCell','mouseout',this._hideSlideShowPane,this,true);},_createSlideShowPane:function(){if(this._slideShowPane){return;}
this._slideShowPane=document.createElement('ul');this._slideShowPane.setAttribute('id','imgviewer-slideshow');var spacer='http://us.i1.yimg.com/us.yimg.com/i/spacer.gif';this._slideShowPane.innerHTML='<li><a href="#Previous" title="Previous" id="slideshow-prev"><img alt="Previous" src="'+spacer+'"/></a></li><li><a href="#Start" title="Start" id="slideshow-startstop"><img alt="Start" class="startSlideShow" src="'+spacer+'"/></a></li><li><a href="#Next" title="Next" id="slideshow-next"><img alt="Next" src="'+spacer+'"/></a></li>';$('imgviewer-stage').appendChild(this._slideShowPane);$D.addClass(this._slideShowPane,'macBug');$E.on('slideshow-prev','click',this.onSlideShowPaneClick,this,true);$E.on('slideshow-startstop','click',this.onSlideShowPaneClick,this,true);$E.on('slideshow-next','click',this.onSlideShowPaneClick,this,true);$E.on('slideshow-prev','click',this._showPrevImage,this,true);$E.on('slideshow-startstop','click',this._startOrStopSlideShow,this,true);$E.on('slideshow-next','click',this._showNextImage,this,true);},launch:function(){this._state='opening';$D.addClass('body','ap');this._showGlassPane();this._showViewPane();this._state='open';},close:function(ev){this._state='closing';this.stopSlideShow();this._hideSlideShowPane();this._hideGlassPane();this._hideViewPane();$D.removeClass('body','ap');$E.stopEvent(ev);this.reset();this._state='closed';document.body.style.zoom="normal";document.body.style.zoom=1;},isOpening:function(){return this._state==='opening';},isOpen:function(){return this._state==='open';},isClosing:function(){return this._state==='closing';},isClosed:function(){return this._state==='closed';},onSlideShowPaneClick:function(ev){this._cancelQueuedImage();},_showGlassPane:function(){if(this._glassPane){$D.setStyle(this._glassPane,'display','block');}},_hideGlassPane:function(){if(this._glassPane){$D.setStyle(this._glassPane,'display','none');}},_showViewPane:function(){if(this._viewPane){$LOG('this._index='+this._index);var view={height:$D.getViewportHeight(),width:$D.getViewportWidth()};var tableWidthRatio=.9;var tableHeightRatio=.8;var tableMaxWidth=900;var tableMaxHeight=600;var h=Math.min(tableMaxHeight,view.height*tableHeightRatio);var w=Math.min(tableMaxWidth,view.width*tableWidthRatio);var marginLeft=-w/2;var marginTop=-h/2;$D.setStyle(this._viewPane,'height',h+'px');$D.setStyle(this._viewPane,'width',w+'px');$D.setStyle(this._viewPane,'margin-left',marginLeft+'px');$D.setStyle(this._viewPane,'margin-top',marginTop+'px');this._viewPaneDimensions={width:w,height:h};if(this._cfgObj.showCaption==='no'){$D.addClass(this._imgCaption,Constants.CLASS_DISPLAYNONE);}else{$D.removeClass(this._imgCaption,Constants.CLASS_DISPLAYNONE);$D.setStyle(this._imgCaption,'opacity',0);}
$D.addClass(this._viewPane,'stage-on');this._showImage(this._imgObjSrc.get(this._index));}},_hideViewPane:function(){if(this._viewPane){$D.removeClass(this._viewPane,'stage-on');}},_showSlideShowPane:function(e,time){if(this._slideShowPane&&this._shouldShowSlideShow()&&!this._isSlideShowPaneVisible){$D.setStyle(this._slideShowPane,'opacity',0);$D.removeClass(this._slideShowPane,'macBug');this._isSlideShowPaneVisible=1;var animCtrl=new $A(this._slideShowPane);animCtrl.attributes.opacity={to:1};animCtrl.duration=.5;animCtrl.animate();if(time&&time>0){var that=this;window.setTimeout(function(){that._hideSlideShowPane();},time);}}},_hideSlideShowPane:function(e){var pane=this._slideShowPane;if(pane){if(e){var el=$E.getRelatedTarget(e);var imgCell=$('imageCell');if(el&&(el===imgCell||el===pane||$D.isAncestor(imgCell,el)||$D.isAncestor(pane,el))){return;}}
var that=this;var animCtrl=new $A(pane);animCtrl.attributes.opacity={to:0};animCtrl.duration=.3;animCtrl.animate();animCtrl.onComplete.subscribe(function(){$D.addClass(pane,'macBug');that._isSlideShowPaneVisible=0;});animCtrl.animate();}},_queueNextImage:function(){var that=this;if(this._isSlideShowActive)this.playId=window.setTimeout(function(){that._showNextImage()},this.slideShowSpeed);},_cancelQueuedImage:function(){window.clearInterval(this.playId);this.playId=null;},_showPrevImage:function(){if(!this.swapper.getSwapStatus()){if(this._index>0){this._index--;}else{this._index=this._imgCount-1;}
this._showImage(this._imgObjSrc.get(this._index));}},_showNextImage:function(){if(!this.swapper.getSwapStatus()){if(this._index<(this._imgCount-1)){this._index++;}else{this._index=0;}
this._showImage(this._imgObjSrc.get(this._index));}},_startOrStopSlideShow:function(){if(!this.swapper.getSwapStatus()||this._isSlideShowActive){this._isSlideShowActive=!this._isSlideShowActive;this._setButtonState();if(this._isSlideShowActive){this.startSlideShow();}else{this.stopSlideShow();}}},_setButtonState:function(){var btn=$('slideshow-startstop');if(this._isSlideShowActive){$D.replaceClass(btn,'startSlideShow','stopSlideShow');btn.setAttribute('title','Pause');btn.setAttribute('href','#Pause');btn.childNodes[0].setAttribute('alt','Pause');}else{$D.replaceClass(btn,'stopSlideShow','startSlideShow');btn.setAttribute('title','Play');btn.setAttribute('href','#Play');btn.childNodes[0].setAttribute('alt','Play');}},startSlideShow:function(){this._isSlideShowActive=1;this._showNextImage();this._setButtonState(1);},stopSlideShow:function(){this._isSlideShowActive=0;this._setButtonState();},_shouldShowIndex:function(){return this._cfgObj.showIndex==='yes'||(this._cfgObj.showIndex==='auto'&&this._imgCount>1);},_shouldShowSlideShow:function(){return this._cfgObj.showSlideShow==='yes'||(this._cfgObj.showSlideShow==='auto'&&this._imgCount>1);},reset:function(){if(this._imgIndex){this._imgIndex.innerHTML='';}
if(this._imgStage){this._imgStage.setAttribute('src','http://us.i1.yimg.com/us.yimg.com/i/spacer.gif');this._imgStage.setAttribute('alt','');$D.setStyle(this._imgStage,'display','none');}
if(this._imgCaption){this._imgCaption.innerHTML='';}
this.swapper._currentImgObj=null;},_showImage:function(imgObj){var that=this;if(this._shouldShowIndex()&&this._imgIndex){this._imgIndex.innerHTML=(this._index+1)+' of '+this._imgCount;}
if(this._imgStage){this._preloader.onload=function(){};this._preloader.onload=function(){$LOG('preloaded! '+imgObj.url);that.swapper.swap(imgObj);};this._preloader.src=imgObj.url;}},_setCaptionText:function(imgObj){if(this._cfgObj.showCaption==='yes'&&this._imgCaption){var captionText=unescape(imgObj.caption);captionText=captionText.replace(/\r\n/gi,'<br>');captionText=captionText.replace(/\n/gi,'<br>');this._imgCaption.innerHTML=captionText;}}};$E.on(window,'load',SS.init);})();
