// *************
// Clear Fields Function
// *************
 
function clearFields(form) {

  var formNum = form.elements.length // Number of form elements

  for (i = 0; i < formNum; i++) {
    var shortForm = form.elements[i] // Shortcut Reference for Form Elements
    if (shortForm.type == "text"){
      shortForm.value = "";
    } else if (shortForm.name == "county"){
    } else if (shortForm.type == "checkbox"){
      shortForm.checked = false;
    } else if (shortForm.type == "radio"){
      shortForm.checked = false;
    } else if (shortForm.type == "textarea"){ // Only Clears Textareas in MSIE
      shortForm.value = "";
    } else if (shortForm.type == "hidden"){
    } else if (shortForm.type == "password"){
    } else if (shortForm.type == "image"){
    } else if (shortForm.type == "button"){
    } else if (shortForm.type == "reset"){
    } else if (shortForm.type == "submit"){
    } else{
      shortForm.selectedIndex = false;
      shortForm.options[0].selected = true;
    }
  }
}

// *************
// PopUP Window Function
// *************

function newwin(url,w,h) {
  if((w==0) && (h==0)) {
    window.open(url,"_blank","height=" + self.outerHeight ,"width=" + self.outerWidth + ",resizable,scrollbars");
    window.alert("No Height and Width Received")
  } else {
    window.open(url,"_blank","height=" + h + ",width=" + w + ",resizable,scrollbars");
  }
}


// *************
// Change All Function
// *************
function changeAll(form, masterField) {
  var masterFieldValue = masterField.options[masterField.selectedIndex].value;
  var size = form.elements.length;
  for (var i = 0; i < size; i++) {
    if (form.elements[i].type == "select-one") {
      var selectBox = form.elements[i];
      var num = selectBox.options.length;
      for(var j = 0; j < num; j++) {
        if(selectBox.options[j].value == masterFieldValue) {
          selectBox.selectedIndex = j;
        }
      }
    }
  }
}

// *************
// AP Date Checker Functions
// *************

function checkDates(formvar) {
  var size = formvar.elements.length;
  for(var i = 0; i < size; i++) {
    if(formvar.elements[i].name.indexOf("Date") > -1 || formvar.elements[i].name.indexOf("date") > -1) {
      if(checkDate(formvar.elements[i].value) == -1) {
        alert("All dates must be valid and in MM/DD/YY format");
        return(false);
      }
    }
  }

  formvar.submit();
  return (true);
}

function checkDate(date) {
  if(date == "") {
    return(1);
  } else {
    var dateRegEx = /^\d{2}\/(\d{2})\/\d{2}$/;
    var execResults = dateRegEx.exec(date);
    // check if pattern matches and if date string will be a valid java/oracle date
    return ((execResults != null && (execResults[1] == new Date(date).getDate())) ? 1 : -1);
  }
}

function strictCheckDates(formvar) {
  var size = formvar.elements.length;
  for(var i = 0; i < size; i++) {
    if(formvar.elements[i].name.indexOf("Date") > -1 || formvar.elements[i].name.indexOf("date") > -1) {
      if (formvar.elements[i].value == "") {
        alert("Please enter dates into the required fields");
        return false;
      }
      if(checkDate(formvar.elements[i].value) == -1) {
        alert("All dates must be valid and in MM/DD/YY format");
        return(false);
      }
    }
  }

  formvar.submit();
  return (true);
}

// *************
// Submit Only Once Function
// *************

function submitOnce(formvar) {
  var size = formvar.elements.length;
  for(var i = 0; i < size; i++) {
    if(formvar.elements[i].type = "reset" || formvar.elements[i].type == "submit") {
       formvar.elements[i].disabled = true;
    }
  }
}


// *************
// Return true if user presses enter key
// *************
function enterCatcher(e) {
  if (e.keyCode == 13) {
    return true;
  } else {
    return false;
  }
}

// *************
// Calendar Date functions
// ************

function buildDays(form) {
  buildDays(form,form.month,form.day,form.year);
}

function buildDays(form, month, day, year) {
  var selectedMonth = form.month.options[form.month.selectedIndex].value;
  var selectedDay = form.day.selectedIndex + 1;
  var selectedYear = form.year.options[form.year.selectedIndex].value;

  var days = 31;

  if (selectedMonth == 2) {
    if (selectedYear % 4 == 0) {
      days = 29;
    } else {
      days = 28;
    }
  } else if (isThirtyDayMonth(selectedMonth)) {
    days = 30;
  } else {
    days = 31;
  }

  setDays(form,days,selectedDay);
}

function setDays(form, days, selectedDay) {
  form.day.length = 0;

  if (selectedDay > days) {
    selectedDay = days;
  }

  for (var i = 0;i < days;i++) {
    form.day.options[i] = new Option(i + 1);

    if (i == selectedDay) {
      form.day.options[i - 1].selected = true;
    } else if (i == (selectedDay - 1)) {
      form.day.options[i].selected = true;
    }
  }
}
function isThirtyDayMonth(selectedMonth) {
  var thirtydayMonths = new Array(4);
  thirtydayMonths[0] = 4;
  thirtydayMonths[1] = 6;
  thirtydayMonths[2] = 9;
  thirtydayMonths[3] = 11;

  for (var i = 0;i < 4;i++) {
    if (thirtydayMonths[i] == selectedMonth) {
      return true;
    }
  }
  return false;
}

// *************
// Check/Clear All
// ************
function checkAll(form) {
  var len = form.elements.length;
  for (var i = 0; i < len; i++) {
    var e = form.elements[i];
    if (e.type == "checkbox") {
      e.checked = true;
    }
  }
  return false;
}

function clearAll(form) {
  var len = form.elements.length;
  for (var i = 0; i < len; i++) {
    var e = form.elements[i];
    if (e.type == "checkbox") {
      e.checked = false;
    }
  }
  return false;
}

// ***********
// Email obfuscation
// ***********

function emailAddress(email) {
  var results = '';
  for (i = 0; i < email.length; i++) {
    var letter = email.charAt(i);
    if (letter == '@') {
      letter = '.';
    } else if (letter == '$') {
      letter = '@';
    }
    results += letter;
  }
  return(results);
}

function mailto(email) {
  var emailAddr = emailAddress(email);
  document.write('<a href="mailto:' + emailAddr + '">' + emailAddr + '</a>');
  return true;
}

// ***********
// Phone number validation
// ***********

function checkPhone(phoneNumber) {
  var phoneStr="";
  var size = phoneNumber.length;
  if (size > 0) {
    for (var i = 0; i < size; i++) {
      if (!isNaN(parseInt(phoneNumber.charAt(i)))) {
        phoneStr = phoneStr + phoneNumber.charAt(i);
      }
    }
    if (phoneStr.length == 10) {
      // phone number is OK
      return true;
    }
    else {
      alert("Phone number must have exactly ten digits.");
      return false;
    }
  }
  else {
    // if empty, then phone number is not part of search
    return true;
  }
}
