
var basket = new Array();
var ids = new Array();

var today = new Date();
var endDate = new Date();
//the month needs to be as if months started at zero eg may = 04 not 05
endDate.setFullYear(2009,06,01);

var hasHandling = false;
var hasTshirts = false;

var handlingFee = 4;

function addToBasket(id, name, before, after, quantity, extra1name, extra1value, extra2name, extra2value){
	if(!checkCamping(id))return;
	var item = new Object();
	item.id = id;
	item.name = name;
	today >= endDate? item.amount = after: item.amount = before; 
	item.quantity = quantity;
	
	/** extra values **/
	if(extra1name){
		item.ex1n = extra1name;
		item.ex1v = extra1value;
	}
	if(extra2name){
		item.ex2n = extra2name;
		item.ex2v = extra2value;
	}
	
	if(basket[item.id]){
		var exisiting = basket[item.id];
		exisiting.quantity = parseInt(exisiting.quantity) + parseInt(quantity); 
		basket[item.id] = exisiting;
	}else{
		basket[item.id] = item;
		ids[ids.length] = item.id; 
	}
	renderBasket();
}

function calcTotal(){
	var sum = 0;
	
	var tshirtCount = 0;
	hasTshirts = false;
	for(var i = 0; i < ids.length; i++){
		var item = basket[ids[i]];
		sum = sum + item.quantity * item.amount;
		if(ids[i].substring(0,2) == "TS"){
			tshirtCount++;
			hasTshirts = true;
		}
	}
	
	if(ids.length >0 && ids.length > tshirtCount){
		document.getElementById('handling').innerHTML = "&pound " + parseFloat(handlingFee).toFixed(2);
		sum = parseFloat(sum) + handlingFee;
		hasHandling = true;
	}else{
		document.getElementById('button').disabled = true;
		document.getElementById('button').src = "images/paynow_disabled.png";
		document.getElementById('button').style.cursor = "default";
		document.getElementById('handling').innerHTML = "&pound; 0.00";
		hasHandling = false;
	}
	
	if(hasTshirts){
		document.getElementById('postage').innerHTML = "&pound 1.50";
		sum = parseFloat(sum) + 1.50;
	}else{
		document.getElementById('postage').innerHTML = "&pound 0.00";
	}
	
	if(ids.length > 0){
		document.getElementById('button').disabled = false;
		document.getElementById('button').src = "images/paynow.png";
		document.getElementById('button').style.cursor = "pointer";
	}
	
	document.getElementById('grandtotal').innerHTML = "&pound " + sum.toFixed(2);
}

var tcounter = 1;
function addTShirt(s, q, price){
	var size = document.getElementById(s).value;
	var quantity = document.getElementById(q).value;
	
	addToBasket("TS" + size, "Festival T-Shirt", price, price, quantity, "Size", size);
	
	document.getElementById(s).value = 'S';
	document.getElementById(q).value = 1;
}

function addCampingType(type,name, q){
	var quantity = document.getElementById(q).value;
	addToBasket(type, name,0,0,quantity);
}

function addConcertTicket(type,name, q, aprice, cprice){
	var quantity = document.getElementById(q + "adult").value;
	if(quantity > 0){
		addToBasket(type + "A", name + " (adult)",aprice,aprice,quantity);
	}
	quantity = document.getElementById(q + "child").value;
	if(quantity > 0){
		addToBasket(type + "C", name + " (child)",cprice,cprice,quantity);
	}
	
}

var indcampcounter = 1;

function addIndividualCamping(date, nights, adult, child){
	var adults = document.getElementById(adult).value;
	if(adults == 0){
		alert("You must select at least one adult");
		return;
	}
	var children = document.getElementById(child).value;
	var numnights = document.getElementById(nights).value;
	var date = document.getElementById(date).value;
	var cost = 8 * parseInt(numnights);
	addToBasket("ICA" + indcampcounter, "Individual Camping Adult", cost, cost, adults, "Arrival Date", date, "Nights", numnights );
	if(children > 0){
		var childCost = 4 * parseInt(numnights);
		addToBasket("ICC" + indcampcounter, "Individual Camping U/16", childCost, childCost, children,  "Arrival Date", date, "Nights", numnights);
	}
	indcampcounter++;
	
	document.getElementById(adult).value = 0;
	document.getElementById(child).value = 0;
	document.getElementById(nights).value = 1;
}

function checkCamping(id){
	if((id == '7DSC') && !( basket['7DSAC'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	}
	if((id == '3DS') && !( basket['3DSA'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	}
	if((id == '3DSC') && !( basket['3DSAC'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	}
	if((id == '4DS') && !( basket['4DSA'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	
	}
	if((id == '4DSC') && !( basket['4DSAC'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	
	}
	if((id == '7DCO') && !( basket['7DCOA'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	
	}
	if((id == '7DSO') && !( basket['7DSAO'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	
	}
	if((id == '7DS') && !( basket['7DCSA'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	
	}
	if((id == '4DCC') && !( basket['4DCA'])){
		alert("U16 must be accompanied by at least one adult when camping");
		return false;
	}
	
	return true;
}

function checkIndCamping(id, child){
	var select = document.getElementById(id);
	if(select.value == 0){
		alert("U16 must be accompanied by at least one adult when camping");
		child.value = 0;
	}
}

function removeItem(id){
	//remove by copying
	var newbasket = new Array();
	var newids = new Array(); 
	for(var i = 0; i < ids.length; i++){
		if(ids[i] != id){
			newbasket[ids[i]] = basket[ids[i]];
			newids[newids.length] = ids[i];
		}
	}
	basket = newbasket;
	ids = newids;
	
	/**
	* Need to remove child camping if an adult camping is being removed
	*/
	if(id == '7DSAC' && findItem('7DSC')){
		removeItem('7DSC');
	}
	if(id == '3DSA' && findItem('3DS')){
		removeItem('3DS');
	}
	
	if(id == '3DSAC' && findItem('3DSC')){
		removeItem('3DSC');
	}
	
	if(id == '4DSAC' && findItem('4DSC')){
		removeItem('4DSC');
	}
	
	if(id == '7DCOA' && findItem('7DCO')){
		removeItem ('7DCO');
	
	}
	if(id == '7DSAO' && findItem('7DSO')){
		removeItem ('7DSO');
	
	}
		
	if(id == '4DCA' && findItem('4DCC')){
		removeItem ('4DCC');
	
	}
	
	if(id == '4DSA' && findItem('4DS')){
		removeItem ('4DS');
	
	}

	if(id.substring(0,3) == 'ICA' && findItem('ICC' + id.substring(3))){
		removeItem('ICC' + id.substring(3));
	}
	
	//and rerender it
	renderBasket();
}


function removeAll(){
	var items = document.getElementById("items");
	while(items.hasChildNodes()){
		items.removeChild(items.lastChild);
	}
}

function renderBasket(){
	var items = document.getElementById("items");
	removeAll();
	
	for(var i = 0; i < ids.length; i++){
		var element = document.createElement("DIV");
		setClass(element, "item");
		
		var name = document.createElement("DIV");
		var klass = "name";
		if(basket[ids[i]].id == '7DCC' || basket[ids[i]].id == '3DCC' || basket[ids[i]].id.substring(0,3) == 'ICC'){
			klass = klass + " child";
		}
		
		setClass(name, klass);
		name.innerHTML = basket[ids[i]].name;
		
		var quantity = document.createElement("DIV");
		quantity.innerHTML = basket[ids[i]].quantity;
		setClass(quantity, "quantity");
		
		var total = document.createElement("DIV");
		total.innerHTML = (parseFloat(basket[ids[i]].quantity) * parseFloat(basket[ids[i]].amount)).toFixed(2);
		setClass(total, "total");
		
		var remove = document.createElement("DIV");
		setClass(remove, "remove");
		remove.innerHTML = "<a href='javascript:{}' onclick='javascript:removeItem(\"" + basket[ids[i]].id +  "\")'>remove</a>";
		
		element.appendChild(name);
		element.appendChild(quantity);
		element.appendChild(total);
		element.appendChild(remove);
		
		items.appendChild(element);
		
		if(basket[ids[i]].ex1n){
			addExtras(basket[ids[i]], items);
		}
	}
	calcTotal();
}

function setClass(element, klass){
	element.setAttribute("class", klass);
	element.className = klass;
}

function addExtras(item, items){
	var element = document.createElement("DIV");
	setClass(element, "extra");
	
	var name = document.createElement("DIV");
	name.innerHTML = item.ex1n + ": " + item.ex1v;
	setClass(name, "ex");
	
	element.appendChild(name);
	if(item.ex2n){
		var name2 = document.createElement("DIV");
		name2.innerHTML = item.ex2n + ": " + item.ex2v;
		setClass(name2, "ex");
		element.appendChild(name2);
	}
	
	items.appendChild(element);
}

function findItem(id){
	for(var i = 0; i < ids.length; i++){
		if(ids[i].substring(0, id.length) == id){
			return basket[ids[i]];
		}
	}
	return null;
}

