﻿/*输入验证对象*/
function InputValidator()//验证输入内容是否满足某种格式
{}

//为空验证
InputValidator.prototype.RequiredField=function(inputstr)//inputstr输入内容，返回真假
{
    if(inputstr == "")
    {
        return false;
    }
    else
    {
         return true;
    }
}

//对比验证
InputValidator.prototype.Compare=function(inputstra,inputstrb,uplowignor)//inputstra，inputstrb输入内容，uplowignor忽略大小写，返回真假
{
    var stra = uplowignor ? inputstra.toLowerCase() : inputstra;
    var strb = uplowignor ? inputstrb.toLowerCase() : inputstrb;
    if(stra==strb)
    {
        return true;
    }
    else
    {
        return false;
    }
}

//唯一性验证,不管输入什么，只验证如入内容的内容，其他处理另写代码
InputValidator.prototype.Unique=function(inputobj,serverurl,recontainer,waitingtext)//inputobj输入框对象，serverurl验证程序页的地址，recontainer显示返回结果的容器的id，waitingtext:等待时的文字
{
    var AO=new AJAXObject();//创建AJAX对象
    var xho=AO.CreatXMLHttpObject(recontainer,waitingtext,"inputalt4","text");//创建xmlhttp对象
    var url=serverurl + inputobj.value + "&r=" + Math.random();
    xho.open("get",url,true);
    xho.setRequestHeader("If-Modified-Since","0");
    xho.send(null);
}

//验证无中文用户名格式
InputValidator.prototype.UnZHLoginNameForm=function(inputstr)//inputstr输入内容，返回真假
{
        var re=new RegExp("^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){0,19}$");
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证无限制用户名格式
InputValidator.prototype.LoginNameForm=function(inputstr)//inputstr输入内容，返回真假
{
        var re=new RegExp("^([a-zA-Z0-9]|[_]|[\u0391-\uFFE5]){1,20}$");
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证英文
InputValidator.prototype.EnglishForm=function(inputstr)//inputstr输入内容，返回真假
{
        var re=new RegExp("^[a-zA-Z]*$");
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证密码格式
InputValidator.prototype.PassWordForm=function(inputstr)//inputstr输入内容，返回真假
{
        var re=new RegExp("^[a-zA-Z0-9]{1,20}$");
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证邮箱
InputValidator.prototype.Email=function(inputstr)//inputstr输入内容，返回真假
{
        var re=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/gi;
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证中文
InputValidator.prototype.ZHName=function(inputstr)//inputstr输入内容，返回真假
{
        var re=new RegExp("^[\u0391-\uFFE5]*$");
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证身份证
InputValidator.prototype.IDCard=function(inputstr,blankreturn)//inputstr输入内容，blankreturn无输入时返回值，返回真假
{
    if(this.RequiredField(inputstr))//判断输入是否为空
    {
        var number=inputstr
        var date, Ai;
        var verify = "10x98765432";
        var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
        var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
        if(re == null) 
        {
            return false;
        }
        if(re[1] >= area.length || area[re[1]] == "")
        {
            return false;
        }
        if(re[2].length == 12)
        {
            Ai = number.substr(0, 17);
            date = [re[9], re[10], re[11]].join("-");
        }
        else
        {
            Ai = number.substr(0, 6) + "19" + number.substr(6);
            date = ["19" + re[4], re[5], re[6]].join("-");
        }
        if(!this.IsDate(date, "ymd",false))
        {
            return false;
        }
        var sum = 0;
        for(var i = 0;i<=16;i++)
        {
            sum += Ai.charAt(i) * Wi[i];
        }
        Ai += verify.charAt(sum%11);
        return (number.length ==15 || number.length == 18 && number == Ai);
    }
    else
    {
        return blankreturn;
    }
}

//验证日期
InputValidator.prototype.IsDate=function(op, formatString,blankreturn)//op输入的内容，formatString日期格式"ymd"或"dmy"，blankreturn无输入时返回值，返回真假
{
    if(this.RequiredField(op))
    {
        formatString = formatString || "ymd";
        var m, year, month, day;
        switch(formatString)
        {
            case "ymd" :
            m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
            if(m == null ) return false;
            day = m[6];
            month = m[5]*1;
            year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
            break;
            case "dmy" :
            m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
            if(m == null ) return false;
            day = m[1];
            month = m[3]*1;
            year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
            break;
            default :
            break;
        }
        if(!parseInt(month))
        {
            return false;
        }
        month = month==0 ?12:month;
        var date = new Date(year, month-1, day);
        return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
        function GetFullYear(y)
        {
            return ((y<30 ? "20" : "19") + y)|0;
        }
    }
    else
    {
        return blankreturn;
    }
}

//验证邮编
InputValidator.prototype.ZipCode=function(inputstr)//inputstr输入内容，返回真假
{
        var re = /^[1-9]\d{5}$/gi;
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}

//验证数字
InputValidator.prototype.Numbers=function(inputstr)//inputstr输入内容，返回真假
{
        var re = /^[0-9]*$/gi;
        if(re.test(inputstr))
        {
            return true;
        }
        else
        {
            return false;
        }
}
/*输入验证对象*/



/*去空格对象*/
function JSTrim(str)
{
    this.ostring=str;//取原始字符串
}

//去所有空格
JSTrim.prototype.TrimAll=function()
{
    return  this.ostring.replace(/\s*/g ,"");
}

//去左右空格
JSTrim.prototype.Trim=function()
{
    return  this.ostring.replace(/(^\s*)|(\s*$)/g ,"");
}

//去左空格
JSTrim.prototype.LTrim=function()
{
    return  this.ostring.replace(/(^\s*)/g ,"");
}

//去右空格
JSTrim.prototype.RTrim=function()
{
    return  this.ostring.replace(/(\s*$)/g ,"");
}
/*去空格对象*/