$.fn.updateSortLink = function() {
  var sortBy = $(this).attr('rel');
  var link = $(this).attr('id');
  if (sortBy == 'base_price' || sortBy == 'null' || sortBy == 'base_price_desc') {
      if (link == 'prix') {
          if ($(this).hasClass('up')) {
              $(this).removeClass('up').addClass('down');
          } else {
              $(this).removeClass('down').addClass('up');
          }
      } else {
          $(this).removeClass('up').removeClass('down');
      }
  } else if (sortBy == 'mark_value_asc' || sortBy == 'mark_value_desc') {
      if (link == 'note') {
          if ($(this).hasClass('up')) {
              $(this).removeClass('up').addClass('down');
          } else {
              $(this).removeClass('down').addClass('up');
          }
      } else {
          $(this).removeClass('up').removeClass('down');
      }
  } else if (sortBy == 'preferrence') {
      if (link == 'preferrence') {
          if (!$(this).hasClass('up')) {
              $(this).addClass('up');
          }
      } else {
          $(this).removeClass('up').removeClass('down');
      }
  }
}


$.fn.sortResults = function() {

  var link = $(this).attr('id');
  var sortBy = '';
  var url = $(this).attr('href');

  if (link == 'prix') {
    sortBy = "base_price";
    if ($(this).hasClass('up')) {
        sortBy += '_desc';
    }
    url += '&st=' + sortBy;
    $('#preferrence').attr('rev', sortBy);
  } else if (link == 'note') {
    sortBy = "mark_value";
    if (!$(this).hasClass('up')) {
        sortBy += '_desc';
    } else {
        sortBy += '_asc';
    }
    url += '&st=' + sortBy;
    $('#preferrence').attr('rev', sortBy);
  } else if (link == 'preferrence') {
    sortBy = "preferrence";
    var oldSortBy = $(this).attr('rev');
    if (oldSortBy && oldSortBy != 'null') {
      url += '&st=' + oldSortBy;
    }
    if ($.cookies.get("agency") != null) {
      url += "&agcCode=" + $.cookies.get("agency").split("&&&")[4].replace(/\+/g, " ").replace("null", "");
    }
  }

  $('#prix, #note, #preferrence').each(function(){
      $(this).attr('rel', sortBy);
      $(this).updateSortLink();
  });

  url += "&sort=" + sortBy;

  $(".rm-list")
    .html("<img src=\"/csvweb/images/ajax-loader-big.gif\" style=\"margin:50px\" alt=\"Chargement...\" title=\"Chargement...\" />")
    .load(url, function() {
      loadFavorites();
      var backurl = $.cookies.get("backurl");
      var st = /(st=[^&]+)/.test(url) ? /(st=[^&]+)/.exec(url)[1] : "st=base_price";
      backurl = /st=/.test(backurl) && st != null ? backurl.replace(/st=[^&]+/, st) : backurl + "&" + st;
      var sort = /(sort=[^&]+)/.exec(url)[1];
      backurl = /sort=/.test(backurl) && sort != null ? backurl.replace(/sort=[^&]+/, sort) : backurl + "&" + sort;
      $.cookies.set("backurl", backurl);
    });
}



/**
 * Open a popup
 **/
$.fn.popUpWindow = function(options) {

  options = $.extend({
    url: $(this).attr("href"),
    popH: 1000,
    popW: 1100,
    name: '_blank',
    winH: 1000,
    winW: 1100
  },options ||{});

  var w = options.winW, h = options.winH;
  var deltaH = 0;

  if (document.all || document.layers) {
     w = screen.availWidth;
     h = screen.availHeight;
     deltaH = - 40;
  }

  var leftPos = (w - options.popW)/2, topPos = (h - options.popH)/2;

  if (leftPos < 0) {
      leftPos = 0;
  }

  if (topPos < 0) {
      topPos = 0;
  }

  var winOptions = 'scrollbars=yes' + ', width=' + options.popW + ',left=' + leftPos + ', height=' + (options.popH + deltaH) + ',top=' + topPos;
  window.open(options.url, options.name, winOptions);
  $(this).trackClick();
}


$(function() {

  $("a.jqa_loadNexts").live("click", function() {
      $(this).text("Chargement...").addClass("waiting").click(function() { return false; });
      $.get($(this).attr("href"), function(data) {
        var trackingInfo = $(".load").data("trackingInfo");
        $(".load").replaceWith(data);
        loadFavorites();
        var backurl = $.cookies.get("backurl");
        var lin = "lin=" + $("div.rm-result").length;
        $.cookies.set("backurl", /lin=/.test(backurl) ? backurl.replace(/lin=[\d]+/, lin) : backurl + "&" + lin);
        if (trackingInfo && trackingInfo.callback != null) {
            trackingInfo.callback.apply();
        }
      });
      return false;
  });


  $('#prix, #note, #preferrence').each(function(){
      $(this).updateSortLink();
      $(this).click(function(){
          $(this).sortResults();
          $(this).trackClick()
          return false;
      })
  });


  $('a.jqaRefine').click(function(){
      var container = $('.rm-searchtext');
      $.scrollTo(container, 800);
      container.addClass("rm-affiner");
      loadSearchEngine(container.find("a.rm-affiner").attr("href"));
      $(this).trackClick();
      return false;
  });


  // Keyword Search box
  $('#dkw').labelValue("#333");


  $('.jqa_countryInfo').live("click", function() {
    var popW = 1150;
    var popH = 1000;
    if (document.all || document.layers) {
        popW = screen.availWidth - 100;
        popH = screen.availHeight;
    }
    $(this).popUpWindow({popH: popH, popW: popW, name: '_blank'});
    return false;
  });


  $('.emptyCountryInfo, .emptyWeatherInfo').click(function(){
    var message = 'Aucune information disponible.';
    if ($(this).hasClass('emptyCountryInfo')) {
        message = 'Les informations sur la destinnation ne sont pas disponibles.';
    } else if ($(this).hasClass('emptyWeatherInfo')) {
        message = 'Les informations climatiques ne sont pas disponibles.';
    }
    jAlert(message, 'Information');
    $(this).trackClick();
    return false;
  });

  $(".popupCmp").live("click", function(){$(this).popUpWindow({popW:1160}); return false;});
  $(".rm-engine-link").click(function(){$(".jqaRefine").click(); return false;});

  loadFavorites();

  if ($(".rm-header").length > 0) {
    $.scrollTo(".rm-header", 800);
  }

});

