/* Image Rotation Code
   Tom Hosking 10/07/07  */

// Settings:
var fadeTargetId = 'sidephoto2';
var fadeBgId = 'sidephoto';
var fadeSpeed = 1;
// End Settings
   
 
var headerImg1;
var headerImg2;
var currentImage=0;
function headerRotateInit() {
    headerImg1 = document.getElementById(fadeBgId);
    headerImg2 = document.getElementById(fadeTargetId);
    
		//headerImg1.style.visibility='hidden';
		headerImg2.style.visibility='hidden';
    headerImg2.style.background=imgArray[currentImage];
    headerImg1.style.background=imgArray[currentImage];
	fadeInit();
}

function swapImg() {
    fadeIn(100,-1*fadeSpeed, "swapImgPt2();");
}
function swapImgPt2() {
    headerImg2.style.background =imgArray[currentImage];
    fadeIn(0,fadeSpeed, "swapImgPt3();");
}
function swapImgPt3() {
    i=(currentImage==(imgArray.length -1)) ? -1*currentImage : 1;
    currentImage = currentImage + i;
    headerImg1.style.background =imgArray[currentImage];
    setTimeout("swapImg();", rotateDelay);
}

var    fadeTarget;
var preInitTimer;
preInit();

function preInit() {
    /* an inspired kludge that - in most cases - manages to initially hide the image
       before even onload is triggered (at which point it's normally too late, and a nasty flash
       occurs with non-cached images) */
    if ((document.getElementById)&&(fadeTarget=document.getElementById(fadeTargetId))&&(headerImg1=document.getElementById(fadeBgId))) {
		headerImg2=fadeTarget;
        fadeTarget.style.visibility = 'hidden';
        if (typeof preInitTimer != 'undefined') clearTimeout(preInitTimer); /* thanks to Steve Clay http://mrclay.org/ for this small Opera fix */
    } else {
        preInitTimer = setTimeout("preInit()",2);
    }
}

function fadeInit() {
    if (document.getElementById ) {
        /* get a handle on the fadeable object, to make code later more manageable */
        preInit(); /* shouldn't be necessary, but IE can sometimes get ahead of itself and trigger fadeInit first */
        /* set the initial opacity in a (hopefully) cross browser way
           notice that because of the way the image is in front, and not obfuscated
           by another object we need to "fade out", i don't need a fallback mechanism
           to show/hide the covering object...the image is just there, full stop */
        if (fadeTarget.style.MozOpacity!=null) {  
            /* Mozilla's pre-CSS3 proprietary rule */
            fadeTarget.style.MozOpacity = 0;
        } else if (fadeTarget.style.opacity!=null) {
            /* CSS3 compatible */
            fadeTarget.style.opacity = 0;
        } else if (fadeTarget.style.filter!=null) {
            /* IE's proprietary filter */
            fadeTarget.style.filter = "alpha(opacity=0)";
        }
        /* make the object visible again */
        fadeTarget.style.visibility = 'visible';
        window.setTimeout('fadeIn(0, 5, "")', 500);	
		
        //window.setTimeout('headerImg1.style.visibility=\'visible\'', 1000);
        window.setTimeout('swapImg()', rotateDelay);
	    //window.setTimeout('headerImg1.style.background=imgArray[currentImage];', 2000);
		currentImage++;
    }
}

function fadeIn(opacity, change, callbackCode) {
    if (fadeTarget) {
        if (opacity <= 100 & opacity >= 0) {
            if (fadeTarget.style.MozOpacity!=null) {
                /* Mozilla's pre-CSS3 proprietary rule */
                fadeTarget.style.MozOpacity = (opacity/100)-.001;
                /* the .001 fixes a glitch in the opacity calculation which normally results in a flash when reaching 1 */
            } else if ( fadeTarget.style.opacity!=null) {
                /* CSS3 compatible */
                fadeTarget.style.opacity = (opacity/100)-.001;
            } else if (fadeTarget.style.filter!=null) {
                /* IE's proprietary filter */
                fadeTarget.style.filter = "alpha(opacity="+opacity+")";
                /* worth noting: IE's opacity needs values in a range of 0-100, not 0.0 - 1.0 */
            }
            opacity += change;
            window.setTimeout("fadeIn("+opacity+","+change+',"'+callbackCode+'")', 30);
        } else {
            eval(callbackCode);
        }
    }
}





/* 3rd party helper functions */

/* addEvent handler for IE and other browsers */
function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
 if (elm.addEventListener){
   elm.addEventListener (evType, fn, useCapture);
   return true;
 } else if (elm.attachEvent){
   var r = elm.attachEvent("on"+evType, fn);
   return r;
 }
}

/* Image Preloader
   Tom Hosking 11/07/07  */
   
function preloadImages(imgArray) {
	 var imgObjArr = new Array();
	 var i=0;
	 for(i=0; i<imgArray.length; i++) {
		imgObjArr[i] = new Image;
		imgObjArr[i].src = imgArray[i];
	 }
 }