//========================================================================
/*
ISEMPTY　是否为空
CHECKDATE　日期检验
CHECKMONEY　金额检验
CHECKTIME　时间
CHECKEMAIL　邮箱
CHECKPHONECODE　电话号码
CHECKFILE　文件
ISINTEGER　是　否为整数
CHECKPOSTALCODE　邮政编码
ISREAL　是否是实数
ISINTGERINRANGE　范围校验
CHECKLENGTH    中西文长度校验（中文占两个字符，西文占一个）
*/


//=========================================================================
//检查一个域是否为空为空返回TRUE
function isEmpty(obj){
	var str=trim(obj.value);
//	if (!str) str=_str;
	if(str==""){
		return true;
	}
	else{
		return false;
	}
}

//======================================================================

//是否是数字或整数为整数时返回TRUE
function isInteger(s)
{
	var int_str=/\d{1,}/;
	for(i=0;i<s.length;i++)
	{
		if (!(int_str.test(s.charAt(i))))
		return false;
	}
	return true;
}
//是否在允许的范围之内
function isIntgerInRange(s,min,max)
{
	if(!isInteger(s))
		return false;
	return ((num>=min)&&(num<=max));
}
//判断是否是合法实数intLen为小数位位数，decLen为整数位位数当都为空的时候按默认格式检验，当两个有值的时候按给定的格式检验
function isReal(theStr,decLen,intLen,name)
{

	if(decLen=="")
		decLen=10;
	if(intLen=="")
		intLen=2;

	if(theStr.indexOf(".")>decLen)
	{
		alert(name+"整数位应小"+decLen)
		return false;
	}
	if((theStr.indexOf("."))!=-1)
	{

		if((theStr.length-theStr.indexOf(".")-1)>intLen)
		{
			alert(name+"小数位应小"+intLen)
			return false;
		}
	}
	StrArr=theStr.split(".");
	if(StrArr.length>2)
	{
		alert(name+"格式不正确")
		return false;
	}
	if(StrArr.length>0)
	{
		if(!isInteger(StrArr[0]))
		{
			alert(name+"出现了非法字符")
			return false;
		}
	}
	if(StrArr.length>1)
	{
		if(!isInteger(StrArr[1]))
		{
			alert(name+"出现了非法字符")
			return false;
		}
	}

	return true;
}
//========================================================================

//判断一个字符是不是有效的字符或者一个字符串是不是一个合法的字符串
function ischar(thechar)
{
	var pattern=/[a-zA-Z]+/;
	var bool=pattern.test(thechar);
	if(bool)
		return true;
	else
	{

		return false;
	}
}


//==========================检测日期格式 格式为：yyyy-mm-dd   =================================================

function checkDate(objdate,name)
{
	var date_str=/\d\d\d\d-\d\d-\d\d/;
	var date_bool=date_str.test(objdate);
	if(objdate.length!=10)
	{

		alert(name+"日期格式不正确应为：yyyy-mm-dd")
		return false;
	}
	if(!date_bool)
	{
		alert(name+"日期格式不正确应为：yyyy-mm-dd")
		return false;
	}
	else
	{
		var date_year=objdate.substring(0,4);
		var date_month=objdate.substring(5,7);
		var date_date=objdate.substring(8,10);
		if(date_year<1900||date_year>2500)
		{

			alert(name+"输入的日期中的年份不正确，必须处于1900年--2500年之间");
			return false;
		}
		if(date_month<1||date_month>12)
		{

			alert(name+"输入的日期中的月份不正确，必须处于1--12之间");
			return false;
		}
		if(date_date<1||date_date>31)
		{

			alert(name+"输入的日期中的日不正确，此月没有"+date_date+"天");
			return false;
		}
		if(date_month==4||date_month==6||date_month==9||date_month==11)
		{
			if(date_date>30)
			{

				alert(name+"输入的日期中的日不正确，此月没有"+date_date+"天");
				return false;
			}
		}
		if(date_month==2)
		{
			if(date_year%4>0&&date_date>28)
			{

				alert(name+"输入的日期中的日不正确，此月没有"+date_date+"天");
				return false;
			}
			if(date_year%100==0&&date_year%400>0&&date>28)
			 {

			 	alert(name+"输入的日期中的日不正确，此月没有"+date_date+"天");
			 	return false;
			}
			if(date_date>29)
			{

				alert(name+"输入的日期中的日不正确，此月没有"+date_date+"天");
				return false;
			}
		}
	}
	return true;
}

//=====================================去掉字符串的前后空格===============================================
function trim(str) {
	for(var i = 0 ; i<str.length && str.charAt(i)==" " ; i++ ) ;
	str=str.substring(i,str.length);
	for(var i = str.length-1 ;  i>=0 && str.charAt(i)==" " ; i-- ) ;
	str=str.substring(0,i+1);
	return str;
}
//==================检查电子邮箱地址=================================
function checkEmail(email_obj,name)

{
	var email_str=email_obj.value;
	//var mail=/^[a-z][\w\.]*@[\w\.]+\.[a-z]{2,3}/i;
	var mail=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;   
	var mail_bool=mail.test(email_str);
	if(!mail_bool)
	{

		alert(name+"格式不正确");
		email_obj.focus();
		return false;
	}
	return true;
}
//=====================检测邮政编码=====================================
function checkPostalcode(objPostalcode_obj,name)

{
	var objPostalcode=objPostalcode_obj.value;
	var post_str=/^\d{6}$/;
	var post_bool=post_str.test(objPostalcode);
	if(post_bool)
		return true;

	alert(name+"应为六位整数");
	objPostalcode_obj.focus();
	return false;
}
//==========================检测电话号码==========================
function checkPhonecode(objPhonecode_obj,name)

{
	var objPhonecode=objPhonecode_obj.value;
	var phon_str1=/(\d*)\d{7,8}/;
	var phon_str2=/\d*-\d{7,8}/;
	var phon_str3=/\d*,\d{7,8}/;
	var phon_str4=/^\d{7,20}/;
	if((objPhonecode.length<7)||(objPhonecode.length>=20))
	{

		alert(name+"不正确");
		objPhonecode_obj.focus();
		return false;
	}
	if(phon_str1.test(objPhonecode)||phon_str2.test(objPhonecode)||phon_str3.test(objPhonecode)||phon_str4.test(objPhonecode))
		return true;

	alert(name+"不正确");
	objPhonecode_obj.focus();
	return false;
}
//===================判断输入的内容是否只为空格=======================
function iskongge(iskongge_obj)
{
	var iskongge_str=iskongge_obj.value;
	for(var i = 0 ; i<iskongge_str.length && iskongge_str.charAt(i)==" " ; i++ ) ;
	iskongge_str=iskongge_str.substring(i,iskongge_str.length);
	if(iskongge_str=="")
	{
		//alert("此处不能为空");
		iskongge_obj.focus();
		return true;
	}
	return false;
}
//
//-------------------------------检测金额格式--------------------------------------//
function checkMoney(objMoney,name)
{
	if(isEmpty(objMoney))
	{
		alert(name+"不能为空")
		objMoney.focus();
		return false;
	}
	var objmoney_str=objMoney.value.split(".");

	if(objmoney_str.length>2)
	{
		alert(name+"金额格式不对:整数部分应小于10位，小数部分应用2位")
		objMoney.focus();

		return false;
	}
	if(objmoney_str.length==2)
	{

		if(objmoney_str[0].length<10&&isInteger(objmoney_str[0])&&objmoney_str[1].length<3&&isInteger(objmoney_str[1])&&objmoney_str[1].length>0)
		return true;
	}
	if(objmoney_str.length==1)
	{
		if(isInteger(objmoney_str[0]))
		return true;
	}
	alert(name+"金额格式不对:整数部分应小于10位，小数部分应用2位")
	objMoney.focus();
	return false;
}


//=====================检测文件格式=======================
//str为文件字符串，fi_array为数组用于存放文件格式的后缀倒如：jpg当返回值为真的时候格式正确，当返回值为假的时候格式不正确。
function checkfile(str,fi_array,name)

{
	if(str=="")
	{
		return true;
	}
	if(fi_array==null)
	{
		return true;
	}
	for(i=0;i<fi_array.length;i++)
	{
		if(fi_array[i]=="*")
		{
			return true;
		}
		if(str.lastIndexOf(fi_array[i])!=-1)
		{
			return true;
		}
	}
	var fi_str = "";
	for(i=0;i<fi_array.length;i++)
	{
		fi_str+=(fi_array[i]+"或");
	}
	fi_str+="为空";

	alert(name+"文件格式应为"+fi_str);
	return false;
}

//-----------------------------检测时间格式----HH:MM----------------------//
function checkTime(objTime,prompt)
{
	var timestr;
	var info;
	info=prompt;
	var time_h="";
	var time_m="";
	var i_loop=0;
	var startpos;
	var endpos;

	timestr=objTime.value;
	if (timestr=="")
	{
	  	alert(info+"不能为空！");
	  	return false;
	}
   else if(timestr.length>5)
   {
		alert(info+"格式错误,应该为：HH:MM！")
		return false;
   }
   else
   {
		if(timestr.indexOf(":")<0)
		{
			alert(info+"格式错误,应该为：HH:MM！")
			return false;
		}
		while(timestr.charAt(i_loop)!=":" && i_loop<2)
		{
			time_h=time_h+timestr.charAt(i_loop);
			i_loop++;
		}
		if(time_h=="")
		{
			alert(info+"格式错误,应该为：HH:MM！")
			return false;
		}
		if (!isInteger(time_h))
		{
			alert(info+"中的小时不正确，必须为数字(0~24),时间格式：HH:MM！");
			return false;
		}
		if(parseInt(time_h)>24)
		{
			alert(info+"中的小时超出了范围（0~24）！");
			return false;
		}

		startpos=timestr.indexOf(":")+1;
		endpos=timestr.length-time_h.length+1;
		for(i_loop=startpos;i_loop<=endpos;i_loop++)
	   	time_m=time_m+timestr.charAt(i_loop);
		if (!isInteger(time_m))
		{
			alert(info+"中的分钟格式不正确，必须为两位数字，时间格式：HH:MM！");
		 	return false;
		}
		if(time_m.length!=2)
		{
			alert(info+"中的分钟格式不正确，必须为两位数字，时间格式：HH:MM！");
			return false;
		}
		if(time_h.length==2)
		{
			if(timestr.charAt(2)!=":")
			{
				alert(info+"中的分钟不正确，必须为数字，时间格式：HH:MM！");
				return false;
			}
		}
		else if(time_h.length==1)
		{
			if(timestr.charAt(1)!=":")
			{
				alert(info+"中的分钟不正确，必须为数字，时间格式：HH:MM！");
				return false;
			}
		}
		if(parseInt(time_m)>60)
		{
			alert(info+"中的分钟超出了范围（00~60）！");
			return false;
		}
 	}
	return true;
}
//判断检验（ “显示名”，表单域对象，做何种检验,file_type为文件类型数组，decLen为实数位长度，intLen小数位长度）
//不需要作文件类型校验时file_type可以空，当做实数校验时decLen为实数位长度，intLen小数位长度，当判断是否在某个数是否在两个数中间时
//decLen为MIN，intLen为MAX
//当作长度校验时，decLen为最小长度值，intLen为最大长度值

function verify_cycle(name,obj,atype,file_type,decLen,intLen)
{

	if(atype=="ISEMPTY")
	{
		if(isEmpty(obj))
		{
			alert(name+"不能为空");
			obj.focus();
			return false;
		}
	}
	if(atype=="CHECKDATE")
	{
		if(!isEmpty(obj))
		{
			if(!checkDate(obj.value,name))
			{
				obj.focus();
				return false;
			}
		}
	}
	if(atype=="CHECKMONEY")
	{

		if(!checkMoney(obj,name))
		{
			return false;
		}

	}
	if(atype=="CHECKTIME")
	{
		if(!isEmpty(obj))
		{
			if(!checkTime(obj,name))
			{
				obj.focus();
				return false;
			}
		}
	}
	if(atype=="CHECKEMAIL")
	{
		if(!isEmpty(obj))
		{
			if(!checkEmail(obj,name))
			{
				return false;
			}
		}
	}
	if(atype=="CHECKPHONECODE")
	{
		if(!isEmpty(obj))
		{
			if(!checkPhonecode(obj,name))
			{
				return false;
			}
		}
	}
	if(atype=="CHECKFILE")
	{
		if(!checkfile(obj.value,file_type,name))
		{
			obj.focus();
			return false;
		}

	}
	if(atype=="ISINTEGER")
	{
		if(!isEmpty(obj))
		{
			if(!isInteger(obj.value))
			{
				alert(name+"内容应为数字");
				obj.focus();
				return false;
			}
		}

	}
	if(atype=="CHECKPOSTALCODE")
	{
		if(!isEmpty(obj))
		{
			if(!checkPostalcode(obj,name))
			{
				return false;
			}
		}
	}
	if(atype=="ISREAL")
	{
		if(!isEmpty(obj))
		{
			if(!isReal(obj.value,decLen,intLen,name))
			{
				obj.focus();
				return false;
			}
		}
	}
	if(atype=="ISINTGERINRANGE")
	{
		if(!isEmpty(obj))
		{
			if(!isIntgerInRange(obj.value,decLen,intLen))
			{
				alert(name+"不在范围之内");
				obj.focus();
				return false;
			}
		}
	}
	if(atype=="CHECKLENGTH")
	{
		if(!checkLength(name,obj,decLen,intLen))
		{
			return false;
		}

	}
	return true;

}
//*******************表单列的校验 用法与verify_cycle相同*************************
function verify_item(name,obj,atype,file_type,decLen,intLen)
{

	var undefined;
	if(obj.length!=undefined)
	{
		for(H=0;H<obj.length;H++)
		{
			if(!verify_cycle(name,obj[H],atype,file_type,decLen,intLen))return false;
		}
	}
	else{

		if(!verify_cycle(name,obj,atype,file_type,decLen,intLen))return false;
	}
	return true;

}



//**********************************************输入时的事件判断（只能判断正数）
 function checkIt(e){
    var charCode=(navigator.appName=="Netscape") ? e.which : e.keyCode;

    if(charCode>31 && (charCode<48 || charCode>57) && charCode!=46){

       return false;
    }
    return true;
}
//**********************************************输入时的事件判断（只能判断正数）

//**************************长度校验
//name为警告名称obj：表单对象decLen：内容长度最小值，intLen内容长度最大值
function checkLength(name,obj,decLen,intLen)
{
	var textlen=0;
	if(obj.value.length<decLen)
	{
		alert(name+"内容过短");
		obj.focus();
		return false;
	}
	for(tl=0;tl<obj.value.length;tl++)
	{
		if(obj.value.charCodeAt(tl)>128)
		{
			textlen+=2;
		}else{
			textlen+=1;
		}
		if(textlen>intLen)
		{
			alert(name+"内容过长");
			obj.focus();
			return false;
		}
	}
	return true;
}
//*********************************
