﻿
var fadebgcolor="white";
var fadearray=new Array(); //array to cache fadeshow instances

function fadeshow(theimages, fadewidth, fadeheight, borderwidth, delay, pause, prefix_i, container_i, displayorder)
{
	this.prefix = prefix_i;
	this.pausecheck=pause;
	this.mouseovercheck=0;
	this.delay=delay;
	this.currentindex=0;
	
	fadearray[fadearray.length]=this;
	this.slideshowid=fadearray.length-1;
	this.canvasbase="canvas"+this.slideshowid;
	this.curcanvas=this.canvasbase+"_0";
	if (typeof displayorder!="undefined")
	{
		theimages.sort(function() {return 0.5 - Math.random();});
	}
	this.theimages=theimages;
	this.imageborder=parseInt(borderwidth);
	this.postimages=new Array(); //preload images
	this.postcaptions=new Array(); //preload captions
	
	for (p=0;p<theimages.length;p++)
	{
		this.postimages[p]=new Image();
		this.postimages[p].src=theimages[p][0];
		this.postcaptions[p]=theimages[p][3];
	}
	var fadewidth=fadewidth+this.imageborder*2;
	var fadeheight=fadeheight+this.imageborder*2;
	this.slideshowW=fadewidth;
	this.slideshowH=fadeheight;
	//alert('width: ' + slideshowImgW + '   height: ' + slideshowImgH);
	if(container_i != null)
	{
		$('#'+container_i).html("<div id=\"master"+this.slideshowid+"\" style=\"position:relative;width:"+fadewidth+"px;height:"+fadeheight+"px;overflow:auto;\" class=\""+this.prefix+"slideMasterContainer\"><div id=\""+this.canvasbase+"_0\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;background-color:"+fadebgcolor+"\"></div><div id=\""+this.canvasbase+"_1\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;background-color:"+fadebgcolor+"\"></div></div>");
	}
	else
	{
		document.write("<div id=\"master"+this.slideshowid+"\" style=\"position:relative;width:"+fadewidth+"px;height:"+fadeheight+"px;overflow:auto;\" class=\""+this.prefix+"slideMasterContainer\"><div id=\""+this.canvasbase+"_0\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity=100);opacity:1.0;-moz-opacity:1.0;-khtml-opacity:1.0;background-color:"+fadebgcolor+"\"></div><div id=\""+this.canvasbase+"_1\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity=0);opacity:0.0;-moz-opacity:0.0;-khtml-opacity:0.0;background-color:"+fadebgcolor+"\"></div></div>");
		//alert("<div id=\"master"+this.slideshowid+"\" style=\"position:relative;width:"+fadewidth+"px;height:"+fadeheight+"px;overflow:auto;\" class=\""+prefix+"slideMasterContainer\"><div id=\""+this.canvasbase+"_0\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity=10);opacity:0.1;-moz-opacity:0.1;-khtml-opacity:0.1;background-color:"+fadebgcolor+"\"></div><div id=\""+this.canvasbase+"_1\" style=\"position:absolute;width:"+fadewidth+"px;height:"+fadeheight+"px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity=10);opacity:0.1;-moz-opacity:0.1;-khtml-opacity:0.1;background-color:"+fadebgcolor+"\"></div></div>");
	}
		
	this.startit();
}


fadeshow.prototype.populateslide=function(picobj, index)
{
	var captionHTML="";
	if (this.postcaptions[index] != null) 
	{ 
		captionHTML = "<div id=\"" + this.prefix + "Captions\" class=\"" + this.prefix + "slidecaption\">" 
			+ this.postcaptions[index].replace("&apos;", "'")
			+ "</div>";
	}
	captionHTML = captionHTML + captionHTML.replace(this.prefix + "slidecaption", this.prefix + "capshadowright").replace(this.prefix + "Captions",this.prefix + "CapShadowRight")
		+ captionHTML.replace(this.prefix + "slidecaption",this.prefix + "capshadowleft").replace(this.prefix + "Captions",this.prefix + "CapShadowLeft");
		
	var slideHTML="";
	if (this.theimages[index] != null) {
		//if associated link exists for image
		if (this.theimages[index][1]!="") slideHTML="<a href=\""+this.theimages[index][1]+"\" target=\""+this.theimages[index][2]+"\">";
		slideHTML+="<img src=\""+this.postimages[index].src+"\" border=\""+this.imageborder+"px\" width=\""+this.slideshowW+"\" height=\""+this.slideshowH+"\" class=\""+this.prefix+"slideImgContainer\" />";
		 //if associated link exists for image
		if (this.theimages[index][1]!="")	slideHTML+="</a>";
	}
	
	picobj.html(captionHTML+slideHTML);
	//alert('index: ' + index + ' ' + captionHTML+slideHTML);
}

fadeshow.prototype.rotateimage=function(){
	//if pause onMouseover enabled, cache object
	if (this.pausecheck==1) var cacheobj=this;
	if (this.mouseovercheck==1)	setTimeout(function(){cacheobj.rotateimage()}, 100);
	else
	{
		var nextcanvas = (this.curcanvas==this.canvasbase+"_0") ? this.canvasbase+"_1" : this.canvasbase+"_0";
		var nextindex = (this.currentindex+1<this.postimages.length) ? this.currentindex+1 : 0;

		this.populateslide($('#'+nextcanvas), nextindex);
		$('#'+this.curcanvas).css('z-index', -2);
		$('#'+this.curcanvas).fadeTo(1500, 0.0);
		$('#'+this.curcanvas).css('z-index', -3);
		$('#'+nextcanvas).css('z-index', -3);
		$('#'+nextcanvas).fadeTo(1500, 1.0);
		$('#'+nextcanvas).css('z-index', -2);
		
		if (this.postimages.length > 1)
			setTimeout("fadearray["+this.slideshowid+"].rotateimage()", this.delay);
	
		this.curcanvas=nextcanvas;
	}
	
	this.currentindex = (this.currentindex<this.postimages.length-1)? this.currentindex+1 : 0;
}

fadeshow.prototype.startit=function() {
	var startZ = parseInt($('div.'+this.prefix+'slideMasterContainer').css('z-index'));
	$('#'+this.curcanvas).css('z-index', startZ);
	this.populateslide($('#'+this.curcanvas), this.currentindex);
	//setTimeout("$('#'+this.curcanvas).fadeTo('slow', .99)", 1500);
	//setTimeout("$('#'+this.curcanvas).css('z-index', -2)", 1500);
	
	// if slideshow should pause on mouseover
	if (this.pausecheck==0){ 
		var cacheobj=this;
		$('#master'+this.slideshowid).mouseover(function(){cacheobj.mouseovercheck=1});
		$('#master'+this.slideshowid).mouseout(function(){cacheobj.mouseovercheck=0});
	}
	
	//this.rotateimage();
	if (this.postimages.length > 1)
		setTimeout("fadearray["+this.slideshowid+"].rotateimage()", this.delay);
}
