//****************************** START DATE VALIDATION ***********************
//Date format 0 MM/DD/YY 1: DD/MM/YY 2:YY/MM/DD
function ValidateDate( TheDate , DateFormat )
{
	var DateValue ;
	var DateValueString ;
	var DateValueRes ;

	var DateValDay ;
	var DateValMonth ;
	var DateValYear ;

	var DateStrDay ;
	var DateStrMonth ;
	var DateStrYear ;
	var ThisYear

	if ( TheDate == "" )
		return( "" ) ;

	DateValueString = ToSystemDate( TheDate , DateFormat ) ;

	DateStrMonth = GetDateString( DateValueString , 1 ) ;
	DateStrDay = GetDateString( DateValueString , 2 ) ;
	DateStrYear = GetDateString( DateValueString , 3 ) ;
	if ( DateStrYear == 0 )
	{
		ThisYear = new Date()
		DateStrYear = ThisYear.getFullYear();
		DateValueString = DateStrMonth + '/' + DateStrDay + '/' + DateStrYear ;
	}
	else
	{
		if ( DateStrYear.length <= 2 )
		{
			DateStrYear = ( DateStrYear < 40 ) ? ( Number( DateStrYear ) + 2000 ) : ( Number( DateStrYear ) + 1900 ) ;
			DateValueString = DateStrMonth + '/' + DateStrDay + '/' + DateStrYear ;
		}
	}

	DateValue = GetDateValue( DateValueString ) ;

	if ( DateValue == 0 )
		return( "" ) ;

	DateValueRes = new Date( DateValue ) ;

	DateValMonth = ( DateValueRes.getMonth() + 1 ) ;
	DateValDay = DateValueRes.getDate( ) ;
	DateValYear = DateValueRes.getFullYear( ) ;

	if ( ( DateStrYear.length == 3 ) || ( DateStrYear.length > 4 ) )
		return( "" ) ;

	if ( ( DateStrMonth != DateValMonth ) || ( DateStrDay != DateValDay ) )
		return( "" ) ;

	if ( DateStrYear != DateValYear )
	{
		if ( DateStrYear.length <= 2 )
		{
			DateStrYear = ( DateStrYear < 30 ) ? ( Number( DateStrYear ) + 2000 ) : ( Number( DateStrYear ) + 1900 ) ;
		}
		else
		{
			return( "" ) ;
		}
	}
	DateValue = DateStrMonth + '/' + DateStrDay + '/' + DateStrYear ;
	return( DateValue ) ;
}

function ToSystemDate( TheDate , DateFormat )
{
	var DateDay ;
	var DateMonth ;
	var DateYear ;

	switch( DateFormat )
	{
	case 0:
		DateMonth = GetDateString( TheDate , 1 ) ;
		DateDay = GetDateString( TheDate , 2 ) ;
		DateYear = GetDateString( TheDate , 3 ) ;
		break ;
	case 1:
		DateDay = GetDateString( TheDate , 1 ) ;
		DateMonth = GetDateString( TheDate , 2 ) ;
		DateYear = GetDateString( TheDate , 3 ) ;
		break ;
	case 2:
		DateYear = GetDateString( TheDate , 1 ) ;
		DateMonth = GetDateString( TheDate , 2 ) ;
		DateDay = GetDateString( TheDate , 3 ) ;
		break ;
	}
	return( DateMonth + '/' + DateDay + '/' + DateYear ) ;
}

function GetDateString( ValStr , Val )
{
	var ValString = "" ;
	var Idx = 0 ;

	if ( ( Val < 1 ) || ( Val > 3 ) )
	{
		return( "" ) ;
	}

	if ( Val >= 1 )
	{
		while ( ( ValStr.charAt( Idx ) != "/" ) && ( Idx <= ValStr.length ) )
		{
			ValString += ValStr.charAt( Idx ) ;
			Idx++ ;
		}
	}

	if ( Val >= 2 )
	{
		ValString = "" ;
		Idx++ ;
		while ( ( ValStr.charAt( Idx ) != "/" ) && ( Idx <= ValStr.length ) )
		{
			ValString += ValStr.charAt( Idx ) ;
			Idx++ ;
		}
	}

	if ( Val == 3 )
	{
		ValString = "" ;
		Idx++ ;
		while ( ( ValStr.charAt( Idx ) != "/" ) && ( Idx <= ValStr.length ) )
		{
			ValString += ValStr.charAt( Idx ) ;
			Idx++ ;
		}
	}

	return( ValString ) ;
}

function ToFormattedDate( TheDate , DateFormat )
{
	var DateDay ;
	var DateMonth ;
	var DateYear ;

	DateMonth = GetDateString( TheDate , 1 ) ;
	DateDay = GetDateString( TheDate , 2 ) ;
	DateYear = GetDateString( TheDate , 3 ) ;

	switch( DateFormat )
	{
	case 0:
		return( DateMonth + '/' + DateDay + '/' + DateYear ) ;
	case 1:
		return( DateDay + '/' + DateMonth + '/' + DateYear ) ;
	case 2:
		return( DateYear + '/' + DateMonth + '/' + DateDay ) ;
	}
}

function ValidateDateStartDue( TheDateStart , TheDateDue )
{
	var DateValue1 = Date.parse( TheDateStart ) ;
	var DateValue2 = Date.parse( TheDateDue ) ;

	if ( ( isNaN( DateValue1 ) ) || ( isNaN( DateValue2 ) ) )
		return( false ) ;

	if ( ( DateValue1 == 0 ) || ( DateValue2 == 0 ) )
		return( false ) ;

	if ( DateValue1 > DateValue2 )
		return( false ) ;

	return( true ) ;
}

function GetDateValue( TheDate )
{
	var DateValue = Date.parse( TheDate ) ;

	if ( isNaN( DateValue ) )
		return( 0 ) ;

	if ( DateValue == 0 )
		return( 0 ) ;

	return( DateValue ) ;
}

//****************************** END DATE VALIDATION ***********************

//****************************** START PHONE VALIDATION ***********************
// Phone Number Validation

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+/";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(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;
}

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++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

//****************************** END PHONE VALIDATION ***********************