/* Eitido (c) 2010 - Norman Geiersbach */
var Animation=new Class({Implements:[Options],options:{autodisplay:true,autostart:false,count:0,delay:'long',horizontal:true,loop:false,width:0,height:0},current:0,element:null,image:null,timer:null,isRunning:false,initialize:function(element,image,options){this.setOptions(options);this.options.delay=Animation.Delay[this.options.delay]||this.options.delay.toInt();this.element=($type(element)=='string')?$(element):element;if($chk(image))this.element.setStyle('background-image',image);if(this.options.width==0)this.options.width=this.element.getStyle('width').toInt();if(this.options.height==0)this.options.height=this.element.getStyle('height').toInt();if(this.options.count==0){var imgUrl=this.element.getStyle('background-image');if(imgUrl.contains('url('))imgUrl=imgUrl.substring(5,imgUrl.length-2);var img=new Image();img.src=imgUrl;this.checkLoad.delay(1,this,img);}
if(this.options.autostart)this.start();},checkLoad:function(img){if(img!=null){if((img.complete)&&(img.width>0)){this.options.horizontal=img.width>img.height;this.options.count=(this.options.horizontal?img.width/this.options.width:img.height/this.options.height).toInt();if(this.options.autostart)this.start();}else this.checkLoad.delay(1,this,img);}},start:function(){if((this.options.count>0)&&(this.options.width>0)){if(this.timer==null){this.timer=this.step.periodical(this.options.delay,this);if(this.options.autodisplay)this.element.setStyle('display','block');this.isRunning=true;}else this.current=0;}},stop:function(){if(this.timer!=null){this.isRunning=false;this.timer=$clear(this.timer);if(this.options.autodisplay)this.element.setStyle('display','none');}},step:function(){if(this.current>=this.options.count){if(this.options.loop)this.current=0;else this.stop();}
this.element.setStyle('background-position',this.options.horizontal?(this.current*-this.options.width)+'px 0px':'0px '+(this.current*-this.options.width)+'px');this.current++;}});Animation.Delay={'short':25,'normal':50,'long':100};
var imageGalleryPopup=null;var ImageGallery=new Class({Implements:[Options],options:{host:null,path:null,popup:null,fx:{duration:'long',link:'cancel',transition:'back:out'},showText:false},id:null,elements:{container:null,images:null,buttons:{container:null,enlarge:null,prev:null,next:null}},images:null,popup:null,fx:null,size:0,current:0,initialize:function(options){this.setOptions(options);this.generate();},generate:function(){var host=$type(this.options.host)=='string'?$(this.options.host):this.options.host;if(host==null)return false;this.id=host.uid;this.elements.images=host.getElements('img');if((this.elements.images==null)||(this.elements.images.length<1))return false;this.size=this.elements.images[0].getSize();var hostSize=host.getSize();this.elements.container=new Element('div').addClass('gallery-container').setStyle('width',(this.size.x*this.elements.images.length)+'px');this.elements.buttons.container=new Element('div').addClass('gallery-buttons').setStyles({'position':'absolute','left':'0','top':'0','width':hostSize.x+'px','height':hostSize.y+'px','z-index':'101'});this.elements.buttons.enlarge=new Element('a',{'href':'#'}).addClass('gallery-button-enlarge').setStyles({'display':'block','position':'absolute','z-index':'102'});this.elements.buttons.prev=new Element('a',{'href':'#'}).addClass('gallery-button-prev').setStyles({'display':'none','position':'absolute','z-index':'102'}).addEvent('click',function(){this.previous();return false;}.bindWithEvent(this));this.elements.buttons.next=new Element('a',{'href':'#'}).addClass('gallery-button-next').setStyles({'display':this.elements.images.length>1?'block':'none','position':'absolute','z-index':'102'}).addEvent('click',function(){this.next();return false;}.bindWithEvent(this));if(this.options.popup!=null){if(Browser.Engine.trident){for(var i=0;i<this.elements.images.length;i++)
this.elements.images[i].addEvent('click',function(){this.enlarge();return false;}.bindWithEvent(this));}else this.elements.buttons.container.addEvent('click',function(){this.enlarge();return false;}.bindWithEvent(this));this.elements.buttons.enlarge.addEvent('click',function(){this.enlarge();return false;}.bindWithEvent(this));}
this.fx=new Fx.Tween(this.elements.container.set('margin-left','0'),{duration:this.options.fx.duration,link:this.options.fx.link,transition:this.options.fx.transition});for(var i=0;i<this.elements.images.length;i++){if(this.options.showText){var container=new Element('div').addClass('gallery-image-container');var text=new Element('div').addClass('gallery-image-text').set('text',this.elements.images[i].alt);this.elements.images[i].inject(container);text.inject(container);container.inject(this.elements.container);}else this.elements.images[i].inject(this.elements.container);}
if(this.options.popup!=null)this.elements.buttons.enlarge.inject(this.elements.buttons.container);this.elements.buttons.prev.inject(this.elements.buttons.container);this.elements.buttons.next.inject(this.elements.buttons.container);this.elements.container.inject(host);this.elements.buttons.container.inject(host);this.images=[];for(var i=0;i<this.elements.images.length;i++)
this.images.push({filename:this.elements.images[i].src.substring(this.elements.images[i].src.lastIndexOf('/')+1,this.elements.images[i].src.length),title:this.elements.images[i].alt});},enlarge:function(){if(imageGalleryPopup==null)
imageGalleryPopup=(new ImageGalleryPopup(this.options.popup));if(this.popup==null){this.popup=imageGalleryPopup;this.popup.addEvent('close',function(popup,uid){if(uid==this.id)this.setCurrent(popup.current);}.bindWithEvent(this))}
imageGalleryPopup.show(this.images,this.current,this.id);},previous:function(){if(this.current>0)
this.setCurrent(this.current-1);},next:function(){if(this.current<this.images.length-1)
this.setCurrent(this.current+1);},setCurrent:function(index){if((index>=0)&&(index<this.images.length)){if(this.elements.buttons.prev!=null)this.elements.buttons.prev.setStyle('display',index<1?'none':'block');if(this.elements.buttons.next!=null)this.elements.buttons.next.setStyle('display',index>=this.images.length-1?'none':'block');this.fx.start('margin-left',(index*-this.size.x)+'px');this.current=index;}}});
