var asuntolainatTenorMax = 30;
var kulutusluototTenorMax = 12;
var luottokortitTenorMax = 12;

$(document).ready(function() {

	/**
	* Custom dropdowns
	**/
	$('#smallCalculator #tenor, .mortgageCalculator #tenor, .mortgageCalculator #marginal').change(function() {
		$(this).parent().find('.dropdownLabel').eq(0).html($(this).val());
	});
	
	$('.mortgageCalculator #baseRate').change(function() {
		$('.mortgageCalculator #baseRate').parent().find('.dropdownLabel').eq(0).html($('.mortgageCalculator #baseRate :selected').text());
	});


	/**
	* Tooltips
	**/
	$('a.tooltipLink').click(function() {
		$('.tooltip').fadeOut(500);
		var elem = $(this).parent().find('.tooltip');
		var tooltipHeight = '-' + (elem.height()+28+19) + 'px'; // 28 is the padding of the tooltip & 19 is the height of the icon
		$(elem).css('margin-top',tooltipHeight);
				
		$(this).parent().find('.tooltip').fadeIn(500);
		return false;
	});

	$('.tooltip a.close').click(function() {
		$(this).parent().fadeOut(500);
		return false;
	});


	/**
	* Submit of the forms on the frontpage
	**/
	$('#asuntolainaFrontpageForm .submitButton a').click(function(){
		var url = 'https://www.etua.fi/mortgage/index/';
		if( $('#asuntolainaFrontpageForm #asuntolainaLoanAmount').val()!='' ){
			url += 'amount/' + $('#asuntolainaFrontpageForm #asuntolainaLoanAmount').val() + '/';
		}
		window.location = url;
	});
		
	$('#kulutusluottoFrontpageForm .submitButton a').click(function(){
		var url = 'https://www.etua.fi/application/applicant/';
		if( $('#kulutusluottoFrontpageForm #kulutusluottoLoanAmount').val()!='' ){
			url += 'amount/' + $('#kulutusluottoFrontpageForm #kulutusluottoLoanAmount').val() + '/';
		}
		window.location = url;
	});


	/**
	* Submit contact form
	**/
	$('a#submitContactForm').click(function() {
		if( $("input[name='contactBack[]']").is(":checked") ) {
			if( ($('#etunimi').val().length == 0 || $('#sukunimi').val().length == 0) ) {
				alert('Etu- ja sukunimi ovat pakollisia');
				return false;
			}
			if( $('#puhelinnumero').val().length == 0 && $('#sahkoposti').val().length == 0 ) {
				alert('Sähköpostiosoite tai puhelinnumero on puutteellinen');
				return false;
			}
		}
		else {
			if( $('#message').val().length == 0 ) {
				alert('Täytä lomakkeen tiedot');
				return false;
			}
			if( $('#sahkoposti').val().length == 0 ) {
				alert('Sähköposti on puutteellinen');
				return false;
			}
		}

		$('#wpcf7-f1-p72-o1 form').submit();
		alert('Lähetys onnistui');
	});
	
	
	/**
	* Small calculators
	**/
	// Refresh result on loan amount change (sets the maximum tenor)
	$('#smallCalculator #loanAmount').change(function() {
		var loanAmount = $('#smallCalculator #loanAmount').val();
		
		
		if($('#smallCalculator').attr('class')=='asuntolainat') {
			refreshTenor(30);
		}
		
		if($('#smallCalculator').attr('class')=='kulutusluotot') {
			if( loanAmount > 0 && loanAmount< 2500 ){
				refreshTenor(5);
			}
			
			if( loanAmount > 2501 && loanAmount< 5000 ){
				refreshTenor(8);
			}
			
			if( loanAmount > 5001 && loanAmount< 10000 ){
				refreshTenor(10);
			}
			
			if( loanAmount > 10001 ){
				refreshTenor(12);
				$('#smallCalculator #tenor').val("12");
			}
		}

		if($('#smallCalculator').attr('class')=='luottokortit') {
			if( loanAmount > 0 && loanAmount< 2500 ){
				refreshTenor(5);
			}
			
			if( loanAmount > 2501 && loanAmount< 5000 ){
				refreshTenor(8);
			}
			
			if( loanAmount > 5001 && loanAmount< 10000 ){
				refreshTenor(10);
			}
			
			if( loanAmount > 10001 ){
				refreshTenor(12);
				$('#smallCalculator #tenor').val("12");
			}
		}
		var tenor = $('#smallCalculator #tenor').val();
		
		var monthlyInstalment = calculateMonthlyInstalment($('#smallCalculator #loanAmount').val(),$('#smallCalculator #percentage').val(),tenor);
		
		$('#smallCalculatorResult').text(monthlyInstalment);
	});

	
	// Refresh result on tenor change
	$('#smallCalculator #tenor').click(function() {
		var monthlyInstalment = calculateMonthlyInstalment( $('#smallCalculator #loanAmount').val(),$('#smallCalculator #percentage').val(), $('#smallCalculator #tenor').val());
		
		$('#smallCalculatorResult').text(monthlyInstalment);
	});

	// submit the form of the small calculator 
	$('#smallCalculatorForm .submitButton a').click(function(){
		if( $('#smallCalculator').hasClass('kulutusluotot') ) {
            var url = 'https://www.etua.fi/application/applicant/';
        }
		else if( $('#smallCalculator').hasClass('luottokortit') ) {
            var url = 'https://www.etua.fi/creditcard/applicant/';
        }
        else {
            var url = 'https://www.etua.fi/mortgage/index/';
        }
		if( $('#smallCalculatorForm #loanAmount').val()!='' ){
			url += 'amount/' + $('#smallCalculatorForm #loanAmount').val() + '/';
		}
		if( $('#smallCalculatorForm #tenor').val()!='' && !$('#smallCalculator').hasClass('luottokortit')){
			url += 'tenor/' + $('#smallCalculatorForm #tenor').val() + '/';
		}
		window.location = url;
	});


	/**
	* Mortgage Calculator
	**/
	// set the asset transfer task
	var houseType = 0;
	var newHousePrice = 0;
	$("input[name='houseType']").click(function() {
		houseType = $("input[name=houseType]:checked").val();
		newHousePrice = $('#newHousePrice').val();
		
		if( newHousePrice !='' && houseType!='') {
			if(houseType == 'estate') {
				$('#assetTransferTax').val( Math.round((4.0/100) * newHousePrice) );
			}
			else if(houseType == 'apartment') {
				$('#assetTransferTax').val( ( Math.round((1.6/100) * newHousePrice)) );
			}
			else {
				$('#assetTransferTax').val('');
			}
			
			mortgageRefreshLoanAmount( $('#newHousePrice').val(), $('#currentHousePrice').val(), $('#currentMortgage').val(), $('#personalSavings').val(), $('#assetTransferTax').val() );
		}
	});
	$("#newHousePrice").change(function() {
		houseType = $("input[name=houseType]:checked").val();
		newHousePrice = $('#newHousePrice').val();
		
		if( newHousePrice !='' && houseType!='') {
			if(houseType == 'estate') {
				$('#assetTransferTax').val( Math.round((4.0/100) * newHousePrice) );
			}
			else if(houseType == 'apartment') {
				$('#assetTransferTax').val( ( Math.round((1.6/100) * newHousePrice)) );
			}
			else {
				$('#assetTransferTax').val('');
			}
			
			mortgageRefreshLoanAmount( $('#newHousePrice').val(), $('#currentHousePrice').val(), $('#currentMortgage').val(), $('#personalSavings').val(), $('#assetTransferTax').val() );
		}
	});


	// refresh the loan amount on house fields change
	$("#newHousePrice, #currentHousePrice, #currentMortgage, #personalSavings").change(function(){
		mortgageRefreshLoanAmount( $('#newHousePrice').val(), $('#currentHousePrice').val(), $('#currentMortgage').val(), $('#personalSavings').val(), $('#assetTransferTax').val() );
	});


	// refresh the percentage according with the selected base rate
	$('#loanInfo #baseRate').change(function() {
		$('#loanInfo #rate').val($('#loanInfo #baseRate').val());
	});


	// calculate the monthly payment (annuity and fixed instalment)
	$('#loanInfo #continue').click(function() {
		var percentage = $('#loanInfo #rate').val()*1 + $('#loanInfo #marginal').val()*1;

		var annuityPayment = calculateMonthlyInstalment( $('#loanInfo #loanAmount').val(), percentage, $('#loanInfo #tenor').val() );
		$('#annuityResult .result').html('');
		$('#annuityResult .result').val(annuityPayment);
		
		var fixedPayment = calculateFixedInstalment( $('#loanInfo #loanAmount').val(), percentage, $('#loanInfo #tenor').val() );
		$('#fixedResult .result').html('');
		$('#fixedResult .result').val(fixedPayment);
		
		
		calculateAnnuityPaymentPlan($('#loanInfo #loanAmount').val(), percentage, $('#loanInfo #tenor').val(), annuityPayment);
		calculateFixedPaymentPlan($('#loanInfo #loanAmount').val(), percentage, $('#loanInfo #tenor').val(), fixedPayment);
		
		
		
		if( $('#fixedResult .result').val()!=0 || $('#annuityResult .result').val()!= 0 ) {
			$('#content.mortgageCalculator table#paymentPlanAnnuity, #content.mortgageCalculator table#paymentPlanFixed, #content.mortgageCalculator a#sendData, #content.mortgageCalculator a#toggleFullResults').fadeIn();
			
		}
		if( $('#fixedResult .result').val()==0 || $('#annuityResult .result').val()== 0) {
			$('#content.mortgageCalculator table#paymentPlanAnnuity, #content.mortgageCalculator table#paymentPlanFixed, #content.mortgageCalculator a#sendData, #content.mortgageCalculator a#toggleFullResults').fadeOut();
		}
		
		$('#content.mortgageCalculator #results').show();
		
		return false;
	});

	// submit the form of the mortgage calculator 
	/*http://etuamortage.tehokkaasti.com/mortage/index/amount/700/tenor/3 */
	$('#content.mortgageCalculator a#sendData').click(function(){
		var url = 'https://www.etua.fi/mortgage/index/';
		if( $('#content.mortgageCalculator #loanAmount').val()!='' ){
			url += 'amount/' + $('#content.mortgageCalculator #loanAmount').val() + '/';
		}
		if( $('#content.mortgageCalculator #tenor').val()!='' ){
			url += 'tenor/' + $('#content.mortgageCalculator #tenor').val() + '/';
		}
		window.location = url;
	});

	// toggles the house info
	var mortgageHouseOpen = 0;
	$("input[name='mortgageOption']").change(function() {
		var mortgageOption = $("input[name=mortgageOption]:checked").val();
		if( mortgageOption == 'purchaseNew' && mortgageHouseOpen == 0 ) {
			$('.tooltip').hide();
			$('#houseInfo').fadeIn();
			mortgageHouseOpen = 1;
		}
		if( mortgageOption == 'puttingOutTender' && mortgageHouseOpen == 1 ) {
			$('.tooltip').hide();
			$('#houseInfo').fadeOut();
			mortgageHouseOpen = 0;
		}
	});


	// toggle full results
	var showingResults = 0;
	$('#toggleFullResults').click(function() {
		if( $('tr.full').length != 0 ) {
			if( showingResults == 0 ) {
				showingResults = 1;
				$('tr.full').show();
				$('#toggleFullResults').removeClass('close');	
				$('#toggleFullResults').addClass('open');
				$('#toggleFullResults').text("Piilota rivit");
			}
			else if( showingResults == 1 ) {
				showingResults = 0;
				$('tr.full').hide();
				$('#toggleFullResults').removeClass('open');
				$('#toggleFullResults').addClass('close');
				$('#toggleFullResults').text("Näytä kaikki rivit");
			}
		}
		return false;
	});


	/**
	* Field validation
	**/
	$('#mortgageCalculatorUserInput input[type="text"], #smallCalculatorForm input[type="text"], #frontpageForms input[type="text"]').change(function() {
		var value = $(this).val()*1;
		var valid = validateAmount(value);

		if( valid == 0) {
			alert("Tarkista kenttien tiedot");
			return false;
		}
	});
});



/**
* Calculates the monthly instalment
**/
function calculateMonthlyInstalment(loanAmount,percentage,tenor) {
	if(loanAmount < 0) { return 0; }

	var n = tenor * 12;
	var p = percentage/12;
	var dividend = Math.pow( (1+(p / 100)) , n ) * (p/100);
	var divisor = Math.pow( (1+(p / 100)),n) - 1;
	var a = ( dividend / divisor )	* loanAmount;
	
	return Math.round(a);
}

/**
* Tenor value refresh (small calculator)
*  - refreshes the form according to the max tenor value;
*  - sets the max tenor value as selected;
**/
function refreshTenor(maxTenor) {
	$('#smallCalculator #tenor').html('');
	var options = '';

	for(var i=1; i<=maxTenor; i++) {
		options += '<option value="' + i + '">' + i + '</option>';
	}
	
	$('#smallCalculator #tenor').html(options);
	$('#smallCalculator #tenor').val(maxTenor);
	$('#smallCalculator #tenor').parent().find('.dropdownLabel').eq(0).html(maxTenor);
}

/**
* Calculates the loan amount if the user new house purchase is selected
*  - Loan Ammount = Price of the new house - price of the current house + current mortgage - personal savings + asset transfer tax
**/
function mortgageRefreshLoanAmount(newHousePrice, currentHousePrice, currentMortgage, personalSavings, assetTransferTax) {
	var loanAmount = 0;
	if( newHousePrice!='' && currentHousePrice!='' && currentMortgage!='' && personalSavings!='' && assetTransferTax!='' ) {
		// multiplying each field per 1 ensures the fields are added insteat on concatenated
		loanAmount = newHousePrice*1 - currentHousePrice*1 + currentMortgage*1 - personalSavings*1 + assetTransferTax*1;

		$('#loanAmount').val(loanAmount);
	}
}


/**
* Calculates the monthly payment for the fixed instalment
**/
function calculateFixedInstalment(loanAmount, interest, tenor) {
	if(loanAmount < 0) { return 0; }

	numPayments = tenor * 12; // number of monthly payments
	
	amortization = loanAmount / numPayments;
	
	instalment = ( (loanAmount / (12*tenor))+(loanAmount*interest/12/100) );
	return Math.round(instalment);
}


/**
* Calculate payment plan for the annuity
**/
function calculateAnnuityPaymentPlan(loanAmount, percentage, tenor, payment) {
	var months = tenor * 12;
	var loanLeft = loanAmount;
	var interestRate = percentage/12/100;
	var monthlyPaymentSum = 0;
	var monthlyAmortizationSum = 0;
	var monthlyInterestSum = 0;
	

	$('#paymentPlanAnnuity').html('');
	$('#paymentPlanAnnuity').append('<tr><th>Yhteensä</th><th>KK-erä</th><th>Lainan lyhennys</th><th>Korko</th><th></th></tr>');
	$('#paymentPlanAnnuity').append('<tr><td>' + months +'</td><td class="monthlyPaymentSum even"></td><td class="monthlyAmortizationSum"></td><td class="monthlyInterestSum even"></td><td></td></tr>');
	$('#paymentPlanAnnuity').append('<tr><th>Kuukaudet</th><th>KK-erä</th><th>Lainan lyhennys</th><th>Korko</th><th>Lainaa jäljellä</th></tr>');

	for(var i=1;i<=months;i++) {
		interest = interestRate * loanLeft;
		loanReduction = payment - interest;
		loanLeft -= loanReduction;
		
		monthlyInterestSum += interest;
		monthlyAmortizationSum += loanReduction;
		
		if( i<6 ) {
			$('#paymentPlanAnnuity').append('<tr>' + '<td>' + i + '</td><td class="even">' + payment + '</td><td>'+ Math.round(loanReduction) +'</td><td class="even">' + Math.round(interest) + '</td><td>' + Math.round(loanLeft) + '</td></tr>');
		}
		else {
			$('#paymentPlanAnnuity').append('<tr class="full">' + '<td>' + i + '</td><td class="even">' + payment + '</td><td>'+ Math.round(loanReduction) +'</td><td class="even">' + Math.round(interest) + '</td><td>' + Math.round(loanLeft) + '</td></tr>');
		}
	}
	
	$('#paymentPlanAnnuity .monthlyPaymentSum').append(Math.round(payment*months));
	$('#paymentPlanAnnuity .monthlyAmortizationSum').append(Math.round(monthlyAmortizationSum));
	$('#paymentPlanAnnuity .monthlyInterestSum').append(Math.round(monthlyInterestSum));
	
}




/**
* Calculate payment plan for the fixed
**/
function calculateFixedPaymentPlan(loanAmount, percentage, tenor, firstPayment) {
	var mTenor = tenor * 12;
	var fixedValue = loanAmount / mTenor;
	var monthlyInstalment = firstPayment;
	var loanLeft = loanAmount;
	var interestRate = percentage/12/100;
	var monthlyPaymentSum = 0;
	var monthlyAmortizationSum = 0;
	var monthlyInterestSum = 0;

	$('#paymentPlanFixed').html('');
	$('#paymentPlanFixed').append('<tr><th>Yhteensä</th><th>KK-erä</th><th>Lainan lyhennys</th><th>Korko</th><th></th></tr>');
	$('#paymentPlanFixed').append('<tr><td>' + mTenor +'</td><td class="monthlyPaymentSum even"></td><td class="monthlyAmortizationSum"></td><td class="monthlyInterestSum even"></td><td></td></tr>');
	$('#paymentPlanFixed').append('<tr><th>Kuukaudet</th><th>KK-erä</th><th>Lainan lyhennys</th><th>Korko</th><th>Lainaa jäljellä</th></tr>');

	for(var i=1;i<=mTenor;i++) {
		loanLeft -= fixedValue;
		interest = (interestRate/12/100) * loanLeft;
		monthlyInstalment = fixedValue + loanLeft * interestRate;
		interestAmount = loanLeft * interestRate;
		
		monthlyPaymentSum += monthlyInstalment;
		monthlyInterestSum += interestAmount;
		 	
		if( i<6 ) {
			$('#paymentPlanFixed').append('<tr>' + '<td>' + i + '</td><td class="even">' + Math.round(monthlyInstalment) + '</td><td>'+ Math.round(fixedValue) +'</td><td class="even">' + Math.round(interestAmount) + '</td><td>' + Math.round(loanLeft) + '</td></tr>'); 
		}
		else {
			$('#paymentPlanFixed').append('<tr class="full">' + '<td>' + i + '</td><td class="even">' + Math.round(monthlyInstalment) + '</td><td>'+ Math.round(fixedValue) +'</td><td class="even">' + Math.round(interestAmount) + '</td><td>' + Math.round(loanLeft) + '</td></tr>'); 
		}
	}
	
	$('#paymentPlanFixed .monthlyPaymentSum').append(Math.round(monthlyPaymentSum));
	$('#paymentPlanFixed .monthlyAmortizationSum').append(Math.round(fixedValue*mTenor));
	$('#paymentPlanFixed .monthlyInterestSum').append(Math.round(monthlyInterestSum));
}



function validateAmount(loanAmount) {
	if( (loanAmount === parseInt(loanAmount,10)) == false ) {
		return 0;
	}
	else {
		if( loanAmount < 0 || loanAmount > 999999) {
			return 0;
		}
	}
	return 1;	
}






