// calculates points and salary to get the Key Personnel Value
function calculateTotal() {
	var salaryPackage	= $('salary').value;
	var totalPoints		= 0;
	var keyPerValue		= 0;
	var eleFocus;
	var successful = true;

	
	// checks is a level has been selected for all
	$$('.level select').each(function(obj){
		if (isNumeric(obj.value)) {
			$(obj.id+'row').removeClassName('rowError');
			totalPoints = Number(totalPoints) + Number(obj.value);
		}
		else {
			$(obj.id+'row').addClassName('rowError');
			if (eleFocus == null)
				eleFocus = obj;
		}
	});

	// checks if salary package is a legitimate number
	if (isNumeric(salaryPackage)) 
		$('totalSummary').removeClassName('rowError');
	else {
		$('totalSummary').addClassName('rowError');
		if (eleFocus == null) 
			eleFocus = salaryPackage;
	}
	
	// displays errors on page
	if (eleFocus != null) {
		eleFocus.focus();
		$('ErrorMessage').style.display = '';
		successful = false
	}
	else
		$('ErrorMessage').style.display = 'none';

	// no errors so, displays Key Personnel Value
	if (successful == true) {
		keyPerValue = Number(totalPoints) * Number(salaryPackage);
		$('personnelValue').innerHTML = formatCurrency(keyPerValue);
	}
		
}

// calculates the all the level points
function calculatePoints() {
	var totalPoints = 0;
	var points = 0;
	$$('.level select').each(function(obj){
		points = obj.value;

		if (isNumeric(points)) {
			totalPoints = Number(totalPoints) + Number(points);
		}
	});
	$('totalPoints').innerHTML = totalPoints.toFixed(2);
}

// format currecy
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num ); //+ '.' + cents + ' AUD');
}


// checks if value is numeric
function isNumeric(str){ 
	str=str.replace(/^\s+|\s+$/g, '');
	if((str.length == 1 && str.match(/^\d+$/g)) || ((str.length > 1) && str.match(/^[-]{0,1}\d*[.]{0,1}\d*$/g))) 
		return true;

	return false; 
}

// checks key press
function getKeyCode(e)
{
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
		return null;
}

// Only allows integers to be typed
function keyRestrict(e) {
	var validchars = '0123456789.';
	var key='', keychar='';
	key = getKeyCode(e);
	if (key == null) return true;
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	validchars = validchars.toLowerCase();
	if (validchars.indexOf(keychar) != -1)
		return true;
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;
	return false;
}

Event.observe(window, 'load', function(e){
	/*
	$$('.level select').each(function(obj){
		Event.observe(obj, 'change', function(e){
				var ele = Event.element(e);
				calculatePoints();
			});
	});
	*/
	
	Event.observe($('calcTotal'), 'click', calculateTotal);
});