//
var CampaignOffers_searchSelectorsBehaviour = function(e) {
  var social_network_id = $(this).text('...').parents('.social-network').attr('id').split('-').pop();
  if ($(this).hasClass('add'))
    SocialNetwork_add(social_network_id);
  else
    SocialNetwork_remove(social_network_id);

  e.preventDefault();
}

//
var CampaignOffers_searchSelectorAllBehaviour = function(e) {
  var selector = $(this);

  $('#search-dashboard #selected .content').html(SPINNER_MED);

  if (selector.hasClass('add')) {
    selector.text('- ALL').removeClass('add');

    $('.social-network').addClass('selected').find('.selector').text('Remove').removeClass('add');

    $.post('/campaign_offers/social_network_add_all', selector.attr('href').split('?')[1], function() {
      CampaignOffers_dashboardSelectedUpdate();
    });
  }
  else {
    selector.text('+ ALL').addClass('add');

    $('.social-network').removeClass('selected').find('.selector').text('Add').addClass('add');

    $.post('/campaign_offers/social_network_remove_all', {}, function() {
      CampaignOffers_dashboardSelectedUpdate();
    });
  }

  e.preventDefault();
}

//
var SocialNetwork_add = function(social_network_ids) {
  $('#search-dashboard #selected .content').html(SPINNER_MED);

  $.post('/campaign_offers/social_network_add', { 'social_network_ids[]' : social_network_ids }, function() {

    $.each($.isArray(social_network_ids) ? social_network_ids : [social_network_ids], function() {
      $('#social-network-'+this).addClass('selected').find('.selector').text('Remove').removeClass('add');
    });

    CampaignOffers_dashboardSelectedUpdate();
  });
}

//
var SocialNetwork_remove = function(social_network_ids) {
  $('#search-dashboard #selected .content').html(SPINNER_MED);

  $.post('/campaign_offers/social_network_remove', { 'social_network_ids[]' : social_network_ids }, function() {

    $.each($.isArray(social_network_ids) ? social_network_ids : [social_network_ids], function() {
      $('#social-network-'+this).removeClass('selected').find('.selector').text('Add').addClass('add');
    });

    CampaignOffers_dashboardSelectedUpdate();
  });
}

//
var CampaignOffers_search = function(url) {
  // $('#search-form input[type=submit]').addClass('disabled').val('Filtering...').attr('disabled', true);

  // hmm... ackward
  SPINNER_MED.clone().css('float', 'left').insertAfter('.red-button.show-filters').css('position', 'absolute');

  // this check is required by Google Chrome
  var params = typeof(url.split('?')[1]) != 'undefined' ? url.split('?')[1] : '';
  $.ajax({
    type     : 'POST', // needs to be a POST as QUERY_STRING might be very long
    dataType : 'html',
    url      : url.split('?')[0],
    data     : params,
    success  : function(data) {
      $('#search-results').html(data);
      $('#search-results .pagination a, #search-results .sorter').click(CampaignOffers_searchLinksBehaviour);
      $('.details-opener').click(detailsOpenerBehaviour);
      $('#search-results .selector').click(CampaignOffers_searchSelectorsBehaviour);
      $('#search-results .toggle-all').click(CampaignOffers_searchSelectorAllBehaviour);
      $('a.remote').click(function(e) { e.preventDefault(); CampaignOffers_search($(this).attr('href')); $('a.clear-filters').show(); });
    },
    error    : function(a, b) {
      if (typeof console != 'undefined')
        console.log(a, b);
      else
        window.location.href = '/';
    },
    complete : function() {
      // $('#search-form input[type=submit]').removeClass('disabled').val('Filter').attr('disabled', false);
      $('.spinner').remove();
    }
  });
}

