// 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 fccheck(nform,nname,nquestionno)
{
	//alert(nname);
  var nchecked = 0;
  //var nquestionno = nname.substring(nname.length-1);
  //alert("qno: " + nquestionno);
  var nerrmsg = "Please answer Question " + nquestionno;
  var nlen = eval("document."+nform+"."+nname+".length");
  //alert("nlen: " + nlen);
  if(nlen == 1)
  {
    if(eval("document."+nform+"."+nname+".checked"))
    {
      nchecked =  parseInt(nchecked) + 1;
    }
  }
  else if (nlen > 1)
  {
    for(var i=0; i<nlen; i++)
    {
      if(eval("document."+nform+"."+nname+"["+i+"].checked"))
      {
        nchecked =  parseInt(nchecked) + 1;
      }
    }
  }
  //alert("nchecked: " + nchecked);
  if(nchecked == 0)
  {
    alert(nerrmsg);
	if(nlen == 1)
	{
		eval("document."+nform+"."+nname+".focus()");
	}
	else
	{
		eval("document."+nform+"."+nname+"[0].focus()");
	}
    return false;
  }
  else
  {
    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;
}