// 0); var isError = (response.getElementsByTagName("errors").length > 0); var textStatusNew = getDOMText(response.getElementsByTagName("text")[0].childNodes); var success = 0; if (isDone) { var successValue = getDOMText(response.getElementsByTagName("success")[0].childNodes); success = parseInt(successValue); } if (isError) { if (isDone && (success == 0)) { textStatusNew = "ERROR: " + getDOMText(response.getElementsByTagName("errors")[0].childNodes) + "! " + textStatusNew; } } setTextStatus(textStatusNew); var setBar = false; for (var tag in progressBarInfo) { var elem = response.getElementsByTagName(progressBarInfo[tag])[0]; if (!setBar && elem) { var total = parseInt(getDOMText(elem.getElementsByTagName("total")[0].childNodes)); var current = parseInt(getDOMText(elem.getElementsByTagName("current")[0].childNodes)); if (total > 0 && current > 0) { setBar = true; setProgressBarVisibility("progressBar", true); setProgressBar("progressBar", (current*1.0/total)); if (!isDone) { appendTextStatus(" (" + current + "/" + total + ")"); } } } } // Do setInterval again if we''re not done. if (!isDone) { checkStatusID = setInterval(checkStatus, 2000); } else { var successTags = response.getElementsByTagName("success"); var isSuccess = (successTags.length > 0) && (parseInt(getDOMText(successTags[0].childNodes)) == 1); if (isSuccess) { var numDeletedCurrent = parseInt(getDOMText(response.getElementsByTagName("delete")[0].getElementsByTagName("current")[0].childNodes)); var numDeletedTotal = parseInt(getDOMText(response.getElementsByTagName("delete")[0].getElementsByTagName("total")[0].childNodes)); var numAddedCurrent = parseInt(getDOMText(response.getElementsByTagName("add")[0].getElementsByTagName("current")[0].childNodes)); var numAddedTotal = parseInt(getDOMText(response.getElementsByTagName("add")[0].getElementsByTagName("total")[0].childNodes)); appendTextStatus(" (" + numDeletedCurrent + "/" + numDeletedTotal + " events deleted, " + numAddedCurrent + "/" + numAddedTotal + " events added)"); } setProgressBarVisibility("progressBar", false); } } } } function checkStatus() { clearInterval(checkStatusID); doRequest(checkStatusScriptName + "?session_id=" + sessionID, true, gotStatus, "GET", null); } function doRequest(url, async, callback, method, postData) { if (isMozilla) { xmlhttp = new XMLHttpRequest(); // http://www.onlamp.com/pub/a/onlamp/2005/05/19/xmlhttprequest.html // Some versions of mozilla lock up without this, apparently. if (xmlhttp.overrideMimeType) { xmlhttp.overrideMimeType('text/xml'); } } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } if (async) { xmlhttp.onreadystatechange = callback; } method = method.toUpperCase(); xmlhttp.open(method, url, async); if (method == "GET") { if (isMozilla) { xmlhttp.send(null); } else { xmlhttp.send(); } } else { // We''re doing POST. xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); xmlhttp.send(postData); } if (!async) { callback(); } } function initializeProgressBar(id, width, height, color, backgroundColor) { var div1 = document.createElement("div"); div1.style.width = width + "px"; div1.style.height = height + "px"; div1.style.backgroundColor = backgroundColor; div1.style.border = "1px solid #0000ff"; var div2 = document.createElement("div"); div2.style.width = "0px"; div2.style.height = height + "px"; div2.style.backgroundColor = color; div1.appendChild(div2); var container = document.getElementById(id); container.appendChild(div1); } function setProgressBar(barId, fraction) { var container = document.getElementById(barId); var div1 = container.childNodes[0]; var div2 = div1.childNodes[0]; var div1width = parseInt(div1.style.width.substr(0, div1.style.width.length - 2)); div2.style.width = (fraction * div1width) + "px"; } function setProgressBarVisibility(barId, visible) { var container = document.getElementById(barId); container.style.display = ((visible) ? "" : "none"); } function setSessionId(id) { sessionID = id; setProgressBarVisibility("progressBar", false); setTextStatus("Uploading file..."); checkStatusID = setInterval(checkStatus, 1000); } initializeProgressBar("progressBar", 200, 25, "#333333", "#eeeeee"); //]]>