/**
 * Set language
 */

function setLanguage() {
	var language = window.location.hash.substr(1);

	if (language != "de" && language != "en") {
		language = "de";
	}

	$(document.body).attr('class',language);
}



/**
 * Update values and calculate mortgage fees according to slider input
 */

function updateValues() {
	// read values from input fields (reading from sliders does somehow not work correctly)
	var purchasePrice = document.getElementById('purchasePrice').value.replace(/\'/g, "");
	var grossIncome = document.getElementById('grossIncome').value.replace(/\'/g, "");
	var capitalResources = document.getElementById('capitalResources').value.replace(/\'/g, "");
	var interestRate = document.getElementById('interestRate').value;

	// calculate mortgage (mortgage lower than zero is useless)
	var mortgage = purchasePrice - capitalResources;
	mortgage = mortgage < 0 ? 0 : mortgage;

	// monthly mortgage interest rate, monthly maintenace costs and monthly debit as sum of those two
	var mortgageInterestRate = mortgage * interestRate / 100 / 12;
	var maintenance = purchasePrice * 1.0 / 100 / 12;
	var debit = mortgageInterestRate + maintenance;

	// monthly debit is based on fixed interest rate and monthly maintenace
	var debitCalculated = mortgage * interestRateCalculated / 100 / 12 + maintenance;

	// calculate percent values with spcific formulas
	var mortgagePercent = Math.round((1 - (capitalResources / purchasePrice)) * 100);
	var debitPercent = Math.round(debit * 12 / grossIncome * 100);

	// fill page with all values
	document.getElementById('mortgage').innerHTML = FormatNumberBy3(Math.round(mortgage), ".", "'");
	document.getElementById('mortgageInterestRate').innerHTML = FormatNumberBy3(Math.round(mortgageInterestRate), ".", "'");
	document.getElementById('maintenance').innerHTML = FormatNumberBy3(Math.round(maintenance), ".", "'");
	document.getElementById('debit').innerHTML = FormatNumberBy3(Math.round(debit), ".", "'");
	document.getElementById('debitCalculated').innerHTML = FormatNumberBy3(Math.round(debitCalculated), ".", "'");

	// percent values higher than 100% and lower than 0% are displayed specially
	document.getElementById('mortgagePercent').innerHTML = (mortgagePercent < 0 ? "< 0" : (mortgagePercent > 100 ? "> 100" : mortgagePercent)) + " %";
	document.getElementById('debitPercent').innerHTML = (debitPercent < 0 ? "< 0" : (debitPercent > 100 ? "> 100" : debitPercent)) + " %";

	// update progress bar
	$("#progressbarMortgagePercent").progressbar("value", mortgagePercent);
	$("#progressbarDebitPercent").progressbar("value", debitPercent);

	// set progress bar color dependant on percent values
	if (mortgagePercent > 70) {
		document.getElementById('mortgagePercent').style.color = "#cc0000";
		document.getElementById('progressbarMortgagePercent').getElementsByTagName('div')[0].style.background = "#cc0000";
	} else {
		document.getElementById('mortgagePercent').style.color = "#009900";
		document.getElementById('progressbarMortgagePercent').getElementsByTagName('div')[0].style.background = "#009900";
	}

	if (debitPercent > 33) {
		document.getElementById('debitPercent').style.color = "#cc0000";
		document.getElementById('progressbarDebitPercent').getElementsByTagName('div')[0].style.background = "#cc0000";
	} else {
		document.getElementById('debitPercent').style.color = "#009900";
		document.getElementById('progressbarDebitPercent').getElementsByTagName('div')[0].style.background = "#009900";
	}
}



/**
 * jQuery - sliders, progress bars and tool tips
 */

$(function() {
	$("#sliderPurchasePrice").slider({
		value: 800000,
		min: 100000,
		max: 2000000,
		step: 10000,

		slide: function(event, ui) {
			$("#purchasePrice").val(FormatNumberBy3(Math.round(ui.value), ".", "'"));
			updateValues();
		}
	});

	$("#sliderGrossIncome").slider({
		value: 80000,
		min: 1000,
		max: 400000,
		step: 1000,

		slide: function(event, ui) {
			$("#grossIncome").val(FormatNumberBy3(Math.round(ui.value), ".", "'"));
			updateValues();
		}
	});

	$("#sliderCapitalResources").slider({
		value: 400000,
		min: 50000,
		max: 2000000,
		step: 10000,

		slide: function(event, ui) {
			$("#capitalResources").val(FormatNumberBy3(Math.round(ui.value), ".", "'"));
			updateValues();
		}
	});

	$("#sliderInterestRate").slider({
		value: interestRateMonthly,
		min: 0.0,
		max: 9.9,
		step: 0.1,

		slide: function(event, ui) {
			$("#interestRate").val(sprintf("%0.1f", ui.value));
			updateValues();
		}
	});

	$("#purchasePrice").val(FormatNumberBy3($("#sliderPurchasePrice").slider("value"), ".", "'"));
	$("#grossIncome").val(FormatNumberBy3($("#sliderGrossIncome").slider("value"), ".", "'"));
	$("#capitalResources").val(FormatNumberBy3($("#sliderCapitalResources").slider("value"), ".", "'"));
	$("#interestRate").val(sprintf("%0.1f", $("#sliderInterestRate").slider("value")));

	$("#progressbarMortgagePercent").progressbar({ value: 0 });
	$("#progressbarDebitPercent").progressbar({ value: 0 });

	$("#infoPurchasePrice").jHelperTip({
		trigger: "click",
		source: "ajax",
		loadingImg: "scripts/jhelpertip/ajax-loader.gif",
		loadingText: "",
		type: "GET",
		url: 'tooltips/purchasePrice.html',
		autoClose: true,
		opacity: 1.0
	});

	$("#infoGrossIncome").jHelperTip({
		trigger: "click",
		source: "ajax",
		loadingImg: "scripts/jhelpertip/ajax-loader.gif",
		loadingText: "",
		type: "GET",
		url: 'tooltips/grossIncome.html',
		autoClose: true,
		opacity: 1.0
	});

	$("#infoCapitalResources").jHelperTip({
		trigger: "click",
		source: "ajax",
		loadingImg: "scripts/jhelpertip/ajax-loader.gif",
		loadingText: "",
		type: "GET",
		url: 'tooltips/capitalResources.html',
		autoClose: true,
		opacity: 1.0
	});

	$("#infoDebitCalculated").jHelperTip({
		trigger: "click",
		source: "ajax",
		loadingImg: "scripts/jhelpertip/ajax-loader.gif",
		loadingText: "",
		type: "GET",
		url: 'tooltips/debitCalculated.html',
		autoClose: true,
		opacity: 1.0
	});

	$("#infoDebit").jHelperTip({
		trigger: "click",
		source: "ajax",
		loadingImg: "scripts/jhelpertip/ajax-loader.gif",
		loadingText: "",
		type: "GET",
		url: 'tooltips/debit.html',
		autoClose: true,
		opacity: 1.0,
		topOff: -175
	});

});
