// Checks for the following valid date formats:
// DD/MM/YY   DD/MM/YYYY   DD-MM-YY   DD-MM-YYYY
// Also separates date into month, day, and year variables
function isValidDate(dateStr, resultDate) {
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

  // To require a 4 digit year entry, use this line instead:
  // var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

  var matchArray = dateStr.match(datePat); // is the format ok?
  if (matchArray == null) {
    alert("Date is not in a valid format.")
    return false;
  }
  
  day = matchArray[1];
  month = matchArray[3]; // parse date into variables
  year = matchArray[4];
  
  if (day < 1 || day > 31) {
    alert("Day must be between 1 and 31.");
    return false;
  }

  if (month < 1 || month > 12) { // check month range
    alert("Month must be between 1 and 12.");
    return false;
  }
  
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert("Month "+month+" doesn't have 31 days!")
    return false
  }
  if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day==29 && !isleap)) {
      alert("February " + year + " doesn't have " + day + " days!");
      return false;
     }
  }

  // set MM/DD/YYYY format to resultDate
  resultDate.value = month + "/" + day + "/" + year
  return true;
}

function isEmpty(data)
{
  var i;

  for (i=0; i < data.length; i++) {
    if (data.charAt(i) != ' ') {
      return false;
    }
  }
  return true;
}
	
function isInteger(data)
{
  var numStr = "0123456789"
  var currChar
  var i

  if (isEmpty(data)) {
    return false;
  }

  for (i=0; i < data.length; i++) {
    currChar = data.charAt(i)
    if (numStr.indexOf(currChar) == -1) {
      // current char is not valid digit
      return false;
    }
  }
  return true;
}

function isFloat(data)
{
  var numStr = "0123456789"
  var currChar
  var decpt = 0
  var i

  if (isEmpty(data)) {
    return false;
  }

  for (i=0; i < data.length; i++) {
    currChar = data.charAt(i)
    if (numStr.indexOf(currChar) == -1) {
      if ((currChar == '.') && (decpt == 0)) {
        decpt++
      } else {
        // more than 1 decimal point found or
        // non valid char
        return false;
      }
    }
  }
  return true;
}

function isEmail(email)
{
  var posOfAt = email.indexOf("@")
  var lastPosOfAt = email.lastIndexOf("@")
  var lastPosOfDot = email.lastIndexOf(".")
  var currChar

  if (isEmpty(email) || email.length < 5 || posOfAt != lastPosOfAt ||
      (posOfAt < 1) || (email.indexOf(" ") != -1) || 
      (lastPosOfDot <= posOfAt) || (lastPosOfDot == email.length - 1))  {
    return false;
  }
  return true;
}

function CheckDate(dd,mm,yy)
{	
	var Result = 0 ;
	var Leap = 0 ;
	Result = yy / 4 ;
	var Result = "" + Result ;
	for (var i=0 ; i < Result.length ; i++)
	{
		thisChar = Result.substring(i, i+1) ;
		if (thisChar == "." )
			Leap = 1 ;
	}
	if ( mm == "Feb")
		if (dd > 29)
		{
			alert("Feburary do not have more then 29 days.") ;
			return (false) ;
		}
	if ( mm == "Feb" || mm == "Apr" || mm == "Jun" || mm == "Sep" || mm == "Nov")
		if (dd > 30 )
		{
			alert("There are no 31 days in this month.") ;
			return (false) ;
		}
	if (Leap == 1)
		if (mm == "Feb")
			if (dd == 29)
			{
				alert("This year is not a leap year . ");
				return (false) ;
			}
}

