﻿/// <reference path="../scripts/jquery-1.4.2.min.js" />

// 14 = Strom
// 15 = Heizöl
// 16 = Erdgas

var STROM = 14;
var HEIZOEL = 15;
var ERDGAS = 16;

var _heitzmittelmultiplicator = "1";
var _defaultCostsPerEnergyUnit = 0;
var _co2multiplicator = "0,572";
var _literMulitplicator = 1;
var _calcWithPoint = "&calcWithPoint=false";

function setCalcWithPoint(calc) {
	if (calc) {
		_calcWithPoint = "&calcWithPoint=true";
	}
	else {
		_calcWithPoint = "&calcWithPoint=false";
	}
}

function calculator_init() {
	$(function () {
		$("#berechnen").click(function () { update_results(); });

		$(".Changeable").change(function () {
			update_heizmittel();
		});
		$("#SelectHeizperiode").change(function () {
			//update_all();
			$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());
			update_heizmittel();
		});
		$("#SelectHeizmittel").change(function () {
			$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());
			update_heizmittel();
		});
		update_heizmittel();
		$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());
	});
}

function update_all() {
	update_heizmittel();
	update_results();
}


function update_heizmittel() {
	switch (get_current_heizmittel()) {
		default:

			break;
		case STROM:
			$(".eurkwh").html("EUR/" + PHRASE_KWH);
			_defaultCostsPerEnergyUnit = $("#SelectHeizperiode :selected").val().split(";")[1];
			//alert(_defaultCostsPerEnergyUnit);
			if (_defaultCostsPerEnergyUnit.toString().length == 0) {
				_defaultCostsPerEnergyUnit = "";
			}
			$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());

			_co2multiplicator = "0,572";
			_heitzmittelmultiplicator = "1";
			_literMulitplicator = 1;
			break;
		case HEIZOEL:
			$(".eurkwh").html("EUR/" + PHRASE_LITER);
			_defaultCostsPerEnergyUnit = $("#SelectHeizperiode :selected").val().split(";")[2];
			if (_defaultCostsPerEnergyUnit.toString().length == 0) {
				_defaultCostsPerEnergyUnit = "";
			}
			$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());

			_co2multiplicator = "3,167";
			_heitzmittelmultiplicator = "0,1";
			_literMulitplicator = 0.1;
			break;
		case ERDGAS:
			$(".eurkwh").html("EUR/" + PHRASE_M3);
			_defaultCostsPerEnergyUnit = $("#SelectHeizperiode :selected").val().split(";")[3];
			if (_defaultCostsPerEnergyUnit.toString().length == 0) {
				_defaultCostsPerEnergyUnit = "";
			}
			$("#costsperenergyunitcustom").val(get_current_costsperenergyunit());

			_heitzmittelmultiplicator = "0,1";
			_co2multiplicator = "2,343";
			_literMulitplicator = 1;
			break;
	}
}

function update_results() {
	$(".eurkwh").html("EUR/" + PHRASE_KWH);
	$(".kgco2").html(PHRASE_KGCO2);
	$(".unitsavings").html(PHRASE_KWH);

	var surfaceFactor = $("#SelectFensterflaeche :selected").val();
	var savingPerWindowType = $("#SelectFenstertyp :selected").val();
	var countryFactor = get_current_countryfactory();
	var result1 = "";
	var result2 = "";
	var result3 = "";
	var costsPerEnergyunit = parseFloat(string_replace_all($("#costsperenergyunitcustom").val(), ",", ".")) * _literMulitplicator; // $("#SelectHeizmittel :selected").val();
	if (DECIMAL_SEPERATOR == ".") {
		setCalcWithPoint(true);
		result1 = calculator_server_calc(surfaceFactor, savingPerWindowType, countryFactor, costsPerEnergyunit.toString());
	}
	else {
		setCalcWithPoint(false);
		result1 = calculator_server_calc(surfaceFactor, savingPerWindowType, countryFactor, string_replace_all(costsPerEnergyunit.toString(), ".", ","));
	}
	if (DECIMAL_SEPERATOR == ".") {
		setCalcWithPoint(true);
		result2 = calculator_server_calc(surfaceFactor, savingPerWindowType, countryFactor, string_replace_all(_heitzmittelmultiplicator, ",", "."));
	}
	else {
		setCalcWithPoint(false);
		result2 = calculator_server_calc(surfaceFactor, savingPerWindowType, countryFactor, _heitzmittelmultiplicator);
	}
	if (DECIMAL_SEPERATOR == ".") {
		setCalcWithPoint(true);
		result3 = calculator_server_calc_co2(result2, string_replace_all(_co2multiplicator, ",", "."));
	}
	else {
		setCalcWithPoint(false);
		result3 = calculator_server_calc_co2(result2, _co2multiplicator);
	}

	$("#CalculatorResult1").val(result1.toString());
	$("#CalculatorResult2").val(result2.toString());
	$("#CalculatorResult3").val(result3.toString());

	switch (get_current_heizmittel()) {
		default:

			break;
		case STROM:
			$(".eurkwh").html("EUR/" + PHRASE_KWH);
			$(".unitsavings").html(PHRASE_KWH);
			break;
		case HEIZOEL:
			$(".eurkwh").html("EUR/" + PHRASE_LITER);
			$(".unitsavings").html(PHRASE_LITER);
			break;
		case ERDGAS:
			$(".eurkwh").html("EUR/" + PHRASE_M3);
			$(".unitsavings").html(PHRASE_M3);
			break;
	}
}

function get_current_costsperenergyunit() {
	return _defaultCostsPerEnergyUnit;
}

function get_current_countryfactory() {
	//alert($("#SelectHeizperiode :selected").val().split(";")[0]);
	return string_replace_all($("#SelectHeizperiode :selected").val().split(";")[0], ";", "");
}

function get_current_heizmittel() {
	return parseInt($("#SelectHeizmittel :selected").val());
}

function string_replace_all(input, toReplace, replaceWitH) {
	while (input.indexOf(toReplace) != -1) {
		input = input.replace(toReplace, replaceWitH);
	}
	return input;
}

function calculator_server_calc(surfaceFactor, savingPerWindowType, countryFactor, costsPerEnergyunit) {
	var result = "";
	var dataString = "type=savings&surfacefactor=" + surfaceFactor + "&savingperwindowtype=" + savingPerWindowType + "&countryfactor=" + countryFactor + "&costsperenergyunit=" + costsPerEnergyunit + _calcWithPoint;
	$.ajax({
		url: "calc.asp",
		type: "POST",
		async: false,
		data: dataString,
		success: function (output) {
			result = output;
		}
	});
	//alert(dataString);
	return result;
}

function calculator_server_calc_co2(a, b) {
	var result = "";
	var dataString = "type=co2output&a=" + a + "&b=" + b + _calcWithPoint;
	$.ajax({
		url: "calc.asp",
		type: "POST",
		async: false,
		data: dataString,
		success: function (output) {
			result = output;
		}
	});
	//alert(dataString);
	return result;
}

calculator_init();
