diff --git a/dist/jaxon.core.js b/dist/jaxon.core.js index 149b3dd..ca31fab 100644 --- a/dist/jaxon.core.js +++ b/dist/jaxon.core.js @@ -2849,7 +2849,7 @@ jaxon.ajax.request = { // Initialize file upload. if (oRequest.upload != false) { - oRequest.upload = { id: oRequest.upload, input: null, form: null, ajax: !!window.FormData }; + oRequest.upload = { id: oRequest.upload, input: null, form: null, ajax: !!window.FormDat }; jaxon.tools.upload.initialize(oRequest); } @@ -3424,6 +3424,88 @@ jaxon.ajax.response = { redirectCodes: ['301', '302', '307'] }; +/** + * Class: jaxon.dom + */ +jaxon.dom = {}; + +/** + * Plain javascript replacement for jQuery's .ready() function. + * See https://github.com/jfriend00/docReady for a detailed description, copyright and license information. + */ +(function(funcName, baseObj) { + "use strict"; + // The public function name defaults to window.docReady + // but you can modify the last line of this function to pass in a different object or method name + // if you want to put them in a different namespace and those will be used instead of + // window.docReady(...) + funcName = funcName || "docReady"; + baseObj = baseObj || window; + var readyList = []; + var readyFired = false; + var readyEventHandlersInstalled = false; + + // call this when the document is ready + // this function protects itself against being called more than once + function ready() { + if (!readyFired) { + // this must be set to true before we start calling callbacks + readyFired = true; + for (var i = 0; i < readyList.length; i++) { + // if a callback here happens to add new ready handlers, + // the docReady() function will see that it already fired + // and will schedule the callback to run right after + // this event loop finishes so all handlers will still execute + // in order and no new ones will be added to the readyList + // while we are processing the list + readyList[i].fn.call(window, readyList[i].ctx); + } + // allow any closures held by these functions to free + readyList = []; + } + } + + function readyStateChange() { + if (document.readyState === "complete") { + ready(); + } + } + + // This is the one public interface + // docReady(fn, context); + // the context argument is optional - if present, it will be passed + // as an argument to the callback + baseObj[funcName] = function(callback, context) { + // if ready has already fired, then just schedule the callback + // to fire asynchronously, but right away + if (readyFired) { + setTimeout(function() { callback(context); }, 1); + return; + } else { + // add the function and context to the list + readyList.push({ fn: callback, ctx: context }); + } + // if document already ready to go, schedule the ready function to run + // IE only safe when readyState is "complete", others safe when readyState is "interactive" + if (document.readyState === "complete" || (!document.attachEvent && document.readyState === "interactive")) { + setTimeout(ready, 1); + } else if (!readyEventHandlersInstalled) { + // otherwise if we don't have event handlers installed, install them + if (document.addEventListener) { + // first choice is DOMContentLoaded event + document.addEventListener("DOMContentLoaded", ready, false); + // backup is window load event + window.addEventListener("load", ready, false); + } else { + // must be IE + document.attachEvent("onreadystatechange", readyStateChange); + window.attachEvent("onload", ready); + } + readyEventHandlersInstalled = true; + } + } +})("ready", jaxon.dom); + /* File: jaxon.js diff --git a/dist/jaxon.core.min.js b/dist/jaxon.core.min.js index a125211..0532709 100644 --- a/dist/jaxon.core.min.js +++ b/dist/jaxon.core.min.js @@ -1 +1 @@ -var jaxon={};jaxon.config={},jaxon.debug={},jaxon.debug.verbose={},jaxon.ajax={},jaxon.tools={},jaxon.cmd={},jaxon.config.setDefault=function(e,t){void 0===jaxon.config[e]&&(jaxon.config[e]=t)},jaxon.config.setDefault("commonHeaders",{"If-Modified-Since":"Sat, 1 Jan 2000 00:00:00 GMT"}),jaxon.config.setDefault("postHeaders",{}),jaxon.config.setDefault("getHeaders",{}),jaxon.config.setDefault("waitCursor",!1),jaxon.config.setDefault("statusMessages",!1),jaxon.config.setDefault("baseDocument",document),jaxon.config.setDefault("requestURI",jaxon.config.baseDocument.URL),jaxon.config.setDefault("defaultMode","asynchronous"),jaxon.config.setDefault("defaultHttpVersion","HTTP/1.1"),jaxon.config.setDefault("defaultContentType","application/x-www-form-urlencoded"),jaxon.config.setDefault("defaultResponseDelayTime",1e3),jaxon.config.setDefault("defaultExpirationTime",1e4),jaxon.config.setDefault("defaultMethod","POST"),jaxon.config.setDefault("defaultRetry",5),jaxon.config.setDefault("defaultReturnValue",!1),jaxon.config.setDefault("maxObjectDepth",20),jaxon.config.setDefault("maxObjectSize",2e3),jaxon.config.setDefault("responseQueueSize",1e3),jaxon.config.status={update:function(){return{onRequest:function(){window.status="Sending Request..."},onWaiting:function(){window.status="Waiting for Response..."},onProcessing:function(){window.status="Processing..."},onComplete:function(){window.status="Done."}}},dontUpdate:function(){return{onRequest:function(){},onWaiting:function(){},onProcessing:function(){},onComplete:function(){}}}},jaxon.config.cursor={update:function(){return{onWaiting:function(){jaxon.config.baseDocument.body&&(jaxon.config.baseDocument.body.style.cursor="wait")},onComplete:function(){jaxon.config.baseDocument.body.style.cursor="auto"}}},dontUpdate:function(){return{onWaiting:function(){},onComplete:function(){}}}},jaxon.tools.ajax={createRequest:function(){return"undefined"!=typeof XMLHttpRequest?jaxon.tools.ajax.createRequest=function(){return new XMLHttpRequest}:"undefined"!=typeof ActiveXObject?jaxon.tools.ajax.createRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.4.0")}catch(e){return jaxon.tools.ajax.createRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){return jaxon.tools.ajax.createRequest=function(){return new ActiveXObject("Microsoft.XMLHTTP")},jaxon.tools.ajax.createRequest()}},jaxon.tools.ajax.createRequest()}}:window.createRequest?jaxon.tools.ajax.createRequest=function(){return window.createRequest()}:jaxon.tools.ajax.createRequest=function(){throw{code:10002}},jaxon.tools.ajax.createRequest()},processFragment:function(e,t,n,o){var r=jaxon,s=r.tools;for(nodeName in e)if("jxnobj"==nodeName){for(a in e[nodeName])if(parseInt(a)==a){var i=e[nodeName][a];i.fullName="*unknown*",i.sequence=t,i.request=o,i.context=o.context,s.queue.push(r.response,i),++t}}else if("jxnrv"==nodeName)n=e[nodeName];else{if("debugmsg"!=nodeName)throw{code:10004,data:i.fullName};txt=e[nodeName]}return n}},jaxon.tools.array={is_in:function(e,t){for(var a=0,n=e.length;a1&&1==arguments[1]&&(t=!0);var a="";arguments.length>2&&(a=arguments[2]),"string"==typeof e&&(e=jaxon.$(e));var n={};return e&&e.childNodes&&jaxon.tools.form._getValues(n,e.childNodes,t,a),n},_getValues:function(e,t,a,n){for(var o=t.length,r=0;r--a)return!1}else a=t;return e.retries=a,!0},rewind:function(e){0e.size&&(a=0),a==e.start)throw{code:10003};e.commands[e.end]=t,e.end=a},pushFront:function(e,t){jaxon.tools.queue.rewind(e),e.commands[e.start]=t},pop:function(e){var t=e.start;if(t==e.end)return null;++t>e.size&&(t=0);var a=e.commands[e.start];return delete e.commands[e.start],e.start=t,a}},jaxon.tools.string={doubleQuotes:function(e){return void 0!==e&&e.replace(new RegExp("'","g"),'"')},singleQuotes:function(e){return void 0!==e&&e.replace(new RegExp('"',"g"),"'")},stripOnPrefix:function(e){return 0==(e=e.toLowerCase()).indexOf("on")&&(e=e.replace(/on/,"")),e},addOnPrefix:function(e){return 0!=(e=e.toLowerCase()).indexOf("on")&&(e="on"+e),e}},String.prototype.supplant||(String.prototype.supplant=function(e){return this.replace(/\{([^{}]*)\}/g,function(t,a){var n=e[a];return"string"==typeof n||"number"==typeof n?n:t})}),jaxon.tools.upload={createIframe:function(e){var t="jaxon_upload_"+e.upload.id;return jaxon.cmd.node.remove(t),jaxon.cmd.node.insert(e.upload.form,"iframe",t),e.upload.iframe=jaxon.tools.dom.$(t),e.upload.iframe.name=t,e.upload.iframe.style.display="none",e.upload.form.method="POST",e.upload.form.enctype="multipart/form-data",e.upload.form.action=jaxon.config.requestURI,e.upload.form.target=t,!0},initialize:function(e){var t=jaxon.tools.dom.$(e.upload.id);if(null==t)return console.log("Unable to find input field for file upload with id "+e.upload.id),!1;if("file"!=t.type)return console.log("The upload input field with id "+e.upload.id+" is not of type file"),!1;if(void 0===t.name)return console.log("The upload input field with id "+e.upload.id+" has no name attribute"),!1;if(e.upload.input=t,e.upload.form=t.form,0!=e.upload.ajax)return!0;if(!t.form){for(var a=t;null!=a&&"FORM"!=a.nodeName;)a=a.parentNode;if(null==a)return console.log("The upload input field with id "+e.upload.id+" is not in a form"),!1;e.upload.form=a}return jaxon.tools.upload.createIframe(e),!0}},jaxon.cmd.event={setEvent:function(command){command.fullName="setEvent";var element=command.id,sEvent=command.prop,code=command.data;return element=jaxon.$(element),sEvent=jaxon.tools.string.addOnPrefix(sEvent),code=jaxon.tools.string.doubleQuotes(code),eval("element."+sEvent+" = function(e) { "+code+"; }"),!0},addHandler:function(element,sEvent,fun){return window.addEventListener?jaxon.cmd.event.addHandler=function(command){command.fullName="addHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.stripOnPrefix(sEvent),eval('element.addEventListener("'+sEvent+'", '+fun+", false);"),!0}:jaxon.cmd.event.addHandler=function(command){command.fullName="addHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.addOnPrefix(sEvent),eval('element.attachEvent("'+sEvent+'", '+fun+", false);"),!0},jaxon.cmd.event.addHandler(element,sEvent,fun)},removeHandler:function(element,sEvent,fun){return window.removeEventListener?jaxon.cmd.event.removeHandler=function(command){command.fullName="removeHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.stripOnPrefix(sEvent),eval('element.removeEventListener("'+sEvent+'", '+fun+", false);"),!0}:jaxon.cmd.event.removeHandler=function(command){command.fullName="removeHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.addOnPrefix(sEvent),eval('element.detachEvent("'+sEvent+'", '+fun+", false);"),!0},jaxon.cmd.event.removeHandler(element,sEvent,fun)}},jaxon.cmd.form={getInput:function(e,t,a){return void 0===window.addEventListener?jaxon.cmd.form.getInput=function(e,t,a){return jaxon.config.baseDocument.createElement('')}:jaxon.cmd.form.getInput=function(e,t,a){var n=jaxon.config.baseDocument.createElement("input");return n.setAttribute("type",e),n.setAttribute("name",t),n.setAttribute("id",a),n},jaxon.cmd.form.getInput(e,t,a)},createInput:function(e){e.fullName="createInput";var t=e.id,a=e.type,n=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(a,n,o);return t&&r&&t.appendChild(r),!0},insertInput:function(e){e.fullName="insertInput";var t=e.id,a=e.type,n=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(a,n,o);return r&&t&&t.parentNode&&t.parentNode.insertBefore(r,t),!0},insertInputAfter:function(e){e.fullName="insertInputAfter";var t=e.id,a=e.type,n=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(a,n,o);return r&&t&&t.parentNode&&t.parentNode.insertBefore(r,t.nextSibling),!0}},jaxon.cmd.node={assign:function(element,property,data){switch("string"==typeof element&&(element=jaxon.$(element)),property){case"innerHTML":element.innerHTML=data;break;case"outerHTML":if(void 0===element.outerHTML){var r=jaxon.config.baseDocument.createRange();r.setStartBefore(element);var df=r.createContextualFragment(data);element.parentNode.replaceChild(df,element)}else element.outerHTML=data;break;default:jaxon.tools.dom.willChange(element,property,data)&&eval("element."+property+" = data;")}return!0},append:function(element,property,data){return"string"==typeof element&&(element=jaxon.$(element)),eval("element."+property+" += data;"),!0},prepend:function(element,property,data){return"string"==typeof element&&(element=jaxon.$(element)),eval("element."+property+" = data + element."+property),!0},replace:function(element,sAttribute,aData){var sSearch=aData.s,sReplace=aData.r;"innerHTML"==sAttribute&&(sSearch=jaxon.tools.dom.getBrowserHTML(sSearch)),"string"==typeof element&&(element=jaxon.$(element)),eval("var txt = element."+sAttribute);var bFunction=!1;"function"==typeof txt&&(txt=txt.join(""),bFunction=!0);var start=txt.indexOf(sSearch);if(start>-1){for(var newTxt=[];start>-1;){var end=start+sSearch.length;newTxt.push(txt.substr(0,start)),newTxt.push(sReplace),txt=txt.substr(end,txt.length-end),start=txt.indexOf(sSearch)}newTxt.push(txt),newTxt=newTxt.join(""),bFunction?eval("element."+sAttribute+"=newTxt;"):jaxon.tools.dom.willChange(element,sAttribute,newTxt)&&eval("element."+sAttribute+"=newTxt;")}return!0},remove:function(e){return"string"==typeof e&&(e=jaxon.$(e)),e&&e.parentNode&&e.parentNode.removeChild&&e.parentNode.removeChild(e),!0},create:function(e,t,a){"string"==typeof e&&(e=jaxon.$(e));var n=jaxon.config.baseDocument.createElement(t);return n.setAttribute("id",a),e&&e.appendChild(n),!0},insert:function(e,t,a){"string"==typeof e&&(e=jaxon.$(e));var n=jaxon.config.baseDocument.createElement(t);return n.setAttribute("id",a),e.parentNode.insertBefore(n,e),!0},insertAfter:function(e,t,a){"string"==typeof e&&(e=jaxon.$(e));var n=jaxon.config.baseDocument.createElement(t);return n.setAttribute("id",a),e.parentNode.insertBefore(n,e.nextSibling),!0},contextAssign:function(args){args.fullName="context assign";var code=[];return code.push("this."),code.push(args.prop),code.push(" = data;"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0},contextAppend:function(args){args.fullName="context append";var code=[];return code.push("this."),code.push(args.prop),code.push(" += data;"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0},contextPrepend:function(args){args.fullName="context prepend";var code=[];return code.push("this."),code.push(args.prop),code.push(" = data + this."),code.push(args.prop),code.push(";"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0}},jaxon.cmd.script={includeScriptOnce:function(e){e.fullName="includeScriptOnce";for(var t=e.data,a=jaxon.config.baseDocument.getElementsByTagName("script"),n=a.length,o=0;o0?skip-=1:0!=remove&&(remove>0&&(remove-=1),element.removeChild(children[i])))},endResponse:function(e){jxnElm=[]}},jaxon.ajax.callback={create:function(){var e=jaxon,t=e.config,a=e.ajax.callback,n={};return n.timers={},n.timers.onResponseDelay=a.setupTimer(arguments.length>0?arguments[0]:t.defaultResponseDelayTime),n.timers.onExpiration=a.setupTimer(arguments.length>1?arguments[1]:t.defaultExpirationTime),n.onRequest=null,n.onResponseDelay=null,n.onExpiration=null,n.beforeResponseProcessing=null,n.onFailure=null,n.onRedirect=null,n.onSuccess=null,n.onComplete=null,n},setupTimer:function(e){return{timer:null,delay:e}},clearTimer:function(e,t){if(void 0!==e.timers)void 0!==e.timers[t]&&clearTimeout(e.timers[t].timer);else if("object"==typeof e)for(var a=e.length,n=0;n1&&1==arguments[1]&&(t=!0);var n="";arguments.length>2&&(n=arguments[2]),"string"==typeof e&&(e=jaxon.$(e));var a={};return e&&e.childNodes&&jaxon.tools.form._getValues(a,e.childNodes,t,n),a},_getValues:function(e,t,n,a){for(var o=t.length,r=0;r--n)return!1}else n=t;return e.retries=n,!0},rewind:function(e){0e.size&&(n=0),n==e.start)throw{code:10003};e.commands[e.end]=t,e.end=n},pushFront:function(e,t){jaxon.tools.queue.rewind(e),e.commands[e.start]=t},pop:function(e){var t=e.start;if(t==e.end)return null;++t>e.size&&(t=0);var n=e.commands[e.start];return delete e.commands[e.start],e.start=t,n}},jaxon.tools.string={doubleQuotes:function(e){return void 0!==e&&e.replace(new RegExp("'","g"),'"')},singleQuotes:function(e){return void 0!==e&&e.replace(new RegExp('"',"g"),"'")},stripOnPrefix:function(e){return 0==(e=e.toLowerCase()).indexOf("on")&&(e=e.replace(/on/,"")),e},addOnPrefix:function(e){return 0!=(e=e.toLowerCase()).indexOf("on")&&(e="on"+e),e}},String.prototype.supplant||(String.prototype.supplant=function(e){return this.replace(/\{([^{}]*)\}/g,function(t,n){var a=e[n];return"string"==typeof a||"number"==typeof a?a:t})}),jaxon.tools.upload={createIframe:function(e){var t="jaxon_upload_"+e.upload.id;return jaxon.cmd.node.remove(t),jaxon.cmd.node.insert(e.upload.form,"iframe",t),e.upload.iframe=jaxon.tools.dom.$(t),e.upload.iframe.name=t,e.upload.iframe.style.display="none",e.upload.form.method="POST",e.upload.form.enctype="multipart/form-data",e.upload.form.action=jaxon.config.requestURI,e.upload.form.target=t,!0},initialize:function(e){var t=jaxon.tools.dom.$(e.upload.id);if(null==t)return console.log("Unable to find input field for file upload with id "+e.upload.id),!1;if("file"!=t.type)return console.log("The upload input field with id "+e.upload.id+" is not of type file"),!1;if(void 0===t.name)return console.log("The upload input field with id "+e.upload.id+" has no name attribute"),!1;if(e.upload.input=t,e.upload.form=t.form,0!=e.upload.ajax)return!0;if(!t.form){for(var n=t;null!=n&&"FORM"!=n.nodeName;)n=n.parentNode;if(null==n)return console.log("The upload input field with id "+e.upload.id+" is not in a form"),!1;e.upload.form=n}return jaxon.tools.upload.createIframe(e),!0}},jaxon.cmd.event={setEvent:function(command){command.fullName="setEvent";var element=command.id,sEvent=command.prop,code=command.data;return element=jaxon.$(element),sEvent=jaxon.tools.string.addOnPrefix(sEvent),code=jaxon.tools.string.doubleQuotes(code),eval("element."+sEvent+" = function(e) { "+code+"; }"),!0},addHandler:function(element,sEvent,fun){return window.addEventListener?jaxon.cmd.event.addHandler=function(command){command.fullName="addHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.stripOnPrefix(sEvent),eval('element.addEventListener("'+sEvent+'", '+fun+", false);"),!0}:jaxon.cmd.event.addHandler=function(command){command.fullName="addHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.addOnPrefix(sEvent),eval('element.attachEvent("'+sEvent+'", '+fun+", false);"),!0},jaxon.cmd.event.addHandler(element,sEvent,fun)},removeHandler:function(element,sEvent,fun){return window.removeEventListener?jaxon.cmd.event.removeHandler=function(command){command.fullName="removeHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.stripOnPrefix(sEvent),eval('element.removeEventListener("'+sEvent+'", '+fun+", false);"),!0}:jaxon.cmd.event.removeHandler=function(command){command.fullName="removeHandler";var element=command.id,sEvent=command.prop,fun=command.data;return"string"==typeof element&&(element=jaxon.$(element)),sEvent=jaxon.tools.string.addOnPrefix(sEvent),eval('element.detachEvent("'+sEvent+'", '+fun+", false);"),!0},jaxon.cmd.event.removeHandler(element,sEvent,fun)}},jaxon.cmd.form={getInput:function(e,t,n){return void 0===window.addEventListener?jaxon.cmd.form.getInput=function(e,t,n){return jaxon.config.baseDocument.createElement('')}:jaxon.cmd.form.getInput=function(e,t,n){var a=jaxon.config.baseDocument.createElement("input");return a.setAttribute("type",e),a.setAttribute("name",t),a.setAttribute("id",n),a},jaxon.cmd.form.getInput(e,t,n)},createInput:function(e){e.fullName="createInput";var t=e.id,n=e.type,a=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(n,a,o);return t&&r&&t.appendChild(r),!0},insertInput:function(e){e.fullName="insertInput";var t=e.id,n=e.type,a=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(n,a,o);return r&&t&&t.parentNode&&t.parentNode.insertBefore(r,t),!0},insertInputAfter:function(e){e.fullName="insertInputAfter";var t=e.id,n=e.type,a=e.data,o=e.prop;"string"==typeof t&&(t=jaxon.$(t));var r=jaxon.cmd.form.getInput(n,a,o);return r&&t&&t.parentNode&&t.parentNode.insertBefore(r,t.nextSibling),!0}},jaxon.cmd.node={assign:function(element,property,data){switch("string"==typeof element&&(element=jaxon.$(element)),property){case"innerHTML":element.innerHTML=data;break;case"outerHTML":if(void 0===element.outerHTML){var r=jaxon.config.baseDocument.createRange();r.setStartBefore(element);var df=r.createContextualFragment(data);element.parentNode.replaceChild(df,element)}else element.outerHTML=data;break;default:jaxon.tools.dom.willChange(element,property,data)&&eval("element."+property+" = data;")}return!0},append:function(element,property,data){return"string"==typeof element&&(element=jaxon.$(element)),eval("element."+property+" += data;"),!0},prepend:function(element,property,data){return"string"==typeof element&&(element=jaxon.$(element)),eval("element."+property+" = data + element."+property),!0},replace:function(element,sAttribute,aData){var sSearch=aData.s,sReplace=aData.r;"innerHTML"==sAttribute&&(sSearch=jaxon.tools.dom.getBrowserHTML(sSearch)),"string"==typeof element&&(element=jaxon.$(element)),eval("var txt = element."+sAttribute);var bFunction=!1;"function"==typeof txt&&(txt=txt.join(""),bFunction=!0);var start=txt.indexOf(sSearch);if(start>-1){for(var newTxt=[];start>-1;){var end=start+sSearch.length;newTxt.push(txt.substr(0,start)),newTxt.push(sReplace),txt=txt.substr(end,txt.length-end),start=txt.indexOf(sSearch)}newTxt.push(txt),newTxt=newTxt.join(""),bFunction?eval("element."+sAttribute+"=newTxt;"):jaxon.tools.dom.willChange(element,sAttribute,newTxt)&&eval("element."+sAttribute+"=newTxt;")}return!0},remove:function(e){return"string"==typeof e&&(e=jaxon.$(e)),e&&e.parentNode&&e.parentNode.removeChild&&e.parentNode.removeChild(e),!0},create:function(e,t,n){"string"==typeof e&&(e=jaxon.$(e));var a=jaxon.config.baseDocument.createElement(t);return a.setAttribute("id",n),e&&e.appendChild(a),!0},insert:function(e,t,n){"string"==typeof e&&(e=jaxon.$(e));var a=jaxon.config.baseDocument.createElement(t);return a.setAttribute("id",n),e.parentNode.insertBefore(a,e),!0},insertAfter:function(e,t,n){"string"==typeof e&&(e=jaxon.$(e));var a=jaxon.config.baseDocument.createElement(t);return a.setAttribute("id",n),e.parentNode.insertBefore(a,e.nextSibling),!0},contextAssign:function(args){args.fullName="context assign";var code=[];return code.push("this."),code.push(args.prop),code.push(" = data;"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0},contextAppend:function(args){args.fullName="context append";var code=[];return code.push("this."),code.push(args.prop),code.push(" += data;"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0},contextPrepend:function(args){args.fullName="context prepend";var code=[];return code.push("this."),code.push(args.prop),code.push(" = data + this."),code.push(args.prop),code.push(";"),code=code.join(""),args.context.jaxonDelegateCall=function(data){eval(code)},args.context.jaxonDelegateCall(args.data),!0}},jaxon.cmd.script={includeScriptOnce:function(e){e.fullName="includeScriptOnce";for(var t=e.data,n=jaxon.config.baseDocument.getElementsByTagName("script"),a=n.length,o=0;o0?skip-=1:0!=remove&&(remove>0&&(remove-=1),element.removeChild(children[i])))},endResponse:function(e){jxnElm=[]}},jaxon.ajax.callback={create:function(){var e=jaxon,t=e.config,n=e.ajax.callback,a={};return a.timers={},a.timers.onResponseDelay=n.setupTimer(arguments.length>0?arguments[0]:t.defaultResponseDelayTime),a.timers.onExpiration=n.setupTimer(arguments.length>1?arguments[1]:t.defaultExpirationTime),a.onRequest=null,a.onResponseDelay=null,a.onExpiration=null,a.beforeResponseProcessing=null,a.onFailure=null,a.onRedirect=null,a.onSuccess=null,a.onComplete=null,a},setupTimer:function(e){return{timer:null,delay:e}},clearTimer:function(e,t){if(void 0!==e.timers)void 0!==e.timers[t]&&clearTimeout(e.timers[t].timer);else if("object"==typeof e)for(var n=e.length,a=0;a