/*  ---------------------------------------------------------------------------------------
 * Copyright (c) 2002-2005 YiBai Consulting & Information Technology. All Rights Reserved.
 * ---------------------------------------------------------------------------------------
 * Project Name         : CRM
 * Project Team Member  : 
 * author				: Kenny Hu
 * version				: 1.0
 * Create Date			: 2006-7-25
 * Description			: Check various Data Format: number, date, real, email, etc.
 * ---------------------------------------------------------------------------------------
 * Revised Records
 * 2006-7-25 by Kenny Hu
 * 
 * ---------------------------------------------------------------------------------------
 */

/* ---------- 字符串函数 ----------*/
function isEmpty(pstrValue) {
	var strComp=pstrValue;
	if (strComp==null ||getridRightBlank(getridLeftBlank(strComp)).length==0 ) {
		return true;
	} else {
		return false;
	}
}

function isEmail(pstrEmail) {
	if (pstrEmail.length > 100||(pstrEmail.indexOf("@")==-1)||(pstrEmail.lastIndexOf("@")!=pstrEmail.indexOf("@"))||(pstrEmail.indexOf("@")==(pstrEmail.length-1))) { return false; }
	return true;
}

function getstring(str) {
	var returnstr;
	if((str==null)||(str.length==0)) {
		return "";
	}
	else {
		returnstr = 'order by '+ substring(str,2,str.length);
		return returnstr;
	}
}

/* ---------- 数字函数 ----------*/
function isDigit(pstrValue) {
	var theMask = '0123456789';
	if ( isEmpty(pstrValue) ) return false;
	if ( theMask.indexOf(pstrValue)==-1 ) return false;
	return true;
}

function isInt(pstrValue) {
	if (isEmpty(pstrValue)) {
		return false;
	} else {
		if ( !isDigit( pstrValue.substring(0,1) ) ) {
			if ( pstrValue.substring(0,1)!="-" ) {
				return false;
			}
		} else {
			for(var i = 1; i < pstrValue.length; i++) {
				if( !isDigit(pstrValue.substring(i,i+1)) ) {
					return false;
					break;
				}
			}
		}
	}
	return true;
}

/* 判断是否是负数 */
function isNegative(pstrValue) {
	if ( isDecimal(pstrValue) ) {
		if ( pstrValue.substring(0,1)=='-' ) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

/* 判断是否是小数 */
function isDecimal(pstrValue) {
	var count = 0;
	if (isEmpty(pstrValue)) {
		return false;
	} else {
		if( !isDigit(pstrValue.substring(0,1)) && pstrValue.substring(0,1)!='.' && pstrValue.substring(0,1)!='-') {
			return false;
		}
		if( pstrValue.substring(0,1)=='.' ) {
			count++;
		}
		for(var i=1; i<pstrValue.length; i++) {
			if( !isDigit(pstrValue.substring(i,i+1)) && pstrValue.substring(i,i+1)!='.' ) {
				return false;
			}
			if ( pstrValue.substring(i,i+1)=='.' ) {
				count++;
			}
			if (count>1) {
				return false;
			}
		}
	}
	return true;
}

/* 判断是否是有理数 */
function isRational(pstrValue) {
	return ( isDecimal(pstrValue) );
}

function isBetween(pValue,pLow,pHigh) {
	if((pValue < pLow) || (pValue > pHigh)) return false;
	return true;
}

/* 浮点数的小数点格式化，取两位 */
function formatFloat(pfltValue,pPointNum) {
	var strReturn = formatNumber(pfltValue,pPointNum);
	var a_int = parseFloat(strReturn);
	if (pfltValue.toString().length>strReturn.length) {
		var b_str = pfltValue.toString().substring(strReturn.length,strReturn.length+1);
		var b_int = parseFloat(b_str);
		if (b_int<5) {
			return strReturn;
		} else {
			var bonus_str,bonus_int;
			if (pPointNum==0) {
				bonus_int = 1;
			} else {
				bonus_str = "0.";
				for (var i=1; i<pPointNum; i++)
				bonus_str+="0";
				bonus_str+="1";
				bonus_int = parseFloat(bonus_str);
			}
			strReturn = formatNumber(a_int + bonus_int, pPointNum);
		}
	}
	return strReturn;
}

/* formatFloat的子函数 */
function formatNumber(pValue,pPointNum) {
	var strReturn;
	var intPointIndex;
	var intLength;
	var i;
	strReturn = pValue.toString();
	intPointIndex = strReturn.indexOf('.');
	intLength = strReturn.length;
	if (pPointNum==0) {
		if (intPointIndex!=-1) strReturn = strReturn.substring(0,intPointIndex);
	} else {
		if (intPointIndex==-1) {
			strReturn = strReturn + ".";
			for (i=1;i<=pPointNum;i++)
				strReturn = strReturn + "0";
		} else {
			strReturn = strReturn.substring(0,intPointIndex+pPointNum+1);
			for (i=intLength; i<=intPointIndex+pPointNum; i++)
				strReturn = strReturn + "0";
		}
	}
	return strReturn;
}


/* ---------- 日期函数 ----------*/
function isValidDate(pstrValue) {
	var intYearIndex = pstrValue.indexOf('-');
	var intMonthIndex = pstrValue.lastIndexOf('-');
	if(intYearIndex == intMonthIndex) {
		return false;
	} else {
		var Year = pstrValue.substring(0,intYearIndex);
		var Month = pstrValue.substring(intYearIndex + 1, intMonthIndex);
		var Day = pstrValue.substring(intMonthIndex + 1, pstrValue.length);
		if(!isInt(Year) || Year.length<4) return false;
		if(!isInt(Month)) return false;
		if(!isInt(Day)) return false;
		Year  = parseInt(Year,10);
		Month = parseInt(Month,10);
		Day   = parseInt(Day,10);
		if( (Month < 1) || (Month > 12) ) return false;
		if( (Year < 1900) || (Year > 2079) ) return false;
		if( (Day < 1) || (Day > 31) ) return false;
		if (( Month==4) || (Month==6) || (Month==9) || (Month==11) ) {
			if ( (Day < 1) || (Day > 30) ) return false;
		} else {
			if ( Month!=2 ) {
				if ( (Day < 1) || (Day > 31 ) ) return false;
			} else {
				 /* 二月 */
				if ( (Year % 100) != 0 && (Year % 4 == 0) || (Year % 100) == 0 && (Year % 400) == 0 ) {
					if ( Day > 29 ) return false;
				} else {
					if ( Day > 28 ) return false;
				}
			}
		}
		return true;
	}
}
/* 判断完整时间是否正确 */
function isValidTime(pstrTime) {
	var strYearMonthDay = "";
	var strHourMinuteSecond = "";
	var intIndex = pstrTime.lastIndexOf(' ');
	if ( intIndex==-1 ) {
		strYearMonthDay = pstrTime;
	} else {
		strYearMonthDay = pstrTime.substring(0,intIndex);
		strHourMinuteSecond = pstrTime.substring(intIndex+1,pstrTime.length);
	}

	if ( !isValidDate(strYearMonthDay) ) {
		return false;
	}
	if ( isEmpty(strHourMinuteSecond) ) return true;	/* 如果为空 */

	var intHourIndex = strHourMinuteSecond.indexOf(":");
	var intMinuteIndex = strHourMinuteSecond.lastIndexOf(":");

	if ( intHourIndex==-1 ) {		/* 只有小时 */
		if (!isInt(strHourMinuteSecond)) return false;
		if ( parseInt(strHourMinuteSecond)<0 || parseInt(strHourMinuteSecond)>23) return false;
		return true;
	} else if (intHourIndex==intMinuteIndex) {	/* 只有小时和分钟 */
		var Hour = strHourMinuteSecond.substring(0,intHourIndex);
		var Minute = strHourMinuteSecond.substring(intHourIndex+1,strHourMinuteSecond.length);
		if ( !isInt(Hour) ) return false;
		if ( parseInt(Hour)<0 || parseInt(Hour)>23 ) return false;
		if ( !isInt(Minute) ) return false;
		if ( parseInt(Minute)<0 || parseInt(Minute)>59 ) return false;
		return true;
	} else {
		var Hour = strHourMinuteSecond.substring(0,intHourIndex);
		var Minute = strHourMinuteSecond.substring(intHourIndex+1,intMinuteIndex);
		var Second = strHourMinuteSecond.substring(intMinuteIndex+1,strHourMinuteSecond.length);
		if ( !isInt(Hour) ) return false;
		if ( parseInt(Hour)<0 || parseInt(Hour)>23 ) return false;
		if ( !isInt(Minute) ) return false;
		if ( parseInt(Minute)<0 || parseInt(Minute)>59 ) return false;
		if ( !isInt(Second) ) return false;
		if ( parseInt(Second)<0 || parseInt(Second)>59 ) return false;
		return true;
	}
}

function compareDate(pStartDate, pEndDate){
	var intStart = Date.parse( pStartDate.replace("-","/") ).valueOf();
	var intEnd = Date.parse( pEndDate.replace("-","/") ).valueOf();
	if ( intEnd<intStart ) return false;
	return true;
}

/*----------- 是否合法ID函数 ----------*/
/*
规则：只能是0-9,A-Z,a-z,-,_等字符(不能以ALL作为ID)，且首字符不能为'-'和'_'
*/
function isID(pstrValue) {
	var theMask = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_0123456789';

	if( isEmpty(pstrValue))return false;

	if ( ( theMask.indexOf(pstrValue.substring(0,1))==-1 ) || (pstrValue.substring(0,1)=="-") || (pstrValue.substring(0,1)=="_") ) {
		return false;
	}

	for(var i=1; i<pstrValue.length; i++) {
		if( theMask.indexOf(pstrValue.substring(i,i+1))==-1 ) {
				return false;
				break;
		}
	}

	if(pstrValue.toUpperCase() == "ALL"){
		return false;
	}

	return true;
}

/*----------- 是否合法条形码, 身份证函数 ----------*/
function isIdentityCode(pstr) {
	var theMask = '0123456789';
	if(isEmpty(pstr)) return true;			
	for(var i=0; i<pstr.length; i++) {
		if(theMask.indexOf(pstr.substring(i,i+1))==-1 ) {
			return false;
			break;
		}
	}

	return true;
}


function convertDoubleQuotesToSingle(pStr) {
	var strTemp1 = "";
	var strTemp2 = "";
	var strInput = "";
	var strOutput = "";

	strInput = pStr;
	strTemp2 = strInput;
	for (var i=1; i < 500; i++) {
		strTemp1 = strInput.substring(0,strInput.indexOf("\"") );
		strInput = strInput.substring(strInput.indexOf("\"") + 1,strInput.length);
		if (strInput!=strTemp2) {
			strOutput = strOutput + strTemp1 + "\'";
		}
		strTemp2 = strInput;
	}
	strOutput = strOutput + strInput;
	return strOutput;
}




/*去掉右边空格*/
function getridRightBlank(pstr){
	var strReturn="";
	if(pstr.length==0) return "";
	var i=0;
	for(i=pstr.length-1 ;i>=0;i--){
		if(pstr.substring(i,i+1)!=" "){
			break;
		}
	}
	if(i!=-1){
		strReturn=pstr.substring(0,i+1);
	}
	return strReturn;

}

/*去掉左边空格*/
function getridLeftBlank(pstr){
	var strReturn="";
	if(pstr.length==0) return "";
	var i=0;
	for(i=0 ;i<pstr.length;i++){
		if(pstr.substring(i,i+1)!=" "){
			break;
		}
	}
	if(i!=pstr.length){
		strReturn=pstr.substring(i,pstr.length+1);
	}
	return strReturn;
}



