﻿/**********************************
 *ajax检测注册用户名的js类CheckUserName（Beat1.0）
 * 适用与所有编程语言，功能强大，各种参数很据需求加入。
 * 完成时间：2008-01-19 14：20
 * 版权所有：AJAX中国
 * 网址：http://okajax.com
 * E-mail:westdoorking@163.com
 **********************************/
CheckUserName = function(){
    var ts1 = "请输入用户名！";
    var ts2 = "恭喜，此用户名可以使用！";
    var ts3 = "此用户名已经被使用！";
    var ts4 = "用户名太短，请检查！";
    var url = "";
    var parname = "username";
    var imageload = "index/images/MessageIcon/loading.gif";
    var imagewrong = "index/images/MessageIcon/check_error.gif";
    var imageright = "index/images/MessageIcon/check_right.gif";
    var funname = "";
    var http_request = false;
    this.setcont = function(str1, str2, str3, str4){
        /**********************************
         * 设置提示信息，顺序依次是
         * 1－提示输入规则
         * 2－检测用户名成功
         * 3－检测用户名被人使用
         * 4－用户名不符合规则（在加入用户名监察后使用）
         **********************************/
        ts1 = (str1 == null ? ts1 : str1);
        ts2 = (str2 == null ? ts2 : str2);
        ts3 = (str3 == null ? ts3 : str3);
        ts4 = (str4 == null ? ts4 : str4);
    }
    this.setimage = function(load, wrong, right){
        /**********************************
         * 设置图片的路径
         * 1－查询时候显示图片
         * 2－错误时显示图片
         * 3－正确时显示图片
         **********************************/
        imageload = (load == null ? imageload : load);
        imagewrong = (wrong == null ? imagewrong : wrong);
        imageright = (right == null ? imageright : right);
    }
    this.seturl = function(u, p){
        /**********************************
         * 设置后台页面的路径以及参数
         * 1－后台页面名称×（aspx。jsp。asp均可）
         * 2－超链接后面带的参数，默认是username。
         **********************************/
        url = u;
        parname = (p == null ? parname : p);
    }
    this.setcheckfunction = function(functionname){
        /**********************************
         * 设置检查用户名合法的方法
         * 1－直接传入方法名称，此方法需要有bool型的返回值，用户自定义编写
         **********************************/
        funname = (functionname == null ? funname : functionname);
    }
    this.apply = function(inpurid, tsid){
        var a = inpurid;
        var b = tsid;
        if (typeof(a) == "string") 
            a = document.getElementById(a);
        if (typeof(b) == "string") 
            b = document.getElementById(b);
        a.onfocus = function(){
            insertfun(ts1);
        }
        a.onblur = function(){
            if (a.value.length == 0) {
                alert("用户名不能为空！");
                return;
            }
            if (funname == "") {//没有定义验证方法，不执行用户名合法性验证！
                makeRequest(url + "?" + parname + "=" + a.value);
            }
            else {//有验证合法性方法。先执行
                var sss = funname + "('" + a.value + "')";
                if (eval(sss)) {//执行ajax操作
                    makeRequest(url + "?" + parname + "=" + a.value);
                }
                else {
                    insertfun(ts4);
                }
            }
        }
        function insertfun(val){
            b.innerHTML = val;
        }
        function getimg(val){
            return "<img src='" + val + "' style='width:13px; height:13px'/>"
        }
        function makeRequest(url){
            insertfun(getimg(imageload));
            http_request = false;
            if (window.XMLHttpRequest) {
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                }
            }
            else 
                if (window.ActiveXObject) {
                    try {
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } 
                    catch (e) {
                        try {
                            http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } 
                        catch (e) {
                        }
                    }
                }
            if (!http_request) {
                alert('Giving up :( Cannot create an XMLHTTP instance');
                return false;
            }
            http_request.onreadystatechange = alertContents;
            http_request.open('GET', url, true);
            http_request.send(null);
        }
        function alertContents(){
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    // alert("---"+http_request.responseText+"---");
                    if (http_request.responseText == 0) {
                        insertfun(getimg(imageright) + ts2);
                    }
                    else 
                        if (http_request.responseText == 1) {
                            insertfun(getimg(imagewrong) + ts3);
                        }
                        else {
                            insertfun("服务器内部错误 !");
                        }
                }
                else {
                    alert('There was a problem with the request.');
                }
            }
        }
    }
}


