// JavaScript Documentvar isIE = false;

var holdPicMsec = 1000; 
var fadePicMsec = 2000;  
var fadeInterval = 15; // msec
var fadeStepsPerInterval;
var startTime;

var slideshowNum = 0;
var curSlideshowImage = new Array;
var startImage = new Array;
var nextImage;
var numImages;
var currentIndex = 0;
var nextIndex = 1;
var currentOpacity = new Array();
var slideshowStarted = false;
var lastSlideshow = -1;
var lastImageAdded;
var newimage;

//GENERIC ADDLOAD EVENT FUNCTION
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}


//************************************** COOKIE STUFF ***********************************//
function createCookie(name,value) {
	var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

addLoadEvent(grabImages);

function getTimeStamp() {
	var my_current_timestamp;
		
	my_current_timestamp = new Date();
	return my_current_timestamp.getTime();
}

function grabImages() {
	if (!document.getElementsByTagName || !document.getElementById ) {
		return false;
	}
	
	var docImages = document.getElementsByTagName('img');
	for(i=0; i<docImages.length; i++) {
		if (docImages[i].className.indexOf('slideshow') >= 0) {
			startImage[slideshowNum] = docImages[i];
			curSlideshowImage[slideshowNum] = parseInt(startImage[slideshowNum].src.substring(startImage[slideshowNum].src.indexOf('-')+1, startImage[slideshowNum].src.indexOf('.jpg')));
			++slideshowNum;
			if (slideshowNum == 4) { slideshowNum = 0; break; }
		}
	}
	numImages = 0;
	addImage( startImage[0].src );
}

function addImage( theURL ) {
	newimage = document.createElement('IMG');
	newimage.style.visibility = 'hidden';
	newimage.id = 'image' + numImages;
	newimage.src = theURL;
	newimage.setAttribute('alt', startImage[0].alt);
	newimage.setAttribute('title', startImage[0].title);
	newimage.style.position = "absolute";
	newimage.style.marginLeft = startImage[0].style.marginLeft;
	newimage.style.zIndex = numImages;
	newimage.className = startImage[0].className;
	startImage[0].parentNode.insertBefore(newimage, startImage[0]);
	currentOpacity[numImages] = (numImages == 0)?100:0;
	
	// DO THIS FOR IE 
	var img = new Image();
	img.onload = loadNextImage;	
	img.src = theURL;
}

function loadNextImage() {
	if (!newimage.width) return;
	++numImages;
	var oldName = startImage[0].src;
	var newName = oldName.substring(0, oldName.indexOf('-')) + '-' + numImages + oldName.substring(oldName.indexOf('.jpg'), oldName.length);
	addImage( newName );

	// once we have enough images - start the slideshow
	if (!slideshowStarted && numImages == 16 ) { 
		slideshowStarted = true;
		startSlideshow();
	}
}

function setStartImages() {
	theCookie = readCookie("bannerImages");
	if (theCookie != null) {
		curSlideshowImage = theCookie.split("|");
		for(i=0; i<4; i++) {
			curSlideshowImage[i] = parseInt(curSlideshowImage[i]);
		}
	} else {
		for(i=0; i<4; i++) {
			curSlideshowImage[i] = -1;
		}
		for(i=0; i<4; i++) {
			do { 
				newImage = Math.floor(Math.random()*16);
			} while (curSlideshowImage[0] == newImage || curSlideshowImage[1] == newImage || curSlideshowImage[2] == newImage || curSlideshowImage[3] == newImage );
			curSlideshowImage[i] = newImage;
		}
	}
	createCookie("bannerImages",curSlideshowImage[0]+'|'+curSlideshowImage[1]+'|'+curSlideshowImage[2]+'|'+curSlideshowImage[3]);
}

function startSlideshow() {
	startImage[0].style.visibility = 'hidden';
	startImage[1].style.visibility = 'hidden';
	startImage[2].style.visibility = 'hidden';
	startImage[3].style.visibility = 'hidden';
	
	for(i=0; i<4; i++) {
		document.getElementById('image'+curSlideshowImage[i]).style.marginLeft = startImage[i].style.marginLeft;
		document.getElementById('image'+curSlideshowImage[i]).style.visibility = 'visible';
	}
	showNextPhoto(0, 0);
}

function showNextPhoto(theSlideshow, holdPicMsec) { 
	do { 
		newImage = Math.floor(Math.random()*numImages);
		newSlideshow = Math.floor(Math.random()*4);
	} while (newSlideshow == lastSlideshow || newSlideshow == theSlideshow || curSlideshowImage[0] == newImage || curSlideshowImage[1] == newImage || curSlideshowImage[2] == newImage || curSlideshowImage[3] == newImage );
	theNextImage = newImage;
	lastSlideshow = theSlideshow;
	theSlideshow = newSlideshow;
	setTimeout("swapImage("+theSlideshow+", "+theNextImage+")", holdPicMsec);
}

function swapImage(theSlideshow, theNextImage) {
	startTime = getTimeStamp();
	if (curSlideshowImage[theSlideshow] < theNextImage) {
		currentOpacity[curSlideshowImage[theSlideshow]] = 100;
		currentOpacity[theNextImage] = 0;
	} else {
		currentOpacity[curSlideshowImage[theSlideshow]] = 0;
		currentOpacity[theNextImage] = 100;
	}
	document.getElementById('image'+theNextImage).style.marginLeft = startImage[theSlideshow].style.marginLeft;
	//showDebug( numImages + ' ' + theSlideshow + ') ' +  curSlideshowImage[theSlideshow] + ' => ' + theNextImage + '<' + startImage[theSlideshow].style.marginLeft + '>' );
	setTimeout("crossFade("+theSlideshow+", "+theNextImage+")", fadeInterval );
}

function showDebug( theStr ) {
	document.getElementById('debug').innerHTML = document.getElementById('debug').innerHTML+'<br />'+theStr;
}

function crossFade(theSlideshow, theNextImage) {
	fadeStepsPerInterval = fadeInterval/fadePicMsec*100; 
		
	// UPDATE OPACITY
	if (curSlideshowImage[theSlideshow] < theNextImage) {
		currentOpacity[theNextImage] += fadeStepsPerInterval;
		currentOpacity[theNextImage] = (currentOpacity[theNextImage]>100)?100:currentOpacity[theNextImage];
	} else {
		currentOpacity[curSlideshowImage[theSlideshow]] = (currentOpacity[curSlideshowImage[theSlideshow]]==0)?100:(currentOpacity[curSlideshowImage[theSlideshow]]-fadeStepsPerInterval);
		currentOpacity[curSlideshowImage[theSlideshow]] = (currentOpacity[curSlideshowImage[theSlideshow]]<0)?0:currentOpacity[curSlideshowImage[theSlideshow]];
	}
	
	// SET OPACITY
	document.getElementById('image'+curSlideshowImage[theSlideshow]).style.visibility = 'visible';
	setOpacity(document.getElementById('image'+curSlideshowImage[theSlideshow]), currentOpacity[curSlideshowImage[theSlideshow]]);
	
	document.getElementById('image'+theNextImage).style.visibility = 'visible';
	setOpacity(document.getElementById('image'+theNextImage), currentOpacity[theNextImage]);
	

	// CHECK FOR SWITCH
	if ((curSlideshowImage[theSlideshow] < theNextImage && currentOpacity[theNextImage] == 100) || (curSlideshowImage[theSlideshow] > theNextImage && currentOpacity[curSlideshowImage[theSlideshow]] == 0))  {
		curSlideshowImage[theSlideshow] = theNextImage;
		createCookie("bannerImages",curSlideshowImage[0]+'|'+curSlideshowImage[1]+'|'+curSlideshowImage[2]+'|'+curSlideshowImage[3]);
		showNextPhoto(theSlideshow, holdPicMsec);	
	} else {
		startTime = getTimeStamp();
		setTimeout("crossFade("+theSlideshow+", "+theNextImage+")", fadeInterval );
	}	
}

function setOpacity(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  obj.style.filter = "alpha(opacity:"+opacity+")";
  obj.style.KHTMLOpacity = opacity/100;
  obj.style.MozOpacity = opacity/100;
  obj.style.opacity = opacity/100;
}
