var req;
var lmMessages;
var lmCurMsg;
var lmUrl;
var TimeToFade = 1000.0;
var lmTimeToShow = 5000.0;

function showMessage() {
    var lmMsg = document.getElementById('liveMonitor');
    if (lmMsg == null) {
        return;
    }
    if (lmCurMsg < lmMessages.length) {
        lmMsg.FadeState = -2;
        lmMsg.style.opacity = '0';
        lmMsg.style.filter = 'alpha(opacity=0)';
        lmMsg.innerHTML = lmMessages[lmCurMsg];
        fade('liveMonitor');
        ++lmCurMsg;
        setTimeout("showMessage()", lmTimeToShow);
        setTimeout("fade('liveMonitor')", lmTimeToShow - TimeToFade * 2);
    } else if (lmCurMsg == lmMessages.length) {
        lmMsg.innerHTML = "&nbsp;";
        loadXMLDoc(lmUrl);
    }
}
function processReqChange()
{
    if (req.readyState == 4) {
        if (req.status == 200) {
            var response = req.responseXML.documentElement;
            lmMessages = new Array();
            lmCurMsg = 0;
            var i = 0;
            for (var event = response.firstChild; event != null; event = event.nextSibling) {
                if (event.text != null) {
                    lmMessages[i] = event.text;
                } else {
                    lmMessages[i] = event.textContent;
                }
                ++i;
            }
            showMessage();
        }
    }
}
function loadXMLDoc(url)
{
    lmUrl = url;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}
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 + "')", 33);
    }
}
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 + "')", 33);
}
