var SlideShow = new function() {
	this.bShowIsPlaying = null;

	this.nCurrImg = null;
	this.nFirstImg = null;
	this.nLastImg = null;
	this.nNextImg = null;
	this.nPrevImg = null;
	this.nTimerId = null;

	this.oImageLayer = null;
	this.oImageWrap = null;
	this.oNextBtn = null;
	this.oPlayBtn = null;
	this.oPrevBtn = null;
	this.oToolTip = null;

	this.Init = function() {
		var self = SlideShow;
		self.nCurrImg = 0;
		self.nFirstImg = 0;
		self.nLastImg = IMAGES.length - 1;
		self.oImageWrap = document.getElementById('wrapImage');
		self.oNextBtn = document.getElementById('nextButton');
		self.oPlayBtn = document.getElementById('playButton');
		self.oPrevBtn = document.getElementById('prevButton');
		self.oToolTip = document.getElementById('toolTip');
		self.ToolTip();
		self.LoadImages();
	};
	this.AddButton = function(obj, e_click, e_over, e_out) {
		var self = SlideShow;
		var oBtn = obj;
		if(e_click) oBtn.onclick = eval(e_click);
		if(e_over) oBtn.onmouseover = eval(e_over);
		if(e_out) oBtn.onmouseout = eval(e_out);
	},
	this.LoadUI = function() {
		var self = SlideShow;
		self.AddButton(self.oNextBtn, self.Next, false, false);
		self.AddButton(self.oPlayBtn, self.Play, false, false);
		self.AddButton(self.oPrevBtn, self.Prev, false, false);
	},
	//		START SLIDE SHOW CONTROL METHODS
	this.ImagePointer = function(imgNum) {
		var self = SlideShow;
		var NumberOfImgs = IMAGES.length;
		self.nCurrImg = imgNum;
		if(NumberOfImgs > 1) {
			if(self.nCurrImg == self.nFirstImg) {
				self.nNextImg = self.nCurrImg+1;
				self.nPrevImg = self.nLastImg;
			} else if(self.nCurrImg == self.nLastImg) {
				self.nNextImg = self.nFirstImg;
				self.nPrevImg = self.nCurrImg-1;
			} else {
				self.nNextImg = self.nCurrImg+1;
				self.nPrevImg = self.nCurrImg-1;					
			}
		} else {
			self.nNextImg = 0;
			self.nPrevImg = 0;
		}
	};
	this.JumpTo = function(imgNum) {
		var self = SlideShow;
		self.ShowImage(imgNum);
		if(self.bShowIsPlaying) self.Pause();
	};
	this.Next = function() {
		var self = SlideShow;
		self.ShowImage(self.nNextImg);
		if(self.bShowIsPlaying) self.Pause();
	};
	this.Pause = function() {
		var self = SlideShow;
		self.bShowIsPlaying = false;
		self.oPlayBtn.setAttribute((document.all) ? 'className' : 'class', 'play'); 
		self.oPlayBtn.href = 'javascript: SlideShow.Play();';
		self.oToolTip.innerHTML = 'Play SlideShow';
		self.StopShow();
	};
	this.Play = function() {
		var self = SlideShow;
		self.bShowIsPlaying = true;
		self.oPlayBtn.setAttribute((document.all) ? 'className' : 'class', 'pause'); 
		self.oPlayBtn.href = 'javascript: SlideShow.Pause();';
		self.oToolTip.innerHTML = 'Pause SlideShow';
		self.ShowImage(self.nNextImg);
		self.StartShow();
	};
	this.Prev = function() {
		var self = SlideShow;
		self.ShowImage(self.nPrevImg);
		if(self.bShowIsPlaying) self.Pause();
	};
	this.ToolTip = function() {
		var self = SlideShow;
		self.oNextBtn.onmouseover = function() { self.oToolTip.innerHTML = 'Next Image'; };
		self.oNextBtn.onmouseout = function() { self.oToolTip.innerHTML = 'Player Controls'; };
		self.oPlayBtn.onmouseover = function() { self.oToolTip.innerHTML = (self.bShowIsPlaying) ? 'Pause SlideShow' : 'Play SlideShow'; };
		self.oPlayBtn.onmouseout = function() { self.oToolTip.innerHTML = 'Player Controls'; };
		self.oPrevBtn.onmouseover = function() { self.oToolTip.innerHTML = 'Previous Image'; };
		self.oPrevBtn.onmouseout = function() { self.oToolTip.innerHTML = 'Player Controls'; };
	};
	//		END SLIDE SHOW CONTROL METHODS 
	//		START IMAGE LOAD AND DISPLAY METHODS 
	this.AlignImage = function(imgNum) {
		var self = SlideShow;
		var oIMG = self.oImageLayer[imgNum].firstChild;
		var oLI = self.oImageLayer[imgNum];
		var nMarginLeft = Math.round(oIMG.width/2);
		var nMarginTop = Math.round(oIMG.height/2);
		var sMargins = String("-" + nMarginTop + "px 0px 0px -" + nMarginLeft + "px");
		oLI.style.height = String(oIMG.height + "px");
		oLI.style.left = "50%";
		oLI.style.margin = sMargins;
		oLI.style.top =  "50%";
		oLI.style.width = String(oIMG.width + "px");
	};
	this.LoadImages = function() {
		var self = SlideShow;
		var nLoaded = 0;
		var oIMG = null;
		var oLI = null;
		var oUL = document.createElement("ul");
		for(var i=0; i<IMAGES.length; i++) {
			oIMG = document.createElement("img");
			oIMG.setAttribute("id", "ssImg" + IMAGES[i].id);
			oIMG.setAttribute("border", 0);
			oIMG.setAttribute("height", IMAGES[i].height);
			oIMG.setAttribute("width", IMAGES[i].width);
			oIMG.setAttribute("src", IMAGES[i].src);
			oLI = document.createElement("li");
			oLI.setAttribute((document.all) ? "className" : "class", "hide");
			oLI.appendChild(oIMG);
			oUL.appendChild(oLI);
			/*self.oImageWrap.appendChild(oUL);
			self.oImageLayer = self.oImageWrap.getElementsByTagName("ul")[0].getElementsByTagName("li");
			alert(self.oImageLayer.length);
			self.ShowImage(0);*/
			//oIMG.onload = eval("nLoaded++");
			nLoaded++;
			if(nLoaded==IMAGES.length) {
				self.oImageWrap.appendChild(oUL);
				self.oImageLayer = self.oImageWrap.getElementsByTagName("ul")[0].getElementsByTagName("li");
				//self.LoadUI();
				self.ShowImage(0);
			}
			/**/
		}
	};
	this.ShowImage = function(imgNum) {
		var self = SlideShow;
		var sClass = null;
		self.ImagePointer(imgNum);
		if(self.bShowIsPlaying == true && imgNum == self.nFirstImg) self.Pause();
		for(var i=0; i<self.oImageLayer.length; i++) {
			sClass = (i == imgNum) ? "show" : "hide";
			self.oImageLayer[i].setAttribute((document.all) ? "className" : "class", sClass);
		}
		self.AlignImage(imgNum);				
	};
	//		END IMAGE DISPLAY METHODS
	//		START TIMER METHODS
	this.StartShow = function() {
		var self = SlideShow;
		self.nTimerId = setInterval("SlideShow.ShowImage(SlideShow.nNextImg)",SHOW_INTERVAL*1000);
	};
	this.StopShow = function() {
		var self = SlideShow;
		clearInterval(self.nTimerId);
	};
	//		END TIMER METHODS
}

if(document.all) {
	window.attachEvent('onload', function() { SlideShow.Init() });
} else {
	window.addEventListener('load', function() { SlideShow.Init() }, false);
	//$(document).ready(function() { SlideShow.Init() });
}
