/**
 * @package CATalogue - Cybacat E-Commerce Suite
 * @copyright Cybacat Ltd 2007 - 2008
 * @link http://www.cybacat.com
 *
 * Cart management functions
 *
 */
function initCart ()
{
	if (CartID != null)
	{
		var uri = "/ajax_cart/init_cart/" + CartID + ".htm";
		new Ajax.Request(uri,
		{
			method:'get',
			onSuccess: function(transport) {
				
				updateQuickCart(transport);
			},
			onFailure: function(transport) { 
				alert('The onFailure event occured.');
				alert(transport.responseText);
			}
		});
	}
}

function updateQuickCart (transport)
{
	// Now transverse the XML		
	//alert(transport.responseText);
	
	var xml 	= transport.responseXML;
	var cart	= xml.getElementsByTagName("cart")[0];
	var prods	= document.getElementById('quickcartProductHolder');
	var newdiv;
	var errors	= xml.getElementsByTagName("error");
	
	//alert(cart.getAttribute("total") + ' WITH TAX, BEFORE OFFERS');
	
	var offers 	= xml.getElementsByTagName('offer');
	if (offers.length > 0)
	{
		var offer = offers[0];

		//alert('moo');
		var display_total = + parseFloat(offer.getAttribute('new_total')).toFixed(2);
	} else {
		var display_total = + parseFloat(cart.getAttribute("total")).toFixed(2);
	}
	
	for (i=0; i < errors.length; i++)
	{
		alert(errors[i].firstChild.data);
	}
	
	// Reset the product list, just in case
	prods.innerHTML = '';
	
	CartID 	= cart.getAttribute("id");
	
//	document.getElementById('quickCartCount').innerHTML = cart.getAttribute("itemcount") + ' ITEM(S)';
	if (!isNaN(display_total))
	{
		document.getElementById('quickCartTotal').innerHTML = pre_currency + display_total + post_currency;
	} else {
		document.getElementById('quickCartTotal').innerHTML = pre_currency + '0.00' + post_currency;
	}
	

	var tabs = document.getElementsByTagName('input');
	for (i=0; i < tabs.length; i++)
	{
		var tab = tabs[i];
		if (tab.name == 'cart') 
		{
			tab.parentNode.style.display = 'none';
		}
		if (tab.name == 'nocart')
		{
			tab.parentNode.style.display = '';
		}
	}
	
	var xml_skuid;
	var xml_name;
	var xml_qty;
	var xml_price;
	var xml_imageuri;
	var xml_imgwidth;
	var xml_imgheight;

	var skus = xml.getElementsByTagName("sku");
	try {
		if(skus.length > 0) {
			$('checkoutLink').style.display = "";
			$('checkoutLink2').style.display = "";
		}
		else {
			$('checkoutLink').style.display = "none";
			$('checkoutLink2').style.display = "none";
		}
	}
	catch(e) {
		alert(e);
	}
	
	for(i = 0; i < skus.length; i++)
	{
		xml_skuid		= skus[i].getAttribute('skuid');
		xml_name		= skus[i].getAttribute('name');
		xml_url  		= skus[i].getAttribute('url');
		xml_qty			= skus[i].getAttribute('qty');
		xml_price		= skus[i].getAttribute('price');
		xml_imguri 		= skus[i].getAttribute('imguri');		

		
		// First do the controls for each product
		if (document.getElementById('cart_' + xml_skuid + '_hero') != null)
		{
			document.getElementById('cart_' + xml_skuid + '_hero').style.display 	= '';
			document.getElementById('nocart_' + xml_skuid + '_hero').style.display 	= 'none';
			//document.getElementById('new_qty_' + xml_skuid + '_hero').value 		= '';
			
			if (document.getElementById('existing_qty_' + xml_skuid + '_hero') != null)
			{
				document.getElementById('existing_qty_' + xml_skuid + '_hero').value = xml_qty;
			}
		}
		
		// First do the controls for each product
		if (document.getElementById('cart_' + xml_skuid) != null)
		{
			document.getElementById('cart_' + xml_skuid).style.display 	= '';
			document.getElementById('nocart_' + xml_skuid).style.display 	= 'none';
			
			if (document.getElementById('existing_qty_' + xml_skuid) != null)
			{
				document.getElementById('existing_qty_' + xml_skuid).value = xml_qty;
			}
		}
		
		// Now do the quickcart
		var container = document.createElement('div');
		container.className = 'quickCartItemLine booples';
		if (i != skus.length-1)
		{
			container.setAttribute('style', 'border-bottom:1px solid #ABABAB;');
		}
			
			var length = 11;
			var xml_name_trunk = xml_name;
			if (xml_name_trunk.length > length)
			{
				xml_name_trunk = xml_name_trunk.substring(0, length);
				xml_name_trunk += '..';
			}
			
			// Add product name
			var name = document.createElement('div');
			name.className = 'quickCartItem';
			name.innerHTML = '<a href="'+xml_url+'" style="color:#000000;" title="'+xml_name+'">' + xml_qty + ' x ' + xml_name_trunk + '</a>';
			container.appendChild(name);
			
			// Add product price
			var price = document.createElement('div');
			price.className = 'quickCartPrice';
			//&pound;1000.00 <a href="#" title="remove"><sup class="quickCartRemove">x</sup>
			
				var price_text = document.createTextNode(pre_currency + currency_format(xml_price) + post_currency + ' ');
				price.appendChild(price_text);
				
				var rem_link_a 		= document.createElement('a');
				rem_link_a.href 	= '#';
				rem_link_a.title 	= 'Remove;'
				rem_link_a.onclick 	= function () {
					removeSku(xml_skuid);
				}
					
					var rem_link_sup 	= document.createElement('sup');
					rem_link_sup.className = 'quickCartRemove';
					rem_link_sup.appendChild(document.createTextNode('x'));
					rem_link_a.appendChild(rem_link_sup);
			
				price.appendChild(rem_link_a);
				
			container.appendChild(price);
		
		// Add product to page
		prods.appendChild(container);
	}
	
	var discounts = xml.getElementsByTagName('offer');
	if (discounts.length > 0)
	{
		var discountTotal = 0;
		for(i=0;i<discounts.length;i++)
		{
			var discount = discounts[0].getAttribute('total_with_tax');
			discountTotal = parseFloat(discountTotal)+parseFloat(discount);
		}
				
		var container = document.createElement('div');
		container.className = 'quickCartItemLine booples';
		
			var name = document.createElement('div');
			name.className = 'quickCartItem';
			name.innerHTML = 'Total Discounts';
			container.appendChild(name);
			
			var price = document.createElement('div');
			price.className = 'quickCartPrice';
			
				var price_text = document.createTextNode('(' + pre_currency + currency_format(discountTotal) + post_currency + ')');
				price.appendChild(price_text);
				
			container.appendChild(price);
			
		prods.appendChild(container);
	}	
}

function addSkuToCart (SkuID, Pass_Qty)
{
	//console.log(CartID);
	updateSkuQty(SkuID, Pass_Qty);
}

function increaseSkuQty (SkuID)
{
	var uri = "/ajax_cart/increase_sku/" + SkuID + "/" + CartID + ".htm";
	new Ajax.Request(uri,
	{
		method:'get',
		onSuccess: function(transport) {
			//alert(transport.responseText);
			updateQuickCart(transport);
		},
		onFailure: function(transport) { 
			alert('The onFailure event occured.');
			alert(transport.responseText);
		}
	});
}

function decreaseSkuQty (SkuID)
{
	var uri = "/ajax_cart/decrease_sku/" + SkuID + "/" + CartID + ".htm";
	new Ajax.Request(uri,
	{
		method:'get',
		onSuccess: function(transport) {
			updateQuickCart(transport);
		},
		onFailure: function(transport) { 
			alert('The onFailure event occured.');
			alert(transport.responseText);
		}
	});
}

function updateSkuQty (SkuID, Pass_Qty)
{	
	if (Pass_Qty == '' || Pass_Qty < 0)
	{
		Pass_Qty = 1;
	}
	
	if (!isNaN(Pass_Qty))
	{
		var uri = "/ajax_cart/update_sku/" + SkuID + "/" + Pass_Qty + "/" + CartID + ".htm";
		new Ajax.Request(uri,
		{
			method:'get',
			onSuccess: function(transport) {
				updateQuickCart(transport);
			},
			onFailure: function(transport) { 
				alert('The onFailure event occured.');
				alert(transport.responseText);
			}
		});
	} else {
		alert('Invalid Quantity');
	}
}

function removeSku (SkuID)
{
	// Set the SKU level to 0, really
	updateSkuQty(SkuID, "0");
}
