/////////// SHOPPING CART /////////////////

var COOKIE_CART = "CK_CART_CONTENTS";
var cartString = getCookie(COOKIE_CART);
if (!cartString)
{
	cartString = "";
}

function add2cart(productKey, quantity, description, price, callback)
{
	if (cartString != "")
	{
		cartString += "\n";
	}
	cartString += productKey + "|" + quantity + "|" + price + "|" + encodeURIComponent(description);
	var divMessage = document.getElementById("divCartMessage");
	if (divMessage)
	{
		divMessage.innerHTML = SBPhrases["CART_ADDED"];
	}
	else
	{
		alert(SBPhrases["CART_ADDED"]);		
	}
	if ((window.parent) && (window.parent.cartString)) //bug fix
	{
		window.parent.cartString = cartString;
	}
	refreshCart(callback);
}

var itemTemplate = "";
function refreshCart(callback)
{
	setCookie(COOKIE_CART, cartString);
	var items = cartString.split("\n");
	var divItems = document.getElementById("divCartItems");
	var btnCheckout = document.getElementById("btnCheckout");
	if (divItems)
	{
		if (itemTemplate == "")
		{
			itemTemplate = divItems.innerHTML;
		}
		divItems.innerHTML = "";
		
		if (items[0] != "")
		{
			for (var i = 0; i < items.length; i++)
			{
				var fields = items[i].split("|");
				var key = fields[0];
				var qty = fields[1];
				var price = fields[2];
				var name = decodeURIComponent(fields[3]);
				divItems.innerHTML += String.format(itemTemplate, i, name, qty, floatToCurrency(currencyToFloat(price)));
			}
			if (btnCheckout)
			{
				btnCheckout.style.visibility = "visible";
			}
			divItems.style.visibility = "visible";
		}
		else
		{
			var divMessage = document.getElementById("divCartMessage");
			if (divMessage)
			{
				divMessage.innerHTML = SBPhrases["CART_EMPTY"];
				divMessage.innerHTML += "<style>input[type='submit'] {display: none}"; //Lousy
			}
			else
			{
				alert(SBPhrases["CART_EMPTY"]);		
			}
		}
	}
	/* item count */
	var spanCartCount = document.getElementById("spanCartCount");
	if (spanCartCount)
	{
		var itemCount = 0;
		if (items[0] != "")
		{
			itemCount = items.length;
		}
		spanCartCount.innerHTML = itemCount;
	}
	/* item count */
	var spanCartSubTotal = document.getElementById("spanCartSubTotal");
	if (spanCartSubTotal)
	{
		var subTotal = 0;
		if (items[0] != "")
		{
			for (var i = 0; i < items.length; i++)
			{
				var fields = items[i].split("|");
				var qty = parseFloat(fields[1]);
				var price = currencyToFloat(fields[2]);
				subTotal += qty * price;
				subTotal = Math.round(subTotal * 100) / 100; //Bizarre JS bug causing waaaaaaaaaay to many decimals (in FF anyway...)
			}
		}
		spanCartSubTotal.innerHTML = floatToCurrency(subTotal); 
	}
	/* other website specific stuff */
	if (callback && (typeof callback == 'function'))
	{
		callback();
	}
}

function currencyToFloat(val)
{
	return parseFloat(val.replace(sbDollarSymbol, "").replace(sbDecimalSymbol, "."));
}

function floatToCurrency(num)
{
	var val = num.toString();
	/* no decimal point, add one */
	if (val.indexOf(".") < 0)
	{
		val += ".";
	}
	/* two digits after the decimal point */
	while (val.indexOf(".") >= val.length - 2)
	{
		val += "0";
	}
	return val.replace(".", sbDecimalSymbol) + " " + sbDollarSymbol; 
}

function removeItem(index)
{
	var items = cartString.split("\n");
	cartString = "";
	for (var i = 0; i < items.length; i++)
	{
		if (i != index)
		{
			if (cartString != "")
			{
				cartString += "\n";
			}
			cartString += items[i];
		}
	}
	if ((window.parent) && (window.parent.cartString)) //bug fix
	{
		window.parent.cartString = cartString;
	}
	var divMessage = document.getElementById("divCartMessage");
	if (divMessage)
	{
		divMessage.innerHTML = SBPhrases["CART_REMOVED"];
	}
	else
	{
		alert(SBPhrases["CART_REMOVED"]);
	}
	refreshCart();
}

function updateItem(index)
{
	var items = cartString.split("\n");
	cartString = "";
	for (var i = 0; i < items.length; i++)
	{
		if (cartString != "")
		{
			cartString += "\n";
		}
		var fields = items[i].split("|");
		var key = fields[0];
		var qty = fields[1];
		var price = fields[2];
		var description = fields[3];
		//var name = unescape(fields[2]);
		if (i == index)
		{
			qty = $("#divCartItems input")[index].value;
		}
		if (isNaN(qty))
		{
			qty = 1;
		}
		else
		{
			qty = parseInt(qty);
		}
		if (qty <= 0)
		{
			qty = 1;
		}
		cartString += String.format("{0}|{1}|{2}|{3}", key, qty, price, description);
	}
	if ((window.parent) && (window.parent.cartString)) //bug fix
	{
		window.parent.cartString = cartString;
	}
	var divMessage = document.getElementById("divCartMessage")
	if (divMessage)
	{
		divMessage.innerHTML = SBPhrases["CART_UPDATED"];
	}
	refreshCart();
}

function SendRequest2()
{
	var lblEmail = document.getElementById("ctl00_lblUsername");
	if (lblEmail)
	{
		var email = lblEmail.innerHTML;
		var msg = document.getElementById("divUserProfile").innerHTML + 
					"\r\n-------------------------------------------\r\n" + SBPhrases["CART_SUMMARY"] + ":\r\n";
		/* Build message string */
		var items = cartString.split("\n");
		if (items[0] != "")
		{
			for (var i = 0; i < items.length; i++)
			{
				var fields = items[i].split("|");
				var qty = fields[1];
				var name = unescape(fields[2]);
				msg += String.format("{0}\t{1}\r\n", qty, name);
			}
		}

		/* Send message */
		var pl = new SOAPClientParameters();
		pl.add("Subject", SBPhrases["CART_SUMMARY"]);
		pl.add("Message", msg);
		pl.add("ReplyTo", email);
		SOAPClient.invoke(URL_SOAP_TOOLBOX, "SendPowerEmail", pl, true, ajaxMailTo_CallBack2);
	}
	else
	{
		if (confirm("You must be logged-in, create an account now?"))
		{
			document.location = document.getElementById('ctl00_lnkNewClient').href;
		}
	}		
}

function ajaxMailTo_CallBack2(data)
{
	if (data)
	{
		alert("Unexpected error: " + data.toSource());
	}
	else
	{
		if (confirm("Your request for quotation was sent successfully, empty basket?"))
		{
			cartString = "";
			refreshCart();
		}
	}
}

