var num_items = 0;

function renderCart()
{
	var code_array = [];
	
	var cur_cart = new Cart();
	
	var aCart = cur_cart.getCartItems();
	num_items = cur_cart.getNumCartItems();
	
	if (num_items > 0) {
		code_array.push("<table border=\"0\" class=\"header_table\" cellpadding=\"0\" cellspacing=\"0\">");
		code_array.push("<tr>");
			code_array.push("<td class=\"header_cell\">Remove</td>");
			code_array.push("<td class=\"header_sep\"><img src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/line_sep.gif\" /></td>");
			code_array.push("<td class=\"header_cell\">Description</td>");
			code_array.push("<td class=\"header_sep\"><img src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/line_sep.gif\" /></td>");
			code_array.push("<td class=\"header_cell\">Quantity</td>");
			code_array.push("<td class=\"header_sep\"><img src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/line_sep.gif\" /></td>");
			code_array.push("<td class=\"header_cell\">Unit Price</td>");
			code_array.push("<td class=\"header_sep\"><img src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/line_sep.gif\" /></td>");
			code_array.push("<td class=\"header_cell\">Price</td>");
			code_array.push("<td><img src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/end_cap.gif\" /></td>");
		code_array.push("</tr>");
		code_array.push("<tr><td style=\"height:18px;\"></td></tr>");
		
		//loop through each item and display
		var i;
		var cur_item;
		var running_total = 0;
		for (i=1;i<=num_items;i++) {
			eval("cur_item = aCart.cart_item_"+i+";");
			
			code_array.push("<tr id=\"cart_line_"+i+"\">");
			code_array.push("<td class=\"item_cell\"><input id=\"delete_"+i+"\" type=\"checkbox\" value=\""+cur_item.cart_id+"\" /></td>");
			code_array.push("<td class=\"header_sep\"></td>");
			code_array.push("<td>"+cur_item.product.name);
			if (cur_item.option) {
				code_array.push("<br /><small>"+cur_item.option+"</small>");
			}
			code_array.push("</td>");
			code_array.push("<td class=\"header_sep\"></td>");
			code_array.push("<td class=\"item_cell\"><input id=\"qty_input_"+i+"\" class=\"qty_input\" type=\"text\" size=\"1\" value=\""+cur_item.qty+"\" maxlength=\"3\" /></td>");
			code_array.push("<td class=\"header_sep\"></td>");
			code_array.push("<td class=\"item_cell\">" + cent(cur_item.subtotal / cur_item.qty) + "</td>");
			code_array.push("<td class=\"header_sep\"></td>");
			code_array.push("<td class=\"item_cell\">"+cent(cur_item.subtotal)+"</td>");
			code_array.push("<td></td>");
			code_array.push("</tr>");
			
			code_array.push("<tr><td style=\"height:10px;\"></td></tr>");
			
			running_total = running_total + parseFloat(cur_item.subtotal);
		}
		
		code_array.push("<tr><td style=\"height:5px;\"></td></tr>");
		
		code_array.push("<tr><td colspan=\"10\" class=\"subtotal\"><span id=\"subtotal\">Subtotal: $" + cent(running_total) + "</span></td></tr>");
		
		code_array.push("<tr><td style=\"height:10px;\"></td></tr>");
		
		//add buttons at bottom
		code_array.push("<tr>");
		code_array.push("<td colspan=\"2\"><a href=\"javascript:void(0);\" onclick=\"removeItems();\"><img alt=\"remove\" src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/remove.gif\" /></a></td>");
				
		code_array.push("<td class=\"checkout\" colspan=\"8\"><span id=\"recalc_but\"><a href=\"javascript:void(0);\" onclick=\"updateQty();\"><img alt=\"recalculate total\" src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/recalc.gif\" /></a></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\""+makeUrl({'module':'shop','action':'view','manager':'checkout'})+"\"><img alt=\"checkout\" src=\""+SGL_JS_WEBROOT+"/themes/"+SGL_JS_THEME+"/images/checkout.gif\" /></a></td>");		
		code_array.push("</tr>");
		
		code_array.push("</table>");
		
		$('cart_listing').innerHTML = code_array.join('\n');
	} else {
		$('cart_listing').innerHTML = 'There are currently no products in your cart.';
	}
	
	updateSummary();
}

function cent(v_n){
    var n=2;
    var nT=Math.pow(10,n);
    function pad(s){
            s=s||'.';
            return (s.length>n)?
                s:
                pad(s+'0');
    }
    return (isNaN(v_n))?
        v_n:
        (new String(
            Math.round(v_n*nT)/nT
        )).replace(/(\.\d*)?$/,pad);
}

function updateQty()
{
	var aUpdate = [];
	aIds 		= [];
	var pass = true;
	
	for (i=1;i<=num_items;i++) {
		aUpdate.push($('qty_input_'+i).value)
		aIds.push($('delete_'+i).value);//pushes on id
		if (isNaN($('qty_input_'+i).value) || parseInt($('qty_input_'+i).value) < 1 || $('qty_input_'+i).value == '') {
			new Effect.Shake('qty_input_'+i);
			new Effect.Highlight('cart_line_'+i);
			pass = false;
		}
	}
	
	if (pass) {
		AjaxHandler.prototype.updateQuantity = function(aResult) {
			renderCart();
			Element.hide('subtotal');
			new Effect.Appear('subtotal');
			//alert(aResult);
		}
		
		var ah = new AjaxHandler('recalc_but', '');
		var cur_cart = new Cart(ah);
		cur_cart.updateQuantity(aIds, aUpdate);
	}
}

var aIds = [];
function removeItems()
{
	var i;
	aIds    = [];
	var aDelete = [];
	for (i=1;i<=num_items;i++) {
		if ($('delete_'+i).checked) {			
			aIds.push($('delete_'+i).value);
			aDelete.push(i);
		}
	}
	
	//fade away
	for (i=0;i<aDelete.length;i++) {
		if (i == aDelete.length - 1) {
			new Effect.Fade('cart_line_'+aDelete[i], {afterFinish:removeItemsCallback});			
		} else {
			new Effect.Fade('cart_line_'+aDelete[i]);
		}
	}		
	
}

function removeItemsCallback()
{	
	var cur_cart = new Cart();
	
	if (cur_cart.deleteItems(aIds)) {
		//good
		renderCart();
	} else {
		renderCart();
		alert('An error occured while deleting an item.\n\nPlease try again.');
	}	
}
