calculator = {
	sliderStep: 100,
	counter: 0,
	
	construct: function()
	{
		$("#prize").unbind();
		$("#prize").blur(function(){
			var prize = parseInt($("#prize").attr("value"));
			
			$("#prizeTop").html(prize + ' PLN');
			$("#slider1").slider("value", prize);
		});
		
		$("#payment").unbind();
		$("#payment").blur(function(){
			var payment = parseInt($("#payment").attr("value"));
			
			$("#paymentTop").html(payment + ' PLN');
			$("#slider2").slider("value", payment);
		});
		
		$("#year").unbind();
		$("#year").blur(function(){
			var year = parseInt($("#year").attr("value"));
			
			$("#yearTop").html(year);
			$("#slider4").slider("value", year);
		});
		
		$("#installment").unbind();
		$("#installment").blur(function(){
			var installment = parseInt($("#installment").attr("value"));
			
			$("#installmentTop").html(installment);
			$("#slider5").slider("value", installment);
		});
		
		calculator.initPrizeSlider();
		calculator.initPaymentSlider();
		calculator.initYearSlider();
		calculator.initInstallmentSlider();
	},
	
	initPrizeSlider: function()
	{
		var prizeMin = parseInt($("#prizeMin").attr("value"));
		var prizeMax = parseInt($("#prizeMax").attr("value"));
		var prizeVal = parseInt($("#prize").attr("value"));
		
		if(prizeVal == 0) {
			prizeVal = prizeMin;
		}
		
		$("#prize").val(prizeVal);
		$("#prizeTop").html(prizeVal + ' PLN');
		
		$("#slider1").unbind();
		$("#slider1").slider({
			range: "min",
			value: prizeVal,
			
			step: calculator.sliderStep,
			
        	min: prizeMin,
			max: prizeMax,
			
			slide: function(event, ui) {
				$("#prize").val(ui.value);
				$("#prizeTop").html(ui.value + ' PLN');
			},
			
			change: function(event, ui) {
				calculator.sendForm();
			}
		});
	},
	
	initPaymentSlider: function()
	{
		var paymentMin = parseInt($("#paymentMin").attr("value"));
		var paymentMax = parseInt($("#paymentMax").attr("value"));
		
		$("#payment").val(paymentMin);
		$("#paymentTop").html(paymentMin + ' PLN');
		
		$("#slider2").unbind();
		$("#slider2").slider({
			
        	range: "min",
			value: paymentMin,
			
			step: calculator.sliderStep,
			
        	min: paymentMin,
			max: paymentMax,
			
			slide: function(event, ui) {
				$("#payment").val(ui.value);
				$("#paymentTop").html(ui.value + ' PLN');
			},
			
			change: function(event, ui) {
				calculator.sendForm();
			}
		});
	},
	
	initYearSlider: function()
	{
		var yearMin = parseInt($("#calcYearMin").attr("value"));
		var yearMax = parseInt($("#calcYearMax").attr("value"));
		var yearVal = parseInt($("#year").attr("value"));
		
		if(yearVal == 0) {
			yearVal = yearMin;
		}
		
		$("#year").val(yearVal);
		$("#yearTop").html(yearVal);
		
		$("#slider4").unbind();
		$("#slider4").slider({
			
			range: "min",
			value: yearVal,
			
			step: 1,
			
        	min: yearMin,
			max: yearMax,
			
			slide: function(event, ui) {
				$("#year").val(ui.value);
				$("#yearTop").html(ui.value);
			},
			
			change: function(event, ui) {
				calculator.sendForm();
			}
		});
	},
	
	initInstallmentSlider: function()
	{
		var installmentMin = parseInt($("#installmentMin").attr("value"));
		var installmentMax = parseInt($("#installmentMax").attr("value"));
		
		$("#installment").val(installmentMin);
		$("#installmentTop").html(installmentMin);
		 
		$("#slider5").unbind();
		$("#slider5").slider({
			
			range: "min",
			value: installmentMin,
			
			step: 1,
			
        	min: installmentMin,
			max: installmentMax,
			
			slide: function(event, ui) {
				$("#installment").val(ui.value);
				$("#installmentTop").html(ui.value);
			},
			
			change: function(event, ui) {
				calculator.sendForm();
			}
		});
	},
	
	
	sendForm: function() { 

			var options = {
				method: 'post',
                url: $("#calculatorForm").attr("action"),
                success: calculator.response,
                dataType: 'json'
            };
			
			$('#calculatorForm').unbind();
	        $('#calculatorForm').ajaxForm(options);
			$('#calculatorForm').submit();
	},

	updateSlider2: function(value, min, max)
	{
		$("#slider2").unbind();
		
		value = parseInt(value);
		$("#slider2").slider("value", value);
		
		$("#payment").val(value);
		$("#paymentTop").html(value + ' PLN');
	},

	response: function(response, status)
	{
		
		if(true === response.countResponse.status) {
			calculator.showResults(response.countResponse.pmt);

		} else {
			calculator.updateSlider2(
				response.countResponse.correctPayment,
				response.countResponse.minimalPayment,
				response.countResponse.maximumPayment
			);
			calculator.showErrors(response.countResponse.messages);
		}
		
		
	},
	
	showResults: function(pmt)
	{
		calculator.counter++;
		if(calculator.counter > 1) {
			calculator.counter = 0;
			$('.messages').text('');
		}
		
		$("#pmt").html('');
		$("#resultBox").show();
		$("#pmt").html(pmt);
		$("#resultBox").show();
	},
	
	showErrors: function(messages)
	{
		calculator.counter = 0;
		$.each(messages, function(inputName, message){
			var messageArray = new Array();

			var index = 0;
			$.each(message, function(errorName, error){
				messageArray[index++] = error;
			});

			$("#" + inputName + "Messages").text(messageArray[0]);
		});
	}
}

$(document).ready(function(){
	calculator.construct();
});