﻿function CalculateForm() {
	// Indirect costs
	// ---------------------------------------------------------------------------------------------------
	// Calculate regular smoking time
	var roktid = $("input#roktid").val();
	var gangtid = $("input#gangtid").val();
	var roktillfallen = $("input#roktillfallen").val();
	var dag_person = (1 * roktid + 1 * gangtid) * roktillfallen;
	var sfs_dag_person = 5 * $("input#roktillfallen").val(); 		// It takes 5 minutes per break in a sfs

	if (roktid != "") {
		SetFormText("td#total_roktid", dag_person, dag_person + ' ' + unit_total_roktid, "-");
		SetFormText("td#sfs_total_roktid", sfs_dag_person, sfs_dag_person + ' ' + unit_total_sfs_roktid, "-");
	}

	// Calculate cost of time consumed per day
	var kostnad_tidsatgang = dag_person * ($("input#personal_kostnad").val() * 1 / 60);
	var sfs_kostnad_tidsatgang = sfs_dag_person * ($("input#personal_kostnad").val() * 1 / 60);
	SetFormText("td#kostnad_tidsatgang", kostnad_tidsatgang, tFix(kostnad_tidsatgang, 0) + ' ' + unit_kostnad_tidsatgang, "-");
	SetFormText("td#sfs_kostnad_tidsatgang", sfs_kostnad_tidsatgang, tFix(sfs_kostnad_tidsatgang, 0) + ' ' + unit_kostnad_tidsatgang, "-");

	// Calculate total cost of smoking per month
	var kostnad_tidsatgang_manad = (1 * kostnad_tidsatgang * $("input#antal_anstallda").val() * 1 * $("input#antal_rokare").val() * 0.01 * 220) / 12;
	var sfs_kostnad_tidsatgang_manad = (1 * sfs_kostnad_tidsatgang * $("input#antal_anstallda").val() * 1 * $("input#antal_rokare").val() * 0.01 * 220) / 12;
	SetFormText("td#kostnad_tidsatgang_manad", kostnad_tidsatgang_manad, tFix(kostnad_tidsatgang_manad, 0) + ' ' + unit_kostnad_tidsatgang_manad, "-");
	SetFormText("td#sfs_kostnad_tidsatgang_manad", sfs_kostnad_tidsatgang_manad, tFix(sfs_kostnad_tidsatgang_manad, 0) + ' ' + unit_kostnad_tidsatgang_manad, "-");

	// Direct costs
	// ---------------------------------------------------------------------------------------------------
	// Calculate number of smoking stations required
	var antal_rokare = tFix((1 * $("input#antal_rokare").val() * $("input#antal_anstallda").val() * 0.01), 0);
	$("td#sfs_stationer").html("-");

	if (antal_rokare != 0 && !isNaN(antal_rokare)) {
		var total_of_2 = tFix(((antal_rokare / 20) + 0.01), 0);

		if ((antal_rokare % 20) < 10)
			var total_of_1 = 1;
		else
			var total_of_1 = 0;

		$("td#sfs_stationer").html(1 * total_of_2 + total_of_1);
	}

	// Calculate space costs
	var ytkostnad = 1 * $("input#ytatgang").val() * $("input#kvmkostnad").val();
	SetFormText("td#ytkostnad", ytkostnad, tFix(ytkostnad, 0) + ' ' + unit_ytkostnad, "0 " + unit_ytkostnad);

	var sfs_ytkostnad = 2 * $("input#kvmkostnad").val() * (1 * total_of_2 + total_of_1);
	SetFormText("td#sfs_ytkostnad", sfs_ytkostnad, tFix(sfs_ytkostnad, 0) + ' ' + unit_sfs_ytkostnad, "-");

	var energikostnad = 1 * $("input#ytatgang").val() * $("input#energiatgang").val() * 0.1;
	SetFormText("td#energikostnad", energikostnad, tFix(energikostnad, 0) + ' ' + unit_ytkostnad, "-");

	var sfs_energikostnad = (1 * total_of_2 + total_of_1) * 80 * 0.1;
	SetFormText("td#sfs_energikostnad", sfs_energikostnad, tFix(sfs_energikostnad, 0) + ' ' + unit_ytkostnad, "-");

	var saneringskostnad = 1 * $("input#saneringskostnad").val();
	SetFormText("td#saneringskostnad_year", saneringskostnad, tFix((saneringskostnad / 12), 2) + ' ' + unit_ytkostnad, "-");

	var hyreskostnad = (kostnad1 * total_of_2) + (kostnad2 * total_of_1);
	SetFormText("td#hyreskostnad", hyreskostnad, tFix(hyreskostnad, 0) + ' ' + unit_ytkostnad, "-");

	var total_kostnad = kostnad_tidsatgang_manad + ytkostnad + energikostnad + (1 * $("input#hanteringskostnad").val()) + (saneringskostnad / 12);
	if (isNaN(total_kostnad)) {
		total_kostnad = kostnad_tidsatgang_manad + (1 * $("input#hanteringskostnad").val());
	}

	SetFormText("td#total_kostnad", total_kostnad, tFix(total_kostnad, 0) + ' ' + unit_ytkostnad, "-")

	var total_sfs = sfs_kostnad_tidsatgang_manad + sfs_ytkostnad + sfs_energikostnad + hyreskostnad;
	SetFormText("td#total_sfs", total_sfs, tFix(total_sfs, 0) + ' ' + unit_ytkostnad, "-");

	var sfs_save = (total_kostnad) - (total_sfs);
	SetFormText("td#sfs_save", sfs_save, tFix(sfs_save, 0) + ' ' + unit_ytkostnad, "-");

	// Set local hidden fields
	if (!isNaN(sfs_save)) {
		$("input#pdf_val1").val(tFix(kostnad_tidsatgang_manad, 0));
		$("input#pdf_val2").val(tFix(sfs_kostnad_tidsatgang_manad, 0));
		$("input#pdf_val3").val(tFix(total_kostnad, 0) - tFix(kostnad_tidsatgang_manad, 0));
		$("input#pdf_val4").val(tFix(total_sfs, 0) - tFix(sfs_kostnad_tidsatgang_manad, 0));
		$("input#pdf_val5").val(tFix(sfs_save, 0));
	}
}

function SetFormText(field, value, text, dfault) {
	if (!isNaN(value) && value != 0) {
		$(field).html(text);
	} else {
		$(field).html();
	}
}


function sfs_calc(formapa, pdf) {

	var form = document.forms[0];

	var sfs_dag_person = 5 * form.roktillfallen.value;

	if (!isNaN(sfs_dag_person) && sfs_dag_person != 0)
		document.getElementById("sfs_total_roktid").innerHTML = sfs_dag_person + ' ' + form.total_sfs_roktid_unit.value;
	else
		document.getElementById("sfs_total_roktid").innerHTML = '-';

	var dag_person = ((1 * form.roktid.value) + (1 * form.gangtid.value)) * 1 * form.roktillfallen.value;
	if (!isNaN(dag_person) && dag_person != 0 && form.roktid.value != "")
		document.getElementById("total_roktid").innerHTML = dag_person + ' ' + form.total_roktid_unit.value;
	else
		document.getElementById("total_roktid").innerHTML = '-';



	var kostnad_tidsatgang = dag_person * (form.personal_kostnad.value * 1 / 60);
	if (!isNaN(kostnad_tidsatgang) && kostnad_tidsatgang != 0)
		document.getElementById("kostnad_tidsatgang").innerHTML = tFix(kostnad_tidsatgang, 0) + ' ' + form.kostnad_tidsatgang_unit.value;
	else
		document.getElementById("kostnad_tidsatgang").innerHTML = '-';

	var sfs_kostnad_tidsatgang = sfs_dag_person * (form.personal_kostnad.value * 1 / 60);
	if (!isNaN(sfs_kostnad_tidsatgang) && sfs_kostnad_tidsatgang != 0)
		document.getElementById("sfs_kostnad_tidsatgang").innerHTML = tFix(sfs_kostnad_tidsatgang, 0) + ' ' + form.sfs_kostnad_tidsatgang_unit.value;
	else
		document.getElementById("sfs_kostnad_tidsatgang").innerHTML = '-';



	var kostnad_tidsatgang_manad = (1 * kostnad_tidsatgang * form.antal_anstallda.value * form.antal_rokare.value * 0.01 * 220) / 12;
	if (!isNaN(kostnad_tidsatgang_manad) && kostnad_tidsatgang_manad != 0)
		document.getElementById("kostnad_tidsatgang_manad").innerHTML = tFix(kostnad_tidsatgang_manad, 0) + ' ' + form.kostnad_tidsatgang_manad_unit.value;
	else
		document.getElementById("kostnad_tidsatgang_manad").innerHTML = '-';

	var sfs_kostnad_tidsatgang_manad = (1 * sfs_kostnad_tidsatgang * form.antal_anstallda.value * form.antal_rokare.value * 0.01 * 220) / 12;
	if (!isNaN(sfs_kostnad_tidsatgang_manad) && sfs_kostnad_tidsatgang_manad != 0)
		document.getElementById("sfs_kostnad_tidsatgang_manad").innerHTML = tFix(sfs_kostnad_tidsatgang_manad, 0) + ' ' + form.sfs_kostnad_tidsatgang_manad_unit.value;
	else
		document.getElementById("sfs_kostnad_tidsatgang_manad").innerHTML = '-';



	var antal_rokare = tFix((1 * form.antal_rokare.value * form.antal_anstallda.value * 0.01), 0);

	if (antal_rokare != 0 && !isNaN(antal_rokare)) {
		var total_of_2 = tFix(((antal_rokare / 20) + 0.01), 0);

		if ((antal_rokare % 20) < 10)
			var total_of_1 = 1;
		else
			var total_of_1 = 0;


		document.getElementById("sfs_stationer").innerHTML = 1 * total_of_2 + total_of_1;
	}
	else
		document.getElementById("sfs_stationer").innerHTML = '-';



	var ytkostnad = 1 * form.ytatgang.value * form.kvmkostnad.value; 

	if (ytkostnad != 0 && !isNaN(ytkostnad))
		document.getElementById("ytkostnad").innerHTML = tFix(ytkostnad, 0) + ' ' + form.ytkostnad_unit.value;
	else
		document.getElementById("ytkostnad").innerHTML = '-';


	var sfs_ytkostnad = 2 * form.kvmkostnad.value * (1 * total_of_2 + total_of_1);
	if (sfs_ytkostnad != 0 && !isNaN(sfs_ytkostnad))
		document.getElementById("sfs_ytkostnad").innerHTML = tFix(sfs_ytkostnad, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("sfs_ytkostnad").innerHTML = '-';


	var energikostnad = 1 * form.ytatgang.value * form.energiatgang.value * 0.1;
	if (energikostnad != 0 && !isNaN(energikostnad))
		document.getElementById("energikostnad").innerHTML = tFix(energikostnad, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("energikostnad").innerHTML = '-';

	var sfs_energikostnad = (1 * total_of_2 + total_of_1) * 80 * 0.1;
	if (sfs_energikostnad != 0 && !isNaN(sfs_energikostnad))
		document.getElementById("sfs_energikostnad").innerHTML = tFix(sfs_energikostnad, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("sfs_energikostnad").innerHTML = '-';

	var saneringskostnad = 1 * form.saneringskostnad.value;
	if (saneringskostnad != 0 && !isNaN(saneringskostnad))
		document.getElementById("saneringskostnad_year").innerHTML = tFix((saneringskostnad / 12), 2) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("saneringskostnad_year").innerHTML = '-';




	var hyreskostnad = (kostnad1 * total_of_2) + (kostnad2 * total_of_1);
	if (hyreskostnad != 0 && !isNaN(hyreskostnad))
		document.getElementById("hyreskostnad").innerHTML = tFix(hyreskostnad, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("hyreskostnad").innerHTML = '-';


	var total_kostnad = kostnad_tidsatgang_manad + ytkostnad + energikostnad + (1 * form.hanteringskostnad.value) + (saneringskostnad / 12);
	if (total_kostnad != 0 && !isNaN(total_kostnad))
		document.getElementById("total_kostnad").innerHTML = tFix(total_kostnad, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("total_kostnad").innerHTML = '-';

	var total_sfs = sfs_kostnad_tidsatgang_manad + sfs_ytkostnad + sfs_energikostnad + hyreskostnad;
	if (total_sfs != 0 && !isNaN(total_sfs))
		document.getElementById("total_sfs").innerHTML = tFix(total_sfs, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("total_sfs").innerHTML = '-';

	var sfs_save = (total_kostnad * 12) - (total_sfs * 12);
	if (sfs_save != 0 && !isNaN(sfs_save))
		document.getElementById("sfs_save").innerHTML = tFix(sfs_save, 0) + ' ' + form.sfs_ytkostnad_unit.value;
	else
		document.getElementById("sfs_save").innerHTML = '-';


	if (pdf == 1 && sfs_save != 0 && !isNaN(sfs_save)) {
		form.pdf_val1.value = tFix(kostnad_tidsatgang_manad, 0);
		form.pdf_val3.value = tFix(sfs_kostnad_tidsatgang_manad, 0);
		form.pdf_val2.value = tFix(total_kostnad, 0) - tFix(kostnad_tidsatgang_manad, 0);
		form.pdf_val4.value = tFix(total_sfs, 0) - tFix(sfs_kostnad_tidsatgang_manad, 0);

		/*
		document.pdfform.val1.value = tFix(kostnad_tidsatgang_manad,0);
		document.pdfform.val3.value = tFix(sfs_kostnad_tidsatgang_manad,0);
		document.pdfform.val2.value = tFix(total_kostnad,0);
		document.pdfform.val4.value = tFix(total_sfs,0);
		*/
		var val5 = "<b>INDIREKTA KOSTNADER#RÖKNING UTOMHUS#R&Ouml;KSTATION&"
		val5 = val5 + "TID##&"
		val5 = val5 + "Antal rökpauser (normalt 4-6)#" + form.roktillfallen.value + " ggr/dag#Samma&";
		val5 = val5 + "G&aring;ngtid till och fr&aring;n (normalt 3-8 min)#" + form.gangtid.value + " min#1 min&";
		val5 = val5 + "R&ouml;ktid per tillf&auml;lle (normalt 5-10 min)#" + form.roktid.value + " min#4 min&";
		val5 = val5 + "<by>Total r&ouml;ktid/dag och person#" + document.getElementById("total_roktid").innerHTML + "#" + document.getElementById("sfs_total_roktid").innerHTML + "&";
		val5 = val5 + "Personalens kostnader (normalt 200-300 kr/tim)#" + form.personal_kostnad.value + " kr/tim#Samma&";
		val5 = val5 + "<by>Kostnad f&ouml;r tids&aring;tg&aring;ng/dag och person#" + document.getElementById("kostnad_tidsatgang").innerHTML + "#" + document.getElementById("sfs_kostnad_tidsatgang").innerHTML + "&";
		val5 = val5 + "Antal anställda på arbetsplatsen#" + form.antal_anstallda.value + " anställda#Samma&";
		val5 = val5 + "Antal rökare på arbetsplatsen i % (normalt 20%)#" + form.antal_rokare.value + " %#Samma&";
		val5 = val5 + "<by>Kostnad f&ouml;r tids&aring;tg&aring;ng per m&aring;nad f&ouml;r alla r&ouml;kare#" + document.getElementById("kostnad_tidsatgang_manad").innerHTML + "#" + document.getElementById("sfs_kostnad_tidsatgang_manad").innerHTML + "&";
		val5 = val5 + "<line>##&";
		val5 = val5 + "<b>DIREKTA KOSTNADER##&";
		val5 = val5 + "RUM##&";
		val5 = val5 + "Yt&aring;tg&aring;ng (normalt f&ouml;r r&ouml;krum 8-25 kvm)#Ingen#2 m<sup>2</sup>/rökstation&";
		val5 = val5 + "Lokalkostnad (normalt 100-400 kr/kvm/månad)#" + form.kvmkostnad.value + " kr/m<sup>2</sup>/månad#Samma&";
		val5 = val5 + "Antal rökstationer (ungefär 1 station/10 rökare)##" + document.getElementById("sfs_stationer").innerHTML + "&";
		val5 = val5 + "<by>Ytkostnad#" + document.getElementById("ytkostnad").innerHTML + "#" + document.getElementById("sfs_ytkostnad").innerHTML + "&";

		val5 = val5 + "ENERGI##&";
		val5 = val5 + "Energiåtgång (normalt ca 200 kWh/kvm/månad)#Ingen#80 kWh/månad per rökstation&";
		val5 = val5 + "<by>Energikostnad vid 1 kr/kWh#" + document.getElementById("energikostnad").innerHTML + "#" + document.getElementById("sfs_energikostnad").innerHTML + "&";

		val5 = val5 + "HANTERING AV FIMPAR OCH ASKA##&";
		val5 = val5 + " ##&";
		val5 = val5 + "<by>Total kostnad för hantering av askkoppar och brandolyckor#" + form.hanteringskostnad.value + " kr/månad#Ingen&";


		val5 = val5 + "HYRA AV RÖKSTATION##&";
		val5 = val5 + "<by>Total hyrkostnad#Ingen#" + document.getElementById("hyreskostnad").innerHTML + "&";
		val5 = val5 + "<line>##&";

		val5 = val5 + "<b>Total kostnad för hela arbetsplatsen#" + document.getElementById("total_kostnad").innerHTML + "#" + document.getElementById("total_sfs").innerHTML + "&";
		val5 = val5 + "<big>Besparingar med Smoke Free Systems##" + document.getElementById("sfs_save").innerHTML + "";

		form.pdf_val5.value = val5;
	}
}



function tFix(wert, ds) {
	var wert = (wert.toFixed) ? ((wert + 1).toFixed(ds) - 1) :
        Math.floor(wert) + "." + (Math.pow(10, ds) + Math.round((wert - Math.floor(wert)) * Math.pow(10, ds)) + "").substr(1, ds);
	return wert;
}


function Stringify(jsonData) {
	var strJsonData = '{';
	var itemCount = 0;
	for (var item in jsonData) {
		if (itemCount > 0) {
			strJsonData += ', ';
		}
		temp = jsonData[item];
		if (typeof (temp) == 'object') {
			s = Stringify(temp);
		} else {
			s = '"' + temp + '"';
		}
		strJsonData += '"' + item + '":' + s;
		itemCount++;
	}
	strJsonData += '}';
	return strJsonData;
}
