// JavaScript Document

Ticket = function(adult, u16, row, totaler){
	this.adult_price = adult;
	this.u16_price = u16;
	this.rowid = row;
	this.totaler = totaler;
	this.currentTotal = 0;
}

Ticket.prototype = {
	adult_price: null,
	u16_price: null,
	rowid: null,
	id: null,
	total: null,
	spinner1: null,
	spinner2: null,
	total: null,
	currentTotal: null,
	
	/**
	* Renders the ticket in the page
	*/
	render: function(){
		this.id = "spinner:" + this.rowid;
		var row = document.getElementById(this.rowid);
		var td = document.createElement("td");
		this.spinner1 = this.createSpinner(1);
		td.appendChild(this.spinner1);
		row.appendChild(td);
		if(this.u16_price){
			var td1 = document.createElement("td");
			this.spinner2 = this.createSpinner(2);
			td1.appendChild(this.spinner2);
		}else{
			var td1 = document.createElement("td");
			td1.innerHTML = "&nbsp;";
		}
		row.appendChild(td1);
		
		this.total = document.createElement("td");
		this.total.innerHTML = "<strong>&pound; 0</strong>";
		row.appendChild(this.total);
		
	},
	
	calculateTotal: function(){
		var adult = this.spinner1.value * this.adult_price;
		var sum = 0;
		if(this.u16_price){
			var child = this.spinner2.value * this.u16_price;
			sum = parseInt(adult) + parseInt(child);
		}else{
			sum = adult;
		}
		this.currentTotal = sum;
		this.total.innerHTML = "<strong>&pound;" + sum + "</strong>";
	},
	
	getTotal: function(){
		return this.currentTotal;
	},
	
	/**
	* create a spinner
	*/
	createSpinner: function(n){	
		var me = this;
		var spinner = document.createElement("select");
		for(var i = 0; i < 30; i++){
			var option = document.createElement("option");
			option.setAttribute("value", i);
			option.appendChild(document.createTextNode(i));
			spinner.appendChild(option);
		}
		
		spinner.onchange = function(){
			me.calculateTotal();
			me.totaler.calcGrandTotal();
		};
		
		return spinner;
	}
	
};

GrandTotal = function(gtid){
	this.totals = new Array();
	this.gtid = gtid;
}

GrandTotal.prototype = {
	totals: null,
	
	addTicket: function(ticket){
		this.totals.push(ticket);
		ticket.render();
	},
	
	calcGrandTotal: function(){
		var gt = document.getElementById(this.gtid);
		var sum = 0;
		for(var i = 0; i < this.totals.length; i++){
			sum += parseInt(this.totals[i].getTotal());
		}
		gt.innerHTML = "<strong>&pound;" + sum + "</strong>";
	}
};
	