$.ajaxSetup({
  global: "false",
  type: "POST",
  timeout: 10000
});

function updateCart(data) {
  $.ajax({
    url: "/cart/getcart",
    dataType: "json",
    success: function(json) {
      if (json.size === 0) {
        $("#cartDetails").replaceWith("<span id='cartDetails'>Empty</span>");
      }
      else if (json.size === 1) {
        $("#cartDetails").replaceWith("<span id='cartDetails'>" + json.size + " item - " + json.basic_display_total + "</span>");
      }
      else {
        $("#cartDetails").replaceWith("<span id='cartDetails'>" + json.size + " items - " + json.basic_display_total + "</span>");
      }
    } 
  });
}

function addToCart(data, id) {
        $.ajax({
          url: "/cart/ownscollection",
          data: "media="+data,
          dataType: "json",
          success: function(returnval) {
            if (returnval == false) {
              addCollection(data, id); 
            }
            else {
              var answer = confirm("You have bought this item before. Are you sure you wish to add it to your cart?");
              if (answer) {
                addCollection(data, id); 
              }
            }
          }, 
          error: function(returnval) {
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addalbum/"+data+"' class='addRemoveCollectionButton collection button add "+data+"' title=\"Add To Cart\" onclick=\"addToCart("+data+",'"+id+"'); return false;\">Add To Cart</a></span>");
            raiseMessage('Error', 'An error occured while adding'); 
          } 
        });
        return false;
      } 

function addCollection(data, id) {
        $("#"+id).replaceWith("<span id='" + id + "' class='addRemoveButtonContainer processing'>Adding...</span>");
        $.ajax({
          url: "/cart/addalbum",
          data: "media="+data,
          success: function(returnval) {
            // Replace the button with a remove
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/removealbum/"+data+"' id='addWidgetaddRemoveButton"+data+"' class='addRemoveCollectionButton collection button remove "+data+"' title=\"Remove From Cart\" onclick=\"removeFromCart("+data+", '"+id+"'); return false;\">Remove From Cart</a></span>");
            // Also replace any other add to cart buttons on the page for the same item
            $(".addRemoveCollectionButton."+data).each(function() {
              $(this).replaceWith("<a href='/cart/removealbum/"+data+"' id='addWidgetaddRemoveButton"+data+"' class='addRemoveCollectionButton collection button remove "+data+"' title=\"Remove From Cart\" onclick=\"removeFromCart("+data+", '"+$(this).parent().attr('id')+"'); return false;\">Remove From Cart</a>");
            });
            // If there are any individual track buttons for tracks in this album then remove them
            $(".addRemoveTrackButton").each(function() {
              $(this).replaceWith("<span class='addRemoveTrackButton track button inCart' id='"+$(this).attr("id")+"'>In Cart</span>");
            });
            updateCart();
          }, 
          error: function(returnval) {
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addalbum/"+data+"' class='addRemoveCollectionButton collection button add "+data+"' title=\"Add To Cart\" onclick=\"addToCart("+data+",'"+id+"'); return false;\">Add To Cart</a></span>");
            raiseMessage('Error', 'An error occured while adding'); 
          } 
        });
        return false;
      } 

function removeFromCart(data, id) {
        $("#"+id).replaceWith("<span id='"+id+"' class='addRemoveButtonContainer processing'>Removing...</span>");
        $.ajax({
          url: "/cart/removealbum",
          data: "media="+data,
          success: function(returnval) { 
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addalbum/"+data+"' id='addWidgetaddRemoveButton"+data+"' class='addRemoveCollectionButton collection button add "+data+"' title=\"Add To Cart\" onclick=\"addToCart("+data+", '"+id+"'); return false;\">Add To Cart</a></span>");
            $(".addRemoveCollectionButton."+data).each(function() {
              $(this).replaceWith("<a href='/cart/addalbum/"+data+"' id='addRemoveButton"+data+"' class='addRemoveCollectionButton collection button add "+data+"' title=\"Add To Cart\" onclick=\"addToCart("+data+", '"+$(this).parent().attr('id')+"'); return false;\">Add To Cart</a>");
            });
            $(".addRemoveTrackButton").each(function() {
              var track = $(this).attr("id").replace("addRemoveTrackButton","");
              track = track.replace("addWidget", "");
              $(this).replaceWith("<a class='addRemoveTrackButton track button add' id='"+$(this).attr("id")+"' href='/cart/addtrack/"+track+"' title=\"Add To Cart\" onclick=\"addTrackToCart("+track+", '"+$(this).attr('id')+"'); return false;\">Add To Cart</a>");
            });
            updateCart();
          },
          error: function(x, e) { 
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/removealbum/"+data+"' class='addRemoveCollectionButton collection button remove "+data+"' title=\"Remove From Cart\" onclick=\"removeFromCart("+data+",'"+id+"'); return false;\">Remove From Cart</a></span>");
            raiseMessage('Error', 'An error occured while removing the release'); 
          } 
        });
        return false;
      } 

function addTrackToCart(data, id) {
        $.ajax({
          url: "/cart/ownstrack",
          dataType: "json",
          data: "media="+data,
          success: function(returnval) {
            if (returnval === false) { 
              addTrack(data, id); 
            }
            else {
              var answer = confirm("You have bought this item before. Are you sure you wish to add it to your cart?");
              if (answer) {
                addTrack(data, id); 
              }
            }
          }, 
          error: function(returnval) {
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addtrack/"+data+"' id='addWidgetaddRemoveTrackButton"+data+"' title=\"Add To Cart\" class='addRemoveTrackButton track button add "+data+"' onclick=\"addTrackToCart("+data+", '"+id+"'); return false;\">Add To Cart</a></span>");
            $.jGrowl("An error occurred while the track to your cart. Please try again.<br />If you continue to recieve this error please <a href=\"/info/contact\">contact us</a>", { header: 'Error', theme: 'error', sticky: true});
          } 
        });
        return false;
}


function addTrack(data, id) {
        $("#"+id).replaceWith("<span id='" + id + "'><span class='addRemoveButtonContainer track button processing'>Adding...</span></span>");
        $.ajax({
          url: "/cart/addtrack",
          data: "media="+data,
          success: function(returnval) { 
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/removetrack/"+data+"' id='addWidgetaddRemoveTrackButton"+data+"' title=\"Remove From Cart\" class='addRemoveTrackButton track button remove "+data+"' onclick=\"removeTrackFromCart("+data+", '"+id+"'); return false;\">Remove From Cart</a></span>");
            updateCart();
          }, 
          error: function(x,e) { 
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addtrack/"+data+"' id='addWidgetaddRemoveTrackButton"+data+"' title=\"Add To Cart\" class='addRemoveTrackButton track button add "+data+"' onclick=\"addTrackToCart("+data+", '"+id+"'); return false;\">Add To Cart</a></span>");
            $.jGrowl("An error occurred while the track to your cart. Please try again.<br />If you continue to recieve this error please <a href=\"/info/contact\">contact us</a>", { header: 'Error', theme: 'error', sticky: true});
          } 
        });
        return false;
      } 

function removeTrackFromCart(data, id) {
        $("#"+id).replaceWith("<span id='"+id+"' class='addRemoveButtonContainer processing'>Removing...</span>");
        $.ajax({
          url: "/cart/removetrack",
          data: "media="+data,
          success: function(returnval) { 
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/addtrack/"+data+"' id='addWidgetaddRemoveTrackButton"+data+"' title=\"Add To Cart\" class='addRemoveTrackButton track button add "+data+"' onclick=\"addTrackToCart("+data+", '"+id+"'); return false;\">Add To Cart</a></span>");
            updateCart();
          },
          error: function(returnval) { 
            $.jGrowl("An error occurred while removing the track from your cart. Please try again.<br />If you continue to recieve this error please <a href=\"/info/contact\">contact us</a>", { header: 'Error', theme: 'error', sticky: true});
            $("#"+id).replaceWith("<span id='"+id+"'><a href='/cart/removetrack/"+data+"' id='addWidgetaddRemoveTrackButton"+data+"' title=\"Remove From Cart\" class='addRemoveTrackButton track button remove "+data+"' onclick=\"removeTrackFromCart("+data+", '"+id+"'); return false;\">Remove From Cart</a></span>");
          } 
        });
        return false;
      } 
