var isContentChanged = false;

function contentChanged() {
  isContentChanged = true;
}

function saveChanges(element) {
  isContentChanged = false;
  Element.parentForm(element).submit()
}

function onExit() {
  if (isContentChanged)
    return "You will lose your unsaved changes."
}

function changeSelect(selectField, textContainer) {
  selectField = $(selectField);
  textContainer = $(textContainer);
  textField = textContainer.getElementsByTagName('input')[0];
  otherIndex = selectField.options.length - 1;

  // if select is 0 and text field is not empty, set select to other
  if (selectField.selectedIndex == 0 && textField.value != "")
    selectField.selectedIndex = otherIndex;
    
  // if select is other, show text field, otherwise, hide text field
  if (selectField.selectedIndex == otherIndex) {
    textContainer.show();
  } else {
    textContainer.hide();
  }
}

function changeCountry(element) {
  element = $(element);
  DroppedNodes.drop("register_state_field_us");
  DroppedNodes.drop("register_state_field_intl");
  if (element.value == "United States") {
    $("register_state_label_intl").hide();
    $("register_zip_label_intl").hide();
    $("register_state_label_us").show();
    $("register_zip_label_us").show();
    DroppedNodes.restore("register_state_field_us");
  } else {
    $("register_state_label_us").hide();
    $("register_zip_label_us").hide();
    $("register_state_label_intl").show();
    $("register_zip_label_intl").show();
    DroppedNodes.restore("register_state_field_intl");
  }
}

function changeGraduationYear(element) {
  element = $(element);
  var experience = $('candidate_years_experience_id');
  var today = new Date();
  if (element.selectedIndex > 0 && experience.selectedIndex == 0) {
    var years = Math.min(today.getFullYear() - element.value, 15);
    if (today.getMonth() < 5) years -= 1;
    years = Math.max(years, 0);
    experience.selectedIndex = years + 1;
  }
  if (parseInt(element.value) > today.getFullYear()) {
    var popup = $('law_student_popup');
    if (popup) Effect.PopUp.safe(popup);
  }
}

function redirectToCareerCenter() {
  var form = $('registration_form');
  form.action = 'http://careers.abovethelaw.com/home/register_student'
  form.submit();
}

function changeLawFirm(element)
{
  var element = $(element);
  DroppedNodes.drop("register_employer_law", "years_experience");
  DroppedNodes.drop("register_employer_other", "years_experience");
  if($(element.options[element.selectedIndex]).text == "Other")
  {
     DroppedNodes.restore("register_employer_law");
     DroppedNodes.restore("register_employer_other");
  }
  else
  {
     DroppedNodes.restore("register_employer_law");
  }
}

function changeJobType(element) {
  var element = $(element);
  DroppedNodes.drop("register_employer_law", "years_experience");
  DroppedNodes.drop("register_employer_other", "years_experience");
  if ($(element.options[element.selectedIndex]).text == "Law Firm")
    DroppedNodes.restore("register_employer_law");
  else
    DroppedNodes.restore("register_employer_other");
}

function changePracticeGroup(element) {
  var block = $('practice_areas');
  var practice_group_id = $F(element);
  if (practice_group_id) {
    block.update("<img src='/images/ajax-loader.gif' alt='Loading...' />");
    new Ajax.Updater(block, '/register/update_practice_areas', { asynchronous: true, evalScripts: true,
      onFailure: function(request) { debug(request.responseText) },
      parameters: "practice_group_id=" + practice_group_id });
  } else {
    block.update('');
    
  }
}

var DroppedNodes = {
  nodes: {},
  drop: function(id, nextSibling) {
    element = $(id);
    if (element) {
      DroppedNodes.nodes[id] = {
        parent: element.parentNode,
        sibling: nextSibling == undefined ? null : $(nextSibling),
        element: Element.remove(id)
      };
    }
  },
  restore: function(id) {
    var node = DroppedNodes.nodes[id];
    if (node) {
      node.parent.insertBefore(node.element, node.sibling);
      DroppedNodes.nodes[id] = null;
    }
  }
};
