/**
 * Controller per visualizzare contenuto degli albums
 * @name		toolbox_slideshow.js
 * @encoding	UTF-8
 * @project		LiberoFoto
 * @package		javascripts
 * @author		Giulio D'Ambrosio <giulio.dambrosio@staff.libero.it>, <giulio.dambrosio@poste.it>
 * @creation	Tue Dec 09 2008 16:47:12 GMT+0100 (CET)
 * @version		Cvs: $Id: toolbox_slideshow.js,v 1.23 2009/10/07 09:34:24 giulio_dambrosio Exp $
 */
Libero.ImageDescriptor=Class.create();Libero.ImageDescriptor.unready=[];Libero.ImageDescriptor.prototype={id:null,status:-1,checkStatusCode:'',base_url:null,url:null,url_large:null,url_thumb:null,width:null,height:null,width_large:null,height_large:null,width_thumb:null,height_thumb:null,name:null,desc:null,tags:null,_statusChangeListeners:null,_checker:null,_checkerTimeoutInterval:5000,initialize:function(source){if(source){Object.extend(this,source);}this._statusChangeListeners=[];this._checkerTimeoutInterval=Math.random()*2000+4000;if(""!=this.checkStatusCode&&!this.isReady()){Libero.ImageDescriptor.unready[this.id]=this;this._checker=eval(this.checkStatusCode);this._callCheckStatus(this.id);}},_callCheckStatus:function(){if(this.status==0&&this._checker){setTimeout("if (Libero.ImageDescriptor.unready["+this.id+"]._checker){Libero.ImageDescriptor.unready["+this.id+"]._checker.send();Libero.ImageDescriptor.unready["+this.id+"]._callCheckStatus();}",this._checkerTimeoutInterval);}else if(this.isFailed()){}},addStatusChangeListener:function(listener){for(var i=0,n=this._statusChangeListeners.length;i<n;i++){if(this._statusChangeListeners[i]==listener){return false;}}this._statusChangeListeners.push(listener);return true;},remStatusChangeListener:function(listener){for(var i=0,n=this._statusChangeListeners.length;i<n;i++){if(this._statusChangeListeners[i]==listener){this._statusChangeListeners=this._statusChangeListeners.splice(i,1);return true;}}return false;},getContentFromJSON:function(source){for(var property in source){this[property]=source[property];}},toString:function(){return this.id;},escapeContent:function(){this.name=Libero.Utils.prototype.unicode2entities(this.name);this.tags=Libero.Utils.prototype.unicode2entities(this.tags);this.desc=Libero.Utils.prototype.unicode2entities(this.desc);},setNewStatus:function(bNewStatus,newParams){Object.extend(this,newParams);this.status=bNewStatus;for(var i=0,n=this._statusChangeListeners.length;i<n;i++){this._statusChangeListeners[i]._handleImageDescriptorStatusChange(this);}},isReady:function(){return this.status==1;},isFailed:function(){return this.status==-1;}};Libero.Slideshow=Class.create();Libero.Slideshow.prototype={id:null,slCPanel:null,slIPanel:null,slPictures:null,slPicturesOrder:null,slNumSlots:null,slSlots:null,slLastSlot:null,slCurSlot:null,slElement:null,slThumbnailsContainer:null,slSlotMaxSizeX:46,slSlotMaxSizeY:46,slPicMaxSizeX:36,slPicMaxSizeY:36,slCurPos:0,slNumPics:0,_customEventHandlers:null,slScrollingPos:0,slThumbsContWidth:0,slAnimationCode:'',slAnimationTimerId:null,slAnimationType:0,slAnimationDirection:0,slAnimationInterrupt:false,slAnimationInterruptDirection:0,slAnimationInterruptType:0,slAnimationInterruptRun:false,slAnimationNumSlots:0,slAnimationRun:false,slAnimationTimestamp:null,slInertia:null,slStartInertia:200,slAnimationDelay:1,initialize:function(element,pictures,opts){var i=0,dimx,dimy,slot,domelem,picobj,m,n,m2,n2,a,b,bgdiv;var options=Object.extend({picMaxSizeX:36,picMaxSizeY:36,slotMaxSizeX:46,slotMaxSizeY:46,marginX:16,marginY:5,loadingPicUrl:'/pics/tmpUploadedImage200.jpg',errorPicUrl:'/pics/tmpUploadedImage200.jpg',loadingPicDims:{width:200,height:200},errorPicDims:{width:200,height:200}},opts);this.slElement=$(element);this.id=this.slElement.id+'_slideshowObj';this.slElement.LiberoSlideshow=this;this.slPicMaxSizeX=options.picMaxSizeX;this.slPicMaxSizeY=options.picMaxSizeY;this.slSlotMaxSizeX=options.slotMaxSizeX;this.slSlotMaxSizeY=options.slotMaxSizeY;this._customEventHandlers={SlideChange:[],SlideClick:[],SlideDoubleClick:[],SlideOver:[],SlideOut:[]};this.slAnimationCode='$("'+element+'").LiberoSlideshow._animateRotation();';this.slPictures=new Array();this.slPicturesOrder=new Array();for(i=0;i<pictures.length;i++){picobj=new Libero.ImageDescriptor(pictures[i]);this.slPictures[picobj.id]=picobj;this.slPicturesOrder[i]=picobj.id;}this.slNumPics=i;var thumbcont=document.createElement('div');thumbcont.className='lfp_thumbnails_extcont';this.slThumbnailsContainer=document.createElement('div');this.slThumbnailsContainer.className='lfp_thumbnails_cont';dimx=this.slElement.clientWidth;dimy=this.slElement.clientHeight;this.slCPanel=new Libero.SlideshowControlPanel(this,this.slElement,options);thumbcont.appendChild(this.slThumbnailsContainer);this.slElement.appendChild(thumbcont);this.slIPanel=new Libero.SlideshowInfoPanel(this,this.slElement,options);this.slThumbsContWidth=dimx-options.marginX*2;this.slNumSlots=this.slNumPics;this.slSlots=new Array(this.slNumSlots);for(i=0;i<this.slNumSlots;i++){slot=new Libero.SlideshowSlot(this,this.slElement,i,options);this.slSlots[i]=slot;domelem=slot.getRootContainer();domelem.LiberoSlideshow=this;this.slThumbnailsContainer.appendChild(domelem);Libero.Utils.prototype.startListening(domelem,'mouseover',this._handleSlotOver);Libero.Utils.prototype.startListening(domelem,'mouseout',this._handleSlotOut);Libero.Utils.prototype.startListening(domelem,'click',this._handleSlotClick);}this.slCurPos=0;this.slCurSlot=this.slSlots[0];this.slLastSlot=null;this.slCurSlot.setFocus(true);this._refreshSlotContent();if(this.slPicturesOrder.length>0){this._dispatchCustomEvent('SlideChange',this.slPictures[this.slPicturesOrder[0]]);}},toString:function(){return this.id;},getCurrentImageDescriptor:function(){return this.slPicturesOrder.length>0?this.slPictures[this.slPicturesOrder[this.slCurPos]]:null;},addCustomEventListener:function(evtname,func,context){this._customEventHandlers[evtname].push({context:context,func:func});},remCustomEventListener:function(evtname,func){},_dispatchCustomEvent:function(evtname,params){var listener,i,n,eh=this._customEventHandlers[evtname];for(i=0,n=eh.length;i<n;i++){listener=eh[i];listener.func(params,listener.context);}},_handleSlotClick:function(e){var evt=Libero.Utils.prototype.getEvent(e);var tgt=Libero.Utils.prototype.getEventTarget(evt);var slot=false;var lssObj=false;var self;if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){slot=tgt.LiberoSlideshowSlot;self=tgt.LiberoSlideshow;}else{while(tgt!=null&&typeof(tgt.LiberoSlideshowSlot)=='undefined'){if(typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;}tgt=tgt.parentNode;}if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){slot=tgt.LiberoSlideshowSlot;}if(!self){while(tgt&&typeof(tgt.LiberoSlideshow)=='undefined'){tgt=tgt.parentNode;}}if(slot&&tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;}}if(slot&&self){self.switchCurrentSlot(slot);}},switchCurrentSlot:function(slot){this.slLastSlot=this.slCurSlot;this.slCurSlot=slot;this.slCurPos=slot.getImageIndex();this.slLastSlot.setFocus(false);this.slCurSlot.setFocus(true);this.slLastSlot.setHightlight(false);this._dispatchCustomEvent('SlideChange',this.getCurrentImageDescriptor());},_handleSlotOver:function(e){var evt=Libero.Utils.prototype.getEvent(e);var tgt=Libero.Utils.prototype.getEventTarget(evt);var self,slot;if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow._dispatchCustomEvent('SlideOver',tgt.LiberoSlideshowSlot.getImageDescriptor());tgt.LiberoSlideshowSlot.setHightlight(true);}else{while(tgt!=null&&typeof(tgt.LiberoSlideshowSlot)=='undefined'){if(typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;}tgt=tgt.parentNode;}if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){slot=tgt.LiberoSlideshowSlot;}if(!self){while(tgt&&typeof(tgt.LiberoSlideshow)=='undefined'){tgt=tgt.parentNode;}}if(slot&&tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;self._dispatchCustomEvent('SlideOver',tgt.LiberoSlideshowSlot.getImageDescriptor());slot.setHightlight(true);}}},_handleSlotOut:function(e){var evt=Libero.Utils.prototype.getEvent(e);var tgt=Libero.Utils.prototype.getEventTarget(evt);var self,slot;if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow._dispatchCustomEvent('SlideOut',tgt.LiberoSlideshowSlot.getImageDescriptor());tgt.LiberoSlideshowSlot.setHightlight(false);}else{while(tgt!=null&&typeof(tgt.LiberoSlideshowSlot)=='undefined'){if(typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;}tgt=tgt.parentNode;}if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){slot=tgt.LiberoSlideshowSlot;}if(!self){while(tgt&&typeof(tgt.LiberoSlideshow)=='undefined'){tgt=tgt.parentNode;}}if(slot&&tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){self=tgt.LiberoSlideshow;self._dispatchCustomEvent('SlideOut',tgt.LiberoSlideshowSlot.getImageDescriptor());slot.setHightlight(false);}}},_handleSlotDoubleClick:function(e){var evt=Libero.Utils.prototype.getEvent(e);var tgt=Libero.Utils.prototype.getEventTarget(evt);if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){tgt.LiberoSlideshow._dispatchCustomEvent('SlideDoubleClick',tgt.LiberoSlideshowSlot.getImageDescriptor());}else{while(tgt!=null&&typeof(tgt.LiberoSlideshowSlot)=='undefined'){tgt=tgt.parentNode;}if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){tgt.LiberoSlideshow._dispatchCustomEvent('SlideDoubleClick',tgt.LiberoSlideshowSlot.getImageDescriptor());}}},isAnimationRunning:function(){return this.slAnimationRunning;},startDynamicRotation:function(direction){this.setDynamicDirection(direction);return this._initAnimation(4*(direction>=0?1:-1),true,true);},setDynamicDirection:function(direction){var multiplier=6;if((direction<0&&this.slAnimationDirection<0)||(direction>=0&&this.slAnimationDirection>=0)){this.slAnimationDirection=direction*multiplier;}else{this.slAnimationDirection=-direction*multiplier;this.slAnimationInterruptDirection=direction*multiplier;this.slAnimationInterruptType=4*(direction>=0?1:-1);this.slAnimationInterrupt=true;}},rotatePageLeft:function(allowInterrupt){return this._initAnimation(-2,true,allowInterrupt);},rotatePageRight:function(allowInterrupt){return this._initAnimation(2,true,allowInterrupt);},rotate2PageLeft:function(allowInterrupt){return this._initAnimation(-3,true,allowInterrupt);},rotate2PageRight:function(allowInterrupt){return this._initAnimation(3,true,allowInterrupt);},prevSlot:function(allowInterrupt){var nextSlot;if(this.slNumPics){nextSlot=this.slCurPos>0?this.slCurPos-1:this.slNumPics-1;this.switchCurrentSlot(this.slSlots[nextSlot]);}},nextSlot:function(allowInterrupt){var nextSlot;if(this.slNumPics){nextSlot=this.slCurPos<this.slNumPics-1?this.slCurPos+1:0;this.switchCurrentSlot(this.slSlots[nextSlot]);}},rotateLeft:function(allowInterrupt){return this._initAnimation(-1,false,allowInterrupt);},rotateRight:function(allowInterrupt){return this._initAnimation(1,false,allowInterrupt);},startRotationLeft:function(allowInterrupt){return this._initAnimation(-1,true,allowInterrupt);},startRotationRight:function(allowInterrupt){return this._initAnimation(1,true,allowInterrupt);},stopRotation:function(){var wasrunning=this.isAnimationRunning();this.slAnimationInterrupt=true;this.slAnimationInterruptType=0;this.slAnimationInterruptRun=false;return wasrunning;},_initAnimation:function(slAnimationType,slAnimationRun,allowInterrupt){if(this.slPicturesOrder.length==0){return false;}if(this.isAnimationRunning()){if(!allowInterrupt||(this.slAnimationInterrupt&&this.slAnimationInterruptType==0)){return false;}this.slAnimationInterrupt=true;this.slAnimationInterruptType=slAnimationType;this.slAnimationInterruptRun=slAnimationRun;}else{this.slAnimationRunning=true;this.slAnimationInterrupt=false;this.slAnimationType=this.slAnimationInterruptType=slAnimationType;this.slAnimationRun=this.slAnimationInterruptRun=slAnimationRun;this.slAnimationDirection=this.slAnimationInterruptDirection=0;this.slAnimationNumSlots=0;this.slInertia=this.slStartInertia;this.slLastRotAngle=0.0;this.slScrollingPos=0.0;this.slAnimationTimestamp=new Date().getTime();this.slAnimationTimerId=setInterval(this.slAnimationCode,this.slAnimationDelay);}return true;},_finalizeAnimation:function(){this.slAnimationRunning=false;this.slAnimationNumSlots=0;this.slLastRotAngle=0.0;this.slInertia=this.slStartInertia;this.slAnimationType=0;this.slScrollingPos=0;this.slAnimationDirection=0;if(this.slAnimationTimerId!=null){clearInterval(this.slAnimationTimerId);}return true;},_animateRotation:function(){var angle=Math.abs(this.slScrollingPos),curtime=new Date().getTime(),deltatime=curtime-this.slAnimationTimestamp;this.slAnimationTimestamp=curtime;if(this.slAnimationType==0){this._finalizeAnimation();}if(angle>=this.slThumbsContWidth){this.slAnimationNumSlots++;this._completeAnimation();if(this.slAnimationInterrupt){this.slAnimationInterrupt=false;if(this.slAnimationInterruptType==0){this._finalizeAnimation();}else{this.slAnimationType=this.slAnimationInterruptType;this.slAnimationRun=this.slAnimationInterruptRun;this.slAnimationNumSlots=0;this.slAnimationDirection=this.slAnimationInterruptDirection;this.slInertia=this.slStartInertia;this.slLastRotAngle=0.0;this.slScrollingPos=0.0;}return;}if(!this.slAnimationRun){this._finalizeAnimation();return;}else{if(Math.abs(this.slAnimationType)==3){if(this.slAnimationNumSlots>=(Math.PI/this.slThumbsContWidth)-1){this._finalizeAnimation();}else{}}else if(Math.abs(this.slAnimationType)==2){if(this.slAnimationNumSlots>=(Math.PI/(2*this.slThumbsContWidth))-1){this._finalizeAnimation();}else{}}else{}}}else{if(this.slAnimationType<0){if(this.slAnimationType==-4){this.slLastRotAngle=this.slAnimationDirection*this.slMaxRotSpeed*deltatime;this.slScrollingPos+=this.slLastRotAngle;}else{this.slLastRotAngle=this.slMaxRotSpeed*deltatime;this.slScrollingPos-=this.slLastRotAngle;}if(-this.slScrollingPos>this.slThumbsContWidth){switch(this.slAnimationType){case -4:case -1:this.slScrollingPos=-this.slThumbsContWidth;break;case -2:if(-this.slScrollingPos>2*this.slThumbsContWidth||(this.slAnimationNumSlots+1>=(Math.PI/(2*this.slThumbsContWidth))-1)){this.slScrollingPos=-this.slThumbsContWidth;}break;case -3:if(-this.slScrollingPos>2*this.slThumbsContWidth||(this.slAnimationNumSlots+1>=(Math.PI/this.slThumbsContWidth)-1)){this.slScrollingPos=-this.slThumbsContWidth;}break;}}}else{if(this.slAnimationType==4){this.slLastRotAngle=this.slAnimationDirection*this.slMaxRotSpeed*deltatime;}else{this.slLastRotAngle=this.slMaxRotSpeed*deltatime;}this.slScrollingPos+=this.slLastRotAngle;if(this.slScrollingPos>this.slThumbsContWidth){switch(this.slAnimationType){case 1:case 4:this.slScrollingPos=this.slThumbsContWidth;break;case 2:if(this.slScrollingPos>2*this.slThumbsContWidth||(this.slAnimationNumSlots+1>=(Math.PI/(2*this.slThumbsContWidth))-1)){this.slScrollingPos=this.slThumbsContWidth;}break;case 3:if(this.slScrollingPos>2*this.slThumbsContWidth||(this.slAnimationNumSlots+1>=(Math.PI/this.slThumbsContWidth)-1)){this.slScrollingPos=this.slThumbsContWidth;}break;}}}this._updatePositions();}},_completeAnimation:function(){var i,x,y,is,ms=this.slNumSlots,hs=Math.floor(ms/2),angle,slot,styles,zoomFactor,cs,sn;if(this.slAnimationType>0){this.slCurPos--;while(this.slCurPos<0){this.slCurPos+=this.slPicturesOrder.length;}slot=this.slSlots[this.slSlotsOrder[hs]];for(is=0;is<ms;is++){this.slSlotsOrder[is]--;if(this.slSlotsOrder[is]<0){this.slSlotsOrder[is]+=ms;}}is=hs;i=(this.slPicturesOrder.length+this.slCurPos-is);while(i<0){i+=this.slPicturesOrder.length;}i%=this.slPicturesOrder.length;angle=(Math.PI/2)-(ms-is)*this.slThumbsContWidth;zoomFactor=sn=Math.max(0,Math.sin(angle));cs=Math.cos(angle);slot.setImageDescriptor(this.slPictures[this.slPicturesOrder[i]],zoomFactor);x=this.slCircleCenterX-(this.slSlotPosRangeX*cs)-slot.sllZoomedWidth/2;y=(this.slCircleCenterY-(this.slSlotPosRangeY*sn))-slot.sllZoomedPicHeight;styles=$s(slot.sllContainerDiv);styles.left=x+'px';styles.top=y+'px';}else if(this.slAnimationType<0){this.slCurPos++;while(this.slCurPos>=this.slPicturesOrder.length){this.slCurPos-=this.slPicturesOrder.length;}slot=this.slSlots[this.slSlotsOrder[hs+1]];for(is=0;is<ms;is++){this.slSlotsOrder[is]++;if(this.slSlotsOrder[is]>=ms){this.slSlotsOrder[is]-=ms;}}is=hs+1;i=(this.slCurPos+is-1)%this.slPicturesOrder.length;angle=is*this.slThumbsContWidth;zoomFactor=cs=Math.max(0,Math.cos(angle));sn=Math.sin(angle);slot.setImageDescriptor(this.slPictures[this.slPicturesOrder[i]],zoomFactor);x=this.slCircleCenterX+(this.slSlotPosRangeX*sn)-slot.sllZoomedWidth/2;y=(this.slCircleCenterY-(this.slSlotPosRangeY*cs))-slot.sllZoomedPicHeight;styles=$s(slot.sllContainerDiv);styles.left=x+'px';styles.top=y+'px';}this.slLastSlot=this.slCurSlot;this.slCurSlot=this.slSlots[this.slSlotsOrder[0]];this.slLastSlot.setFocus(false);this.slCurSlot.setFocus(true);this.slLastSlot.setHightlight(false);this._dispatchCustomEvent('SlideChange',this.getCurrentImageDescriptor());if(this.slAnimationRun){this.slScrollingPos+=this.slAnimationType<0?this.slThumbsContWidth:-this.slThumbsContWidth;}else{this.slLastRotAngle=0.0;this.slInertia=this.slStartInertia;this.slAnimationType=0;this.slScrollingPos=0;}},_refreshSlotContent:function(){var pp,i,is,hs=this.slNumPics,slot,styles,angle,zoomFactor,x,y,cs,sn;for(i=0,is=0;is<hs;i++,is++){slot=this.slSlots[is];pp=i%this.slPicturesOrder.length;if(this.slPicturesOrder.length>0){slot.setImageDescriptor(this.slPictures[this.slPicturesOrder[pp]],1,pp);}else{slot.setVisibility(false);}}},_updatePositions:function(){var is,ms=this.slNumSlots,hs=Math.floor(ms/2),slot,styles,angle,zoomFactor,x,y,cs,sn;for(is=0;is<=hs;is++){slot=this.slSlots[this.slSlotsOrder[is]];angle=is*this.slThumbsContWidth+this.slScrollingPos;zoomFactor=cs=Math.max(0,Math.cos(angle));sn=Math.sin(angle);x=(this.slCircleCenterX+(this.slSlotPosRangeX*sn)-slot.sllZoomedWidth/2)+'px';y=((this.slCircleCenterY-(this.slSlotPosRangeY*cs))-slot.sllZoomedPicHeight)+'px';styles=$s(slot.sllContainerDiv);if(styles.left!=x){styles.left=x;}if(styles.top!=y){styles.top=y;}}for(is=ms-1;is>hs;is--){slot=this.slSlots[this.slSlotsOrder[is]];angle=(Math.PI/2)-(ms-is)*this.slThumbsContWidth+this.slScrollingPos;zoomFactor=sn=Math.max(0,Math.sin(angle));cs=Math.cos(angle);x=(this.slCircleCenterX-(this.slSlotPosRangeX*cs)-slot.sllZoomedWidth/2)+'px';y=((this.slCircleCenterY-(this.slSlotPosRangeY*sn))-slot.sllZoomedPicHeight)+'px';styles=$s(slot.sllContainerDiv);if(styles.left!=x){styles.left=x;}if(styles.top!=y){styles.top=y;}}}};Libero.SlideshowSlot=Class.create();Libero.SlideshowSlot.prototype={id:null,sllParentContainer:null,sllSlotNumber:null,sllContainerDiv:null,sllImage:null,sllWidth:null,sllHeight:null,sllPicMaxSizeX:null,sllPicMaxSizeY:null,sllPicDescriptor:null,sllPicIndex:0,sllHighlighted:false,sllFocused:false,sllImageLoaded:false,sllUseThumbnail:true,sllLoadingPicUrl:'',sllLoadingPicDims:null,sllErrorPicUrl:'',sllErrorPicDims:null,initialize:function(lssObj,container,slotNumber,opts){var i=0,dimx,dimy;var options=Object.extend({picMaxSizeX:36,picMaxSizeY:36,slotMaxSizeX:56,slotMaxSizeY:56,marginX:16,marginY:5,useThumbnail:true,loadingPicUrl:'/pics/tmpUploadedImage200.jpg',errorPicUrl:'/pics/tmpUploadedImage200.jpg',loadingPicDims:{width:200,height:200},errorPicDims:{width:200,height:200}},opts);this.sllParentContainer=container;this.sllSlotNumber=slotNumber;this.sllPicMaxSizeX=options.picMaxSizeX;this.sllPicMaxSizeY=options.picMaxSizeY;this.sllWidth=options.slotMaxSizeX;this.sllHeight=options.slotMaxSizeY;this.sllUseThumbnail=options.useThumbnail;this.sllLoadingPicUrl=options.loadingPicUrl;this.sllLoadingPicDims=options.loadingPicDims;this.sllErrorPicUrl=options.errorPicUrl;this.sllErrorPicDims=options.errorPicDims;this.id=lssObj.id+'_slideshowSlotObj_'+slotNumber;this.sllContainerDiv=document.createElement('div');this.sllContainerDiv.className='lfp_slideshow_slot';this.sllContainerDiv.id=this.sllParentContainer.id+'_slot_'+slotNumber;this.sllContainerDiv.LiberoSlideshowSlot=this;var styles=$s(this.sllContainerDiv);styles.width=this.sllWidth+'px';styles.maxWidth=this.sllWidth+'px';styles.height=this.sllHeight+'px';styles.maxHeight=this.sllHeight+'px';styles.overflow='hidden';styles.textAlign='center';styles.display='block';this.sllImage=document.createElement('img');this.sllImage.LiberoSlideshowSlot=this;styles=$s(this.sllImage);styles.verticalAlign='middle';styles.display='none';this.sllContainerDiv.appendChild(this.sllImage);Libero.Utils.prototype.startListening(this.sllImage,'load',this._handleImageLoaded);},toString:function(){return this.id;},getRootContainer:function(){return this.sllContainerDiv;},setImageDescriptor:function(liberoImageDescriptor,zoomFactor,picIndex){if(this.sllPicDescriptor){this.sllPicDescriptor.remStatusChangeListener(this);}liberoImageDescriptor.currentSlot=this;this.sllPicDescriptor=liberoImageDescriptor;if(!this.sllPicDescriptor.isReady()&&!this.sllPicDescriptor.isFailed()){this.sllPicDescriptor.addStatusChangeListener(this);}this.sllPicIndex=picIndex;this.setZoomFactor(this._calculateZoomFactor());},_handleImageDescriptorStatusChange:function(imageDescriptor){if(imageDescriptor.id==this.sllPicDescriptor.id){this.sllPicDescriptor=imageDescriptor;this.setZoomFactor(this._calculateZoomFactor());}},_handleImageLoaded:function(e){var self,tgt,evt=Libero.Utils.prototype.getEvent(e);if(evt){tgt=Libero.Utils.prototype.getEventTarget(evt);}while(tgt&&typeof(tgt.LiberoSlideshowSlot)=='undefined'){tgt=tgt.parentNode;}if(tgt&&typeof(tgt.LiberoSlideshowSlot)!='undefined'){self=tgt.LiberoSlideshowSlot;self.sllImageLoaded=true;self.setZoomFactor(self._calculateZoomFactor());$s(self.sllImage).display='inline';}},getImageDescriptor:function(){return this.sllPicDescriptor;},getImageIndex:function(){return this.sllPicIndex;},setZoomFactor:function(zoomFactor,forceRedraw){var sty,w,y,showimgurl;if(this.sllPicDescriptor.isReady()){showimgurl=this.sllUseThumbnail?this.sllPicDescriptor.url_thumb:this.sllPicDescriptor.url;w=(Math.min(zoomFactor,1.0)*(this.sllUseThumbnail?this.sllPicDescriptor.width_thumb:this.sllPicDescriptor.width));y=(Math.min(zoomFactor,1.0)*(this.sllUseThumbnail?this.sllPicDescriptor.height_thumb:this.sllPicDescriptor.height));}else if(this.sllPicDescriptor.isFailed()){showimgurl=this.sllErrorPicUrl;w=(Math.min(zoomFactor,1.0)*this.sllErrorPicDims.width);y=(Math.min(zoomFactor,1.0)*this.sllErrorPicDims.height);}else{showimgurl=this.sllLoadingPicUrl;w=(Math.min(zoomFactor,1.0)*this.sllLoadingPicDims.width);y=(Math.min(zoomFactor,1.0)*this.sllLoadingPicDims.height);}if(this.sllImage.src!=showimgurl){this.sllImage.src=showimgurl;}sty=$s(this.sllImage);sty.margin=((this.sllHeight-y)/2)+'px auto';sty.width=w+'px';sty.height=y+'px';},_calculateZoomFactor:function(){var zoomFactor;switch(true){case this.sllPicDescriptor.isFailed():zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllWidth:this.sllPicMaxSizeX)/this.sllErrorPicDims.width;break;case!this.sllPicDescriptor.isReady():zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllWidth:this.sllPicMaxSizeX)/this.sllLoadingPicDims.width;break;case this.sllPicDescriptor.isReady():default:if(this.sllUseThumbnail){if(this.sllPicDescriptor.width_thumb>this.sllPicDescriptor.height_thumb){zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllWidth:this.sllPicMaxSizeX)/this.sllPicDescriptor.width_thumb;}else{zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllHeight:this.sllPicMaxSizeY)/this.sllPicDescriptor.height_thumb;}}else{if(this.sllPicDescriptor.width>this.sllPicDescriptor.height){zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllWidth:this.sllPicMaxSizeX)/this.sllPicDescriptor.width;}else{zoomFactor=(this.sllFocused||this.sllHighlighted?this.sllHeight:this.sllPicMaxSizeY)/this.sllPicDescriptor.height;}}}return zoomFactor;},setVisibility:function(flag){$s(this.sllContainerDiv).display=flag?'block':'none';},setFocus:function(flag){var zoomFactor;if(flag){if(!this.sllFocused){this.sllContainerDiv.className+=' lfp_slot_focused';}}else{if(this.sllFocused){this.sllContainerDiv.className=this.sllContainerDiv.className.replace(/\s{1}lfp_slot_focused/,'');}}this.sllFocused=flag;if(this.sllPicDescriptor){this.setZoomFactor(this._calculateZoomFactor());}},isFocused:function(){return this.sllFocused;},setHightlight:function(flag){if(flag){if(!this.sllHighlighted){this.sllContainerDiv.className+=' lfp_slot_highlighted';}}else{if(this.sllHighlighted){this.sllContainerDiv.className=this.sllContainerDiv.className.replace(/\s{1}lfp_slot_highlighted/,'');}}this.sllHighlighted=flag;if(this.sllPicDescriptor){this.setZoomFactor(this._calculateZoomFactor());}},isHighlighted:function(){return this.sllFocused;}};Libero.SlideshowControlPanel=Class.create();Libero.SlideshowControlPanel.prototype={id:null,slcpCurMovingKnob:null,slcpSlideshowObj:null,slcpParentContainer:null,slcpContainerDiv:null,slcpIndexText:null,slcpSliderSpace:null,slcpSliderSpaceWidth:250,slcpSliderSpaceHeight:23,slcpKnob:null,slcpKnobWidth:73,slcpKnobHeight:14,slcpKnobMoving:false,slcpKnobStartMx:0,slcpKnobStartMy:0,slcpWidth:null,slcpHeight:20,initialize:function(lssObj,element,opts){var i=0,dimx=element.clientWidth,dimy=20,anchor,bgdiv,styles,image;this.slcpSlideshowObj=lssObj;this.slcpParentContainer=element;this.slcpWidth=dimx;this.slcpHeight=dimy;this.id=lssObj.id+'_slideshowControlPanelObj';this.slcpContainerDiv=document.createElement('div');this.slcpContainerDiv.className='lfp_slideshow_cpanel';this.slcpContainerDiv.id=this.slcpParentContainer.id+'_cpanel';styles=$s(this.slcpContainerDiv);styles.mozUserSelect='none';styles.mozUserFocus='ignore';styles.mozUserInput='ignore';anchor=document.createElement('a');anchor.href='#';anchor.title='Immagine precedente';anchor.innerHTML='<div onclick="Libero.SlideshowControlPanel.prototype._handleMoveLeftCmd(\''+element.id+'\');return false;">&nbsp;</div>';anchor.className='slcp_right';this.slcpContainerDiv.appendChild(anchor);anchor=document.createElement('a');anchor.href='#';anchor.title='Immagine successiva';anchor.innerHTML='<div onclick="Libero.SlideshowControlPanel.prototype._handleMoveRightCmd(\''+element.id+'\');return false;">&nbsp;</div>';anchor.className='slcp_left';this.slcpContainerDiv.appendChild(anchor);var prefixText=document.createElement('span');prefixText.innerHTML='Immagine&nbsp;';this.slcpContainerDiv.appendChild(prefixText);this.slcpIndexText=document.createElement('b');this.slcpContainerDiv.appendChild(this.slcpIndexText);var totelements=document.createElement('span');totelements.innerHTML='&nbsp;di&nbsp;<b>'+lssObj.slNumPics+'</b>';this.slcpContainerDiv.appendChild(totelements);this.slcpParentContainer.LiberoSlideshowControlPanel=this;this.slcpParentContainer.appendChild(this.slcpContainerDiv);lssObj.addCustomEventListener('SlideChange',this._handleImageChange,this);},toString:function(){return this.id;},falsefunc:function(e){return false;},_handleImageChange:function(imageDescriptor,context){context.slcpIndexText.innerHTML=context.slcpSlideshowObj.slCurPos+1;},getRootContainer:function(){return this.slcpContainerDiv;},_handleMoveLeftCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.prevSlot(true);}return false;},_handleContinuousLeftCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.startRotationLeft(false);}return false;},_handlePageLeftCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.rotatePageLeft(true);}return false;},_handle2PageLeftCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.rotate2PageLeft(true);}return false;},_handleMoveRightCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.nextSlot(true);}return false;},_handleContinuousRightCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.startRotationRight(false);}return false;},_handlePageRightCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.rotatePageRight(true);}return false;},_handle2PageRightCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.rotate2PageRight(true);}return false;},_handleStopMovingCmd:function(elid){var tgt=$(elid);if(tgt&&typeof(tgt.LiberoSlideshow)!='undefined'){tgt.LiberoSlideshow.stopRotation();}return false;}};Libero.SlideshowInfoPanel=Class.create();Libero.SlideshowInfoPanel.prototype={id:null,slipCurImageDescriptor:null,slipOldImageDescriptor:null,slipParentContainer:null,slipSlideshowObj:null,slipContainerDiv:null,slipWidth:null,slipHeight:36,slipPopupWindow:null,slipLoadingDivClassname:'lfp_slideshow_loading',slipLoadingDiv:null,slipLoadingPicUrl:'',slipLoadingPicDims:null,slipErrorPicUrl:'',slipErrorPicDims:null,initialize:function(lssObj,element,opts){var i=0,dimx=element.clientWidth,dimy=36,anchor;var options=Object.extend({loadingDivClassname:'lfp_slideshow_loading',loadingPicUrl:'/pics/tmpUploadedImage200.jpg',errorPicUrl:'/pics/tmpUploadedImage200.jpg',loadingPicDims:{width:200,height:200},errorPicDims:{width:200,height:200}},opts);this.slipLoadingDivClassname=options.loadingDivClassname;this.slipLoadingPicUrl=options.loadingPicUrl;this.slipLoadingPicDims=options.loadingPicDims;this.slipErrorPicUrl=options.errorPicUrl;this.slipErrorPicDims=options.errorPicDims;this.slipSlideshowObj=lssObj;this.slipParentContainer=element;this.slipWidth=dimx;this.slipHeight=dimy;this.slipContainerDiv=document.createElement('div');this.slipContainerDiv.className='lfp_slideshow_ipanel';this.slipContainerDiv.id=this.slipParentContainer.id+'_ipanel';this.id=lssObj.id+'_slideshowIpanelObj';this.slipCurrentImageAnchor=document.createElement('a');this.slipCurrentImageAnchor.href='javascript:void(0);';Libero.Utils.prototype.startListening(this.slipCurrentImageAnchor,'click',this._handleImageClick);this.slipCurrentImage=document.createElement('img');Libero.Utils.prototype.startListening(this.slipCurrentImage,'load',this._handleImageLoad);Libero.Utils.prototype.startListening(this.slipCurrentImage,'error',this._handleImageLoadError);this.slipParentContainer.LiberoSlideshowInfoPanel=this;lssObj.addCustomEventListener('SlideChange',this._handleImageChange,this);this.slipContainerDiv.appendChild(this.slipCurrentImageAnchor);this.slipCurrentImageAnchor.appendChild(this.slipCurrentImage);this.slipParentContainer.appendChild(this.slipContainerDiv);},toString:function(){return this.id;},getRootContainer:function(){return this.slipContainerDiv;},changeImageDescriptor:function(imageDescriptor){if(this.slipCurImageDescriptor=imageDescriptor){this.refreshDisplay();}else{this.slipCurrentImage.src='';}},refreshDisplay:function(){switch(true){case!this.slipCurImageDescriptor.isReady():this.slipCurrentImage.src=this.slipLoadingPicUrl;break;case this.slipCurImageDescriptor.isFailed():this.slipCurrentImage.src=this.slipErrorPicUrl;break;case this.slipCurImageDescriptor.isReady():default:this.slipCurrentImage.src=this.slipCurImageDescriptor.url;break;}},zoomCurrentImage:function(){var max_width=(document.documentElement?document.documentElement.clientWidth:document.body.clientWidth)-20,max_height=(document.documentElement?document.documentElement.clientHeight:document.body.clientHeight)-40,img_aspect=this.slipCurImageDescriptor.width_large/this.slipCurImageDescriptor.height_large,dlg_width,dlg_height;if(this.slipPopupWindow){this.slipPopupWindow.close();}if(!this.slipCurImageDescriptor.isReady()){return false;}if(img_aspect>1){if(this.slipCurImageDescriptor.width_large<=max_width&&this.slipCurImageDescriptor.height_large<=max_height){dlg_width=this.slipCurImageDescriptor.width_large;dlg_height=this.slipCurImageDescriptor.height_large;}else{var zoom_factor=max_width/this.slipCurImageDescriptor.width_large;dlg_width=max_width;dlg_height=zoom_factor*this.slipCurImageDescriptor.height_large;}}else{if(this.slipCurImageDescriptor.height_large<=max_height&&this.slipCurImageDescriptor.width_large<=max_width){dlg_width=this.slipCurImageDescriptor.width_large;dlg_height=this.slipCurImageDescriptor.height_large;}else{var zoom_factor=max_height/this.slipCurImageDescriptor.height_large;dlg_height=max_height;dlg_width=zoom_factor*this.slipCurImageDescriptor.width_large;}}if(dlg_height>=max_height){zoom_factor=max_height/dlg_height;dlg_width=zoom_factor*dlg_width;dlg_height=max_height;}if(dlg_width>=max_width){zoom_factor=max_width/dlg_width;dlg_height=zoom_factor*dlg_height;dlg_width=max_width;}this.slipPopupWindow=Libero.Utils.prototype.openModalDialog(window,{mdWidth:dlg_width+10,mdHeight:dlg_height+10,mdContent:'<img width="'+(dlg_width-10)+'" height="'+(dlg_height-10)+'" style="margin: 10px;padding: 0;border:1px solid #666;" src="'+this.slipCurImageDescriptor.url_large+'" alt=""/>',mdBaseUrl:'http://static.post.it'});},_handleImageClick:function(e){var evt,tgt,self;evt=Libero.Utils.prototype.getEvent(e);if(evt&&(tgt=Libero.Utils.prototype.getEventTarget(evt))){while(tgt&&typeof(tgt.LiberoSlideshowInfoPanel)=='undefined'){tgt=tgt.parentNode;}if(tgt){self=tgt.LiberoSlideshowInfoPanel;self.zoomCurrentImage();}}},_handleImageLoad:function(e){var evt,tgt,self;evt=Libero.Utils.prototype.getEvent(e);if(evt&&(tgt=Libero.Utils.prototype.getEventTarget(evt))){while(tgt&&typeof(tgt.LiberoSlideshowInfoPanel)=='undefined'){tgt=tgt.parentNode;}if(tgt){self=tgt.LiberoSlideshowInfoPanel;if(self.slipLoadingDiv){if(self.slipLoadingDiv.parentNode){self.slipLoadingDiv.parentNode.removeChild(self.slipLoadingDiv);}self.slipLoadingDiv=null;}}}},_handleImageLoadError:function(e){var evt,tgt,self;evt=Libero.Utils.prototype.getEvent(e);if(evt&&(tgt=Libero.Utils.prototype.getEventTarget(evt))){while(tgt&&typeof(tgt.LiberoSlideshowInfoPanel)=='undefined'){tgt=tgt.parentNode;}if(tgt){self=tgt.LiberoSlideshowInfoPanel;self.changeImageDescriptor(self.slipOldImageDescriptor);}}},_handleImageChange:function(imageDescriptor,context){context.slipOldImageDescriptor=context.slipCurImageDescriptor;if(context.slipOldImageDescriptor){context.slipOldImageDescriptor.remStatusChangeListener(context);}context.slipCurImageDescriptor=imageDescriptor;if(!imageDescriptor.isReady()){imageDescriptor.addStatusChangeListener(context);}if(context.slipLoadingDiv){if(context.slipLoadingDiv.parentNode){context.slipLoadingDiv.parentNode.removeChild(context.slipLoadingDiv);}context.slipLoadingDiv=null;}context.slipLoadingDiv=document.createElement('div');context.slipLoadingDiv.className=context.slipLoadingDivClassname;$s(context.slipLoadingDiv).width='100%';if(context.slipOldImageDescriptor&&context.slipOldImageDescriptor.height){$s(context.slipLoadingDiv).height=context.slipOldImageDescriptor.height+'px';}else if(imageDescriptor.height){$s(context.slipLoadingDiv).height=imageDescriptor.height+'px';}else{$s(context.slipLoadingDiv).height='200px';}context.slipContainerDiv.appendChild(context.slipLoadingDiv);context.refreshDisplay();},_handleImageDescriptorStatusChange:function(imageDescriptor){if(imageDescriptor.id==this.slipCurImageDescriptor.id){this.refreshDisplay();}}};