/* =====================================================================================
		SETTING UP THE SCRIPT'S VARIABLES
   ===================================================================================== */
var intLayerIn, intLayerOut, intOpacStart, intOpacEnd, blnCanFade, intThisArea, intNextArea, intActiveCount;
intOpacStart = 0;
intOpacEnd = 100;
intLayerIn = 1;
blnCanFade = false;
intThisArea = 1;
intActiveCount = 0;
var intAnimFrames = 3;
var showh, showv, structure, viseq, dispeq, closingb, dispb, dispn, coloreq;
showh = "'hidden'";
showv = "'visible'";
dispb = "'block'";
dispn = "'none'";

structure = "document.getElementById('";
viseq = "').style.visibility = ";
dispeq = "').style.display = ";
coloreq = "').style.color = ";
closingb = "')";

function testElement(id)
{
 test = eval(structure +id + closingb);
 if (!test) {return false;}
 return true;
}

function fn_elementDisplay(strID,state)
{
 if (!testElement(strID)) {return false;}
 var strDisp = ((state == 1) ? dispb : dispn);
 eval(structure + strID + dispeq + strDisp)
}

function Animation(intid,strName,intTotal)
{
 this.intID = intid;
 this.name = strName;
 this.position = 1;
 this.totalframes = intTotal;
 this.active = "false";
}

var arrHomeAnims = new Array();
arrHomeAnims[1] = new Animation(1,'FarLeft',3);
arrHomeAnims[2] = new Animation(2,'Left1',2);
arrHomeAnims[3] = new Animation(3,'Left2',3);
arrHomeAnims[4] = new Animation(4,'Right1',4);
arrHomeAnims[5] = new Animation(5,'Right2',3);

//alert(arrHomeAnims.length);

function animDiv(intID,strName)
{
 this.id = "anim_" + strName + "_" + intID;
 this.opacity = 0;
}

for (intcount = 1; intcount < arrHomeAnims.length; intcount++)
{
 for (intcount2 = 1; intcount2 <= arrHomeAnims[intcount].totalframes; intcount2++)
 {
  arrHomeAnims[intcount][intcount2] = new animDiv(intcount2,arrHomeAnims[intcount].name);
 }
}
// alert(arrHomeAnims[1][3].id);

function fn_GetNextArea()
{
 var tmpNextArea = Math.round(Math.random()*(arrHomeAnims.length-2))+1;
 if(tmpNextArea == intThisArea)
 {fn_GetNextArea();}
 else
 {
  if(intActiveCount < arrHomeAnims.length-1)
  {
   if(arrHomeAnims[tmpNextArea].active == "true")
   {fn_GetNextArea();}
   else
   {
    arrHomeAnims[tmpNextArea].active = "true";
    intActiveCount += 1;
	intThisArea = tmpNextArea;
   }
  }
  else {intThisArea = tmpNextArea;}
 }
 
}

 
// alert((Math.round(Math.random()*2)*1500)+1000)
 
/*var arrAnimLayers = new Array();
for (intcount = 1; intcount <= intAnimFrames; intcount++)
{
 arrAnimLayers[intcount] = new animDiv(intcount);
}
*/

/* =====================================================================================
		FUNCTIONS TO OPERATE THE FADING ACTION
   ===================================================================================== */
//change the opacity for different browsers 
function changeOpac(opacity, intID)
{
 if(!blnCanFade){return;}
 if(!testElement(arrHomeAnims[intThisArea][intID].id)){return;}
 arrHomeAnims[intThisArea][intID].opacity = opacity;
 var object = document.getElementById(arrHomeAnims[intThisArea][intID].id).style; 
 object.opacity = (opacity / 100); 
 object.MozOpacity = (opacity / 100); 
 object.KhtmlOpacity = (opacity / 100); 
 object.filter = "alpha(opacity=" + opacity + ")";
}

var intSpeed;
function fn_fadeLayers()
{
 intSpeed = (intActiveCount < arrHomeAnims.length-1 ? 3 : 5)
 var speed = Math.round(intSpeed); 
 var timer = 0; 
 var intFadeOut;
 fn_elementDisplay(arrHomeAnims[intThisArea][intLayerIn].id,1)
 for(intcount = 0; intcount <= 100; intcount++) 
 { 
  intFadeOut = intOpacEnd-intcount;
  setTimeout("changeOpac(" + intcount + ",'" + intLayerIn + "')",(timer * speed)); 
  setTimeout("changeOpac(" + intFadeOut + ",'" + intLayerOut + "')",(timer * speed)); 
  timer++;
 } 
}

function fn_switchLayers()
{
 fn_elementDisplay(arrHomeAnims[intThisArea][intLayerOut].id,0);
 fn_elementDisplay(arrHomeAnims[intThisArea][intLayerIn].id,1);
}

/* =====================================================================================
		FUNCTIONS TO RUN THE DEFAULT LOOPING
   ===================================================================================== */
var cmd_doLoop;

cmd_doLoop = setTimeout("",500);
var onContentTimeout = "doLoop()";

var intDelay;
function doLoop()
{
 fn_GetNextArea();
 intLayerOut = arrHomeAnims[intThisArea].position;
 intLayerIn = intLayerOut + 1;
 if(intLayerIn > arrHomeAnims[intThisArea].totalframes) {intLayerIn = 1;}
 arrHomeAnims[intThisArea].position = intLayerIn;
 if (blnCanFade) {fn_fadeLayers();}
 else {fn_switchLayers();}
 intDelay = (intActiveCount < arrHomeAnims.length-1 ? 400 : (Math.round(Math.random()*2)*750)+1000);
 cmd_doLoop = setTimeout(onContentTimeout,intDelay);
}

/* =====================================================================================
		FUNCTIONS CALLED BY BROWSER EVENTS
   ===================================================================================== */
 var blnSetup
 function fn_setupAnimFades()
{
 var tmpStyleObject = document.getElementById(arrHomeAnims[1][1].id).style;
 if ((navigator.platform.indexOf('Win') > -1)) // if it's on anything other than Windows don't fade (because Mac's are tooooo sllooooowwwwwwwww ... 
 {
  if ((tmpStyleObject.opacity != "undefined") || (tmpStyleObject.MozOpacity != "undefined") || (tmpStyleObject.KhtmlOpacity != "undefined") || (tmpStyleObject.filter != "undefined"))
  {
   blnCanFade = true;
   for (intcount = 1; intcount < arrHomeAnims.length; intcount++)
   {
    intThisArea = intcount;
    for (intcount2 = 1; intcount2 <= arrHomeAnims[intcount].totalframes; intcount2++)
    {changeOpac(0, intcount2);}
    changeOpac(100, 1);
   }
   intThisArea = 1;
  }
 }
// blnSetup = false;
// for(var tmpi=1; tmpi<arrHomeAnims.length; tmpi++)
// {
//  intThisArea = tmpi;
//  cmd_doLoop = setTimeout(onContentTimeout,500);
// }
// fn_elementDisplay(arrHomeAnims[intThisArea][1].id,1);
 blnSetup = true;
// cmd_doLoop = "";
 cmd_doLoop = setTimeout(onContentTimeout,100);
}
