var whitespace = " \t\n\r";


function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}


function isWhitespace(s)
{
	var i;

	if (isEmpty(s)) return true;

	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	}

	return true;
}


function isLetter(c)
{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || (c==" "))
}

	
function isDigit(c)
{
	return ((c >= "0") && (c <= "9"))
}


function isValidEmailChar(s)
{
	var i;

	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);

		if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) )
		{
			return false;
		}
    	}
    	return true;
}

function isInteger(s)
{   
	var i;
	if (isEmpty(s)) return true;

	for (i=0; i<s.length; i++)
	{
		var c = s.charAt(i);
		if (!isDigit(c)) return false;
	}
	
	return true;
}


function isSignedInteger(s)
{
	if (isEmpty(s)) return true;

	var startPos = 0;
	
	if ((s.charAt(0) == "-") || (s.charAt(0) == "+"))
		startPos = 1;

	return isInteger(s.substring(startPos, s.length));
}


function isFloat(s)
{
	var i;
	var seenDecimalPoint = false;

	if (isEmpty(s)) return true;

	if (s == ".") return false;

	for (i=0; i<s.length; i++)
	{
        // Check that current character is number.
		var c = s.charAt(i);

		if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c)) return false;
	}

	return true;
}


function isDouble(s)
{
	var i;
	var seenDecimalPoint = false;

	if (isEmpty(s)) return true;

	if (s == ".") return false;

	for (i=0; i<s.length; i++)
	{
        // Check that current character is number.
		var c = s.charAt(i);

		if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c)) return false;
	}
	
	//var p = s.charAt(s.length - 2);
        //if (p != ".") return false;
        
        var iSep = s.indexOf(".");
	
	if(seenDecimalPoint){
		var sSlen = s.substring(iSep+1);
		if(sSlen.length >2 || sSlen.length < 1){
			return false;
		}
	}
	return true;	
}
function isDoubleByPrecise(s,precise)
{
	var i;
	var seenDecimalPoint = false;
	if (isEmpty(s)) return true;

	if (s == ".") return false;

	for (i=0; i<s.length; i++)
	{
        // Check that current character is number.
		var c = s.charAt(i);
		if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c)) return false;
	}
	
	//var p = s.charAt(s.length - 2);
        //if (p != ".") return false;
        
        var iSep = s.indexOf(".");
	if(seenDecimalPoint){
		var sSlen = s.substring(iSep+1);
		if(sSlen.length >precise || sSlen.length < 1){
			return false;
		}
	}
	return true;	
}
function isSignedFloat(s)
{
	if (isEmpty(s)) return true;

    	var startPos = 0;

	if ((s.charAt(0) == "-") || (s.charAt(0) == "+"))
		startPos = 1;
	
	return isFloat(s.substring(startPos, s.length));
}


function isDate(inStr)
{
	if (inStr=='' || inStr==null)
		return true;
		
	var dateString = '0123456789./-';
	var slash=0, dot=0, dash=0;
	var oneChar='', delimeter='';
	for (var i=0; i<inStr.length; i++)
	{
		oneChar = inStr.charAt(i);
		if (oneChar == '.')
			dot ++;
		else if (oneChar == '/')
			slash ++;
		else if (oneChar == '-')
			dash ++;
			
		if (dateString.indexOf(oneChar) == -1)
			return false;
	}
	/*
	if (inStr.length != 10)
		return false;
		*/
	if(inStr.length > 10 && inStr.length <8){
		return false;
	}
		
	if ((!dot==2 && !slash==2 && !dash==2) || (dot==2 && (slash>0 || dash>0)) || (slash==2 && (dot>0 || dash>0)) || (dash==2 && (slash>0 || dot>0)))
		return false;
	
	if (dot > 0)
		delimeter = '.';
	else if (slash > 0)
		delimeter = '/';
	else
		delimeter = '-';



	var del1st = inStr.indexOf(delimeter);
	var del2nd = inStr.lastIndexOf(delimeter);
	var year = parseInt(inStr.substring(0, del1st), 10);
	var month = parseInt(inStr.substring(del1st+1, del2nd), 10);
	var day = parseInt(inStr.substring(del2nd+1), 10);
	
	var tempDate = new Date(year, month-1, day, 0, 0, 0, 0);
	
	if (tempDate.getFullYear() != year || tempDate.getMonth() != month-1 || tempDate.getDate() != day)
		return false;
	
	return true;
}

function verifyDate(dateValue){

	
	if (dateValue=='' || dateValue==null)
		return true;
		
	var dateString = '0123456789./-';
	var slash=0, dot=0, dash=0;
	var oneChar='', delimeter='';
	
	for (var i=0; i<dateValue.length; i++)
	{
		oneChar = dateValue.charAt(i);
		if (oneChar == '.')
			dot ++;
		else if (oneChar == '/')
			slash ++;
		else if (oneChar == '-')
			dash ++;
			
		if (dateString.indexOf(oneChar) == -1)
			return false;
	}
	
	if(dateValue.length > 10 && dateValue.length <8){
		return false;
	}
	
	if ((!dot==2 && !slash==2 && !dash==2) || (dot==2 && (slash>0 || dash>0)) || (slash==2 && (dot>0 || dash>0)) || (dash==2 && (slash>0 || dot>0)))
	   return false;
	
	if (dot > 0)
		delimeter = '.';
	else if (slash > 0)
		delimeter = '/';
	else
		delimeter = '-';
		
	var iLastSep = dateValue.lastIndexOf(delimeter);
	if(iLastSep == -1){
		return false;
	}
	
	var iFirstSep = dateValue.indexOf(delimeter);
	
	if(iFirstSep == -1){
		return false;
	}
	
	if (iLastSep == iFirstSep){
		return false;
	}
	
	var yearValue = dateValue.substring(0,iFirstSep);
	if(yearValue.length != 4){
		return false;
	}
	
	var monthValue = dateValue.substring(iFirstSep+1,iLastSep);
	if(monthValue >12 || monthValue < 1){
		return false;
	}
	
	var dayValue = dateValue.substring(iLastSep+1);
        if(dayValue >31 || dayValue < 1){
		return false;
	}
	
	if(yearValue >9999 || yearValue < 0){
		return false;	
	}
	
	var tempDate = new Date(yearValue, monthValue-1, dayValue, 0, 0, 0, 0);
	
	if (tempDate.getFullYear() != yearValue || tempDate.getMonth() != monthValue-1 || tempDate.getDate() != dayValue){
		return false;
	}
	return true
}
function getDateYear(dateValue){

	
	if (dateValue=='' || dateValue==null)
		return false;
		
	var dateString = '0123456789./-';
	var slash=0, dot=0, dash=0;
	var oneChar='', delimeter='';
	
	for (var i=0; i<dateValue.length; i++)
	{
		oneChar = dateValue.charAt(i);
		if (oneChar == '.')
			dot ++;
		else if (oneChar == '/')
			slash ++;
		else if (oneChar == '-')
			dash ++;
			
		if (dateString.indexOf(oneChar) == -1)
			return false;
	}
	
	if(dateValue.length > 10 && dateValue.length <8){
		return false;
	}
	
	if ((!dot==2 && !slash==2 && !dash==2) || (dot==2 && (slash>0 || dash>0)) || (slash==2 && (dot>0 || dash>0)) || (dash==2 && (slash>0 || dot>0)))
	   return false;
	
	if (dot > 0)
		delimeter = '.';
	else if (slash > 0)
		delimeter = '/';
	else
		delimeter = '-';
		
	var iLastSep = dateValue.lastIndexOf(delimeter);
	if(iLastSep == -1){
		return false;
	}
	
	var iFirstSep = dateValue.indexOf(delimeter);
	
	if(iFirstSep == -1){
		return false;
	}
	
	if (iLastSep == iFirstSep){
		return false;
	}
	
	var yearValue = dateValue.substring(0,iFirstSep);
	if(yearValue.length != 4){
		return false;
	}
	var monthValue = dateValue.substring(iFirstSep+1,iLastSep);
	if(monthValue >12 || monthValue < 1){
		return false;
	}
	var dayValue = dateValue.substring(iLastSep+1);
       	if(dayValue >31 || dayValue < 1){
		return false;
	}
	if(yearValue >9999 || yearValue < 0){
		return false;	
	}
	
	var tempDate = new Date(yearValue, monthValue-1, dayValue, 0, 0, 0, 0);
	
	if (tempDate.getFullYear() != yearValue || tempDate.getMonth() != monthValue-1 || tempDate.getDate() != dayValue){
		return false;
	}
	
	
	return yearValue;

}
function getDateMonth(dateValue){

	
	if (dateValue=='' || dateValue==null)
		return false;
		
	var dateString = '0123456789./-';
	var slash=0, dot=0, dash=0;
	var oneChar='', delimeter='';
	
	for (var i=0; i<dateValue.length; i++)
	{
		oneChar = dateValue.charAt(i);
		if (oneChar == '.')
			dot ++;
		else if (oneChar == '/')
			slash ++;
		else if (oneChar == '-')
			dash ++;
			
		if (dateString.indexOf(oneChar) == -1)
			return false;
	}
	
	if(dateValue.length > 10 && dateValue.length <8){
		return false;
	}
	
	if ((!dot==2 && !slash==2 && !dash==2) || (dot==2 && (slash>0 || dash>0)) || (slash==2 && (dot>0 || dash>0)) || (dash==2 && (slash>0 || dot>0)))
	   return false;
	
	if (dot > 0)
		delimeter = '.';
	else if (slash > 0)
		delimeter = '/';
	else
		delimeter = '-';
		
	var iLastSep = dateValue.lastIndexOf(delimeter);
	if(iLastSep == -1){
		return false;
	}
	
	var iFirstSep = dateValue.indexOf(delimeter);
	
	if(iFirstSep == -1){
		return false;
	}
	
	if (iLastSep == iFirstSep){
		return false;
	}
	
	var yearValue = dateValue.substring(0,iFirstSep);
	if(yearValue.length != 4){
		return false;
	}
	var monthValue = dateValue.substring(iFirstSep+1,iLastSep);
	if(monthValue >12 || monthValue < 1){
		return false;
	}
	var dayValue = dateValue.substring(iLastSep+1);
       	if(dayValue >31 || dayValue < 1){
		return false;
	}
	if(yearValue >9999 || yearValue < 0){
		return false;	
	}
	
	var tempDate = new Date(yearValue, monthValue-1, dayValue, 0, 0, 0, 0);
	
	if (tempDate.getFullYear() != yearValue || tempDate.getMonth() != monthValue-1 || tempDate.getDate() != dayValue){
		return false;
	}

	return monthValue;

}
function getDateDay(dateValue){

	
	if (dateValue=='' || dateValue==null)
		return false;
		
	var dateString = '0123456789./-';
	var slash=0, dot=0, dash=0;
	var oneChar='', delimeter='';
	
	for (var i=0; i<dateValue.length; i++)
	{
		oneChar = dateValue.charAt(i);
		if (oneChar == '.')
			dot ++;
		else if (oneChar == '/')
			slash ++;
		else if (oneChar == '-')
			dash ++;
			
		if (dateString.indexOf(oneChar) == -1)
			return false;
	}
	
	if(dateValue.length > 10 && dateValue.length <8){
		return false;
	}
	
	if ((!dot==2 && !slash==2 && !dash==2) || (dot==2 && (slash>0 || dash>0)) || (slash==2 && (dot>0 || dash>0)) || (dash==2 && (slash>0 || dot>0)))
	   return false;
	
	if (dot > 0)
		delimeter = '.';
	else if (slash > 0)
		delimeter = '/';
	else
		delimeter = '-';
		
	var iLastSep = dateValue.lastIndexOf(delimeter);
	if(iLastSep == -1){
		return false;
	}
	
	var iFirstSep = dateValue.indexOf(delimeter);
	
	if(iFirstSep == -1){
		return false;
	}
	
	if (iLastSep == iFirstSep){
		return false;
	}
	
	var yearValue = dateValue.substring(0,iFirstSep);
	if(yearValue.length != 4){
		return false;
	}
	var monthValue = dateValue.substring(iFirstSep+1,iLastSep);
	if(monthValue >12 || monthValue < 1){
		return false;
	}
	var dayValue = dateValue.substring(iLastSep+1);
       	if(dayValue >31 || dayValue < 1){
		return false;
	}
	if(yearValue >9999 || yearValue < 0){
		return false;	
	}
	
	var tempDate = new Date(yearValue, monthValue-1, dayValue, 0, 0, 0, 0);
	
	if (tempDate.getFullYear() != yearValue || tempDate.getMonth() != monthValue-1 || tempDate.getDate() != dayValue){
		return false;
	}

	return dayValue;

}
function isEmail(s)
{
	if (isEmpty(s))
		return true;

    	if (isWhitespace(s)) return false;
    	if (!isValidEmailChar(s)) return false;

    	atOffset = s.lastIndexOf('@');

    	if ( atOffset < 1 )
        	return false;
    	else
    	{
 		dotOffset = s.indexOf('.', atOffset);

		if ( dotOffset < atOffset + 2 || dotOffset > s.length - 2 )
		{
			return false;
		}
	}
	return true;
}


function normalizeDate(inStr)
{
	if (inStr == "" || inStr == null)
		return "";
		
	var tempVal = inStr;
	var tempChar = "";
	var resultStr ="";
	
	for (var i=0; i<tempVal.length; i++)
	{
		tempChar = tempVal.charAt(i);
		if (tempChar ==  '/' || tempChar == '-')
			resultStr += '.';
		else
			resultStr += tempChar;
	}
	
	return resultStr;
}


function dayDiff(inDate1, inDate2)
{
	var inDate1Year = inDate1.substring(0, 4);
	var inDate1Month = inDate1.substring(5, 7);
	var inDate1Day = inDate1.substring(8, 10);
	var inDate2Year = inDate2.substring(0, 4);
	var inDate2Month = inDate2.substring(5, 7);
	var inDate2Day = inDate2.substring(8, 10);
	var date1 = new Date(inDate1Year, inDate1Month-1, inDate1Day, 0, 0, 0, 0);
	var date2 = new Date(inDate2Year, inDate2Month-1, inDate2Day, 0, 0, 0, 0);
	var dayDiff = (Date.parse(date1) - Date.parse(date2)) / 86400000;
	return dayDiff;
}


function monthDiff(inDate1, inDate2)
{
	var inDate1Year = inDate1.substring(0, 4);
	var inDate1Month = inDate1.substring(5, 7);
	var inDate1Day = inDate1.substring(8, 10);
	var inDate2Year = inDate2.substring(0, 4);
	var inDate2Month = inDate2.substring(5, 7);
	var inDate2Day = inDate2.substring(8, 10);
	var monthDiff = (parseInt(inDate1Year, 10) * 12 + parseInt(inDate1Month, 10)) - (parseInt(inDate2Year, 10) * 12 + parseInt(inDate2Month, 10));
	return monthDiff;
}


function toFloat(inText)
{
	return (isNaN(parseFloat(inText), 10) ? 0 : parseFloat(inText, 10));
}


function toInt(inText)
{
	return (isNaN(parseInt(inText, 10)) ? 0 : parseInt(inText, 10));
}


function trim(inString)
{
	var outString;
	var pos = 0;
	while (pos < inString.length && inString.charAt(pos) == " ")
	{
		pos++;
	}
	
	outString = inString.substring(pos, inString.length);
	
	pos = outString.length-1;
	while (pos >= 0 && outString.charAt(pos) == " ")
	{
		pos--;
	}
	
	return outString.substring(0, pos+1);
}

function showMessage(message, user, date)
{
	top.bottomFrame.document.open();
	var sFooterPage=""+
		"<html>\n" +
		"<head>\n" +
		"<title>footer message</title>\n" +
		"<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n" +
		"<link rel='stylesheet' href='/erm/css/eFAMFooter.css'>\n" +
		"</head>\n" +
		"<body marginheight='0' marginwidth='0' topmargin='0' leftmargin='0'>\n" +
		"<table width='100%' border='0'>\n" +
		"    <tr>\n"+
		"        <td width='60%' class='messageText'>&nbsp;" + message + "</td>\n" +
		"        <td width='1%' class='normalText'>|</td>\n" +
		"        <td width='20%' class='normalText'>Staff ID: " + user + "</td>\n" +
		"        <td width='1%' class='normalText'>|</td>\n" +
		"        <td width='18%' class='normalText'>Date: " + date + "</td>\n" +
		"    </tr>\n" +
		"</table>\n"+
		"</body>\n"+
		"</html>";
	top.bottomFrame.document.write(sFooterPage);
	top.bottomFrame.document.close();
}

function leftTrimZero(str)
{
	var end = false;
	var ch;
	while(!end){
		if (str.length == 0) break;
		ch = str.charAt(0);
		if (ch == '0')	str = str.substring(1,str.length);
		else end = true;
	}
	return str;
}

function isCheckByPrecise(s,precise){

	if(precise==0) {
		if(!isInteger(s) && s.length < 9) return false;
	}else{
		if(!isDoubleByPrecise(s,precise) || s.length > 11) {
			return false;
		}
	}
	return true;
}







