$(function() {
  var dealerid = $('#qsForm input[name="dealerid"]').val() != undefined?$('#qsForm input[name="dealerid"]').val():'';  
  var dealergroupid = $('#qsForm input[name="dealerGroupID"]').val() != undefined?$('#qsForm input[name="dealerGroupID"]').val():'';  
  var condition = '';
  var division = '';
  var category = '';
  var make = '';
  var model = '';

  $('#qsForm select[name="division"]').change(function (){
    division = $(this).val();
    fnRetrieveCategories(dealerid,dealergroupid,division,category,condition);
    fnRetrieveMakes(dealerid,dealergroupid,division, make, condition, category);
    fnRetrieveModels(dealerid,dealergroupid,division,make,model,condition,category);
  });

  /*
  $('#qsForm input[name="division"]').click(function (){
    division = $(this).val();
    fnRetrieveCategories(dealerid, division, category, condition);
    fnRetrieveMakes(dealerid, division, make, condition, category);
    fnRetrieveModels(dealerid,division,make,model,condition,category);
  });
  */
  
  $('#qsForm input[name="condition"]').click(function (){
    condition = $(this).val();
    $('#hCondition').val(condition);
    fnRetrieveCategories(dealerid,dealergroupid, division, category, condition);
    fnRetrieveMakes(dealerid,dealergroupid, division, make, condition, category);
    fnRetrieveModels(dealerid,dealergroupid,division,make,model,condition,category);
  });

  $('#qsForm select[name="category"]').change(function (){
    category = $(this).val();
    $('#hCategory').val(category);
    fnRetrieveMakes(dealerid,dealergroupid,division, make, condition, category);
    fnRetrieveModels(dealerid,dealergroupid,division,make,model,condition,category);
  });

  $('#qsForm select[name="make"]').change(function (){
    make = $(this).val();
    $('#hMake').val(make);
    fnRetrieveModels(dealerid,dealergroupid,division,make,model,condition,category);
  });
  $('#qsForm select[name="model"]').change(function (){
    model = $(this).val();
    $('#hModel').val(model);
  });

  $('#qsForm select[name="division"]').change(function (){
    division = $(this).val();
    $('#hDivision').val(division);
  });


  var fnRetrieveCategories = function(dealerid, dealergroupid, division, category, condition) {
    $('#qsForm select[name="category"]').html('');
    $('#qsForm select[name="category"]').append('<option value="">Loading Classes</option>');
    if (dealerid != ''){
      tempSeller = '&dealerid=' + dealerid; 
    } else if (dealergroupid != '') {
      tempSeller = '&dealergroupid=' + dealergroupid;
    }
    $.ajax({
      async: true,
      type: 'GET',
      url: '/DealerBase/components/SearchHelpers.cfc?method=fnRetrieveClasses&sMethod=fnRetrieveClasses'+ tempSeller +'&division='+division+'&condition=' + condition,
      dataType: "json",
      success: function(data){
        var results = data.facet_counts.facet_pivot.PivotFields;
        var optionList = '<option value="">Select a Category</option>';         

        for (i = 0; i < results.length; i++){
          subClasses = results[i].pivot;
          Classes = results[i].value.split('|');
          ClassID = Classes[0];
          ClassName = Classes[1];
          Count = results[i].count;
          optionList += '<option class="highlight-Option" value="' + ClassID +'" '+ (ClassID == category?'selected="selected"':'') + '">' + ClassName + ' (' +Count+ ')</option>';
          for (j = 0; j < subClasses.length; j++){
            SCInfo = subClasses[j].value.split('|');
            SubClassID = SCInfo[0];
            SubClassName = SCInfo[1];
            Count = subClasses[j].count;
            optionList += '<option value="' + SubClassID +'" '+ (SubClassID == category?'selected="selected"':'') + '">&nbsp;&nbsp;&nbsp;' + SubClassName +' ('+Count+')</option>';
          }
          $('#qsForm select[name="category"]').html(optionList); 
        }
      }
    });
  };

  var fnRetrieveMakes = function(dealerid, dealergroupid, division, make, condition, category){
    var sCondition = '';
    switch(condition){
      case '0': sCondition = ' Used'; break;
      case '1': sCondition = ' New'; break;
    }
    if (dealerid != ''){
      tempSeller = '&dealerid=' + dealerid; 
    } else if (dealergroupid != '') {
      tempSeller = '&dealergroupid=' + dealergroupid;
    }
    
    $.ajax({
      type: 'GET',
      url: '/DealerBase/components/SearchHelpers.cfc?method=fnRetrieveMakes'+ tempSeller +'&Division=' + division + '&Condition=' + condition + '&Class=' + category,
      dataType: "json",
      success: function(data){
        var results = data.facet_counts.facet_fields.Make_exact;
        optionList = '<option value="">Select all'+ sCondition +' Manufacturers</option>';
        for (i = 0; i < results.length; i++) {
          if (i%2 == 0){optionList += '<option value="'+ results[i] +'" '+ (results[i] == make?'selected="selected"':'') +'>'+ results[i] +' ('+ results[i+1] +')</option>';}
        }
        $("#qsForm select[name='make']").html(optionList);
        optionList = '<option value="">Search all '+ sCondition +' Models</option>';
        $("#qsSearchFORM select#qsModel").html(optionList);
      }      
    });   
  };


  var fnRetrieveModels = function(dealerid, dealergroupid,division,make,model,condition,category){
    var sCondition = ' ';
    switch(condition){
      case '0': sCondition = ' Used '; break;
      case '1': sCondition = ' New '; break;
    }
    if (dealerid != ''){
      tempSeller = '&dealerid=' + dealerid; 
    } else if (dealergroupid != '') {
      tempSeller = '&dealergroupid=' + dealergroupid;
    }
      
    $.ajax({
      type: 'GET',
      url: '/DealerBase/components/SearchHelpers.cfc?method=fnRetrieveModels'+ tempSeller +'&Division=' + division + '&Make=' + make + '&Condition=' + condition + '&Class=' + category,
      dataType: "json",
      success: function(data){
        var results = data.facet_counts.facet_fields.Model_exact;
        optionList = '<option value="">Search all'+ sCondition + make +' Models</option>';
        for (i = 0; i < results.length; i++) {
          if (i%2 == 0){optionList += '<option value="'+ results[i] +'" '+ (results[i] == model?'selected="selected"':'') +'>'+ results[i] +' ('+ results[i+1] +')</option>';}
        }
        $("#qsForm select[name='model']").html(optionList);
      }
    });   
  };

  var initQSForm = function() {
    var make = $('#hMake').val();
    var model = $('#hModel').val();
    var division = $('#hDivision').val();
    var condition = $('#hCondition').val();
    var category = $('#hCategory').val();
    
    //alert('Make: ' + make +'\nModel: ' + model +'\nDivision: ' + division + '\nCondition: ' + condition + '\nCategory: ' + category);

    fnRetrieveCategories(dealerid,dealergroupid,division, category, condition)
    fnRetrieveMakes(dealerid,dealergroupid,division, make, condition, category);
    fnRetrieveModels(dealerid,dealergroupid,division,make,model,condition,category);
  };

  initQSForm();

});

