////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//  BgSlide JS v0.03, 21/08/2007
//
//  Copyright (c) 2007 Alan Peng ( http://bitdojo.net )
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// ------- CONFIGURATION -------

var BgSlideLoadingIndicator = "loading-indicator";
var BgSlideBgLayer1 = "bg-layer1";
var BgSlideBgLayer2 = "bg-layer2"; // this layer should be on top (higher z-index)

var BgSlideImgDir = "./images/";
var BgSlideImgArr = ["1.jpg", "2.jpg","3.jpg","4.jpg","6.jpg"];
//var BgSlideBgSource = "http://chaos.bitdojo.net/bg/" // not used for now

var BgSlideUpdateInterval = 8; // in seconds

// ------- END CONFIGURATION -------

var BgSlideExecuter;
var BgSlideImg;
var BgSlideLastImg = "";

var BgSlideSupported = true; // this can be set to false somewhere else

function BgSlideInit() {
	if(BgSlideSupported){
		BgSlideStart();
	} else {
		BgSlideHideIndicator();
	}
}

function BgSlideShowIndicator() {
	$(BgSlideLoadingIndicator).show();
}

function BgSlideHideIndicator() {
	Effect.Fade(BgSlideLoadingIndicator,{duration:0.5,delay:0.5,fps:50}); 
}

function BgSlideUpdate() {
	BgSlideShowIndicator();
	var imgSrc = BgSlideImgDir + BgSlideGetRandomImg();
	//var imgSrc = BgSlideGetRandomImg();
	BgSlidePreload(imgSrc);
}

function BgSlideGetRandomImg(){

	//return BgSlideBgSource + "?rand=" + (new Date()).getTime();

	var newImgs = BgSlideImgArr.without(BgSlideLastImg);
	var len = newImgs.length;
	//var rand = (new Date()).getTime();
	//var idx = rand % len;
	var idx = Math.floor(Math.random()*len);
	var imgSrc = newImgs[idx];

	//BgSlidePrintDebug(	"<br/>len="+len
	//			+"<br/>idx="+idx
	//			+"<br/>imgSrc="+imgSrc
	//			+"<br/>BgSlideLastImg="+BgSlideLastImg
	//		  );	
			  
	BgSlideLastImg = imgSrc;
	
	return imgSrc;
}

function BgSlidePreload(imgSrc) {

	// determind which layer to load the new image
	if( $(BgSlideBgLayer2).visible() ){
		BgSlideImg = $(BgSlideBgLayer1);	
	} else {
		BgSlideImg = $(BgSlideBgLayer2);
	}
	
	//BgSlideImg = new Image();
	BgSlideImg.src = imgSrc;
	
	Event.observe(BgSlideImg, 'load', BgSlidePreloadCallback);
}

function BgSlidePreloadCallback() {

	// determind which layer to display
	if( $(BgSlideBgLayer2).visible() ){
		if( !($(BgSlideBgLayer1).visible()) ){
			$(BgSlideBgLayer1).show();
		}
		Effect.Fade(BgSlideBgLayer2);
		//Effect.Shrink(BgSlideBgLayer2);
	} else {
		Effect.Appear(BgSlideBgLayer2);
		//Effect.Grow(BgSlideBgLayer2);
	}
	
	//setTimeout("BgSlideUpdate()", BgSlideUpdateInterval);
	BgSlideHideIndicator();
	
	//PrintDebug(BgSlideImg.src
	//	+ "<br/> BgSlideBgLayer1.visible=" + $(BgSlideBgLayer1).visible() 
	//	+ ", BgSlideBgLayer2.visible=" + $(BgSlideBgLayer2).visible());	
}

function BgSlideStart(){
	BgSlideUpdate();
	BgSlideExecuter = new PeriodicalExecuter(BgSlideUpdate, BgSlideUpdateInterval);
}

//function BgSlidePrintDebug(msg){
	//$('debug-msg').innerHTML = msg;
//}

// Install the onload observer
Event.observe(window, 'load', BgSlideInit);
