var AJAXQUEUE_STATUS_PREPPING=0;var AJAXQUEUE_STATUS_QUEUED=1;var AJAXQUEUE_STATUS_PROCESSING=2;var AJAXQUEUE_STATUS_SENT=3;var AJAXQUEUE_STATUS_COMPLETE=4;var AJAXQUEUE_STATUS_ERROR=5;var AJAXQUEUE_STATUS_CANCELLED=6;function AjaxQueue(){this.bDoCleanup=true;this.iAjaxCallInterval=250;this.iIntervalId=0;this.bIntervalStarted=false;this.locks=new Object;this.calls=new Object;this.strLastCall=null;this.iIteration=0;this.errorHandler=null;this.RegisterErrorHandler=function(A){this.errorHandler=A};this.schedule=function(F,D,I,H,A,G){if(this.calls[F]!=undefined){this.destroyCall(F)
}var C=true;var B=new AjaxQueueCall(D,G);B.callback=I;B.priority=(A==true)?true:false;if(H==true){this.purgeAllCalls()}this.calls[F]=B;this.calls[F].state=AJAXQUEUE_STATUS_PREPPING;try{this.calls[F].xmlObject=this.getNewXMLObject();this.calls[F].xmlObject.onreadystatechange=function(){onReadyStateChangeHelper(F,D)}}catch(E){if(this.errorHandler){this.errorHandler(E)}else{alert("AjaxQueue Scheduling Failed for ["+F+"]: "+E.message)}bRetrun=false}this.calls[F].state=AJAXQUEUE_STATUS_QUEUED;return C};this.isLocked=function(B){if(B!=undefined){if(this.locks[B]!=undefined){return this.locks[B].state
}else{return false}}else{for(var A in this.locks){if(this.locks[A].state==true){return true}}return false}};this.registerLock=function(B){var A=new AjaxQueueLock(B);this.locks[B]=A;return };this.unregisterLock=function(B){try{delete this.locks[B]}catch(A){}return };this.engageLock=function(A){return this.changeLockState(A,true)};this.disengageLock=function(A){return this.changeLockState(A,false)};this.changeLockState=function(C,A){try{this.locks[C].state=A}catch(B){if(this.errorHandler){this.errorHandler(B)}else{alert("AjaxQueue: cannot change lock ["+C+"]: "+B.message)
}}return };this.destroyCall=function(A){if(this.calls[A]!=undefined){this.calls[A].state=AJAXQUEUE_STATUS_CANCELLED;this.abortCall(A);if(this.bDoCleanup==true){this.purgeCall(A)}}};this.purgeCall=function(A){try{delete this.calls[A]}catch(B){}return };this.abortCall=function(A){this.calls[A].xmlObject.abort();return };this.purgeAllCalls=function(){for(var A in this.calls){this.destroyCall(A)}if(this.bDoCleanup==true){this.calls=new Object}};this.getNewXMLObject=function(){var A=null;try{if(window.XMLHttpRequest){A=new XMLHttpRequest()
}else{A=new ActiveXObject("Microsoft.XMLHTTP")}if(A==undefined||A==null){alert("This website requires that your browser support AJAX.  Please update your browser, or use the accesible site links at the bottom of the page to continue.")}}catch(B){alert("This website requires that your browser support AJAX.  Please update your browser, or use the accesible site links at the bottom of the page to continue.")}return A};this.doAjaxHandling=function(){var A=this.getNextPriorityOpenCall();if(A==null){A=this.getNextOpenCall()
}this.strLastCall=A;this.iIteration++;if(A!=null){if(this.isLocked()==true&&this.calls[A].priority==false){this.strLastCall="skip! "+this.isLocked()+" "+this.calls[A].priority;return }this.calls[A].state=AJAXQUEUE_STATUS_PROCESSING;try{var C=this.calls[A];if(C.postData==null){C.xmlObject.open("GET",C.url,true);C.xmlObject.send("")}else{C.xmlObject.open("POST",C.url,true);C.xmlObject.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.xmlObject.setRequestHeader("Content-length",C.postData.length);
C.xmlObject.setRequestHeader("Connection","close");C.xmlObject.send(C.postData)}}catch(B){C.state=AJAXQUEUE_STATUS_ERROR;if(this.errorHandler){this.errorHandler(B)}else{alert("AjaxQueue: Could not act on ["+A+"]:"+B.message)}}}this.cleanUpCalls()};this.getNextOpenCall=function(){for(var A in this.calls){if(this.calls[A].state==AJAXQUEUE_STATUS_QUEUED){return A}}return null};this.getNextPriorityOpenCall=function(){for(var A in this.calls){if(this.calls[A].state==AJAXQUEUE_STATUS_QUEUED&&this.calls[A].priority==true){return A
}}return null};this.cleanUpCalls=function(){if(this.bDoCleanup==true){for(var A in this.calls){if(this.calls[A].state>AJAXQUEUE_STATUS_SENT){this.destroyCall(A)}}return }};this.IsAjaxCapable=function(){var A=this.getNewXMLObject();if(A==undefined||A==null){return false}A=null;return true}}function onReadyStateChangeHelper(A,C){if(g_AjaxQueue.calls[A]){if(g_AjaxQueue.calls[A].state!=AJAXQUEUE_STATUS_PROCESSING){return }if(g_AjaxQueue.calls[A].xmlObject.readyState==4){if(g_AjaxQueue.calls[A].xmlObject.status&&g_AjaxQueue.calls[A].xmlObject.status==200){try{g_AjaxQueue.calls[A].callback(g_AjaxQueue.calls[A].xmlObject);
g_AjaxQueue.calls[A].state=AJAXQUEUE_STATUS_COMPLETE}catch(B){g_AjaxQueue.calls[A].state=AJAXQUEUE_STATUS_ERROR;if(this.errorHandler){this.errorHandler(B)}else{alert("AjaxQueue: callback for ["+A+"] failed: "+B.message)}}}else{if(g_AjaxQueue.calls[A].xmlObject.status==404){g_AjaxQueue.calls[A].state=AJAXQUEUE_STATUS_ERROR;if(this.errorHandler){var B=new Error("404: Page not found, "+C);this.errorHandler(B)}else{alert("AjaxQueue Call Failed for ["+A+"]: ["+C+"] Does Not Exist!")}}else{if(g_AjaxQueue.calls[A].xmlObject.status==500){g_AjaxQueue.calls[A].state=AJAXQUEUE_STATUS_ERROR;
if(this.errorHandler){var B=new Error("500: Internal server error, "+C);this.errorHandler(B)}else{alert("AjaxQueue Call Failed for ["+A+"]: ["+C+"] Server Error!")}}}}}}}function AjaxQueueCall(B,A){this.url=B;this.postData=A;this.xmlObject=null;this.state=AJAXQUEUE_STATUS_PREPPING;this.callback=null;this.priority=0}function AjaxQueueLock(A){this.name=A;this.state=false}function CyberGetNodeValue(D,A){try{if(D){var B=D.getElementsByTagName(A);if(B&&B[0]){if(B[0].firstChild){return B[0].firstChild.nodeValue}}}}catch(C){}return""
}function CyberUrlEncode(G){var C="";var A=0;G=G.toString();var F=/(^[a-zA-Z0-9_.]*)/;while(A<G.length){var D=F.exec(G.substr(A));if(D!=null&&D.length>1&&D[1]!=""){C+=D[1];A+=D[1].length}else{if(G[A]==" "){C+="+"}else{var B=G.charCodeAt(A);var E=B.toString(16);C+="%"+(E.length<2?"0":"")+E.toUpperCase()}A++}}return C}g_AjaxQueue=new AjaxQueue();g_bAjaxEnabled=g_AjaxQueue.IsAjaxCapable();function fireAjaxQueue(){if(g_AjaxQueue.bIntervalStarted==false){g_AjaxQueue.iIntervalId=setInterval(function(){g_AjaxQueue.doAjaxHandling()
},g_AjaxQueue.iAjaxCallInterval);g_AjaxQueue.bIntervalStarted==true}}RfgQueueCommand("fireAjaxQueue();");
