﻿/////////////////////////////////////////////////////////////
// 　　　　　　　　验证样式定义
/////////////////////////////////////////////////////////////
var INPUT_NORMAL = "TxtBox_N"; //普通样式
var INPUT_WARNING = "TxtBox_W"; //提示样式
var INPUT_ERROR = "TxtBox_E"; //错误样式
var INPUT_SUCCESS = "TxtBox_S"; //正确样式

var INFO_NORMAL = "Info_N"; //普通样式
var INFO_WARNING = "Info_W"; //提示样式
var INFO_ERROR = "Info_E"; //错误样式
var INFO_SUCCESS = "Info_S"; //正确样式

var inputstyle = new Array(INPUT_NORMAL, INPUT_WARNING, INPUT_ERROR, INPUT_SUCCESS);
var infostyle = new Array(INFO_NORMAL, INFO_WARNING, INFO_ERROR, INFO_SUCCESS);

/////////////////////////////////////////////////////////////
// 　　　　　　　　验证消息,配置定义
/////////////////////////////////////////////////////////////
/* validtype:username,password,confirm,mail,question,answer,recommend,checkcode,province,realname,province */
/* status:0:normal,1:warning,2:error,3:success */
var requireErrorInfo = "<strong>此项为必填项。</strong>";
var successinfo = "填写正确";
var formContent = "validContent";
//var username_id      ="";
//var password_id      ="";
//var confirm_id      ="";
//var mail_id      ="";
//var question_id      ="";
//var answer_id      ="";
//var recommend_id      ="";
//var checkcode_id      ="";

var msginfo = new Array();
msginfo["username"] = new Array("2-20个字符，可使用大小写字母、数字、中文、下划线，一个汉字为两个字符。一旦注册成功后用户名不能修改。",
                                "您填写的用户名有误。用户名须2-20个字符，可使用大小写字母、数字、中文、下划线，一个汉字为两个字符。不要使用特殊符号。",
                                "该用户名已存在，请重新输入。");
msginfo["password"] = new Array("6-20个字母、数字、符号组成。不能使用连续的字母或数字。",
                                "<strong>您设置的密码有误。</strong>密码应该由6-20个字母、数字、符号组成。",
                                "请不要设置与用户名相同的密码。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。",
                                "请不要使用相同的字符。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。",
                                "请不要使用连续的数字。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。",
                                "请不要使用连续的小写字母。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。",
                                "请不要使用连续地大写字母。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。",
                                "请不要使用连续的键盘字符。为了您的帐户安全，推荐使用字母加数字或符号的组合密码。");
msginfo["confirm"] = new Array("请再输入一次上面输入的密码。",
                               "两次密码输入不一致，请重新输入。",
                               "您刚才设置的密码不正确。");
msginfo["mail"] = new Array("在密码丢失时，只能通过此邮箱地址取回密码。",
                            "电子邮箱格式不正确，请重新输入。",
                            "电子邮箱已被使用，请重新输入一个电子邮箱。",
                            "您输入的电子邮箱将无法正常接收到学易网发出的邮件，请重新输入一个邮箱。");
msginfo["question"] = new Array("密码保护问题用于找回密码。",
                                "此项为必填项。");
msginfo["answer"] = new Array("密码保护答案用于找回密码，请牢记此答案。",
                                "此项为必填项。");
//msginfo["recommend"] = new Array("如果有学易网用户推荐您来注册，请填写推荐人的用户名");
msginfo["checkcode"] = new Array("请输入左侧图片所示验证码，验证码由5位字母或数字组成，不区分大小写。如果看不清楚可以点击“<a onclick=\"javascript:changeCheckCode();\" style=\"cursor: pointer; color: Blue;\">换一张</a>”。",
                                 "<strong>验证码错误，请重新输入。</strong><br/>如果看不清楚可以点击“<a onclick=\"javascript:changeCheckCode();\" style=\"cursor: pointer; color: Blue;\">换一张</a>”。");
msginfo["province"] = new Array("请选择您所在的省或直辖市。",
                                "<strong>此项为必选项</strong>，请选择您所在的省或直辖市。");
msginfo["realname"] = new Array("请填写您的真实姓名，以便及时为您提供服务。",
                                "此项为必填项。");
msginfo["telephone"] = new Array("请填写您的移动或固定电话。固定电话请加区号，例如：010-62195005",
                                 "您填写的电话号码无效，请重新输入一个移动电话或固定电话。固定电话请加上区号，例如：010-62195005。",
                                 "您填写的电话号码格式有误，请重新输入一个移动电话或固定电话。固定电话请加上区号，例如：010-62195005。");
msginfo["address"] = new Array("请填写您的通讯地址 （可选）");
msginfo["postal"] = new Array("请填写您的邮政编码，例如：100081 （可选）",
                                 "您填写的邮政编码无效，请重新输入");
/////////////////////////////////////////////////////////////
// 　　　　　　　　扩展函数,辅助函数
/////////////////////////////////////////////////////////////
var isIE = document.all ? true : false;

String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/, "");
}

function getMailServer(address) {
    //be sure str is a correct email address
    address = address.trim();
    return address.substr(address.indexOf("@") + 1);
}

function getMailAccount(address) {
    address = address.trim();
    return str.address(0, address.indexOf("@"));
}

function isNumber(str) {
    var re = new RegExp("^\\d*$");
    return re.test(str);
}

function checkByteLength(str, minlen, maxlen) {
    if (str == null) return false;
    var l = str.length;
    var blen = 0;
    for (i = 0; i < l; i++) {
        if ((str.charCodeAt(i) & 0xff00) != 0) {
            blen++;
        }
        blen++;
    }
    if (blen > maxlen || blen < minlen) {
        return false;
    }
    return true;
}

////////////////////////////////////////////////////////////
// 　　　　　　　　验证对象及功能
/////////////////////////////////////////////////////////////

function validElement(required, validtype, parameter, info, errormsg, status) {
    this.r = required; //是否非空验证 true/false
    this.v = validtype.toLowerCase(); //检测项类别
    this.p = parameter; //检测项参数
    this.i = info; //显示提示消息的标签的Id
    this.e = errormsg; //提示消息数组
    this.s = status; //控件状态
}

function isRequired(input) {
    return input.id ? (validInputs[input.id].r ? validInputs[input.id].r : false) : false;
}

function getValidType(input) {
    return input.id ? (eval(validInputs[input.id]).v ? eval(validInputs[input.id]).v : "") : "";
}

function getInfo(input) {
    if (input.id) {
        if (eval(validInputs[input.id]).i && document.getElementById(eval(validInputs[input.id]).i))
            return document.getElementById(eval(validInputs[input.id]).i);
    }
    return null;
}

function getErrorMsg(input, errorCode) {
    if (input.id) {
        if (eval(validInputs[input.id]).e[errorCode]) return eval(validInputs[input.id]).e[errorCode];
    }
    return "";
}

function getStatus(input) {
    if (input.id) {
        if (eval(validInputs[input.id]).s) return eval(validInputs[input.id]).s;
    }
    return 0;
}

function getAttrName(attr) {
    var s = attr.split("=");
    return s[0];
}

function getAttrValue(attr) {
    var s = attr.split("=");
    return s[1];
}

function getAttrValueByName(input, attrname) {
    var para;
    if (input.id) {
        if (eval(validInputs[input.id]).p) para = eval(validInputs[input.id]).p;
        else return "";
    } else {
        return "";
    }
    var s = para.split(",");
    for (var i = 0; i < s.length; i++) {
        if (getAttrName(s[i]) == attrname) {
            if (getAttrValue(s[i]))
                return getAttrValue(s[i]);
            else
                return "";
        }
    }
    return "";
}

////////////////////////////////////////////////////////////
// 　　　　　　　　页面验证与效果显示
/////////////////////////////////////////////////////////////
function validUserName(input) {//验证用户名
    var str = input.value;
    //var patn =   /^[\u0391-\uFFE5a-zA-Z0-9][\u0391-\uFFE5\w]{2,20}$/;
    var patn = /^[^\s]*$/;
    //用户名长度
    if (patn.test(str)) {
        if (checkByteLength(str, 2, 20)) return 0;
    }
    return 1;
}

function validPassword(input) {
    var str = input.value;
    if (checkByteLength(str, 6, 20)) {
        return 1;
    } else {
        return 0;
    }
}

function validSafePassword(input) {//验证密码
    var str = input.value;
    //密码长度
    if (validPassword(input) == 0) return 1;
    //密码是否与用户名一样	
    //if(str == document.getElementById(username_id).value) return 2;
    //密码是否使用相同字符
    //for(var i=0;i<str.length;i++){
    //	if(str.charAt(0)!=str.charAt(i)) break;
    //}
    //if(i == str.length) return 3;
    //密码是否是连续数字
    //var seqStr="01234567890";
    //if(seqStr.indexOf(str) != -1) return 4;
    //密码是否是连续小写字母
    //var seqStr="abcdefghijklmnopqrstuvwxyz";
    //if(seqStr.indexOf(str) != -1) return 5;
    //密码是否是连续大写字母
    //var seqStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //if(seqStr.indexOf(str) != -1) return 6;
    //密码是否是连续键盘字符
    //var seqStr="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
    //if(seqStr.indexOf(str) != -1) return 7;
    //if validated
    return 0;
}

function validConfirm(input) {//验证确认密码
    var v1, v2;
    var sameas_id = getAttrValueByName(input, "sameas");
    if (!sameas_id || sameas_id == "") return -1;
    v1 = input.value;
    v2 = document.getElementById(sameas_id).value;
    if (v1 == v2) {
        if (validSafePassword(document.getElementById(sameas_id)) == 0) return 0;
        else return 2;
    } else {
        return 1;
    }
}

function validMail(input) {//验证邮箱
    var str = input.value;
    var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
    if (patn.test(str)) {
        var blocklist = validInputs[input.id].p;
        if (blocklist && blocklist.length > 0) {
            for (var i = 0; i < blocklist.length; i++) {
                if (getMailServer(str) == blocklist[i])
                    return 3; //mailserver in block list
            }
        }
        //针对Yahoo邮箱做限制
        //不需要此功能，所以注释掉
        //		var mailServer = getMailServer(obj.value);
        //		if (mailServer == "yahoo.com") {
        //				return 3;
        //		} else if (mailServer == "126.net") {
        //				return 4;
        //		}
        return 0;
    } else {
        return 1; //incorrect format
    }
}

function validCheckCode(input) {//验证码的检查
    var str = input.value;
    var patn = /^[0-9a-zA-Z]{5}$/;
    if (patn.test(str)) return -1;
    return 1;
}

function validQuestion(obj) {//验证密码提示问题
    if (obj.value.length == 0) {
        return 1;
    }
    else {
        return 0;
    }
}

function validAnswer(obj) {//验证密码提示答案
    if (obj.value.length == 0) {
        return 1;
    }
    else {
        return 0;
    }
}

function validRecommend(obj) {//验证推荐人
    return -1;
}

function validProvince(obj) {//验证所在地区
    if (obj.value == "0") {
        return 1;
    } else {
        return 0;
    }
}

function validRealName(obj) {//验证真实姓名
    if (obj.value.length == 0) {
        return 1;
    } else {
        return 0;
    }
}

function validPostal(obj) {//验证邮编
    if (obj.value.length == 0) {
        return 0;
    } else {
        var regPostal = /^\d{6}$/;
        return regPostal.test(obj.value) ? 0 : 1;
    }
}

function validTelephone(obj) {//验证联系电话
    if (obj.value.length == 0) {
        return 1;
    }

    var regPhone = /^.*(?:[A-Za-z]).*$/;
    var regFormat = /^((0\d{2,3})[\-]?([2-9]\d{6,7})(\-\d{1,4})?)|(((\([\+]?\d{2}\))|([\+]?\d{2}))?1[3568]\d{9})$/;
    if (regPhone.test(obj.value)) {
        return 1;
    }
    if (!regFormat.test(obj.value)) {
        return 2;
    } else {
        return 0;
    }
}
function validValue(input) {
    //trim
    //	var re = /(^\s)|(\s$)/g;
    //    if(event.keyCode == 32){
    //        input.value = input.value.trim();
    //        return false;
    //    }
    //switcher
    var errorCode = -1;
    switch (getValidType(input)) {
        case "username":
            errorCode = validUserName(input);
            break;
        case "password":
            errorCode = validSafePassword(input);
            break;
        case "mail":
            errorCode = validMail(input);
            break;
        case "confirm":
            errorCode = validConfirm(input);
            break;
        case "checkcode":
            errorCode = validCheckCode(input);
            break;
        case "question":
            errorCode = validQuestion(input);
            break;
        case "answer":
            errorCode = validAnswer(input);
            break;
        case "province":
            errorCode = validProvince(input);
            break;
        case "realname":
            errorCode = validRealName(input);
            break;
        case "telephone":
            errorCode = validTelephone(input);
            break;
        case "postal":
            errorCode = validPostal(input);
            break;
        default:
            errorCode = -1;
            break;
        //		case "recommend": 
        //		    errorCode = validRecommend(input); 
        //			break; 
    }
    //	alert(errorCode);
    return errorCode;
}

////////////////////////////////////////////////////////////
// 　　　　　　　　页面初始化
/////////////////////////////////////////////////////////////
var validInputs = new Array(); //定义被验证控件对应关系

function initForm() {
    validInputs[username_id] = new validElement(true, "username", null, "username_info", msginfo["username"], 0);
    validInputs[password_id] = new validElement(true, "password", null, "password_info", msginfo["password"], 0);
    validInputs[confirm_id] = new validElement(true, "confirm", "sameas=" + password_id, "confirm_info", msginfo["confirm"], 0);
    validInputs[mail_id] = new validElement(true, "mail", null, "mail_info", msginfo["mail"], 0);
    //    validInputs[question_id] = new validElement(true,"question",null,"question_info",msginfo["question"],0);
    //    validInputs[answer_id] = new validElement(true,"answer",null,"answer_info",msginfo["answer"],0);
    //    validInputs[recommend_id] = new validElement(false,"recommend",null,"recommend_info",msginfo["recommend"],0);
    //    validInputs[checkcode_id] = new validElement(true,"checkcode",null,"checkcode_info",msginfo["checkcode"],0);

    validInputs[province_id] = new validElement(false, "province", null, "province_info", msginfo["province"], 0);
    validInputs[realname_id] = new validElement(true, "realname", null, "realname_info", msginfo["realname"], 0);
    validInputs[telephone_id] = new validElement(true, "telephone", null, "telephone_info", msginfo["telephone"], 0);
    validInputs[address_id] = new validElement(false, "address", null, "address_info", msginfo["address"], 0);
    validInputs[postal_id] = new validElement(false, "postal", null, "postal_info", msginfo["postal"], 0);

    var content = document.getElementById(formContent);
    if (!content) return;
    var inputs = content.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].type == 'text' || inputs[i].type == 'password') {
            initStatus(inputs[i], true);
        } else if (inputs[i].type == "checkbox") {
            initStatus(inputs[i], false);
        }
        inputs[i].onfocus = getFocus;
        inputs[i].onblur = lostFocus;
        inputs[i].onkeyup = showInputStatus;
        inputs[i].onkeydown = keyDown;
    }
    var selects = content.getElementsByTagName("select");
    for (var i = 0; i < selects.length; i++) {
        initStatus(selects[i], false);
    }
}

function initStatus(input, isInput) {
    //	if(isInput){
    //	    if(isRequired(input)){
    changeInputStyle(input, 0);
    //		}else{
    //		    changeInputStyle(input,0);
    //		}
    //	}
    var infobox = getInfo(input);
    var errorCode = getStatus(input);
    if (infobox && infobox.innerHTML.replace("\n", "").trim() == "") {
        if (!errorCode || errorCode == 0) {
            //默认状态
            infobox.className = INFO_NORMAL;
            infobox.innerHTML = getErrorMsg(input, 0);
        }
        if (errorCode > 0) {
            infobox.className = INFO_ERROR;
            infobox.innerHTML = getErrorMsg(input, errorCode);
        }
    }
}

function keyDown(evnt) {
    var input, evt, tp;
    if (isIE) {
        evt = event;
        input = event.srcElement;
    } else {
        evt = evnt;
        input = evnt.target;
    }
    tp = getValidType(input);
    if (tp == "question" || tp == "answer" || tp == "realname") {
        return true;
    } else {
        return evt.keyCode == 32 ? false : true;
    }
}

function getFocus(evnt) {
    var input;
    if (isIE) {
        input = event.srcElement;
    } else {
        input = evnt.target;
    }
    showInfo(input, 0);
}

function lostFocus(evnt) {
    var input;
    if (isIE) {
        input = event.srcElement;
    } else {
        input = evnt.target;
    }

    input.value = input.value.trim();
    var tp = getValidType(input);
    var infobox = getInfo(input);
    if (tp == "username") {
        checkUserName();
    } else if (tp == "mail") {
        checkMail();
    } else {
        if (isRequired(input) && input.value == "") {
            changeInputStyle(input, 2);
            infobox.className = INFO_ERROR;
            infobox.innerHTML = requireErrorInfo + getErrorMsg(input, 0);
            return;
        }
        errorCode = validValue(input);
        if (errorCode == 0) {
            infobox.className = INFO_SUCCESS;
            infobox.innerHTML = successinfo;
        } else if (errorCode > 0) {
            changeInputStyle(input, 2);
            showInfo(input, errorCode, true);
        }
        //	    showInfo(input,-1);
    }
}

function showInfo(input, errorCode, forcible) {//改变提示信息的样式
    var infobox = getInfo(input);
    if (infobox) {
        if ((infobox.className != INFO_ERROR && infobox.className != INFO_SUCCESS) || forcible) {
            if (errorCode == 0) {
                infobox.className = INFO_WARNING;
                infobox.innerHTML = getErrorMsg(input, 0);
            }
            if (errorCode > 0) {
                infobox.className = INFO_ERROR;
                infobox.innerHTML = getErrorMsg(input, errorCode);
            }
            if (errorCode < 0) {
                infobox.className = INFO_NORMAL;
                infobox.innerHTML = getErrorMsg(input, 0);
            }
        }
    }
}

function changeInputStyle(input, stat) {//改变输入框的样式
    switch (stat) {
        case 1:
            input.className = INPUT_WARNING;
            break;
        case 2:
            input.className = INPUT_ERROR;
            break;
        case 3:
            input.className = INPUT_SUCCESS;
            break;
        default:
            input.className = INPUT_NORMAL;
            break;
    }
}

function showInputStatus(evnt) {
    var input, errorCode;
    if (isIE) {
        input = event.srcElement;
    } else {
        input = evnt.target;
    }
    errorCode = validValue(input);
    //	t = getValidType(input);
    //	if(errorCode==0 && t!="username" && t!="mail"){
    //		var infobox = getInfo(input);
    //		infobox.className	= INFO_SUCCESS;
    //		infobox.innerHTML	= successinfo;
    //	}else{
    //		showInfo(input,errorCode,true);
    //	}

    if (errorCode == 0) {
        changeInputStyle(input, 3);
    }
    if (errorCode >= 1) {
        changeInputStyle(input, 2);
    }
    if (errorCode < 0) {
        changeInputStyle(input, 0);
    }
}

function validClick() {//点击提交信息按钮客户端处理
    var obj, infobox, pass;
    pass = true;
    var content = document.getElementById(formContent);
    if (!content) return;
    var inputs = content.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        obj = inputs[i];
        infobox = getInfo(inputs[i]);
        if (obj.type == 'text' || obj.type == 'password') {
            obj.value = obj.value.trim();
            if (!isRequired(obj) && obj.value == "") {
                continue;
            }
            if (isRequired(obj) && obj.value == "") {
                pass = false;
                changeInputStyle(obj, 2);
                infobox.className = INFO_ERROR;
                infobox.innerHTML = requireErrorInfo + getErrorMsg(obj, 0);
                continue;
            }

            var tp = getValidType(obj);
            if (tp == "username") {
                checkUserName();
            } else if (tp == "mail") {
                checkMail();
            } else {
                errorCode = validValue(obj);
                if (errorCode > 0) {
                    pass = false;
                    changeInputStyle(obj, 2);
                    showInfo(obj, errorCode, true);
                    continue;
                }
                if (errorCode == 0) {
                    changeInputStyle(obj, 3);
                    infobox.className = INFO_SUCCESS;
                    infobox.innerHTML = successinfo;
                    continue;
                }
            }
        }
    }
    var selects = content.getElementsByTagName("select");
    for (var i = 0; i < selects.length; i++) {
        obj = selects[i];
        infobox = getInfo(selects[i]);
        errorCode = validValue(obj);
        if (errorCode > 0) {
            pass = false;
            showInfo(obj, errorCode, true);
            continue;
        }
        if (errorCode == 0) {
            infobox.className = INFO_SUCCESS;
            infobox.innerHTML = successinfo;
            continue;
        }
    }
    //alert(pass);
    return pass;
}

function changeCheckCode() {//更换验证码
    chkCode = document.getElementById("imgCheckCode");
    nowTime = new Date().getTime();
    chkCode.src = chkCode.src + "?t=" + nowTime;
}

////////////////////////////////////////////////////////////
// 　　　　　　　　xmlhttp 异步调用部分
/////////////////////////////////////////////////////////////
//var xmlHttp = null;
//var funcpoint = null;
//取得xmlhttp对象
function getXmlHttp() {
    var _xmlHttp = null;
    if (window.XMLHttpRequest) {
        _xmlHttp = new XMLHttpRequest();
        return _xmlHttp;
    } else if (window.ActiveXObject) {
        var arrXmlHttpTypes = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'];
        for (var i = 0; i < arrXmlHttpTypes.length; i++) {
            try {
                _xmlHttp = new ActiveXObject(arrXmlHttpTypes[i]);
                return _xmlHttp;
            } catch (ex) { } //不支持MSXML.XMLHttp对象的IE
        }
    }
}


//取得xmldom对象
function getXmlDom(content) {
    var _xmlDom = null;
    if (!window.DOMParser && window.ActiveXObject) {
        var arrXmlDomTypes = ['MSXML2.DOMDocument.6.0', 'MSXML2.DOMDocument.3.0', 'Microsoft.XMLDOM'];
        for (var i = 0; i < arrXmlDomTypes.length; i++) {
            try {
                _xmlDom = new ActiveXObject(arrXmlDomTypes[i]);
                _xmlDom.async = false;
                _xmlDom.loadXML(content);
                //                _xmlDom.setProperty('SelectionLanguage', 'XPath');
            } catch (ex) { } //不支持MSXML.XMLDOM对象的IE
        }
    } else { // Mozilla browsers have a DOMParser
        try {
            //            if(xmlDom == null && document.implementation && document.implementation.createDocument){
            //                _xmlDom = document.implementation.createDocument(content,"",null);
            var domParser = new window.DOMParser();
            _xmlDom = domParser.parseFromString(content, 'text/xml');
            Element.prototype.selectSingleNode = function(sXPath) {
                var oEvaluator = new XPathEvaluator();
                var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
                if (null != oResult) {
                    return oResult.singleNodeValue;
                }
                return null;
            }

            Element.prototype.selectNodes = function(sXPath) {
                var oEvaluator = new XPathEvaluator();
                var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
                var aNodes = new Array();
                if (null != oResult) {
                    var oElement = oResult.iterateNext();
                    while (oElement) {
                        aNodes.push(oElement);
                        oElement = oResult.iterateNext();
                    }
                }
                return aNodes;
            }

            Element.prototype.__defineGetter__("text", function() { return this.textContent; });
            //            }
            isIE = false;
        }
        catch (ex) {

        }
    }
    return _xmlDom;
}

function postRequest(url, parameters, func) {
    //    funcpoint = func;
    var xmlHttp = getXmlHttp();
    if (xmlHttp != null) {
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    //alert(xmlHttp.responseText);
                    xmlDom = getXmlDom(xmlHttp.responseText);
                    //alert(xmlDom.xml);
                    if (xmlDom != null) {
                        eval(func(xmlDom));
                    }
                }
            }
        }
        xmlHttp.open('Post', url, true);
        xmlHttp.setRequestHeader("Content-Length", parameters.length);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlHttp.send(parameters);
    }
}
getXmlHttp();

////////////////////////////////////////////////////////////
// 　　　　　　　　异步检测
/////////////////////////////////////////////////////////////
function checkUserName() {
    var input = document.getElementById(username_id);
    if (!input) return;
    input.value = input.value.trim();
    infobox = getInfo(input);
    if (isRequired(input) && input.value == "") {
        changeInputStyle(input, 2);
        infobox.className = INFO_ERROR;
        infobox.innerHTML = requireErrorInfo + getErrorMsg(input, 0);
        return;
    }
    //	errorCode = validValue(input);
    errorCode = validUserName(input);
    if (errorCode > 0) {
        changeInputStyle(input, 2);
        showInfo(input, errorCode, true);
        return;
    }
    if (errorCode == 0) {
        postRequest("../RegisterService.asmx/UserNameIsRegisted", "username=" + input.value, onUserNameComplete);
    }
}

function onUserNameComplete(result) {
    //    alert(result.documentElement.text);
    isReg = result.documentElement.text;
    var input = document.getElementById(username_id);
    var infobox = getInfo(input);
    if (isReg == "true") {
        changeInputStyle(input, 2);
        infobox.className = INFO_ERROR;
        infobox.innerHTML = getErrorMsg(input, 2);
    } else {
        changeInputStyle(input, 3);
        infobox.className = INFO_SUCCESS;
        infobox.innerHTML = "用户名可以注册";
    }
}

function checkMail() {
    var input = document.getElementById(mail_id);
    if (!input) return;
    input.value = input.value.trim();
    infobox = getInfo(input);
    if (isRequired(input) && input.value == "") {
        changeInputStyle(input, 2);
        infobox.className = INFO_ERROR;
        infobox.innerHTML = requireErrorInfo + getErrorMsg(input, 0);
        return;
    }
    //	errorCode = validValue(input);
    errorCode = validMail(input);
    if (errorCode > 0) {
        changeInputStyle(input, 2);
        showInfo(input, errorCode, true);
        return;
    } else {
        changeInputStyle(input, 3);
        infobox.className = INFO_SUCCESS;
        infobox.innerHTML = "邮箱可以注册";
    }
    //	if(errorCode==0){
    //	    postRequest("../RegisterService.asmx/MailIsRegisted","mail="+input.value,onMailComplete);
    //	}
}

function onMailComplete(result) {
    isReg = result.documentElement.text;
    var input = document.getElementById(mail_id);
    var infobox = getInfo(input);
    if (isReg == "true") {
        changeInputStyle(input, 2);
        infobox.className = INFO_ERROR;
        infobox.innerHTML = getErrorMsg(input, 2);
    } else {
        changeInputStyle(input, 3);
        infobox.className = INFO_SUCCESS;
        infobox.innerHTML = "邮箱可以注册";
    }
}

////////////////////////////////////////////////////////////
// 　　　　　　　　服务检测出错
/////////////////////////////////////////////////////////////
function eleIsError(eId, eCode) {
    var input = document.getElementById(eId);
    var infobox = getInfo(input);
    changeInputStyle(input, 2);
    infobox.className = INFO_ERROR;
    infobox.innerHTML = getErrorMsg(input, eCode);
}

//function requestMailList(addr){
//    var reuqest = 'http://exam.studyez.com/MailList/Default.aspx?email='+encodeURI(addr)+'&tid=0';
//    var ml = document.getElementById("maillist");
//    ml.innerHTML = '<iframe src=\"'+ reuqest +'\" height="0px"></iframe>';
//}

