
window.onerror = function () { return true }

var MIN_REAL_POS = 0;
var MAX_REAL_POS = 230;

/* replace with dragbars */
Event.observe(window, "load", function () {
		var inputs = document.getElementsByClassName('draginput');
		for (var i = 0; i < inputs.length; i++) {
			var inp = inputs[i];
			inp.minvalue = parseInt(inp.getAttribute('min'));
			inp.maxvalue = parseInt(inp.getAttribute('max'));
			inp.dec = inp.getAttribute('dec')
			inp.container = document.createElement('div');
			inp.container.className = "dragbar";
			inp.handle = document.createElement('div');
			inp.handle.className ="draghandle";
			inp.handle.title = "Aseta arvo"
			inp.handle.inp = inp;
			inp.parentNode.replaceChild(inp.container, inp);
			inp.container.appendChild(inp.handle);
			inp.container.appendChild(inp);
			var drag = new Draggable(inp.handle, {
				constraint:'horizontal',
				onStart: startMoveHandle,
				change: moveHandle,
				onEnd: endMoveHandle
			});
			drag.tgt = inp.handle;
			inp.updatePosition =
			inp.onchange = updatePosition;
			inp.updatePosition();
		}
	}
) ;

function startMoveHandle(drag) {
	var n = drag.tgt;
	updateValue(n);
}

function moveHandle(drag) {
	var n = drag.tgt;
	if (n.offsetLeft < MIN_REAL_POS || n.offsetLeft > MAX_REAL_POS ) {
		drag.endDrag();
	}
	updateValue(n);
}

function scale(p, vmin, vmax) {
	var v = p-vmin;
	if (v < 0) v = 0;
	v = v * (100/(vmax-vmin));
	if (v > 100) v = 100;
	return v;
}

function endMoveHandle(drag) {
	var n = drag.tgt;
	if (n.offsetLeft < MIN_REAL_POS ) {
		n.style.left = MIN_REAL_POS+"px";
	} else if ( n.offsetLeft > MAX_REAL_POS ) {
		n.style.left = MAX_REAL_POS+"px";
	}
	updateValue(n);
}

function updateValue(n) {
	var stepSize = MAX_REAL_POS / (n.inp.maxvalue - n.inp.minvalue);
	var h = [1,10,100,1000];
	var d = h[n.inp.dec]
	n.inp.value = n.inp.minvalue + ( Math.round((n.offsetLeft / stepSize)*d)/d );
	calculateAndDraw();
	
}

function updatePosition() {
	var n = this.handle;
	if (n.inp.value < n.inp.minvalue) n.inp.value =  n.inp.minvalue;
	if (n.inp.value >  n.inp.maxvalue) n.inp.value =  n.inp.maxvalue;
	var stepSize = MAX_REAL_POS / (n.inp.maxvalue - n.inp.minvalue) ;
	n.style.left = Math.round((n.inp.value - n.inp.minvalue) * stepSize) + "px";
	calculateAndDraw();
}

function calculateAndDraw() {
	// get form values
	var f = document.forms.inputForm
	var gender = f.gender[0].checked ? f.gender[0].value : f.gender[1].value;
	var ika = f.age.value.replace(",",".");
	var tupakointi = f.smoking[0].checked ? 1 : 0;
	var kolesteroli = f.cholesterol.value;
	var hdl = f.hdl.value.replace(",",".");
	var verenpaine = f.syst.value.replace(",",".");
	var diabetes = f.diabetic[0].checked ? 1 : 0;
	var sukuhistoria = f.heritage[0].checked ? 1 : 0;
	
	// draw bars
	if (gender == 'male') {
		var infarkti = (1/(1+Math.exp(11.2129-(0.0802*ika)-(0.626*tupakointi)-(0.3293*kolesteroli)-(0.0166*verenpaine)+(0.5893*hdl)-(0.7417*diabetes)-(0.3138*sukuhistoria))))*100;
		var aivohalvaus = (1/(1+Math.exp(11.5264-(0.1154*ika)-(0.5017*tupakointi)-(0*kolesteroli)-(0.0151*verenpaine)+(0.4371*hdl)-(0.8836*diabetes)-(0.2951*sukuhistoria))))*100;
		var vmin = 0;
		var vmax = 50;
	} else {
		var infarkti = (1/(1+Math.exp(11.8392-(0.0962*ika)-(0.8776*tupakointi)-(0.2119*kolesteroli)-(0.0175*verenpaine)+(1.1009*hdl)-(1.0303*diabetes)-(0.409*sukuhistoria))))*100;
		var aivohalvaus = (1/(1+Math.exp(7.9354-(0.0644*ika)-(0.4172*tupakointi)-(0*kolesteroli)-(0.00905*verenpaine)+(0.7565*hdl)-(1.2378*diabetes)-(0.5469*sukuhistoria))))*100;
		var vmin= 0;
		var vmax = 25;
	}
	var summa = infarkti+aivohalvaus; 
	if (summa > 100) summa = 100;

	var vals = $('values').getElementsByTagName('div');

	var step = 4;
	$('bar1a').alt = 
	$('bar1a').title = 	$('bar1a').title.split(':')[0] + ":" + Math.round(infarkti) +"%";
	$('bar1a').style.height = step*scale(infarkti,vmin,vmax)+"px";
	vals[0].innerHTML = Math.round(infarkti) + "%"
	$('bar1b').alt =
	$('bar1b').title = 	$('bar1b').title.split(':')[0] + ":" + Math.round(aivohalvaus) +"%";
	$('bar1b').style.height = step*scale(aivohalvaus,vmin,vmax)+"px";
	vals[3].innerHTML = Math.round(aivohalvaus) + "%"
	$('bar1c').alt =
	$('bar1c').title = 	$('bar1c').title.split(':')[0] + ":" + Math.round(summa) +"%";
	$('bar1c').style.height = step*scale(summa,vmin,vmax)+"px";
	vals[6].innerHTML = Math.round(summa) + "%"
	
	
	//get no risk values
	var td = $("no_risk").getElementsByTagName('tr')[ika-30].getElementsByTagName('td');
	if (gender == 'male') {
		var infarkti = td[1].firstChild.nodeValue;
		var aivohalvaus = td[3].firstChild.nodeValue;
		var summa = td[5].firstChild.nodeValue;
	} else {
		var infarkti = td[2].firstChild.nodeValue;
		var aivohalvaus = td[4].firstChild.nodeValue;
		var summa = td[6].firstChild.nodeValue;
	}
	
	$('bar2a').alt =
	$('bar2a').title = 	$('bar2a').title.split(':')[0] + ":" + Math.round(infarkti) +"%";
	$('bar2a').style.height = step*scale(infarkti,vmin,vmax)+"px";
	vals[1].innerHTML = Math.round(infarkti) + "%"
	$('bar2b').alt =
	$('bar2b').title = 	$('bar2b').title.split(':')[0] + ":" + Math.round(aivohalvaus) +"%";
	$('bar2b').style.height = step*scale(aivohalvaus,vmin,vmax)+"px";
	vals[4].innerHTML = Math.round(aivohalvaus) + "%"
	$('bar2c').alt =
	$('bar2c').title = 	$('bar2c').title.split(':')[0] + ":" + Math.round(summa) +"%";
	$('bar2c').style.height = step*scale(summa,vmin,vmax)+"px";
	vals[7].innerHTML = Math.round(summa) + "%"
	
	//get averages
		var td = $("average").getElementsByTagName('tr')[ika-30].getElementsByTagName('td');
	if (gender == 'male') {
		var infarkti = td[1].firstChild.nodeValue;
		var aivohalvaus = td[3].firstChild.nodeValue;
		var summa = td[5].firstChild.nodeValue;
	} else {
		var infarkti = td[2].firstChild.nodeValue;
		var aivohalvaus = td[4].firstChild.nodeValue;
		var summa = td[6].firstChild.nodeValue;
	}
	
	$('bar3a').alt =
	$('bar3a').title = 	$('bar3a').title.split(':')[0] + ":" + Math.round(infarkti) +"%";
	$('bar3a').style.height = step*scale(infarkti,vmin,vmax)+"px";
	vals[2].innerHTML = Math.round(infarkti) + "%"
	$('bar3b').alt =
	$('bar3b').title = 	$('bar3b').title.split(':')[0] + ":" + Math.round(aivohalvaus) +"%";
	$('bar3b').style.height = step*scale(aivohalvaus,vmin,vmax)+"px";
	vals[5].innerHTML = Math.round(aivohalvaus) + "%"
	$('bar3c').alt =
	$('bar3c').title = 	$('bar3c').title.split(':')[0] + ":" + Math.round(summa) +"%";
	$('bar3c').style.height = step*scale(summa,vmin,vmax)+"px";
	vals[8].innerHTML = Math.round(summa) + "%"
}

