jbe/bsw@11:
jbe/bsw@11: partialload_queue = [];
jbe/bsw@11: partialload_queueRPos = 0;
jbe/bsw@11: partialload_queueWPos = 0;
jbe/bsw@11:
jbe/bsw@11: function partialload_getFormKeyValuePairs(form) {
jbe/bsw@11: var result = {};
jbe/bsw@11: for (var i=0; i
= 0) {
jbe/bsw@11: if (url.search(/&$/) >= 0) {
jbe/bsw@11: url = url + params;
jbe/bsw@11: } else {
jbe/bsw@11: url = url + "&" + params;
jbe/bsw@11: }
jbe/bsw@11: } else {
jbe/bsw@11: url = url + "?" + params;
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11: return url;
jbe/bsw@11: }
jbe/bsw@11:
jbe/bsw@11: function partialload_mergeEncodedFormData(data1, data2) {
jbe/bsw@11: if (data2 == null || data2 == "") return data1;
jbe/bsw@11: if (data1 == null || data1 == "") return data2;
jbe/bsw@11: return data1 + "&" + data2;
jbe/bsw@11: }
jbe/bsw@11:
jbe/bsw@11: function partialload_startNextRequest() {
jbe/bsw@11: var entry = partialload_queue[partialload_queueRPos++];
jbe/bsw@11: var req = new XMLHttpRequest();
jbe/bsw@11: req.open(entry.method, entry.url, true);
jbe/bsw@11: req.onreadystatechange = function() {
jbe/bsw@11: if (req.readyState == 4) {
jbe/bsw@11: if (req.status == 200) {
jbe/bsw@11: if (entry.successHandler != null) entry.successHandler(req.responseText);
jbe/bsw@11: } else {
jbe/bsw@11: if (entry.failureHandler != null) entry.failureHandler();
jbe/bsw@11: }
jbe/bsw@11: if (partialload_queue[partialload_queueRPos]) {
jbe/bsw@11: partialload_startNextRequest();
jbe/bsw@11: } else {
jbe/bsw@11: partialload_queue = [];
jbe/bsw@11: partialload_queueRPos = 0;
jbe/bsw@11: partialload_queueWPos = 0;
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11: if (entry.data) {
jbe/bsw@11: req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
jbe/bsw@11: }
jbe/bsw@11: req.send(entry.data);
jbe/bsw@11: }
jbe/bsw@11:
jbe/bsw@11: function queuedHttpRequest(
jbe/bsw@11: url_or_form,
jbe/bsw@11: urlParams,
jbe/bsw@11: postParams,
jbe/bsw@11: successHandler,
jbe/bsw@11: failureHandler
jbe/bsw@11: ) {
jbe/bsw@11: var method;
jbe/bsw@11: var data = null;
jbe/bsw@11: if (typeof(postParams) == "string") {
jbe/bsw@11: data = postParams;
jbe/bsw@11: } else if (postParams != null) {
jbe/bsw@11: data = partialload_encodeFormData(postParams);
jbe/bsw@11: }
jbe/bsw@11: var url;
jbe/bsw@11: if (typeof(url_or_form) == "object") {
jbe/bsw@11: // form element given
jbe/bsw@11: var form = url_or_form;
jbe/bsw@11: url = partialload_addFormDataToUrl(form.action, urlParams);
jbe/bsw@11: var dataFromForm = partialload_encodeFormData(
jbe/bsw@11: partialload_getFormKeyValuePairs(form)
jbe/bsw@11: );
jbe/bsw@11: if (form.method != null && form.method.search(/^POST$/i) >= 0) {
jbe/bsw@11: method = "POST";
jbe/bsw@11: data = partialload_mergeEncodedFormData(data, dataFromForm);
jbe/bsw@11: } else {
jbe/bsw@11: method = (postParams == NULL) ? "GET" : "POST";
jbe/bsw@11: url = partialload_addFormDataToUrl(url, dataFromForm);
jbe/bsw@11: }
jbe/bsw@11: } else {
jbe/bsw@11: // URL given
jbe/bsw@11: url = partialload_addFormDataToUrl(url_or_form, urlParams);
jbe/bsw@11: if (postParams == null) {
jbe/bsw@11: method = "GET";
jbe/bsw@11: } else {
jbe/bsw@11: method = "POST";
jbe/bsw@11: if (typeof(postParams) == "string") {
jbe/bsw@11: data = postParams;
jbe/bsw@11: } else {
jbe/bsw@11: data = partialload_encodeFormData(postParams);
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11: partialload_queue[partialload_queueWPos++] = {
jbe/bsw@11: method: method,
jbe/bsw@11: url: url,
jbe/bsw@11: data: data,
jbe/bsw@11: successHandler: successHandler,
jbe/bsw@11: failureHandler: failureHandler
jbe/bsw@11: };
jbe/bsw@11: if (partialload_queueRPos == 0) {
jbe/bsw@11: partialload_startNextRequest();
jbe/bsw@11: }
jbe/bsw@11: }
jbe/bsw@11:
jbe/bsw@11: function setHtmlContent(node, htmlWithScripts) {
jbe/bsw@11: var uniquePrefix = "placeholder" + Math.floor(Math.random()*10e16) + "_";
jbe/bsw@11: var i = 0;
jbe/bsw@11: var scripts = [];
jbe/bsw@11: var htmlWithPlaceholders = "";
jbe/bsw@11: // NOTE: This function can not handle CDATA blocks at random positions.
jbe/bsw@11: htmlWithPlaceholders = htmlWithScripts.replace(
jbe/bsw@11: /