﻿
/// <reference path="util.js" />

var corp = null;

util.addEvent(window, 'load', function() {
	if(typeof(corpData) != 'undefined') {
		corp = new corporateData();
	}
});

function corporateData() 
{
	var self = this;
	this.container = document.getElementById('choiceData');
	this.table = null;
	this.data = corpData;
	this.hasUnitPrice = false;
	this.hasSetupPrice = false;
	this.licenses = document.getElementById('licenses');
	this.rows = new Array();
	this.selected = null;

	this.calcHasUnitPrice = function() {
		for(var i=0; i<self.data.length; i++) if(self.data[i].seat > 0) return true;
		return false;
	}
	
	this.calcHasSetupPrice = function() {
		for(var i=0; i<self.data.length; i++) if(self.data[i].setup > 0) return true;
		return false;
	}
	
	this.createTD = function(text) {
		var result = document.createElement('td');
		result.innerHTML = text;
		return result;
	}
	
	this.createHeader = function() {
		var tr = document.createElement('tr');
		tr.className = 'header';
		tr.appendChild(self.createTD('&nbsp;'));
		tr.appendChild(self.createTD('&nbsp;'));
		
		if(self.hasUnitPrice && self.hasSetupPrice) {
			tr.appendChild(self.createTD('Setup Cost'));
		}
		if(self.hasUnitPrice) {
			tr.appendChild(self.createTD('Unit Price'));
		}
		tr.appendChild(self.createTD('Total Price'));
		
		return tr;
	}

	this.init = function() {
		this.hasUnitPrice = self.calcHasUnitPrice();
		this.hasSetupPrice = self.calcHasSetupPrice();

		var tbody = document.createElement('tbody');
		self.table = document.createElement('table');
		self.table.appendChild(tbody);
		self.table.cellSpacing = 0;

		tbody.appendChild(self.createHeader());
		var years = 0, c = 0;
		for(var i=0; i<self.data.length; i++) {
			if(years != self.data[i].years) {
				years = self.data[i].years;
				var tr = document.createElement('tr');
				
				tr.input = document.createElement('input');
				tr.input.type = 'radio';
				tr.input.name = 'years';
				tr.input.value = years;
				var td = document.createElement('td');
				td.appendChild(tr.input);
				tr.appendChild(td);
				
				tr.appendChild(self.createTD(years  + ' Year' + (years > 1 ? 's' : '')));
				
				if(self.hasUnitPrice && self.hasSetupPrice) {
					tr.setup = self.createTD(priceSymbol + self.data[i]['setup']);
					tr.appendChild(tr.setup);
				}

				if(self.hasUnitPrice) {
					tr.unit = self.createTD(priceSymbol + self.data[i]['seat']);
					tr.appendChild(tr.unit);
				}
				
				tr.onclick = self.select;
				
				tr.price = self.createTD('---');
				tr.appendChild(tr.price);
				tr.price.className = 'total';
				tbody.appendChild(tr);
				
				tr.id = self.data[i].id;
				tr.years = years;
				
				self.rows[c++] = tr;
			}
		}
		
		self.selectItem = function(item) {
			self.licenses.value = item.quantity;
			self.licensesChange();
			for(var i=0; i<self.rows.length; i++) {
				if(self.rows[i].id == item.id) self.select(null, self.rows[i]);
			}
			self.submit.value = 'Update basket';
		}
		
		self.container.appendChild(self.table);
		
		self.submit = document.createElement('input');
		self.submit.type = 'submit';
		self.submit.className = 'buybutton complete';
		self.submit.value = 'Add to basket';
		self.container.appendChild(self.submit );
		
		if(self.licenses.tagName.toLowerCase() == 'input') {
			self.licenses.onkeyup = self.licenses.onclick = self.licenses.onpaste = self.licenses.onfocus = self.licenses.onblur = self.licensesChange;
		} else {
			self.licenses.onclick = self.licenses.onchange = self.licenses.onblur = self.licensesChange;
		}
		self.calcPrice();
		self.select(null, self.rows[0]);
		
		if(selCorpItem != null)  self.selectItem(selCorpItem);
	}
	
	this.select = function(e, element) {
		if(!element) element = this;
		if(self.selected != null) {
			self.selected.className = '';
			self.selected.input.checked = false;
		}
		self.selected = element;
		self.selected.className = 'select';
		self.selected.input.checked = true;
		
		self.submit.name = 'BUYCORPORATE_' + self.selected.id;
	}
	
	this.licensesChange = function(e) {
		self.calcPrice();
		/*if(!e) e = window.event;
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		if(keyCode == 13) { alert('here'); return false; }*/
	}
	
	this.calcPrice = function() {
		var val = self.licenses.value * 1;
		
		var unit = 0, seat = 0, setup = 0, id = 0;
		for(var i=0; i<self.rows.length; i++) {
			for(var j=0; j<self.data.length; j++) {
				if(self.data[j].years == self.rows[i].years && self.data[j].min <= val && self.data[j].max >= val) {
					setup = self.data[j].setup;
					seat = self.data[j].seat;
					self.rows[i].id = self.data[j].id;
					if(self.selected == self.rows[i]) self.submit.name = 'BUYCORPORATE_' + self.rows[i].id;
				}
			}
			if(self.hasUnitPrice) self.rows[i].unit.innerHTML = (seat > 0 ? priceSymbol + seat : '---');
			if(self.hasSetupPrice && self.hasUnitPrice) self.rows[i].setup.innerHTML = (setup > 0 ? priceSymbol + setup : '---');
			
			self.submit.disabled = false;
			self.submit.className = 'buybutton complete';
			self.submit.title = '';
			var ok = false;
			if(!isNaN(val) && (setup > 0 || seat > 0)) {
			
				val = Math.round(val);
				if(setup + (seat * val) != 0)
				{
					self.rows[i].price.innerHTML = priceSymbol + util.toPrice(setup + (seat * val));
					ok = true;
				}
				if(val != (self.licenses.value * 1)) self.licenses.value = val;
			}
			if(!ok) {
				self.rows[i].price.innerHTML = '---';
				self.submit.disabled = true;
				self.submit.className = 'buybutton complete disabled';
				self.submit.title = 'You must enter a valid number of licenses before you can add this product to your basket';
			}
		}
	}

	self.container.innerHTML = '';
	this.init();
}

