/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var fadeTime = 1000.0;

function fade(elementID, type)
{
    var speed;
    var curve;
    switch(type)
    {
        case "slow":
            speed=1;
            curve=0;
            break;
        case "normal":
            speed=2;
            curve=0;
            break;
        case "fast":
            speed=3;
            curve=0;
            break;
        case "ramp in":
            curve=1;
            speed=2;
            break;
        case "ramp out":
            curve=2;
            speed=2;
            break;
        default:
            speed=2;
            curve=0;
            break;
    }
    var elem=document.getElementById(elementID);
    elem.style.visibility='visible';
    var opac=elem.style.opacity;
    
    if(elem!=null)
    {
        if(elem.fade==null)
        {
            if(opac=='1')
            {
                elem.fade=2;
            }
            else
            {
                elem.fade=-2;
            }
        }
        if(elem.fade==1||elem.fade==-1)
        {
            elem.fade=(elem.fade==1?-1:1); //switch
            elem.FadeTimeLeft=fadeTime-elem.FadeTimeLeft;
        }
        else
        {
            elem.fade=(elem.fade==2?-1:1);
            elem.FadeTimeLeft=fadeTime;
            setTimeout("animateFade("+new Date().getTime()+",'"+elementID+"','"+speed+"','"+curve+"')", 24);

        }
    }
}

function animateFade(tick, elementID, speed, curve)
{
    var current=new Date().getTime();
    var elapsed =current-tick; //elapsed
    switch(speed)
    {
        case '1':
            break;
        case '2':
            elapsed*=2;
            break;
        case '3':
            elapsed*=4;
        default:
            break;
    }
    var elem=document.getElementById(elementID);
    if(curve==1)
    {
        elapsed*=(elem.FadeTimeLeft*elem.FadeTimeLeft)/(fadeTime*fadeTime);
        elapsed+=10;
    }
    else if(curve==2)
    {
        var diff=fadeTime-elem.FadeTimeLeft;
        elapsed*=(diff/fadeTime);
        elapsed+=4;

    }
    if(elem.FadeTimeLeft<=elapsed) //complete
    {
        elem.style.opacity=(elem.fade==1?'1':'0');
        elem.fade=(elem.fade==1?2:-2);
        return;
    }
    elem.FadeTimeLeft-=elapsed;
    var opacity=elem.FadeTimeLeft/fadeTime;
    if(elem.fade==1)
    {
        opacity=1-opacity;
    }
    elem.style.opacity=opacity;
    setTimeout("animateFade("+current+",'"+elementID+"','"+speed+"','"+curve+"')", 24);
}

function fadeIn(elementID, speed)
{
    var elem=document.getElementById(elementID);
    if(elem!=null)
    {
        if(elem.style.opacity==null || elem.style.opacity=='')
        {
            elem.style.opacity='1.0';
        }
        if(elem.style.opacity<1.0)
        {
            elem.style.visibility="visible";
            setTimeout("animateFadeIn('"+elementID+"','"+speed+"')", 48/speed);
        }
    }
}

function animateFadeIn(elementID, speed)
{
    var elem=document.getElementById(elementID);
    elem.style.opacity=(parseFloat(elem.style.opacity))+0.1;
    if(elem.style.opacity<1)
    {
        setTimeout("animateFadeIn('"+elementID+"','"+speed+"')", 48/speed);
    }
}

function fadeOut(elementID, speed)
{

    var elem=document.getElementById(elementID);
    if(elem!=null)
    {

        if(elem.style.opacity==null || elem.style.opacity=='')
        {
            elem.style.opacity='0.0';
        }
        if(elem.style.opacity>0.0)
        {
            setTimeout("animateFadeOut('"+elementID+"','"+speed+"')", 48/speed);
        }
    }
}

function animateFadeOut(elementID, speed)
{
    var elem=document.getElementById(elementID);
    elem.style.opacity=(parseFloat(elem.style.opacity))-0.1;
    if(elem.style.opacity>0)
    {
        setTimeout("animateFadeOut('"+elementID+"','"+speed+"')", 48/speed);
    }
    else
    {
        elem.style.visibility="hidden";
    }
}
