DL.Widget.ImageSlider=new DL.Class({initialize:function(options){this.animations={};this.nodes=[];this.prev=null;this.next=null;this.desc=null;this.desc_text=null;this.index=0;this.image=null;this.imageOld=null;this.thumbs=null;this.playing=false;this.options={id:'slideshow',classThumbs:'thumbs',classPreview:'preview',pWidth:640,pHeight:480,tHeight:120,iWidth:120,iHeight:120,slideShow:false,slideShowInterval:5000,mode:'mix',description:false};var o=this.setOptions(options),self=this;if(typeof o.mode!='string')o.mode=(o.mode==1)?'slide':'mix';this.el=DL.$I(o.id);this.thumbs=DL.Element.whiteSpace(DL.Element.subNode(DL.$CN(o.classThumbs,this.el).shift(),[0]));this.preview=DL.$CN(o.classPreview,this.el).shift();DL.Element.addClass(this.el,'jsImageSlider');DL.Element.addNodes(this.preview,this.indicator=DL.$C('div',{className:'indicator',style:{width:o.iWidth+'px',height:o.iHeight+'px'}}));DL.Element.addNodes(this.preview,this.navigator=DL.$C('div',{className:'navigator'},this.prev=DL.$C('a',{className:'prev',onclick:function(){self.zappImage(-1);this.blur();return false}}),this.next=DL.$C('a',{className:'next',onclick:function(){self.zappImage(1);this.blur();return false}})));if(o.description){DL.Element.afterNode(this.navigator,this.desc=DL.$C('div',{className:'desc',style:{width:o.pWidth+'px',height:o.pHeight+'px'}}));DL.Element.addNodes(this.desc,this.desc_strong=DL.$C('strong',{className:'strong'},this.desc_title=DL.Element.newText('')),DL.$C('br'),this.desc_text=DL.Element.newText(''))}DL.Element.setStyles(this.el,{width:(o.pWidth+o.tWidth)+'px'});DL.Element.setStyles(this.preview,{width:o.pWidth+'px',height:o.pHeight+'px',display:'block'});DL.Element.setStyles(this.thumbs.parentNode,{height:o.pHeight+'px',width:o.tWidth+'px'});DL.Element.setStyle(this.indicator,'opacity',0);DL.Element.setStyle(this.navigator,'opacity',75);DL.Element.setStyle(this.indicator,{left:(this.preview.offsetWidth/2)-(this.indicator.offsetWidth/2)+'px',top:(this.preview.offsetHeight/2)-(this.indicator.offsetHeight/2)+'px'});this.animations.indicator=new DL.Animator({duration:750}).addSubject(new DL.Animator.CSSStyleSubject(self.indicator,'opacity: 0.0;','opacity: 0.75;'));this.loadHandler=function(node){self.image.removeAttribute('width');self.image.removeAttribute('height');if(self.image.offsetHeight>self.preview.offsetHeight){DL.Element.setStyle(self.image,{height:self.preview.offsetHeight+'px'})}var left=((self.preview.offsetWidth/2)-(self.image.offsetWidth/2)),top=((self.preview.offsetHeight/2)-(self.image.offsetHeight/2)),start=(node._index>self.index?'left:'+self.preview.offsetWidth+'px;':'left:-'+self.preview.offsetWidth+'px;'),finish=('left:'+left+'px'),ani=this.animations.image=new DL.Animator({duration:333,transition:DL.Animator.tx.easeInOut});ani.oncomplete=function(){if(self.imageOld){DL.Element.removeNode(self.imageOld)}DL.Element.setStyle(self.navigator,{display:'block'});self.playing=false;self.alignNavigator()};var style={visibility:'visible',left:left+'px',top:top+'px'};switch(o.mode){case'mix':case'slide':ani.addSubject(new DL.Animator.CSSStyleSubject(self.image,start,finish));style.left=self.preview.offsetWidth+'px';break;case'fade':style.opacity=0;ani.addSubject(new DL.Animator.CSSStyleSubject(self.image,"opacity: 0.0;","opacity: 1.0;"));self.image.style.width='auto';self.image.style.height='auto';break}if(self.imageOld){switch(o.mode){case'mix':case'fade':ani.addSubject(new DL.Animator.CSSStyleSubject(self.imageOld,"opacity: 1.0;","opacity: 0.0;"));break;case'slide':ani.addSubject(new DL.Animator.CSSStyleSubject(self.imageOld,(node._index>self.index?'left:-'+self.preview.offsetWidth+'px;':'left:'+self.preview.offsetWidth+'px;')));break}}DL.Element.setStyle(self.image,style);ani.toggle();self.index=node._index};this.clickHandler=function(node){if(self.image&&self.image.src==node.href||self.playing){return false}if(self.image){self.imageOld=self.image}self.playing=true;if(self.index!=node._index){DL.Element.removeClass(self.nodes[self.index],'active')}DL.Element.addClass(node,'active');DL.Element.addNodes(self.preview,self.image=DL.$C('img',{src:node.href,style:{visibility:'hidden'}}));if(o.description){DL.Element.replaceNode(this.desc_text,this.desc_text=DL.Element.newText(node.name));DL.Element.replaceNode(this.desc_title,this.desc_title=DL.Element.newText(node.title))}if(!self.image.complete){var ani=this.animations.indicator,end=0;var ntf=function(){end=1;ani.toggle()},sto=setTimeout(ntf,500);self.image.onload=function(){clearTimeout(sto);self.loadHandler(node);if(end){ani.toggle()}}}else{self.loadHandler(node)}};for(var i=0;i