var PartnerSearch = {};


PartnerSearch.ISVs = ['App Server/middleware', 'App Lifecycle Management', 'Business Intelligence/analytics', 'Collaboration/Messaging', 'Consumer', 'Content Management', 'CRM', 'Database/data warehouse', 'Development tools', 'Engineering', 'ERP', 'Integration', 'Management/monitoring', 'Mechanical Turk', 'Provisioning', 'Security', 'Testing'];
PartnerSearch.SIs = [];

PartnerSearch.do_search = function() {
  // this should extract all the current state info,
  // and store the state in the url. 
  var type = $('input[name=type]:checked').val(); 
  var category = $("select[name='category'] option:selected").val();
  var region = $("select[name='region'] option:selected").val();
  
  location.search = "preview=true&type=" + type + "&category=" + category + "&region=" + region;
}

PartnerSearch.get_query_string = function() {
    var assoc = new Array();
    var queryString = unescape(location.search.substring(1));
    var keyValues = queryString.split('&');
    for (var i in keyValues) {
        var key = keyValues[i].split('=');
        assoc[key[0]] = key[1];
    }
    return assoc;
}

PartnerSearch.populate_select = function() {
  var selected_type = $('input[name=type]:checked').val(); 

  // check radio button to see what type I should show.
  var opts = selected_type == 'isv' ? PartnerSearch.ISVs : PartnerSearch.SIs;

  var select = $("select[name='category']");

  select.children().remove();
  var newOpt = $('<option value="all">Show All</option>');
  select.append(newOpt);

  for (var i = 0; i < opts.length; i++) {
    var value = opts[i].replace(/[\/'"\s]+/g, '-').toLowerCase();
    newOpt = $('<option value="' + value + '">' + opts[i] + '</option>');
    select.append(newOpt);
  }

  select.attr('disabled', null);  
  $("select[name='region']").attr('disabled', null);
};

PartnerSearch.show_search_results = function(params) { 
  var type = params['type'];
  var search_class = '.' + type;

  var category = params['category']
  if (category && category != 'all') {
    search_class += '.' + category;
  }

  var region = params['region']
  if (region && region != 'all') {
    search_class += '.' + region;
  }

  // only want to show the no-results message if a type (si|isv) has been specified
  // and there are no results.
  if (type && $(search_class).length == 0) {
    $('#no-results').show();
  } else {
    $(search_class).show();
    if ($('#featured_solution_providers ' + search_class).length > 0) {
      $('#featured_solution_providers').show();
    }
  }
};

PartnerSearch.set_form_state = function(params) {
  if (!params['type']) { 
    // on the first page load, default to show isv results.
    params['type'] = 'isv' 
  }

  // set the type
  $('#' + params['type']).attr('checked', true);

  // populate the dropdown
  PartnerSearch.populate_select();
  
  // select a category
  if (params['category']) {
    var sel = "select[name='category'] option[value='" + params['category'] + "']";
    $(sel).attr('selected', true);
  }

  // select a region
  if (params['region']) {
    sel = "select[name='region'] option[value='" + params['region'] + "']";
    $(sel).attr('selected', true);
  }
}

$(document).ready(function() {
  var params = PartnerSearch.get_query_string();
  PartnerSearch.set_form_state(params);
  PartnerSearch.show_search_results(params);
});
