
Gallery=function(config){this.browser=new Browser();this.config=config;this.index=0;if(this.config.initial==null){this.config.initial=Gallery.TYPE_IMAGE;}
this.setMediaType(this.config.initial);this.setShowingAlt(false);this.setupImages();this.setupFX();}
Gallery.FX_NONE=0;Gallery.FX_PAN=1;Gallery.FX_FADE=2;Gallery.TYPE_IMAGE=0;Gallery.TYPE_MOVIE=1;Gallery.prototype.setupImages=function(){if(this.hasImages()){if(this.config.menuBackdrop!=""){var image=new Image();image.src=this.config.menuBackdrop;}
for(var i=0;i<this.config.images.length;i++){if(this.config.images[i].thumb!=null){var image=new Image();image.src=this.config.images[i].thumb;this.config.images[i].thumbImage=image;}
if(this.config.images[i].full!=null){var image=new Image();image.src=this.config.images[i].full;this.config.images[i].fullImage=image;}}}}
Gallery.prototype.setupFX=function(){if(this.config.fade!=null){this.fader=new CrossFade(this.config.fade.speed,this.config.fade.increment);}
if(this.config.swoosh!=null){this.swoosher=new Swoosh(this.config.viewer.elementId,this.config.swoosh.speed,this.config.swoosh.increment);}}
Gallery.prototype.next=function(){if(this.isShowingImage()){this._showImage(this.index+1,Gallery.FX_PAN);}else{this._showMovie(this.index+1,Gallery.FX_NONE);}}
Gallery.prototype.previous=function(){if(this.isShowingImage()){this._showImage(this.index-1,Gallery.FX_PAN);}else{this._showMovie(this.index-1,Gallery.FX_NONE);}}
Gallery.prototype.image=function(idx){if(!this.isShowingImage()){this.swapMedia();}
this._showImage(idx,Gallery.FX_FADE);}
Gallery.prototype.movie=function(idx){if(!this.isShowingMovie()){this.swapMedia();}
this._showMovie(idx,Gallery.FX_NONE);}
Gallery.prototype.hasImages=function(){return this.config.images!=null&&this.config.images.length>0;}
Gallery.prototype.hasMovies=function(){return this.config.movies!=null&&this.config.movies.length>0;}
Gallery.prototype.isShowingImage=function(){return(this.mediaType==Gallery.TYPE_IMAGE);}
Gallery.prototype.isShowingMovie=function(){return(this.mediaType==Gallery.TYPE_MOVIE);}
Gallery.prototype.setMediaType=function(type){this.mediaType=type;}
Gallery.prototype.swapMedia=function(){this.stopAnimations();var movie=this.getMovieElement();var image=this.getActiveImage();if(this.isShowingImage()){image.style.visibility="hidden";movie.innerHTML="";movie.style.visibility="visible";this.changeThumbImageState(Gallery.TYPE_IMAGE,this.index,-1);this.setMediaType(Gallery.TYPE_MOVIE);}else{image.style.visibility="visible";movie.innerHTML="";movie.style.visibility="hidden";this.changeThumbImageState(Gallery.TYPE_MOVIE,this.index,-1);this.setMediaType(Gallery.TYPE_IMAGE);}
this.index=-1;}
Gallery.prototype._showImage=function(idx,fx){if(idx==this.index){return;}
if(!this.hasImages()){return;}
var oldIndex=this.index;var panRight=(idx>=oldIndex);if(idx>=this.config.images.length){idx=0;}else if(idx<0){idx=this.config.images.length-1;}
this.changeThumbImageState(Gallery.TYPE_IMAGE,this.index,idx);this.stopAnimations();if(fx==Gallery.FX_FADE){if(this.fader){this.fadeImage(this.config.images[idx].fullImage.src);}else{this.getActiveImage().src=this.config.images[idx].fullImage.src;}}else if(fx==Gallery.FX_PAN){if(this.swoosher){this.panImage(panRight,this.config.images[idx].fullImage.src);}else{this.getActiveImage().src=this.config.images[idx].fullImage.src;}}
this.index=idx;}
Gallery.prototype.getActiveImage=function(){if(this.isShowingAlt()){return this.getAltFullImage();}else{return this.getFullImage();}}
Gallery.prototype.stopAnimations=function(){if(this.fader!=null){this.fader.stopAnimation();}
if(this.swoosher!=null){this.swoosher.stopAnimation();}}
Gallery.prototype.isShowingAlt=function(){return this.showingAlt;}
Gallery.prototype.setShowingAlt=function(val){return this.showingAlt=val;}
Gallery.prototype.fadeImage=function(newUrl){var showAlt=!this.isShowingAlt();this.setShowingAlt(showAlt);var fromImage=null;var toImage=null;if(showAlt){fromImage=this.getFullImage();toImage=this.getAltFullImage();}else{fromImage=this.getAltFullImage();toImage=this.getFullImage();}
toImage.src=newUrl;this.fader.fade(fromImage,toImage);}
Gallery.prototype.panImage=function(right,newUrl){var showAlt=!this.isShowingAlt();this.setShowingAlt(showAlt);var fromImage=null;var toImage=null;if(showAlt){fromImage=this.getFullImage();toImage=this.getAltFullImage();}else{fromImage=this.getAltFullImage();toImage=this.getFullImage();}
toImage.src=newUrl;this.swoosher.pan(right,fromImage,toImage);}
Gallery.prototype.changeThumbImageState=function(type,prevIndex,nextIndex){var prevImg=this.getThumbAnchor(type,prevIndex);var nextImg=this.getThumbAnchor(type,nextIndex);if(prevImg!=null){prevImg.className=this.config.image.thumb.cssClass;}
if(nextImg){nextImg.className=this.config.image.thumb.cssActiveClass;}}
Gallery.prototype.getFullImage=function(){return document.getElementById(this.config.image.full.elementId);}
Gallery.prototype.getAltFullImage=function(){var altImageName=this.config.image.full.elementId+"Alt";var altImage=document.getElementById(altImageName);if(altImage==null){var image=this.getFullImage();altImage=image.cloneNode(false);altImage.id=altImageName;var viewer=this.getViewer();viewer.appendChild(altImage);}
return altImage;}
Gallery.prototype.getViewer=function(){return document.getElementById(this.config.viewer.elementId);}
Gallery.prototype.getThumbAnchorId=function(type,index){var id=null;if(type==Gallery.TYPE_IMAGE){id=this.config.image.thumb.elementId+index;}else{id=this.config.movie.thumb.elementId+index;}
return id;}
Gallery.prototype.getThumbAnchor=function(type,index){return document.getElementById(this.getThumbAnchorId(type,index));}
Gallery.prototype.getThumbImage=function(type,index){var image=null;if(type==Gallery.TYPE_IMAGE){image=this.config.images[index].thumbImage;}else{image=this.config.movies[index].thumbImage;}
return image;}
Gallery.prototype.outputImageThumbs=function(){if(this.hasImages()){var parent=null;parent=document.getElementById(this.config.image.thumb.elementId);for(var i=0;i<this.config.images.length;i++){var wrapper=new ClickWrapper(this,i,Gallery.TYPE_IMAGE);this.createThumb(parent,this.getThumbAnchorId(Gallery.TYPE_IMAGE,i),this.config.images[i].thumbImage.src,false,this.config.image.thumb,wrapper);}
if(this.isShowingImage()){this.index=-1;this._showImage(0,Gallery.FX_NONE);}}}
Gallery.prototype.outputMovieThumbs=function(){if(this.hasMovies()){var parent=null;parent=document.getElementById(this.config.movie.thumb.elementId);for(var i=0;i<this.config.movies.length;i++){var wrapper=new ClickWrapper(this,i,Gallery.TYPE_MOVIE);this.createThumb(parent,this.getThumbAnchorId(Gallery.TYPE_MOVIE,i),this.config.movies[i].thumbImage.src,false,this.config.movie.thumb,wrapper);}
if(this.isShowingMovie()){this.index=-1;this._showMovie(0,Gallery.FX_NONE);}}}
Gallery.prototype.createThumb=function(parent,id,src,isActive,definition,clickWrapper){var anchor=this.createAnchorNode(id,isActive,definition.cssActiveClass,definition.cssClass);anchor.onclick=function(){clickWrapper.onClick()};var image=this.createImageNode(src,definition.width,definition.height);anchor.appendChild(image);parent.appendChild(anchor);}
Gallery.prototype.createImageNode=function(src,width,height){var image=document.createElement("img");image.style.height=height+"px";image.style.width=width+"px";image.src=src;return image;}
Gallery.prototype.createAnchorNode=function(id,isActive,activeClass,inactiveClass){var anchor=document.createElement("a");anchor.id=id;if(isActive){if(activeClass!=null){anchor.className=activeClass;}}else{if(inactiveClass!=null){anchor.className=inactiveClass;}}
return anchor;}
Gallery.setOpacity=function(image,val){image.style.KHTMLOpacity=val;image.style.MozOpacity=val;image.style.opacity=val;image.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+Math.round(val*100)+")";}
Gallery.isDefined=function(obj,name){var p=name.split(".");for(var i=0;i<p.length;i++){if(!(obj[p[i]]))return false;obj=obj[p[i]];}
return true;}
Gallery.findIdName=function(args){for(var ndx=0;ndx<args.length;ndx+=2){attrName=args[ndx].toLowerCase();attrValue=args[ndx+1];if("name"==attrName||"id"==attrName){gTagAttrs["name"]=attrValue;return attrValue;}}
return null;}
Gallery.removeChildren=function(node){var count=node.childNodes.length;while(node.hasChildNodes()){node.removeChild(node.firstChild);}
return count;}
ClickWrapper=function(gallery,index,type){this.gallery=gallery;this.index=index;this.type=type;}
ClickWrapper.prototype.onClick=function(){if(this.type==Gallery.TYPE_IMAGE){this.gallery.image(this.index);}else{this.gallery.movie(this.index);}}
CrossFade=function(fadeSpeed,fadeIncrement){if(fadeSpeed==null){fadeSpeed=CrossFade.DEFAULT_SPEED;}
if(fadeIncrement==null){fadeIncrement=CrossFade.DEFAULT_INCREMENT;}
this.fadeSpeed=fadeSpeed;this.fadeInc=fadeIncrement;this.fadeStep=0.0;}
CrossFade.DEFAULT_SPEED=8;CrossFade.DEFAULT_INCREMENT=0.05;CrossFade.prototype.fade=function(fromImage,toImage){this.fadeStep=0.0;toImage.style.visibility="visible";toImage.style.top="0px";toImage.style.left="0px";Gallery.setOpacity(toImage,0.0);fromImage.style.visibility="visible";fromImage.style.top="0px";fromImage.style.left="0px";Gallery.setOpacity(fromImage,1.0);this._fade(fromImage,toImage);}
CrossFade.prototype._fade=function(oldImg,newImg){if(this.timer){clearTimeout(this.timer);}
this.fadeStep=this._round(this.fadeStep+this.fadeInc);if(this.fadeStep<1.0){var fadeInOpac=this.fadeStep;Gallery.setOpacity(newImg,fadeInOpac);var fadeOutOpac=this._round(1.0-this.fadeStep);Gallery.setOpacity(oldImg,fadeOutOpac);var self=this;this.timer=setTimeout(function(){self._fade(oldImg,newImg)},this.fadeSpeed);}else{this._finishFade(oldImg,newImg);}}
CrossFade.prototype._finishFade=function(oldImg,newImg){if(this.timer){clearTimeout(this.timer);}
oldImg.style.visibility="hidden";Gallery.setOpacity(newImg,1.0);}
CrossFade.prototype._round=function(val){return Math.round(val*1000)/1000}
CrossFade.prototype.stopAnimation=function(){if(this.timer){clearTimeout(this.timer);}}
Swoosh=function(viewerId,panSpeed,panIncrement){this.viewerId=viewerId;if(panSpeed==null){panSpeed=Swoosh.DEFAULT_PAN_SPEED;}
if(panIncrement==null){panIncrement=Swoosh.DEFAULT_PAN_INCREMENT;}
this.panSpeed=panSpeed;this.panIncrement=panIncrement;}
Swoosh.DEFAULT_PAN_SPEED=20;Swoosh.DEFAULT_PAN_INCREMENT=40;Swoosh.prototype.getViewer=function(){return document.getElementById(this.viewerId);}
Swoosh.prototype.pan=function(right,oldImage,newImage){var viewWidth=parseInt(this.getViewWidth());oldImage.style.visibility="visible";oldImage.style.top="0px";oldImage.style.left="0px";Gallery.setOpacity(oldImage,1.0);newImage.style.visibility="visible";newImage.style.top="0px";newImage.style.left=(right?viewWidth:-viewWidth)+"px";Gallery.setOpacity(newImage,1.0);this._pan(Math.PI,viewWidth,right,oldImage,newImage);}
Swoosh.prototype.getViewWidth=function(){return this.getViewer().style.width;}
Swoosh.prototype._pan=function(radians,width,right,oldImage,newImage){if(this.timer){clearTimeout(this.timer);}
radians+=Math.PI/this.panIncrement;if(radians<(2*Math.PI)){var x=Math.floor((width/2)*(1.0+Math.cos(radians)));if(right){x=-x;}
oldImage.style.left=x+"px";newImage.style.left=(x+(right?width:-width))+"px";var self=this;this.timer=setTimeout(function(){self._pan(radians,width,right,oldImage,newImage)},this.panSpeed);}else{this._finishPan(oldImage,newImage);}}
Swoosh.prototype._finishPan=function(oldImage,newImage){if(this.timer){clearTimeout(this.timer);}
oldImage.style.visibility="hidden";}
Swoosh.prototype.stopAnimation=function(){if(this.timer){clearTimeout(this.timer);}}
Browser=function(){this.OSName=Browser.UNKNOWN;this.bName=Browser.UNKNOWN;if(navigator.appVersion.indexOf(Browser.MAC)>0){this.OSname=Browser.MAC;}else if(navigator.appVersion.indexOf(Browser.WIN)>0){this.OSname=Browser.WIN;}
if(navigator.appName!=null){if(navigator.appName.length>=7&&navigator.appName.substring(0,8)==Browser.NETSCAPE){this.bName=Browser.NETSCAPE;}else if(navigator.appName.length>=8&&navigator.appName.substring(0,9)==Browser.MICROSOFT){this.bName=Browser.IE;}}}
Browser.MAC="Mac";Browser.WIN="Win";Browser.UKNOWN="unknown";Browser.NETSCAPE="Netscape";Browser.MICROSOFT="Microsoft";Browser.IE="IE";Browser.QUICKTIME="QuickTime";Browser.prototype.isMac=function(){return(Browser.MAC==this.OSName);}
Browser.prototype.isIE=function(){return(Browser.IE==this.bName);}
Browser.prototype.hasQuickTime=function(){var hasQT=false;vbHasQT=false;if(navigator.plugins!=null&&navigator.plugins.length){for(i=0;i<navigator.plugins.length;i++){if(navigator.plugins[i].name.indexOf(Browser.QUICKTIME)>=0){hasQT=true;}}}else{execScript('on error resume next: vbHasQT = IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1"))','VBScript');hasQT=vbHasQT;}
return hasQT;}
Gallery.prototype.displayMenu=function(){document.getElementById('gallery-backdrop').src=this.config.menuBackdrop;prevArrow=this.config.navigation['previousElementId'];nextArrow=this.config.navigation['nextElementId'];if(document.getElementById(prevArrow).style.display!="none"){new Effect.Fade(prevArrow);new Effect.Fade(nextArrow);}
new Effect.Fade('gallery-button');new Effect.Appear("random_photo_menu");}
Gallery.prototype.hideMenu=function(){prevArrow=this.config.navigation['previousElementId'];nextArrow=this.config.navigation['nextElementId'];if(this.config.showArrows==true){new Effect.Appear(prevArrow);new Effect.Appear(nextArrow);}
new Effect.Appear("gallery-button");new Effect.Fade('random_photo_menu');}
Gallery.prototype.loadGallerySet=function(gset_id){switch(gset_id){case 1:this.config.images=new Array();this.config.images[0]={full:"http://images.dr-k12.org/random_photos/spotlight/01_alumni_williams.jpg"};break;case 2:this.config.images=new Array();this.config.images[0]={full:"http://images.dr-k12.org/random_photos/02.jpg"};this.config.images[1]={full:"http://images.dr-k12.org/random_photos/03.jpg"};this.config.images[2]={full:"http://images.dr-k12.org/random_photos/05.jpg"};this.config.images[3]={full:"http://images.dr-k12.org/random_photos/06.jpg"};}
this.index=-1;this.setupImages();this.setupFX();this.next();this.config.showArrows=true;this.hideMenu();}
