// --------------- Flip Page Scripts

function showFlipHelp()
{
	Animate('pagenavR', 	0,100, 		290,40,290,40, 		186,40,186,40, 				400,60,10000);
	Animate('pagenavR', 	100,0, 		290,40,290,40, 		186,40,186,40, 				400,60,6000);
	
	Animate('pagenavR', 	0,100, 		290,300,290,300, 		186,40,186,40, 			800,60,7000);
	Animate('pagenavR', 	100,0, 		290,300,290,300, 		186,40,186,40, 			800,60,8000);
	
	Animate('pagenavR', 	0,100, 		290,560,290,560, 		186,40,186,40, 			1200,60,9000);
	Animate('pagenavR', 	100,0, 		290,560,290,560, 		186,40,186,40, 			1200,60,10000);
}
function GoToBkPg2(aBookName,PageName,currBookName)
{
	if (aBookName!=currBookName || currBookName=="" || PageIndxArr[aBookName][PageName]==null) { 
		// diff book OR currently not a book OR undefined PageIndxArr
		window.location = "?page="+PageName;
	} else { 
		var prevprevpageN,prevpageN,currpageN,nextpageN,nextnextpageN,
			prevprevpage,prevpage,currpage,nextpage,nextnextpage;

		var currRpage, currLpage;
		currRpage = CurrRightPageIndx;
		currLpage = CurrRightPageIndx-1;
		
		var newpageN, newRpageN, newLpageN;
		newpageN = PageIndxArr[aBookName][PageName];
		newRpageN = GetRightPageIndx(newpageN);
		newLpageN = newRpageN-1;
		CurrRightPageIndx = newRpageN;
		
		if (newpageN<currLpage) {
			// going prev
			currpageN = currLpage;
			nextpageN = currRpage;
			prevpageN = newRpageN;
			prevprevpageN = newLpageN;
			
			prevprevpage = "pg"+prevprevpageN;
			prevpage = "pg"+prevpageN;
			currpage = "pg"+currpageN;
			nextpage = "pg"+nextpageN;
			
			SetPrevPage(prevprevpage,prevpage,currpage,nextpage);
		} else if (newpageN>currRpage) {
			// going next
			currpageN = currRpage;
			prevpageN = currLpage;
			nextpageN = newLpageN;
			nextnextpageN = newRpageN;
			
			prevpage = "pg"+prevpageN;
			currpage = "pg"+currpageN;
			nextpage = "pg"+nextpageN;
			nextnextpage = "pg"+nextnextpageN;
			if (currpageN==0) {
				// make adjustments to openup the reading window
				document.getElementById("readingWin").style.left = "0px";
				document.getElementById("readingWin").style.width = BookW+"px";
				document.getElementById("pg0").style.left = PageW+"px";
			}
			
			SetNextPage(prevpage,currpage,nextpage,nextnextpage);
		} // else already displayed
	}
	
}
function GetRightPageIndx(anum)
{
	if (anum%2==0)	return (anum);
	else			return (anum+1);
}
function nextpage(currpageN)
{
	var prevpageN,nextpageN,nextnextpageN,
		prevpage,currpage,nextpage,nextnextpage;
		
	prevpageN = currpageN-1;
	nextpageN = currpageN+1;
	nextnextpageN = currpageN+2;
	
	prevpage = "pg"+prevpageN;
	currpage = "pg"+currpageN;
	nextpage = "pg"+nextpageN;
	nextnextpage = "pg"+nextnextpageN;
	
	if (currpageN==0) {
		// make adjustments to openup the reading window
		document.getElementById("readingWin").style.left = "0px";
		document.getElementById("readingWin").style.width = BookW+"px";
		document.getElementById("pg0").style.left = PageW+"px";
	}
	SetNextPage(prevpage,currpage,nextpage,nextnextpage);
	CurrRightPageIndx = nextnextpageN;
	
	return false;
}
function SetNextPage(prevpage,currpage,nextpage,nextnextpage)
{
	// reset reveal to zero
	ArevealW = 0;
	// start from the RIGHT edge
	AcenterXpos = BookW;		

	// reset all other zIndex to zero
	var i;
	for (i=0;i<MaxPages;i++) {
		document.getElementById("pg"+i).style.zIndex = "0";
	 	document.getElementById("pg"+i).style.display = "none";
	}
	
	document.getElementById(nextpage).style.display = "block";
	document.getElementById(nextpage).style.zIndex = MaxPages;
	
	document.getElementById(currpage).style.display = "block";
	document.getElementById(currpage).style.zIndex = MaxPages-1;
		document.getElementById(currpage).style.left = PageW+"px";
		document.getElementById(currpage).style.width = PageW+"px";
	
	// reveal ALL of  nextnextpage1
	document.getElementById(nextnextpage).style.display = "block";
	document.getElementById(nextnextpage).style.left = PageW+"px";
	document.getElementById(nextnextpage).style.width = PageW+"px";
	document.getElementById(nextnextpage).style.zIndex = MaxPages-2;
	
	// no call to this function if current is last page
	// this should already be displayed unless currently on the first page
	if (currpage.substr(2)*1>0) {
		document.getElementById(prevpage).style.display = "block";
		document.getElementById(prevpage).style.zIndex = MaxPages-3;
			document.getElementById(prevpage).style.left = "0px";
			document.getElementById(prevpage).style.width = PageW+"px";
	}
	
	doRevealNext(prevpage,currpage,nextpage,nextnextpage);
}
function doRevealNext(prevpage,currpage,nextpage,nextnextpage)
{
	// increment reveal width
	ArevealW = ArevealW + RevealW;
	// limit reveal up to the FULL page width only
	if (ArevealW>PageW)	ArevealW = PageW;
	
	// DECREMENT reveal left position
	AcenterXpos = AcenterXpos - (RevealW*2);
	// limit left reveal postion up to the LEFT edge only
	if (AcenterXpos<0) AcenterXpos = 0;			
	
	// reveal proper
	document.getElementById(nextpage).style.left = AcenterXpos+"px";
	document.getElementById(nextpage).style.width = ArevealW+"px";
	
	// hide overlapped area on currpage to display part of the nextnextpage
	var aW;
	aW = PageW - ArevealW;
	if (aW<=0)	document.getElementById(currpage).style.display = "none";	// totally overlapped, hide
	else		document.getElementById(currpage).style.width = aW+"px";	// still partialy displayed

	// continue revealing until positioned on the LEFT edge
	if (AcenterXpos>0)			window.setTimeout('doRevealNext("'+prevpage+'","'+currpage+'","'+nextpage+'","'+nextnextpage+'")',Speed);
	else if (currpage=="pg0") {
		// on first page, open book by widening width
		//document.getElementById("leftPage").style.width = "0px";	
		document.getElementById("BookContainer").style.background = "url('"+BgImg2+"') no-repeat";	// on first page, change background upon completion
	}
	
}
function prevpage(currpageN)
{
	var prevprevpageN,prevpageN,nextpageN,
		prevprevpage,prevpage,currpage,nextpage;
		
	prevprevpageN = currpageN-2;
	prevpageN = currpageN-1;
	nextpageN = currpageN+1;
	
	prevprevpage = "pg"+prevprevpageN;
	prevpage = "pg"+prevpageN;
	currpage = "pg"+currpageN;
	nextpage = "pg"+nextpageN;

	SetPrevPage(prevprevpage,prevpage,currpage,nextpage);
	CurrRightPageIndx = prevpageN;
}
function SetPrevPage(prevprevpage,prevpage,currpage,nextpage)
{
	// reset reveal to zero
	ArevealW = 0;
	// start from the LEFT edge
	AcenterXpos = 0;

	// reset all other zIndex to zero
	var i;
	for (i=0;i<MaxPages;i++) {
		document.getElementById("pg"+i).style.zIndex = "0";
	 	document.getElementById("pg"+i).style.display = "none";
	}
	
	// set display and zIndex
	if (prevprevpage.substr(2)*1<0) {
		// if no prevprevpage, force first page (prevpage) to display on the right-hand side
		document.getElementById("readingWin").style.left = PageW+"px";
		document.getElementById("readingWin").style.width = PageW+"px";
		document.getElementById(prevpage).style.display = "block";
		//document.getElementById(prevpage).style.left = PageW+"px";
		document.getElementById(prevpage).style.left = "0px";
		document.getElementById(prevpage).style.width = PageW+"px";
		document.getElementById(prevpage).style.zIndex = MaxPages;

		// on first page, close book by narrowing width
		//document.getElementById("leftPage").style.width = PageW+"px";	
		document.getElementById("BookContainer").style.background = "url('"+BgImg1+"') no-repeat";	// on first page, change background upon completion
		
	} else {
		document.getElementById(prevprevpage).style.display = "block";
		document.getElementById(prevprevpage).style.zIndex = MaxPages;
		
		document.getElementById(prevpage).style.display = "block";
		document.getElementById(prevpage).style.zIndex = MaxPages-1;

		document.getElementById(currpage).style.display = "block";
		document.getElementById(currpage).style.zIndex = MaxPages-2;
		
		// no call to this function if current is first page
		// this should already be displayed
		document.getElementById(nextpage).style.display = "block";
		document.getElementById(nextpage).style.zIndex = MaxPages-3;
		
		doRevealPrev(prevprevpage,prevpage,currpage,nextpage);
	}
}
function doRevealPrev(prevprevpage,prevpage,currpage,nextpage)
{

	// increment reveal width
	ArevealW = ArevealW + (RevealW);
	// limit reveal up to the FULL page width only
	if (ArevealW>PageW)	ArevealW = PageW;
	
	// width displayed from current page, currently same as ArevealW
	var revealWcurr;
	revealWcurr = ArevealW;
	
	// INCREMENT reveal left position
	AcenterXpos = AcenterXpos + RevealW;
	// limit left reveal postion up to the MIDPOINT of the Window(book) only
	if (AcenterXpos>PageW)	AcenterXpos = PageW;
	
	// // reveal PREVPAGE 
	var aW;
	aW = AcenterXpos - (PageW - revealWcurr);
	document.getElementById(prevpage).style.left = aW+"px";
	// always full width to force display of right side
	document.getElementById(prevpage).style.width = PageW+"px";
	
	// reveal PREVPREVPAGE
	// always from the left edge
	if (prevprevpage.substr(2)*1>=0) {	
		document.getElementById(prevprevpage).style.left = "0px";
		document.getElementById(prevprevpage).style.width = ArevealW+"px";
	}

	// continue revealing until positioned on the MIDPOINT
	if (AcenterXpos<PageW)	{
		window.setTimeout('doRevealPrev("'+prevprevpage+'","'+prevpage+'","'+currpage+'","'+nextpage+'")',Speed);
	}
}

// --------------- Other Common Scripts

function jsMydate(adate)
{
	var darr, y, m, d;
	
	darr = adate.split("-");
	y = darr[0];
	m = darr[1];
	d = darr[2];
	if (m.length<2) m = "0"+m;
	if (d.length<2) d = "0"+d;
	return y+"-"+m+"-"+d;
}
function popNfocus(url,wname,extra) {
	url.replace("'","\'");
	newwindow=window.open(url,wname,extra);
	if (window.focus) {newwindow.focus()}
	return false;
}
function trim (str)
{
	return str.replace(/^\s+|\s+$/g, '');
}

// --------------- Send Message From Home Page
function SMFHP()
{
	var a;
	a=0;
	
	document.getElementById("ErrEmail").innerHTML="";
	if(document.getElementById("email").value=="") {
		document.getElementById("ErrEmail").innerHTML="*";
		a=1;
	}
	document.getElementById("ErrMessage").innerHTML="";
	if(document.getElementById("message").value=="") {
		document.getElementById("ErrMessage").innerHTML="*";
		a=1;
	}
	document.getElementById("ErrPhone").innerHTML="";
	if(document.getElementById("phone").value=="") {
		document.getElementById("ErrPhone").innerHTML="*";
		a=1;
	}
	
	if(a==0) {
		document.getElementById("Error").style.display='none';
		document.contact.action = "sendmessage.php"
		return true;
	} else {
		document.getElementById("Error").style.display='inline';
		return false;
	}
}

// ------------------------------------------------------------ ANIMATE ------------------------------------------------------------

function Animate(anID, oS,oE, sL,sT,eL,eT, sW,sH,eW,eH, time,fps,delay)
{	
	setTimeout("Fade  ('"+anID+"',"	+oS+","+oE+","				+time+","+fps+");",  delay);
	setTimeout("Pan   ('"+anID+"',"	+sL+","+sT+","+eL+","+eT+","+time+","+fps+");",  delay);
	setTimeout("Resize('"+anID+"',"	+sW+","+sH+","+eW+","+eH+","+time+","+fps+");",  delay);
	return time;
}
function AutoFadeInOut(aWidth,aHeight,factor,time,fps,delay,repeatctr)
{
	if (repeatctr>0) {
		// *********************************************************
		// *************** REQUIRES ElemArrs ********************
		// *********************************************************
		var maxImgs = ElemArrs.length;
		var totduration, i,i2;
		totduration = 0;
		for (i=0;i<maxImgs;i++) {
			if (i==maxImgs-1)	i2 = 0;
			else				i2 = i+1;
			// fade in
			Animate(ElemArrs[i2],	0,100, 	0,0,0,0, 	aWidth,aHeight,aWidth*factor,aHeight*factor, 				time,fps,totduration);
			//fade out
			Animate(ElemArrs[i],	100,0, 	0,0,0,0, 	aWidth*factor,aHeight*factor,aWidth*factor,aHeight*factor, 	time,fps,totduration);
			totduration = totduration + time + delay;
		}
		repeatctr--;
		setTimeout("AutoFadeInOut("+aWidth+","+aHeight+","+factor+","+time+","+fps+","+delay+","+repeatctr+");", totduration);
	}
}
// --------------- Opacity
function Fade(elemId, fromOpacity, toOpacity, time, fps)
{
	var steps = Math.ceil(fps * (time / 1000));
	var delta = (toOpacity - fromOpacity) / steps;
	FadeStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
	return time;
}
function FadeStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep)
{
	SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));
	if (stepNum < steps) setTimeout("FadeStep('" + elemId + "', " + (stepNum+1) 
								+ ", " + steps + ", " + fromOpacity + ", "
								+ delta + ", " + timePerStep + ");", 
								timePerStep);
}
function SetOpacity(elem, opacityAsInt)
{
	var opacityAsDecimal = opacityAsInt;

	if (opacityAsInt > 100)		opacityAsInt = opacityAsDecimal = 100; 
	else if (opacityAsInt < 0)	opacityAsInt = opacityAsDecimal = 0; 

	opacityAsDecimal /= 100;
	if (opacityAsInt < 1)		opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0

	elem.style.opacity = (opacityAsDecimal);
	elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
}
// --------------- Pan
function Pan(elemId, fromL,fromT, toL, toT, time, fps)
{
	var steps = Math.ceil(fps * (time / 1000));
	var deltaH = (toL - fromL) / steps;
	var deltaV = (toT - fromT) / steps;
	PanStep(elemId, 0, steps, fromL,fromT, deltaH,deltaV, (time / steps));
	return time;
}
function PanStep(elemId, stepNum, steps, fromL,fromT, deltaH,deltaV, timePerStep)
{
	var posL, posT;
	posL = Math.round(parseInt(fromL) + (deltaH * stepNum));
	posT = Math.round(parseInt(fromT) + (deltaV * stepNum));
	document.getElementById(elemId).style.left = posL+"px";
	document.getElementById(elemId).style.top  = posT+"px";

	if (stepNum < steps) setTimeout("PanStep('" + elemId + "', " + (stepNum+1) 
								+ ", " + steps + ", " + fromL + ", " + fromT + ", "
								+ deltaH + ", " + deltaV + ", " + timePerStep + ");", 
								timePerStep);
}
// --------------- Resize
function Resize(elemId, fromW,fromH, toW, toH, time, fps)
{
	var steps = Math.ceil(fps * (time / 1000));
	var deltaW = (toW - fromW) / steps;
	var deltaH = (toH - fromH) / steps;
	ResizeStep(elemId, 0, steps, fromW,fromH, deltaW,deltaH, (time / steps));
	return time;
}
function ResizeStep(elemId, stepNum, steps, fromW,fromH, deltaW,deltaH, timePerStep)
{
	var sizeW, sizeH;
	sizeW = Math.round(parseInt(fromW) + (deltaW * stepNum));
	sizeH = Math.round(parseInt(fromH) + (deltaH * stepNum));
	document.getElementById(elemId).style.width = sizeW+"px";
	document.getElementById(elemId).style.height  = sizeH+"px";

	if (stepNum < steps) setTimeout("ResizeStep('" + elemId + "', " + (stepNum+1) 
								+ ", " + steps + ", " + fromW + ", " + fromH + ", "
								+ deltaW + ", " + deltaH + ", " + timePerStep + ");", 
								timePerStep);
}

// *******************************************************************************************
// ***************************************** UNUSED *****************************************
// *******************************************************************************************
function FadeInOutWithPan(id1,id2,time)
{	
	// fading in
	Fade(id1,0,100, duration,fps);
	//Pan(ElemId1, 300,0, 0,0, time,fps);		// from right
	Pan(id1, 0,400, 0,150, time,fps);		// from bottom
	
	// fading out
	if (id2!="") {
		Fade(id2,100,0, time*0.75,fps);
		Pan(id2, 0,150, 0,10, time,fps);		// to top
	}
	return time;
}
function FadeInOut(id1,id2,time)
{	
	// fading in
	Fade(id1,0,100, time,fps);
	// fading out
	if (id2!="") Fade(id2,100,0, time,fps);
	return time;
}
