

var myAnims = new Array();
var myObjects = new Array();
var myItems = new Array();
var nTotAnims = 0;
var nCurrentTime = 0;
var nDuration = 999999999;



function SetMovieLen(movieduration) {
    nDuration = movieduration;
}

function AddAnim(aniobj) {
    myAnims.push(aniobj);
    nTotAnims = myAnims.length;
}

function ItemObject()
{
	this.itemId = 0;
	this.itemX = 0;
	this.itemY = 0;
	this.image = "";
	this.visible = 0;
	this.zindex = 100;
	
}

function AddItem(itemid,img,X,Y,visible,zindex)
{
	var v = new ItemObject();
	v.itemId = itemid;
	v.X = X;
	v.Y = Y;
	v.image = img;
	if(visible) v.visible = visible;
	if(zindex) v.zindex = zindex;
	myItems.push(v);
	
}
function WriteItems()
{
	for(var n = 0; n < myItems.length; n++)
	{
		
		document.write('<div id="');
		document.write('OBJ' + myItems[n].itemId)
		document.write('" style="position:absolute; z-index:'+myItems[n].zindex+'; visibility:');
		if(myItems[n].visible == 1) document.write('visible'); else document.write('hidden');
		document.write('; left:'+myItems[n].X+'px; top:'+myItems[n].Y+'px;">' );
		document.write('<img src="'+myItems[n].image+'" border="0" >');
		document.write('</div>');

	}
}


function DivObject(id) {
    this.objId = id;
    this.iniStyle;
}
function AnimObject() {
    this.type = '';
    this.iniX = -9999;
    this.finX = 0;
    this.curX = 0;
    this.stepsX = 0;

    this.iniY = -9999;
    this.finY = 0;
    this.curY = 0;
    this.stepsY = 0;
    
    // opacity
    this.iniO = -9999;
    this.finO = 0;
    this.curO = 0;
    this.stepsO = 0;

    // width height
    this.iniW = -9999;
    this.finW = -9999;
    this.curW = 0;
    this.stepsW = 0;

    this.iniH = -9999;
    this.finH = -9999;
    this.curH = 0;
    this.stepsH = 0;
    
    
    this.strtTime = 0;
    this.duration = 1;
    // this.endTime = 0;
    this.repeat = 0; 
   
    this.objId = 0;
}



function SetOpacity(testObj, value) {
    /*
    objG = testObj;
    degree = value;
    var tS = document.all ? document.all['tmpStyle'] : document.getElementById('tmpStyle');

    if (objG.filters && objG.filters[0] && fadeAssist)
        fadeAssist(objG, degree / 10)
    else if (typeof objG.style.MozOpacity == 'string')
        objG.style.MozOpacity = degree / 10
    else if (typeof objG.style.KhtmlOpacity == 'string')
        objG.style.KhtmlOpacity = degree / 10
    else if (typeof objG.style.opacity == 'string' && !objG.filters)
        objG.style.opacity = degree / 10
    else
        tS.disabled = true

    */
    if(testObj){
	    testObj.style.opacity = value / 100;
	    testObj.style.filter = 'alpha(opacity=' + value  + ')';
	}
}

function animate() 
{
	var n;

	for (n = 0; n < nTotAnims; n++) 
	{

		if (nCurrentTime >= myAnims[n].strtTime && nCurrentTime <= (myAnims[n].strtTime + myAnims[n].duration) && myAnims[n].duration>0)
		{
			var divObj = document.getElementById("OBJ" + myAnims[n].objId);
			if(divObj)
			{
				if (nCurrentTime == myAnims[n].strtTime) 
				{
					// starting the anim
					var timeRange = myAnims[n].duration; //= (myAnims[n].endTime - myAnims[n].strtTime);

					if (myAnims[n].type == 'move') 
					{
						// check for moving from current position...
						if (myAnims[n].iniX == -9999) 
						{
							myAnims[n].iniX = parseInt(divObj.style.left);
							//alert(myAnims[n].iniX);
						}
						if (myAnims[n].iniY == -9999) 
						{
							myAnims[n].iniY = parseInt(divObj.style.top);
							//alert(divObj.style.top);
						}
						myAnims[n].stepsX = (myAnims[n].finX - myAnims[n].iniX) / timeRange;
						myAnims[n].stepsY = (myAnims[n].finY - myAnims[n].iniY) / timeRange;
						myAnims[n].curX = myAnims[n].iniX;
						myAnims[n].curY = myAnims[n].iniY;
						if (divObj) 
						{
							divObj.style.left = myAnims[n].curX + "px";
							divObj.style.top = myAnims[n].curY + "px";
						}                            

					}

					if (myAnims[n].type == 'width') 
					{
						if (myAnims[n].iniW == -9999) myAnims[n].iniW = parseInt(divObj.width);
						if (myAnims[n].finW == -9999) myAnims[n].finW = parseInt(divObj.width);
						//alert(divObj.style.top);

						myAnims[n].stepsW = (myAnims[n].finW - myAnims[n].iniW) / timeRange;
						myAnims[n].curW = myAnims[n].iniW;  
					}                    


					if (myAnims[n].type == 'fade')
					{
						myAnims[n].stepsO = (myAnims[n].finO - myAnims[n].iniO) / timeRange;
						myAnims[n].curO = myAnims[n].iniO;
					}
					if (myAnims[n].type == 'togglevis') 
					{
						if (divObj.style.visibility == 'visible') 
						{
							divObj.style.visibility = 'hidden';
						}
						else
						{
							divObj.style.visibility = 'visible';
						}
					}
			
				}
				// animation moves...
				if (myAnims[n].type == 'move') 
				{                        
					if(myAnims[n].stepsX != 0) divObj.style.left = myAnims[n].curX + "px";
					if(myAnims[n].stepsY != 0) divObj.style.top = myAnims[n].curY + "px";
					myAnims[n].curX += myAnims[n].stepsX; 
					myAnims[n].curY += myAnims[n].stepsY;
				}
				if (myAnims[n].type == 'fade')
				{
					if (myAnims[n].stepsO != 0) 
					{
						SetOpacity(divObj, myAnims[n].curO)
						myAnims[n].curO += myAnims[n].stepsO; 
					}
				}
				if (myAnims[n].type == 'width') 
				{
					divObj.width = myAnims[n].curW;
					myAnims[n].curW += myAnims[n].stepsW; 
				}
				// it is the first time so make it visible...
				if (nCurrentTime == myAnims[n].strtTime && myAnims[n].type != 'togglevis') divObj.style.visibility = 'visible';
		    
				if(nCurrentTime == (myAnims[n].strtTime + myAnims[n].duration))
				{
					// last frame...
					if(myAnims[n].type == 'show') 
					{
						divObj.style.visibility = 'hidden';

					} 
				} 
			}
		}

	}

	nCurrentTime++;
	if (nCurrentTime > nDuration) 
	{
		// restart the movie...
		nCurrentTime = 0;
		for (var i = 0; i < myObjects.length; i++) 
		{
			if(myObjects[i])
			{
				var divObj = document.getElementById("OBJ" + myObjects[i].objId);
				if (divObj) 
				{
					divObj.setAttribute('style', myObjects[i].iniStyle);
				}
			}
		}
		
		for(var n = 0; n < myItems.length; n++)
		{
			var divObj = document.getElementById("OBJ" + myItems[n].itemId);
			if (divObj) 
			{
				if(myItems[n].visible == 1)
				{
					divObj.style.visibility = 'visible';
				}
				else
				{
					divObj.style.visibility = 'hidden';
				}
				divObj.style.left  = myItems[n].X;
				divObj.style.top  = myItems[n].Y;
				
			}			
		}
	}

}

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            
            return true;
        }
    }
    return false;
}

function StartAnimator() {
    // keeps styles
    var objIds = new Array();
    for (n = 0; n < nTotAnims; n++) {
        if (contains(objIds, myAnims[n].objId) == false) {
            objIds.push(myAnims[n].objId);
        }
    }
    for (var i = 0; i < objIds.length; i++) {

        var divObj = document.getElementById("OBJ" + objIds[i]);
        //alert("OBJ" + objIds[i]);

        if (divObj) {
            myObjects[i] = new DivObject(objIds[i]);
            myObjects[i].iniStyle = divObj.getAttribute('style');

            //alert(myObjects[i].iniStyle); 
        } 
    }
    
    window.setInterval("animate()", 40);
}


      function isIE()
      {
	return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);

      }