// Base URL for ajax request
var base = $('base').attr('href') + (location.href.match !== null ? 'index.php/' : null);

// Get parameters for AJAX post from link - ID of link is item_{content_id}_{variant_id}
function getLinkParams(ele) {
    var content_id = $(ele).attr('id').split('_')[1];
    var var_id     = $(ele).attr('id').split('_')[2];
    var div        = $(ele).parents('div.viewbox');
    return { content_id : content_id, var_id : var_id, div : div };
}

function renderTemplates(data) {
  // Clear content
  $('#sidebasket, .checkoutlink').html('');



  if(data.items) {
    $("#checkoutLinkTpl").tmpl(data).appendTo(".checkoutlink");
    $("#basketLineTpl").tmpl(data.items).appendTo("#sidebasket");
  }


  
  $('#sidebasket, .checkoutlink').hide().fadeIn();
}

// Formats a price
function price(f) {
  return f.toFixed(2);
}

function ajaxInit(selector, mode) {

  $(selector).live('click', function() {

    // Data for this tpl row
    var data = $.tmplItem(this).data;

    // What is the new qty?
    if(mode == 'delete') {
      var qty = 0;
      $(this).replaceWith('<span class="ajaxloader"></span>');
    }
    if(mode == 'increment') {
      var qty = parseInt(data.qty)+1;
    }
    if(mode == 'decrement') {
      var qty = parseInt(data.qty)-1;
    }

    var params = getLinkParams(this);
    


    $.post(base + 'ajax/basket/updateitems', 'basket[qty][' + params.var_id + ']=' + qty, function(data) {
      if(data.ok) {
        $(params.div).fadeOut();
        renderTemplates(data);
      }
    }, 'json');

    return false;

  });

}


// GFF
$(function() {
  
  // Hover effects
  $('div.featured_box').hover(function() {
    $(this).addClass('hover');
  }, function() {
    $(this).removeClass('hover');
  });

  // Click on featured box follows link
  $('div.featured_box').mousedown(function() {
    location.href = $(this).find('a:first').attr('href');
    return false;
  });


  // Make delivery date submit data via AJAX
  $('select[name=delivery_date]').change(function() {
    var sel = this;
    $(sel).hide();
    $(sel).after('<span class="ajaxloader"></span>');
    $('p.success').remove();
    $.post(base + 'ajax/deliverydate/set', 'delivery_date=' + $(sel).val(), function(data) {
      if(data.ok) {
        $(sel).fadeIn();
        $('span.ajaxloader').remove();
        $(sel).after('<p class="success">Delivery date updated</p>');
        $(sel).val(data.delivery_date);
      }
    }, 'json');
  });

  if(typeof(basket) == 'undefined')
   return;

  // Initial render the basket using jQuery templates
  renderTemplates(basket);


  // Main add to basket buttons
  $('.addbox form').live('submit', function() {

    var button = $(this).find('input[type=submit]');
    $(button).after('<span class="ajaxloader"></span>');
    $(button).hide();

    $.post(base + 'ajax/basket/add', $(this).serialize(), function(data) {
      renderTemplates(data);
      $('span.ajaxloader').remove();
      $(button).fadeIn();
    }, 'json');
    return false;
  });

  // Side basket ajax delete
  ajaxInit('a.ajaxdelete', 'delete');
  ajaxInit('a.ajaxinc',    'increment');
  ajaxInit('a.ajaxdec',    'decrement');

});
