function AjaxRequest() { var req =new Object(); req.timeout =null; req.generateUniqueUrl =true; req.url =window.location.href; req.method ="GET"; req.async =true; req.username =null; req.password =null; req.parameters =new Object(); req.requestIndex =AjaxRequest.numAjaxRequests++; req.responseReceived =false; req.groupName =null; req.queryString =""; req.responseText =null; req.responseXML =null; req.status =null; req.statusText =null; req.aborted =false; req.xmlHttpRequest =null; req.onTimeout=null; req.onLoading=null; req.onLoaded=null; req.onInteractive=null; req.onComplete=null; req.onSuccess=null; req.onError=null; req.onGroupBegin=null; req.onGroupEnd=null; req.xmlHttpRequest =AjaxRequest.getXmlHttpRequest(); if(req.xmlHttpRequest==null) { return null; } req.xmlHttpRequest.onreadystatechange = function(){ if(req==null || req.xmlHttpRequest==null){ return; } if(req.xmlHttpRequest.readyState==1){ req.onLoadingInternal(req); } if(req.xmlHttpRequest.readyState==2){ req.onLoadedInternal(req); } if(req.xmlHttpRequest.readyState==3){ req.onInteractiveInternal(req); } if(req.xmlHttpRequest.readyState==4){ req.onCompleteInternal(req); } }; req.onLoadingInternalHandled=false; req.onLoadedInternalHandled=false; req.onInteractiveInternalHandled=false; req.onCompleteInternalHandled=false; req.onLoadingInternal= function(){ if(req.onLoadingInternalHandled){ return; } AjaxRequest.numActiveAjaxRequests++; if(AjaxRequest.numActiveAjaxRequests==1 && typeof(window['AjaxRequestBegin'])=="function"){ AjaxRequestBegin(); } if(req.groupName!=null){ if(typeof(AjaxRequest.numActiveAjaxGroupRequests[req.groupName])=="undefined"){ AjaxRequest.numActiveAjaxGroupRequests[req.groupName] =0; } AjaxRequest.numActiveAjaxGroupRequests[req.groupName]++; if(AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==1 && typeof(req.onGroupBegin)=="function"){ req.onGroupBegin(req.groupName); } } if(typeof(req.onLoading)=="function"){ req.onLoading(req); } req.onLoadingInternalHandled=true; }; req.onLoadedInternal=function(){ if(req.onLoadedInternalHandled){ return; } if(typeof(req.onLoaded)=="function"){ req.onLoaded(req); } req.onLoadedInternalHandled=true; }; req.onInteractiveInternal= function(){ if(req.onInteractiveInternalHandled){ return; } if(typeof(req.onInteractive)=="function"){ req.onInteractive(req); } req.onInteractiveInternalHandled=true; }; req.onCompleteInternal= function(){ if(req.onCompleteInternalHandled || req.aborted){ return; } req.onCompleteInternalHandled=true; AjaxRequest.numActiveAjaxRequests--; if(AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function"){ AjaxRequestEnd(req.groupName); } if(req.groupName!=null){ AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if(AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function"){ req.onGroupEnd(req.groupName); } } req.responseReceived =true; req.status =req.xmlHttpRequest.status; req.statusText =req.xmlHttpRequest.statusText; req.responseText =req.xmlHttpRequest.responseText; req.responseXML =req.xmlHttpRequest.responseXML; if(typeof(req.onComplete)=="function"){ req.onComplete(req); } if(req.xmlHttpRequest.status==200 && typeof(req.onSuccess)=="function"){ req.onSuccess(req); } else if(typeof(req.onError)=="function"){ req.onError(req); } delete req.xmlHttpRequest['onreadystatechange']; req.xmlHttpRequest =null; }; req.onTimeoutInternal= function(){ if(req!=null && req.xmlHttpRequest!=null && !req.onCompleteInternalHandled){ req.aborted =true; req.xmlHttpRequest.abort(); AjaxRequest.numActiveAjaxRequests--; if(AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function"){ AjaxRequestEnd(req.groupName); } if(req.groupName!=null){ AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if(AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function"){ req.onGroupEnd(req.groupName); } } if(typeof(req.onTimeout)=="function"){ req.onTimeout(req); } delete req.xmlHttpRequest['onreadystatechange']; req.xmlHttpRequest =null; } }; req.process = function(){ if(req.xmlHttpRequest!=null){ if(req.generateUniqueUrl && req.method=="GET"){ req.parameters["AjaxRequestUniqueId"] =new Date().getTime() + "" + req.requestIndex; } var content =null; for(var i in req.parameters){ if(req.queryString.length>0){ req.queryString +="&"; } req.queryString +=encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]); } if(req.method=="GET"){ if(req.queryString.length>0){ req.url +=((req.url.indexOf("?")>-1)?"&":"?") + req.queryString; } } req.xmlHttpRequest.open(req.method,req.url,req.async,req.username,req.password); if(req.method=="POST"){ if(typeof(req.xmlHttpRequest.setRequestHeader)!="undefined"){ req.xmlHttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); } content =req.queryString; } if(req.timeout>0){ setTimeout(req.onTimeoutInternal,req.timeout); } req.xmlHttpRequest.send(content); } }; req.handleArguments = function(args){ for(var i in args){ if(typeof(req[i])=="undefined"){ req.parameters[i] =args[i]; } else{ req[i] =args[i]; } } }; req.getAllResponseHeaders = function(){if(req.xmlHttpRequest!=null){if(req.responseReceived){return req.xmlHttpRequest.getAllResponseHeaders();}logMessage("Cannot getAllResponseHeaders because a response has not yet been received");}}; req.getResponseHeader = function(headerName){ if(req.xmlHttpRequest!=null){ if(req.responseReceived){ return req.xmlHttpRequest.getResponseHeader(headerName); } logMessage("Cannot getResponseHeader because a response has not yet been received"); } }; return req; } AjaxRequest.getXmlHttpRequest=function(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveXObject){/*@cc_on @*/ /*@if(@_jscript_version >=5) try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(E){return null;}}@end @*/ } else { return null; } }; AjaxRequest.isActive =function(){ return(AjaxRequest.numActiveAjaxRequests>0); }; AjaxRequest.get=function(args){ AjaxRequest.doRequest("GET",args); }; AjaxRequest.post=function(args){ AjaxRequest.doRequest("POST",args); }; AjaxRequest.doRequest =function(method,args){ if(typeof(args)!="undefined" && args!=null){ var myRequest =new AjaxRequest(); myRequest.method =method; myRequest.handleArguments(args); myRequest.process(); } }; AjaxRequest.submit = function(theform, args){ var myRequest = new AjaxRequest(); if(myRequest==null){ return false; } var serializedForm =AjaxRequest.serializeForm(theform); myRequest.method =theform.method.toUpperCase(); myRequest.url =theform.action; myRequest.handleArguments(args); myRequest.queryString =serializedForm; myRequest.process(); return true; }; AjaxRequest.serializeForm=function(theform){ var els =theform.elements; var len =els.length; var queryString =""; this.addField = function(name,value){ if(queryString.length>0){ queryString +="&"; } queryString +=encodeURIComponent(name) + "=" + encodeURIComponent(value); }; for(var i=0;i=0){ this.addField(el.name,el.options[el.selectedIndex].value); } break; case 'select-multiple': for(var j=0;j=0;j--) { xItem = cloneNode(xSubmitFormOriginal.elements.item(j)); xSubmitForm.appendChild(xItem); logMessage(xSubmitFormOriginal.elements.item(j).name + ' ' + xSubmitFormOriginal.elements.item(j).type) } } logMessage(xSubmitForm.childNodes.length); if (xSubmitForm != null) { var xName = ''; for (j=xSubmitForm.childNodes.length-1;j>=0;j--) { xItem = xSubmitForm.childNodes.item(j); xName=xItem.name; if (xItem.tagName =='INPUT') { if ((xName!="IW_Action") && (xName!="IW_ActionParam") && (xName!="IW_FormName") && (xName!="IW_FormClass") && (xName!="IW_width") && (xName!="IW_height") && (xName!="IW_TrackID_") && (xName!="IW_SessionID_")) { if (!containsName(xName)) { // Remove all hidden fields except those that have new content xSubmitForm.removeChild(xItem) } } } else { xSubmitForm.removeChild(xItem); } } gSentValue = null; for (j = 0; j < xSubmitForm.childNodes.length; j++) { xItem = xSubmitForm.childNodes.item(j); LocateInputElement(xItem.name, xSubmitForm, ProcessElement); AddChangedControl(xItem.name); if (aSender != null && xItem != null && xItem.name == aSender.name) { gSentValue = xItem.value; gSenderName = aSender.name; } } if (aSender != null) { if (!xSubmitForm.IW_Action){ for (i=0; i '')) { window.ChangedControls += controlName + ","; logMessage('changed control added: ' + controlName); } } function OnControlContentChange(event) { var xEvent; var xTarget; if (event.id){ xTarget = event; } else { xEvent = event ? event : window.event; xTarget = xEvent.srcElement ? xEvent.srcElement : xEvent.target; } while (xTarget.id == "") { if (ie4 || opera_browser) { xTarget = xTarget.parentElement; } else { xTarget =xTarget.parentNode; } } var xControlName = xTarget.id; if (xTarget.name) { xControlName = xTarget.name; } AddChangedControl(xControlName); if ((xTarget.attributes.type != null) && (xTarget.attributes.type.value == "RADIOGROUP")) { AddChangedControl(xControlName+"_INPUT"); } } function processAjaxEvent(event, aSender, aCallback, aDirectSend, aSendControl, aAppend) { var lEvent = event ? event : window.event; var eventParams = ""; if (lEvent) { eventParams = constructEventURL(lEvent); } executeAjaxEvent(eventParams, aSender, aCallback, aDirectSend, aSendControl, aAppend); } window.eventQueue = new Array(); window.lastEvent = null; function processEventQueue() { if (eventQueue.length > 0) { var f = window.eventQueue.shift(); f(); } else { window.lastEvent = null; } } function executeAjaxEvent(eventParams, aSender, aCallback, aDirectSend, aSendControl, aAppend) { logMessage("Process callback " + aCallback); var obj = null; if (window.serverProblem) { return; } if (!window.eventProcessing) { if (aDirectSend) { logMessage("Direct processing " + aCallback); window.eventProcessing = true; SendRequest(eventParams, aSender, aCallback, aSendControl, aAppend); } else { logMessage("Delayed processing " + aCallback); window.eventProcessing = true; obj = { method: function (eventParams, aSender, aCallback, aSendControl, aAppend) { SendRequest(eventParams, aSender, aCallback, aSendControl, aAppend); } } window.setTimeout(delegate(obj, obj.method, eventParams, aSender, aCallback, aSendControl, aAppend), 10); } } else { obj = { method: function (eventParams, aSender, aCallback, aSendControl, aAppend) { SendRequest(eventParams, aSender, aCallback, aSendControl, aAppend); } } logMessage("Event queue length " + eventQueue.length); logMessage("Append callback " + aCallback); window.eventQueue.push(delegate(obj, obj.method, eventParams, aSender, aCallback, aSendControl, aAppend)); } } function SendRequest(eventParams, aSender, aCallback, aSendControl, aAppend) { try { if (aAppend || window.lastEvent == null || window.eventQueue.length == 0 || window.lastEvent != aCallback) { window.lastEvent = aCallback; logMessage("Processing " + aCallback); if (aSender != null) { AddChangedControl(aSender.id); } if (window.ChangedControls.length == 0) { logMessage('Performing AJAX Get ...'); var aURL; var aSessionInfo = '/' + GTrackID + '/' + GAppID; if (aSendControl && aSender != null) { aURL = GURLBase + '/callback' + aSessionInfo + '?callback=' + aCallback + '&' + aSender.name + '=' + aSender.value; } else { aURL = GURLBase + '/callback' + aSessionInfo + '?callback=' + aCallback; } aURL = aURL + eventParams; AjaxRequest.get( { 'url':aURL ,'onSuccess':function(req) { var xmldoc; xmldoc = loadAjaxResponse(req.responseText); processAjaxResponse(xmldoc); processEventQueue(); window.eventProcessing = false; } ,'onError':function(req){ window.eventProcessing = false; if (req.responseText == "") { window.serverProblem = true; } logMessage('Callback Error!\nStatusText='+req.statusText+'\nContents='+req.responseText); } } ); } else { logMessage('Performing AJAX Post ...'); return SendPostRequest(eventParams, aSender, aCallback); } } else { logMessage("Ignore callback " + aCallback); processEventQueue(); } } catch (e){ logMessage('Exception in function SendRequest(): ' + e) } } function loadAjaxResponse(aResponse) { if (window.ActiveXObject) { // IE xXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xXmlDoc.async = false; xXmlDoc.loadXML(aResponse); } else { // Mozilla xXmlDoc = (new DOMParser()).parseFromString(aResponse, "text/xml"); } return xXmlDoc; } function processAjaxResponse(aXmlDoc) { var xSubmitForm = getSubmitForm(); var xData = aXmlDoc.getElementsByTagName("response"); if (xData == null || xData.length != 1) { return; } var xTrackID = aXmlDoc.getElementsByTagName("submit"); if (xTrackID.length > 0) { xSubmitForm.action = xTrackID[0].lastChild.nodeValue; } var xUpdate = aXmlDoc.getElementsByTagName("update"); if (xUpdate.length > 0) { processAjaxUpdate(xUpdate[0].childNodes); } var xExecute = aXmlDoc.getElementsByTagName("execute"); if (xExecute.length > 0) { processAjaxExecute(xExecute[0].childNodes); } } function processAjaxUpdate(aUpdateElements) { for (var i = 0; i < aUpdateElements.length; i++) { var xElement = aUpdateElements[i]; if (xElement.nodeType != 1) { continue; } processNodeElement(xElement); } } function processAjaxExecute(aExecuteElements) { for (var i = 0; i < aExecuteElements.length; i ++) { var xElement = aExecuteElements[i]; if (xElement.nodeType != 1) { continue; } eval(xElement.lastChild.nodeValue); } } function processNodeElement(aElement) { var xID = aElement.getAttribute("id").toUpperCase(); var xType = aElement.getAttribute("type").toUpperCase(); if (xID != null) { var xObject = IWTop().FindElem(xID); if (xObject != null) { for (var i = 0; i < aElement.childNodes.length; i++) { if (aElement.childNodes[i].nodeType != 1) { continue; } var xPropName = aElement.childNodes[i].nodeName; if (aElement.childNodes[i].childNodes.length > 0) { var xPropValue = ''; for(var n=0; n 0) { xObject.removeChild(xObject.childNodes[0]); } var xItemsNode = aElement.childNodes[i]; var xSelected = null; for (var ii = 0; ii < xItemsNode.childNodes.length; ii++) { if (xItemsNode.childNodes[ii].nodeType != 1) { continue; } var xItemNode = xItemsNode.childNodes[ii]; var xIsSelected = xItemNode.getAttribute("selected"); var xItemValue = xItemNode.getAttribute("value"); var xItemText = null; if (xItemNode.lastChild != null) { xItemText = xItemNode.lastChild.nodeValue; } else { xItemText = ""; } if (xType == "IWLISTBOX" || xType == "IWCOMBOBOX") { if (ie4 || opera_browser) { var oOption = document.createElement("OPTION"); oOption.text=xItemText; oOption.value=xItemValue; if (xIsSelected != null) { if (xSelected == null) { xSelected = oOption; } else { if (!(xSelected instanceof Array)) { xSelected = new Array(xSelected); } xSelected.push(oOption); } } xObject.add(oOption); } else { xObject.appendChild(new Option(xItemText, xItemValue, false, xIsSelected != null)); } } else if (xType == "IWRADIOGROUP") { var xVerticalLayout = aElement.getAttribute("layout").toLowerCase() == "vertical"; if (ie4 || opera_browser) { var element = ""; logMessage('create element ' + element); var xRadioInput = document.createElement(element); element = ""; var xSpan = document.createElement(element); xObject.appendChild(xRadioInput); xSpan.innerHTML = xItemText; xObject.appendChild(xSpan); } else { var xRadioInput = document.createElement("input"); xRadioInput.name = xID + "_INPUT"; xRadioInput.id = xID + "_INPUT_" + ii; xRadioInput.type = "radio"; xRadioInput.value = xItemValue; xRadioInput.checked = xIsSelected != null; xObject.appendChild(xRadioInput); var xSpan = document.createElement("span"); xSpan.setAttribute("OnClick", "FindElem('" + xID + "_INPUT_" + ii + "').checked = true;"); xSpan.innerHTML = xItemText; xObject.appendChild(xSpan); } if (xVerticalLayout) { xObject.appendChild(document.createElement("BR")); } } } if (xSelected != null) { var obj = { method: function (xSelected) { if (xSelected instanceof Array) { while (xSelected.length > 0) { xSelected.shift().selected = true; } } else { xSelected.selected = true; } } } window.setTimeout(delegate(obj, obj.method, xSelected), 1); } } } } } } } function setObjectDisabled(aObject, aDisabled) { var xObj = IWTop().FindElem(aObject); xObj.disabled = aDisabled; } function setObjectReadOnly(aObject, aReadOnly) { var xObj = IWTop().FindElem(aObject); xObj.readOnly = aReadOnly; } function setObjectVisibility(aObject, aVisible) { var xObj = IWTop().FindElem(aObject); if (aVisible) { xObj.style.visibility = 'inherit'; } else { xObj.style.visibility = 'hidden'; } } function moveObjectTo(aObject, aX, aY, aZ) { var xObj = IWTop().FindElem(aObject); xObj.style.left = aX; xObj.style.top = aY; if (aZ != -1) { xObj.style.zIndex = aZ; } } function addItemListBox(aListBox, aItemText, aItemValue) { var xObj = IWTop().FindElem(aListBox); var xElem = document.createElement("option"); xElem.text = aItemText; xElem.value = aItemValue; xObj.appendChild(xElem); } function IWTimer(enabled, interval, callback) { this.interval = interval; this.enabled = enabled; this.callback = callback; this.startTimer = function() { this.enabled = true; setTimeout(delegate(this.timeout, this.timeout.method, this), this.interval); }; this.stopTimer = function() { this.enabled = false; }; this.timeout = { method: function (timer) { executeAjaxEvent("", null, timer.callback, true); if (timer.enabled) { setTimeout(delegate(timer.timeout, timer.timeout.method, timer), timer.interval); } } }; if (enabled) this.startTimer(); } function checkBoxClick(event, checkbox) { var controlName = checkbox + "_CHECKBOX"; AddChangedControl(controlName); FindElem(controlName).checked = !FindElem(controlName).checked; FindElem(checkbox).onclick(event); }