/**
 *@fileoverview AJAX工具包，所有功能经我测试已经通过，叫 beta3 是因为怕还有哪里没有测试到
 *json示例：{'sel':[{'text':'abc','value':'5'},{'text':'cba','value':'4'}]}
 *
 *@author 肖杰
 *@version 1.0 beta3
 */

AjaxUtil = function() {
    createXMLHttp = function() {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            var request = new ActiveXObject("Msxml2.XMLHTTP");
            if (!request) {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            return request;
        }
    }
    var xmlHttp = createXMLHttp();

    this.XMLHTTP = xmlHttp;

    this.doGET = function(url, pram, obj) {
        xmlHttp.open("GET", url + "?" + pram, (typeof (arguments[4]) == "undefined") ? true : arguments[4]);
        if (arguments[3]) {
            xmlHttp.setRequestHeader("If-Modified-Since", "0");
        }
        xmlHttp.onreadystatechange = new Callback(obj);
        xmlHttp.send(null);
    }

    this.doPOST = function(url, pram, obj) {
        xmlHttp.open("POST", url, (typeof (arguments[4]) == "undefined") ? true : arguments[4]);
        if (arguments[3])
            xmlHttp.setRequestHeader("If-Modified-Since", "0");
        xmlHttp.onreadystatechange = new Callback(obj);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        xmlHttp.send(pram);
    }

    function Callback(obj) {
        if (typeof obj == "function") {
            return obj;
        }

        switch (obj.tagName.toUpperCase()) {
            case "DIV":
            case "SPAN":
                return innHtm;
            case "TEXTAREA":
            case "INPUT":
                return value;
            case "SELECT":
                return opt;
        }

        function innHtm() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    obj.innerHTML = xmlHttp.responseText;
                }
            }
        }

        function value() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    obj.value = xmlHttp.responseText;
                }
            }
        }

        function opt() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    var json = eval("(" + xmlHttp.responseText + ")");
                    obj.innerHTML = "";
                    var newOption = document.createElement("OPTION");
                    newOption.text = "请选择...";
                    newOption.value = "0";
                    obj.options.add(newOption);
                    for (i = 0; i < json.sel.length; i++) {
                        newOption = document.createElement("OPTION");
                        newOption.text = json.sel[i].text
                        newOption.value = json.sel[i].value;
                        obj.options.add(newOption);
                    }
                }
            }
        }
    }
}
