﻿var VALID_ID_REG=/^\w+$/;
var EMAIL_REG=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
var NUMBER_REG=/^(((0)*(\.)?(0)*)|(-?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))))$/;
var INTEGER_NUMBER_REG=/^((0)|(-?[0-9]*[1-9][0-9]*))$/;
var MOBILE_REG=/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|147|145)+\d{8})$/;  //所有的手机号，包括移动，联通
var CHINAMOBILE_REG=/^(((13[4-9]{1})|150|151|152|157|158|159|187|188|147)+\d{8})$/;//移动的手机号
var CHINAUNICOM_REG=/^(((13[0-3]{1})|153|155|156|180|185|186|189|145)+\d{8})$/;//联通的手机号
var DIGIT_REG=/^[0-9]+$/;
var IDCard_REG=/^(([0-9]*[0-9Xx]))$/;
var POSITIVE_INTEGER=/^[0-9]*[1-9][0-9]*$/;
var POSTCODE =/^\d{6}$/;
var TIAOXINGMA = /[A-Za-z0-9]+$/; //条形码
var VALIDATE_INPUT_STR=/^[A-Za-z0-9._-]+$/;
/*
^\d+$　　//匹配非负整数（正整数 + 0）
^[0-9]*[1-9][0-9]*$　　//匹配正整数
^((-\d+)|(0+))$　　//匹配非正整数（负整数 + 0）
^-[0-9]*[1-9][0-9]*$　　//匹配负整数
^-?\d+$　　　　//匹配整数
^\d+(\.\d+)?$　　//匹配非负浮点数（正浮点数 + 0）
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$　　//匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$　　//匹配非正浮点数（负浮点数 + 0）
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$　　//匹配负浮点数
^(-?\d+)(\.\d+)?$　　//匹配浮点数
^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串
^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串
^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串
^\w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$　　　　//匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$　　//匹配url
/^[\\d]{6}$/
* */
function isPositiveInteger(obj,str){
	if(obj == null) return true;
    if(obj.value=="") return true;
 	var result = POSITIVE_INTEGER.test(obj.value);
 	if(result){
 		return true;
 	}else{
 		alert("输入错误，"+str+"不是正整数！");
		obj.focus();
		return false;
 	}
}

function isPostCode(obj,str){
	if(obj == null) return true; 
	if(obj.value=="") return true;    
  	var result = POSTCODE.test(obj.value);
 	if(result){
 		return true;
 	}else{
 		alert("输入错误，"+str+"不是有效的邮编！");
		obj.focus();
		return false;
 	}
}

function isNull (obj,str){
	if(obj == null) return true;
  if (obj.value==""){
  	if(str != null){
    alert(str+"不能为空!");
  }else{
  alert("必须项不能为空!");
}
    obj.focus();
    return true;
  }
  else return false;
}

function isNotNull (obj){
	if(obj == null){
		return false;
	}
  if (obj.value==""){
    return false;
  }
  else return true;
}

function isEquals (obj1,obj2,str1,str2){
    if (obj1.value!=obj2.value){
      alert(str1+"与"+str2+"不相符");
      obj1.focus();
      obj1.select();
      return false;
    }
    else {
      return true;	
    }
}


function isEmail (obj) {
	if(!isNotNull(obj))return true;
	var result = EMAIL_REG.test(obj.value);
	if(!result){
		alert("邮件地址输入错误!");
		obj.focus();
		obj.select();
		return false;
	}
  /*	var str;
  	str = obj.value;
  	i=str.indexOf("@");
	j=str.lastIndexOf(".");
	if (i == -1 || j == -1 || i > j){
		alert("邮件地址输入错误!");
		obj.focus();
		obj.select();
		return false;
	}*/
 
	return true;
 
}

/**
 * 判读是否是整数，小数等包括正负数
 */
function isNumber(obj,str){
if(!isNotNull(obj))return true;

if(str == null)str="";

var result = NUMBER_REG.test(obj.value);

  if (!result){
 	alert(str+"不是整数或者小数!");
      obj.focus();
      return false;
  }
return true;
}


/**
 * 判读是否是整数，小数等只包括正数和零,不包括负数.
 */
function isPlusNumber(obj,str){
if(!isNotNull(obj))return true;

if(str == null)str="";

var result = NUMBER_REG.test(obj.value);

  if (!result){
 	  alert(str+"不是整数或者小数!");
      obj.focus();
      return false;
  }else{
     if(obj.value<0){
       alert(str+"不能小于0!");
       obj.focus();
       return false;
     }
  }
return true;
}
/**
 * 判断是否是数字
 */
function isDigit(obj,str){
if(!isNotNull(obj))return true;
if(str == null)str="";
var result = DIGIT_REG.test(obj.value);
  if (!result){
 	alert(str+"不是数字!");
      obj.focus();
      return false;
  }
return true;
}

/**
 * 判断是否是数字
 */
function isFenji(obj){
if(!isNotNull(obj))return true;
var result = DIGIT_REG.test(obj.value);
  if (!result){
 	alert("分机号码输入错误，应为数字!");
      obj.focus();
      return false;
  }
return true;
}
/**
 * 判断在文本框中(areatext)是否是手机号码
 */


function isMobilePhone_areatext(obj){
if(!isNotNull(obj))return true;
var arrays = obj.value.split(",");
if(arrays.length!=0)
{
	for(var i =0;i<arrays.length;i++)
	{
      var result_areatext = arrays[i].replace(/(^\s*)|(\s*$)/g, "");

      if(result_areatext!="")
      {
       var result = CHINAMOBILE_REG.test(result_areatext);
       if (!result){
        
 	      alert("手机号码输入错误，请输入移动的手机号!");
          obj.focus();
	      return false;
       }
       }
       
    }
}
return true;
}

//验证所有的手机号，包括移动和联通的手机号
function isMobilePhone(obj){
if(!isNotNull(obj))return true;
var result = MOBILE_REG.test(obj.value);
  if (!result){
 	alert("手机号码输入错误!");
      obj.focus();
      return false;
  }
return true;
}

//验证移动的手机号
function isChinaMobilePhone(obj){
if(!isNotNull(obj))return true;
var result = CHINAMOBILE_REG.test(obj.value);
  if (!result){
 	alert("手机号码输入错误，请输入移动的手机号!");
      obj.focus();
      return false;
  }
return true;
}

//验证联通的手机号
function isChinaUnicomPhone(obj){
if(!isNotNull(obj))return true;
var result = CHINAUNICOM_REG.test(obj.value);
  if (!result){
 	alert("手机号码输入错误，请输入联通的手机号!");
      obj.focus();
      return false;
  }
return true;
}
function havenoNumber(theelement)
{
	//含有非数字字符 返回 true
	text="1234567890";
	for(i=0;i<=theelement.length-1;i++)
	{
		char1=theelement.charAt(i);
		index=text.indexOf(char1);
		if(index==-1)
		{
			return true;
		}
	}
	return false;
}
function isInteger(obj)
{
	if(!isNotNull(obj))return true;

	
var result = INTEGER_NUMBER_REG.test(obj.value);

  if (!result){
 	   alert("输入的数据项不是整数!");
      obj.focus();
      return false;
  }
return true;
}
/**
*判断是否是非负整数.
*/
function isPlusInteger(obj)
{
	if(!isNotNull(obj))return true;

	
var result = INTEGER_NUMBER_REG.test(obj.value);

  if (!result){
 	  alert("输入的数据项不是整数!");
      obj.focus();
      return false;
  }else{
      if(obj.value<0){
       alert("输入的数据项不能小于0!");
       obj.focus();
       return false;
      }  
  }
return true;
}


function havenoChar(theelement)
{//含有非法字符 返回 true
   text="abcdefghijklmnopqrstuvwxyz1234567890._-";
   for(i=0;i<=theelement.length-1;i++)
   {
      char1=theelement.charAt(i);
      index=text.indexOf(char1);
      if(index==-1)
      {
        return true;
      }
   }
   return false;
}

/**
 * 判断是否身份证
 */
function isIDCard(obj,str){
if(!isNotNull(obj))return true;
if(str == null)str="";

var result = IDCard_REG.test(obj.value);
  if (!result){
 	alert(str+"不是有效身份证号!");
      obj.focus();
      return false;
  }
  
return true;
}

function objHasnoChar(obj)
{
	var v = obj.value;
	if(v=="")
	{
		return false;
	}
	
	if(havenoChar(v)==true)
	{
		alert("对应项存在非法字符!");
		obj.focus();
		obj.select();
		return true;
	}
	
	return false;

}

function havenoReflect(theelement)
{//含有非法字符 返回 true
   text="'\"";
   for(i=0;i<=theelement.length-1;i++)
   {
      char1=theelement.charAt(i);
      index=text.indexOf(char1);
      if(index!=-1)
      {
        return true;
      }
   }
   return false;
}
function havenoLetter(theelement)
{//含有非法字符 返回 true
   text="abcdefghijklmnopqrstuvwxyz";
      index=text.indexOf(theelement);
      if(index==-1)
      {
        return true;
      }
   return false;
}

function CheckLast(theelement)
{//含有非法字符 返回 true
   text="_-.";
      index=text.indexOf(theelement);
      if(index!=-1)
      {
        return true;
      }
   return false;
}


function isValidID(obj,str)
{

if(!isNotNull(obj))return true;
if(str == null) str ="";
var result = VALID_ID_REG.test(obj.value);
if (!result)
  {
    alert(str + "只能由英文大小写字母（A-Za-z），阿拉伯数字（0-9），下划线（_）构成.");
    obj.focus();
    return false;
  }

return true;
}



//功能：判断form中的对象是否为Date类型。
//参数一: str  . form中的对象。
//参数二: msg  .提示信息，可以为空。
//参数三: f  . 是否提示str不能为空。当str为必填项时，f应设为ture，它提示str不能为空，否则不提示。
//返回值 ： 
//       true ： 是Date类型 。
//       false ：不是Date类型 。
function isDate(str,msg,f){

if(msg == null)msg="输入";
if(f == null)f="";
	var flag = true;
	if(!isNotNull(str))return true;
	 
    	var r=str.value.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);  
    	if(r==null)
    	{
     		if(msg!='')
     		{
				msgBox(msg+'为无效日期，请按照yyyy-mm-dd的日期格式重新输入有效日期！')
			}
			else
			{
				msgBox('无效日期，请按照yyyy-mm-dd的日期格式重新输入有效日期！')
			}
			str.focus();
			return   false;
		}
		var d=new Date(r[1],r[3]-1,r[4]); 
		if((d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
		{
			flag = true;
		}
		else
		{
			if(msg!='')
			{
				msgBox(msg+'为无效日期，请按照yyyy-mm-dd的日期格式重新输入有效日期！')
			}
			else
			{
				msgBox('无效日期，请按照yyyy-mm-dd的日期格式重新输入有效日期！')
			}
			str.focus();
			return false;
		}
	    
	
    return   flag;
}
//功能：判断form中的对象是否为DateTime类型。
//参数一: str  . form中的对象。
//参数二: msg  .提示信息，可以为空。
//参数三: f  . 是否提示str不能为空。当str为必填项时，f应设为ture，它提示str不能为空，否则不提示。
//返回值 ： 
//       true ： 是DateTime类型 。
//       false ：不是DateTime类型 。
function  isDateTime(str,msg,f){    
	var flag = true;
	if(!isNotNull(str))return true;
     var   r = str.value.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);     
     if(r==null){
     	if(msg!=''){
      		 msgBox(msg+'为无效日期，请按照yyyy-mm-dd hh:mm:ss的日期格式重新输入有效日期！')
      		 
       }else{
        	 msgBox('无效日期，请按照yyyy-mm-dd hh:mm:ss的日期格式重新输入有效日期！')
       	}
      str.focus();
      return   false;
    } 
     var   d=   new   Date(r[1],r[3]-1,r[4],r[5],r[6],r[7]);   
     if((d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7])){
         flag = true;
     } else{
       	if(msg!=''){
       		      msgBox(msg+'为无效日期，请按照yyyy-mm-dd hh:mm:ss的日期格式重新输入有效日期！')
         }else{
        	 msgBox('无效日期，请按照yyyy-mm-dd hh:mm:ss的日期格式重新输入有效日期！')
       	}
        str.focus();
        return false;
     }
    
   return   flag;
}   

function isLessDateTime(datestr1,datestr2,msg1,msg2){
  	var flag = true; 
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDateTime(datestr1))return false;
	if(!isDateTime(datestr2))return false;
	if(msg1== null) msg1="日期1";
	if(msg2==null) msg2="日期2";
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
    
    if ( Date.parse(tmpBeginTime) > Date.parse(tmpEndTime) ){
      		  msgBox(msg1+"必须小于"+msg2);
      		  datestr1.focus();
        		flag = false;
    }
  return flag;
}

function isLessDate(datestr1,datestr2,msg1,msg2){
  	var flag = true; 
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDate(datestr1))return false;
	if(!isDate(datestr2))return false;
	if(msg1== null) msg1="日期1";
	if(msg2==null) msg2="日期2";
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
    
    if ( Date.parse(tmpBeginTime) > Date.parse(tmpEndTime) ){
      		  msgBox(msg1+"必须小于"+msg2);
      		  datestr1.focus();
        		flag = false;
    }
  return flag;
}

 function isGreaterDateTime(datestr1,datestr2,msg1,msg2){
	var flag = true;
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDateTime(datestr1))return false;
	if(!isDateTime(datestr2))return false;
	if(msg1== null) msg1="日期1";
	if(msg2==null) msg2="日期2";
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
      if ( Date.parse(tmpBeginTime) <= Date.parse(tmpEndTime) ){
       msgBox(msg1+"必须大于"+msg2);
        datestr1.focus();
        flag = false;
       }
     
  return flag;
}

function isGreater_equalsDate(datestr1,datestr2,msg1,msg2){
	var flag = true;
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDate(datestr1))return false;
	if(!isDate(datestr2))return false;
	if(msg1== null) msg1="日期1";
	if(msg2==null) msg2="日期2";
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
      if ( Date.parse(tmpBeginTime) <Date.parse(tmpEndTime) ){
       msgBox(msg1+"必须大于或等于"+msg2);
        datestr1.focus();
        flag = false;
       }
     
  return flag;
}


function isGreaterDate(datestr1,datestr2,msg1,msg2){
	var flag = true;
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDate(datestr1))return false;
	if(!isDate(datestr2))return false;
	if(msg1== null) msg1="日期1";
	if(msg2==null) msg2="日期2";
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
      if ( Date.parse(tmpBeginTime) <= Date.parse(tmpEndTime) ){
       msgBox(msg1+"必须大于"+msg2);
        datestr1.focus();
        flag = false;
       }
     
  return flag;
}

function isEqualDateTime(datestr1,datestr2,msg1,msg2){
	var flag = true;
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDateTime(datestr1))return false;
	if(!isDateTime(datestr2))return false;
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
    
if (Date.parse( tmpBeginTime) != Date.parse(tmpEndTime )){
              msgBox(msg1+"必须等于"+msg2);
              datestr1.focus();
              flag = false;
        }
  return flag;
} 

function isEqualDate(datestr1,datestr2,msg1,msg2){
	var flag = true;
	if(!isNotNull(datestr1))return true;
	if(!isNotNull(datestr2))return true;
	if(!isDate(datestr1))return false;
	if(!isDate(datestr2))return false;
    tmpBeginTime = new Date(datestr1.value.replace(/-/g,"\/"));
    tmpEndTime = new Date(datestr2.value.replace(/-/g,"\/"));
    
if (Date.parse( tmpBeginTime) != Date.parse(tmpEndTime )){
              msgBox(msg1+"必须等于"+msg2);
              datestr1.focus();
              flag = false;
        }
  return flag;
}

function msgBox(msg){   
    window.alert(msg);   
}  
//功能：判断form中的对象是否为正确的电话号码。
//参数一: obj  . form中的对象。
//参数二: msg  .提示信息，可以为空。
//参数三: f  . 是否提示obj不能为空。当obj为必填项时，f应设为ture，它提示obj不能为空，否则不提示。
//返回值 ： 
//       true ： 无效的电话号码
//       false ：有效的电话号码
function isPhone(obj,msg) {
if(!isNotNull(obj))return true;

        var str=obj.value;
	 	var reg=str.match(/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}(13|15)[0-9]{9}$)/);
 		if(reg==null){
 		   if(msg!=''){
 		    alert(msg+"的电话号码输入错误！");
 		   }else{
  			  alert("电话号码输入错误！");
  		 	}
  			obj.focus();
  			return false;
 		}
 	return true;
 	
}

//功能：判断form中的对象是否为正确的电话号码。
//参数一: obj  . form中的对象。
//参数二: msg  .提示信息，可以为空。
//参数三: f  . 是否提示obj不能为空。当obj为必填项时，f应设为ture，它提示obj不能为空，否则不提示。
//返回值 ： 
//       true ： 无效的电话号码
//       false ：有效的电话号码
function isFax(obj,msg) {
if(!isNotNull(obj))return true;

        var str=obj.value;
	 	var reg=str.match(/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/);
 		if(reg==null){
 		   if(msg!=''){
 		    alert(msg+"的传真号码输入错误！");
 		   }else{
  			  alert("传真号码输入错误！");
  		 	}
  			obj.focus();
  			return false;
 		}
 	return true;
 	
}

function isTiaoXingMa(obj,str){
	if(obj == null) return true; 
	if(obj.value=="") return true;    
  	var result = TIAOXINGMA.test(obj.value);
 	if(result){
 		return true;
 	}else{
 		alert("输入错误，"+str+"应该由数字,字母组成！");
		obj.focus();
		return false;
 	}
}

function isValidLength(obj,len,str){

	if(obj == null) return true;
	if(obj.value=="" || obj.value==null)return true;
	

	if(obj.value.gblen() - len <= 0) {
		return true;
	}else{
	alert(str + "长度过长,不能多于" +len+ "个英文字符或者" + len/2 + "个中文字符");
	obj.focus();
	return false;
	}
}

String.prototype.gblen = function() {   
    var len = 0;   
    for (var i=0; i<this.length; i++) {   
        if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {   
            len += 2;   
        } else {   
            len ++;   
        }   
    }   
    return len;   
}   

String.prototype.gbtrim = function(len, s) {   
    var str = '';   
    var sp  = s || '';   
    var len2 = 0;   
    for (var i=0; i<this.length; i++) {   
        if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {   
            len2 += 2;   
        } else {   
            len2 ++;   
        }   
    }   
    if (len2 <= len) {   
        return this;   
    }   
    len2 = 0;   
    len  = (len > sp.length) ? len-sp.length: len;   
    for (var i=0; i<this.length; i++) {   
        if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {   
            len2 += 2;   
        } else {   
            len2 ++;   
        }   
        if (len2 > len) {   
            str += sp;   
            break;   
        }   
        str += this.charAt(i);   
    }   
    return str;   
}   

