var asyn_imported = 0;var asyn_isIE =  (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) ;var asyn_srcs = new Array();var asyn_reportErrors = new Array();var asyn_reportErrorCheckHandles = new Array();var asyn_timeouts = new Array();var asyn_timeoutRems = new Array();var asyn_errors = new Array();var asyn_rets = new Array();var checkPeriod = 100;var asyn_returnObject = new Array();var asyn_returnXMLObject = new Array();var asyn_errorMsgs = new Array();var user_defined_error = -10240;function asyn_setSuccess(asynReqId){asyn_rets[asynReqId] = true;}function asyn_notifyReturn(asynReqId, obj){var i = asynReqId;var curSrc = asyn_srcs[i];var curReportError = asyn_reportErrors[i];var curTimeout = asyn_timeouts[i];curReportError(asynReqId, curSrc, 0, obj);}function asyn_addReturnObject(asynReqId, obj){asyn_setSuccess(asynReqId);asyn_returnObject[asynReqId] = obj;asyn_notifyReturn(asynReqId, obj);}function asyn_getReturnObject(asynReqId){return asyn_returnObject[asynReqId];}function asyn_setError(asynReqId, errorCode, errorMsg){asyn_rets[asynReqId] = true;asyn_errors[asynReqId] = errorCode;asyn_errorMsgs[asynReqId] = errorMsg;}//attrs: childNodes(Array),nodeName, nodeValue;innerText//funs:  getAttribute()function asyn_getReturnXMLObject(asynReqId){return asyn_returnXMLObject[asynReqId];}function asyn_clearReturnObject(asynReqId){ asyn_returnObject[asynReqId] = null;} function asyn_addReturnXMLObject(asynReqId, xml){asyn_setSuccess(asynReqId);var root = null;if (asyn_isIE){var doc=new ActiveXObject("Microsoft.XMLDOM"); doc.async="false"; doc.loadXML(xml); if (doc.childNodes.length >= 1){root = doc.childNodes[1];}else{root = doc.childNodes[0];}}	else{var parser = new DOMParser();var dom = parser.parseFromString(xml, "text/xml");if (dom.documentElement.nodeName == "parsererror"){ // error when parsing}root = dom.documentElement;}asyn_returnXMLObject[asynReqId] = root;asyn_notifyReturn(asynReqId, root);/*	alert("root" + root.nodeName);for (var i = 0; i <root.childNodes.length; i++){alert("n:"+root.childNodes[i].nodeName);alert("v:" + root.childNodes[i].nodeValue);}*/}function asyn_private_reportErrorProxy(asynReqId){var i = asynReqId;var curSrc = asyn_srcs[i];var curReportError = asyn_reportErrors[i];var curTimeout = asyn_timeouts[i];asyn_timeoutRems[i] -= checkPeriod;if (asyn_rets[i]){clearInterval(asyn_reportErrorCheckHandles[i]);if (asyn_errors[i] < 0){curReportError(asynReqId, curSrc, asyn_errors[i], asyn_errorMsgs[asynReqId]);}}else if (asyn_timeoutRems[i] <= 0){clearInterval(asyn_reportErrorCheckHandles[i]);curReportError(asynReqId, curSrc, curTimeout, asyn_errorMsgs[asynReqId]);}}function asyn_private_import(asynReqId){var i = asynReqId;var s = document.createElement("script");var curSrc = asyn_srcs[i];var curReportError = asyn_reportErrors[i];var curTimeout = asyn_timeouts[i];s.setAttribute("src", curSrc);s.setAttribute("charset", "UTF-8");//alert(curSrc);var curreportErrorCheckHandle = setInterval("asyn_private_reportErrorProxy(" + asynReqId+");", checkPeriod);asyn_reportErrorCheckHandles[i] = curreportErrorCheckHandle;document.body.appendChild(s);}//resultHandler --> function (asynReqId, jsSrc, timeoutOrErrorCode, resultObject);function asyn_import(jsSrc, timeout, resultHandler){asyn_imported++;//var l = "<script src='" + jsSrc + "'>";//var l = jsSrc;//var curSrcVar = "asyn_src_"+asyn_imported;//eval(curSrcVar + " = \"" + l + "\";");//alert(curVar + "=" + l);//document.writeln(l));var ic = asyn_imported;jsSrc += "edu_calis_asyn_asynReqId=" + ic;asyn_srcs[ic] = jsSrc;asyn_reportErrors[ic] = resultHandler;asyn_timeouts[ic] = 	asyn_timeoutRems[ic] = timeout;asyn_rets[ic] = false;setTimeout("asyn_private_import(" + ic + ");", 0);return ic;}
