/*
//	SINGLE IMAGE ROTATOR
//	©2007 kamiCode
*/



var rotator_divID = 'rotator';
var rotator_div = null;

var rotator_imageID = 'rotator_img';
var rotator_image = null;

var rotator_images = new Array();
var rotator_playlist = new Array(); 
var rotator_playlist_current = 0;

var rotator_timer = null;
var rotator_timer_showInterval = 2000;
var rotator_timer_hideInterval = 500;
var rotator_timer_fadeInterval = 50;

var rotator_fadeOpacity = 0;
var rotator_fadeInSpeed = 4;
var rotator_fadeOutSpeed = 8;
var rotator_fadeSpeed = 0;



function rotator_resetPlaylist()
{
	rotator_playlist = rotator_images;
	for (var i=0; i<rotator_playlist.length; i++) {
		var index = Math.floor(Math.random() * rotator_playlist.length);
		var swap = rotator_playlist[i];
		rotator_playlist[i] = rotator_playlist[index];
		rotator_playlist[index] = swap;
	}
	rotator_playlist_current = 0;
}

function rotator_update()
{
	if (rotator_playlist_current + 1 > rotator_playlist.length) {
		rotator_resetPlaylist();
	}
	rotator_image.src = rotator_playlist[rotator_playlist_current].src;
	rotator_playlist_current++;
	setTimeout( 'rotator_fadeIn()', rotator_timer_hideInterval );
}

function rotator_preload( images )
{
	rotator_div = $(rotator_divID);
	rotator_image = $(rotator_imageID);
	
	if ((rotator_div != null) && (rotator_image != null) && images.length) {

		// preload the images //
		for (i=0; i<images.length; i++) {
			rotator_images[i] = new Image();
			rotator_images[i].src = images[i];
		}
		rotator_div.style.visibility = 'hidden';
		addEvent( window, 'load', rotator_init );
	}
}
/**** > ****/

function rotator_init()
{
	rotator_div.style.visibility = 'visible';
	rotator_fadeIn( true );
}

function rotator_fadeIn( reset )
{
	if (reset) {
		rotator_fadeOpacity = 0;
		rotator_fade_setOpacity( rotator_fadeOpacity );
	}
	rotator_fadeSpeed = rotator_fadeInSpeed;
	if (rotator_timer == null) {
		rotator_timer = window.setInterval( 'rotator_fade_update()', rotator_timer_fadeInterval );
	}
}

function rotator_fadeOut( reset )
{
	if (reset) {
		rotator_fadeOpacity = 100;
		rotator_fade_setOpacity( rotator_fadeOpacity );
	}
	rotator_fadeSpeed = -rotator_fadeOutSpeed;
	if (rotator_timer == null) {
		rotator_timer = window.setInterval( 'rotator_fade_update()', rotator_timer_fadeInterval );
	}
}

function rotator_fade_setOpacity( opacity )
{
	if (rotator_div.style.MozOpacity != null) { // Mozilla
		rotator_div.style.MozOpacity = (opacity/100)-.001;
	} else if (rotator_div.style.opacity != null) { // CSS3
		rotator_div.style.opacity = (opacity/100)-.001;
	} else if (rotator_div.style.filter!=null) { // IE
		rotator_div.style.filter = 'alpha(opacity='+opacity+')';
	}
}

function rotator_fade_update()
{
	rotator_fadeOpacity += rotator_fadeSpeed;

	if ((rotator_fadeSpeed < 0) && (rotator_fadeOpacity <= 0)) {
		rotator_fadeOpacity = 0;
		rotator_fade_setOpacity( rotator_fadeOpacity );
		window.clearInterval( rotator_timer );
		rotator_timer = null;
		rotator_update();
	} else if ((rotator_fadeSpeed > 0) && (rotator_fadeOpacity >= 100)) {
		rotator_fadeOpacity = 100;
		rotator_fade_setOpacity( rotator_fadeOpacity );
		window.clearInterval( rotator_timer );
		rotator_timer = null;
		window.setTimeout( 'rotator_fadeOut()', rotator_timer_showInterval );	 
	}
	else {
		rotator_fade_setOpacity( rotator_fadeOpacity );
	}
}






/* 3rd party helper functions */

function addEvent( elm, evType, fn, useCapture ) 
{
	if (elm.addEventListener) {
		elm.addEventListener( evType, fn, useCapture );
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent( 'on'+evType, fn );
		return r;
	}
}