// Shopping Cart functions by Mentally Friendly (www.mentallyfriendly.com)

var nItemNum = 1;

// Recalculate total cost
function updateGrandTotal(del){
	var cart = document.getElementById("cart");
	var nID = 1;

	while((document.getElementById("itm_" + nID) || nID == del) && del){
		if(nID > del){
			var upd = document.getElementById("itm_" + nID);
			upd.id = "itm_" + (nID-1);
			upd.name = "item_name_" + (nID-1);
			upd = document.getElementById("sz_" + nID);
			upd.id = "sz_" + (nID-1);
			upd.name = "os0_" + (nID-1);
			

			upd = document.getElementById("cl_" + nID);
			upd.id = "cl_" + (nID-1);
			upd.name = "os1_" + (nID-1);
			upd = document.getElementById("qty_" + nID);
			upd.id = "qty_" + (nID-1);
			upd.name = "quantity_" + (nID-1);
			upd = document.getElementById("amt_" + nID);
			upd.id = "amt_" + (nID-1);				
			upd.name = "amount_" + (nID-1);
			upd = document.getElementById("on0_" + nID);
			upd.id = "on0_" + (nID-1);
			upd.name = "on0_" + (nID-1);
			upd = document.getElementById("on1_" + nID);
			upd.id = "on1_" + (nID-1);
			upd.name = "on1_" + (nID-1);
			
			upd = document.getElementById("remove" + nID);
			upd.href = "Javascript:remItem(" + (nID-1) + ")";
			upd.id = "remove" + (nID-1);

			upd = document.getElementById("cItem_" + nID);
			upd.id = "cItem_" + (nID-1);

			upd = document.getElementById("title_" + nID);
			upd.id = "title_" + (nID-1);
			
			upd = document.getElementById("cartAmnt" + nID);
			upd.id = "cartAmnt" + (nID-1);
			upd.name = "cartAmnt" + (nID-1);

			upd = document.getElementById("itemid" + nID);
			upd.id = "itemid" + (nID-1);
			upd.name = "itemid" + (nID-1);
			upd = document.getElementById("itemnum" + nID);
			upd.id = "itemnum" + (nID-1);
			upd.name = "itemnum" + (nID-1);

			upd = document.getElementById("selSze_" + nID);
			upd.id = "selSze_" + (nID-1);
			upd = document.getElementById("selCol_" + nID);
			upd.id = "selCol_" + (nID-1);
			upd = document.getElementById("cartqty" + nID);
			upd.id = "cartqty" + (nID-1);

		}
		nID++;
	}
		
	//loop through individual item totals
	var nAmount = 0;
	nID = 1;
	var weightItems = 0;
	for(var i=0; i < nItemNum+1; i++){
		if(document.getElementById("cartAmnt"+i)){
			var itemPrice = new Number(document.getElementById("cartAmnt"+i).value);
			var selQty = document.getElementById("cartqty" + i);
			var nQty = new Number(selQty.options[selQty.selectedIndex].value);
			
			
			nAmount += itemPrice * nQty;
			var sName = document.getElementById("title_" + i).innerHTML;
			var sz = document.getElementById("selSze_" + i);
			var itemSize = sz.options[sz.selectedIndex].value;
			var col = document.getElementById("selCol_" + i);
			var itemColour = col.options[col.selectedIndex].value;

			var itemIdentity = document.getElementById("itemid" + i).value;
			nGrams = associateWeight(itemIdentity, urlencode(itemSize));
			weightItems +=  (nGrams * nQty);

			if(!(document.getElementById("itm_" + nID)) && !(del)){
				var inp = document.createElement('input');
				inp.setAttribute( 'id','itm_' + nID);
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'name','item_name_' + nID);
				inp.setAttribute( 'value',sName);
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'id','amt_' + nID);
				inp.setAttribute( 'name','amount_' + nID);
				inp.setAttribute( 'value',itemPrice);
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'name','on0_' + nID);
				inp.setAttribute( 'id','on0_' + nID);
				inp.setAttribute( 'value',"Size");
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'id','sz_' + nID);
				inp.setAttribute( 'name','os0_' + nID);
				inp.setAttribute( 'value',itemSize);
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'name','on1_' + nID);
				inp.setAttribute( 'id','on1_' + nID);
				inp.setAttribute( 'value',"Colour");
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'id','cl_' + nID);
				inp.setAttribute( 'name','os1_' + nID);
				inp.setAttribute( 'value',itemColour);
				document.Cart.appendChild(inp);

				var inp = document.createElement('input');
				inp.setAttribute( 'id','qty_' + nID);
				inp.setAttribute( 'type','hidden' );
				inp.setAttribute( 'name','quantity_' + nID);
				inp.setAttribute( 'value', nQty);
				document.Cart.appendChild(inp);
			}
			// update paypal values to reflect any changes to color, quantity or anything else
			var update = document.getElementById("sz_" + nID);
			update.value = itemSize;
			update = document.getElementById("cl_" + nID);
			update.value = itemColour;
			update = document.getElementById("qty_" + nID);
			update.value = nQty;			
			update = document.getElementById("amt_" + nID);
			update.value = itemPrice;
			
			nID++;
		}
	}
	var nShipping = getShipping(weightItems);
	nAmount += nShipping;
	nAmount = Math.round((nAmount) * 100)/100;
	if(nShipping == 0) nAmount = 0;
	document.getElementById("hiddenTotal").value = nAmount;
	document.Cart.shippingCost.value = nShipping;
	document.Cart.grandTotal.value = nAmount;
	document.Cart._shipping.value = nShipping;
	document.Cart.shippingTotal.value = nShipping;
	document.Cart._shipping.setAttribute('value',nShipping);
	document.Cart.amount.value = nAmount;
	if (document.Cart.grandTotal.value == "undefined" || document.Cart.grandTotal.value == "NaN" ){
		document.Cart.grandTotal.value = "";
	}
	if (document.Cart.shippingTotal.value == undefined || document.Cart.shippingTotal.value == 'NaN' ){
		document.Cart.shippingTotal.value = "";
	}
}


// Add item to cart
function  addToCart(nItem,head,price,itemid){

	//Quantity
	var selQty = document.getElementById("brand" + nItem + "Qty");
	var nQty = selQty.options[selQty.selectedIndex].value;
	
	//size
	var selSze = document.getElementById("brand" + nItem + "Size");
	var sSize = selSze.options[selSze.selectedIndex].value;
	var aSizes = new Array();
	for(var i =0; i<selSze.options.length;i++){
		aSizes.push(selSze.options[i].value);
	}
	
	//Colour
	var selColour = document.getElementById("brand" + nItem + "colour");
	var sColour = selColour.options[selColour.selectedIndex].value;
	var aColours = new Array();
	for(var i =0; i<selColour.options.length;i++){
		aColours.push(selColour.options[i].value);
	}

	// Find out if the table exists
	if(document.getElementById("cartTable")){
		addRow(document.getElementById("cartTable"),nItem,head,price,nQty,sSize,sColour,aSizes,aColours,itemid);
		return;
	}

	// build the table
	var cartTable = document.createElement("table");
	cartTable.setAttribute("id","cartTable");
	cartTable.setAttribute("width",650);
	cartTable.setAttribute("cellpadding",0);
	cartTable.setAttribute("cellspacing",0);
	cartTable.setAttribute("border",0);
	var cartHead = document.createElement("thead");

	// Table headings
	var head2 = document.createElement("th");
	head2.innerHTML = "YOU ARE BUYING";
	var head3 = document.createElement("th");
	head3.innerHTML = "SIZE/COLOUR";
	var head4 = document.createElement("th");
	head4.innerHTML = "PRICE";
	var head5 = document.createElement("th");
	head5.innerHTML = "QUANTITY";
	var head6 = document.createElement("th");
	head6.innerHTML = "TOTAL";

	cartHead.appendChild(head2);  
	cartHead.appendChild(head3);  
	cartHead.appendChild(head4);  
	cartHead.appendChild(head5); 
	cartHead.appendChild(head6);   
	cartTable.appendChild(cartHead);

	var divCart = document.getElementById('cart');
	divCart.appendChild(cartTable);
	// divCart.innerHTML = "<table id='cartTable' width='650' cellpadding='0'  cellspacing='0' border='0'><thead><th>You are buying</th><th>Size / Colour</th><th>Price</th><th>Quantity</th><th>Total</th></thead></table>"
		var tbody = document.createElement("tbody"); 
		tbody.setAttribute('id','cartBody')
	
	cartTable.appendChild(tbody)
	addRow(cartTable,nItem,head,price,nQty,sSize,sColour,aSizes,aColours,itemid);
}


function addRow(table,nItem,head,price,nQty,sSize,sCol,aSizes,aColours,itemid){
	var cartItem = document.createElement("tr");
	cartItem.setAttribute("id","cItem_" + nItemNum);

	// Item name
	var d2 = document.createElement("td"); 
	d2.setAttribute("id","title_" + nItemNum);
	d2.setAttribute("class","boldText");
	d2.innerHTML = head;
	cartItem.appendChild(d2);

	var d3 = document.createElement("td");
	d3.setAttribute("align","center");
	
	// Item size
	var selSze = document.createElement("select");
	selSze.setAttribute('id','selSze_' + nItemNum);
	selSze.setAttribute('class','large');
	for(var i =0; i < aSizes.length; i++){
		newop=document.createElement('option');
		newop.appendChild(document.createTextNode(aSizes[i]))
		newop.setAttribute('value',aSizes[i]);
		if(aSizes[i] == sSize)
			 newop.setAttribute('selected',true);
		selSze.appendChild(newop);
	}

	selSze.onchange = function(){
		updateItemPrice(inp,-1,getCartPrice(nItemNum-1, itemid, this.id),d6, nItemNum-1, this.id);
		updateSinglePrice(getCartPrice(nItemNum-1, itemid, this.id), this.id);
	}
	d3.appendChild(selSze);

	// Item colour
	var selCol = document.createElement("select");
	selCol.setAttribute('id','selCol_' + nItemNum);
	selCol.setAttribute('class','large');
	for(var i =0; i < aColours.length; i++){
		newop=document.createElement('option');
		newop.appendChild(document.createTextNode(aColours[i]))
		newop.setAttribute('value',aColours[i]);
		if(aColours[i] == sCol)
			 newop.setAttribute('selected',true);
		selCol.appendChild(newop);
	}
	d3.appendChild(selSze);
	d3.appendChild(document.createElement("br"));
	d3.appendChild(selCol);

	// Item single unit price
 	var d4 = document.createElement("td"); 
	d4.setAttribute("class","boldText");
	d4.setAttribute("id","singlePrice" + nItemNum);
	d4.innerHTML = "$"+ price +""
	var d5 = document.createElement("td"); 
	d5.setAttribute("align","center");
	var d6 = document.createElement("td"); 
	d6.setAttribute("class","boldText");
	d6.setAttribute("align","right");

	// Item quantity
	var selQty = document.createElement("select");
	selQty.setAttribute("id","cartqty" + nItemNum);
	selQty.setAttribute("class","qtySelect");

//
	for(var i =0; i<10;i++){
		newop=document.createElement('option');
		newop.appendChild(document.createTextNode(i))
		newop.setAttribute('value',i);
		if(nQty == i) {
			newop.setAttribute('selected',true) ;
		}
		selQty.appendChild(newop);
	}

	// hidden itemid and item number
 	var d7 = document.createElement("input"); 
	d7.setAttribute("type","hidden");
	d7.setAttribute("id","itemid" + nItemNum);
	d7.value = itemid;
 	var d8 = document.createElement("input"); 
	d8.setAttribute("type","hidden");
	d8.setAttribute("id","itemnum" + nItemNum);
	d8.value = nItemNum;


	// Total item price
	d6.innerHTML = "Total $" + Math.round((nQty * price) * 100) / 100 + "<br/><div class='button' style='font-size: 1em;'><a id='remove"+ nItemNum +"' href=Javascript:remItem("+ nItemNum +") class='button'>REMOVE</a></div>";

	var inp = document.createElement('input');
	inp.setAttribute( 'id','cartAmnt' + nItemNum);
	inp.setAttribute( 'type','hidden' );
	inp.setAttribute( 'name','cartAmnt' + nItemNum);
	inp.setAttribute( 'value',price);
	
	selQty.onchange = function(){
		updateItemPrice(inp,this.selectedIndex,getCartPrice(nItemNum-1, itemid, this.id),d6,nItemNum-1, this.id);
	}
	selCol.onchange = function(){
		updateItemPrice(inp,-1,getCartPrice(nItemNum-1, itemid, this.id),d6, nItemNum-1, this.id);
	}

	d3.appendChild(selCol);
	d5.appendChild(selQty);
	cartItem.appendChild(inp);
	cartItem.appendChild(d3);
	cartItem.appendChild(d4);
	cartItem.appendChild(d5);
	cartItem.appendChild(d6);
	cartItem.appendChild(d7);
	cartItem.appendChild(d8);
	
	var tbody = document.getElementById('cartBody')
	tbody.appendChild(cartItem);
	
	nItemNum++;

	updateGrandTotal();
	window.alert(head + " has been added to your cart\nScroll to the bottom of the page to view")
}

// Remove cart item
function remItem(n){
	var remItem = document.getElementById('cartBody');
	var del = document.getElementById("cItem_" + n);
	remItem.removeChild(del);

	var remItem = document.getElementById('bCart');
	var del = document.getElementById("itm_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("sz_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("cl_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("qty_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("amt_" + n);
	remItem.removeChild(del);

	var del = document.getElementById("on0_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("on1_" + n);
	remItem.removeChild(del);
	
	//var del = document.getElementById("itemid" + n);
	//remItem.removeChild(del);
	//var del = document.getElementById("itemnum" + n);
	//remItem.removeChild(del);

	nItemNum --;

	updateGrandTotal(n);
}


// Update totals on quantity changes
function updateSinglePrice(price,itemNum){
	itemNum = itemNum.substring(7, itemNum.length);
	var priceTag = document.getElementById("singlePrice" + itemNum);
	priceTag.innerHTML = "$"+ Math.round(price * 100) / 100;
}

// Update totals on quantity changes
function updateItemPrice(inp,newQty,price,priceTag,itemNum, currentElement){
	currentElement = currentElement.substring(7, currentElement.length);
	if(newQty == -1){
		var selQty = document.getElementById("cartqty" + currentElement);
		newQty = new Number(selQty.options[selQty.selectedIndex].value);
	}
	priceTag.innerHTML = "Total $"+ Math.round((newQty * price) * 100) / 100 +"<br/><div class='button' style='font-size: 1em;'><a id='remove"+ currentElement +"' href=Javascript:remItem("+ currentElement +") class='button'>REMOVE</a></div>";	
	var itemPrice = document.getElementById("cartAmnt"+currentElement);
	itemPrice.value = Math.round((price) * 100) / 100;

	updateGrandTotal();
}