/* 
NIBbudgetcalc.js  version 1.0.0

*/

BudgetCalc = {
	jsversion: '1.0.0',
	
  init: function() {
		var Toolbox = CalculatorToolbox;
  	var CoreCompliance=DBcore.getJSversion(DBcore,'1.10.1');
		var ToolCompliant=DBcore.getJSversion(CalculatorToolbox,'1.8.1');
		var ErrorCompliant=DBcore.getJSversion(ErrorHandler,'1.1.0');
  		if (CoreCompliance.compliant && ToolCompliant.compliant && ErrorCompliant.compliant) {
			 Toolbox.calculatorObj=BudgetCalc;
			 Toolbox.listOfTriggers=['calculate','calculateMeOnChange'];
			 Toolbox.setJShides();
			 Toolbox.setClickListeners();
			 Toolbox.setChangeListeners();
			 Toolbox.setButtonActivation();
			 Toolbox.setKeydownListeners();
			 Toolbox.overwritePrintIcon();
			}
  },
	
	dispLocalValidators: function(field,classFunction,classParams) {
			var self=BudgetCalc;
			var ok=true;
			switch (classFunction){
					case 'xxxxx':
							 //ok =self.handlexxxxx(field,classParams);
							 break;
			}
			return ok;
	},
	
	handleCalculate: function(button,classParams) {
		var self=BudgetCalc;
		var totalincome=0;
		var totalexpenditures=0;
		var totalexpenses=0;
		var totalresult=0;
		var felt=null;
		var feltvalue=0;
		var incomefields=['regincome','studentincome','investment','statebenefits','familyincome','otherincome'];
		var expenditurefields=['mortgage','utilitied','rates','phone','personalloans','pensions','houseinsurance','carinsurance','educationfees','savings','otherexpenditures'];
		var expensefields=['foodandrink','trafic','clothing','books','tvlicense','childcare','memberships','events','entertainment','holidays','otherexpenses'];
		for (var i=0;i<incomefields.length;i++) {
				felt=document.getElementById(incomefields[i]);
				feltvalue=BudgetCalc.localSum(felt.value);
				totalincome+=feltvalue;
		}
		for (var i=0;i<expenditurefields.length;i++) {
				felt=document.getElementById(expenditurefields[i]);
				feltvalue=BudgetCalc.localSum(felt.value);
				totalexpenditures+=feltvalue;
		}
		for (var i=0;i<expensefields.length;i++) {
				felt=document.getElementById(expensefields[i]);
				feltvalue=BudgetCalc.localSum(felt.value);
				totalexpenses+=feltvalue;
		}
		totalresult=totalincome-totalexpenditures-totalexpenses;
		document.getElementById('totalincome').value=totalincome;
		document.getElementById('totalexpenditure').value=totalexpenditures;
		document.getElementById('totallivingexpenses').value=totalexpenses;
		document.getElementById('result').value=totalresult;
	},
	
	handleCalculateMeOnChange: function(element,classParams) {
		BudgetCalc.handleCalculate(element,classParams);
	},
	
	localSum: function(textStr) {
		var res=0;		
		if (textStr!='') {
  		var komponents=textStr.split('+');  // Only valid for english decimal numbers
  		for (var i=0;i<komponents.length;i++) {
  				res += parseInt(komponents[i]);
  		}
		}
		return res;
	}
	
}
DBcore.start(BudgetCalc);

