﻿//-------------
//去掉字串左边的空格
function lTrim(str)
{
	if (str.charAt(0) == " ")
	{
	//如果字串左边第一个字符为空格
	str = str.slice(1);//将空格从字串中去掉
	//这一句也可改成 str = str.substring(1, str.length);
	str = lTrim(str); //递归调用
	}
	return str;
}

//去掉字串右边的空格
function rTrim(str)
{
	var iLength;

	iLength = str.length;
	if (str.charAt(iLength - 1) == " ")
	{
	//如果字串右边第一个字符为空格
	str = str.slice(0, iLength - 1);//将空格从字串中去掉
	//这一句也可改成 str = str.substring(0, iLength - 1);
	str = rTrim(str); //递归调用
	}
	return str;
}

//去掉字串两边的空格
function trim(str)
{
	return lTrim(rTrim(str));
}


//去掉字符串首尾空格
String.prototype.Trim = function() {
  var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);
  return (m == null) ? "" : m[1];
}
//验证合法手机号
String.prototype.isMobile = function() {
  return (/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/.test(this.Trim()));
}

 //---------------------------
 //功能：获得字符串的长度
 //返回值：字符串长度
 //---------------------------
 function GetStringLen(str)
 {
	var j=0;
	for(var i=0;i<str.length; i++)
	{
		var temp = escape(str.charAt(i)).length;
		if(temp>3)
			j = j+2;
		else
			j = j+1;
	}
	
	return j;
 }
 
 function checkStrLen(str,len,vType)
 {
	var j= GetStringLen(str);
	if(vType=="max")
	{
		if(j<=parseInt(len))
			return true;
	}
	else
	{
		if(j>=parseInt(len))
			return true;
	}
	return false;
 }
 
//----------------------------
//功能：用户名输入 数字与字符混合
//参数：str：输入值
//返回值：true:正确 false:错误
//-----------------------------
function checkAccont(str)
{
	var re	= new RegExp("^[a-zA-Z][a-zA-Z0-9]{4,29}$");
	var r	= str.search(re);
	if(r==-1) return false;
	return true;
}
//----------------------------
//功能：密码输入 数字与字符混合
//参数：str：输入值
//返回值：true:正确 false:错误
//-----------------------------
function checkPassword(str)
{
	var re	= new RegExp("[a-zA-Z0-9]{6,20}$");
	var r	= str.search(re);
	if(r==-1) return false;
	return true;
}

//----------------------------
//功能：电子邮件
//参数：str：输入值
//返回值：true:正确 false:错误
//-----------------------------
function checkEmail(str) {
    var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    return reg.test(str);
}	 


  //----------------------------
  //功能：金额输入
  //参数：str：输入值
  //返回值：true:正确 false:错误
  //-----------------------------
function checkMoney(str)
{
	if(str=="") return true;
	var re	= new RegExp("^(-?[0-9]{1,})(.[0-9]{1,2})?$");
	var r	= str.match(re);
	return r;
}	

  //----------------------------
  //功能：浮点数输入
  //参数：str：输入值
  //返回值：true:正确 false:错误
  //-----------------------------
function checkFloat(str)
{
	if(str=="") return true;
	var Reg=new RegExp("^(-?[0-9]{1,}).?[0-9]{0,}$", "g");
	return str.match(Reg);
}

function checkUrl(vUrl)
{    
    if(vUrl=="") return true;
	var re	= new RegExp("^(http://){1}([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$");
	var r	= vUrl.match(re);
	return r;
}


//----------------------------
//功能：数字输入---按键检查是否符合
//参数：str:控件,index:控件的TabIndex:调用可以用onKeypress="checkNumber(this,this.TabIndex)"
//返回值：控制事件，按键非法事件操作无效
//-----------------------------	
function checkNumber(str,index)
{
	if(str=="") 
	{ 
		event.returnValue=true;
		return true;
	}	
	if(event.keyCode>57||event.keyCode<48)
		event.returnValue=false;		
}

//判断是否都是数字
function isDigit(s) 
{ 
var patrn=/^[0-9]{1,20}$/; 
if (!patrn.exec(s)) return false 
return true 
} 


//----------------------------
//功能：判断是否为整数
//参数：num:字符串
//返回值：false/true
//-----------------------------	
function CheckInteger(num) 
{
	try
	{
		if(num=="") return true;
		
		if(!isDigit(num))  return false;

		var tNum=parseInt(num,10);
		if(tNum<0) tNum=-tNum;
		num=tNum+'';
		var re	= new RegExp("^-?\\d+$");
		var r	= num.search(re);
		if(r==-1) return false;
		return true;
	}
	catch(exception)
	{
		return false;
	}
}

//-----------------------------	
//功能：返回日期是否合法（指定分割符）
//参数：datestr:日期字符串;type:分割符
//返回值：false:错;日期:正确
//-----------------------------	
function CheckDate(datestr,type) 
{
	var changer = "yes";
	if(datestr=="") return true;
	
	if(type==1)
	{
	chars = "/";
	changer = "no";
	}
	else if(type==2)
	{
	chars = "-";
	changer = "no";
	}
	else if(type==3)
	{
		chars = ".";
		changer = "no";
	}
	else if(type==4)
	{
		chars = "/";
		changer = "yes";
	}
	else if(type==5)
	{
		chars = "-";
		changer = "no";
	}
	else if(type==6)
	{
		chars = ".";
		changer = "yes";
	}		
	else	
	{
		return false;
	}
	if(datestr.indexOf(chars)!=-1) 
	{
		for(i=0;i<3;i++)
		{
			if (i==0){year=datestr.substring(0,datestr.indexOf(chars));if(year.length>4){return false;}}
			if (i==1){month=datestr.substring(0,datestr.indexOf(chars));if((month.length>2) || (month>12)){return false;}}
			if (i==2){day=datestr.substring(0,datestr.length);if((day.length>2) || (day>31)){return false;}}
			datestr = datestr.substring(datestr.indexOf(chars) + 1,datestr.length);
		}
		if(changer=="no"){return CheckMultiDate(year,month,day);}
		else{return CheckMultiDate(day,year,month);}
	}
	return false;
}	

function left(v,len)
{
	if (v.length<len) return "";
		return v.substring(0,len);
}

function right(v,len)
{
	if (v.length<len) return "";
		return v.substring(v.length-len,v.length);
}

//----------------------------
//功能：返回年月日是否合法
//参数：year:年字符串;month:月字符串;day:日字符串
//返回值：false:错;true:正确
//-----------------------------	
function CheckMultiDate(year,month,day) 
{
	if(!CheckInteger(year))
	{
		return false;
	}
	if(!CheckInteger(month))
	{
		return false;
	}
	if(!CheckInteger(day))
	{
		return false;
	}
	year=parseInt(year,10)
	month=parseInt(month,10)
	day=parseInt(day,10)

	if (isNaN(year))
	{
		return false;
	}
	else if (isNaN(month))
	{
		return false;
	}
	else if (isNaN(day))
	{
		return false;
	}

	if ((year < 1800) || (year > 9999))
	{
		return false;
	}
	else
	{
		if (month < 1 || month > 12)
		{
			return false;
		}
		else
		{
			if ((month==4)||(month==6)||(month==9)||(month==11))
			{
				if (day <1 || day > 30)
				{
					return false;
				}
			}
			else if (month==2)
			{
				if ((year%400==0) || ((year%4==0) && (year%100!=0)))
				{
					if (day <1 || day > 29)
					{
						return false;
					}
				}
				else if (day < 1 || day > 28)
				{
					return false;
				}
			}
			else if (day <1 || day >31)
			{
				return false;
			}
		}
	}
	return true;
}
	function isTel(vTel)
	{
		var arrTel=vTel.split(',');
		for(var i=0;i<arrTel.length;i++)
		{
			vRet=CheckOneTel(arrTel[i]);
			if(!vRet)		//校验无法通过，则直接返回
			{
				return false;
			}
		}
		return true;
	}
	function CheckOneTel(vTel)
	{
		var Reg=new RegExp("^([0-9]{0,6}[-]){0,1}([0-9]{0,4}[-]){0,1}([1-9][0-9]{4,10})((ext)[[0-9]{0,5}){0,1}$");
		return Reg.test(vTel);
	}



//验证邮编
function isZipTrue(Zip)
{
	var	Reg=new RegExp("^[0-9]{3,6}$");
	return Reg.test(Zip);
}

//验证是否能输入汉字
function isUnicodeTrue(Unicode)
{
	if(Unicode.match(/[^ -~]/))
	{
		return true;
	}
	else
	{
		return false;
	}
	
}


//----------------------------
//功能：检查Form那的控件的合法性
//参数：Form名称
//返回值：控制事件，onSubmit
//-----------------------------	
function CheckData(vForm)
{
	var i=0;
	var bRet=true;
	for (i=0;i<vForm.elements.length;i++)
	{
		var vCtrl=vForm.elements[i];
		if (vCtrl.style.NeedCheck=="true")
		{
			bRet=CheckCtrl(vCtrl);
			if (!bRet) return false ;			
		}		
	}
	return true;
}
//---------------------------
//功能:校验信息标题,只能是字符、数字和汉字
//参数：控件
//返回值：成功返回True，失败返回false
function CheckTitle(ValStr)
{
	var pat=new RegExp("[^a-zA-Z0-9\_\u4e00-\u9fa5]","i"); 
	if(pat.test(ValStr)==true) 
	{ 
		return false; 
	}
	else 
	{
    	return true;
	}
}

//---------------------------
//功能:校验中文信息，只能是汉字
//参数：控件
//返回值：成功返回True，失败返回false
function CheckChinese(ValStr) {
    var pat = new RegExp("^[\u4e00-\u9fa5]*$");
    if (pat.test(ValStr)) {
        return false;
    }
    else {
        return true;
    }
}

//----------------------------
//功能：检查某控件的输入是否合法

//参数：控件
//返回值：控制事件，onSubmit
//-----------------------------	
function CheckCtrl(vCtrl)
{
	try
	{
		var vValue=trim(vCtrl.value); 
		//校验是否允许为空
		if (vCtrl.style.NotNull=="true")
		{
			if (vValue=="")
			{
				alert(vCtrl.style.des + "不能为空！"); 
				vCtrl.focus();
				return false;
			}          
		} 
		   
		if(vValue=="")  return true ;		//允许为空且为空,则不必进行下面的校验
   
		if(vCtrl.style.MaxLength>0)
		{
			if(!checkStrLen(vValue,vCtrl.style.MaxLength,"max"))
			{
				alert(vCtrl.style.des + "长度不能大于【" + vCtrl.style.MaxLength+ "】！"); 
				vCtrl.focus();
				return false;
			}
		} 
		if(vCtrl.style.MinLength>0)
		{
			if(!checkStrLen(vValue,vCtrl.style.MinLength,"min"))
			{
				alert(vCtrl.style.des + "长度不能小于【" + vCtrl.style.MinLength+ "】！"); 
				vCtrl.focus();
				return false;
			}
		} 
	   
		if (vCtrl.style.FixedLength>0)
		{
			if (vValue.length!=vCtrl.style.FixedLength)
			{	
				alert(vCtrl.style.des + "长度必须是【" + vCtrl.style.FixedLength+ "】！"); 
				vCtrl.focus();
				return false;
			}
		}
		if(vCtrl.style.isTitle == "true")
		{
			if(!CheckTitle(vValue))
			{
				alert(vCtrl.style.des + "输入的内容中有非法字符，只能是汉字、英文字母与数字！"); 
				vCtrl.focus();
				return false;
			}
		}
		if(vCtrl.style.isMobile=="true")
		{
		    if(!vValue.isMobile())
		    {
				alert(vCtrl.style.des + "输入的内容中不是手机号码！"); 
				vCtrl.focus();
				return false;		    
		    }
		}
		if (vCtrl.style.isEmail=="true")
		{
			if (!checkEmail(vValue))
			{
				alert(vCtrl.style.des + "输入的内容不是合法电子邮件"); 
				vCtrl.focus();
				return false;
			}   
		}
	   
		if (vCtrl.style.isAge=="true")
		{
			if (vValue<1 || vValue>100 )
			{
				alert(vCtrl.style.des + "输入非法"); 
				vCtrl.focus();
				return false;
			}
		}
		   
		if (vCtrl.style.isDate=="true")
		{
			if (!CheckDate(vValue,2))
			{
				alert(vCtrl.style.des + "不是合法的日期格式（如“2008-09-18”）！");
				vCtrl.focus();
				return false;
			}
		}

		if (vCtrl.style.isZip=="true")
		{
			if (!isZipTrue(vValue))
			{
				alert(vCtrl.style.des + "非法，6位的数字！");
				vCtrl.focus();
				return false;
			}
		}


		if (vCtrl.style.isChinese == "true") {
		    if (CheckChinese(vValue)) {
		        alert(vCtrl.style.des + "非法，只能是汉字！");
		        vCtrl.focus();
		        return false;
		    }
		}		

		if (vCtrl.style.isUnicode=="true")
		{
			if (isUnicodeTrue(vValue))
			{
				alert(vCtrl.style.des + "非法，不能包含汉字！");
				vCtrl.focus();
				return false;
			}
		}		
		   
		if (vCtrl.style.isInt=="true")
		{
			if (!CheckInteger(vValue))
			{
				alert(vCtrl.style.des + "不是整数！"); 
				vCtrl.focus();
				return false;
			}
			if(vCtrl.style.MinValue!="")
			{
				if(parseInt(vValue)<parseInt(vCtrl.style.MinValue))
				{
					alert(vCtrl.style.des + "值应该大于" + vCtrl.style.MinValue); 
					vCtrl.focus();
					return false;		    
				}
			}
			if(vCtrl.style.MaxValue!="")
			{
				if(parseInt(vValue)>parseInt(vCtrl.style.MaxValue))
				{
					alert(vCtrl.style.des + "值应该小于" + vCtrl.style.MaxValue); 
					vCtrl.focus();
					return false;		    
				}
			}
		}
		   
		if (vCtrl.style.isFloat=="true")
		{
			if (!checkFloat(vValue))
			{
				alert(vCtrl.style.des + "不是浮点数");
				vCtrl.focus();
				return false;
			}
			
			if(vCtrl.style.MinValue!="")
			{
				if(parseFloat(vValue)<parseFloat(vCtrl.style.MinValue))
				{
					alert(vCtrl.style.des + "值应该大于" + vCtrl.style.MinValue); 
					vCtrl.focus();
					return false;		    
				}
			}
			if(vCtrl.style.MaxValue!="")
			{
				if(parseFloat(vValue)>parseFloat(vCtrl.style.MaxValue))
				{
					alert(vCtrl.style.des + "值应该小于" + vCtrl.style.MaxValue); 
					vCtrl.focus();
					return false;		    
				}
			}
		}

		if (vCtrl.style.isWWW=="true")
		{
			if (!checkUrl(vValue))
			{
				alert(vCtrl.style.des + "输入的内容不是网址");
				vCtrl.focus();
				return false;
			}
		}
		if(vCtrl.style.isMoney=="true")
		{
			if (!checkMoney(vValue))
			{
				alert(vCtrl.style.des + "输入的内容不是货币类型"); 
				vCtrl.focus();
				return false;
			}
			vValue = parseFloat(vValue);
		}

		if(vCtrl.style.isAccont=="true")
		{
			if (!checkAccont(vValue))
			{
				alert(vCtrl.style.des + "为字母和数字的组合，并且以字母开头，长度在5到30个字符之间");
				vCtrl.focus();
				return false;
			}
		}
			
		if(vCtrl.style.isPassword=="true")
		{
			if (!checkPassword(vValue))
			{
				alert(vCtrl.style.des + "为字母和数字的组合，长度在6到20个字符之间");
				vCtrl.focus();
				return false;
			}
		}
		if(vCtrl.style.isTel=="true")
		{
			vValue=vValue.replace(' ','');
			vValue=vValue.replace(String.fromCharCode(10),'');
			if (!isTel(vValue))
			{
				alert(vCtrl.style.des + "非法的电话号码或传真格式。例如：86-10-87654321ext1234(ext后为分机，ext1234可以没有)，多个电话请以逗号分开！");
				vCtrl.focus();
				return false;
			}
		}
		return true;
	}
	catch(e)
	{
		return false;
	}
}
