// Shopping Cart functions by Mentally Friendly (www.mentallyfriendly.com)
// Version 1.0.0 
// Last Updated 10/12/2007 

var nItemNum = 1;

// Recalculate total cost
function updateGrandTotal(del){
	var cart = document.getElementById("insertCart");
	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("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("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("cartqty" + nID);
			upd.id = "cartqty" + (nID-1);
		}
		nID++;
	}
		
	//loop through individual item totals
	var nAmount = 0;
	var numberItems = 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);
			numberItems += nQty;
			
			nAmount += itemPrice * nQty;
			var sName = document.getElementById("title_" + i).innerHTML;
			var itemSize = "None";
			var itemColour = "None";

			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);
				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);
				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);
				Cart.appendChild(inp);
			}
			// update paypal values to reflect any changes to color, quantity or anything else
			var update = document.getElementById("qty_" + nID);
			update.value = nQty;			
			update = document.getElementById("amt_" + nID);
			update.value = itemPrice;
			
			nID++;
		}
	}
	var nShipping = getShipping(numberItems);
	nAmount += nShipping;
	nAmount = Math.round((nAmount) * 100)/100;
	if(nShipping == 0) nAmount = 0;
	document.getElementById("hiddenTotal").value = nAmount;
	
	ShippingCost.value = nShipping;
	grandTotalCost.value = nAmount;
	var _shipping = document.getElementById("_shipping");
	_shipping.value = nShipping;
	var shippingTotal = document.getElementById("shippingTotal");
	shippingTotal.value = nShipping;
	_shipping.setAttribute('value',nShipping);
	var _total = document.getElementById("_total");
	_total.value = nAmount;
	if (grandTotalCost.value == "undefined" || grandTotalCost.value == "NaN" ){
		grandTotalCost.value = "";
	}
	if (ShippingCost.value == undefined || ShippingCost.value == 'NaN' ){
		ShippingCost.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 sSize = "None";
	var sColour = "None";

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

	var del = document.getElementById('noItems');
	del.parentNode.removeChild(del);

	// build the table
	var cartTable = document.createElement("table");
	cartTable.setAttribute("id","cartTable");
	cartTable.setAttribute("width","100%");
	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.setAttribute("align","left");
	head2.innerHTML = "EVENT:";
	var head4 = document.createElement("th");
	head4.setAttribute("align","left");
	head4.setAttribute("width","100");
	head4.innerHTML = "PRICE:";
	var head5 = document.createElement("th");
	head5.setAttribute("align","left");
	head5.innerHTML = "QUANTITY:";
	var head7 = document.createElement("th");
	head7.setAttribute("align","left");

	var head6 = document.createElement("th");
	head6.setAttribute("align","right");
	head6.innerHTML = "Sub-total:";

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

	var divCart = document.getElementById('insertCart');
	divCart.appendChild(cartTable);
	var tbody = document.createElement("tbody");
	tbody.setAttribute('id','cartBody');
	cartTable.appendChild(tbody);
	addRow(cartTable,nItem,head,price,nQty,sSize,sColour,itemid);
}


function addRow(table,nItem,head,price,nQty,sSize,sCol,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.setAttribute("width","300");
	d2.setAttribute("align","left");
	d2.innerHTML = head;
	cartItem.appendChild(d2);

	// Item single unit price
 	var d4 = document.createElement("td"); 
	d4.setAttribute("class","boldText");
	d4.setAttribute("align","left");
	d4.setAttribute("id","singlePrice" + nItemNum);
	d4.innerHTML = "$"+ price +"";
	var d5 = document.createElement("td");
	d5.setAttribute("align","left");
	var d9 = document.createElement("td");
	d9.setAttribute("class","button");
	d9.setAttribute("width","50");
	d9.setAttribute("style","font-size: 1em; display: block;");
	d9.innerHTML = " <a id='remove"+ nItemNum +"' href=Javascript:remItem("+ nItemNum +") class='button'>REMOVE</a>";
	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<20;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;

	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);
	}

	d5.appendChild(selQty);
	cartItem.appendChild(inp);
	cartItem.appendChild(d4);
	cartItem.appendChild(d5);
	cartItem.appendChild(d9);
	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("qty_" + n);
	remItem.removeChild(del);
	var del = document.getElementById("amt_" + 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;	
	var itemPrice = document.getElementById("cartAmnt"+currentElement);
	itemPrice.value = Math.round((price) * 100) / 100;

	updateGrandTotal();
}
