/**
 * @author Kelly
 */

var myAnimationEngine=new AnimationClass();
var tempObj=document.createElement("span"); //this is useful for making code completion work in Aptana with passed parameters. Use by substituting your parameter with this in code, and then changing when done

function MakeInvisible(Element)
{
	Element.style.display="none";
	Element.style.visibility="hidden";
	
}

function MakeVisible(Element)
{
	Element.style.display="";
	Element.style.visibility="";

}

function AnimateObjects_SelfDestruct(Element)
{
	if (Element.parentNode)
	{
		Element.parentNode.removeChild(Element);
	}
}

function AnimateObjects_setOpacity(Element,value)
{
    Element.style.opacity = value/10;
    Element.style.filter = 'alpha(opacity=' + value*10 + ')';
	if (value< 1)
	{
		MakeInvisible(Element);
		Element.style.filter = '';
	}
	else
		if (value >= 10)
		{
			Element.style.filter = '';
			MakeVisible(Element);
		}
		else
			MakeVisible(Element);
}

function GetOpacity(Element)
{
	return Element.style.opacity*10
}

function KillEventBubbling(e)
{
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}

function FadeIn(Element,TimeToFadeInSeconds,startingOpacity,endingOpacity)
{
	if (GetOpacity(Element)==endingOpacity)
		return;
	if (Element.animationTag!=null && Element.animationTag!="undefined")
	{
		//myAnimationEngine.RemoveAnimationItem(Element.animationTag);
		//Element.animationTag=null;
	}
	//if (startingOpacity!=null && startingOpacity!="undefined")
	//	AnimateObjects_setOpacity(Element,startingOpacity);
	
	//MakeVisible(Element);
	//Element.className="";
	Element.startingOpacity=startingOpacity;
	Element.endingOpacity=endingOpacity;
	var d=new Date();
	Element.StartTime=d.getTime();
	Element.EndTime=Element.StartTime+(TimeToFadeInSeconds*1000);
	var temphandler=myAnimationEngine.AddAnimationItem(FadeInRun,Element);
	Element.animationTag=temphandler;
}

function FadeInRun(Element)
{
	var d=new Date();
	var CurrentTime=d.getTime();
	var TotalDiff=Element.EndTime-Element.StartTime;
	var CurrentDiff=Element.EndTime-CurrentTime;
	if (CurrentDiff < 0)
	{
		myAnimationEngine.RemoveAnimationItem(Element.animationTag);
		Element.animationTag=null;
	}
	var Percentage=CurrentDiff/TotalDiff;
	var OpacityDiff=Element.startingOpacity-Element.endingOpacity;
	var Opacity=(((OpacityDiff*Percentage))+Element.endingOpacity);
	//Element.innerHTML=Opacity;
	AnimateObjects_setOpacity(Element,10-Opacity);
	
}

function FadeOut(Element,TimeToFadeInSeconds,startingOpacity,endingOpacity)
{
	if (GetOpacity(Element)==endingOpacity)
		return;
	if (Element.animationTag!=null && Element.animationTag!="undefined")
	{
		//myAnimationEngine.RemoveAnimationItem(Element.animationTag);
		//Element.animationTag=null;
	}
	//if (startingOpacity!=null && startingOpacity!="undefined")
	//	AnimateObjects_setOpacity(Element,startingOpacity);
	//Element.className="";
	Element.startingOpacity=startingOpacity;
	Element.endingOpacity=endingOpacity;
	var d=new Date();
	Element.StartTime=d.getTime();
	Element.EndTime=Element.StartTime+(TimeToFadeInSeconds*1000);
	var temphandler=myAnimationEngine.AddAnimationItem(FadeOutRun,Element);
	Element.animationTag=temphandler;
}

function FadeOutRun(Element)
{
	var d=new Date();
	var CurrentTime=d.getTime();
	var TotalDiff=Element.EndTime-Element.StartTime;
	var CurrentDiff=Element.EndTime-CurrentTime;
	if (CurrentDiff < 0)
	{
		myAnimationEngine.RemoveAnimationItem(Element.animationTag);
		Element.animationTag=null;
	}
	var Percentage=CurrentDiff/TotalDiff;
	var OpacityDiff=Element.endingOpacity-Element.startingOpacity;
	var Opacity=(OpacityDiff*Percentage)+Element.startingOpacity;
	//alert(Opacity);
	//Element.innerHTML=Opacity;
	AnimateObjects_setOpacity(Element,Opacity);
	
}

function AutoFadeType(TimeOfFadeIn,TimeOfFadeOut,InFade,OutFade,StartingValue,AnimationTag)
{
	this.TimeOfFadeIn=TimeOfFadeIn;
	this.TimeOfFadeOut=TimeOfFadeOut;
	this.InFade=InFade;
	this.OutFade=OutFade;
	this.StartingValue=StartingValue;
}

function AutoFade(Element,TimeOfFadeIn,TimeOfFadeOut,InFade,OutFade,StartingValue)
{
	var temphandler=myAnimationEngine.AddAnimationItem(AutoFaderun,Element);
	Element.AutoFadeInfo=new AutoFadeType(TimeOfFadeIn,TimeOfFadeOut,InFade,OutFade,StartingValue,temphandler);
	
}

function AutoFaderun(Element)
{
	
}

