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);
}
}
}