function filter(input) {
	var output = input;
	output = (output.replace(/,/g,'.')).replace(/ /g,'');
	return output;	
}

function checkFields() {
		update(document.getElementById('bpris'));
		update(document.getElementById('insats'));
		update(document.getElementById('ranta'));
		update(document.getElementById('tid'));
		update(document.getElementById('rest'));
}

function calculate() {
	checkFields();
	
	var moms = 0.8;
	var ranta = (0 + filter(document.getElementById('ranta').value)) / 100;
	var insats_procent = filter(document.getElementById('insats').value) / 100;
	var rest_procent = filter(document.getElementById('rest').value) / 100;
	var bpris = filter(document.getElementById('bpris').value);
	var insats = bpris * insats_procent;
	var rest = bpris * rest_procent;
	var tid = filter(document.getElementById('tid').value);
	var summa = 0;

		if (tid<1) tid=1;
	
	if(ranta > 0) {
		bpris = bpris - insats;
		if (bpris<0) bpris=0;

		var arsranta = ranta / 12;
		var bpris_rest = bpris - rest * Math.pow(1 + arsranta, 0 - tid);
		if (bpris_rest<0) bpris_rest=0;

		var bpris_arsranta = (1 - Math.pow(1 + arsranta, 0 - (tid - 1))) / arsranta + 1;
		if (bpris_arsranta<0) {
				bpris_arsranta=0;
				summa = bpris_rest;
		} else summa = bpris_rest / bpris_arsranta;
	}
	else {
		summa = (bpris - insats - rest) / tid;
		if (summa<0) summa=0;
	}
	
	var resultat = summa * moms;
	document.getElementById('resultat').value = Math.round(resultat);
}

function update(obj) {
	var value = filter(obj.value);
	var tid = obj.form.tid.value;
	var i=0,minimum=0,maximum=0,found=false;

	var fields=Array("bpris","insats","ranta","tid","rest");

	var insats_tid = Array(12,Array(0,20),
												 24,Array(0,30),
												 36,Array(0,40));
	
	var rest_tid = Array(12,Array(40,80),
											 24,Array(30,65),
											 36,Array(30,50));

	switch (obj.name) {
	case "insats":
			minimum=0;
			maximum=40;

			/*
			while (i<insats_tid.length && !found) {
					if (tid <= insats_tid[i]) {
							minimum=insats_tid[i+1][0];
							maximum=insats_tid[i+1][1];
							found=true;
					}
					else i+=2;
			}
			*/

			break;
	case "ranta":
			minimum=0;
			maximum=15;
			break;
	case "rest":
			minimum=10;
			maximum=50;
			
			/*
			while (i<rest_tid.length && !found) {
					if (tid <= rest_tid[i]) {
							minimum=rest_tid[i+1][0];
							maximum=rest_tid[i+1][1];
							found=true;
					}
					else i+=2;
			}
			*/

			break;
	}

	if(value < minimum) {
			value = minimum;
	}
	
	if(maximum > 0) {
		if(value > maximum) {
			value = maximum;
		}
	}
	
	obj.value = value;

		/* Setting the sliders don't work so well, so we'd rather make
			 the text inputs read only */
		
		/*

		if (window.A_SLIDERS!=null) {
				i=0;
				while (i<fields.length && obj.name!=fields[i]) i++;

				if (i<fields.length) {
						window.A_SLIDERS[i].f_setValue(value,1);
				}
		}
		*/
}
