var bolWaiting = false; var lngWaiting = 0; function initiateHourglass() { bolWaiting = true; lngWaiting = 0; doHourglass(); } function doHourglass() { var aryHourglass = getIndicator(6); if (bolWaiting) { if (document.getElementById('AJAXHourglass')) { setElementInnerHtml('AJAXHourglass', aryHourglass[lngWaiting]); lngWaiting = lngWaiting + 1; if ((lngWaiting % aryHourglass.length) == 0) lngWaiting = 0; window.setTimeout('doHourglass()', 100); } } } function stopHourglass() { bolWaiting = false; } function getIndicator(intStyle) { var aryProgress; switch(intStyle) { case 1: aryProgress = new Array('[|------]', '[||-----]', '[|||----]', '[||||---]', '[|||||--]', '[||||||-]', '[|||||||]'); break; case 2: aryProgress = new Array('\', '|', '/', '-'); break; case 3: aryProgress = new Array('[|------]', '[||-----]', '[|||----]', '[||||---]', '[|||||--]', '[||||||-]', '[|||||||]', '[-||||||]', '[--|||||]', '[---||||]', '[----|||]', '[-----||]', '[------|]', '[-------]'); break; case 4: aryProgress = new Array('===------', '-===-----', '--===----', '---===---', '----===--', '-----===-', '------===', '=------==', '==------='); break; case 5: aryProgress = new Array('loading...', 'loading...', 'Loading...', 'LOading...', 'LOAding...', 'LOADing...', 'LOADIng...', 'LOADINg...', 'LOADING...', 'LOADINg...', 'LOADIng...', 'LOADing...', 'LOAding...', 'LOading...', 'Loading...'); break; case 6: aryProgress = new Array('•º°”˜¨`¨˜”°º', 'º•º°”˜¨`¨˜”°', '°º•º°”˜¨`¨˜”', '”°º•º°”˜¨`¨˜', '˜”°º•º°”˜¨`¨', '¨˜”°º•º°”˜¨`', '`¨˜”°º•º°”˜¨', '¨`¨˜”°º•º°”˜', '˜¨`¨˜”°º•º°”', '”˜¨`¨˜”°º•º°', '°”˜¨`¨˜”°º•º', 'º°”˜¨`¨˜”°º•'); break; default: alert('Invalid style: ' + intStyle); } return aryProgress; } function AJAXContainer(strURL, fncCallback) { var objHTTP = createRequestObject(); objHTTP.onreadystatechange = receiveCallback; function receiveCallback() { if (objHTTP.readyState == 4) { if (objHTTP.status == 200) { stopHourglass(); if (objHTTP.responseXML.xml) { if (objHTTP.responseXML.xml.length > 0) { var objToSend = objHTTP.responseXML; } else { var objToSend = objHTTP.responseText; } } else { var xmlString = new XMLSerializer().serializeToString(objHTTP.responseXML); if (xmlString.length > 0) { var objToSend = objHTTP.responseXML; } else { var objToSend = xmlString; } } if (fncCallback) { fncCallback(objToSend); } else { doXMLDesignatedAction(objToSend); } } else { alert('Error:\nHTTP status is ' + objHTTP.status + '\n' + objHTTP.statusText); // + '\n' + objHTTP.responseText) } } } this.doGet = function() { initiateHourglass(); objHTTP.open("GET", strURL, true); objHTTP.send(null); } this.doPost = function(strData){ initiateHourglass(); objHTTP.open("POST", strURL, true); objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); objHTTP.send(strData); } function createRequestObject() { var aryProgIDs = new Array( 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ); var objRequest = null; if (window.XMLHttpRequest) { objRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { var success = false; for (var i = 0; i < aryProgIDs.length && !success; i++) { try { objRequest = new ActiveXObject(aryProgIDs[i]); success = true; } catch (e) { } } } return objRequest; } } function doXMLDesignatedAction(objXML) { if (typeof(objXML) == 'string') { alert('Malformed XML returned by server-side component:\n' + objXML.substring(7000, 9000)); return; }; for (var i = 0; i < objXML.getElementsByTagName('function').length; i++){ var objFunction = objXML.getElementsByTagName('function')[i]; var strCall = objFunction.getAttribute('name'); strCall = strCall + '('; for (var j = 0; j < objFunction.getElementsByTagName('parameter').length; j++){ var objParameter = objFunction.getElementsByTagName('parameter')[j].firstChild; // ToDo: Only surround the value in quotes if type = char. strParm = objParameter.data strParm = strParm.replace(/'/g, ''); strParm = strParm.replace(/\n/g, ''); strCall = strCall + '\'' + strParm + '\''; if (j < (objFunction.getElementsByTagName('parameter').length - 1)) strCall = strCall + ', '; } strCall = strCall + ')'; eval(strCall); } } function setElementInnerHtml(strId, strHtml) { var objControl = document.getElementById(strId); try { objControl.innerHTML = strHtml; } catch (e) { try { objControl.value = strHtml; } catch (e) { alert('error locating control: ' + strId); } } }