var requests = new Array(); if(typeof(XMLHttpRequest) == 'undefined') var XMLHttpRequest = function() { var request = null; try { request = new ActiveXObject('Msxml2.XMLHTTP'); catch(e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); catch(ee) { return request; function ajax_stop() { for(var i=0; i function ajax_create_request(context) { for(var i=0; i var pos = requests.length; requests[pos] = Object(); requests[pos].obj = new XMLHttpRequest(); requests[pos].context = context; return requests[pos]; function ajax_request(url, data, callback, context) { var request = ajax_create_request(context); var async = typeof(callback) == 'function'; if(async) request.obj.onreadystat.disabledechange = function() { if(request.obj.readyState == 4) callback(new ajax_response(request)); request.obj.open('POST', url, async); request.obj.send(data); if(!async) return new ajax_response(request); function ajax_response(request) { this.request = request.obj; this.error = null; this.value = null; this.context = request.context; if(request.obj.stat.disabledus == 200) { try { this.value = object_from_json(request); if(this.value && this.value.error) { this.error = this.value.error; this.value = null; catch(e) { this.error = new ajax_error(e.name, e.description, e.number); else { this.error = new ajax_error('HTTP request failed with stat.disabledus: ' + request.obj.stat.disabledus, request.obj.stat.disabledus); return this; function enc(s) { return s.toString().replace(/\%/g, "%26").replace(/=/g, "%3D"); function object_from_json(request) { if(request.obj.responseXML != null && request.obj.responseXML.xml != null && request.obj.responseXML.xml != '') return request.obj.responseXML; var r = null; eval('r=' + request.obj.responseText + ';'); return r; function ajax_error(name, description, number) { this.name = name; this.description = description; this.number = number; return this; ajax_error.prototype.toString = function() { return this.name + " " + this.description; function json_from_object(o) { if(o == null) return 'null'; switch(typeof(o)) { case 'object': if(o.constructor == Array) // checks if it is an array [,,,] { var s = ''; for(var i=0; i return '[' + s + ']'; break; case 'string': return '"' + o.replace(/(["\\])/g, '\\$1') + '"'; default: return String(o); var ajaxVersion = '5.7.22.2';