var taggedUrls = {
  cancel: function(event) {
    event.preventDefault();
    event.stopPropagation();
    event.stopImmediatePropagation();
    return false;
  },
  removeTrf: function(event) {
    var a = $(event.target).closest("a");
    var trfIdt = a.data("TrfIdt");
    var attrs = {
      type: "hidden",
      name: "TaggedUrlsForm.TrfIdt",
      value: trfIdt
    };
    $("<input>").attr(attrs).appendTo(a.closest("form"));
    a.hide();
    return taggedUrls.cancel(event);
  },
  editTrf: function(event) {
    $(event.target).closest("form").find("a.taggedurls-trf").each(function() {
      var a = $(this);
      a.addClass("taggedurls-remove");
      a.text(a.text() + " [X]");
      a.click(taggedUrls.removeTrf);
    });
    var a = $(event.target).closest("a");
    a.text("Klaar");
    a.unbind();
    a.click(taggedUrls.submit);
    return taggedUrls.cancel(event);
  },
  submit: function(event) {
    $(event.target).closest("form").submit();
    return taggedUrls.cancel(event);
  },
  suggestTrf: function(event) {
    var suggest = $("#taggedurls-suggest");
    var trf = $(event.target).closest("input").val();
    if (!trf) {
      suggest.hide();
    }
    else {
      $.ajax({
        url: "/?xdl=/views/pagetypes/taggedurls/xdl/ajax&trf=" + encodeURIComponent(trf),
        method: "GET",
        dataType: "json",
        success: function(response) {
          if (response.length) {
            suggest.html("");
            for (var i = 0; i < response.length; i++) {
              if(response[i].Trf && response[i].Num) {
                $("<a href='javascript:void(0)'></a>")
                  .text(response[i].Trf + " (" + response[i].Num + ")")
                  .data({ trf: response[i].Trf })
                  .appendTo(suggest)
                  .click(taggedUrls.suggestClick);
              }
            }
            suggest.show();
          }
          else {
            suggest.hide();
          }
        },
        error: function(request, status, exception) {
          suggest.hide();
        }
      });
    }
  },
  suggestClick: function(event) {
    $("#TaggedUrlsForm_Trf").val($(event.target).closest("a").data("trf"));
    $("#TaggedUrlsForm_Trf").closest("form").submit();
    return taggedUrls.cancel(event);
  },
  yammerInit: function() {
    var a = $(this);
    a.attr("target", "_blank");
    var loc = $("form[name=taggedurls] input").filter(function() { return $(this).attr("name") == "TaggedUrlsForm.Url"; }).val();
    if (!loc || !loc.indexOf("iprox:")) {
      a.attr("href", a.attr("href") + encodeURIComponent(document.location));
    }
    else if (!loc.indexOf("wwwgids:")) {
      a.closest("p.yammer").hide();
    }
    else {
      a.attr("href", a.attr("href") + encodeURIComponent(loc));
    }
  }
};

$(function() {
  $("p.yammer a").each(taggedUrls.yammerInit);
  $("a.taggedurls-trf").attr("target", "_top");
  $("a.taggedurls-edit").click(taggedUrls.editTrf);
  $("#TaggedUrlsForm_Trf").keyup(taggedUrls.suggestTrf);
});
