/*//////////////////////////////////////////////////////////////////////
//
//  Script name: PhotoShow
//  Version: 18:32 2006-1-22
//  Author: melop (Ray Cui) melop_cui(AT)yahoo.com.cn
//
//  You can use this script freely, but please leave 
//   this message.
////////////////////////////////////////////////////////////////////////*/


var IMGSHOW_INTERVAL = 6000;
var IMGSHOW_ALPHASTEP = 0.02;
var IMGSHOW_ACCELARATE = 0.03;
var IMGSHOW_ALPHAINTER = 100;

function fnInitShow(sId) {
	var oShow = document.getElementById(sId);
	var oImgList = oShow.getElementsByTagName("ul")[0];
	var arrImgs = oImgList.getElementsByTagName("li");
	
	oShow.__Timer = 0;

	if (arrImgs.length == 0) return;

	for (var i=0;i<=arrImgs.length-1;i++)
	{
		var oImg = arrImgs[i];
		var oTrueImg = oImg.getElementsByTagName("img")[0];
		//alert(oImg.style.backgroundImage)
		oImg.style.background= "url(" + oTrueImg.src + ") no-repeat left";
		oImg.__Title = oTrueImg.alt;
		oImg.__Des  = oTrueImg.title;
		oTrueImg.style.display="none"; // hide to true "img" tag.
		
	}

	var oDes = document.createElement("q");
	var oPicTitle = document.createElement("h3");
	var oPicDes  = document.createElement("p");
	oDes.className = "des";
	oDes.appendChild( oPicTitle );
	oDes.appendChild( oPicDes );
	oShow.appendChild( oDes );

	oShow.__ShowingIndex = 0;
	oShow.__NextIndex = 1;
	oShow.__State = "CountDown";
	
	oShow.__Timer = setTimeout("fnNext(\"" + sId +"\")" , IMGSHOW_INTERVAL);

	fnDisplayInfo(sId, false);
}

function fnNext(sId) {
	//alert("changing next");
	var oShow = document.getElementById(sId);
	var oImgList = oShow.getElementsByTagName("ul")[0];
	var arrImgs = oImgList.getElementsByTagName("li");
	
	if (oShow.__State != "CountDown" ) return; //Another transition is now playing. couldn't do it!

	var nNextIndex = oShow.__ShowingIndex + 1;
	if (nNextIndex > arrImgs.length - 1) nNextIndex = 0; // Return to 0;

	oShow.__State = "TransInit";
	oShow.__NextIndex = nNextIndex;
	//alert("changing to next");
	//alert(oShow.__NextIndex);
	clearTimeout( oShow.__Timer );
	oShow.__Timer = setTimeout("fnDoTrans(\""+sId+"\");" , 1);
	
	fnDisplayInfo(sId, true);
}

function fnPrev(sId) {
	var oShow = document.getElementById(sId);
	var oImgList = oShow.getElementsByTagName("ul")[0];
	var arrImgs = oImgList.getElementsByTagName("li");

	if (oShow.__State != "CountDown" ) return; //Another transition is now playing. couldn't do it!

	var nNextIndex = oShow.__ShowingIndex - 1;
	if (nNextIndex < 0) nNextIndex = arrImgs.length - 1; // Go to last;
	//alert(nNextIndex);
	oShow.__State = "TransInit";
	oShow.__NextIndex = nNextIndex;

	clearTimeout( oShow.__Timer );
	oShow.__Timer = setTimeout("fnDoTrans(\""+sId+"\");" , 1);

	fnDisplayInfo(sId, true);
	
}

function fnDisplayInfo(sId, bDisplayNext) {
	var oShow = document.getElementById(sId);
	var oImgList = oShow.getElementsByTagName("ul")[0];
	var arrImgs = oImgList.getElementsByTagName("li");
	var oDes = oShow.getElementsByTagName("q")[0];

	//Set title and description
	var oImg = (bDisplayNext)?  arrImgs[oShow.__NextIndex] : arrImgs[oShow.__ShowingIndex];
	oDes.getElementsByTagName("h3")[0].innerHTML = oImg.__Title;
	oDes.getElementsByTagName("p")[0].innerHTML = oImg.__Des;
}

function fnDoTrans(sId) {
	var oShow = document.getElementById(sId);
	var oImgList = oShow.getElementsByTagName("ul")[0];
	var arrImgs = oImgList.getElementsByTagName("li");
	var oNext = arrImgs[oShow.__NextIndex];
	var oOrigin = arrImgs[oShow.__ShowingIndex];
	//alert(oShow.__State);
	if (oShow.__State == "TransInit") { // Transition first init by fnNext() or fnPrev();
		//alert(oNext);
		oShow.__State = "Transitioning";
		oShow.__NextAlpha = 0;
		oShow.__OriginAlpha = 1;
		oNext.className = "current";
		fnSetAlpha(oNext , 0); // Set alpha of the coming image to zero
		oShow.__TickCount = 0;
		fnDoTrans(sId);
		return;
	}

	oShow.__TickCount ++;
	var nAcc = oShow.__TickCount * IMGSHOW_ACCELARATE;
	oShow.__NextAlpha = ((tmp = oShow.__NextAlpha + IMGSHOW_ALPHASTEP + nAcc) <= 1 )? tmp:1;
	oShow.__OriginAlpha = ((tmp = oShow.__OriginAlpha - IMGSHOW_ALPHASTEP - nAcc) >= 0 )? tmp:0;
	fnSetAlpha(oNext, oShow.__NextAlpha);
	fnSetAlpha(oOrigin,oShow.__OriginAlpha);

	//alert(oShow.__NextAlpha + "  " + oShow.__OriginAlpha);
	if (oShow.__NextAlpha == 1) { //The transition has finished!
		//alert("Trans finished");
		oOrigin.className = "";
		oShow.__ShowingIndex = oShow.__NextIndex;
		oShow.__State = "CountDown"; // Wait to change another pic
		clearTimeout( oShow.__Timer );
		oShow.__Timer = setTimeout("fnNext(\""+ sId+"\")" , IMGSHOW_INTERVAL);
		return;
	}

	//else go on doing!
	clearTimeout( oShow.__Timer );
	oShow.__Timer = setTimeout("fnDoTrans(\""+ sId+"\")" , IMGSHOW_ALPHAINTER);
}

function fnSetAlpha(obj, nAlpha) {
	if (obj.filters) {
		obj.filters["alpha"].opacity = nAlpha * 100;
		return;
	}
	
	else{
		obj.style.opacity = nAlpha ;
	}
}