var BasketItemID = 0, BasketQty = 0;
var CookieType = 0;
var BasketItems = 0, BasketTotal = 0.00;

function checkAddToBasket(ItemID, nOptions)
{
var Qty = document.getElementById('qty' + ItemID).value;
var ItemPrice = document.getElementById('v' + ItemID).innerHTML;
var aOptionData, OptionID=0;
	if (!canUseCookie()) alert("You need to have cookies enabled to use our online shop");
	if (nOptions!=0)
	{
		aOptionData = document.getElementById('o' + ItemID).value.split('-');
		OptionID = aOptionData[0];
	}
	if (isNaN(Qty) || parseInt(Qty,10)<0) Qty = 1;
	if (Qty!=0)
	{
		var BasketID = ItemID + ':' + OptionID;
		addToBasket(BasketID, parseInt(Qty,10), ItemPrice);
		markBasketItem(BasketID);
	}
}

function updateItemQtyInBasket(ItemID, Qty, ItemPrice)
{
var sBasketCookie = new String(getCookie("Basket"));
	var NewQty = parseInt(Qty, 10);
	getItemFromBasketCookie(ItemID, sBasketCookie);
	var OldQty = BasketQty;
	BasketQty = NewQty;
	sBasketCookie = setItemToBasketCookie(sBasketCookie);
	setCookie("Basket",sBasketCookie,"days",5);
	BasketTotal+= ((NewQty * ItemPrice) - (OldQty * ItemPrice));
	BasketItems+= (NewQty - OldQty);
	updateBasketSummary();
}

function addToBasket(ItemID, Qty, ItemPrice)
{
var sBasketCookie = new String(getCookie("Basket"));
	var ItemQty = parseInt(Qty, 10);
	BasketTotal+= (ItemQty * ItemPrice);
	if (getItemFromBasketCookie(ItemID, sBasketCookie)) BasketQty+= ItemQty; else BasketQty = ItemQty;
	BasketItems+= ItemQty;
	BasketItemID = ItemID;
	sBasketCookie = setItemToBasketCookie(sBasketCookie);
	setCookie("Basket",sBasketCookie,"days",5);
	updateBasketSummary();
}

function removeFromBasket(ItemID, ItemPrice)
{
var sBasketCookie = new String(getCookie("Basket"));
	getItemFromBasketCookie(ItemID, sBasketCookie);
	var OldQty = BasketQty;
	BasketQty = 0;
	sBasketCookie = setItemToBasketCookie(sBasketCookie);
	setCookie("Basket",sBasketCookie,"days",5);
	BasketTotal-= (OldQty * ItemPrice);
	BasketItems-= OldQty;
	updateBasketSummary();
	document.getElementById("total").innerHTML = '&pound;' + BasketTotal.toFixed(2);
}

function updateBasket()
{
var oTable = document.getElementById("tabBasket");
var ItemID = 0, Qty, ItemPrice;
	for (var nRow=1; nRow<oTable.rows.length-1; nRow++)
	{
		ItemID = oTable.rows[nRow].id.substr(1);
		Qty = document.getElementById('qty' + ItemID).value;
		ItemPrice = document.getElementById('price' + ItemID).innerHTML.substr(1);
		if (isNaN(Qty) || parseInt(Qty,10)<=0) Qty = 1;
		document.getElementById('qty' + ItemID).value = parseInt(Qty,10);
		updateItemQtyInBasket(ItemID, parseInt(Qty,10), ItemPrice);
		document.getElementById('tot' + ItemID).innerHTML = '&pound;' + (parseInt(Qty,10) * ItemPrice).toFixed(2);
	}
	updateBasketSummary();
	document.getElementById("total").innerHTML = '&pound;' + BasketTotal.toFixed(2);
}

function canUseCookie ()
{
	setCookie("test", "Enabled", "minutes", 1);
	return (getCookie("test")=="Enabled");
}


function getCookie (sCookieName)
{
var regExp = new RegExp (escape(sCookieName) + "=([^;]+)");
 	if (regExp.test (document.cookie + ";"))
 	{
    		regExp.exec (document.cookie + ";");
    		return unescape(RegExp.$1);
  	}
  	return "";
}


function setCookie (sCookieName, sCookieValue, sPeriodType, nPeriod)
{
var datExpires = new Date ();
	switch (sPeriodType.toLowerCase())
	{
		case "years": 
		var nYear = datExpires.getYear();     
			if (datExpires<1000) nYear+= 1900;     
			datExpires.setYear(datExpires + nPeriod);
		break;
		case "months":
			datExpires.setMonth(datExpires.getMonth() + nPeriod);
		break;
		case "days":
			datExpires.setDate(datExpires.getDate() + nPeriod);
		break;
		case "hours":
			datExpires.setHours(datExpires.getHours() + nPeriod);
		break;
		case "minutes":
			datExpires.setMinutes(datExpires.getMinutes() + nPeriod);
		break;
		case "seconds":
			datExpires.setSeconds(datExpires.getSeconds() + nPeriod);
		break;
		default:
			alert ("Invalid period type parameter for setCookie()");
		break;
	} 
	document.cookie = escape(sCookieName ) + "=" + escape(sCookieValue) + "; expires=" + datExpires.toGMTString() + "; path=/";
}

function deleteCookie (sCookieName)
{
	setCookie (sCookieName,"* deleting *","seconds", 0);  
}

function getItemFromBasketCookie(ItemID, sBasketCookie)
{
	var nItemStart = sBasketCookie.indexOf(ItemID + "&");
	if (nItemStart<0) return false;
	var nItemEnd = sBasketCookie.indexOf("£", nItemStart+1);
	var sItem = sBasketCookie.substr(nItemStart, nItemEnd);
	var ItemData = sItem.split("&");
	
	BasketItemID = ItemData[0]
	BasketQty = parseInt(ItemData[1], 10);
	return true;
}

function setItemToBasketCookie(sBasketCookie)
{
var sNewBasketCookie = new String(sBasketCookie);
var nItemStart = sNewBasketCookie.indexOf(BasketItemID + "&")
var sItem = BasketItemID + '&' + BasketQty + '£';
	if (nItemStart >= 0)
	{
	var nItemEnd = sNewBasketCookie.indexOf("£", nItemStart+1)
		if (parseInt(BasketQty,10)==0) sItem = '';
		sNewBasketCookie = sNewBasketCookie.substr(0, nItemStart) + sItem + sNewBasketCookie.substr(nItemEnd+1); 
	}
	else
	{
		sNewBasketCookie+= sItem;
	}
	return sNewBasketCookie;
}

function showEmptyBasket()
{
	if (BasketItems==0)
	{
		document.getElementById('tabBasket').style.display = 'none';
		document.getElementById('tabNoBasket').style.display = '';
		var oPPButton = document.getElementById('btnPayPal');
		oPPButton.disabled = true;
		oPPButton.src = oPPButton.src.replace("buynow","verified");
		oPPButton.style.cursor = 'default';
	}
}

function updateBasketSummary()
{
	document.getElementById('tdBasketSummary').innerHTML = 'items: ' + BasketItems + ' | total: £' + BasketTotal.toFixed(2);
	showEmptyBasket();
}

function markBasketItem(BasketID)
{
	var sBasketCookie = new String(getCookie("Basket"));
	var aBasketIDs = BasketID.split(":");
	var oImg = document.getElementById('img' + aBasketIDs[0]);
	if (getItemFromBasketCookie(BasketID, sBasketCookie)) oImg.style.display = ''; else oImg.style.display = 'none';
}

function showPageStatus()
{
var sStatus;
var oStatus = document.getElementById("divstatus");
	sStatus = sPageStatus;
	if (nPage==1 && nPages==1)
	{
		sStatus+= 'Displaying <b>ALL</b> items';
	}
	else
	{
		if (nPages!=0) sStatus+='<br/>Displaying page <b>' + nPage + '</b> of ' + nPages;
	}
	if (oStatus)
	{
		oStatus.innerHTML = '<div style="padding-right:16px;"><div>' + sStatus + '</div><div style="padding-top:4px;">' + sPages + '</div></div>';
		oStatus.style.display = 'block';
	}
}

function changeOption(ItemID)
{
	var aOptions = document.getElementById("o" + ItemID).value.split("-");
	var OptionID = aOptions[0];
	var Price = aOptions[1];
	var StockLevel = aOptions[2];
	showPrice (ItemID, Price, StockLevel);
	markBasketItem(ItemID + ':' + OptionID);
}

function showPrice (ItemID, Price, StockLevel)
{
var oPrice = document.getElementById("v" + ItemID);
	if (StockLevel==0)
	{
		document.getElementById("q" + ItemID).style.display="none";
		document.getElementById("x" + ItemID).style.display="";
	}
	else
	{
		document.getElementById("x" + ItemID).style.display="none";
	}
	if (Price==0)
	{
		document.getElementById("q" + ItemID).style.display="none";
		oPrice.innerHTML = "Call";
	}
	else
	{
		oPrice.innerHTML = Price;
		if (StockLevel!=0)
		{
			document.getElementById("q" + ItemID).style.display="";
		}
	}
}
