﻿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<requests.length; i++){if(requests[i] != null)requests[i].abort();}
}function ajax_create_request(context)
{for(var i=0; i<requests.length; i++){if(requests[i].readyState == 4){requests[i].abort();requests[i].context = context;return requests[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)
{//alert("ok");var request = ajax_create_request(context);var async = typeof(callback) == 'function';if(async) request.obj.onreadystatechange = 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.status == 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 status: ' + request.obj.status, request.obj.status);}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<o.length; ++i){s += json_from_object(o[i]);if(i < o.length -1)s += ',';}return '[' + s + ']';}break;case 'string':return '"' + o.replace(/(["\\])/g, '\\$1') + '"';default:return String(o);}
}var ajaxVersion = '5.7.22.2';