var RE_EMAIL = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
var RE_DIGITS = /^\d*$/;
var RE_PHONE = /^\d{10}$/;
var RE_ALPHANUMERIC = /^\w*$/;
var RE_KEYBOARD_CHARS = /[\x00\x08\x0D]/;
var RE_CA_POSTAL_CODE = /([A-Za-z]\d[A-Za-z]\d[A-Za-z]\d)/;
var USER_AGENT = navigator.userAgent.toLowerCase(); 
var IS_IE = USER_AGENT.indexOf("msie") > -1; 
var IS_NS6 = USER_AGENT.indexOf("netscape6") > -1; 
var IS_NS4 = !IS_IE && !IS_NS6  && parseFloat(navigator.appVersion) < 5; 


function IsNumeric(sText) {
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;
 
    for (i = 0; i < sText.length && IsNumber == true; i++) { 
       Char = sText.charAt(i); 
       if (ValidChars.indexOf(Char) == -1) {
           IsNumber = false;
       }
    }
    return IsNumber;
}


function isEmpty( str ) {   
    return ( ( str == null ) || ( str.length == 0 ) );
}

function isPhone( str ) {   
    if( ( str == null ) || ( str.length != 10 ) )
	{
		return false;
	}
	return RE_PHONE.test( trim( str ) );
}

function lTrim( str ) {
    return str.replace( /^\s+/, '' );
}

function rTrim( str ) {
    return str.replace( /\s+$/, '' );
}

function trim( str ) {
    return rTrim( lTrim( str ) );
}

function isValidEmailAddress( str ) {
    return RE_EMAIL.test( trim( str ) );
}

function isValidCAPostalCode( str ) {
    return RE_CA_POSTAL_CODE.test( trim( str ) );
}

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 validateDate( month, day, year ) {

    if ( parseInt( month ) == '0' || parseInt( month ) == 'NaN' || parseInt( month ) > '12' ) 
    	{ 
    	return false;
    } 
    if ( parseInt( day ) == '0' || parseInt( day ) == 'NaN' || parseInt( day ) > '31') 
    	{ 
    	return false;
    } 
    if ( parseInt( year ) == '0' || parseInt( year ) == 'NaN' ) 
        	{ 
        	return false;
    } 
	
    today = new Date();
    if( today.getFullYear() <= year )
    {
        return false;
    }
    var monthVal = parseInt( month );
    var monthMax = new Array( 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
    var top = monthMax[monthVal];
    if( monthVal == 2 ) {
        top = daysInFebruary( parseInt( year ) );
    }
    if ( !inRange( day, 1, top ) ) {
        //alert( "Enter a day between 1 and " + top + "." );
        return false;
    }
    return true;
}

// JavaScript sees numbers with leading zeros as octal values, so strip zeros
function stripZeros( inputStr ) {
    var result = inputStr;
    while ( result.substring( 0, 1 ) == "0" ) {
        result = result.substring( 1, result.length );
    }
    return result;
}

function inRange( inputStr, lo, hi ) {
    var num = parseInt( inputStr );
    if ( num < lo || num > hi ) {
        return false;
    }
    return true;
}

function isLegalAge( fullDate ) {
    return ( Math.round( ( parseInt( getTodayDateString() ) - parseInt( fullDate ) )/10000 ) >= LEGAL_AGE );
}

function getDateString( year, month, date ){
    var dateStr = "";
    dateStr += year;
    if ( month <= 9 ) dateStr += "0";
    dateStr += month;
    if ( date < 10 ) dateStr += "0";
    dateStr += date;
    return dateStr;
}

function getTodayDateString() {
   today = new Date();
   return getDateString( today.getFullYear(), today.getMonth() + 1, today.getDate() );
}
 
function maskKeyPressForDigits(objEvent) {
    var iKeyCode, strKey;  
    
    if (IS_IE) {
        iKeyCode = objEvent.keyCode;
    } else {
        iKeyCode = objEvent.which;
    }
    
    strKey = String.fromCharCode(iKeyCode);

    if (!RE_DIGITS.test(strKey) && !RE_KEYBOARD_CHARS.test(strKey)) {
        return false;
    }
}

function maskKeyPressForAlphaNumeric(objEvent) {
    var iKeyCode, strKey;  
    
    if (IS_IE) {
        iKeyCode = objEvent.keyCode;
    } else {
        iKeyCode = objEvent.which;
    }
    
    strKey = String.fromCharCode(iKeyCode);

    if (!RE_ALPHANUMERIC.test(strKey) && !RE_KEYBOARD_CHARS.test(strKey)) {
        return false;
    }
}

function doNothing()
{
}

function printHello()
{
	alert( "Hello" );
}

// To clear up the default values on click
function clearDefault(txt) {
  if ( txt.value == 'dd' || txt.value == 'mm' || txt.value == 'yyyy' )  txt.value = "";
}
