
var cartArray = new Array();
var productsCost = 0;
var postageCost = 0;
var totalCost = 0;


function displayCart() {
	var html = "";
	var cart = getCookie("FactoryOneCart");
	// if the cart is empty
	if (cart == null || cart == "") {
		document.getElementById("emptyCartDiv").style.display = "block";
		return;
	}
	// populate array of items
	cartArray = cart.split("+");
	var table = document.getElementById("cartTable").getElementsByTagName("TBODY")[0];
	var numOutOfStock = 0;
	for (var i=0; i<cartArray.length; i++) {
		var itemIndex;
		for (var j=0; j<shopItems.length; j++) {
			if (shopItems[j].stockCode == cartArray[i]) {
				itemIndex = j;
				break;
			}
		}
		// if we can't find the item (i.e. something has gone wrong) then move on to the next one
		if (itemIndex === undefined) {
			continue;
		}
		// check it's not out of stock
		if (shopItems[itemIndex].soldout) {
			numOutOfStock++;
			continue;
		}
		// create row
		var tr 	= document.createElement("tr");
		var td1 = document.createElement("td");
		var td2 = document.createElement("td");
		var td3 = document.createElement("td");
		var td4 = document.createElement("td");
		var td5 = document.createElement("td");
		var td6 = document.createElement("td");
		var td7 = document.createElement("td");
		var td8 = document.createElement("td");
		td1.align = "left";
		td7.align = "right";
		var txt1 	= document.createTextNode(shopItems[itemIndex].productType);
		if (shopItems[itemIndex].productDesign == null) {
			var txt2 = document.createTextNode("");
		} else {
			var txt2 = document.createTextNode(shopItems[itemIndex].productDesign);
		}
		if (shopItems[itemIndex].engineType == null) {
			var txt3 = document.createTextNode("");
		} else {
			var txt3 = document.createTextNode(shopItems[itemIndex].engineType);
		}
		if (shopItems[itemIndex].bikeMake == null) {
			var txt4 = document.createTextNode("");
		} else {
			var txt4 = document.createTextNode(shopItems[itemIndex].bikeMake);
		}
		if (shopItems[itemIndex].alloyColour == null) {
			var txt5 = document.createTextNode("");
		} else {
			var txt5 = document.createTextNode(shopItems[itemIndex].alloyColour);
		}
		if (shopItems[itemIndex].colour == null) {
			var txt6 = document.createTextNode("");
		} else {
			var txt6 = document.createTextNode(shopItems[itemIndex].colour);
		}
		var txt7 	= document.createTextNode(shopItems[itemIndex].price);
		var txt8 	= document.createTextNode("(remove)");
		var link8	= document.createElement("a");
		link8.href = "javascript:removeItem("+i+")";
		link8.appendChild(txt8);
		td1.appendChild(txt1);
		td2.appendChild(txt2);
		td3.appendChild(txt3);
		td4.appendChild(txt4);
		td5.appendChild(txt5);
		td6.appendChild(txt6);
		td7.appendChild(txt7);
		td8.appendChild(link8);
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		tr.appendChild(td4);
		tr.appendChild(td5);
		tr.appendChild(td6);
		tr.appendChild(td7);
		tr.appendChild(td8);
		// append row to table
		table.appendChild(tr);
		// add to total
		productsCost += (shopItems[itemIndex].price - 0);
	}
	// calculate shipping cost
	// Note: to enable zero postage (e.g. for a special offer), comment out the following two lines
	if (productsCost < 50) { postageCost = 1.95; }
	else { postageCost = 5.00; }
	totalCost = productsCost + postageCost; 
	// format costs
	postageCost = roundDouble(postageCost, 2, true);
	totalCost = roundDouble(totalCost, 2, true);
	// create shipping row
	var tr 	= document.createElement("tr");
	var td1 = document.createElement("td");
	var td2 = document.createElement("td");
	var td3 = document.createElement("td");
	td1.colSpan = "6";
	td1.align = "right";
	td1.className = "boldText";
	td2.align = "right";
	td2.className = "boldText";
	var txt1 	= document.createTextNode("Postage:");
	var txt2 	= document.createTextNode(postageCost);
	var txt3 	= document.createTextNode(" ");
	td1.appendChild(txt1);
	td2.appendChild(txt2);
	td3.appendChild(txt3);
	tr.appendChild(td1);
	tr.appendChild(td2);
	tr.appendChild(td3);
	// append shipping row to table
	table.appendChild(tr);
	// create totals row
	var tr 	= document.createElement("tr");
	var td1 = document.createElement("td");
	var td2 = document.createElement("td");
	var td3 = document.createElement("td");
	tr.style.fontWeight = "bold";
	td1.colSpan = "6";
	td1.align = "right";
	td1.className = "boldText";
	td2.align = "right";
	td2.className = "boldText";
	var txt1 	= document.createTextNode("Total:");
	var txt2 	= document.createTextNode(totalCost);
	var txt3 	= document.createTextNode(" UK pounds");
	td1.appendChild(txt1);
	td2.appendChild(txt2);
	td3.appendChild(txt3);
	tr.appendChild(td1);
	tr.appendChild(td2);
	tr.appendChild(td3);
	// append totals row to table
	table.appendChild(tr);
	// alert user to out of stock goods if necessary
	if (numOutOfStock > 0) {
		if (numOutOfStock == cartArray.length) {
			alert("Sorry, the items you chose are now out of stock - your shopping basket is empty");
			// empty the user's cart
			setCookie("FactoryOneCart", "", getExpDate(30,0,0), "/");
			return;
		}
		else {
			alert("Sorry, but " + numOutOfStock + " of the items in your shopping basket is now out of stock");
		}
	}
	// show the cart and post layers
	showHideLayers("cartDiv","","show");
	//showHideLayers("postDiv","","show");
}


function removeItem(itemIndex) {
	// clear item in array
	cartArray[itemIndex] = "";
	// convert array to string
	var cart = cartArray.join("+");
	// remove any unwanted +'s
	cart = cart.replace("++", "+");
	if (cart.charAt(0) == "+") { cart = cart.substring(1); }
	if (cart.charAt(cart.length-1) == "+") { cart = cart.substring(0,cart.length-1); }
	// repopulate cookie
	setCookie("FactoryOneCart", cart, getExpDate(30,0,0), "/");
	// refresh page
	document.location = "cart.html";
}


// rounds a double to a specified number of decimal places
// if no decimal places are specified, 1 DP is assumed
function roundDouble(theNumber, decimalPlaces, retainTrailingZeroes) {
	var roundingFactor = 10;
	if(decimalPlaces) {
		roundingFactor = Math.pow(10, decimalPlaces);
	} else {
		decimalPlaces = 1;
	}
	var roundedNumber = Math.round(theNumber * roundingFactor) / (roundingFactor * 1.0);
	// add some trailing 0s if we're not 0
	if(roundedNumber != 0 && retainTrailingZeroes) {
		roundedNumber += "";
		var dpIndex = roundedNumber.indexOf(".");
		if(dpIndex == -1) {
			roundedNumber += ".";
			for(i = 0; i < decimalPlaces; i++) {
				roundedNumber += "0";
			}
		} else {
			var extraZeroes = decimalPlaces - (roundedNumber.length - dpIndex - 1);	// as index is zero-based, but length is absolute
			for(i = 0; i < extraZeroes && i >= 0; i++) {
				roundedNumber += "0";
			}
		}
	}
	return roundedNumber;
}


function checkout() {
	// build description
	var prodDesc = "";
	for (var i=0; i<cartArray.length; i++) {
		if (i > 0) {
			prodDesc += ", ";
		}
		var itemIndex;
		for (var j=0; j<shopItems.length; j++) {
			if (shopItems[j].stockCode == cartArray[i]) {
				itemIndex = j;
				break;
			}
		}
		prodDesc += shopItems[itemIndex].productType + " ";
//		if (shopItems[itemIndex].productDesign) {
//			prodDesc += shopItems[itemIndex].productDesign + " ";
//		}
//		if (shopItems[itemIndex].engineType) {
//			prodDesc += shopItems[itemIndex].engineType + " ";
//		}
//		if (shopItems[itemIndex].bikeMake) {
//			prodDesc += shopItems[itemIndex].bikeMake + " ";
//		}
//		if (shopItems[itemIndex].alloyColour) {
//			prodDesc += shopItems[itemIndex].alloyColour + " ";
//		}
//		if (shopItems[itemIndex].colour) {
//			prodDesc += shopItems[itemIndex].colour + " ";
//		}
		prodDesc += ( "(" + shopItems[itemIndex].stockCode + ")" );
	}
	// check description length
	if (prodDesc.length > 255) {
		alert("You currently have too many items in your basket for a single order.\n\nIf you wish to purchase this many items you must place multiple orders.\n\nPlease remove some items from your basket to proceed.");
		return;
	}
	// check for problems, if there are any then refresh page
	var cartProds = cartArray.join("");
	if (cartProds == "" || productsCost == "") {
		document.location = "cart.html";
		return;
	}
	// empty the user's cart
	setCookie("FactoryOneCart", "", getExpDate(30,0,0), "/");
	// populate and submit form
	document.forms[0].amount.value = productsCost;
	document.forms[0].postage.value = postageCost;
	document.forms[0].description.value = prodDesc;
	// todo: populate orderid ?
	//alert("submitting..."); return;
	document.forms[0].submit();
}


function launchReturnsWin() {
	var h = 330;
	var w = 605;
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	var settings="height=" + h + ",width=" + w + ",top=" + TopPosition + ",left=" + LeftPosition + ",scrollbars=no,resizable=no,status=no,toolbar=no,menubar=no";
	newWindow = window.open( "popups/returns.html", "Returns_Window", settings);
	setTimeout('newWindow.focus()',0);
}
