var $locationType = null;
var $dateType = null;
var $programType = null;
var $state = null;
var $town = null;

function changeTown() {
  $.post("/includes/ajax/setLocation.jsp", { 'location': $("#advanced_town").val() });
}

function changeSimpleState() {
  $.ajax({
    async: false,
    type: "post",
    url: "/includes/ajax/setState.jsp",
    data: {
      'state_id': $("#simple_state").val()
    }
  });
  window.location.reload();
}

function changeState() {
  $.post("/includes/ajax/setState.jsp", { 'state_id': $state.val() });
  $.getJSON("/includes/ajax/getCampAreas.jsp", { state: $state.val() }, function(data) {
    if(data.success) {
      $town.children().remove();
      $town.append("<option value=''>All Locations</option>");
      if(data.camp_areas.length > 0) {
        for(var i=0; i < data.camp_areas.length; i++) {
          $town.append("<option value='" + data.camp_areas[i].id + "'>" + data.camp_areas[i].name + "</option>");
        }
      }
      $(".location_town").hide().show(); // ie fix for select positioning
    }
    else {
      alert(data.error);
    }
  });
}

function changeProgramType() {
  var type = $programType.val();
  $(".programs").hide();
  var $subPrograms = $(".programs_" + type);
  $subPrograms.show();
  if($subPrograms.find("input[checked]").size() == 0) {
    $subPrograms.find("input[type=radio]:first").attr("checked","checked");
  }
}

function setupGlobalElements() {
  $locationType = $("#advanced_location_type");
  $dateType = $("#advanced_date_type");
  $programType = $("#advanced_program_type");
  $state = $("#advanced_state");
  $town = $("#advanced_town");
}


function showCorrectElements() {
  changeProgramType();
}

$(document).ready(function() {
  setupGlobalElements();
  showCorrectElements();
  $("#simple_search").submit(function() {
    if(!$("#simple_zip").val().match(/^\d{5}$/)) {
      alert("Please enter a 5 digit zip code.");
      return false;
    }
    return true;
  });
  $("#advanced_search").not(".program_page_search").submit(function() {
    if(!$("#use_location").attr("checked") && !$("#use_date").attr("checked") && !$("#use_program").attr("checked")) {
      alert("Please select at least one set of criteria to search.");
      return false;
    }
    return true;
  });
  $("#advanced_search.program_page_search").submit(function() {
    if($("#location_type_state").is(":checked") && !$("#advanced_state").val().match(/^\w{2}$/)) {
      alert("Please choose a state.");
      return false;
    }
    if($("#location_type_zip").is(":checked") && !$("#advanced_zip").val().match(/^\d{5}$/)) {
      alert("Please enter a 5 digit zip code.");
      return false;
    }
    return true;
  });
  $("#advanced_search input[type=checkbox]").click(function() {
    var $inputList = $(this).closest("li").children("ul");
    if($(this).attr("checked") == false) {
      $inputList.removeClass("visible");
      $(this).closest("li").hide().show();
    }
    else {
      $inputList.addClass("visible");
      $(this).closest("li").hide().show();
      if($inputList.find("input[type=radio]:selected").size() == 0) {
        $inputList.find("input[type=radio]:first").attr("checked", "checked");
      }
    }
  });
  $(".show_filter").click(function() {
    $("#advanced_search.program_page_search").toggle();
    return false;
  });
  $("#start_date, #end_date").datepicker({
      changeMonth: true,
      changeYear: true,
      minDate: '-1M',
      maxDate: '+1Y',
      showOn: 'button',
      buttonImage: '/images/datepicker/calendar.gif',
      buttonImageOnly: true,
      duration: 'fast'
    });
  $(".details_button").click(function() {
    var $sr = $(this).closest("tbody");
    var $details = $(this).closest("tbody").children(".details");
    if($sr.hasClass("open")) {
      $sr.removeClass("open");
      $details.hide();
      $(this).text("Details");
    }
    else {
      $sr.addClass("open");
      $details.show();
      $(this).text("Hide");
    }
    return false;
  });
  scrollTo($(".search_page .search_results"));
});