        function stripNonNumericCharsForString( stringToStrip ) {
		var resultStr = ""
		if (stringToStrip + "" == "undefined" || stringToStrip == null){
			return null;
		}
		stringToStrip += ""
		for (var i=0; i < stringToStrip.length; i++) {
		   	if ( (stringToStrip.charAt(i) >= "0") && (stringToStrip.charAt(i) <= "9") ){
     				resultStr = resultStr + stringToStrip.charAt(i)
			}
		}
		return resultStr
	}

        // Process year values below 2000
	function fourDigitYear( yearParm ) {
		if ( yearParm < 2000 ) { yearParm = yearParm + 1900 }
		return yearParm
	}

        // take out left padding on a string
	function trimLeft( str, strToTrimOffParm ) {
		// Default to SPACE to trim off
		if ( strToTrimOffParm == null ) { 
			var strToTrimOff = " "
		} else {
			var strToTrimOff = strToTrimOffParm
		}
		var resultStr = ""
		var i = len = 0
		// Return immediately if an invalid value was passed in
		if (str+"" == "undefined" || str == null)	
			return null
		// Make sure the argument is a string
		str += ""
		if (str.length == 0) 
			resultStr = ""
		else {	
  			// Loop through string starting at the beginning as long as there
  			// are "strToTrimOff" strings.
			//	  	len = str.length - 1;
			len = str.length
  			while ((i <= len) && (str.charAt(i) == strToTrimOff))
				i++
		   	// When the loop is done, we're sitting at the first non-"strToTrimOff" char,
 			// so return that char plus the remaining chars of the string.
  			resultStr = str.substring(i, len)
  		}
  		return resultStr
	} // end TrimLeft

	function validateDate( DMYStringParm ) {

              
		var defaultErrorMessage = "Please enter a date in format DD/MM/YYYY \n\n e.g. 25/12/2002"
		var internalMessagesToBeUsed = true
		var messagesToBeIssued       = true
		 
	
		var DMYString = DMYStringParm + "/" // Ignore everything after the third slash!
		var startIX   = 0
		dateElement   = new Array(0,0,0)
	
		            
            for ( var i=0; i<3; i++ ) {
			delimiterIX = 	DMYString.indexOf( "/" , startIX )
			dateElement[i] = DMYString.substring( startIX , delimiterIX )
			if ( stripNonNumericCharsForString( dateElement[i] ) != dateElement[i] ) {
				if ( messagesToBeIssued ) { 
					if ( internalMessagesToBeUsed ) { 
						alert("You've entered characters in the wrong format or used characters other than digits (0-9) and '/'.\n\n" + defaultErrorMessage )
					} 
				}
				return ""
			}
			startIX = delimiterIX + 1
		}
	

		// Formats such as 4/4/2002 are invalid
		if (DMYString.indexOf( "/" , 0 ) != 2) {
		   alert("You've entered characters in the wrong format or used characters other than digits (0-9) and '/'.\n\n" + defaultErrorMessage )
		   return ""
		}

		if (DMYString.indexOf( "/" , 3 ) != 5) {
		   alert("You've entered characters in the wrong format or used characters other than digits (0-9) and '/'.\n\n" + defaultErrorMessage )
		   return ""
		}

		// DATE
		var dayComponent = trimLeft( dateElement[0] , "0" )
		if ( dayComponent == "" ) { 
			dayComponent = 0
		} else {
			dayComponent = eval( dayComponent )
		}
	
		// MONTH
		var monthComponent = trimLeft( dateElement[1] , "0" )
		if ( monthComponent == "" ) { 
			monthComponent =  -1
		} else {
			monthComponent = eval( monthComponent )
		}
		monthComponent = monthComponent - 1 	// month 0=Jan, 11=Dec
		if ( monthComponent < 0 || monthComponent > 11 ) { 
			if ( messagesToBeIssued ) { 
				if ( internalMessagesToBeUsed ) { 
					alert("You have entered an invalid value for month.\n\n" + defaultErrorMessage )
				} 
			}
			return ""
		}

		// YEAR
		if ( dateElement[2]== "" ) {
			if ( messagesToBeIssued ) { 
				if ( internalMessagesToBeUsed ) { 
					alert("You have not entered a year.\n\n" + defaultErrorMessage )
				} 
			}
			return ""
		}
		var yearComponent = trimLeft( "0" + dateElement[2] , "0"  )
		if ( yearComponent == "" ) {
			yearComponent = 2000
		} else {
			yearComponent = eval( yearComponent )
		}

		if ( yearComponent >= 2001 && yearComponent < 2010 ) { 
      		//nop
		}else { 
			alert("The year you have entered is invalid.\n\n" + defaultErrorMessage )
					return ""
		}

	
		var validJavascriptDate = new Date( yearComponent , monthComponent , dayComponent )
	
		if ( dayComponent   != validJavascriptDate.getDate() || 
		     monthComponent != validJavascriptDate.getMonth() || 
		     yearComponent  != fourDigitYear( validJavascriptDate.getYear() ) ) {
			// The date in is not the date out!
			if ( messagesToBeIssued ) { 
				if ( internalMessagesToBeUsed ) {
					alert( "The day you entered is not valid for the month.\n\n" + defaultErrorMessage )
				} else {
					alert( msgRequiredParm )
				}
			}
				return ""
		}
	
		return validJavascriptDate
	}

