﻿//Ajax 访问对象
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) {
    var request = ajax_create_request(context);
    var async = typeof (callback) == 'function';
    //alert(data);
    if (async) request.obj.onreadystatechange = function() {
        if (request.obj.readyState == 4)
            callback(new ajax_response(request));
    }

    request.obj.open('POST', url, async);
    request.obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    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 {
            //alert(request.obj.responseText); //return;
            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;

    return request.obj.responseText;

    var r = null;
    eval('r=' + request.obj.responseText + ';');
    return;
    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';

//ajax_request("/Ax/getteamnumber.aspx","bid="+bid+"",BaTeamRequest).value
//url == AJAX处理页的地址
//data == 提交给处理页的数据，FORM形式
//request == 全局的Ajax对象
function ajax_request_syn(url,data,request)
{
    request = new XMLHttpRequest();
    if (!request) { alert('对象创建失败。');}
     //alert(data);
    request.onreadystatechange = function(){ajax_response_syn(request);};   
    request.open("POST",url,true);
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.setRequestHeader("win-ajax","true");
    request.send(data);
}

function ajax_response_syn(request)
{
    this.request = request;
    this.error = null;
    this.value = null;
    if (request.readyState == 4) 
    {
        if (request.status == 200 ) 
        {
            try
            { 
            eval(request.responseText);
            }
            catch(e)
            {}
        }
    }
    return this;
}