var timeToFade = 1000.0;

function fade(eid) {
    var element = document.getElementById(eid);

    if (element == null) return;
     
    if (element.fadeState == null) {
        if (element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
            element.fadeState = -2;
        }
        else {
            element.fadeState = 2;
        }
    }
     
    if (element.fadeState == 1 || element.fadeState == -1) {
        element.fadeState = element.fadeState == 1 ? -1 : 1;
        element.fadeTimeLeft = timeToFade - element.fadeTimeLeft;
    }
    else {
        element.fadeState = element.fadeState == 2 ? -1 : 1;
        element.fadeTimeLeft = timeToFade;

        setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 25);
    }
}

function animateFade(lastTick, eid) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;
 
    var element = document.getElementById(eid);
 
    if (element.fadeTimeLeft <= elapsedTicks) {
        element.style.opacity = element.fadeState == 1 ? '1' : '0';

        element.style.filter = 'alpha(opacity = ' + (element.fadeState == 1 ? '100' : '0') + ')';

        element.fadeState = element.fadeState == 1 ? 2 : -2;

        return;
    }
 
    element.fadeTimeLeft -= elapsedTicks;

    var newOpVal = element.fadeTimeLeft/timeToFade;

    if (element.fadeState == 1) newOpVal = 1 - newOpVal;

    element.style.opacity = newOpVal;
    element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
    setTimeout("animateFade(" + curTick + ",'" + eid + "')", 25);
}

function fade2(eid) {
    var element = document.getElementById(eid);

    if (element == null) return;
     
    if (element.fadeState == null) {
        if (element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
            element.fadeState = -2;
        }
        else {
            element.fadeState = 2;
        }
    }
     
    if (element.fadeState == 1 || element.fadeState == -1) {
        element.fadeState = element.fadeState == 1 ? -1 : 1;
        element.fadeTimeLeft = timeToFade - element.fadeTimeLeft;
    }
    else {
        element.fadeState = element.fadeState == 2 ? -1 : 1;
        element.fadeTimeLeft = timeToFade;

        setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 25);
    }
}

function animateFade2(lastTick, eid) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;
 
    var element = document.getElementById(eid);
 
    if (element.fadeTimeLeft <= elapsedTicks) {
        element.style.opacity = element.fadeState == 1 ? '1' : '0';

        element.style.filter = 'alpha(opacity = ' + (element.fadeState == 1 ? '100' : '0') + ')';

        element.fadeState = element.fadeState == 1 ? 2 : -2;

        return;
    }
 
    element.fadeTimeLeft -= elapsedTicks;

    var newOpVal = element.fadeTimeLeft/timeToFade;

    if (element.fadeState == 1) newOpVal = 1 - newOpVal;

    element.style.opacity = newOpVal;
    element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
    setTimeout("animateFade2(" + curTick + ",'" + eid + "')", 25);
}

