if (!ask_forum_stoprefresh) ajaxUpdate = setInterval("getUpdate()", 1000);

var timer = ajaxRefresh;
var updateInProgress = false;
var color = "";

function debug(e) {
        document.getElementById("debug").innerHTML = document.getElementById("debug").innerHTML + e;
}

function setTimer() {
        ajaxRefresh = document.getElementById("refresh").value;
        timer = ajaxRefresh;
}

function showTimer(updates) {
        var message = "";
        if (updates == -22) {
                updateInProgress = false;
                document.getElementById("ajaxcounterstatus").innerHTML = ajaxError;
                message = "..........";
        } else if (updates > -1) {
                updateInProgress = false;
                var now = new Date();
                document.getElementById("ajaxcounterstatus").innerHTML = ajaxLastUpdate + " "
                 + now.getHours() + ":" + (now.getMinutes() < 10 ? "0" : '') + now.getMinutes() + ":"
                 + (now.getSeconds() < 10 ? "0" : '')  + now.getSeconds() + " (" + updates + ") ";
                message = "..........";
        } else {
                if (updateInProgress) {
                        message = ajaxUpdating;
                } else {
                        for (var i = Math.round(timer/(ajaxRefresh/10)); i >0 ; i--) message += ".";
                }
        }
        document.getElementById("ajaxcounter").innerHTML = message + " ";
}

function getUpdate() {
        if (!updateInProgress) {
                timer = timer - 1;
                showTimer(-1);
                if (timer <= 0) {
                        updateInProgress = true;
                        showTimer(-1);
                        xmlreqGET('update', 'text', ajaxURL + '&popup=updateforum&askcmslastpost=' + askcmslastpost, 1);
                        timer = ajaxRefresh;
                }
        }
}


function applyUpdate() {
  for (var i = askcmstext6.length - 1; i >=0 ; i--) {
    color = (color==askcmscolor2 ? askcmscolor1 : askcmscolor2);
    var tableRef = document.getElementById("askcmscomments");
    var newRow   = tableRef.insertRow(1);
        newRow.style.backgroundColor = color;
    var newCell  = newRow.insertCell(0);
        newCell.className = "c_small";
        newCell.style.width = "75%";
        newCell.style.verticalAlign = "top";
        newCell.innerHTML = askcmstext2[i];
    var newCell  = newRow.insertCell(1);
        newCell.className = "c_small";
        newCell.style.width = "25%";
        newCell.style.verticalAlign = "top";
        newCell.innerHTML = "\n"+'<table border="0" cellspacing="0" cellpadding="0" width="100%">'
        + '<tr><td class="c_small"><b>' + askcmstext3[i]
        + '</b></td><td class="c_small" align=right>' + askcmstext7[i] + '</td></tr></table>'
        + askcmstext6[i] + "\n"
        + '<table border="0" cellspacing="0" cellpadding="0" width="100%">'
        + '<tr><td>' + askcmstext5[i] + '<td><td class=c_small>' + askcmstext4[i] + '</td></tr></table>';
    /*
    text2: comment
    text3: author
    text4: starsposts
    text5: emblem
    text6: date
    text7: editmaillinks
    */
  }
  try {
          document.getElementById("askcmsactivetopics").innerHTML = askcmsactivetopics;
          document.getElementById("askcmswhoisonline").innerHTML = askcmswhoisonline;
          document.getElementById("askcmsnotification").innerHTML = askcmsnewmail;
  } catch(e) {}
  showTimer(askcmstext6.length);
}

//Handles the response of received stream
function ajax_response(error, id, type, xmldoc) {
        if (error) {
                switch (id) {
                 case 'update':
                        showTimer(-22);
                        break;
                 default:
                }
        } else {
                xmldocs[id] = xmldoc;
                switch (id) {
                 case 'update':
                        try{eval(xmldocs[id]);applyUpdate();}catch(e){showTimer(-22);}
                        break;
                 default:
                }
        }
}

//Handles response of received WCS stream, implements retry on error
function handle_response(error, id, type, url, retryOnError, xmldoc) {
        if (error && retryOnError > 0) xmlreqGET(id, type, url, retryOnError - 1);
        else ajax_response(error, id, type, xmldoc);
}

//***********************************
//BEGIN: AJAX (XML HTTP Request object) code
//***********************************
var xmlreqs = new Array();
var loadingbackup = false;
var xmldocs = new Array();

function CXMLReq(id, type, xmlhttp, url, retryOnError) {
        this.id = id;
        this.type = type;
        this.xmlhttp = xmlhttp;
        this.url = url;
        this.retryOnError = retryOnError;
}

function xmlreqGET(id, type, url, retryOnError) {
        var xmlhttp=false;
        retryOnError = typeof(retryOnError) == "undefined" ? 0 : parseInt(retryOnError);

        if (window.XMLHttpRequest) { // Mozilla, etc.
                try {
                        if (netscape.security.PrivilegeManager.enablePrivilege)
                                netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
                } catch (e) {}
                xmlhttp=new XMLHttpRequest();
                var xmlreq = new CXMLReq(id, type, xmlhttp, url, retryOnError);
                xmlreqs.push(xmlreq);
                xmlhttp.onreadystatechange = xmlhttpChange;
                xmlhttp.open("GET",url,true);
                xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
                xmlhttp.setRequestHeader("Content-Type", "application/x-javascript; charset=windows-1250");
                xmlhttp.send(null);
        } else if (window.ActiveXObject) { // IE
                try {
                        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try {
                                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                }
                if (xmlhttp) {
                        var xmlreq = new CXMLReq(id, type, xmlhttp, url, retryOnError);
                        xmlreqs.push(xmlreq);
                        xmlhttp.onreadystatechange = xmlhttpChange;
                        xmlhttp.open("GET",url,true);
                        xmlhttp.send();
                }
        }
}

function xmlhttpChange() {
        if (typeof(window['xmlreqs']) == "undefined") return;
        var id = null;
        var type = null;
        var xmldoc = null;
        var url = null;
        var retryOnError = null;

        for (var i=0; i < xmlreqs.length; i++) {
                if (xmlreqs[i].xmlhttp.readyState == 4) {
                        id = xmlreqs[i].id;
                        type = xmlreqs[i].type;
                        url = xmlreqs[i].url;
                        retryOnError = xmlreqs[i].retryOnError;
                        if (xmlreqs[i].xmlhttp.status == 200 || xmlreqs[i].xmlhttp.status == 304) {
                                // 200 OK
                                xmldoc = (type == "xml" ? xmlreqs[i].xmlhttp.responseXML : xmlreqs[i].xmlhttp.responseText);
                                xmlreqs.splice(i,1); i--;
                                handle_response(false, id, type, url, retryOnError, xmldoc);
                        } else {
                                // error
                                xmlreqs.splice(i,1); i--;
                                handle_response(true, id, type, url, retryOnError, '');
                        }
                }
        }
}


//***********************************
//END: AJAX (XML HTTP Request object) code
//***********************************


