export declare const NSAjaxCode = "var nsModuleExport = function(root,name,prototype)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\tmodule.exports[name] = prototype;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\tdefine(name,[], function () {return prototype;});\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\texports[name] = prototype;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\troot[name] = prototype;\r\n\t\t}\r\n\t};var nsIsWeb = function(root)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};if(!nsIsWeb())\r\n\t\t{\r\nvar nsutilRef = require('./nsUtil.min.js');\r\nvar NSUtil = nsutilRef.NSUtil;\r\n\r\n\t\t}\r\n\"use strict\";\r\nvar NSAjax = (function()\r\n{\r\n\tfunction NSAjax(defaultSetting) \r\n\t{\r\n\t\tvar self = this;\r\n\t\tself.__defaultSetting = defaultSetting || {};\r\n\t\tvar activeReq = 0;\r\n\t\tself.__eligibleMethods = [\"POST\",\"GET\",\"DELETE\",\"HEAD\",\"OPTIONS\",\"PUT\"];\r\n\t\t\r\n\t\t/*var post = function(url,data,setting)\r\n\t\t{\r\n\t\t\treturn processRequest(getSetting(\"POST\",url,data,setting));\r\n\t\t};\r\n\t\t\r\n\t\tvar get = function(url,data,setting)\r\n\t\t{\r\n\t\t\treturn processRequest(getSetting(\"GET\",url,data,setting));\r\n\t\t};*/\r\n\t\t\r\n\t\tvar jsonp = function(url,data,setting)\r\n\t\t{\r\n\t\t\tsetting = setting ? setting : {};\r\n\t\t\tsetting.dataType = \"JSONP\";\r\n\t\t\tsetting.url = url;\r\n\t\t\tsetting.param = data;\r\n\t\t\treturn processRequest(setting);\r\n\t\t};\r\n\t\t\r\n\t\tvar getSetting = function(method,url,data,setting)\r\n\t\t{\r\n\t\t\tsetting = setting ? setting : {};\r\n\t\t\tsetting.method = method || self.__defaultSetting.method;\r\n\t\t\tsetting.url = url || self.__defaultSetting.url;\r\n\t\t\tsetting.param = data || self.__defaultSetting.param;\r\n\t\t\tsetting.dataType = setting.dataType || self.__defaultSetting.dataType;\r\n\t\t\t\r\n\t\t\treturn setting;\r\n\t\t};\r\n\t\t\r\n\t\tvar processRequest = function(setting)\r\n\t\t{\r\n\t\t\tvar config = null;\r\n\t\t\t\r\n\t\t\tvar onInit = function()\r\n\t\t\t{\r\n\t\t\t\tif(!setting)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tself.util = new NSUtil();\r\n\t\t\t\tself.ajaxUtil = new AjaxUtil(self);\r\n\t\t\t\tself.dom = self.util.getDomVariables();\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\t\tmethod: setting[\"method\"] || \"POST\",\r\n\t\t\t\t\t\turl: setting[\"url\"] || \"\",\r\n\t\t\t\t\t\tparam: setting[\"param\"] || {},\r\n\t\t\t\t\t\tdataType: setting[\"dataType\"] || \"\",\r\n\t\t\t\t\t\tcompleteHandler: setting[\"completeHandler\"],\r\n\t\t\t\t\t\ttimeOutHandler: setting[\"timeOutHandler\"],\r\n\t\t\t\t\t\t//if browser supports W3C Events then the below function will fire\r\n\t\t\t\t\t\tloadStartHandler: setting[\"loadStartHandler\"],\r\n\t\t\t\t\t\tprogressHandler: setting[\"progressHandler\"],\r\n\t\t\t\t\t\tabortHandler: setting[\"abortHandler\"],\r\n\t\t\t\t\t\t//end of browser supports W3C Events then the below function will fire\r\n\t\t\t\t\t\ttimeout: setting.timeout || -1,\r\n\t\t\t\t\t\theader: setting[\"header\"],\r\n\t\t\t\t\t\tencodeParam: (typeof setting[\"encodeParam\"] == \"undefined\") ? false : setting[\"encodeParam\"],\r\n\t\t\t\t\t\tprocessData: (typeof setting[\"processData\"] == \"undefined\") ? true : setting[\"processData\"],\r\n\t\t\t\t\t\tmimeType: setting[\"mimeType\"],\r\n\t\t\t\t\t\t//should be set to false if param or data sent with get or post is of type FormData\r\n\t\t\t\t\t\tsetDefaultHeaders: (typeof setting[\"setDefaultHeaders\"] == \"undefined\") ? true : setting[\"setDefaultHeaders\"],\r\n\t\t\t\t\t\t//enhanced inline with fetch\r\n\t\t\t\t\t\tmode: setting[\"mode\"] || \"cors\", // no-cors, *cors, same-origin\r\n\t\t\t\t\t\tcache: setting[\"cache\"] || \"default\", // *default, no-cache, reload, force-cache, only-if-cached\r\n\t\t\t\t\t    credentials: setting[\"credentials\"] || \"same-origin\", // include, *same-origin, omit\r\n\t\t\t\t\t    jsonpCallback: setting[\"callback\"],\r\n\t\t\t\t\t    jsonpType: setting[\"type\"],\r\n\t\t\t\t\t    jsonpCharset: setting[\"charset\"],\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tvar getPromise = function()\r\n\t\t\t{\r\n\t\t\t\tif(config)\r\n\t\t\t\t{\r\n\t\t\t\t\thandleActiveReq(true);\r\n\t\t\t\t\tvar objPromise = (config.dataType.toUpperCase() === \"JSONP\") ? new AjaxJSONP(self,config,handleActiveReq) : AjaxNormal(self,config,handleActiveReq);\r\n\t\t\t\t\treturn objPromise;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tonInit();\r\n\t\t\treturn getPromise();\r\n\t\t};\r\n\t\t\r\n\t\tvar handleActiveReq = function(add)\r\n\t\t{\r\n\t\t\tif(add)\r\n\t\t\t{\r\n\t\t\t\tactiveReq++;\r\n\t\t\t\tif(activeReq == 1)\r\n\t\t\t\t{\r\n\t\t\t\t\tself.util.dispatchEvent(self.dom.win,NSAjax.REQUEST_STARTED);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tactiveReq--;\r\n\t\t\t\tif(activeReq == 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tself.util.dispatchEvent(self.dom.win,NSAjax.ALL_REQUEST_COMPLETED);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tvar addMethods = function()\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < self.__eligibleMethods.length;count++)\r\n\t\t\t{\r\n\t\t\t\taddMethod(self.__eligibleMethods[count]);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tvar addMethod = function(method)\r\n\t\t{\r\n\t\t\tif(!self[method.toLowerCase()])\r\n\t\t\t{\r\n\t\t\t\tself[method.toLowerCase()] = function(url,data,setting)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn processRequest(getSetting(method,url,data,setting));\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\taddMethods();\r\n\t\t\r\n\t\t/*self.post = post;\r\n\t\tself.get = get;*/\r\n\t\tself.jsonp = jsonp;\r\n\t\tself.processRequest = processRequest;\r\n\t};\r\n\t\r\n\tvar AjaxNormal = function(ajax,config,handleActiveReq)\r\n\t{\r\n\t\tvar xhr = null;\r\n\t\tvar request = null;\r\n\t\tvar response = null;\r\n\t\tvar requestDone = false;\r\n\t\tvar resolve = null;\r\n\t\tvar reject = null;\r\n\t\t\r\n\t\tvar init = function()\r\n\t\t{\r\n\t\t\tvar objPromise = new Promise(function(paramResolve,paramReject)\r\n\t\t\t{\r\n\t\t\t\tresolve = paramResolve;\r\n\t\t\t\treject = paramReject;\r\n\t\t\t\trequest = new AjaxRequest(ajax,config);\r\n\t\t\t\tif(config.timeout > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tajax.dom.win.setTimeout(function() \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequestDone = true;\r\n\t\t\t\t\t}, config.timeout);\r\n\t\t\t\t}\r\n\t\t\t\txhr = getRequest();\r\n\t\t\t\txhr.open(request.method,request.url,true);\r\n\t\t\t\tif(\"onloadstart\" in xhr)\r\n\t\t\t\t{\r\n\t\t\t\t\txhr.onloadstart = loadStartHandler;\r\n\t\t\t\t\txhr.onprogress = progressHandler;\r\n\t\t\t\t\txhr.onabort = abortHandler;\r\n\t\t\t\t\txhr.onerror = errorHandler;\r\n\t\t\t\t\txhr.onload = loadHandler;\r\n\t\t\t\t\txhr.ontimeout = timeOutHandler;\r\n\t\t\t\t\txhr.onloadend = loadEndHandler;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\txhr.onreadystatechange = stateChange;\r\n\t\t\t\t}\r\n\t\t\t\tif (config.credentials == \"include\") \r\n\t\t\t\t{\r\n\t\t\t\t\txhr.withCredentials = true;\r\n\t\t\t\t} \r\n\t\t\t\telse if (config.credentials == \"omit\") \r\n\t\t\t\t{\r\n\t\t\t\t    xhr.withCredentials = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (\"responseType\" in xhr) \r\n\t\t\t\t{\r\n\t\t\t\t    if(ajax.ajaxUtil.browserSupprots.blob) \r\n\t\t\t\t    {\r\n\t\t\t\t        xhr.responseType = \"blob\";\r\n\t\t\t\t    } \r\n\t\t\t\t    else if(ajax.ajaxUtil.browserSupprots.arrayBuffer && request.headers[\"Content-Type\"] &&\r\n\t\t\t\t        request.headers[\"Content-Type\"].indexOf('application/octet-stream') != -1) \r\n\t\t\t\t    {\r\n\t\t\t\t        xhr.responseType = \"arraybuffer\";\r\n\t\t\t\t    }\r\n\t\t\t\t}\r\n\t\t\t\tfor(var key in request.headers)\r\n\t\t\t\t{\r\n\t\t\t\t\txhr.setRequestHeader(key,request.headers[key]);\r\n\t\t\t\t}\r\n\t\t\t\txhr.send(request.params);\r\n\t\t\t});\r\n\t\t\treturn objPromise;\r\n\t\t};\r\n\t\t\r\n\t\tvar getRequest = function() \r\n\t\t{\r\n\t\t\tif (ajax.dom.win.XMLHttpRequest)\r\n\t\t\t{\r\n\t\t\t\treturn new XMLHttpRequest();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar versions = [\"Microsoft\", \"msxm3\", \"msxml2\", \"msxml1\"];\r\n                for (var count = 0;count < versions.length; count++) \r\n                {\r\n                    try \r\n                    {\r\n                        var version = versions[count] + \".XMLHTTP\";\r\n                        return new ActiveXObject(version);\r\n                    } \r\n                    catch (error) \r\n                    {\r\n                    }\r\n                }\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t};\r\n\t\t\r\n\t\tvar stateChange = function(object) \r\n\t\t{\r\n\t\t\tif(xhr.readyState == 4 && !requestDone)\r\n\t\t\t{\r\n\t\t\t\tvar callback = function(value)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(isRequestSuccess()) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdefaultSuccessHandler(value,response);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdefaultErrorHandler(value,response);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdefaultCompleteHandler();\r\n\t\t\t\t\txhr = null;\r\n\t\t\t\t};\r\n\t\t\t\tvar data = getResponseData();\r\n\t\t\t\tif(ajax.ajaxUtil.isPromise(data))\r\n\t\t\t\t{\r\n\t\t\t\t\tdata.then(function(value) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcallback(value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tcallback(data);\r\n\t\t\t\t\tdefaultCompleteHandler();\r\n\t\t\t\t\txhr = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if(xhr.readyState != 4 && requestDone) \r\n\t\t\t{\r\n\t\t\t\tif(config[\"timeOutHandler\"])\r\n\t\t\t\t{\r\n\t\t\t\t\tconfig[\"timeOutHandler\"]();\r\n\t\t\t\t}\r\n\t\t\t\txhr.onreadystatechange = null;\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tvar isRequestSuccess = function()\r\n\t\t{\r\n\t\t\tvar retValue = false;\r\n\t\t\t//if requesting a local resource\r\n\t\t\tif(!xhr.status && location.protocol == \"file:\")\r\n\t\t\t{\r\n\t\t\t\tretValue = true;\r\n\t\t\t}\r\n\t\t\t// Any status in the 200 range is good\r\n\t\t\telse if (xhr.status >= 200 && xhr.status < 300)\r\n\t\t\t{\r\n\t\t\t\tretValue = true;\r\n\t\t\t}\r\n\t\t\t//Successful if the document has not been modified and Safari returns an empty status if the file has not been modified\r\n\t\t\telse if(xhr.status == 304 || (navigator.userAgent.indexOf(\"Safari\") >= 0 && typeof xhr.status == \"undefined\"))\r\n\t\t\t{\r\n\t\t\t\tretValue = true;\r\n\t\t\t}\r\n\t\t\treturn retValue;\r\n\t\t};\r\n\t\t\r\n\t\tvar getResponseData = function()\r\n\t\t{\r\n\t\t\tresponse = new AjaxResponse(ajax,config,xhr);\r\n\t\t\tvar value = response.getValue();\r\n\t\t\treturn value;\r\n\t\t};\r\n\t\t\r\n\t\tvar loadStartHandler = function(event)\r\n\t\t{\r\n\t\t\tif(config[\"loadStartHandler\"])\r\n\t\t\t{\r\n\t\t\t\tconfig[\"loadStartHandler\"]();\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar progressHandler = function(event)\r\n\t\t{\r\n\t\t\tif(config[\"progressHandler\"])\r\n\t\t\t{\r\n\t\t\t\tif (event.lengthComputable) \r\n\t\t\t\t{\r\n\t\t\t\t\tconfig[\"progressHandler\"](event.loaded,event.total);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tconfig[\"progressHandler\"](event.loaded,-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar abortHandler = function(event)\r\n\t\t{\r\n\t\t\tif(config[\"abortHandler\"])\r\n\t\t\t{\r\n\t\t\t\tconfig[\"abortHandler\"](event);\r\n\t\t\t}\r\n\t\t\tdefaultErrorHandler(event);\r\n\t\t};\r\n\t\r\n\t\tvar errorHandler = function(event)\r\n\t\t{\r\n\t\t\tvar data = getResponseData(event);\r\n\t\t\tif(ajax.ajaxUtil.isPromise(data))\r\n\t\t\t{\r\n\t\t\t\tdata.then(function(value) \r\n\t\t\t\t{\r\n\t\t\t\t\tdefaultErrorHandler(event,value,response);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tdefaultErrorHandler(event,data,response);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar loadHandler = function(event)\r\n\t\t{\r\n\t\t\tvar callback = function(value)\r\n\t\t\t{\r\n\t\t\t\tif(isRequestSuccess()) \r\n\t\t\t\t{\r\n\t\t\t\t\tdefaultSuccessHandler(value,response);\r\n\t\t\t\t}\r\n\t\t\t\telse \r\n\t\t\t\t{\r\n\t\t\t\t\tdefaultErrorHandler(value,response);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tvar data = getResponseData();\r\n\t\t\tif(ajax.ajaxUtil.isPromise(data))\r\n\t\t\t{\r\n\t\t\t\tdata.then(function(value) \r\n\t\t\t\t{\r\n\t\t\t\t\tcallback(value);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tcallback(data);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar timeOutHandler = function(event)\r\n\t\t{\r\n\t\t\tif(config[\"timeOutHandler\"])\r\n\t\t\t{\r\n\t\t\t\tconfig[\"timeOutHandler\"](event);\r\n\t\t\t}\r\n\t\t\tdefaultErrorHandler(event);\r\n\t\t};\r\n\t\r\n\t\tvar loadEndHandler = function(event)\r\n\t\t{\r\n\t\t\tdefaultCompleteHandler();\r\n\t\t};\r\n\t\t\r\n\t\tvar defaultSuccessHandler = function(value,response)\r\n\t\t{\r\n\t\t\tif(resolve)\r\n\t\t\t{\r\n\t\t\t\tresolve(value);\r\n\t\t\t\tresolve = null;\r\n\t\t\t\thandleActiveReq(false);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar defaultErrorHandler = function(value,response)\r\n\t\t{\r\n\t\t\tif(reject)\r\n\t\t\t{\r\n\t\t\t\treject(value);\r\n\t\t\t\treject = null;\r\n\t\t\t\thandleActiveReq(false);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tvar defaultCompleteHandler = function()\r\n\t\t{\r\n\t\t\tif(config.completeHandler)\r\n\t\t\t{\r\n\t\t\t\tconfig.completeHandler();\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\treturn init();\r\n\t};\r\n\t\r\n\tvar AjaxJSONP = function(ajax,config,handleActiveReq)\r\n\t{\r\n\t\tvar functionNameInitials = \"nsjsonp\";\r\n\t\tvar instanceNameInitials = \"nsjsonpIns\";\r\n\t\tvar random = -1;\r\n\t\t\r\n\t\tvar resolve = null;\r\n\t\tvar reject = null;\r\n\t\tvar origCallback = null;\r\n\t\tvar callback = null;\r\n\t\t\r\n\t\tvar objPromise = new Promise(function(parResolve,parReject)\r\n\t\t{\r\n\t\t\tvar util = new NSUtil();\r\n\t\t\t\r\n\t\t\tvar getParam = function()\r\n\t\t\t{\r\n\t\t\t\tif(config.processData)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar strParam = \"\";\r\n\t\t\t\t\tvar param = config.param;\r\n\t\t\t\t\tif(util.isString(param))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn param;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor(var paramKey in param)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif(param[paramKey])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif(config.encodeParam)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstrParam += \"&\" + encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(param[paramKey]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstrParam += \"&\" + paramKey + \"=\" + param[paramKey];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(strParam && strParam.length > 1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstrParam = strParam.substring(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treturn strParam;\r\n\t\t\t\t}\r\n\t\t\t\treturn config.param;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tvar createScript = function(url)\r\n\t\t\t{\r\n\t\t        var domPosition = ajax.dom.doc.body;\r\n\t\t        var script = ajax.dom.doc.createElement(\"script\");\r\n\t\t        script.async = true;\r\n\t\t        script.setAttribute(\"id\", url);\r\n\t\t        if(config.jsonpType)\r\n\t\t        {\r\n\t\t        \tscript.setAttribute(\"type\",config.jsonpType);\r\n\t\t        }\r\n\t\t        if (config.jsonpCharset) \r\n\t\t        {\r\n\t\t        \tscript.setAttribute(\"charset\",config.jsonpCharset);\r\n\t\t\t\t}\r\n\t\t        script.setAttribute(\"src\",url);\r\n\t\t        script.onload = script.onreadystatechange = function()\r\n\t\t        {\r\n\t\t        \tif (!script.readyState || /loaded|complete/.test(script.readyState)) \r\n\t\t        \t{\r\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\r\n\t\t\t\t\t\tif (script.parentNode) \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tscript.parentNode.removeChild(script);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tscript = null;\r\n\t\t\t\t\t}\r\n\t\t        }; \r\n\t\t        domPosition.appendChild(script);\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tvar defaultSuccessHandler = function(response)\r\n\t\t\t{\r\n\t\t\t\tvar win = ajax.dom.win;\r\n\t\t\t\tvar instanceName = instanceNameInitials + random;\r\n\t\t\t\tif(win[instanceName])\r\n\t\t\t\t{\r\n\t\t\t\t\twin[instanceName] = null;\r\n\t\t\t\t}\r\n\t\t\t\tif(win[callback])\r\n\t\t\t\t{\r\n\t\t\t\t\twin[callback] = origCallback;\r\n\t\t\t\t}\r\n\t\t\t\tif(origCallback)\r\n\t\t\t\t{\r\n\t\t\t\t\torigCallback(response);\r\n\t\t\t\t}\r\n\t\t\t\torigCallback = null;\r\n\t\t\t\tif(resolve)\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve(response);\r\n\t\t\t\t\tresolve = null;\r\n\t\t\t\t\thandleActiveReq(false);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tresolve = parResolve;\r\n\t\t\treject = parReject;\r\n\t\t\tif(random == -1)\r\n\t\t\t{\r\n\t\t\t\trandom = ajax.util.getUniqueId();\r\n\t\t\t}\r\n\t\t\tcallback = config.jsonpCallback;\r\n\t\t\tif(callback)\r\n\t\t\t{\r\n\t\t\t\torigCallback = util.getFunction(callback);\r\n\t\t\t\tif(origCallback && util.isString(origCallback))\r\n\t\t\t\t{\r\n\t\t\t\t\torigCallback = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tcallback = functionNameInitials + random;\r\n\t\t\t}\r\n\t\t\tvar instanceName = instanceNameInitials + random;\r\n\t\t\t//ajax.dom.win[instanceName] = this;\r\n\t\t\t\r\n\t\t\tajax.dom.win[callback] = function(json){\r\n\t\t\t\tdefaultSuccessHandler(json);\r\n\t\t\t};\r\n\t\t\tvar url = config.url + \"?callback=\" + callback;\r\n\t\t\tvar strParam = getParam();\r\n\t\t\tif(strParam && strParam != \"\")\r\n\t\t\t{\r\n\t\t\t\turl += \"&\" + strParam;\r\n\t\t\t}\r\n\t\t\tcreateScript(url);\r\n\t\t});\r\n\t\t\r\n\t\treturn objPromise;\r\n\t};\r\n\t\r\n\tvar AjaxRequest = function(ajax,config)\r\n\t{\r\n\t\tvar self = this;\r\n\t\tvar dom = null;\r\n\t\t\r\n\t\tvar init = function()\r\n\t\t{\r\n\t\t\tdom = ajax.dom;\r\n\t\t\tself.method = getMethodName(config.method);\r\n\t\t\tself.params = getParams();\r\n\t\t\tself.headers = getHeader();\r\n\t\t\tself.url = getUrl();\r\n\t\t\t\r\n\t\t};\r\n\t\t\r\n\t\tvar getParams = function()\r\n\t\t{\r\n\t\t\tvar param = config.param;\r\n\t\t\tif(config.processData && param && !ajax.ajaxUtil.isTypeFormData(param))\r\n\t\t\t{\r\n\t\t\t\tif (self.method != \"GET\" && self.method != \"HEAD\" && config.dataType != null && config.dataType.toUpperCase() == \"JSON\" && !config.encodeParam && !ajax.util.isString(param)) \r\n\t\t\t\t{\r\n\t\t\t\t\treturn JSON.stringify(param);\r\n\t\t\t\t}\r\n\t\t\t\tif(ajax.util.isString(param))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn param;\r\n\t\t\t\t}\r\n\t\t\t\tif (self.method == \"GET\" || self.method == \"HEAD\")\r\n\t\t\t\t{\r\n\t\t\t\t\tvar strParam = \"\";\r\n\t\t\t\t\tfor(var paramKey in param)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif(param[paramKey])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif(config.encodeParam)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstrParam += \"&\" + encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(param[paramKey]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstrParam += \"&\" + paramKey + \"=\" + param[paramKey];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(strParam && strParam.length > 1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstrParam = strParam.substring(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn strParam;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn param;\r\n\t\t};\r\n\t\t\r\n\t\tvar getHeader = function()\r\n\t\t{\r\n\t\t\tvar header = config.header || {};\r\n\t\t\tvar dataType = config.dataType ? config.dataType : null;\r\n\t\t\tvar contentType = header[\"content-type\"];\r\n\t\t\tvar param = config.param;\r\n\t\t\tif(!contentType && !ajax.ajaxUtil.isTypeFormData(param)) \r\n\t\t\t{\r\n\t\t\t\tif(dataType == \"JSON\")\r\n\t\t\t\t{\r\n\t\t\t\t\tcontentType = \"application/json\";\r\n\t\t\t\t}\r\n\t\t\t\telse if(typeof param === \"string\") \r\n\t\t\t    {\r\n\t\t\t    \tcontentType = \"text/plain;charset=UTF-8\";\r\n\t\t\t    } \r\n\t\t\t    else if(ajax.ajaxUtil.browserSupprots.blob && Blob.prototype.isPrototypeOf(param) && param.type) \r\n\t\t\t    {\r\n\t\t\t    \tcontentType = param.type;\r\n\t\t\t    } \r\n\t\t\t    else if(ajax.ajaxUtil.browserSupprots.urlSearchParams && URLSearchParams.prototype.isPrototypeOf(param)) \r\n\t\t\t    {\r\n\t\t\t    \tcontentType = \"application/x-www-form-urlencoded;charset=UTF-8\";\r\n\t\t\t    }\r\n\t\t\t}\r\n\t\t\tif(contentType)\r\n\t\t\t{\r\n\t\t\t\theader[\"content-type\"] = contentType;\r\n\t\t\t}\r\n\t\t\treturn header;\r\n\t\t};\r\n\t\t\r\n\t\tvar getUrl = function() \r\n\t\t{\r\n\t\t\tvar url = config.url;\r\n\t\t\tif(self.method == \"GET\" || self.method == \"HEAD\") \r\n\t\t\t{\r\n\t\t\t\tif(self.params && self.params != \"\")\r\n\t\t\t\t{\r\n\t\t\t\t\turl += \"?\" + self.params;\r\n\t\t\t\t\t//so that send method sends as null for GET\r\n\t\t\t\t\tself.params = null;\r\n\t\t\t\t}\r\n\t\t\t    if(config.cache == \"no-store\" || config.cache == \"no-cache\") \r\n\t\t\t    {\r\n\t\t\t    \t// handling underscore parameter in the query string\r\n\t\t\t    \tvar underscoreSearch = /([?&])_=[^&]*/;\r\n\t\t\t    \tif (underscoreSearch.test(url)) \r\n\t\t\t    \t{\r\n\t\t\t    \t\t// If it already exists then set the value with the current time\r\n\t\t\t    \t\turl = url.replace(underscoreSearch, '$1_=' + new Date().getTime())\r\n\t\t\t    \t} \r\n\t\t\t    \telse \r\n\t\t\t    \t{\r\n\t\t\t    \t\t// Otherwise add a new '_' parameter to the end with the current time\r\n\t\t\t    \t\tvar reQueryString = /\\?/;\r\n\t\t\t    \t\turl += (reQueryString.test(url) ? '&' : '?') + '_=' + new Date().getTime();\r\n\t\t\t    \t}\r\n\t\t\t    }\r\n\t\t\t}\r\n\t\t    try \r\n\t\t    {\r\n\t\t    \turl = (url == \"\" && dom.win.location.href) ? dom.win.location.href : url\r\n\t\t    } \r\n\t\t    catch (e) \r\n\t\t    {\r\n\t\t    }\r\n\t\t    return url;\r\n\t\t};\r\n\t\t\r\n\t\tvar getMethodName = function(name)\r\n\t\t{\r\n\t\t\tvar methodName = name.toUpperCase();\r\n\t\t\tif(ajax.__eligibleMethods.indexOf(methodName) == -1)\r\n\t\t\t{\r\n\t\t\t\tajax.util.throwNSError(\"NSAjax\",\"Method is not valid\");\r\n\t\t\t}\r\n\t\t\treturn methodName;\r\n\t\t};\r\n\t\t\r\n\t\tinit();\r\n\t};\r\n\t\r\n\tvar AjaxResponse = function(ajax,config,xhr)\r\n\t{\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tvar init = function()\r\n\t\t{\r\n\t\t\tself.headers = getHeader();\r\n\t\t\tself.status = (xhr.status == null) ? 200 : xhr.status;\r\n\t\t\tself.statusText = (xhr.statusText == null) ? \"\" : (\"\" + xhr.statusText);\r\n\t\t\tself.url = \"responseURL\" in xhr ? xhr.responseURL : self.headers[\"X-Request-URL\"];\r\n\t\t\tself.params = \"response\" in xhr ? xhr.response : xhr.responseText;\r\n\t\t\tpopulateBodyParams(self.params);\r\n\t\t};\r\n\t\t\r\n\t\tvar populateBodyParams = function(params)\r\n\t\t{\r\n\t\t\tself.__paramInit = params;\r\n\t\t    if(!params) \r\n\t\t    {\r\n\t\t    \tself.__paramText = \"\";\r\n\t\t    } \r\n\t\t    else if(typeof params == \"string\") \r\n\t\t    {\r\n\t\t    \tself.__paramText = params;\r\n\t\t    } \r\n\t\t    else if (ajax.ajaxUtil.browserSupprots.blob && Blob.prototype.isPrototypeOf(params)) \r\n\t\t    {\r\n\t\t    \tself.__paramBlob = params;\r\n\t\t    } \r\n\t\t    else if (ajax.ajaxUtil.browserSupprots.formData && FormData.prototype.isPrototypeOf(params)) \r\n\t\t    {\r\n\t\t    \tself.__paramFormData = params;\r\n\t\t    } \r\n\t\t    else if (ajax.ajaxUtil.browserSupprots.urlSearchParams && URLSearchParams.prototype.isPrototypeOf(params)) \r\n\t\t    {\r\n\t\t    \tself.__paramText = params.toString();\r\n\t\t    } \r\n\t\t    else if (ajax.ajaxUtil.browserSupprots.arrayBuffer && ajax.ajaxUtil.browserSupprots.blob && ajax.ajaxUtil.isTypeDataView(params)) \r\n\t\t    {\r\n\t\t    \tself.__paramArrayBuffer = ajax.ajaxUtil.bufferClone(params.buffer);\r\n\t\t    \t// IE 10-11 can't handle a DataView params.\r\n\t\t    \tself.__paramInit = new Blob([self.__paramArrayBuffer])\r\n\t\t    } \r\n\t\t    else if (ajax.ajaxUtil.browserSupprots.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(params) || ajax.ajaxUtil.isArrayBufferView(params))) \r\n\t\t    {\r\n\t\t    \tself.__paramArrayBuffer = ajax.ajaxUtil.bufferClone(params);\r\n\t\t    } \r\n\t\t    else \r\n\t\t    {\r\n\t\t    \tself.__paramText = params = Object.prototype.toString.call(params);\r\n\t\t    }\r\n\t\t};\r\n\t\t\r\n\t\tself.getValue = function()\r\n\t\t{\r\n\t\t\tvar retValue = null;\r\n\t\t\t//for some reason IE is taking Content-Type\r\n\t\t\tvar contentType = self.headers[\"content-type\"] || self.headers[\"Content-Type\"];\r\n\t\t\tvar dataType = xhr.dataType;\r\n\t\t\tvar isXMLData = false;\r\n\t\t\tif(!dataType && contentType && contentType.indexOf(\"xml\") > -1)\r\n\t\t\t{\r\n\t\t\t\tisXMLData = true;\r\n\t\t\t}\r\n\t\t\tif(contentType && contentType.indexOf(\"json\") > -1)\r\n\t\t\t{\r\n\t\t\t\tretValue = self.getJson();\r\n\t\t\t}\r\n\t\t\telse if(isXMLData || (dataType && dataType.indexOf(\"xml\") > -1))\r\n\t\t\t{\r\n\t\t\t\tretValue = xhr.responseXML;\r\n\t\t\t}\r\n\t\t    else\r\n\t\t    {\r\n\t\t    \tretValue = self.getText();\r\n\t\t    }\r\n\t\t\t// If the specified type is \"script\", execute the returned text response as if it was JavaScript\r\n\t\t\tif (dataType == \"script\") \r\n\t\t\t{\r\n\t\t\t\tif(ajax.ajaxUtil.isPromise(retValue))\r\n\t\t\t\t{\r\n\t\t\t\t\tdata.then(function(value) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\teval.call(ajax.dom.win,value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\teval.call(ajax.dom.win,value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn retValue;\r\n\t\t};\r\n\t\t\r\n\t\tself.getBlob = function() \r\n\t\t{\r\n\t\t\tif(ajax.ajaxUtil.browserSupprots.blob) \r\n\t\t\t{\r\n\t\t\t     if(self.__paramBlob) \r\n\t\t\t     {\r\n\t\t\t    \treturn Promise.resolve(self.__paramBlob);\r\n\t\t\t     } \r\n\t\t\t     else if (self.__paramArrayBuffer) \r\n\t\t\t     {\r\n\t\t\t    \treturn Promise.resolve(new Blob([self.__paramArrayBuffer]));\r\n\t\t\t     } \r\n\t\t\t     else if (self.__paramFormData) \r\n\t\t\t     {\r\n\t\t\t    \tthrow ajax.util.throwNSError(\"NSAjax\",\"FormData body could not be read as blob\");\r\n\t\t\t     } \r\n\t\t\t     else \r\n\t\t\t     {\r\n\t\t\t    \treturn Promise.resolve(new Blob([self.__paramText]));\r\n\t\t\t     }\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthrow ajax.util.throwNSError(\"NSAjax\",\"Blob is not supported\");\r\n\t\t\t}\r\n\t\t\t\r\n\t    };\r\n\r\n\t    self.getArrayBuffer = function() \r\n\t    {\r\n\t    \tif(ajax.ajaxUtil.browserSupprots.blob) \r\n\t\t\t{\r\n\t\t      if (self.__paramArrayBuffer) \r\n\t\t      {\r\n\t\t    \t  if(ArrayBuffer.isView(self.__paramArrayBuffer)) \r\n\t\t    \t  {\r\n\t\t\t          return Promise.resolve(\r\n\t\t\t        \t\t  self.__paramArrayBuffer.buffer.slice(self.__paramArrayBuffer.byteOffset,(self.__paramArrayBuffer.byteOffset + self.__paramArrayBuffer.byteLength))\r\n\t\t\t          );\r\n\t\t    \t  } \r\n\t\t    \t  else \r\n\t\t    \t  {\r\n\t\t    \t\t  return Promise.resolve(self.__paramArrayBuffer);\r\n\t\t    \t  }\r\n\t\t      } \r\n\t\t      else \r\n\t\t      {\r\n\t\t    \t  return self.blob().then(ajax.ajaxUtil.readBlobAsArrayBuffer);\r\n\t\t      }\r\n\t\t\t}\r\n\t    \telse\r\n\t\t\t{\r\n\t\t\t\tthrow ajax.util.throwNSError(\"NSAjax\",\"Blob is not supported\");\r\n\t\t\t}\r\n\t    };\r\n\t    \r\n\t    self.getFormData = function() \r\n\t    {\r\n\t    \tif(ajax.ajaxUtil.browserSupprots.formData) \r\n\t\t\t{\r\n\t    \t\tself.getText().then(decodeFormData);\r\n\t\t    }\r\n\t    \telse\r\n\t\t\t{\r\n\t\t\t\tthrow ajax.util.throwNSError(\"NSAjax\",\"FormData is not supported\");\r\n\t\t\t}\r\n\t    };\r\n\t    \r\n\t    self.getText = function() \r\n\t    {\r\n\t        if (self.__paramBlob) \r\n\t        {\r\n\t        \treturn ajax.ajaxUtil.readBlobAsText(self.__paramBlob);\r\n\t        } \r\n\t        else if (self.__paramArrayBuffer) \r\n\t        {\r\n\t        \treturn Promise.resolve(ajax.ajaxUtil.readArrayBufferAsText(self.__paramArrayBuffer));\r\n\t        }\r\n\t        else if (self.__paramFormData) \r\n\t        {\r\n\t        \tthrow ajax.util.throwNSError(\"NSAjax\",\"FormData body could not be read as blob\");\r\n\t        }\r\n\t        else \r\n\t        {\r\n\t        \treturn Promise.resolve(self.__paramText);\r\n\t        }\r\n\t    };\r\n\r\n\t    self.getJson = function() \r\n\t    {\r\n\t        return self.getText().then(JSON.parse);\r\n\t    };\r\n\t      \r\n\t    var decodeFormData = function(param) \r\n\t    {\r\n\t    \tparam = param || \"\";\r\n\t    \tvar objRet = new FormData();\r\n\t    \tvar arrParam = param.trim().split(\"&\");\r\n\t    \tfor(var count = 0;count < arrParam.length;count++)\r\n\t    \t{\r\n\t    \t\tvar bytes = arrParam[count];\r\n\t    \t\tvar split = bytes.split(\"=\");\r\n    \t        var key = split.shift().replace(/\\+/g, \" \");\r\n    \t        var value = split.join('=').replace(/\\+/g,\" \");\r\n    \t        objRet.append(decodeURIComponent(key), decodeURIComponent(value))\r\n\t    \t}\r\n\t    \treturn objRet;\r\n\t    };\r\n\t      \r\n\t\tvar getHeader = function()\r\n\t\t{\r\n\t\t\tvar objHeader = {};\r\n\t\t\tvar strHeader = xhr.getAllResponseHeaders() || \"\";\r\n\t\t\t//replace \\r\\n and \\n with space\r\n\t\t\tstrHeader = strHeader.replace(/\\r?\\n[\\t ]+/g,\" \");\r\n\t\t\tvar arrHeader = strHeader.split(\"\\r\");\r\n\t\t\tfor(var count = 0;count < arrHeader.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar header = arrHeader[count];\r\n\t\t\t\theader = (header.indexOf(\"\\n\") == 0) ? header.substr(1,header.length) : header;\r\n\t\t\t\tvar arrParts = header.split(':');\r\n\t\t\t    var key = arrParts.shift().trim();\r\n\t\t\t    if(key) \r\n\t\t\t    {\r\n\t\t\t        var value = arrParts.join(':').trim();\r\n\t\t\t        objHeader[key] = value;\r\n\t\t\t    }\r\n\t\t\t}\r\n\t\t\treturn objHeader;\r\n\t\t};\r\n\t\t\r\n\t\tinit();\r\n\t};\r\n\t\r\n\tvar AjaxUtil = function(ajax)\r\n\t{\r\n\t\tvar self = this;\r\n\t\tvar dom = null;\r\n\t\tself.browserSupprots = null;\r\n\t\t\r\n\t\tvar init = function()\r\n\t\t{\r\n\t\t\tdom = ajax.util.getDomVariables();\r\n\t\t\tself.browserSupprots = {blob: self.isBlobSupproted(),formData: self.isFormDataSupproted(),arrayBuffer: self.isArrayBufferSupproted(),\r\n\t\t\t\t\t\t\t   urlSearchParams: self.isURLSearchParamsSupproted(),iterator: self.isIterartorSupproted()};\r\n\t\t};\r\n\t\t\r\n\t\tself.isBlobSupproted = function()\r\n\t\t{\r\n\t\t\tif(\"FileReader\" in dom.win && \"FileReader\" in dom.win)\r\n\t\t\t{\r\n\t\t\t\ttry \r\n\t\t\t\t{\r\n\t\t\t        new Blob();\r\n\t\t\t        return true;\r\n\t\t\t    } \r\n\t\t\t\tcatch (e) \r\n\t\t\t\t{\r\n\t\t\t    }\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\t\t\r\n\t\tself.isURLSearchParamsSupproted = function()\r\n\t\t{\r\n\t\t\treturn \"URLSearchParams\" in dom.win;\r\n\t\t};\r\n\t\t\r\n\t\tself.isIterartorSupproted = function()\r\n\t\t{\r\n\t\t\treturn \"Symbol\" in dom.win && \"iterator\" in Symbol;\r\n\t\t};\r\n\t\t\r\n\t\tself.isFormDataSupproted = function()\r\n\t\t{\r\n\t\t\treturn \"FormData\" in dom.win;\r\n\t\t};\r\n\t\t\r\n\t\tself.isArrayBufferSupproted = function()\r\n\t\t{\r\n\t\t\treturn \"ArrayBuffer\" in dom.win;\r\n\t\t};\r\n\t\t\r\n\t\tself.isTypeDataView = function(type) \r\n\t\t{\r\n\t\t\treturn type && DataView.prototype.isPrototypeOf(type);\r\n\t\t};\r\n\t\t\r\n\t\tself.isTypeArrayBuffer = function(type) \r\n\t\t{\r\n\t\t\tif(ArrayBuffer.isView && type)\r\n\t\t\t{\r\n\t\t\t\tvar arrayBufferClasses = [\r\n\t\t\t\t    '[object Int8Array]',\r\n\t\t\t\t    '[object Uint8Array]',\r\n\t\t\t\t    '[object Uint8ClampedArray]',\r\n\t\t\t\t    '[object Int16Array]',\r\n\t\t\t\t    '[object Uint16Array]',\r\n\t\t\t\t    '[object Int32Array]',\r\n\t\t\t\t    '[object Uint32Array]',\r\n\t\t\t\t    '[object Float32Array]',\r\n\t\t\t\t    '[object Float64Array]'\r\n\t\t\t\t  ];\r\n\t\t\t\treturn arrayBufferClasses.indexOf(Object.prototype.toString.call(type)) > -1;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\t\t\r\n\t\tself.isTypeFormData = function(type) \r\n\t\t{\r\n\t\t\treturn self.browserSupprots.formData && type && (Object.prototype.toString.call(type) == \"[object FormData]\");\r\n\t\t};\r\n\t\t\r\n\t\tself.isPromise = function(type) \r\n\t\t{\r\n\t\t\treturn self.browserSupprots.formData && type && (Object.prototype.toString.call(type) == \"[object Promise]\");\r\n\t\t};\r\n\t\t\r\n\t\tself.normalize = function(value) \r\n\t\t{\r\n\t\t\tif (typeof value !== 'string') \r\n\t\t\t{\r\n\t\t\t\tvalue = String(value)\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t};\r\n\r\n\t\tself.iteratorFor = function(items) \r\n\t\t{\r\n\t\t\tvar iterator = {next: function() \r\n\t\t\t{\r\n\t\t\t\tvar value = items.shift();\r\n\t\t\t\treturn {done: value === undefined, value: value};\r\n\t\t    }};\r\n\r\n\t\t\tif (support.iterator) \r\n\t\t\t{\r\n\t\t\t\titerator[Symbol.iterator] = function() \r\n\t\t\t\t{\r\n\t\t\t\t\treturn iterator\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn iterator;\r\n\t\t};\r\n\t\t\r\n\t\tself.fileReaderReady = function(reader) \r\n\t\t{\r\n\t\t\treturn new Promise(function(resolve, reject) \r\n\t\t\t{\r\n\t\t\t\treader.onload = function() \r\n\t\t\t\t{\r\n\t\t\t\t\tresolve(reader.result)\r\n\t\t\t\t};\r\n\t\t\t\treader.onerror = function() \r\n\t\t\t\t{\r\n\t\t\t\t\treject(reader.error)\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tself.readBlobAsArrayBuffer = function(blob) \r\n\t\t{\r\n\t\t\tvar reader = new FileReader();\r\n\t\t\tvar promise = self.fileReaderReady(reader);\r\n\t\t\treader.readAsArrayBuffer(blob);\r\n\t\t\treturn promise;\r\n\t\t};\r\n\r\n\t\tself.readBlobAsText = function(blob) \r\n\t\t{\r\n\t\t\tvar reader = new FileReader();\r\n\t\t\tvar promise = self.fileReaderReady(reader);\r\n\t\t\treader.readAsText(blob);\r\n\t\t\treturn promise;\r\n\t\t};\r\n\r\n\t\tself.readArrayBufferAsText = function(buf) \r\n\t\t{\r\n\t\t\tvar view = new Uint8Array(buf);\r\n\t\t\tvar chars = new Array(view.length);\r\n\t\t\tfor (var count = 0; count < view.length; count++) \r\n\t\t\t{\r\n\t\t\t\tchars[i] = String.fromCharCode(view[count]);\r\n\t\t\t}\r\n\t\t\treturn chars.join('');\r\n\t\t};\r\n\r\n\t\tself.bufferClone = function(buf) \r\n\t\t{\r\n\t\t\tif (buf.slice) \r\n\t\t\t{\r\n\t\t\t\treturn buf.slice(0);\r\n\t\t\t} \r\n\t\t\telse \r\n\t\t\t{\r\n\t\t\t\tvar view = new Uint8Array(buf.byteLength);\r\n\t\t\t\tview.set(new Uint8Array(buf));\r\n\t\t\t\treturn view.buffer;\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tinit();\r\n\t};\r\n\t\r\n\tNSAjax.REQUEST_STARTED = \"requestStarted\";\r\n\tNSAjax.ALL_REQUEST_COMPLETED = \"allRequestCompleted\";\r\n\treturn NSAjax;\r\n})();\r\nnsModuleExport(this,\"NSAjax\",NSAjax);";
