jQueryFactory(document).ready(function ($) {
  // Toggle search form
  $("#lovefactory-toggle-form").click(function () {
    $("#lovefactory-search-form").slideToggle("fast");
    $(this).toggleClass("lovefactory-bullet-down");
    var status = $(this).hasClass("lovefactory-bullet-down");

    $.cookie('lovefactory_show_search_form', status ? 0 : 1);
    $(this).find("span").html(status ? txt_show : txt_hide);

    return false;
  });

  // Go to form
  $("#lovefactory-goto-form").live('click', function () {
    var targetOffset = $("#lovefactory-form").offset().top;
    $("html,body").animate({ scrollTop: targetOffset }, "fast");

    return false;
  });

  // Pagination update function
  function update(response)
  {
    var data     = $(response);
    var children = data.children();

    $('div.pagination').html($(children[1]).html());
    $('#lovefactory-results-header').html($(children[0]).html());

    data.find('div[id^="lf-profile-"]').each(function () {
      var id = $(this).attr('id').replace('lf-profile-', '');
      var i  = parseInt(id) + 2;

      $('#lf-profile-' + id).html($(children[i]).html());
    });

    $(".lovefactory-ajax-action").ajaxAction();

    $('#lf-loading-bar').hide();
  }

  // No caching for ajax calls
  $.ajaxSetup({ cache: false });

  // Sort by
  $("#sort_by").livequery('change', function (event) {
    event.preventDefault();

    var sort_by = $(this).val();
    var type    = $('#type').val();

    $('#lf-loading-bar').show();

    $.get(
      root + 'index.php?option=com_lovefactory&controller=search&task=changesort',
      { sort_by: sort_by, type: type },
      function (response) {
        update(response);
    });
  });

  // Sort order
  $("#lovefactory-change-sort-order").live('click', function (event) {
    event.preventDefault();

    var sort_order = $(this).hasClass("lovefactory-bullet-down") ? 1 : 0;
    var type       = $('#type').val();

    $('#lf-loading-bar').show();

    $.get(
      root + 'index.php?option=com_lovefactory&controller=search&task=changesort',
      { sort_order: sort_order, type: type },
      function (response) {
        update(response);
    });
  });

  // Reset button
  $(".lovefactory-application-form-delete").click(function () {
    $("#lovefactory-search-form input").each(function () {
      switch ($(this).attr("type"))
      {
        case "text":
          $(this).val("");
        break;

        case "checkbox":
        case "radio":
          $(this).attr("checked", "");
        break;
      }
    });

    $("#lovefactory-search-form select").each(function () {
      $(this).val(-1);
    });

    $("#lovefactory-search-form select=[id$='ending'] option:last").attr("selected", "selected");
    $("#lovefactory-search-form select=[id$='starting'] option:first").attr("selected", "selected");

    $("#lovefactory-search-form textarea").each(function () {
      $(this).val('');
    });

    return false;
  });

  // Pagination
  $(".pagination a").live("click", function (event) {
    event.preventDefault();
    var link = $(this).attr("href");

    $('#lf-loading-bar').show();

    // Scroll to top
    if ($(this).parents('div.pagination').hasClass('pag-2')) {
      var targetOffset = $("#lovefactory-search-results").offset().top;
      $("html,body").animate({ scrollTop: targetOffset }, "normal");
    }

    $.get(link, function (response) {
      update(response);
    });
  });

  // Extra action: quick message
  $('.lovefactory-quick-message').live('click', function (event) {
    event.preventDefault();

    var id = $(this).parents('fieldset:first').attr('id').replace('profile-', '');
    var href = $(this).attr('href')

    $.fancybox({
      'href': href,
      'modal': true,
      onComplete: function () {
        $('#fancybox-wrap').find('textarea').focus();
      }
    });
  });

  // Extra action: quick message close button
  $('.lovefactory-quick-message-cancel').live('click', function (event) {
    event.preventDefault();

    $.fancybox.close();
  });

  // Extra action: quick message close button
  $('.lovefactory-quick-message-send').live('click', function (event) {
    event.preventDefault();

    $.fancybox.showActivity();

    $.get(root + 'index.php', function () {
      $('#lovefactory-quick-message').html('Message was sent!');
      $.fancybox.hideActivity();
      $.fancybox.resize();
    })
  });

  $(".lovefactory-ajax-action").ajaxAction();
});
