var add_handler = new addToBasketHandler ();


/**
* SUB CATEGORY LOOKUP
**/
function addToBasketRequest () {
  var qty = document.forms['add_item'].elements['quantity'];
  var size = document.forms['add_item'].elements['size'];
  var agree = document.forms['add_item'].elements['agree'];
  var product_id = document.forms['add_item'].elements['product_id'];
  var sale_type = document.forms['add_item'].elements['sale_type'];
  
  var alert_text = '';
  
  // quick and dirty validation
  if (qty.value == '') {
    alert_text = "You must enter in a quantity";
  }
  if (size != null && size.value == '') {
    if (alert_text != '') alert_text += "\n";
    alert_text += 'You must select a size';
  }
  if (sale_type != null && get_radio_value(sale_type) == null) {
    if (alert_text != '') alert_text += "\n";
    alert_text += 'You must select if you would like to buy or hire this item';
  }
  if (! agree.checked) {
    if (alert_text != '') alert_text += "\n";
    alert_text += 'You must agree to the terms of sale';
  }
  
  if (alert_text != '') {
    window.alert (alert_text);
    return;
  }
  
  // prepare the postdata
  var post_data = 'Quantity=' + escape (qty.value);
  post_data += '&Agree=' + escape (agree.value);
  post_data += '&ProductID=' + escape (product_id.value);
  if (size != null) {
    post_data += '&Size=' + escape (size.value);
  }
  if (sale_type != null) {
    post_data += '&sale_type=' + escape (get_radio_value(sale_type));
  }
  
  // tell the user
  var add_result_node = document.getElementById ('add_result');
  add_result_node.data = 'Adding item to basket...';
  
  // make the request
  queue.request ('POST', 'ajax_add_basket.php', add_handler, post_data);
}

function addToBasketHandler () {
  this.process = function (top_node) {
    var add_result_node = document.getElementById ('add_result');
    
    var result_node = top_node.getElementsByTagName ('result');
    result_node = result_node[0];
    
    while (add_result_node.firstChild) {
      add_result_node.removeChild(add_result_node.firstChild);
    }
    
    if (result_node.getAttribute('code') == 1) {
      // success
      add_result_node.appendChild(document.createTextNode('Item added to basket. '));
      add_result_node.className = 'confirmation';
      
      // link to 'proceed to checkout
      var node = document.createElement ('a');
      node.href = 'view_basket.php';
      node.appendChild(document.createTextNode ('Proceed to checkout »'));
      add_result_node.appendChild (node);
      
      // update total up the top
      var total_count_node = document.getElementById ('basket-items');
      total_count_node.firstChild.data = result_node.getAttribute('items_basket');
      
    } else {
      // failure
      add_result_node.appendChild(document.createTextNode('Item not added to basket: ' +
        result_node.getAttribute('message')));
      add_result_node.className = 'error';
      
    }
  }
}

function remove_from_basket (id) {
  if (confirm ('Are you sure you wish to remove this item from your basket?')) {
    window.location = 'remove_from_basket.php?id=' + id;
  }
}


function addToWaitlistRequest () {
  var size = document.forms['add_item'].elements['size'];
  var product_id = document.forms['add_item'].elements['product_id'];
  var sale_type = document.forms['add_item'].elements['sale_type'];
  
  url = '/waitlist.php?id=' + product_id.value;
  
  if (size != null) url += '&size=' + size.value;
  if (sale_type != null && get_radio_value (sale_type) != null) url += '&saletype=' + get_radio_value (sale_type);
  
  raw_popup (url);
}


function get_radio_value (radio_el) {
  if (typeof (radio_el) == 'object' && radio_el.length > 0) {
    for (var i in radio_el) {
      if (radio_el[i].checked == true) {
        return radio_el[i].value;
      }
    }
  }
  return null;
}
