
/***********************************************
* Ultimate Fade-In Slideshow (v1.51): © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com / for this script and 100s more.
***********************************************/
 
var fadearray=new Array() //array to cache fadeshow instances
var fadeclear=new Array() //array to cache corresponding clearinterval pointers
 
var dom=(document.getElementById) //modern dom browsers
var iebrowser=document.all
 
function fadeshow(theimages, fadewidth, fadeheight, borderwidth, delay, pause, displayorder, preloaderImg){
	this.preloaderImg = preloaderImg
	this.pausecheck=pause
	this.mouseovercheck=0
	this.delay=delay
	this.degree=10 //initial opacity degree (10%)
	this.curimageindex=0
	this.nextimageindex=1
	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();}) //thanks to Mike (aka Mwinter) :)
	this.theimages=theimages
	this.imageborder=parseInt(borderwidth)
	this.postimages=new Array() //preload images
	for (p=0;p<theimages.length;p++){
//		this.postimages[p]=new Image()
		this.postimages[p]=theimages[p][0]
	}
	this.preloadObject = new Array();
	this.preloadObject.push(new ImagePreloader([this.postimages[0]], imgLoaded,0))
	//alert(this.postimages[this.curimageindex])
	var fadewidth=fadewidth+this.imageborder*2
	var fadeheight=fadeheight+this.imageborder*2

	this.fadewidth=fadewidth;
	this.fadeheight=fadeheight;
 
	if (iebrowser&&dom||dom) //if IE5+ or modern browsers (ie: Firefox)
	{
		document.write('<div id="master'+this.slideshowid+'" style="position:relative;width:'+fadewidth+'px;height:'+fadeheight+'px;overflow:hidden;"><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 id="preloadDiv" style="position:absolute; top: 0; width:'+this.fadewidth+'px; height:'+this.fadeheight+'px; background-color: white; text-align: center; filter:progid:DXImageTransform.Microsoft.alpha(opacity=70);opacity:0.7;-moz-opacity:0.7;-khtml-opacity:0.7;"></div></div>')
	} else
		document.write('<div><img name="defaultslide'+this.slideshowid+'" src="'+this.postimages[0]+'"></div>')
	
	this.preloaderDiv=iebrowser? iebrowser["preloadDiv"] : document.getElementById("preloadDiv")
	this.preloaderDiv.innerHTML = '<img src="'+this.preloaderImg+'" style="display: block; margin-top: 0px; margin-left: auto; margin-right: auto;">'
//	if(this.preloaderImg!="")
//		this.showpreloader()

	if (iebrowser&&dom||dom) //if IE5+ or modern browsers such as Firefox
			this.startit()
	else{
		this.curimageindex++
		setInterval("fadearray["+this.slideshowid+"].rotateimage()", this.delay)
	}
}

function fadepic(obj){
	if (obj.degree<100){
		obj.degree+=10
		if (obj.tempobj.filters&&obj.tempobj.filters[0]){
			if (typeof obj.tempobj.filters[0].opacity=="number") //if IE6+
				obj.tempobj.filters[0].opacity=obj.degree
			else //else if IE5.5-
				obj.tempobj.style.filter="alpha(opacity="+obj.degree+")"
		}
		else if (obj.tempobj.style.MozOpacity)
			obj.tempobj.style.MozOpacity=obj.degree/101
		else if (obj.tempobj.style.KhtmlOpacity)
			obj.tempobj.style.KhtmlOpacity=obj.degree/100
		else if (obj.tempobj.style.opacity&&!obj.tempobj.filters)
			obj.tempobj.style.opacity=obj.degree/101
	} else {
		clearInterval(fadeclear[obj.slideshowid])
		obj.nextcanvas=(obj.curcanvas==obj.canvasbase+"_0")? obj.canvasbase+"_0" : obj.canvasbase+"_1"
		obj.tempobj=iebrowser? iebrowser[obj.nextcanvas] : document.getElementById(obj.nextcanvas)
		obj.populateslide(obj.tempobj, obj.nextimageindex)
		obj.nextimageindex=(obj.nextimageindex<obj.postimages.length-1)? obj.nextimageindex+1 : 0
		setTimeout("fadearray["+obj.slideshowid+"].rotateimage()", obj.delay)
	}
}

fadeshow.prototype.populateslide=function(picobj, picindex){

	var slideHTML=""
	if (this.theimages[picindex][1]!="") //if associated link exists for image
		slideHTML='<a href="'+this.theimages[picindex][1]+'" target="'+this.theimages[picindex][2]+'">'
	slideHTML+='<img src="'+this.postimages[picindex]+'" border="'+this.imageborder+'px">'
	//slideHTML+='<div style="background-image: url(\''+this.postimages[picindex]+'\'); width: 100%; height: 100%;">&nbsp;</div>'
	if (this.theimages[picindex][1]!="") //if associated link exists for image
		slideHTML+='</a>'
//	alert(slideHTML)
	picobj.innerHTML=slideHTML
}
fadeshow.prototype.showpreloader = function() {
	document.write('<div id="preloadDiv" style="position:absolute; top: 0; width:'+this.fadewidth+'px; height:'+this.fadeheight+'px; background-color: white; text-align: center; filter:progid:DXImageTransform.Microsoft.alpha(opacity=70);opacity:0.7;-moz-opacity:0.7;-khtml-opacity:0.7;"></div>')
			
	this.preloaderDiv=iebrowser? iebrowser["preloadDiv"] : document.getElementById("preloadDiv")
	this.preloaderDiv.innerHTML = '<img src="'+this.preloaderImg+'" style="display: block; margin-top: 0px; margin-left: auto; margin-right: auto;">'
}
fadeshow.prototype.hidepreloader = function() {
	this.preloaderDiv.style.visibility = "hidden";
}
 
fadeshow.prototype.rotateimage=function(){
	if (this.pausecheck==1) //if pause onMouseover enabled, cache object
		var cacheobj=this
	if (this.mouseovercheck==1||this.theimages[this.curimageindex][3]==0)//
		setTimeout(function(){cacheobj.rotateimage()}, 100)
	else {
		if (iebrowser&&dom||dom){
			//	alert(this.postimages[this.imgid])
			//alert(this.curimageindex+" "+this.nextimageindex)
		//	this.imgid=(this.imgid<this.postimages.length-1)? this.imgid+1 : 0
			if(this.theimages[this.nextimageindex][3]==0) {
				this.preloadObject.push(new ImagePreloader([this.postimages[this.nextimageindex]], imgLoaded,this.nextimageindex))
				if(this.curimageindex==0&&this.preloaderImg!="")
					this.hidepreloader()
			}
			this.resetit()
			var crossobj=this.tempobj=iebrowser? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
			crossobj.style.zIndex++
			fadeclear[this.slideshowid]=setInterval("fadepic(fadearray["+this.slideshowid+"])",50)
			this.curcanvas=(this.curcanvas==this.canvasbase+"_0")? this.canvasbase+"_1" : this.canvasbase+"_0"
		} else{
			var ns4imgobj=document.images['defaultslide'+this.slideshowid]
			ns4imgobj.src=this.postimages[this.curimageindex]
		}
		this.curimageindex=(this.curimageindex<this.postimages.length-1)? this.curimageindex+1 : 0
	}
}
 
fadeshow.prototype.resetit=function(){
	this.degree=10
	var crossobj=iebrowser? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
	if (crossobj.filters&&crossobj.filters[0]){
		if (typeof crossobj.filters[0].opacity=="number") //if IE6+
			crossobj.filters(0).opacity=this.degree
		else //else if IE5.5-
			crossobj.style.filter="alpha(opacity="+this.degree+")"
	} else if (crossobj.style.MozOpacity)
		crossobj.style.MozOpacity=this.degree/101
	else if (crossobj.style.KhtmlOpacity)
		crossobj.style.KhtmlOpacity=this.degree/100
	else if (crossobj.style.opacity&&!crossobj.filters)
		crossobj.style.opacity=this.degree/101
}
 
fadeshow.prototype.startit=function(){
	//preloadObject.push(new ImagePreloader([this.postimages[this.curimageindex], imgLoaded)
	var crossobj=iebrowser? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
	this.populateslide(crossobj, this.curimageindex)

	// loader image----------------
//	var slideHTML=""
//	slideHTML+='<img src="'+this.loaderimage+'" border="'+this.imageborder+'px">'
//	crossobj.innerHTML=slideHTML
	// -------------------------------
	if (this.pausecheck==1){ //IF SLIDESHOW SHOULD PAUSE ONMOUSEOVER
		var cacheobj=this
		var crossobjcontainer=iebrowser? iebrowser["master"+this.slideshowid] : document.getElementById("master"+this.slideshowid)
		crossobjcontainer.onmouseover=function(){cacheobj.mouseovercheck=1}
		crossobjcontainer.onmouseout=function(){cacheobj.mouseovercheck=0}
	}
	this.rotateimage()
}

function toggleLayer(whichLayer)
{
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}



/*********************************************************
 * Image preloader
 ***********************************/

function ImagePreloader(images, call_back, param) {
   // store the call-back
	this.call_back = call_back;
	this.param = param;

   // initialize internal state.
   this.nLoaded = 0;
   this.nProcessed = 0;
   this.aImages = new Array;

   // record the number of images.
   this.nImages = images.length;

   // for each image, call preload()
   for (var i = 0; i < images.length; i++)
      this.preload(images[i]);
}
ImagePreloader.prototype.preload = function(image){
   // create new Image object and add to array
   var oImage = new Image;
   this.aImages.push(oImage);
  
   // set up event handlers for the Image object
   oImage.onload = ImagePreloader.prototype.onload;
   oImage.onerror = ImagePreloader.prototype.onerror;
   oImage.onabort = ImagePreloader.prototype.onabort;
  
   // assign pointer back to this.
   oImage.oImagePreloader = this;
   oImage.bLoaded = false;
  
   // assign the .src property of the Image object
   oImage.src = image;
}
ImagePreloader.prototype.onComplete = function(){
   this.nProcessed++;
   if ( this.nProcessed == this.nImages )
   {
      this.call_back(this.aImages, this.nLoaded, this.param);
   }
}
ImagePreloader.prototype.onload = function()
{
   this.bLoaded = true;
   this.oImagePreloader.nLoaded++;
   this.oImagePreloader.onComplete();
}
ImagePreloader.prototype.onerror = function()
{
   this.bError = true;
   this.oImagePreloader.onComplete();
}
ImagePreloader.prototype.onabort = function()
{
   this.bAbort = true;
   this.oImagePreloader.onComplete();
}
// callback after image is loaded
function imgLoaded(imageSrcArray,num,param) {
	fadeimages[param][3]=1;
}

