var complectPrices = new Array();
var resultContent = "";
var resultLoading = "Выполняется рассчет...";

$(document).ready(function() {
	resultContent = $("#resultContainer").html();
	resultLoading = "Выполняется рассчет...";
});

function setResultLoading() {
	$("#resultContainer").show();
	$("#resultContainer").html(resultLoading);
}

function setResultContent() {
	
	//$("#resultContainer").fadeOut("normal");
	$("#resultContainer").html(resultContent);
}

function selectorChanged(selector) {
	
	var selectorID     = selector.id;
	var selectorVALUES = $('#' + selectorID).selectedValues();
	var selectorVALUE  = selectorVALUES[0];
	
	switch (selectorID) {
		
		case 'modelSelector':
			updateComplectations();
		break;
		
		case 'complectSelector':
			updateBanks();
			updatePrice();
		break;
		
		case 'bankSelector':
			updateProgramme();
		break;
		
		case 'programmeSelector':
			updatePeriod();
		break;
		
		default:
		break;
		
	}
	
}

function getSelectorValue(selectorID) {
	var selectorVALUES = $('#' + selectorID).selectedValues();
	var selectorVALUE  = selectorVALUES[0];
	return selectorVALUE;
}

function updateComplectations() {	
	var modelID = getSelectorValue("modelSelector");
	$.getJSON("/ajax/loan/mmf/",{what : "complectations", model_id : modelID}, function(data) { fillComplectations(data); });
}

function updateBanks() {	
	var modelID = getSelectorValue("modelSelector");
	$.getJSON("/ajax/loan/mmf/",{what : "banks", model_id : modelID}, function(data) { fillBanks(data); });
}

function updateProgramme() {
	var bankID     = getSelectorValue("bankSelector");
	var modelID    = getSelectorValue("modelSelector");
	var complectID = getSelectorValue("complectSelector")
	$.getJSON("/ajax/loan/mmf/",{what : "programmes", bank_id : bankID, model_id : modelID, version_id : complectID}, function(data) { fillProgrammes(data); });
}

function updatePeriod() {
	var programmeID = getSelectorValue("programmeSelector");
	$.getJSON("/ajax/loan/mmf/",{what : "periods", programme_id : programmeID}, function(data) { fillPeriods(data); });
}

function updatePrice() {
	var complectID = getSelectorValue("complectSelector");
	if (complectPrices.length) {
		$("#priceContainer").html("Цена этой комплектации: " + number_format( complectPrices[complectID], 0, ".", " " ) + ' руб.');
	}
}

function fillComplectations(data) {
	complectPrices = new Array();
	
	var optionsArray = new Array();
	optionsArray[0] = "--- Выберите комплектацию ---";
	for(var i = 0; i < data.length; i++) {
		optionsArray[data[i]["id"]] = data[i]["name"];	
		complectPrices[data[i]["id"]] = data[i]["price"];	
	}	
	$("#complectSelector").removeOption(/./);
	$("#complectSelector").addOption(optionsArray,false);
	$("#complectSelector").removeAttr("disabled");
	
	$("#programmeSelector").removeOption(/./);
	$("#bankSelector").removeOption(/./);
	$("#periodSelector").removeOption(/./);
	
	$("#priceContainer").html("&nbsp;");	
	$("#resultContainer").fadeOut("normal");
}

function fillBanks(data) {
	var optionsArray = new Array();
	optionsArray[0] = "--- Выберите банк ---";
	for(var i = 0; i < data.length; i++) {
		optionsArray[data[i]["id"]] = data[i]["name"];	
	}	
	$("#bankSelector").removeOption(/./);
	$("#bankSelector").addOption(optionsArray,false);
	$("#bankSelector").removeAttr("disabled");
	
	$("#programmeSelector").removeOption(/./);
	$("#periodSelector").removeOption(/./);
	
	$("#resultContainer").fadeOut("normal");
}

function fillProgrammes(data) {
	var optionsArray = new Array();
	optionsArray[0] = "--- Выберите программу ---";
	
	for(var i = 0; i < data.length; i++) {
		optionsArray[data[i]["id"]] = data[i]["name"];	
	}	
	$("#programmeSelector").removeOption(/./);
	$("#programmeSelector").addOption(optionsArray,false);
	$("#programmeSelector").removeAttr("disabled");
	
	$("#periodSelector").removeOption(/./);	
	$("#resultContainer").fadeOut("normal");
}

function fillPeriods(data) {
	var optionsArray = new Array();
	optionsArray[0] = "--- Выберите срок кредита ---";
	
	for(var i = 0; i < data.length; i++) {
		optionsArray[data[i]["id"]] = data[i]["name"] + ' мес.';	
	}	
	$("#periodSelector").removeOption(/./);
	$("#periodSelector").addOption(optionsArray,false);
	$("#periodSelector").removeAttr("disabled");
	
	$("#resultContainer").fadeOut("normal");
}

function calculate() {
	var complectID  = getSelectorValue("complectSelector");
	var programmeID = getSelectorValue("programmeSelector");
	var rateID      = getSelectorValue("periodSelector");
	var dp          = $("#dpValue").val();
	
	if (complectID > 0 && programmeID > 0 && rateID > 0 && dp) {
		setResultLoading();
		$.getJSON("/ajax/loan/mmf/",{what : "calc", 
		                             version_id : complectID, 
		                             programme_id : programmeID, 
		                             rate_id : rateID, 
		                             dp : dp}, function(data) { showResults(data); });
	}
	else {
		alert("Вы указали не все параметры");
	}
	
}

function showResults(data) {
	setResultContent();
	if (data["error"]) {
		$("#resultContainer").fadeOut("normal");
		alert("Начальный взнос по выбранной программе должен быть не менее " + data["min"] + " руб.");
	}
	else {
		$("#resultName").html(data['car']);
		$("#resultPrice").html(data['price']);
		$("#resultInitialPercent").html(data['initialPercent']);
		$("#resultInitialPrice").html(data['initialPrice']);
		$("#resultLoanSum").html(data['loan']);
		$("#resultPeriod").html(data['period']);
		$("#resultRate").html(data['rate']);
		$("#resultMonthPayment").html(data['monthPayment']);
		$("#resultFirstPayment").html(data['firstPayment']);
		$("#resultTotalPayment").html('<nobr>' + data['totalSum'] + '</nobr>');
		
		$("#resultContainer").fadeIn("normal");
	}
}
