	var imgFader = {};
	
	imgFader.so_imgs = new Array();
	imgFader.imgs = new Array();
	
	imgFader.basePath = "images/rotate/";
	imgFader.imagesLoaded = 0;
	imgFader.imgsLoaded = new Array();
	imgFader.imageContID = "imageRotator";
	
	imgFader.sPer = 0;
	imgFader.ePer = 99;
	imgFader.duration = 2000;
	imgFader.loopRate = 4000;
	imgFader.rRate = 10;
	
	imgFader.sTime = 0;
	imgFader.eTime = 0;
	imgFader.fTimer = 0;
	imgFader.current = -1;
	imgFader.nIndex = 0;
	
	imgFader.init = function(){
		if(!document.getElementById) return false;
		
		// Display Loading Screen
		imgFader.showLoadingMessage();
	
		for(var i=0; i <= imgFader.imgs.length-1; i++){
			imgFader.preloadImage(imgFader.imgs[i]);
		}
	}
	
	imgFader.showLoadingMessage = function(){
		if(!document.getElementById) return false;
		
		var oP = document.createElement("P");
		var txt = document.createTextNode("Images loading...");
		oP.appendChild(txt);
		
		var obj = document.getElementById(imgFader.imageContID);
		
		if(obj){
			obj.appendChild(oP);
			obj.style.backgroundImage = "none";
		}
	}
	
	imgFader.hideLoadingMessage = function(){
		var obj = document.getElementById(imgFader.imageContID);
		var oP = obj.getElementsByTagName("P");
		
			if(oP[0]){
				oP[0].style.display = "none";
				oP[0].style.visibility = "hidden";
			}
	}
	
	imgFader.preloadImage = function(filename){
		var img = new Image();
		img.onload = function(){
			imgFader.imageLoaded(filename);
		}
		
		img.onerror = function(){
			imgFader.imagesLoaded++
		}
		
		img.src = imgFader.basePath + filename;
	}
	
	imgFader.imageLoaded = function(filename){
		if(!document.getElementById) return false; 
		
		var oP = document.getElementsByTagName("P");
		imgFader.imagesLoaded++ 
		
		imgFader.imgsLoaded[imgFader.imgsLoaded.length] = filename
		
			if(oP[0] && imgFader.imagesLoaded == imgFader.imgs.length){
				oP[0].style.display = "none";
				
				// Now start the fading process
				// If there are more than 1 images loaded
				if(imgFader.imgsLoaded.length > 1){
					imgFader.createImages();
					imgFader.faderInit();
				}
			}
	}
	
	imgFader.createImages = function(){
		if(!document.getElementById) return false;
		
		for(var i=0; i <= imgFader.imgsLoaded.length-1; i++){
			var el = document.createElement("IMG");
			el.setAttribute("src", imgFader.basePath + imgFader.imgsLoaded[i]);
			
			el.xOpacity = 0;
			el.style.display = "block";
			
			imgFader.setOpacity(el)
			document.getElementById(imgFader.imageContID).appendChild(el);
		}
		

	}
	
	imgFader.setOpacity = function(obj) {
		if(!obj) return false;
		
		if(obj.xOpacity>.99) {
			obj.xOpacity = .99;
			return;
		}
		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
		// obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity" + obj.xOpacity*100 + ")";
	}


	imgFader.faderInit = function() {
		if(!document.getElementById) return false;
	
		imgFader.so_imgs = document.getElementById(imgFader.imageContID).getElementsByTagName("img");
		
			for(i=1; i < imgFader.so_imgs.length; i++){
				imgFader.so_imgs[i].xOpacity = 0;
			}
			
		imgFader.so_imgs[0].style.display = "none";
		imgFader.so_imgs[0].xOpacity = 0;
		imgFader.setOpacity(imgFader.so_imgs[0]);
		
		imgFader.so_imgs[0].style.display = "block";

		imgFader.hideLoadingMessage();
		imgFader.prepNext();
	}


	imgFader.prepNext = function(){
		imgFader.sTime = 0;
		imgFader.eTime = 0;
		
		imgFader.update();
	}
	
	imgFader.update = function(){
		var d = new Date();
		
			if(imgFader.sTime == 0){
				imgFader.sTime = d.getTime();
				imgFader.eTime = imgFader.sTime + imgFader.duration;
				fRun = true;
			}
		
		var cTime = d.getTime();

		var elapsed = cTime - imgFader.sTime;
		var mPer = imgFader.ePer - imgFader.sPer; // e.g. 30
		var nVal = Math.round((elapsed / imgFader.duration) * 100);
		
		if(cTime <= imgFader.eTime){

			if(nVal >= imgFader.sPer){
				if(nVal > imgFader.ePer){
					nVal = imgFader.ePer;
				}
				
				if(imgFader.current > -1){
					cOpacity = imgFader.so_imgs[imgFader.current].xOpacity;
					imgFader.nIndex = imgFader.so_imgs[imgFader.current + 1]? imgFader.current + 1 : 0;
				
					nOpacity = imgFader.so_imgs[imgFader.nIndex].xOpacity;
					
					cOpacity = imgFader.ePer - nVal; 
					nOpacity = nVal;
					
					imgFader.so_imgs[imgFader.nIndex].style.display = "block";
					imgFader.so_imgs[imgFader.current].xOpacity = cOpacity / 100;
					imgFader.so_imgs[imgFader.nIndex].xOpacity = nOpacity / 100;
					
					imgFader.setOpacity(imgFader.so_imgs[imgFader.current]); 
					imgFader.setOpacity(imgFader.so_imgs[imgFader.nIndex]);
				} else {
					imgFader.so_imgs[0].xOpacity = nVal / 100;
					imgFader.setOpacity(imgFader.so_imgs[0]); 
				}
			}
			
			var handler = imgFader.update;
			fTimer = setTimeout(handler, imgFader.rRate);
		} else {
			// Current time is greater than or equal to end time
			
			if(nVal != imgFader.ePer){
				nVal = imgFader.ePer;
			}
			
			if(imgFader.current > -1){
				imgFader.so_imgs[imgFader.current].xOpacity = 0
				imgFader.so_imgs[imgFader.nIndex].xOpacity = .99
				
				imgFader.setOpacity(imgFader.so_imgs[imgFader.current]); 
				imgFader.setOpacity(imgFader.so_imgs[imgFader.nIndex]);
				
				imgFader.current = imgFader.nIndex;
			} else {
				imgFader.so_imgs[0].xOpacity = .99;
				imgFader.setOpacity(imgFader.so_imgs[0]); 
				imgFader.current = 0;
			}
			
			var handler = imgFader.prepNext;
			setTimeout(handler, imgFader.loopRate);
		}
	}