
//==================================================================
//LTrim(string) : Returns a copy of a string without leading spaces.
//==================================================================
function LTrim(str)
/*
        PURPOSE: Remove leading blanks from our string.
        IN: str - the string we want to LTrim
*/
{
        var whitespace = new String(" \t\n\r");

        var s = new String(str);

        if (whitespace.indexOf(s.charAt(0)) != -1) {
            // We have a string with leading blank(s)...

            var j=0, i = s.length;

            // Iterate from the far left of string until we
            // don't have any more whitespace...
            while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
                j++;


            // Get the substring from the first non-whitespace
            // character to the end of the string...
            s = s.substring(j, i);
        }

        return s;
}

//==================================================================
//RTrim(string) : Returns a copy of a string without trailing spaces.
//==================================================================
function RTrim(str)
/*
        PURPOSE: Remove trailing blanks from our string.
        IN: str - the string we want to RTrim

*/
{
        // We don't want to trip JUST spaces, but also tabs,
        // line feeds, etc.  Add anything else you want to
        // "trim" here in Whitespace
        var whitespace = new String(" \t\n\r");

        var s = new String(str);

        if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
            // We have a string with trailing blank(s)...

            var i = s.length - 1;       // Get length of string

            // Iterate from the far right of string until we
            // don't have any more whitespace...
            while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                i--;


            // Get the substring from the front of the string to
            // where the last non-whitespace character is...
            s = s.substring(0, i+1);
        }

        return s;
}


//=============================================================
//Trim(string) : Returns a copy of a string without leading or trailing spaces
//=============================================================
        function Trim(str)
        /*
                PURPOSE: Remove trailing and leading blanks from our string.
                IN: str - the string we want to Trim

                RETVAL: A Trimmed string!
        */
        {
                return RTrim(LTrim(str));
        }



//=============================================================
//isInteger(s) : check if the passed in parameter is number or not
//=============================================================
function isInteger(s)
{
	s = Trim(s);
	var i;
    	for (i = 0; i < s.length; i++)
	{   
        	// Check that current character is number.
        	var c = s.charAt(i);
        	if (((c < "0") || (c > "9"))) return false;
    	}
    	// All characters are numbers.
   	 return true;
}

//=============================================================
//isInteger(s) : check if the passed in parameter is number or not
//=============================================================
function stripCharsInBag(s, bag)
{
	var i;
    	var returnString = "";
    	// Search through string's characters one by one.
    	// If character is not in bag, append to returnString.
    	for (i = 0; i < s.length; i++)
	{   
        	var c = s.charAt(i);
        	if (bag.indexOf(c) == -1) returnString += c;
    	}
    	return returnString;
}

//=============================================================
//daysInFebruary (year):
//=============================================================
function daysInFebruary (year)
{
	// February has 29 days in any year evenly divisible by four,
    	// EXCEPT for centurial years which are not also divisible by 400.
    	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) 
{
	for (var i = 1; i <= n; i++) 
	{
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
  	 } 
   	return this
}

//=============================================================
//isDate(dtStr):
//=============================================================
function isDate(dtStr)
{
	dtStr = Trim(dtStr);
	var dtCh= "/";
	var minYear=2000;
	var maxYear=9999;
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(0,pos1);
	var strDay=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) {strDay=strDay.substring(1)}
	if (strMonth.charAt(0)=="0" && strMonth.length>1) {strMonth=strMonth.substring(1)}
	for (var i = 1; i <= 3; i++) 
	{
		if (strYr.charAt(0)=="0" && strYr.length>1) {strYr=strYr.substring(1)}
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1)
	{
		alert("The date format should be : mm/dd/yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12)
	{
		alert("Please enter a valid month");
		return false;
	}
	if (strDay.length < 1 || day < 1 || day >31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
	{
		alert("Please enter a valid day");
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
	{
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
	{
		alert("Please enter a valid date");
		return false;
	}
	return true
}

//=============================================================
//isValidEmail(str):
//=============================================================
function isValidEmail(str) 
{
	str=Trim(str);
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	str = Trim(str);
	if (str.indexOf(at)==-1)
	{
	   alert("Invalid E-mail address");
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	{
	   alert("Invalid E-mail address");
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
	{
	    alert("Invalid E-mail address");
	    return false;
	}

	if (str.indexOf(at,(lat+1))!=-1)
	{
	    alert("Invalid E-mail address");
	    return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	{
	    alert("Invalid E-mail address");
	    return false;
	}

	if (str.indexOf(dot,(lat+2))==-1)
	{
	    alert("Invalid E-mail address");
	    return false;
	}
											
	if (str.indexOf(" ")!=-1)
	{
	    alert("Invalid E-mail address");
	    return false;
	 }

	 return true;				
}



//=============================================================
//isValidLength
//=============================================================
function isValidLength(string, min, max) 
{
	string = Trim(string);
	if (string.length < min || string.length > max) 
	{
		return false;
	}
	else return true;
}


//=============================================================
//isAlphanumeric(str):
//=============================================================
function isAlphanumeric(string, ignoreWhiteSpace) 
{
	string = Trim(string);
	if (string.search) 
	{
		if ((ignoreWhiteSpace && string.search(/[^\w\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\W/) != -1)) 
		{
			return false;
		}
	}
	return true;
}

//=============================================================
//isAlphabetic:
//=============================================================
function isAlphabetic(string, ignoreWhiteSpace) 
{
	string = Trim(string);
	if (string.search) 
	{
		if ((ignoreWhiteSpace && string.search(/[^a-zA-Z\s]/) != -1) || (!ignoreWhiteSpace && string.search(/[^a-zA-Z]/) != -1)) 
		{
			return false;
		}
	}
	return true;
}

//=============================================================
//isNumeric:
//=============================================================
function isNumeric(string, ignoreWhiteSpace) 
{
	string = Trim(string);
	if (string.search) 
	{
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) 
		{
			return false;
		}
	}
	return true;
}


//=============================================================
//isValidCityState:
//=============================================================
function isValidCityState(str)
{
	str = Trim(str);
	var szState;

	if (str.length !=0)
	{
		if(str.indexOf(",") == -1)
		{
			alert("Please put a \',\' in between of city and state if you want search by City and State.  Otherwise choose a different search option from the top.");
			return false;
   		}

		var arr_substrings = str.split(",");
		if(arr_substrings[0].length == 0)
		{
			alert("Please enter the city before \',\' and state if you want search by City and State.  Otherwise choose a different search option from the top.");
			return false;
							
		}

		if(arr_substrings[1].length ==0)
		{
			alert("Please enter State after city and \',\' if you want search by City and State.  Otherwise choose a different search option from the top.");
			return false;
		}
		szState = arr_substrings[1];
		szState = Trim(szState);
  		if(szState.length > 2)
		{
			alert("Please enter two characters state code if you want search by City and State.  Otherwise choose a different search option from the top.");
			return false;
		}
							
	}
	return true;
}

//=============================================================
//Opens airport code look up window
//=============================================================
function CodeLookup(szUrl)
{
	var CodeLookupWindow;
	CodeLookupWindow = window.open(szUrl,"","scrollbars=yes,width=550,height=550,resizable=yes");
	CodeLookupWindow.focus();
	return false;
}

