var SlideshowGallery=Class.create();SlideshowGallery.prototype={initialize:function(galleryContainer,galleryID,slides,options){this.options=Object.extend({increment:2,fadeSpeed:0.5,imageHeight:258,imageWidth:512,z:9999,controls:false,spinnerURL:"/core/media/images/ajax-loader.gif",scrimColor:"#ffffff",scrimOpacity:0,menu:"none",mouseActuation:"click",descriptions:false,photoCredits:false,captions:false,title:false,max:null},options||{});this.slides=slides;this.zOffset=this.slides.length+1;this.backendurl='/core/ajaxserver.php';this.galleryContainer=$(galleryContainer);this.parentContainer=this.galleryContainer.up();this.galleryid=galleryID;this.images=[];this.imageContainers=[];this.imageLinks=[];this.visibleImageStack=[];this.visibleMetaDataStack=[];this.visibleEffectQueueCount=0;if(this.options.descriptions===true||this.options.photoCredits===true||this.options.captions===true){this.contentContainers=[];}if(this.options.title===true){this.title=new Element('h2').addClassName('galleryTitle');}this.gallerydata=null;this.counter=0;this.currentSlide=0;this.nextSlide=1;this.slideIncrement=null;this.scrim=null;this.playSpeed=(this.options.fadeSpeed+this.options.increment)*1000;this.dimensions=this.galleryContainer.getDimensions();this.spinner=new Element('img',{style:'position:absolute; z-index:'+(this.options.z+this.zOffset+3)});this.spinner.onload=function(){var top=Math.round((this.options.imageHeight/2)-(this.spinner.height/2));var left=Math.round((this.options.imageWidth/2)-(this.spinner.width/2));this.spinner.style.top=top+"px";this.spinner.style.left=left+"px";this.galleryContainer.insert({top:this.spinner});}.bind(this);this.spinner.src=this.options.spinnerURL;this.play=true;if(this.options.menu=="text"||this.options.menu=="number"){this.menu=new Element('div').addClassName('galleryMenu');this.menu.style.zIndex=this.options.z+this.zOffset;this.galleryContainer.insert({bottom:this.menu});this.menuItems=[];this.menuItemContainers=[];}if(this.options.controls===true){this.controls=new Element('div').addClassName('controls');this.previousButton=new Element('a',{href:'#'}).addClassName('previous').update('&laquo;');this.controls.style.zIndex=this.options.z+this.zOffset+1;this.nextButton=new Element('a',{href:'#'}).addClassName('next').update('&raquo;');this.playPauseButton=new Element('a',{href:'#'}).addClassName('play').update('Pause');this.previousButton.onclick=function(){this.showPreviousSlide();return false;}.bind(this);this.playPauseButton.onclick=function(){this.playPause();return false;}.bind(this);this.nextButton.onclick=function(){this.showNextSlide();return false;}.bind(this);this.controls.insert({bottom:this.previousButton});this.controls.insert({bottom:this.playPauseButton});this.controls.insert({bottom:this.nextButton});this.galleryContainer.insert({bottom:this.controls});}if(this.options.descriptions===true){this.descriptions=[];}if(this.options.photoCredits===true){this.photoCredits=[];}if(this.options.captions===true){this.captions=[];this.captionLinks=[];}this.cacheBust=(Prototype.Browser.IE)&&(this.slides.length>11);this.randomNumber='';this.get();},get:function(){var ajax=new Ajax.Request('/core/ajaxserver.php',{method:'get',parameters:{'req':'getGallery','galleryid':this.galleryid,'max':this.options.max},asynchronous:true,onComplete:function(transport){var thisGallery=this;var menuClick=function(){window.clearTimeout(thisGallery.slideIncrement);thisGallery.nextSlide=this.position;thisGallery.play=false;if(thisGallery.options.controls===true){thisGallery.playPauseButton.update('Play');}thisGallery.xFade();return false;};this.gallerydata=transport.responseText.evalJSON(true);this.galleryImages=this.gallerydata.items;if(this.title){this.title.update(this.gallerydata.title);this.parentContainer.insert({top:this.title});}this.scrim=new Element('div',{style:'position:absolute; z-index:'+((this.options.z)+this.zOffset+2)+'; width:'+this.dimensions.width+'px; height:'+this.dimensions.height+'px; background-color:'+this.options.scrimColor+';'});this.scrim.addClassName('scrim').setOpacity(this.options.scrimOpacity);this.galleryContainer.insert({top:this.scrim});for(var i=0;i<this.galleryImages.length;i++){this.imageContainers[i]=new Element('div',{id:'gallerycontent'+this.galleryid+'_'+this.galleryImages[i].id}).addClassName('imageContainer');this.images[i]=new Image([this.options.imageWidth],[this.options.imageHeight]);if(this.options.menu=="text"||this.options.menu=="number"){this.menuItemContainers[i]=new Element('div',{style:'display:none;'});this.menuItems[i]=new Element('a',{href:''});this.menuItems[i].position=i;switch(this.options.menu){case"text":this.menuItems[i].update(this.galleryImages[i].title);break;case"number":this.menuItems[i].update(i+1);break;default:throw('Something is wrong!');}if(this.options.mouseActuation=='hover'){this.menuItems[i].onmouseover=menuClick;this.menuItems[i].href=this.galleryImages[i].linkurl;}else{this.menuItems[i].onclick=menuClick;}this.menuItemContainers[i].insert({bottom:this.menuItems[i]});this.menu.insert({bottom:this.menuItemContainers[i]});}this.imageLinks[i]=new Element('a',{href:this.galleryImages[i].linkurl});this.imageLinks[i].insert({bottom:this.images[i]});this.imageContainers[i].insert({bottom:this.imageLinks[i]});if(this.contentContainers){this.contentContainers[i]=new Element('div',{style:"position:absolute;"}).addClassName('contentContainer');}if(this.options.captions===true){this.captions[i]=new Element('div').addClassName('caption');this.captionLinks[i]=new Element('a',{href:this.galleryImages[i].linkurl});this.captionLinks[i].update(this.galleryImages[i].title);this.captions[i].insert({bottom:this.captionLinks[i]});this.contentContainers[i].insert({bottom:this.captions[i]});}if(this.options.photoCredits===true){this.photoCredits[i]=new Element('div').addClassName('photo-credit');this.photoCredits[i].update(this.galleryImages[i].photocredits);this.contentContainers[i].insert({bottom:this.photoCredits[i]});}if(this.options.descriptions===true){this.descriptions[i]=new Element('div').addClassName('description');this.descriptions[i].update(this.galleryImages[i].description);this.contentContainers[i].insert({bottom:this.descriptions[i]});}}this.addOnLoad();if(this.cacheBust){this.randomNumber="?ver="+Math.floor(Math.random()*10000000);}this.images[this.counter].src=this.slides[this.counter]+this.randomNumber;var firstImageCopy=this.imageContainers[0].cloneNode(true);this.galleryContainer.insert({bottom:firstImageCopy});this.visibleImageStack.push({image:firstImageCopy,scope:'slideshoweffect'+(++this.visibleEffectQueueCount)});if(this.contentContainers){var firstContentCopy=this.contentContainers[0].cloneNode(true);this.galleryContainer.insert({bottom:firstContentCopy});this.visibleMetaDataStack.push({content:firstContentCopy,scope:'slideshoweffect'+(++this.visibleEffectQueueCount)});}}.bind(this)});},addOnLoad:function(){for(var i=0;i<this.images.length;i++){this.images[i].onload=function(){this.loadImage();}.bind(this);}},loadImage:function(){if(this.options.menu=="text"||this.options.menu=="number"){this.menuItemContainers[this.counter].style.display="block";this.scrim.style.height=(this.galleryContainer.getHeight())+"px";}if(this.counter===0){var b=new Effect.Opacity(this.imageContainers[0],{duration:this.options.fadeSpeed,from:0,to:1});if(this.contentContainers){var c=new Effect.Opacity(this.contentContainers[0],{duration:this.options.fadeSpeed,from:0,to:1});}}if(this.counter==(this.gallerydata.items.length)-1||this.counter>this.slides.length){this.spinner.style.display="none";if(this.options.menu=="text"||this.options.menu=="number"){this.menuItems[0].className="selected";this.menuItems[0].parentNode.className="selected";}var a=new Effect.Fade(this.scrim,{duration:this.options.fadeSpeed,from:this.options.scrimOpacity,to:0});window.clearTimeout(this.slideIncrement);if(this.imageContainers.length>1){this.slideIncrement=window.setTimeout(function(){this.xFade();}.bind(this),this.playSpeed);}}else{this.counter++;if(this.cacheBust){this.randomNumber="?ver="+Math.floor(Math.random()*10000000);}this.images[this.counter].src=this.slides[this.counter]+this.randomNumber;}},xFade:function(){if(this.visibleImageStack.length>0){var removeAfterFade=this.visibleImageStack.shift();var i_out=new Effect.Opacity(removeAfterFade.image,{duration:this.options.fadeSpeed,to:0,queue:{position:'end',scope:removeAfterFade.scope},afterFinish:function(){removeAfterFade.image.parentNode.removeChild(removeAfterFade.image);}});}var newImageCopy=this.imageContainers[this.nextSlide].cloneNode(true).setOpacity(0);var newImageEffectScope='slideshoweffect'+(++this.visibleEffectQueueCount);this.visibleImageStack.push({image:newImageCopy,scope:newImageEffectScope});var i_in=new Effect.Opacity(newImageCopy,{duration:this.options.fadeSpeed,from:0,to:1,queue:{position:'end',scope:newImageEffectScope}});this.galleryContainer.appendChild(newImageCopy);if(this.contentContainers){if(this.visibleMetaDataStack.length>0){var killAfterFade=this.visibleMetaDataStack.shift();var c_out=new Effect.Opacity(killAfterFade.content,{duration:this.options.fadeSpeed,to:0,queue:{position:'end',scope:killAfterFade.scope},afterFinish:function(){killAfterFade.content.parentNode.removeChild(killAfterFade.content);}});}var newMetaDataCopy=this.contentContainers[this.nextSlide].cloneNode(true).setOpacity(0);var newMetaDataEffectScope='slideshoweffect'+(++this.visibleEffectQueueCount);this.visibleMetaDataStack.push({content:newMetaDataCopy,scope:newMetaDataEffectScope});var c_in=new Effect.Opacity(newMetaDataCopy,{duration:this.options.fadeSpeed,from:0,to:1,queue:{position:'end',scope:newMetaDataEffectScope}});this.galleryContainer.appendChild(newMetaDataCopy);}if(this.options.menu=="text"||this.options.menu=="number"){this.menuItems[this.currentSlide].className="";this.menuItems[this.currentSlide].parentNode.className="";this.menuItems[this.nextSlide].className="selected";this.menuItems[this.nextSlide].parentNode.className="selected";}this.currentSlide=this.nextSlide;this.nextSlide++;if(this.nextSlide==this.imageContainers.length){this.nextSlide=0;}if(this.play===true){window.clearTimeout(this.slideIncrement);this.slideIncrement=window.setTimeout(function(){this.xFade();}.bind(this),this.playSpeed);}},showPreviousSlide:function(){window.clearTimeout(this.slideIncrement);this.play=false;if(this.options.controls===true){this.playPauseButton.update("Play");}this.nextSlide=(this.currentSlide)-1;if(this.nextSlide<0){this.nextSlide=(this.imageContainers.length)-1;}this.xFade();},showNextSlide:function(){window.clearTimeout(this.slideIncrement);this.play=false;if(this.options.controls===true){this.playPauseButton.update("Play");}this.nextSlide=(this.currentSlide)+1;if(this.nextSlide>=this.imageContainers.length){this.nextSlide=0;}this.xFade();},playPause:function(){if(this.play===true){window.clearTimeout(this.slideIncrement);this.play=false;if(this.options.controls===true){this.playPauseButton.update("Play");}}else{window.clearTimeout(this.slideIncrement);this.play=true;if(this.options.controls===true){this.playPauseButton.update("Pause");}this.xFade();}}};
