var pFrame; //will hold reference to the instance of photoFramer

function photoFramer(aLinks){
     this.totalImageCount = aLinks.length;
     this.displayPerPage = 8;
     this.setCount = Math.ceil(this.totalImageCount/this.displayPerPage);
     this.aImageLinks = aLinks;   
     this.reSetNumber = /(&|\?)(setnumber=)([\d]{1,})/;
     this.currentSetNumber = this.reSetNumber.test(location.search) ? parseInt(RegExp.$3) : 1; 
     this.divImgElementLinkSet = document.getElementById("imgSetContainer").getElementsByTagName("A");
     this.aPreloadedImages = new Array(this.displayPerPage);
     this.imgForMovies = new Image();
     this.imgForMovies.src = "/common/graphics/icons/film.ico";
     
     if(typeof photoFramer._initialized =="undefined")
     {
		photoFramer.prototype.movieFileExtensions = "mpg|mpeg|avi|wmv|";
        photoFramer.prototype.showPreloadedSet = function(){
			var currentImage, currentFile;
			for(var i=0;i<this.displayPerPage;i+=1)
			{	
				currentFile = this.aPreloadedImages[i];
				currentImage = this.divImgElementLinkSet[i].getElementsByTagName("IMG")[0];     
				if(currentFile)	
				{
					this.divImgElementLinkSet[i].setAttribute("href",currentFile);   
					if(this.isMovie(currentFile))
					{
						this.divImgElementLinkSet[i].setAttribute("target","blank");        
						currentImage.src = this.imgForMovies.src;
						currentImage.className = "movieImg";						
					}				
					else
					{
						this.divImgElementLinkSet[i].setAttribute("target","");        
						currentImage.src = currentFile;
					}	
					this.makeVisible(this.divImgElementLinkSet[i]);
					currentImage.setAttribute("alt",currentFile);
				}
				else
				{
					currentImage.src = "";
					this.divImgElementLinkSet[i].setAttribute("href","");        
					this.makeInvisible(this.divImgElementLinkSet[i]);
				}
			}
			
        };
     
        photoFramer.prototype.preloadSetNumber = function(setNumberToPreLoad){
			var startnum, lastnum,j;
			this.aPreloadedImages = new Array(this.displayPerPage);
			var currentFileName;
			j=0;
			if(setNumberToPreLoad > 0 && setNumberToPreLoad <= this.setCount)
			{
				var startnum = setNumberToPreLoad == 1 ? 0 : ((setNumberToPreLoad - 1) * this.displayPerPage);
				var lastnum = setNumberToPreLoad == 1 ? this.displayPerPage - 1 : (((setNumberToPreLoad - 1) * this.displayPerPage) + (this.displayPerPage - 1));
 				//alert("there are " + this.divImgElementLinkSet.length + " links. Looking at " + startnum + " through " + lastnum);
				for(var i=startnum;i<=lastnum;i+=1)
				{
					if(this.aImageLinks[i])
					{
						currentFileName = this.aImageLinks[i].getAttribute("href");
						if(currentFileName && currentFileName.length > 1)
						{
 							this.aPreloadedImages[j] = currentFileName;
						}
 						j+=1;						
					} 					
				}
			}
			else
			{
				alert("set out of range");
			}        
        };
        photoFramer.prototype.makeVisible = function(obj){
			obj.style.display = "inline";
        };
		photoFramer.prototype.makeInvisible = function(obj){
			obj.style.display = "none";
        };        
        photoFramer.prototype.isMovie = function(fileName){
			var fileExtension = fileName.split(".").reverse()[0].toLowerCase() + "|";
			return photoFramer.prototype.movieFileExtensions.indexOf(fileExtension) > -1			
		};
        
        //Switch the active picture-set to first n pictures in directory 
        photoFramer.prototype.showFirst = function(){
			if(this.setCount > 0)
			{
				this.currentSetNumber = 1;
				this.preloadSetNumber(this.currentSetNumber);
				this.showPreloadedSet();
			}
        };
        photoFramer.prototype.showInit = function(){
			if(this.setCount > 0)
			{
				this.preloadSetNumber(this.currentSetNumber);
				this.showPreloadedSet();
			}
        };
        //Switch the active picture-set to the next n pictures in directory
        photoFramer.prototype.showNext = function(){
			var existingSearch = location.search;
			if(this.currentSetNumber < this.setCount)
			{
				this.currentSetNumber +=1;
				var cs = parseInt(this.currentSetNumber);
				location.search = this.reSetNumber.test(existingSearch) ? existingSearch.replace(this.reSetNumber,RegExp.$1+RegExp.$2+cs) : existingSearch + "&setnumber=" +  this.currentSetNumber;
			}
			else
			alert("No more to show");
        };
        //Switch the active picture-set to the previous n pictures in directory
         photoFramer.prototype.showPrev = function(){
			var existingSearch = location.search;
			if(this.currentSetNumber > 1)
			{
				this.currentSetNumber -=1;
				var cs = parseInt(this.currentSetNumber);
				location.search = this.reSetNumber.test(existingSearch) ? existingSearch.replace(this.reSetNumber,RegExp.$1+RegExp.$2+cs) : existingSearch + "&setnumber=" +  this.currentSetNumber;
			}
			else
			alert("No more to show");
        };
          
		photoFramer._initialized = true;
     }
     

}



function displayEachPhoto(){
	//within the set of 
	var aImageLinks = document.getElementById("BrowsingPhotoGallery1_divGallery").getElementsByTagName("A");
	pFrame = new photoFramer(aImageLinks);
	pFrame.showInit();
	var nextButton = document.getElementById("scrollRight");
	EventUtil.addEventHandler(nextButton, "click", clickNext);
	var prevButton = document.getElementById("scrollLeft");
	EventUtil.addEventHandler(prevButton, "click", clickPrev);
	
	var currentImg;
	var displayPanels = document.getElementById("imgSetContainer").getElementsByTagName("A");
	for(var i=0,l=displayPanels.length;i<l;i+=1)
	{
		currentImg = displayPanels[i].getElementsByTagName("IMG")[0];
		EventUtil.addEventHandler(currentImg, "mouseover", highlightMe);	
		EventUtil.addEventHandler(currentImg, "mouseout", unHighlightMe);	
	}
	
}
//moves to the 
var clickNext = function(){
	pFrame.showNext();
};
var clickPrev = function(){
	pFrame.showPrev();
};
	
var highlightMe = function(){
	var oEvent = EventUtil.getEvent();
	var objImg = oEvent.target;
	objImg.style.border = "solid 3px blue";
};
	
var unHighlightMe = function(){
	var oEvent = EventUtil.getEvent();
	var objImg = oEvent.target;
	objImg.style.border = "solid 1px blue";
};
	
	

	