// при загрузке документа
$(document).ready(function() {
    loadedPage = "";
    firstLoad  = true;
    currentStockPage = 1;
    // вспомогательные функции
    $.fn.int = function() { return parseInt(this.val()); }
    $.fn.float = function() { return parseFloat(this.val()); }
    // обработка checkbox опций автомобиля
    processOptionCheck();
    $("input:checkbox", $("#optionForm")).click(function() { processOptionCheck(); });
    $("select", $("#optionForm")).change(function() { processOptionCheck(); });
    $("input:checkbox", $("#optionAddForm")).click(function() { processOptionCheck(); });
    // кредитный калькулятор
    $("#money").change(function() { calcPayPerMonth(); });
    $("#procent").change(function() { calcMoney(); });
    $("#prolong").change(function() { calcPayPerMonth(); });
    $("#priceToEmail").click(function() { loadCalculation(); });
    bindBehaviors = function() {
        $(".item").css('cursor', 'pointer');
        $(".item").click(function() {
            displayAuto($(this).attr('id'));
            return false;
        });
    }
});

function displayAuto(vin) {
    loadedPage = "auto";
    $.ajax({
        url: '/engine/auto.php',
        type: 'GET',
        data: {vin: vin},
        dataType: 'html',
        success: function(data) {
              printLink = printf('<br><a href="engine/auto.php?vin=%s&print=1" target="_blank">Распечатать</a>', vin);
              $("#content").html('<a href="#stock" onclick="loadStock()">к списку автомобилей</a>' + data + printLink);
        }
    });
}

function calcMoney() {
    if (! isNaN(parseInt($("#price").text()))) {
        $("#money").val(parseFloat($("#price").text()) * $("#procent").int() / 100);
    } else {
        $("#money").val($("#pricediv").text());
    }
    calcPayPerMonth();
}

// проверка корректности email
function checkEmail(email) {
    var reg = new RegExp("[0-9a-z_]+@[0-9a-z_^.]+\\.[a-z]{2,3}", 'i');
    if (reg.test(email)) {
        return true;
    }
    return false;
}

function displayCalculationDialog(html, queryString) {
    $.blockUI(html, { width: '400px' });
    $('#cancelCalculation').click($.unblockUI);
    $("#sendCalculation").click(function() {
        if (! checkEmail($("#calculationEmail").val())) {
            alert("Введен неверный email");
        } else {
            $.ajax({
                url: '/engine/core/calculation.php',
                type: 'POST',
                data: queryString+'&email='+$("#calculationEmail").val(),
                dataType: 'json',
                success: function() { alert("Сообщение отправлено"); $.unblockUI(); }
            });
        }
    });
}

// вывод выбранных опций и отправка на email
function loadCalculation() {
    var data = "modelname="+$("#redbot strong").text()+"&price="+$("#price").text()+"&enginename="+$("#engine").text()+"&gearboxname="+$("#gearbox").text();
    var queryString = $('#optionForm').formSerialize() + "&" + data + "&" + $('#optionAddForm').formSerialize();
    $.ajax({
        url: '/engine/core/calculation.php',
        type: 'POST',
        data: queryString,
        dataType: 'html',
        success: function (data) { displayCalculationDialog(data, queryString); }
    });
}

function loadStock() {
    loadedPage = "stock";
    $("#modelInfo").append('<img class="busy" style="margin-left: 5px;" src="/img/busy.gif">');
    $.ajax({
        url: '/json.php',
        type: 'GET',
        data: $('#optionForm').formSerialize() + "&stock=1",
        dataType: 'json',
        success: function (data) {
            var itemsPerPage = 9;
            var startItem = (currentStockPage - 1) * itemsPerPage;
            if (data.length < startItem) {
                startItem = 0;
                currentStockPage = 1;
            }
            var endItem   = startItem + itemsPerPage;
            var out = "";
            for (var i = 0; i < data.length; i++) {
                if ((i >= startItem) && (i < endItem)) {
                    out += printf('<div class="item" id="%s">', data[i].id);
                    out += printf('<img src="%s" />', data[i].img);
                    out += printf('<div class="colorName">%s</div>', data[i].color);
                    out += printf('<div class="itemPrice">%8.2f рублей</div>', data[i].price);
                    out += '</div>';
                }
            }
            if (out != "") {
                var pagesCount = Math.ceil(data.length / itemsPerPage);
                var pager = '';
                if (pagesCount > 1) {
                    for (var i = 1; i <= pagesCount; i++) {
                        if (i == currentStockPage) {
                            pager += printf('<span class="pageLink active">%d</span>', i, i);
                        } else {
                            pager += printf('<a href="#page%d" class="pageLink">%d</a>', i, i);
                        }
                    }
                    if (pager != '') {
                        pager = printf('<div class="pageLinks">%s</div>', pager);
                    }
                }
                out = '<div class="items">' + out + pager + '<br></div>';
            }
            $("#content").html(out);
            $(".pageLink").click(function() {
               currentStockPage = $(this).text();
                processOptionCheck();
            });
            bindBehaviors();
            $(".busy", $("#modelInfo")).remove();
        }
    });
}

function loadGallery(modelPath, variantPath) {
    loadedPage = "gallery";
    $.getJSON("/json.php", {gallery: 1, modelPath: modelPath, variantPath: variantPath},
        function(data) {
            var out = "";
            for (var i = 0; i < data.length; i++) {
                out += '<div class="item">';
                out += printf('<a href="%s" target="_blank"><img src="%s" /></a>', data[i].bigimage, data[i].imgpath);
                out += printf('<div class="title">%s</div>', data[i].title);
                out += '</div>';
            }
            if (out != "") {
                out = '<div class="items">' + out + '</div>';
            }
            $("#content").html(out);
        });
}

function processOptionCheck(addprice) {
    var price = 0;
    $("input:checkbox:checked", $("#optionAddForm")).each(function() {
       price += parseInt($(this).attr("price"))
    });
    $('<img id="busy" style="margin-left: 5px;" src="/img/busy.gif">').appendTo($("#pricediv"));
    $.ajax({
        url: '/json.php',
        type: 'GET',
        data: $('#optionForm').formSerialize() + "&calculate=1",
        dataType: 'json',
        async: true,
        success: function(data){
            if (data[0].price == '0.00') {
                out = "Цена не определена";
            } else {
                out = printf('Цена от <span id="price">%8.2f</span> рублей', data[0].price + price);
            }
            if (firstLoad) {
                for (i = 0; i < data[1].length; i++) {
                    $("input:checkbox", $("#optionForm")).each(function() {
                       if ($(this).val() == data[1][i]) {
                           $(this).attr('checked', true);
                           $(this).attr('disabled', true);
                       }
                    });
                }
                firstLoad = false;
            }
            $("#autocount").html(String(data[0].autocount));
            $("#pricediv").html(out);
        }
    });
    if (loadedPage == "stock") { loadStock(); }
    $("#procent").change();
}

function changeModelColor(colorId, modelPath, variantPath, hasChild) {
    if (hasChild == 0) {
        imgPath = printf("/img/model/%s/small/%s.jpg", modelPath, colorId);
    } else {
        imgPath = printf("/img/model/%s/%s/small/%s.jpg", modelPath, variantPath, colorId);
    }
    realPath = '/img/model/no.jpg';
    $.ajax({
        url: '/json.php',
        type: 'GET',
        data: {imgpath: imgPath},
        dataType: 'json',
        success: function(j){
            for (var i = 0; i < j.length; i++) {
                if (j[i].fe == '1') {
                    realPath = imgPath;
                }
            }
            $("#variantPhoto").attr("src", realPath);
        }
    });
    $(".color").removeClass("active");
    $(id = printf("#color%s", colorId)).addClass("active");
    $("#currentColorName").empty().append($(id = printf("#color%s", colorId)).attr('title'));
}

function calcPayPerMonth() {
    if (! isNaN(parseInt($("#price").text()))) {
        var result = ((parseFloat($("#price").text()) - $("#money").float()) / $("#prolong").int()) * 1.12;
        $("#result").val(printf("%8.2f", result));
    } else {
        $("#result").val($("#pricediv").text());
        $("#money").val($("#pricediv").text());
    }
}

function pano(modelPath, variantPath){
	var MyURL = "pano.phtml?modelid="+modelPath+"&variantid="+variantPath;
	var Opt = "fullscreen=no,type=fullWindow,location=no,menubar=no,titlebar=no,width=450,height=320,scrollbars=no";
	newww4 = window.open (MyURL, "pano", Opt);
	newww4.focus();
}

function check_form(nomessage){
	if(document.getElementById("spof_email").value == ''){
	    if (! nomessage) {
	       alert("Введите, пожалуйста, Ваш контактный телефон!");
	    }
		return false;
	}else{
		return true;
	}
}

function displayTestDriveDialog(html) {
    $.blockUI(html, { width: '400px' });
    $('#testDriveCancel').click($.unblockUI);
    $('#testDriveOk').click($.unblockUI);
    $('#testDrivePost').click(function() {
        if (check_form(true)) {
            $.ajax({
                url: '/engine/core/testdrive.php',
                type: 'POST',
                data: $('#testDriveForm').formSerialize() + "&ajax=1",
                dataType: 'html',
                comlete: function() {
                    alert(html);
                    $.unblockUI();
                }
            });
        }
        return false;
    });
}

// форма заявки на тест-драйв
function loadTestDrive() {
    $.ajax({
        url: '/engine/core/testdrive.php',
        type: 'POST',
        data: {ajax: 1, pageid: 143},
        dataType: 'html',
        success: displayTestDriveDialog
    });
}
