window.onload = init;

function init(){
	document.onkeyup = calculate_totals;

	document.getElementById("cal-button").onclick = calculate_result;
	document.getElementById("reset-button").onclick = reset;

	calculate_totals();
}

function calculate_result(){
	var result = parseFloat(document.getElementById('total-income').innerHTML) - parseFloat(document.getElementById('total-expend').innerHTML);
	if(result < 0) result = "-£" + Math.abs(result);
	else result = "£" + result;
	document.getElementById('result').innerHTML = result;
}

function reset(){
	document.getElementById('pay').value = "";
	document.getElementById('part-pay').value = "";
	document.getElementById('benefits').value = "";
	document.getElementById('ad-income').value = "";
	document.getElementById('rent').value = "";
	document.getElementById('bills').value = "";
	document.getElementById('travel').value = "";
	document.getElementById('debt1').value = "";
	document.getElementById('debt2').value = "";
	document.getElementById('debt3').value = "";
	document.getElementById('debt4').value = "";
	document.getElementById('result').innerHTML= "";
	calculate_totals();
}


function calculate_totals(){

	// Income
	var pay = document.getElementById('pay');
	var part_pay = document.getElementById('part-pay');
	var benefits = document.getElementById('benefits');
	var ad_income = document.getElementById('ad-income');
	clean(pay);
	clean(part_pay);
	clean(benefits);
	clean(ad_income);
	var total_in = parseFloat(pay.value) + parseFloat(part_pay.value) + parseFloat(benefits.value) + parseFloat(ad_income.value);
	var total_income = document.getElementById('total-income');
	total_income.innerHTML = total_in;	

	// Expenditure
	var rent = document.getElementById('rent');
	var bills = document.getElementById('bills');
	var travel = document.getElementById('travel');
	var debt1 = document.getElementById('debt1');
	var debt2 = document.getElementById('debt2');
	var debt3 = document.getElementById('debt3');
	var debt4 = document.getElementById('debt4');
	clean(rent);
	clean(bills);
	clean(travel);
	clean(debt1);
	clean(debt2);
	clean(debt3);
	clean(debt4);
	var total_out = parseFloat(rent.value) + parseFloat(bills.value) + parseFloat(travel.value) + parseFloat(debt1.value) + parseFloat(debt2.value) + parseFloat(debt3.value) + parseFloat(debt4.value);
	var total_expend = document.getElementById('total-expend');
	total_expend .innerHTML = total_out;	

}

function clean(field){
	field.value = stripAlphaChars(field.value);

	if(field.value == "") field.value = 0;

	if(field.value == 0){
		field.onmousedown = function(){ this.value = ""; }
		field.onblur = function(){ if(this.value == "") this.value=0; }
	}
	else{
		field.onmousedown = null;
		field.onmouseup = null;
	}
}

function stripAlphaChars(source) { 
	var str= new String(source); 
    	str = str.replace(/[^0-9]/g, ''); 
	return str; 
}


