//make sure the required fields are not empty
function isEmpty(requiredList) {
   for (var i=0; i <requiredList.length; i++) {
      if (eval(requiredList[i]+ ".value.length") ==0){
         alert(eval(requiredList[i]+ ".name") + " should not be empty!");
         eval(requiredList[i]+ ".focus()");
         return true;
      }
   }
   return false;
}

//validate phone number
function isValidPhone(elem) {
    var phone_number = elem.value;
    if (phone_number == "") {
       return true; //no need to validate
    }

    var phone_reg = /(^\(?\d{3}\)?(\s|-)*\d{3}(\s|-)*\d{4}$|^\s*$)/;
    if (phone_number.match(phone_reg)) {
      return true;
    } else {
        alert (elem.value + " is not a valid phone number");
        elem.focus();
        return false;
    }
}

//validate for integer
function isInteger(elem) {
   if(parseInt(elem.value, 10) != elem.value){
     alert("Please enter only digits for "+elem.name);
     elem.focus();
     return false;
   }
   return true;
}

//validate for email
function isValidEmail(elem) {
   var email = elem.value;
   var re = /(^[\w-]+(\.[\w-]+)*\@([\w-]+\.)+[a-zA-Z]{2,4}$|^\s*$)/;
   if (email.match(re)) {
      return true;
   }
   else {
      alert(email + " is not a valid email address! Please try again.");
      elem.focus();
     return false;
   }
}

//valid date format of mm/dd/yyyy
function isValidDate(elem) { 
    dateStr = elem.value
   if (dateStr == "") return true;

   //var datePat = /^(\d{4})(-)(\d{1,2})\2(\d{1,2})$/;
   var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;

   //check the format
   var matchArray = dateStr.match(datePat);
   if (matchArray == null) {
      alert(elem.value + " is not in a valid date format (mm/dd/yyyy).")
      return false;
   }
   /*var year  = matchArray[1];
   var month = matchArray[3];
   var day   = matchArray[4]; */
   var month  = matchArray[1];
   var day    = matchArray[3];
   var year   = matchArray[4];

  // check month
   if (month < 1 || month > 12) { 
      alert("Month must be between 1 and 12.");
      return false;
   }
  // check day
   if (day < 1 || day > 31) {
      alert("Day must be between 1 and 31.");
      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;
      }
   }
   return true;  // date is valid
}

//return the checked value in radio button
function getCheckedValue(elem) {
   for (var i=0; i<elem.length; i++) {
      if (elem[i].checked) {
         return elem[i].value;
      }
   }

   return "";
}
