//	index.js -- index page javascript functions
//
//  September 2009 -- das
//
//	include in a page using this directive after page open:
//
//		<script type="text/javascript" language="javascript" src="code/index.js"></script>
//
//  Modification History
//
//  Date		Description
//  ----------  ---------------------------------------------------------------
//	 9/06/2009	moved to code/

//	tuning parameters

var coverCount;
var swapDelay = 8 * 1000;		//	8 seconds
var fadeDelay = 30;				//	(milliseconds per fade interval)

var oldrn = -1;
var newrn;
var urlFront = "rotation/r";
var urlBack = ".jpg";
var display, displayndx;
var timer;
var globalopacity;
var doFade = false;
var inFadeIn = false;
var preload;
var thephoto;

//	fadein is run when the image completes loading
//	but does not run until the first image is ready to load
//	(e.g., doFade == true)
//
//	schedules fadeout then sets up next image when through

function fadein ( ) {
	if ( ! doFade )
		exit;
	if ( globalopacity < 100 ) {
		inFadeIn = true;
		globalopacity += 2;
		setOpacity ( thephoto, globalopacity );
		setTimeout ( "fadein()", fadeDelay );
	}
	else {
		inFadeIn = false;
		setTimeout ( "fadeout()", swapDelay );
		swapcover ( );								//	calculate next image...
		preload = new Image (  );					//	...and preload it
		preload.src = display;
	}
}

//	fadeout will run "swapDelay" ms following fadein
//
//	installs the next photo when through

function fadeout ( ) {
	if ( inFadeIn )
		return;
	if ( globalopacity > 0 ) {
		globalopacity -= 2;
		setOpacity ( thephoto, globalopacity );
		setTimeout ( "fadeout()", fadeDelay );
	}
	else
		alterPhoto ( );
}

//	modify the image src attribute

function alterPhoto ( ) {
	thephoto.src = display;
}

//	called to generate an image URI

function swapcover ( ) {
	do {
		newrn = Math.floor ( Math.random ( ) * coverCount ) + 1;
	} while ( oldrn == newrn );
	oldrn = newrn;
	display = urlFront + newrn + urlBack;
}

function setOpacity ( obj, opacity ) {
	var localopacity;
	globalopacity = opacity;
	localopacity = ( opacity == 100 ) ? 99.999 : opacity;
	obj.style.filter = "alpha(opacity:"+localopacity+")";		//	IE / windows
	obj.style.KHTMLOpacity = localopacity/100;					//	Safari (old), Konqueror
	obj.style.MozOpacity = localopacity/100;					//	Firefox, older Mozilla
	obj.style.opacity = localopacity/100;						//	Safari 1.2, newer Firefox, Mozilla
}

//	generate the first photo to display and kick off the cycle

function fadeStart ( photoCount ) {
	thephoto = document.getElementById("thephoto");
	coverCount = photoCount;
	setOpacity ( thephoto, 0 );
	swapcover ( );
	doFade = true;
	alterPhoto ( );
}
