// Delay Plugin for jQuery
// - http://www.evanbot.com
// - 2008 Evan Byrne
jQuery.fn.delay = function(time,func){
  this.each(function(){
    setTimeout(func,time);
  });

  return this;
};
// End of Delay Plugin

$(document).ready(function() {
  // Load more tracks
  $("#more").click(function () {
    $.get("./", {ajax: "true", page: current_page+1}, function (data) {
      $("ol").replaceWith(data);
      current_page++;
      $("#page").text(current_page);
      up_bind(); // Bind handlers to new elements
    }); // end of ajax request
    return false;
  });

  // Load previous tracks
  $("#back").click(function () {
    if (current_page < 2) return false;
    $.get("./", {ajax: "true", page: current_page-1}, function (data) {
      $("ol").replaceWith(data);
      current_page--;
      $("#page").text(current_page);
      up_bind(); // Bind handlers to new elements
    }); // end of ajax request
    return false;
  });
  
  up_bind(); // Bind handlers to elements on page load
  
  // Binds upvoting function to "li .up"
  function up_bind() {
    $("li .up").click(function() {
      var up = $(this);
      var par = up.parent();
      var id = par.attr("id");
      $.ajax({
        type: "POST",
        url: "./",
        data: "like=" + id,
        success: function () { 
          // fade to green if vote has been taken
          up.animate({color:"#7bf042"}, 1500);
        },
        error: function () {
          // replace title with error msg if vote has been refused
          var title = par.find(".title");
          // create knew DOM element
          var warning = document.createElement("span");
          warning.className = "blocked";
          warning.appendChild(document.createTextNode("You already voted for this."));
          // put it in place of the title
          title.replaceWith(warning);
          // after 2,5 sec, put title back in place
          $(warning).delay(2500, function () {
            $(warning).replaceWith(title);
          }); // end of delayed fn
        } // end of error fn
      }); // end of ajax obj

      return false;
    });
  }
});

