$(document).ready(function(){

	// round a number to the specified number of decimals
	function roundNumber(num, dec) {
		var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
		return result;
	}

	/* blutzucker, mittlerer */
	$("form[name=calc_blutzucker_form]").submit(function() {
		var substanz_gegeben = $("input:radio[name=calc_blutzucker_substanz_gegeben]:checked").val();
		var einheit = $("input:radio[name=calc_blutzucker_einheit]:checked").val();

		var result = 0;
		var mw_factor = 1;
		// molecular weight of glucose = 180
		// mmol/l * 18 = mg/dl
		if (einheit == "mmol/l") {
			// mBZ[mmol/l]
			mw_factor = 18;
		} else {
			// mBZ[mg/dl]
			mw_factor = 1;
		}
		if (substanz_gegeben == "HbA1c") {
			// mBZ[mg/dl] = (HbA1c[%] * 33) - 86
			result = ($("input[name=calc_blutzucker_input]").val() * 33 - 86) / mw_factor;
		} else {
			// HbA1c[%] = (mBZ[mg/dl] + 86) / 33
			result = ($("input[name=calc_blutzucker_input]").val() * mw_factor + 86) / 33;
		}

		// round the result to 1 decimal
		result = roundNumber(result, 1);

		$("#calc_blutzucker_output").text(result);
		return false;
	 });

	$("input[name^=calc_blutzucker]").change(function() {
		var substanz_gegeben = $("input:radio[name=calc_blutzucker_substanz_gegeben]:checked").val();
		$("#calc_blutzucker_input_text").text(substanz_gegeben + " Wert:");
		$("#calc_blutzucker_output").text("");
	});
	
	// fallback for IE <7 as the change event on IE <7 is buggy (fires on blur only, for radio buttons)
	// we thus add a .click event handler to radio buttons (only)
	$("input:radio[name^=calc_blutzucker]").click(function() {
		var substanz_gegeben = $("input:radio[name=calc_blutzucker_substanz_gegeben]:checked").val();
		$("#calc_blutzucker_input_text").text(substanz_gegeben + " Wert:");
		$("#calc_blutzucker_output").text("");
	});

	/* bmi (body mass index) */
	$("form[name=calc_bmi_form]").submit(function() {
		var gewicht = $("#calc_bmi_gewicht").val();
		var groesse = $("#calc_bmi_groesse").val();

		result = gewicht/(groesse*groesse/10000);

		// round the result to 1 decimal
		result = roundNumber(result, 1);

		$("#calc_bmi_output").text(result);
		return false;
	 });

	$("input[name^=calc_bmi]").change(function() {
		$("#calc_bmi_output").text("");
	});

	/* calcium, korrigiertes */
	$("form[name=calc_calcium_form]").submit(function() {
		var calcium = $("#calc_calcium_calcium").val();
		var albumin = $("#calc_calcium_albumin").val();
		result = calcium - (albumin - 40) * 0.02;

		// round the result to 2 decimals
		result = roundNumber(result, 2);

		$("#calc_calcium_output").text(result);
		return false;
	 });

	$("input[name^=calc_calcium]").change(function() {
		$("#calc_calcium_output").text("");
	});

	/* calciumexkretion, fraktioniert */
	$("form[name=calc_caexkretion_form]").submit(function() {
		var pca = $("#calc_caexkretion_pca").val();
		var uca = $("#calc_caexkretion_uca").val();
		var pkr = $("#calc_caexkretion_pkr").val();
		var ukr = $("#calc_caexkretion_ukr").val();
		// explicit formula for better readability:
		// result = uca * pkr * 0.001 / (pca * ukr) * 100;
		result = uca * pkr * 0.1 / (pca * ukr);

		// round the result to 2 decimals
		result = roundNumber(result, 2);

		$("#calc_caexkretion_output").text(result);
		return false;
	 });

	$("input[name^=calc_caexkretion]").change(function() {
		$("#calc_caexkretion_output").text("");
	});
	
	/* clearance */
	$("form[name=calc_clearance_form]").submit(function() {
		var alter = $("#calc_clearance_alter").val();
		var gewicht = $("#calc_clearance_gewicht").val();
		var groesse = $("#calc_clearance_groesse").val();
		var geschlechtsfaktor = $("input:radio[name=calc_clearance_geschlecht]:checked").val();
		var kreatinin = $("#calc_clearance_kreatinin").val();

		// Geschätzte Kreatininclearence = (140 – Alter) x Körpergewicht [kg] x 1,03 [für Frauen] bzw. 1,23 [für Männer] / Serumkreatinin [µmol/L]
		estimatedclearance = (140 - alter) * gewicht * geschlechtsfaktor / kreatinin;
		// Körperoberfläche (nach DuBois)= 0,007184 x Größe [cm]0,725 x Gewicht [kg] 0,425
		oberflaeche = 0.007184 * Math.pow(groesse, 0.725) * Math.pow(gewicht, 0.425);
		// korrigierte Clearance  =  gemessene Clearance  x  1,73 / Körperoberfläche
		korrigierteclearance = estimatedclearance * 1.73 / oberflaeche;
        
		// round the results to 2 decimals
		estimatedclearance = roundNumber(estimatedclearance, 2);
		oberflaeche = roundNumber(oberflaeche, 2);
		korrigierteclearance = roundNumber(korrigierteclearance, 2);

		$("#calc_clearance_output_estimatedclearance").text(estimatedclearance);
		$("#calc_clearance_output_oberflaeche").text(oberflaeche);
		$("#calc_clearance_output_korrigierteclearance").text(korrigierteclearance);
		return false;
	 });

	$("input[name^=calc_clearance]").change(function() {
		$("#calc_clearance_output_estimatedclearance").text("");
		$("#calc_clearance_output_oberflaeche").text("");
		$("#calc_clearance_output_korrigierteclearance").text("");
	});
	
	// fallback for IE <7 as the change event on IE <7 is buggy (fires on blur only, for radio buttons)
	// we thus add a .click event handler to radio buttons (only)
	$("input:radio[name^=calc_clearance]").click(function() {
		$("#calc_clearance_output_estimatedclearance").text("");
		$("#calc_clearance_output_oberflaeche").text("");
		$("#calc_clearance_output_korrigierteclearance").text("");
	});

	/* homa-index */
	$("form[name=calc_homa_form]").submit(function() {
		var insulin = $("#calc_homa_insulin").val();
		var glucose = $("#calc_homa_glucose").val();

		// HOMA-Index = Insulin (nüchtern, µU/ml) x Blutzucker (nüchtern, mmol/l) / 22,5
		result = insulin * glucose / 22.5;

		// round the result to 2 decimal
		result = roundNumber(result, 2);

		$("#calc_homa_output").text(result);
		return false;
	 });

	$("input[name^=calc_homa]").change(function() {
		$("#calc_homa_output").text("");
	});

	/* glucocorticoidumrechner */
	$("form[name=calc_glucocorticoid_form]").submit(function() {
		var glucocorticoid_from = $("select[name=calc_glucocorticoid_from]").val();
		var dose = $("input[name=calc_glucocorticoid_input]").val();
		var glucocorticoid_to = $("select[name=calc_glucocorticoid_to]").val();
		
		var potency_from = potency(glucocorticoid_from);
		var potency_to = potency(glucocorticoid_to);
		
		var result = dose * potency_from / potency_to;

		// round the result to 2 decimals
		result = roundNumber(result, 2);

		$("#calc_glucocorticoid_output").text(result);
		return false;
	 });

	$("input[name^=calc_glucocorticoid]").change(function() {
		$("#calc_glucocorticoid_output").text("");
	});
	
	$("select[name^=calc_glucocorticoid]").change(function() {
		$("#calc_glucocorticoid_output").text("");
	});

	function potency(steroid) {
		if (steroid == "Hydrocortison") {var potency = 1}
		if (steroid == "Cortison") {var potency = 0.8}
		if (steroid == "Prednisolon") {var potency = 4}
		if (steroid == "Prednison") {var potency = 4}
		if (steroid == "Methylprednisolon") {var potency = 5}
		if (steroid == "Triamcinolon") {var potency = 5}
		if (steroid == "Paramethason") {var potency = 10}
		if (steroid == "Dexamethason") {var potency = 25}
		if (steroid == "Betamethason") {var potency = 30}
		return potency;
	}

});

