document.domain='tema-sport.ru';

var ajax_requests = [];
    var ajaxHandleStateChange = function() {
    for(var k = 0; k<ajax_requests.length; k++) {
        if (ajax_requests[k].request == null) {
	ajax_requests.splice(k--,1);
	continue;
        }
        if (ajax_requests[k].request.readyState == 4) {
	var request = ajax_requests[k];
	ajax_requests.splice(k--,1);
	try {
	    request.ready();
	} catch (e) {}
	continue;
        }
    }
    }

    function GetAjaxRequest()
    {
    var request = null;
    // branch for native XMLHttpRequest object
    if (typeof XMLHttpRequest != "undefined") {
        try {
	request = new XMLHttpRequest();
        } catch(e) {
	request = null;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
	request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
	    try {
	    request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
	        request = null;
	    }
        }
    }
    return request;
    }

    function AjaxRequest(method,script_name,func_name,args,callback,callback_object)
    {
    this.method = method;
    this.callback = callback;
    this.callback_object = callback_object;
    this.args = args;
    if (func_name && func_name != 'undefined')
    {
	this.url = script_name+"?ajax_call=1&func_name="+escapePlus(func_name)+"&back="+escapePlus(window.location)+"&data="+escapePlus(JSON.stringify(this.args));
    }
    else
    {
	this.url = script_name;
    }

    }

    AjaxRequest.prototype = {
    send : function() {
        var request = GetAjaxRequest();
        if (request) {
	this.request = request;
	request.onreadystatechange = ajaxHandleStateChange;
	if (this.method == "POST") {
	    var idx=this.url.indexOf('?');
	    var post = this.url.substr(idx+1);
	    var url = this.url.substr(0,idx);
	    try {
	      // some old browsers would trigger security error here
	      request.open("POST", url, true);
	    } catch(e) {
	      return false;
	    }
	    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	    try {
	      // Opera 8.54 hung here, not on request.open
	      request.send(post);
	    } catch(e) {
	      return false;
	    }
	} else {
	    try {
	      request.open("GET", this.url, true);
	    } catch(e) {
	      return false;
	    }
	    try {
	      // Opera 8.54
	      request.send(null);
	    } catch(e) {
	      return false;
	    }
	}
	return true;
        } else {
	return false;
        }
    },
    ready : function() {
        if(this.request.status != 200) return;
        var data = JSON.parse(this.request.responseText);
        if(this.callback) {
	    this.callback.apply(this.callback_object?this.callback_object:window,data);
        }
    }
    }

    function redirect(url)
    {
        window.location=url;
    }

    function escapePlus(param){
        param = escape(param);
        return String(param).replace(/\+/g,'%2B');
    }

    function escapeParam(param)
    {
        return String(param).replace(/\\/g,"\\\\").replace(/&/g,"\\&");
    }

    function unescapeParam(param)
    {
        return String(param).replace(/\\&/g,"&").replace(/\\\\/g,"\\");
    }

    function splitParam(param)
    {
    if(param == "") return new Array();
        var params = unescapeParam(param).split("&");
    for(var i = 0; i<params.length; i++) {
        if(params[i].substr(params[i].length-1,1) == "\\" && params.length>i+1) {
                params.splice(i,2,params[i]+"&"+params[i+1]);
                i--;
        }
        }
    for(var i = 0; i<params.length; i++)
        params[i]=params[i].substr(1,params[i].length-2);
        return params;
    }
//////////////////////////////

function ajax_call() {
    var args = ajax_call.arguments;
    var func_name = args[0];
    var func_args = [];
    var callback;
    var callback_object;
    for (var i = 1; i<args.length; i++) {
	if ((typeof(args[i])!="undefined") && (args[i].constructor == Function)) {
            callback = args[i];
            if (args.length>i+1) {
                callback_object = args[i+1];
            }
            break;
        } else {
            func_args[func_args.length] = args[i];
        }
    }
    var pos = ajax_requests.length;
    var request = new AjaxRequest("POST",'http://'+server+'/ajax',func_name,func_args,callback,callback_object);
    ajax_requests[pos] = request;
    if (!request.send()) {
        ajax_requests.splice(ajax_requests.length-1,1);
        return false;
    } else {
        return true;
    }
}


