/*********************************************************************************
*	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) {
	if (isBetween(theStr.length, 8, 10) == false) { return(false); }
	else {
		var the1st = theStr.indexOf('/');
		var the2nd = theStr.lastIndexOf('/');
		
		if (the1st == the2nd) { return(false); }
		else {
			var d = theStr.substring(the1st+1,the2nd);
			var m = theStr.substring(0,the1st);
			var y = 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) == false) { 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 Round(str){
	return Math.round(str*100)/100;
}

function isDateRange (theStr,focus,errorMessage,lo,hi) {
	if (isBetween(theStr.length, 8, 10) == false)
	{
		alert(errorMessage);
		focus.focus();	
		return(false);
	}
	else {
		var the1st = theStr.indexOf('/');
		var the2nd = theStr.lastIndexOf('/');
		
		if (the1st == the2nd) {

			alert(errorMessage);
			focus.focus();	
			return(	false);
		}
		else
		{
			var m = theStr.substring(the1st+1,the2nd);
			var d = theStr.substring(0,the1st);
			var y = theStr.substring(the2nd+1,theStr.length);
			var maxDays = 31;

			if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
					alert(errorMessage);
					focus.focus();	
					return(false); }
			else if (y.length < 4) {
					alert(errorMessage);
					focus.focus();	
					return(false);
			}
			else if (isBetween (m, 1, 12) == false) {
				alert(errorMessage);
				focus.focus();	
				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) {
					alert(errorMessage);
					focus.focus();	
					return(false);
			}
			else {
				if(!isBetween(y,lo,hi))
				{
					alert(errorMessage);
					focus.focus();	
					return(false);
				}
				else
				{	return(true); }
			}
		}
	}
	
}

/*********************************************************************************
*	FUNCTION:		isDigit
*	PARAMETER:		Any Chracter
*	CALLS			isEmpty to check the NULL
*	RETURNS:		TRUE if the passed chracter is a digit, otherwise FALSE
**********************************************************************************/
function isDigit(theNum) {
	var theMask = '0123456789';
	
	if (isEmpty(theNum)) return(false);
	else if (theMask.indexOf(theNum) == -1) return(false);
	
	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)) 
	{	flag = false; }
	else { flag = true; }
	
	return(flag);
}

/*********************************************************************************
*	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 isStringEmpty (str,focus,errorMessage) {
	if ((str==null)||(str.length==0))
	{
		alert("Type "+errorMessage+" in "+errorMessage+" field");
		focus.focus();
		return true;
	}
	else return(false);
}

/*********************************************************************************
*	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:		theStr	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) 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:		showHelp
*	DESCRIPTION:	Opens a document in a new window.			
*	PARAMETERS:		docHelp 	Help document
*					winHeight	Height of new window
*					winWidth	Width of the new window.
*	CALLS:			NOTHING
*	RETURNS:		NOTHING
**********************************************************************************/
function showHelp (docHelp, winHeight, winWidth) {
	var winName="winHelp";
	var opt="toolbar=1,location=0,directories=0,status=0,menubar=0,scrollbars=1";
	opt+=",resizable=0,";
	opt+=("width="+winWidth+",height="+winHeight);
	newWin = window.open(docHelp,winName,opt);
	newWin.focus();
}

/*********************************************************************************
*	FUNCTION:		displayReport
*	DESCRIPTION:	Opens a document in a new window.			
*	PARAMETERS:		ReportName 	Report document
*	CALLS:			NOTHING
*	RETURNS:		NOTHING
**********************************************************************************/

function displayReport(ReportName)
{
	ReportWindow=window.open(ReportName, "Report", "toolbar=1,width=788,height=425,menubar=1,status=0,location=0,scrollbars=1,resizable=1,left=0,top=0,alwaysRaised=1");
	ReportWindow.focus();
}
/*********************************************************************************
*	FUNCTION:		closeWindow
*	DESCRIPTION:	Close Report Window
*	PARAMETERS:		Nothing
*	CALLS:			NOTHING
*	RETURNS:		NOTHING
**********************************************************************************/

function closeWindow()
{
	self.close();
}

/*********************************************************************************
*	EO_JSLib.js
**********************************************************************************/