
/*********************************************************************************
*	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 m = theStr.substring(0,the1st);
		var d = theStr.substring(the1st+1,the2nd);
		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)||(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:		isTime validates TIME in HH:MM format.
*	PARAMETERS:		theStr		AS String
*	CALLS:			isBetween, isInt
*	RETURNS:		TRUE if theStr is a valid date otherwise false.
**********************************************************************************/
function isTime (theStr) {
	var colonDex = theStr.indexOf(':');

	if ((colonDex<1) || (colonDex>2)) { return(false); }
	else {
		var hh = theStr.substring(0,colonDex);
		var ss = theStr.substring(colonDex+1, theStr.length);

		if ((hh.length<1) || (hh.length>2) || (!isInt(hh))) { return(false); }
		else if ((ss.length<1) || (ss.length>2) || (!isInt(ss))) { return(false); }
		else if ((!isBetween(hh,0,23)) || (!isBetween(ss,0,59))) { 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:		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:		isEuDate checks a valid date in British format
*	PARAMETERS:		theStr		AS String
*	CALLS:			isBetween, isInt
*	RETURNS:		TRUE if theStr is a valid date otherwise false.
**********************************************************************************/
function isEuDate (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 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) {
				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:		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, hite, wide, bars, resize) {
	var winNew="newWindow";
	var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
	opt+=("scrollbars="+bars+",");
	opt+=("resizable="+resize+",");
	opt+=("width="+wide+",");
	opt+=("height="+hite);
	winHandle=window.open(doc,winNew,opt);
	return;
}
/*********************************************************************************
*	EO_JSLib.js
**********************************************************************************/

