$(document).ready(function(){
  var query_string = {};
  var selectorism =   $("#product_selector li select"); 
  var product_type = $("#field_id_60");
  var converters = $("#field_id_61");
  var filters = $("#field_id_64"); 
  var num_of_outputs = $("#field_id_62, #field_id_64");
  var ajaxloader = $('<img src="/assets/images/ajax-loader.gif" alt="Loading" class="ajax-loader" />');
  var num_of_outputs_3 = $("#field_id_69, #field_id_63");

  //Sets action for Product Selector
  $("#submit_advanced_search").click(function(e){
    if($("#field_id_73").val() === "----"){
      e.preventDefault();
      alert("You have not picked a selector criteria"); 
    } else {
      $(".inactive").each(function(){
          $(this).find("select").remove(); 
      });
    }
  }); 

  selectorism.each(function(){
    $(this).find("option:eq(0)").attr("selected", "selected");
    $(this).change(function(){
        activate_other_forms($(this));
    });
  });

  function activate_other_forms(object){
    switcher = object.attr("id"); 
    valuer = object.val();
    switch(switcher){
      case 'field_id_73':
        if(valuer === "Converters"){
          query_builder(object);
          change_text();
          make_inactive([filters, num_of_outputs, num_of_outputs_3]);
          make_active([converters, product_type]); 
          update_field_values();
        } else if (valuer === "Filters") {
          query_builder(object);
          change_text();
          make_inactive([converters, num_of_outputs, num_of_outputs_3]);
          make_active([product_type, filters]);
          update_field_values();
        } else if (valuer === "----") {
          make_inactive([converters, filters, product_type, num_of_outputs, num_of_outputs_3]); 
          update_field_values();
		  change_text();
        }
        break;
      case 'field_id_61':
        if(valuer === "3"){
          make_active([num_of_outputs_3, num_of_outputs]);
          update_field_values();
        } else if (valuer === "2" || valuer === "1"){
          make_inactive([num_of_outputs_3]);
          make_active([num_of_outputs]);
          update_field_values();
        } else {
          make_inactive([num_of_outputs, num_of_outputs_3])
          update_field_values();
        }
        break;
      default: 
        update_field_values();
        break;
    }
  }
  
  function update_field_values(){
    var sender = [];
    counter = 0;
    selectorism.each(function(i){
      if ($(this).attr("id") !== "field_id_73" && $(this).val() !== "----" && !$(this).parent("li").hasClass("inactive")){
        query_builder($(this));
      } else if ($(this).parent("li").hasClass("inactive")) { 
        query_remover($(this));
        $(this).val("----");
      } else if ($(this).attr("id") !== "field_id_73" && $(this).val() === "----"  && (!$(this).parent().hasClass("inactive"))) {
        query_remover($(this));
        sender[counter] = $(this);
        counter += 1;
      }
    });
    $(sender).each(function(i){
      $(ajaxloader).insertBefore($(this));
      query_string['column'] = $(this).attr("id");
      send_query($(this));
    });
  }
  
  //Handles the text switch for the power field
  function change_text(){
    selector= $("#field_id_64").siblings("label");
    switcher= $("#field_id_73").val();
    switch(switcher) {
      case "Converters":
        selector.text("Primary Output Power");
        break;
      case "Filters":
        selector.text("Current Ratings");
        break;
      default:
        selector.text("Primary Output/Current Ratings");
        break;
    }
  }
  
  //adds the respective option query to the query string
  function query_builder(object) {
    if(object.val() !== "----"){
      query_string[object.attr('id')] = object.val();
    }
  }
  
  //removes the respective option from the query string
  function query_remover(object){
    if(query_string[object.attr('id')] !== ""){
        delete query_string[object.attr('id')];
      }
  }

  function make_active(elementals) {
    $(elementals).each(function(){
        $(this).parent("li").removeClass("inactive");
    });
  }
  // Makes a form function inactive
  function make_inactive(elementals){
    $(elementals).each(function(){
      $(this).parent("li").addClass("inactive");
    });
  }

  //Sends the ajax request to an EE template which generates the options
  //Then removes the old options
  function send_query(object){
    $.get("selector_query", query_string, function(data){
      object.find("option").each(function(){
          $(this).remove(); 
      })
      object.append(data);
     object.parent("li").find(".ajax-loader").remove(); 
    });
  }
});