var registerButtonDisabled = true;
var registerButtonID = 'listSelected';
var checkedList = new Array; // List of currently selected (checked) buttons

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;
}
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
  var i;
  var theButton;
  for (i = 0; i < checkedList.length; i++) {
    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 i;
  var radioButtons = document.schedule.elements;
  var theButton;
  for (i = 0; i < radioButtons.length; i++) {
    theButton = radioButtons[i];
    if (theButton.name == blockName) {
      theButton.disabled = disableFlag;
      if (theButton.checked && disableFlag) {
        removeFromCheckedList(theButton);
      }
    }
  }
}
function handleRadioButtons(button) {
  var am_pm;
  var checked;
  var disableBlock;
  var duration = button.id.substr(button.id.length - 1, 1);
  var i;
  var name = button.name;
  var theButton;

  var wasChecked = removeFromCheckedList(button);
  if (!wasChecked) {
    addToCheckedList(button);
  }
  for (i = 0; i < checkedList.length; i++) { // Remove any other button in this named group from checkedList
    theButton = checkedList[i];
    if (theButton.name == button.name && theButton.id != button.id) {
      removeFromCheckedList(theButton);
    }
  }
  checked = button.checked;
  if (duration == 'L') { // Enable/Disable later block, based on whether this button was checked or unchecked
    am_pm = name.substr(0, 1);
    disableBlock = am_pm + '2';
    changeBlockDisable(disableBlock, checked);
  }
}
function resetAllButtons() {
  var i;
  var radioButtons = document.schedule.elements;
  checkedList = new Array;
  for (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 i;
  var j;
  var radioButtons;
  var theRB;
  var theButton = document.getElementById(registerButtonID);
  var theValue;
  if (theButton != null) {
    registerButtonDisabled = !theButton.disabled;
  }
  // Now set the buttons to reflect the selectedElements
  radioButtons = document.schedule.elements;
  for (i = 0; i < radioButtons.length; i++) {
    theRB = radioButtons[i];
    for (j = 0; j < selectedElements.length; j++) {
      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;
  var error = '';
  var stripped;

  if (strng.length > 0) {
    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;
  }
}
