/*********************************************************************************
*	FUNCTION:		isBetween
*	PARAMETERS:		val		AS any value
*					lo		AS Lower limit to check
*					hi		AS Higher limit to check
*	CALLS:			NOTHING
*	RETURNS:		TRUE if val is between lo and hi both inclusive, otherwise false.
**********************************************************************************/
function isBetween (val, lo, hi) {
	if ((val < lo) || (val > hi)) { return(false); }
	else { return(true); }
}

/*********************************************************************************
*	FUNCTION:		isDate checks a valid date
*	PARAMETERS:		theStr		AS String
*	CALLS:			isBetween, isInt
*	RETURNS:		TRUE if theStr is a valid date otherwise false.
**********************************************************************************/
function isDate (theStr) {
	var the1st = theStr.indexOf('-');
	var the2nd = theStr.lastIndexOf('-');
	
	if (the1st == the2nd) { return(false); }
	else {
		var y = theStr.substring(0,the1st);
		var m = theStr.substring(the1st+1,the2nd);
		var d = theStr.substring(the2nd+1,theStr.length);
		var maxDays = 31;
		
		if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
			return(false); }
		else if (y.length < 4) { return(false); }
		else if (!isBetween (m, 1, 12)) { return(false); }
		else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
		else if (m==2) {
			if (y % 4 > 0) maxDays = 28;
			else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
           	else maxDays = 29;
		}
		if (isBetween(d, 1, maxDays) == false) { return(false); }
		else { return(true); }
	}
}
/********************************************************************************
*   FUNCTION:       Compare Date! Which is the latest!
*   PARAMETERS:     lessDate,moreDate AS String
*   CALLS:          isDate,isBetween
*   RETURNS:        TRUE if lessDate<moreDate
*********************************************************************************/
function isComdate (lessDate , moreDate)
{
	if (!isDate(lessDate)) { return(false);}
	if (!isDate(moreDate)) { return(false);}
	var less1st = lessDate.indexOf('-');
	var less2nd = lessDate.lastIndexOf('-');
	var more1st = moreDate.indexOf('-');
	var more2nd = moreDate.lastIndexOf('-');
	var lessy = lessDate.substring(0,less1st);
	var lessm = lessDate.substring(less1st+1,less2nd);
	var lessd = lessDate.substring(less2nd+1,lessDate.length);
	var morey = moreDate.substring(0,more1st);
	var morem = moreDate.substring(more1st+1,more2nd);
	var mored = moreDate.substring(more2nd+1,moreDate.length);
	var Date1 = new Date(lessy,lessm,lessd); 
	var Date2 = new Date(morey,morem,mored); 
	if (Date1>Date2) { return(false);}
	 return(true); 
		
}

/*********************************************************************************
*	FUNCTION	isEmpty checks if the parameter is empty or null
*	PARAMETER	str		AS String
**********************************************************************************/
function isEmpty (str) {
    if ((str==null)||(str.length==0)) return true;
    else return(false);
}


/*********************************************************************************
*	FUNCTION	isAllEmpty checks if all the character is empty or null
*	PARAMETER	str		AS String
**********************************************************************************/
function isAllEmpty (str)
	{
	if ((str==null)||(str.length==0)) return true;
	else
		{
		for (var i=0; i<str.length; i++)
			{
			if (str.substring(i,i+1)!=" ") return false;
			}
		return true
		}
	}

/*********************************************************************************
*	FUNCTION:		isInt
*	PARAMETER:		theStr	AS String 
*	RETURNS:		TRUE if the passed parameter is an integer, otherwise FALSE
*	CALLS:			isDigit
**********************************************************************************/
function isInt (theStr) {
	var flag = true;

	if (isEmpty(theStr)) { flag=false; }
	else
	{	for (var i=0; i<theStr.length; i++) {
			if (isDigit(theStr.substring(i,i+1)) == false) {
				flag = false; break;
			}
		}
	}
	return(flag);
}

/*********************************************************************************
*	FUNCTION:		isReal
*	PARAMETER:	heStr	AS String 
					    decLen	AS Integer (how many digits after period)
*	RETURNS:		TRUE if theStr is a float, otherwise FALSE
*	CALLS:			isInt
**********************************************************************************/
function isReal (theStr, decLen) {
	var dot1st = theStr.indexOf('.');
	var dot2nd = theStr.lastIndexOf('.');
	var OK = true;
	if (isEmpty(theStr)) return false;

	if (dot1st == -1) {
		if (!isInt(theStr)) return(false);
		else return(true);
	}
	else if (dot1st != dot2nd) return (false);
	else if (dot1st==0) return (false);
	else {
		var intPart = theStr.substring(0, dot1st);
		var decPart = theStr.substring(dot2nd+1);

		if (decPart.length > decLen) return(false);
		else if (!isInt(intPart) || !isInt(decPart)) return (false);
		else if (isEmpty(decPart)) return (false);
		else return(true);
	}
}

/*********************************************************************************
*	FUNCTION:		isEmail
*	PARAMETER:		String (Email Address)
*	RETURNS:		TRUE if the String is a valid Email address
*					FALSE if the passed string is not a valid Email Address
*	EMAIL FORMAT:	AnyName@EmailServer e.g; webmaster@hotmail.com
*					@ sign can appear only once in the email address.
*********************************************************************************/
function isEmail (theStr) {
	var atIndex = theStr.indexOf('@');
	var dotIndex = theStr.indexOf('.', atIndex);
	var flag = true;
	theSub = theStr.substring(0, dotIndex+1)

	if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)) 
	{	return(false); }
	else { return(true); }
}
/*********************************************************************************
*	FUNCTION:		newWindow
*	PARAMETERS:		doc	 	->	Document to open in the new window
					hite 	->	Height of the new window
					wide 	->	Width of the new window
					bars	->	1-Scroll bars = YES 0-Scroll Bars = NO
					resize 	->	1-Resizable = YES 0-Resizable = NO
*	CALLS:			NONE
*	RETURNS:		New window instance
**********************************************************************************/
function newWindow (doc, wide, hite, bars, resize) {
	var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
	var l = Math.floor((screen.width-wide)/2);
	var t = Math.floor((screen.height-hite)/2);
	opt+=("scrollbars="+bars+",");
	opt+=("resizable="+resize+",");
	opt+=("width="+wide+",");
	opt+=("height="+hite+",");
	opt+=("top="+t+",");
	opt+=("left="+l);
	winHandle=window.open(doc,'',opt);
	return;
}


//校验数字：0-9数字的组合
function isDigit(s)
{
	var patrn=/^[0-9]{1,20}$/;
	if (!patrn.exec(s)) return false
	return true
}

//检验法人代码
function isCorporationCode(s){
	var patrn=/^(\d){15}$/;
	//if (!patrn.exec(s)) return false
	return true
}

//校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
	var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验用户姓名：只能输入1-30个以字母开头的字串
function isTrueName(s)
{
	var patrn=/^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验密码：只能输入6-150个字母、数字
function isPasswd(s)
{
	var patrn=/^[a-zA-Z0-9]{6,15}$/;
	if (!patrn.exec(s)) return false
	return true
}

//检验体重
function isAvoirdupois(s)
{
	var patrn=/^[1-9]{1}[0-9]{0,2}$/;
	var patrn2=/^[1-9]{1}$/;
	var intPart=s.indexOf('.');
	var decPart=s.lastIndexOf('.');
	if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true
	if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false
	if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false
	if (eval(s)<2 || eval(s)>200) return false
	return true
}

//校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
function isTel(s)
{
	var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验手机号码：必须以数字开头，除数字外，可含有“-”
function isMobile(s)
{
	var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验地区代码
function isAreaCode(s)
{
	var patrn=/^(\d){6}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验邮政编码
function isPostalCode(s)
{
	var patrn=/^[0-9]{1}(\d){5}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验搜索关键字
function isSearch(s)
{
	var patrn=/^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/? ]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验是否为ip地址
function isIP(s)
{
	var patrn=/^[0-9.]{1,20}$/;
	if (!patrn.exec(s)) return false
	return true
}

//检验页码是否正确
function isPage(s)
{
	var patrn=/^[1-9]{1}[0-9]{0,2}$/;
	if (!patrn.exec(s)) return false
	return true
}

//表单输入值错误提示
function vErr(o,s){
	alert(s);
	if (o) o.focus();
	return false;
}

//判断单选
function chkRadio(o){
	for (i=0;i<o.length;i++){
		if (o[i].checked) return true;
	}
	return false;
}

//判断上传文件的扩展名
function chkExtName(s){
	var patrn = 'rar,zip,doc,xls,ppt,txt,rtf,jpeg,jpg,gif,bmp';
	n = s.lastIndexOf('.')+1;
	if (n < 2 ) return false;
	s = s.substr(n);
	ExtName = patrn.split(',');
	for (i=0; i<ExtName.length; i++){
		if (s==ExtName[i]) return true;
	}
	return false;
}