﻿　　// 用正则表达式将前后空格(包括全角空格，u3000代表全角空格)
　　// 用空字符串替代。
String.prototype.trim= function()
{
　　//return this.replace(/(^s*)|(s*$)/g, "");
　　return this.replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, "");
}


//错误提示信息显示
var enMsg="只能输入字母，数字和下划线！";
var cnMsg="只能输入汉字！";
var emMsg="邮件地址格式不正确！";
var urlMsg="文件路径格式不正确！";
var webMsg="网址格式不正确！";
var dtMsg="日期格式不正确！";
var tagMsg="搜索关键词标签字符不符！";
var telMsg="电话号码格式不正确！";
var mbMsg="手机号码格式不正确！";
var ipMsg="IP格式不争正确！";
var ndMsg="不可以为空！";
var numMsg="请填写数字！";
var zipMsg="邮政编码格式不正确！";
var minMsg="字符数最少为：";
var comMsg="两个值不相同！";

//正确提示信息
var okMsg="填写正确";
//正则表达式
  //邮编  //字母、数字和下划线  //中文字符 //电子邮箱或msn //日期//网址验证 //本地路径和网络路径的格式//关键词//电话号码（匹配带国内码 和区号的电话）
//手机号码(以数字开头，可含有“-”)


var zipRegex=/^[0-9]{0,6}$/;
var enRegex=/^[\w\s]+/i; 
var cnRegex=/^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/i;
var emRegex=/^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,6}$/i;
var dtRegex=/^(?:([0-9]{4}-(?:(?:0?[1,3-9]|1[0-2])-(?:29|30)|((?:0?[13578]|1[02])-31)))|([0-9]{4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\d|2[0-8]))|(((?:(\d\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))-0?2-29)))$/i;
var webRegex=/^((ftp|http|https):\/\/)?[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^\"\"])*$/i;
var urlRegex=/^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^\/:*?<>"|]*))+)*$/i;
var tagRegex=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\] [\]\{\}:;'\,.<>?]{0,19}$/i;
var telRegex=/^[+]{0,1}(\d{2,4}?)([-_－—]?)(\d){1,3}[ ]?([-_－—\(\)（）]?((\d)|[ ]){1,12})+$/i;
var mbRegex=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/i;
var ipRegex=/(\d+)\.(\d+)\.(\d+)\.(\d+)$/g;

　

var Check={


checkAll:function()
{
    var flag=false;
    var arrObj=document.getElementsByTagName("input");
    for (var i=0 ;i<arrObj.length ;i++ )
    {
        flag=Check.checkSimple(arrObj[i]);
        if(!flag)
            return flag;
    }
    return flag;
}
,
checkSimple:function(o)
{
    var objID="";
    var curObj="";
    var vObj="";
    var yzSim="";
    var warnObj="";
    var strMsg="";
    var flag=true;
    var warnO;
    vObj=o.getAttribute("validate");
        if(vObj!=null)
        {
            vArr=vObj.split(":");
            objID=vArr[0];
            curV=document.getElementById(o.id).value.trim();
            warnObj="warn_"+objID;
            yzArr=vArr[1].split(",");
            warnO=document.getElementById(warnObj);
            
            for(var j=0;j<yzArr.length;j++)
            {
                yzSim=yzArr[j].trim();                
                if(curV=="" || curV==null)
                {
                    if(yzSim=="nd")
                    {
                        strMsg+=ndMsg;
                        Check.ErrMessage(warnO,strMsg);
                        flag=false;
                        return flag;
                    }
                    flag=true;
                }
                else
                {
                    switch (yzSim)
                    {
                        case "num":
                            if(isNaN(curV))
                            {
                                strMsg+=numMsg;
                                flag=false;
                            }
                            break;
                        case "en":
                            if(!curV.match(enRegex))
                            {
                                strMsg+=enMsg;
                                flag=false;
                            }
                            break;
                        case "cn":
                            if(!curV.match(cnRegex))
                            {
                                strMsg+=cnMsg;
                                flag=false;
                            }
                            break;
                         case "em":
                            if(!curV.match(emRegex))
                            {
                                strMsg+=emMsg;
                                flag=false;
                            }
                            break;
                        case "tel":
                            if(!curV.match(telRegex))
                            {
                                strMsg+=telMsg;
                                flag=false;
                            }
                            break;
                        case "mb":
                            if(!curV.match(mbRegex))
                            {
                                strMsg+=mbMsg;
                                flag=false;
                            }
                            break;
                        case "ip":
                            if(!curV.match(ipRegex))
                            {
                                strMsg+=ipMsg;
                                flag=false;
                            }
                            break;
                        case "dt":
                            if(!curV.match(dtRegex))
                            {
                                strMsg+=dtMsg;
                                flag=false;
                            }
                            break;
                        case "tag":
                            if(!curV.match(tagRegex))
                            {
                                strMsg+=tagMsg;
                                flag=false;
                            }
                            break;
                        case "web":
                            if(!curV.match(webRegex))
                            {
                                strMsg+=webMsg;
                                flag=false;
                            }
                            break;
                        case "url":
                            if(!curV.match(urlRegex))
                            {
                                strMsg+=urlMsg;
                                flag=false;
                            }
                            break;
                        case "zip":
                            if(!curV.match(zipRegex))
                            {
                                strMsg+=zipMsg;
                                flag=false;
                            }
                            break;
                        default:
                            flag=true;
                            break;
                    }
                    len=yzSim.split("_");
                    if(len!=null && len[0]=="min" && curV.length<len[1])
                    {
                        strMsg+=minMsg+len[1].toString();
                        flag=false;
                    }
                }
            }
            if(flag)
            {
                Check.OkMessage(warnO);
            }
            else
            {
                Check.ErrMessage(warnO,strMsg);
                strMsg="";
            }
        }
        return flag;
}
,
//验证对象this，被验证对象id，验证对象id，被验证控件的名称，验证控件的名称
compareVal:function(o,oid1,oid2,objN1,objN2)
{
    var warnID="warn_"+oid2;
    var warnO=document.getElementById(warnID);
    var v1=document.getElementById(oid1).value;
    var v2=document.getElementById(o.id).value;
    if(v2.trim()!=v1.trim())
    {
        Check.ErrMessage(warnO,objN1+"和"+objN2+comMsg);
        return false;
    }
    else
    {
        Check.OkMessage(warnO);
        return true;
    }
}
,
ErrMessage:function(warnO,strMsg)
{
    warnO.className="err";
    warnO.innerHTML=strMsg;
}
,
OkMessage:function(warnO)
{
    warnO.innerHTML=okMsg;
    warnO.className="ok";
}
}

