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