var registerButtonDisabled = true;
var registerButtonID = 'listSelected';

function switchNav(target_img, highlight) {
  var root_dir = "../images/nav/";
  target_src = document.getElementById(target_img);
  target_src.src = root_dir + target_img + highlight + ".png";
}
function changeAction(button, location) { // invoked from a submit button
  button.form.action = location;
  return true;
}
var checkedList = new Array; // List of currently selected (checked) buttons
function addToCheckedList(button) {
  checkedList.push(button);
  // Enable "Review My Schedule" button if present
  enableButton(registerButtonID, true);
}
function enableButton(buttonID, enable) {
  var theButton = document.getElementById(buttonID);
  if (theButton != null) {
    theButton.disabled = !enable;
  }
}
function removeFromCheckedList(button) { // returns TRUE if found in list
  for ( var i = 0; i < checkedList.length; i++) {
    var theButton = checkedList[i];
    if (button.id == theButton.id) {
      checkedList.splice(i, 1); // remove from checkedList
      button.checked = false;
      if (button.id.substr(button.id.length - 1, 1) == 'L') {
        changeBlockDisable(button.name.substr(0, 1) + '2', false);
      }
      // Disable "Review My Schedule" button if present and no classes selected
      if (checkedList.length == 0)
        enableButton(registerButtonID, registerButtonDisabled);
      return true;
    }
  }
  return false;
}
function changeBlockDisable(blockName, disableFlag) { // disableFlag = true to disable block
  var radioButtons = document.schedule.elements;
  for ( var i = 0; i < radioButtons.length; i++) {
    var theButton = radioButtons[i];
    if (theButton.name == blockName) {
      theButton.disabled = disableFlag;
      if (theButton.checked && disableFlag) {
        removeFromCheckedList(theButton);
      }
    }
  }
}
function handleRadioButtons(button) {
  var radioButtons = document.schedule.elements;
  var name = button.name;
  var duration = button.id.substr(button.id.length - 1, 1);
  var entryCheckState = button.checked;

  var wasChecked = removeFromCheckedList(button);
  if (!wasChecked) {
    addToCheckedList(button);
  }
  for ( var i = 0; i < checkedList.length; i++) { // Remove any other button in this named group from checkedList
    var theButton = checkedList[i];
    if (theButton.name == button.name && theButton.id != button.id) {
      removeFromCheckedList(theButton);
    }
  }
  var checked = button.checked;
  if (duration == 'L') { // Enable/Disable later block, based on whether this button was checked or unchecked
    var am_pm = name.substr(0, 1);
    var disableBlock = am_pm + '2';
    changeBlockDisable(disableBlock, checked);
  }
}
function resetAllButtons() {
  checkedList = new Array;
  var radioButtons = document.schedule.elements;
  for ( var i = 0; i < radioButtons.length; i++) {
    radioButtons[i].checked = false;
    radioButtons[i].disabled = false;
  }
}
function activateSelectedClasses(selectedElements) {
  // Get state of registerButton => reflects state from first day classes: enabled = 1 or more first day classes
  var theButton = document.getElementById(registerButtonID);
  if (theButton != null) {
    registerButtonDisabled = !theButton.disabled;
  }
  // Now set the buttons to reflect the selectedElements
  var radioButtons = document.schedule.elements;
  for ( var i = 0; i < radioButtons.length; i++) {
    var theRB = radioButtons[i];
    for ( var j = 0; j < selectedElements.length; j++) {
      var theValue = theRB.value;
      theValue = theValue.replace(/L$/, ''); // Long classes have an L appended to value
      if (theValue == selectedElements[j]) {
        theRB.click();
        break;
      }
    }
  }
}
// phone number - strip out delimiters and check for 10 digits
function isPhone(field) {
  var strng = field.value;

  if (strng.length > 0) {
    var error = '';
    var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); // strip out acceptable non-numeric characters
    if (isNaN(parseInt(stripped))) {
      error = "The phone number contains illegal characters.";
    }
    if (!(stripped.length == 10)) {
      error = "The phone number is the wrong length. Make sure you included an area code.\n";
    }
    if (error != '') {
      alert(error);
      return false;
    } else {
      field.value = stripped.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
      return true;
    }
  } else {
    return true;
  }
}