
//是否数字
function isNum(str) {   
	var re=/^(-|\+)?\d+(\.\d+)?$/;
    if(!re.test(str)){
		return false;
	}   
}

//是否邮编
function isPostCode(str){
	var v = str.trim();
	if(v == null || v == ""){
		return false;
	}
	else if(!v.match(/^[0-9]{6}$/i)){
		return false;
	}
	else{
		return true;
	}
}

//是否电话传真或手机(只做允许字符检查,不做格式要求)
function isPhone(str){
	var v = str.trim();
	if(!v.match(/^[0-9()\-/,+]{6,50}$/)){
		return false;
	}
	else{
		return true;
	}
}

//是否邮箱
function isEmail(strEmail){
	var v = strEmail.trim();
	if(!v.match(/^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,6}$/i)){
		return false;
	}
	else{
		return true;
	}
}

//是否网址(包含http://)
function isUrl(strUrl){
	var v = strUrl.trim();
	if(!v.match(/^(http:\/\/)?(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/i)){
		return false;
	}
	else{
		return true;
	}
}

//获取字符串真实长度
function GetLen(str){
	var i;
	var len;
	len = 0;
	if(str != null && str != ""){
		for (i=0; i < str.length; i++){
			//if (str.charCodeAt(i)>255) len+=2; else len++;
			if ((str.charCodeAt(i)>=0) && (str.charCodeAt(i)<=255))
				len++;
			else
				len+=2;
		}
	}
	return len;
}

function init()
{
    var obj=document.body.getElementsByTagName("*");
	for(var i=0; i<obj.length; i++)
	{
		var o=obj[i];
		var n=obj[i].getAttribute("ID");
		if(n!=null&&n!=""&&n.indexOf("warn_")>=0){
				o.old=o.innerHTML;
			}
			if(n!="")
		if(o.tagName=="TEXTAREA" || o.tagName=="SELECT" ||o.type=="text"||o.type=="password" || o.type=="file")
		{
			Check.addEvent(o,"focus",Check.focus);
			var blurstr=o.onblur;
			if(blurstr==null){o.onblur=function(){Check.exam(this);}};
		}
	}
}


function showMessage(msg){
	document.getElementById("warn_all").style.display = ""; 
	document.getElementById("warn_all").innerHTML = msg;
	if(document.getElementById("showinfo")) document.getElementById("showinfo").style.display="none";
	return false;
}
function showmsg(n, msg){
	document.getElementById(n).style.display = ""; 
	document.getElementById(n).innerHTML = msg;
	return false;
}
function showokmsg(msg){
	document.getElementById("showinfo").style.display = ""; 
	document.getElementById("showinfo").innerHTML = msg;
	if(document.getElementById("warn_all")) document.getElementById("warn_all").style.display="none";
}

function checkStr(tempStr,k ){	  
var string ;
var allValid = true;
var ch;
	switch(k){
	case 1:
		string = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789_";
		break;
	case 2:
		string = "0123456789";
		break;
	case 3:
		string = "0123456789xX";
		break;
	case 4:
		string = "0123456789+-/(), ";
		break;
	case 5:
		string = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890";
		break;
	case 6:
		string = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
		break;
	case 7:
		string = "0123456789.";
		break;
	default:
		string="";
		break;
	}
   
	  for (i = 0;  i < tempStr.length;  i++){
          ch = tempStr.charAt(i);
          if(string.indexOf(ch) == -1){
		  		return false;
		  }
      }
   return allValid;
}

String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"")};
Check={
number:function(o){
	var v=o.value.trim(),z=o.getAttribute("zero"),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if(!v) return o.value="";
	if(v==z) return o.value=z;
	v=parseFloat(v);
	if(isNaN(v)) throw{message:a+"вȷַ֣"}; 
	if(v==0&&z)return o.value=z;
	if(!o.getAttribute("neg"))v=Math.abs(v);
	var t=parseInt(o.getAttribute("lower")),s=parseInt(o.getAttribute("scale"));
	if(t&&v<t)throw{message:a+"ֵС"+t+""};
	t=parseInt(o.getAttribute("upper"));
	if(t&&v>t)throw{message:a+"ֵܴ"+t+ ""};
	if(!s) return o.value=parseInt(v);
	var r=v.toString(),p=r.indexOf("."),l=0;
	p<0?r+=".":l=r.length-1-p;
	for (var i=0;i<(s-l);i++) r+="0";
	o.value=r;
},
en:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if(v.match(/[^\w\s]+/i))throw{message:a+"ֻĸֺ»ߣ"};
	o.value=v;
},
tel:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^(\(\d{3}\)|\d{3}|\d{3}-)?\d{8}|(1\d{10})$/i))
	throw{message:""+a+"ʽȷ"};
	o.value=v;
},
telormobile:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^[0-9()\-/,+]{6,50}$/))
	throw{message:""+a+"ʽȷ"};
	o.value=v;
},
fax:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^(\(\d{3}\)|\d{3}|\d{3}-)?\d{8}$/i))
	throw{message:""+a+"ʽȷ"};
	o.value=v;
},
email:function(o){
	var v=o.value.trim();
	if(!v.match(/^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,6}$/i))throw{message:"ȷEmailַ"};
	o.value=v;
},
date:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^(?:([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))
	throw{message:""+a+"ڸʽȷ"};
	o.value=v;
},
web:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^(http:\/\/)?(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/i))
	throw{message:""+a+"ʽȷ"};
	o.value=v;
},
qq:function(o){
	var v=o.value.trim(),a=o.getAttribute("label");
	if(!a)a=o.getAttribute("ID");
	if (!v) return o.value=v;
	if(!v.match(/^[1-9]\d{4,8}$/i))
	throw{message:""+a+"ʽȷ"};
	o.value=v;
},
focus:function(o){
	var n=o.getAttribute("ID"),d=document.getElementById("warn_"+n);
	if(d){
		d.className="class_hover";
		var s=d.getAttribute("hover");
		if(s)d.innerHTML=s;
	}
},
exam:function(o){
	var k=o.getAttribute("kind"),n=o.getAttribute("ID"),d=document.getElementById("warn_"+n),v=o.value;
	if(typeof(v)=="string")v=v.trim();
	try
	{
		if(this[k])this[k](o);
		var a=o.getAttribute("label"),t=o.getAttribute("need");
		if(!a)a=n;
		if (t&&!v)throw{message:t};
		var m=o.getAttribute("min"),n=o.getAttribute("max");
		if (m&&v.length<m)throw{message:a+""+m+"ַ"};
		if (n&&v.length>n)throw{message:a+"ܳ"+n+"ַ"};
		if ((t=o.getAttribute("equal"))&&(document.getElementById(t).value.trim()!=v))
			throw{message:"벻ͬ룡"};
		if(o.tagName=="INPUT")o.value=v;
		o.error=void(0);
		if(d){
			d.className="class_finish";
			var s=d.getAttribute("finish");
			d.innerHTML=s?s:d.old;
		}
			return true;
	}
	catch(e){
		o.error=e;
		if(d){
			d.className="class_error";
			d.innerHTML=e.message;
		}
		return false;
	}
},
addEvent:function(o,n,f){
	if(window.attachEvent) o.attachEvent("on"+n,function(){f(o)});
	else o.addEventListener(n,function(){f(o)},false)
},
submit:function()
{	
	var obj=document.body.all;
	var err=0;
	for(var i=0;i<obj.length;i++)
	{
		var o=obj[i];
		if(!Check.exam(o)) err=err+1;
	}
		if(err>0) return false;
		else return true;
}
}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
　　// 用正则表达式将前后空格(包括全角空格，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";
}
}
