/*********************************************************************/
function fadeIn(eid, fadeDelay) {
    var element = document.getElementById(eid)
    element.fadeState = -2
    fade(eid, fadeDelay)
}
function fadeOut(eid, fadeDelay) {
    var element = document.getElementById(eid)
    element.fadeState = 2
    fade(eid, fadeDelay)
}
function fade(eid, fadeDelay) {
    // fades an element in or out (toggles)
    /*'FadeState', which is a property that this function will create on the element when fade is called on that element for the first time.
    FadeState  is one of 4 numbers - 
    2 means that the element is fully opaque, 
    1 means that the element is currently fading from transparent to opaque, 
    -1 means that the element is currently fading from opaque to transparent, and 
    -2 means that the element is fully transparent. 
    If the FadeState property doesn't exist, we try and determine it from the state of the opacity css element.*/
    var element = document.getElementById(eid)
    if (element == null) return;
    element.fadeDelay = fadeDelay;
    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 = element.fadeDelay - element.fadeTimeLeft;
    }
    else {
        element.fadeState = element.fadeState == 2 ? -1 : 1;
        element.fadeTimeLeft = element.fadeDelay;
        element.style.display = 'block';
        setTimeout("fadeAnimate(" + new Date().getTime() + ",'" + eid + "')", 33);
    }
}
function fadeAnimate(lastTick, eid) {
    var element = document.getElementById(eid)
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;
    if (element == null) return;
    if (element.fadeTimeLeft <= elapsedTicks) {
        elementOpacitySet(element, element.fadeState == 1 ? '1' : '0');
        element.fadeState = element.fadeState == 1 ? 2 : -2;
        if (element.fadeState == -2) element.style.display = 'none';
        return;
    }
    element.fadeTimeLeft -= elapsedTicks;
    var newOpVal = element.fadeTimeLeft / element.fadeDelay;
    if (element.fadeState == 1)
        newOpVal = 1 - newOpVal;
    elementOpacitySet(element, newOpVal);
    setTimeout("fadeAnimate(" + curTick + ",'" + eid + "')", 33);
}
function elementOpacitySet(element, opacity) {
    //all other browsers
    element.style.opacity = opacity
    // ie8
    element.style.filter = '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')";'
    // ie7
    element.style.filter = 'alpha(opacity = ' + opacity * 100 + ')';
}
