/**
* Filename: rotatingbanner.js
*/

// Global variables - set up bannerArray and incrementing behavior
var currentCount = 0;
var oldAd = 0;
var newAd = 0;
var masterOpacity = 1;
var defaultTimer = 7000;

var crossFadeInterval;
var startFadeTimeout;
var bannerArray;

// startFade (function, Arguments: none) The initialization trigger for a fade sequence.
// This sets elements up for the crossFade function, resets older elements, and clears the
// startFadeTimeout timer which sets the duration between transitions.
function startFade(){
 currentCount++;
 if(currentCount > bannerArray.length-1){currentCount = 0;}
 oldAd = newAd;
 newAd = currentCount;
 ad1 = document.getElementById(bannerArray[oldAd].id);
 ad2 = document.getElementById(bannerArray[newAd].id);
 ad1.style.zIndex = 999;
 setOpacity(ad2,0.01);

 ad2.style.zIndex = 1000;
 if(startFadeTimeout)window.clearTimeout(startFadeTimeout);
 crossFadeInterval = setInterval("crossFade()",30);
}

// setOpacity (function, Arguments: target Object, opacity value (as decimal .01 to .99))
// function simply sets opacity for several formats to ensure similar behavior, has checks for limits.
function setOpacity(obj,value){
 if(document.all){
 obj.style.filter = "alpha(opacity=" + Math.ceil(value*100) + ")";
 }
 obj.style.opacity = (value >= 1)?0.99:((value <= 0)?0.01:value);
 obj.style.mozOpacity = (value >= 1)?0.99:((value <= 0)?0.01:value);
}


// crossFade (function, Arguments:none;)
// function called in the crossFadeInterval argument, set for every .03 seconds.
// "adds" .02 opacity (plus or minus) to the fade.
function crossFade(){
 ad1 = document.getElementById(bannerArray[oldAd].id);
 ad2 = document.getElementById(bannerArray[newAd].id);
 masterOpacity = masterOpacity - .02;
 setOpacity(ad2,(1-masterOpacity));

 if(masterOpacity <= 0){
 clearInterval(crossFadeInterval);
 ad1.style.zIndex = 1;
 setOpacity(ad2,1);
 masterOpacity = 1;
 if(startFadeTimeout)window.clearTimeout(startFadeTimeout);
 startFadeTimeout = (bannerArray[newAd].timer)?setTimeout("startFade()",bannerArray[newAd].timer):setTimeout("startFade()",defaultTimer);

 ;
 }
}

// buildBannerSet
function buildBannerSet(paramObj){
 try{
 // check if we have a valid parameter object
 if(!paramObj) throw "noParameters";

 // assign the banner array
 bannerArray = paramObj.banners;

 // check if we have banners
 if(!bannerArray || bannerArray.length == 0) throw "noBannerSpecified";

 // validate bannerArray
 for(i=0;i<bannerArray.length;i++){
 if(!bannerArray[i]) throw "invalidBanner";
 if(!bannerArray[i].id || !bannerArray[i].id.match("banner")) throw "invalidBannerId";
 }

 // set the default timer
 if(paramObj.defaultTimer){
 defaultTimer = parseInt(paramObj.defaultTimer);
 }

 // create the images
 var banner_right = document.getElementById("banner_right");

 banner_right.removeChild(document.getElementById("defaultBanner"));

 for(i=0;i<bannerArray.length;i++){
 var bannerDiv = document.createElement("DIV");
 var bannerImg = document.createElement("IMG");
 banner_right.appendChild(bannerDiv);
 bannerDiv.appendChild(bannerImg);
 bannerDiv.style.cursor = "default";
 bannerDiv.id = bannerArray[i].id;
 bannerImg.src = bannerArray[i].imageSrc;
 bannerDiv.style.zIndex = (i > 0)?"1":"1002";
 bannerDiv.className = "banner_right_image";
 }

 if(bannerArray.length > 1){
 startFadeTimeout = (bannerArray[0].timer)?setTimeout("startFade()",bannerArray[0].timer):setTimeout("startFade()",defaultTimer);
 }
 }catch(e){}
}

function renderBanners(){
try{
buildBannerSet(
{
banners: [
{id:"banner0", imageSrc:"/banner/photo1.jpg", imageName:"banner0"},
{id:"banner1", imageSrc:"/banner/photo2.jpg", imageName:"banner1"},
{id:"banner2", imageSrc:"/banner/photo3.jpg", imageName:"banner2"}
]
 }
 );
 }
 catch(e){}
}