// JScript source code
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function daysInFebruary ( year )
{
    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;
}

function stripCharsInBag( s, bag )
{
	var i;
    var returnString = "";

    for ( i = 0; i < s.length; i++ )
    {   
        var c = s.charAt( i );
        if ( bag.indexOf( c ) == -1 ) 
			returnString += c;
    }
    return returnString;
}

function emailValidate( val ) 
{
	re = /[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]/;
	if ( !re.test( val ) ) 
		return false;
	else
		return true;
}

function intValidate( val )
{
	re = /[^\d]/;
	if ( re.test( val ) ) 
		return false;
	else
		return true;
}

function zipValidate( val )
{
	re = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
	if ( !re.test( val ) )
		return false;
	else
		return true;
}

function dateValidate( dtname, val )
{
	var daysInMonth = daysArray( 12 );
	var pos1 = val.indexOf( dtCh );
	var pos2 = val.indexOf( dtCh, pos1 + 1 );
	var strMonth = val.substring( 0, pos1 );
	var strDay = val.substring( pos1 + 1, pos2 );
	var strYear = val.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( "Invalid " + dtname + " format" );
		return false;
	}
	if ( strMonth.length < 1 || month < 1 || month > 12 )
	{
		alert( "Invalid " + dtname );
		return false;
	}
	if ( strDay.length < 1 || day < 1 || day > 31 || ( month == 2 && day > daysInFebruary( year ) ) || day > daysInMonth[ month ] )
	{
		alert( "Invalid " + dtname );
		return false;
	}
	if ( strYear.length != 4 || year == 0 || year < minYear || year > maxYear )
	{
		alert( "Invalid " + dtname );
		return false;
	}
	if ( val.indexOf( dtCh, pos2 + 1 )!= -1 || !intValidate( stripCharsInBag( val, dtCh ) ) )
	{
		alert( "Invalid " + dtname );
		return false;
	}
	
	return true;
}

function decimalValidate( val )
{
	var strChars = "0123456789.";
	var intChar;
	var isNum = true;

	for ( i = 0; i < val.length && isNum == true; i++ ) 
	{ 
		intChar = val.charAt( i );
		if ( strChars.indexOf( intChar ) == -1 )
			isNum = false;
	}
   	
   	return isNum;
}
