var submitArray = new Array(); function asyncSend(transactionId, paramPath, resultPath, responseHandler, errorHandler) { var submitUUID = "" + getRandomSubmitUUID(); var submit = TFHttpService.createInstance(submitUUID); submit.URL = getActionURL(transactionId); submit.mediaType = "application/x-www-form-urlencoded"; submit.method = "POST"; submit.onResponse = "defualtResponseHandler"; submit.onError = "defualtErrorHandler"; if (submitArray == undefined || submitArray == null) { submitArray = new Array(); } var submitItem = new Object(); submitItem.trid = transactionId; submitItem.resultPath = resultPath; submitItem.submitUUID = submitUUID; submitItem.responseHandler = responseHandler; submitItem.errorHandler = errorHandler; submitArray.push(submitItem); submit.send(paramPath); } function defualtResponseHandler(submitUUID, response, responseType) { if (submitArray == null || submitArray.length <= 0) { messageBox("submit ��� ó�� �� ������ �߻��Ͽ����ϴ�.", "C"); return; } var submitItem = getSubmitItem(submitUUID); bindInstance(submitUUID, response, responseType, submitItem.resultPath); try { eval(submitItem.responseHandler+"()"); } catch (e) { messageBox(e.message, "C"); return; } } function defualtErrorHandler(submitUUID, errorInfo) { var submitItem = getSubmitItem(submitUUID); if (typeof(submitItem.errorHandler) != "undefined") { try { eval(submitItem.errorHandler); } catch (e) { messageBox(e.message, "C"); return; } } else { messageBox(errorInfo, "C"); return; } } function bindInstance(submitUUID, response, responseType, resultPath) { var parentNodePath = resultPath.substring(0, resultPath.lastIndexOf("/")); var lastPath = resultPath.split(/\ model.removeNode(parentNodePath); model.makeNode(parentNodePath); model.createChild("xforms:instance", "id:"+submitUUID); if (responseType == "xml") { if(model.instances.item(submitUUID).loadXML(response)) { var targetNode = model.instances.item(0).selectSingleNode(parentNodePath); var sourceNode = model.instances.item(submitUUID).selectSingleNode("//" + lastPath + "/.."); if (targetNode != undefined && sourceNode != undefined) { var sourceChildNodes = sourceNode.childNodes; while (childNode = sourceChildNodes.nextNode()) { targetNode.appendChild(childNode); } } model.removeChild(submitUUID); } } model.refresh(); } function bindInstanceOld(submitUUID, response, responseType, resultPath) { model.removeNode(resultPath); model.makeNode(resultPath); var lastPath = resultPath.split(/\ var xml; if (responseType == "xml") { xml = stringToXML(response); copyNodeToInstance(xml, resultPath, model.instances.item(0), resultPath); } model.refresh(); } function copyNodeToInstance(srcXML, srcPath, destInstance, destPath) { if (srcXML == undefined) { return; } if (destInstance == undefined) { return; } model.removeNode(destPath); model.makeNode(destPath); var lastPath = destPath.split(/\ var srcNodeList = srcXML.getElementsByTagName(lastPath); for (var idx = 0 ; idx < srcNodeList.length ; idx++) { var resultPath = srcPath + "[" + idx + "]"; if (idx == 0 ) { resultPath = srcPath; } model.makeNode(resultPath); var childNodes = srcNodeList[idx].childNodes; for (var cIdx = 0 ; cIdx < childNodes.length ; cIdx++) { var child = childNodes[cIdx]; var childPath = resultPath + "/" + child.nodeName; model.makeNode(childPath); model.setValue(childPath, child.text); } } model.refresh(); } function stringToXML(xmlStr) { if (typeof htmlwindow.DOMParser != "undefined") { return ( new htmlwindow.DOMParser() ).parseFromString(xmlStr, "text/xml"); } else if (typeof htmlwindow.ActiveXObject != "undefined" && new htmlwindow.ActiveXObject("Microsoft.XMLDOM")) { var xmlDoc = new htmlwindow.ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlStr); return xmlDoc; } else { throw new Error("No XML parser found"); } return null; } function getSubmitItem(submitUUID) { if (submitUUID == undefined || submitUUID == "") { messageBox("submitItem ȹ�� ����!", "C"); return; } if (submitArray.length <= 0) { messageBox("submitArray is Empty!", "C"); return; } for (var idx = 0 ; idx < submitArray.length ; idx++) { var curItem = submitArray[idx]; if (submitUUID == curItem.submitUUID) { submitArray[idx] = null; makeFullArray(submitArray); return curItem; } } } function makeFullArray(array) { for (var idx = 0 ; idx < array.length ; idx++) { if (array[idx] == undefined || array[idx] == null) { var lastItem = array.pop(); if (lastItem != null) { array[idx] = lastItem; } } } } function getRandomSubmitUUID() { var s = [], itoh = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']; for (var i = 0; i <36; i++) { s[i] = Math.floor(Math.random()*0x10); } s[14] = 4; s[19] = (s[19] & 0x3) | 0x8; for (var i = 0; i <36; i++) { s[i] = itoh[s[i]]; } return s.join(''); }