document.observe("dom:loaded", function() {
  if ($('paypal_form')) { replaceCheckoutSubmitOnForm($('paypal_form')) }
  
  $$('div.insert-form').each( function(e) { insertFormFor(e); })
  
  $$('a.toggle-meta').invoke('observe','click',function(event) {
    $$('.meta').invoke('toggle'); event.stop(); })
  
  $$('form.ajax').invoke('observe','submit',function(event) {
    submitFormViaAjax(this); event.stop(); })
  
  $$('a.checkout').invoke('observe','click',function(event) {
    this.up('form').submit(); event.stop();  })
});


function insertFormFor(element) {
  new Ajax.Updater(element.id,
                   element.id.gsub('form_','/forms/') + '/rend',
                   {method:'get'});
}

function submitFormViaAjax(element) {
  new Ajax.Updater(element,
                   element.action,
                   {parameters:Form.serialize(this)});
}

function updateCartStatus(numberItems) {
  if ($('cart_status')) {
    switch (numberItems) {
      case 0:
        $('cart_status').update('<a href="/cart">Your cart</a> is empty');
        break;
      case 1:
        $('cart_status').update('1 item in <a href="/cart">your cart</a>');
        break;
      default:
        $('cart_status').update(numberItems +
          ' items in <a href="/cart">your cart</a>');
        break;
    }
  }
}

function replaceCheckoutSubmitOnForm(form) {
  var span = new Element('span').update("Checkout")
  var link = new Element('a', { 'class': 'checkout', href: '#' }).update(span);
  $$('input.checkout').invoke('hide')
  form.insert(link)
}