﻿var sendExtFind = false;
var commonInit = function () {
    //комбобоксы в поиске
    $("select[id^=cb_]").selectmenu({ style: 'dropdown', width: 135, maxHeight: 300 });
    //Меню
    $("#catMenu>li>a[id^=img_]").bind("click", toggleMenu);
    $("#catMenu1>li>a[id^=img_]").bind("click", toggleMenu);
    $("#clMenu>li>a[id^=img_]").bind("click", toggleMenu);
    $("#sgMenu>li>a[id^=img_]").bind("click", toggleMenu);
    $("#spMenu1>li>a[id^=img_]").bind("click", toggleMenu);
    
    //показываем размеры в поиске - если кольца
    $("#cb_category").bind("change", function () {
        if (this.value == "kolca") {
            $("#dvSizes").show();
        }
        else {
            $("#dvSizes").hide();
        }
    });
    //комбобокс в каталоге
    $("#pageSize").selectmenu({ style: 'dropdown', width: "100", myClass: "pager" }).bind("change", function () { $("#frmPageSelect").submit(); });
    //Отправка формы по кнопке простого поиска
    $("#loupe, #loupeEx").bind("click", function () {
        if (!sendExtFind) {
            setPriceFields();
        }
        $("#isExtended").val(sendExtFind);
        $("#frmSelect").submit();
    });
    //Отправка формы по enter текстовых полей
    $("#tb_code, #tb_priceFrom, #tb_priceTo, #tb_article, #tb_weightFrom, #tb_weightTo").keypress(function (e) {
        if (e.which != 13 ) return;
        $("#isExtended").val(sendExtFind);
        $("#frmSelect").submit();
    });

    //Показываем / прячем панель расширенного поиска и лупу по клику на расширенном поиске
    $("#onSearch").bind("click", showHideExtFind );
    //текстбоксы с хинтами
    $("#tb_code").hint();
    $("#tb_article").hint();
    $("#tb_subscribe").hint();
    //диапазон цен
    $("#cb_price").bind("change", setPriceFields);
    checkOnlineService();
    prepareLoginBox();
}
var showHideExtFind = function () {
    var el = $("#advanced-searchV")[0];
    if (el.style.display == 'none') {
        el.style.display = '';
        $("#advanced-search").slideToggle("slow");
        sendExtFind = true;
    }
    else {
        $("#advanced-search").slideToggle("slow", function () { el.style.display = 'none'; });
        sendExtFind = false;
    };
    return false;
}
var toggleCatMenu = function ( id ) {

    $("#" + id + "_tgl").toggleClass("sdOn");
    $("#" + id + "1").slideToggle('slow', function () {
        $.ajax({ type: "POST",
            traditional: true,
            url: "/utils/setCatMenuState",
            async: true,
            data: { menuId:id, newState: $("#" + id + "1").css("display") }
        });
    });
}

var prepareBlockUi = function(linkSelector, boxSelector, boxWidth, boxLeft, boxTop ) {
    $( linkSelector).bind("click", function () {
        $.blockUI({
            message: $(boxSelector),
            css: { border: "none", cursor: "auto", background: "transparent", width: boxWidth, left: boxLeft, top: boxTop },
            overlayCSS: { opacity: 0.3, cursor: "auto" }
        });
        $('.blockOverlay').click($.unblockUI);
    });
}

var prepareFreeCallBox = function () {
    $("#dvOnline").show();
    prepareBlockUi("#aFreeCall,#aFreeCallA", "#freeCallWnd", "400px", "50%", "20%");
    $("#btnSendFreeCall").bind("click", function () { $("erCallMsg").text(""); $("#frmFreeCall").submit(); });
    var options = {
        url: "/utils/freeCallRequest",
        timeout: 60000,
        success: function (result) {
            $("#imgWaitFreeCall").hide();
            if (result.message == "") {
                $.unblockUI();
            } else {
                $("#erCallMsg").text(result.message);
            }
        },
        error: function (result) { $("#imgWaitFreeCall").hide(); $("erCallMsg").text("Ошибка выполнения запроса."); }
    };
    $("#frmFreeCall").validate({
        submitHandler: function (form) {
            $("#imgWaitFreeCall").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            tbCallName: { required: true },
            tbCallNumber: { required: true }
        },
        messages: {
            tbCallName: { required: "Заполните поле 'Имя'." },
            tbCallNumber: { required: "Заполните поле 'Номер'." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($("#" + er + "_error"));
        }
    });
}

var prepareLoginBox = function () {

    prepareBlockUi("#aLoginName", "#loginWnd", "400px", "50%", "20%");
    $("#aLoginName").bind("click", function () { $("erMsg").text(""); $("#imgWaitLogon").hide(); });
    $("#btnLogin").bind("click", function () { $("#erMsg").text(""); $("#frmLogin").submit(); });
    var options = {
        url: "/account/logOn",
        timeout: 60000,
        success: function (result) {
            $("#imgWaitLogon").hide();
            if (result.message == "") {
                $.unblockUI();
                if (location.pathname.toLowerCase().indexOf("/basket") == 0) {
                    location.reload(true);
                } else {
                    $("#aLoginName").unbind("click");
                    $("#aLoginName").text("Личный кабинет");
                    $("#aLoginName").attr("href", "/account/info");
                    $("#aLoginLink").text("Выйти");
                    $("#aLoginLink").attr("href", "/account/logOff");
                }
            } else {
                $("#erMsg").text(result.message);
            }
        },
        error: function (result) { $("#imgWaitLogon").hide(); $("erMsg").text("<span>Ошибка выполнения запроса.</span>"); }
    };
    $("#frmLogin").validate({
        submitHandler: function (form) {
            $("#imgWaitLogon").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            tbMail: { required: true },
            tbPassword: { required: true }
        },
        messages: {
            tbMail: { required: "Заполните поле 'E-mail'." },
            tbPassword: { required: "Заполните поле 'Пароль'." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($("#" + er + "_error"));
        }
    });
};


var initFloatImages = function() {
    //маленькие картинки
    $('.s-img').hover(function () {
        this.src = this.src.replace("/small/", "/middle/");
        this.style.zIndex = 1;
        this.parentNode.style.zIndex = 1;
        this.style.border = "#CFCFCF 1px solid"
        $(this).stop().animate({ width: "160px", height: "130px", left: "-50px", top: "-50px" }, 200);
    },
       function () {
           this.style.border = "";
           this.style.zIndex = 0;
		   this.parentNode.style.zIndex = 0;
           $(this).stop().animate({ width: "56px", height: "52px", left: "0px", top: "0px" }, 200);
       });
}

var checkOnlineService = function () {
    $.ajax({ type: "POST",
        traditional: true,
        url: "/utils/checkOnlineStatus",
        async: true,
        success: checkOnlineStatusCallback,
        failure: function (data) {  }
    });
}
var checkOnlineStatusCallback = function (data) {

    if (!data.icqOnLine) {
        $("#aIcq, #aIcqA").addClass('disabled');
    }
    if (!data.skypeOnLine) {
        $("#aSkype, #aSkypeA").addClass('disabled');
    }
    if (data.operatorOnLine) {
        $("#dvOnlineText").text("ОПЕРАТОРЫ НА ЛИНИИ - ЗВОНИТЕ!");
        prepareFreeCallBox();
        $("#spPhone").addClass("enabled");
    } else {
        $("#aFreeCall, #aFreeCallA").addClass('disabled');
    }
};

var toggleBigImage = function () {
    $("[id^=tid_]").removeClass("active");
    if (this.id == "ti_clip") {
        $("#bigImage").hide();
        $("#oYouTube").show();
        $("#tid_clip").addClass("active");
    } else {
        $("#bigImage").show();
        $("#oYouTube").hide();
        var id = this.id.replace("ti_", "");
        $("#bigImage")[0].src = img[id].src;
        $("#tid_" + id).addClass("active");
    }
};

var toggleBigImageInBasket = function () 
{
    var idTail = this.id.replace("ti_", "");
    var id = idTail.split("_")[0];
    $("[id^=ti_" + id + "_]").removeClass("empty_fill");
    $("#im_" + id)[0].src = bigImages[idTail].src;
    $("#ti_" + idTail).addClass("empty_fill");
};
var rotateBigImage = function () {
    var rx = /(\d+)-(\d)/ig;
    var arr = rx.exec(this.src);
    var id = arr[1];
    var num = arr[2];
    var count = $("[id^=ti_" + id + "_]").length;
    if (count == 0) return;
    var key = id + "_" + (num < (count - 1) ? (Number(num) + 1) : "0");
    this.src = bigImages[key].src;
    $("#ti_" + id + "_" + num).removeClass("empty_fill");
    $("#ti_" + key).addClass("empty_fill");
};




var setPriceFields = function () {
    var arr = [["", "1000"], ["1000", "3000"], ["3000", "6000"], ["6000", "10000"], ["10000", "20000"], ["20000", "30000"], ["30000", ""]];
    var cbPrice = $("#cb_price")[0];
    $("#tb_priceFrom").val(cbPrice.value == "" ? "" : arr[cbPrice.value - 1][0]);
    $("#tb_priceTo").val(cbPrice.value == "" ? "" : arr[cbPrice.value - 1][1]);
};

var addSetToBasket = function (event) {
    var id = this.id.replace("buySet_", "");
    addToBasket(null, id, true);
};

var addToBasket = function (event, id, isSet) {

    var callback = location.pathname.toLowerCase().indexOf("/basket") == 0 ? addToBasketInBasketCallback : addToBasketCallback;
    $("#btnToBasket").attr("href", "/basket").attr("class", "button");
    var offId = (id == null ? this.id.replace("buy_", "") : id);
    var str = "";
    if ($("#sz_" + offId).length == 1) {
        str = $("#sz_" + offId).val();
    }
    else {
        str = $("[id^=sz_]").serialize();
    }
    if ($("#sz_" + offId).length == 1) {
        str = $("#sz_" + offId).val();
    }
    var withPack = $("#cbBox1:checked").length > 0;

    if ( ($(this).attr("class").indexOf("button") >= 0) || (isSet)) {
        if (location.pathname.toLowerCase().indexOf("/item") == 0) {
            animateToBasket("bigImage");
        } else {
            animateToBasket(this.id.replace("buy_", "im_"));
        }
    } else {
        animateToBasket(this.id.replace("buy_", "im_"));
    }
    $.ajax({ type: "POST",
        traditional: true,
        url: "/basket/add",
        async: true,
        data: { id: offId, sizes: str, isSet: (isSet == null ? false : isSet), addBox: withPack },
        success: callback,
        failure: function (data) { alert("Произошла ошибка. Пожалуйста, свяжитесь с администраторами сайта."); }
    });
};

var animateToBasket = function (elId) {
    var bImg = $("#" + elId).clone();
    var toElement = $("#tst").offset().left != 0 ? $("#tst") : $("#aLoginLink");
    startLeft = $("#" + elId).offset().left - $(document).scrollLeft();
    startTop = $("#" + elId).offset().top - $(document).scrollTop();
    endLeft = toElement.offset().left - $(document).scrollLeft();
    endTop = toElement.offset().top - $(document).scrollTop();

    bImg.css("position", "fixed").css("left", startLeft).css("top", startTop);
    bImg.prependTo($("#" + elId).parent());
    bImg.animate({ opacity: 0.4, top: endTop, left: endLeft, width: 15, height: 15 }, { queue: false, duration: 800, complete: function () { bImg.remove(); } });
    $("#dvBasket").css("display", "");
    $("#aBtnRight, #aBscCount, #aCountLabel").attr("href", "/basket#bsk");
};

var addToBasketInBasketCallback = function (data) {
    location.reload();
};
var addToBasketCallback = function (data) {
    $("#aBscCount").text(data.count);
    $("#tdBasketSum").text(data.sum);
    $.cookie("jbBasket", data.items, { expires: 60 });
    if ($('#divOrderWnd').length > 0) {
        $('#hOrderHdr').text("Товар добавлен в корзину.");
        $("#aBtnRight").text("Оформить заказ");
        $.blockUI({
            message: $('#divOrderWnd'),
            css: { border: "none", cursor: "auto", background: "transparent", width: "400px" },
            overlayCSS: { opacity: 0.3, cursor: "auto" }
        });
    } 
    $('.blockOverlay').click($.unblockUI);
};

var addToReserved = function (event) {

    if ($(this).attr("class") == "button dotted") {
        if (location.pathname.toLowerCase().indexOf("/item") == 0) {
            animateToBasket("bigImage");
        } else {
            animateToBasket(this.id.replace("res_", "im_"));
        }
    } else {
        animateToBasket(this.id.replace("res_", "im_"));
    }

    $.ajax({ type: "POST",
        traditional: true,
        url: "/reserved/add",
        async: true,
        data: { id: this.id.replace("res_", ""), sizes: [] },
        success: addToReservedCallback,
        failure: function (data) { alert("Произошла ошибка. Пожалуйста, свяжитесь с администраторами сайта."); }
    });
};

var addToReservedCallback = function (data) {
    if (data.count > 0) {
        $("#trReserved").show();
    } else {
        $("#trReserved").hide();
    }
    $("#tdReservedCount").text(data.count);
    $.cookie("jbReserved", data.items, { expires: 60 });
    $('#hOrderHdr').text("Товар отложен.");
    $("#aBtnRight").text("Посмотреть отложенные");
    $("#aBtnRight").attr("href", "/markList/view");
    $.blockUI({
        message: $('#divOrderWnd'),
        css: { border: "none", cursor: "auto", background: "transparent", width: "400px" },
        overlayCSS: { opacity: 0.3, cursor: "auto" }
    });
    $('.blockOverlay').click($.unblockUI);
};

var toggleTabs = function (event, elementId) {
    var tabId = this.id.replace("tb_", "");
    $(".add-nav>li[id^=tb_]").removeClass("tab-active");
    $("#tb_" + tabId).addClass("tab-active");
    $("[id^=tbc_]").hide();
    $("#tbc_"+ tabId).show();
}

var toggleMenu = function (event, elementId) {

    if (event == 1) {
        $("#" + elementId).attr("class", "choose");
        return;
    }
    var elImage = elementId == null
                             ? this
                             : $("#img_" + elementId)[0];

    $(elImage).next().toggleClass("choose");

    if (elImage == null) return;
    var baseId = elImage.id.replace("img_", "");

    var elUl = $("#li_" + baseId);

    if ($("#" + baseId + ">li").size() == 0) {
        loadItemsForMenu(baseId);
    }


    $("#" + baseId).slideToggle("slow");

    if (elImage.className == "x") {
        $(elImage).attr("class", "y");
        elUl.attr("class", "subdivision-on");
        //  elUl.filter("a").replaceAll("span"); 
    }
    else {
        $(elImage).attr("class", "x");
        elUl.attr("class", "subdivision-off");
    }
}
var loadItemsForMenu = function (param) {
    var paramArray = param.split("_");
    var fndArr;
    switch (paramArray[0])
    {
        case "cat": { fndArr = menuData; break; }
        case "sg": { fndArr = sgMenuData; break; }
        default : { fndArr = clMenuData; break; }
    }
    if (paramArray.length == 4) return;
    var baseUrl = "/catalog" + param.replace(paramArray[0], "").replace(/_/g, "/") + "/";

    for (i = 1; i < paramArray.length; i++) {
        arr = $.grep(fndArr, function (value) { return value[0] == paramArray[i]; });
        if (arr.length == 0) return;
        fndArr = arr[0][2];
    }
    var arr = $("#" + param + ">li");
    if ((paramArray.length == 2) && (paramArray[0] == "cat")) {
        $("#" + param).append("<li>" +
                            "<a id=\"" + param + "zoloto\" href=\"" + baseUrl + "zoloto\" class=\"subdivision-off\" >Золото</a>" +
                            "</li>");
    }

    for (i = 0; i < fndArr.length; i++) {
        var id = param + "_" + fndArr[i][0];
        var name = fndArr[i][1];
        if ( (paramArray[0] == "cat") && (name.indexOf("золото") ) > 0 ) {
            name = "&nbsp;&nbsp;&nbsp;" + name;
        }
        var url = baseUrl + fndArr[i][0];
        var s;
        if ((paramArray["0"] == "cat" && paramArray.length < 3)) {
            s = "<li id=\"li_" + id + "\" class=\"subdivision-off\">" +
                "<a id=\"img_" + id + "\" class=\"x\" >&nbsp;</a>" +
                "<a href=\"" + url + "\">" + name + "</a>" +
                "<ul id=\"" + id + "\" style=\"display:none\"></ul></li>";
        } else {
            s = "<li>" +
                "<a id=\"" + id + "\" href=\"" + url + "\">" + name + "</a>" +
                "</li>";
        }
        $("#" + param).append(s);
    }
    $("#" + param + ">li>a.x").bind("click", toggleMenu);
}
var initFaceBookApi = function (app_Id) {
    jQuery('body').append('<div id="fb-root"></div>');
    window.fbAsyncInit = function () {
        FB.init({ appId: app_Id, status: true, cookie: true, xfbml: true });
    };

    (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/ru_RU/all.js';
        document.getElementById('fb-root').appendChild(e);
    } ());
}
var sendMarkList = function () {
    $.ajax({ type: "POST",
        traditional: true,
        url: "/markList/send",
        async: true,
        data: { nameFrom: tbName.value, nameTo: tbPhone.value, comment: tbComment.value },
        success: sendFreeCallRequestCallBack,
        failure: function (data) { alert("Произошла ошибка. Пожалуйста, свяжитесь с администраторами сайта."); }
    });
}
var initNews = function () {
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);
    $(document).bind('keydown', 'Ctrl+left', function (evt) { doKeyItemNavigate(evt.keyCode); });
    $(document).bind('keydown', 'Ctrl+right', function (evt) { doKeyItemNavigate(evt.keyCode); });
}

var initItem = function (artArray) {
    $(".add-nav>li").bind("click", toggleTabs);
    $("[id^=ti_]").bind("mouseover", toggleBigImage);
    $("[id^=buySet_]").bind("click", addSetToBasket);
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);

    $(document).bind('keydown', 'Ctrl+left', function (evt) { doKeyItemNavigate(evt.keyCode); });
    $(document).bind('keydown', 'Ctrl+right', function (evt) { doKeyItemNavigate(evt.keyCode); });

    initFaceBookApi('149672958384059');
    initFloatImages();
    prepareItemLinkForm();
    prepareItemCommentForm();
    prepareRecallForm();
    prepareMemForm();

    //статьи
    if (artArray) {
        for (i = 0; i < artArray.length; i++) {
            $('#hintLink_' + i).bt({ spikeGirth: 5,
                spikeLength: 5,
                closeWhenOthersOpen: true,
                trigger: 'click',
                width: 500,
                height: 300,
                fill: '#daf5f4',
                strokeWidth: 0,
                spikeLength: 40,
                spikeGirth: 10,
                padding: 20,
                cornerRadius: 15,
                cssStyles: { fontFamily: 'tahoma,verdana,arial,sans-serif',
                    fontSize: '13px'
                },
                ajaxPath: '/tips/' + artArray[i]
            });
        }
    }
    //Упакока
    $('#aBox,#aBox2').bt({
        spikeGirth: 20,
        spikeLength: 8,
        closeWhenOthersOpen: true,
        trigger: 'click',
        width: 343,
        height: 300,
        fill: '#daf5f4',
        strokeWidth: 0,
        padding: 20,
        cornerRadius: 15,
        cssStyles: { fontFamily: 'tahoma,verdana,arial,sans-serif',
            fontSize: '13px'
        },
        contentSelector: "$('#dvBox').html()"
    });
    $('#aBox1').bt({
        spikeGirth: 20,
        spikeLength: 8,
        closeWhenOthersOpen: true,
        trigger: 'click',
        width: 343,
        height: 300,
        fill: '#daf5f4',
        strokeWidth: 0,
        padding: 20,
        cornerRadius: 15,
        cssStyles: { fontFamily: 'tahoma,verdana,arial,sans-serif',
            fontSize: '13px'
        },
        contentSelector: "$('#dvBox1').html()"
    });

    VK.init({ apiId: 2305670, onlyWidgets: true });
    VK.Widgets.Like('vk_like', { type: 'button' });

};

var prepareRecallForm = function () {
    $("#recallWnd .jqSelect").selectmenu({ style: 'dropdown', width: 297 });
    $("#recallBtnSend").bind("click", function () {
        $("#frmRecall").submit();
    });
    var options = {
        url: "/utils/addRecall",
        timeout: 3000,
        success: function (result) {
            $("#imgWaitRecall").hide();
            $.unblockUI();
        }
    };
    $("#frmRecall").validate({
        submitHandler: function (form) {
            $("#imgWaitRecall").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            recallName: { required: true },
            recallMail: { required: true, email: true }
        },
        messages: {
            recallName: { required: "Введите имя" },
            recallMail: { required: "Введите e-mail", email: "Некорректный e-mail" }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
    prepareBlockUi("#aRecallBtn, #aRecall", "#recallWnd", "300px", "50%", "20%");
}
var prepareMemForm = function () {
    var tmpDate = new Date();
    tmpDate.setDate(tmpDate.getDate() + 1);
    $("#memPhone").mask("+7(999)999-99-99", { placeholder: " " });
    $("#memDate").datepicker({
        dateFormat: 'dd-mm-yy',
        minDate: tmpDate,
        onSelect: function (dateText, inst) { $("#spMemDate").text($("#memDate").val()); }
    });
    //$("#memDate").change(function () { $("#spMemDate").text($("#memDate").val() ); });
    $("#spMemDate").click(function () {
        $("#memDate").datepicker('show');
    });

    // offset = $("#spMemDate").offset();
    // $('#memDate').dpSetPosition(offset.left, offset.top);






    $("#memBtnSend").bind("click", function () {
        $("#frmMem").submit();
    });
    var options = {
        url: "/utils/addMem",
        timeout: 3000,
        success: function (result) {
            $("#imgWaitMem").hide();
            $.unblockUI();
        },
        error: function (err) {
            alert(err);
        }
    };



    $.validator.addMethod('oneVariant', function (value) {
        var result = $("#cbMemMail")[0].checked || $("#cbMemPhone")[0].checked;
        return result;
    }, '');

    $("#frmMem").validate({
        submitHandler: function (form) {
            $("#imgWaitMem").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            memCap: { required: true, remote: "/utils/checkCaptcha" },
            memMail: { required: "#cbMemMail:checked", email: "#cbMemMail:checked" },
            memPhone: { required: "#cbMemPhone:checked" },
            memDate: { required: true },
            cbMemPhone: { oneVariant: true }
        },
        messages: {
            memCap: { required: "А букавки?", remote: "Вы чоль робот?" },
            memMail: { required: "Введите e-mail.", email: "Некорректный e-mail." },
            memPhone: { required: "Введите телефон." },
            memDate: { required: "Поле 'Дата' должно быть заполнено." },
            cbMemPhone: { oneVariant: "Выбирите хотя бы один способ связи." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
    prepareBlockUi("#aMem", "#divMem", "200px", "50%", "20%");
}

var doKeyItemNavigate = function (code) {
    var url;
    if ( code == 39 ) {
    url = $("div.lright>a").attr("href");
    }
    if ( code == 37 ) {
    url = $("div.lleft>a").attr("href");
    }
    if (url) document.location = url;
}

var prepareItemCommentForm = function () {
    $(":text[id^=tb]").filter("[id$=C]").add("#tbCommentC").bind("focus", function () { $("#spMessageC").hide(); $("#aSendComment").show(); });
    $("#aSendComment").bind("click", function () { $("#frmComment").submit(); });
    var options = {
        url: "/utils/sendComment",
        timeout: 60000,
        success: function (result) {
            $("#imgWait").hide();
            $("#spMessageC").html($.format("<span>{0}</span>", result.message));
            if (result.isOk) {
                $("#aSendComment").hide();
                $("#spMessageC").attr("class", "msg_ok");
            } else {
                $("#spMessageC").attr("class", "msg_error");
            }
            $("#spMessageC").show();
        },
        error: function (result) {
            $("#imgWait").hide();
            $("#spMessageC").attr("class", "msg_error");
            $("#spMessageC").html( "<span>Ошибка выполнения запроса.</span>" );
        }
    };
    $("#frmComment").validate({
        submitHandler: function (form) {
            $("#imgWait").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            tbNameC: { required: true },
            tbMailC: { email: true },
            tbCommentC: { required: true }
        },
        messages: {
            tbNameC: { required: "Заполните поле 'Имя'." },
            tbMailC: { email: "Укажите корректный email адрес." },
            tbCommentC: { required: "Заполните поле 'Сообщение'." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($("#" + er + "W"));
        }
    });
}

var prepareItemLinkForm = function () {
    $(":text[id^=tb]").filter("[id$=L]").add("#tbCommentL").bind("focus", function () { $("#spMessageL").hide(); $("#aSendLink").show(); });
    $("#aSendLink").bind("click", function () { $("#frmLink").submit(); });
    var options = {
        url: "/utils/sendLink",
        timeout: 60000,
        success: function (result) {
            $("#imgWaitL").hide();
            $("#spMessageL").html($.format("<span>{0}</span>", result.message));
            if (result.isOk) {
                $("#aSendLink").hide();
                $("#spMessageL").attr("class", "msg_ok");
            } else {
                $("#spMessageL").attr("class", "msg_error");
            }
            $("#spMessageL").show();
        },
        error: function (result) {
            $("#imgWaitL").hide();
            $("#spMessageL").attr("class", "msg_error");
            $("#spMessageL").html("<span>Ошибка выполнения запроса.</span>");
        }
    };
    $("#frmLink").validate({
        submitHandler: function (form) {
            $("#imgWaitL").show();
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            tbNameFromL: { required: true },
            tbMailFromL: { email: true },
            tbMailToL: { email: true, required: true }
        },
        messages: {
            tbNameFromL: { required: "Заполните поле 'Имя'." },
            tbMailFromL: { email: "Укажите корректный email адрес." },
            tbMailToL: { email: "Укажите корректный email адрес.", required: "Заполните поле 'E-mail'." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($("#" + er + "W"));
        }
    });
}

var initMarkList = function () {
   // $("#lnkSend").bind("click", function () { $("#divSend").toggle() });
    $("#marklistBar .jqSelect").selectmenu({ style: 'dropdown', width: 57 });
    $("a[id^=buy_]").bind("click", addToBasket);
    prepareSendListForm();
}
var prepareSendListForm = function () {
    prepareBlockUi("#aSendList", "#sendListWnd", "300px", "50%", "20%");
    $("#aSubmitList").bind("click", function () { $("#frmSendLink").submit(); });
    var options = {
        url: "/markList/send",
        timeout: 3000,
        success: function (result) {
            $("#imgWaitSendLink").hide();
            $.unblockUI();
        }
    };
    $("#frmSendLink").validate({
        submitHandler: function (form) { $("#imgWaitSendLink").show(); $(form).ajaxSubmit(options); },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            fromName: { required: true },
            toMail: { required: true, email: true },
            fromMail: { email: true }
        },
        messages: {
            fromName: { required: "Заполните поле 'От кого - Имя'." },
            toMail: { required: "Заполните поле 'Кому - E-mail'.",
                email: "Поле 'Кому - E-mail' заполнено с ошибкой."
            },
            fromMail: { email: "Поле 'От кого - E-mail' заполнено с ошибкой." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
}

var initCatalog = function () {
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);

    $(document).bind('keydown', 'Ctrl+left', function (evt) { doKeyCatalogNavigate(evt.keyCode); });
    $(document).bind('keydown', 'Ctrl+right', function (evt) { doKeyCatalogNavigate(evt.keyCode); });
    initSubscribePlugin(false);
}
var doKeyCatalogNavigate = function (code) {
    var url;
    url = code == 39
          ? $("li.next>a").attr("href")
          : $("li.previous>a").attr("href");
    if (url) document.URL = url;
}

var initHome = function () {
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);
    $("#artMenu>li>a[id^=img_]").bind("click", toggleMenu);
    initFloatImages();
    initSubscribePlugin(true);
};

var initBasket = function () {
    $("#cbUseBonus").bind("change", setOrderBonus);
    $('#dlvForm .jqSelect').selectmenu({ style: 'dropdown', width: 177, maxHeight: 300 });
    $('#dlvForm .jqSelectHalf').selectmenu({ style: 'dropdown', width: 86, maxHeight: 300 });
    $("#basketForm .jqSelect").selectmenu({ style: 'dropdown', width: 57 });
    $("[id^=ti_]").bind("mouseover", toggleBigImageInBasket);
    $("#cr_region").autocomplete(crRegionList);
    $("#payType").bind("change", function () { if ($("#payType").val() == "6") { $(".crHide").show(); } else { $(".crHide").hide(); } });
    $("#btnSendOrder").bind("click", function () {
        var isNotSetSize = false;
        $(':selected').each(function (i, selected) {
            if ($(selected).val() == "-1") isNotSetSize = true;
        });
        if (isNotSetSize) {
            $("#sizeWarning").html("Задайте размеры изделий<br/>");
        } else {
            $("#dlvForm").submit();
        }
    });
    initFloatImages();
    $("select[id$=size]").bind("change", sendUpdateBasketRow);
    prepareOrderForm();
    $("#city").bind("change", function () {
        $("#isCityChange").val(true);
        document.getElementById("dlvForm").submit();
    });
    $("#cr_tarif,#cr_percent").bind("change", function () {
        $.ajax({ type: "POST",
            traditional: true,
            url: "/utils/calcCredit",
            async: true,
            data: { tarif: $("#cr_tarif").val(), percent: $('input[name="cr_percent"]:checked').val() },
            success: function (data) {
                $("#cr_firstPay").html("<b>" + data.firstPay + "</b>");
                $("#cr_monthPay").html("<b>" + data.monthPay + "</b>");
            },
            failure: function (data) { debugger; alert("Произошла ошибка. Пожалуйста, свяжитесь с администраторами сайта."); }
        });
    });

    $('#aLackPayTerm').bt({ spikeGirth: 5,
        spikeLength: 5,
        closeWhenOthersOpen: true,
        trigger: 'click',
        width: 500,
        height: 400,
        fill: '#daf5f4',
        strokeWidth: 0,
        spikeLength: 40,
        spikeGirth: 10,
        padding: 20,
        cornerRadius: 15,
        cssStyles: { fontFamily: 'tahoma,verdana,arial,sans-serif',
            fontSize: '13px'
        },
        ajaxPath: '/docs/lackPayTerms.html'
    });



};
var setOrderBonus = function () {
    $.ajax({ type: "POST",
        traditional: true,
        url: "/basket/setBonus",
        async: true,
        data: { bonusIsOn: $("#cbUseBonus")[0].checked },
        success: successSetBonusState,
        failure: function (data) { debugger; alert("Произошла ошибка. Пожалуйста, свяжитесь с администраторами сайта."); }
    });
};
var successSetBonusState = function (result) {

    $("#spPrice").text(result.sum + " руб");
    if (result.bonus > 0) {
        $("#spBonus").text(result.bonus + " бонусов");
    } else {
        $("#spBonus").text("");
    }
}
var prepareOrderForm = function () {
    $("#dlvForm").validate({
        submitHandler: function (form) {
            document.getElementById("dlvForm").submit();
            //$(form).submit();
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            fio: { required: true },
            address: { required: function () { return ($("#city").val() != 94); } },
            mail: { required: function () { return ($("#phone").val().length == 0); },
                email: true
            },
            phone: { required: function () { return ($("#mail").val().length == 0); } },
            cr_region: { required: function () { return $("#payType").val() == 6; } },
            cr_income: { required: function () { return $("#payType").val() == 6; } },
            cr_confirm: { required: function () { return $("#payType").val() == 6; }, minlength: 1 }
        },
        messages: {
            fio: { required: "Заполните поле 'Имя'." },
            address: { required: "Заполните поле 'Адрес'." },
            mail: { required: "Заполните поле \"Телефон\" или поле \"E-Mail\".",
                email: "Поле \"E-Mail\" заполнено с ошибкой."
            },
            phone: { required: "Заполните поле \"Телефон\" или поле \"E-Mail\"." },
            cr_region: { required: "Заполните поле \"Регион регистрации\"." },
            cr_income: { required: "Заполните поле \"Ежемесячный доход\"." },
            cr_confirm: { required: "Что бы воспользоваться кредитом Вы должны согласиться с правилами.",
                minlength: "Что бы воспользоваться кредитом Вы должны согласиться с правилами."
            }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
};
var initNovinki = function () {
    $("#newsPosBar .jqSelect").selectmenu({ style: 'dropdown', width: 57 });
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);

    var popularPageNumber = 8;
    var popularPageIsloaded = false;
    $(window).bind("scroll",
           function () {
               var botWidth = $("#newsPosBar").height() + $("#newsPosBar").offset().top - $(window).height() - $(window).scrollTop();
               if ((botWidth < 2000) && (!popularPageIsloaded)) {
                   popularPageIsloaded = true;
                   $("#divWait").show();
                   $.ajax({ type: "POST",
                       traditional: true,
                       url: window.location.pathname,
                       async: true,
                       data: { pageNumber: popularPageNumber },
                       success: function (data) {
                           $("#divWait").hide();
                           if (data.html != "") {
                               $("#newsPosBar").append(data.html);
                               $(data.ids).selectmenu({ style: 'dropdown', width: 57 });
                               $(data.ids.replace(/sz_/g, "res_")).bind("click", addToReserved);
                               $(data.ids.replace(/sz_/g, "buy_")).bind("click", addToBasket);
                               popularPageNumber++;
                               popularPageIsloaded = false;
                           } else {
                               $(window).unbind("scroll");
                           }
                       },
                       failure: function () { popularPageIsloaded = false; $("#divWait").hide(); }
                   });
               }
           });
};

var initAccountInfo = function () {

    $("#mail,#password,#password1,#firstName,#middleName,#lastName").bind("focus",
                                                                            function () {
                                                                                $("#btnSubmitInfo").show();
                                                                                $("#spInfoOk").hide();
                                                                            });
    $("#dlvForm .jqSelect").selectmenu({ style: 'dropdown', width: 249 });
    $("#btnSubmitInfo").bind("click",
                              function () {
                                  $("#infoForm").submit();
                              }
                            );
    $("#infoForm").validate({
        submitHandler: function (form) {
            document.getElementById("infoForm").submit();
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            mail: { required: true, email: true },
            password: { required: true, minlength: 5 },
            password1: { equalTo: "#password" }
        },
        messages: {
            mail: { required: "Заполните поле 'e-mail'", email: "Некорректный e-mail" },
            password: { required: "Заполните поле 'Пароль'", minlength: "Слишком короткий пароль" },
            password1: { equalTo: "Пароли не совпадают" }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
};

var initAccountRegister = function () {
    $("#btnSubmitReg").bind("click",
                              function () {
                                  $("#regForm").submit();
                              }
                            );
    $("#regForm").validate({
        submitHandler: function (form) {
            document.getElementById("regForm").submit();
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            regMail: {
                required: true,
                email: true,
                remote: {
                    url: "/account/checkUser",
                    type: "post",
                    data: {
                        login: function () { return $("#regMail").val(); }
                    }
                }
            },
            regPassword: { required: true, minlength: 5 },
            regPassword1: { equalTo: "#regPassword" },
            regCap: { required: true, remote: "/utils/checkCaptcha" }
        },
        messages: {
            regMail: { required: "Заполните поле 'e-mail'", email: "Некорректный e-mail", remote: "Этот e-mail уже используется." },
            regPassword: { required: "Заполните поле 'Пароль'", minlength: "Слишком короткий пароль" },
            regPassword1: { equalTo: "Пароли не совпадают" },
            regCap: { remote: "Цифры не совпадают", required: "Введите цифры с картинки" }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
};

var initAccountRestore = function () {
    $("#regMail").bind("focus",
                      function () {
                          $("#btnSubmitRes").show();
                          $("#spResOk").hide();
                      });
    $("#btnSubmitRes").bind("click",
                              function () {
                                  $("#regForm").submit();
                              }
                            );
    $("#regForm").validate({
        submitHandler: function (form) {
            document.getElementById("regForm").submit();
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            regMail: {
                required: true,
                email: true,
                remote: {
                    url: "/account/checkMailExist",
                    type: "post",
                    data: {
                        mail: function () { return $("#regMail").val(); }
                    }
                }
            }
        },
        messages: {
            regMail: { required: "Заполните поле 'e-mail'", email: "Некорректный e-mail", remote: "E-mail не найден." }
        },
        errorPlacement: function (error, element) {
            var er = element.attr("name");
            error.appendTo($($.format("#{0}_error", er)));
        }
    });
};
var initArticles = function () {
    $("a[id^=res_]").bind("click", addToReserved);
    $("a[id^=buy_]").bind("click", addToBasket);
    $("#artMenu>li>a[id^=img_]").bind("click", toggleMenu);
    $('#selDlv').selectmenu({ style: 'dropdown', width: "150", maxHeight: 300 });
    $('#selDlv').bind("change", function () {
        $("#spPrice").html("<b>" + $("#selDlv").val() + "</b>");
    });
};

var initOrders = function () {
  initFloatImages();
};

var sendUpdateBasketRow = function () {
    $("#sizeWarning").html("");
    $('#basketForm').ajaxSubmit(
      { url: "basket/update",
          type: "POST",
          beforeSubmit: function () {
              $("#waitUpdate").show();
          },
          success: function (data) {
              $("#spPrice").text(data.endSum + " Руб");
              $("#maxBonus").text(data.bonus);
              $("#delivery").html(data.delivery);
              $("#waitUpdate").hide();
          }
      }
    );
};

var initSubscribePlugin = function (isAllCatalog) {
    $("#hdnSubs").val(isAllCatalog);
    var options = {
        url: "/utils/sendSubscribe",
        timeout: 3000,
        success: function (result) {
            var el = $("#dvMessage")[0];
            if (result.isOk) {
                el.innerHTML = '<div class="msg_ok"><span>' + result.message + '</span></div>';
            } else {
                el.innerHTML = '<div class="msg_error"><span>' + result.message + '</span></div>';
            }
            el.style.display = '';
        }
    };
    $("#frmSub").validate({
        submitHandler: function (form) {
            $(form).ajaxSubmit(options);
        },
        focusInvalid: false,
        focusCleanup: true,
        rules: {
            tbSubscrMail: { required: true, email: true }
        },
        messages: {
            tbSubscrMail: { required: "Введите e-mail",
                email: "Некорректный e-mail"
            }
        },
        errorPlacement: function (error, element) {
            error.appendTo($("#tbSubscrMail_error"));
        }
    });
    $("#btnSubscribe").bind("click", function () {
        $("#frmSub").submit();
    });
}
var initGmaps = function (elId) {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
        zoom: 15,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: false
    };
    var map = new google.maps.Map(document.getElementById(elId), myOptions);
    var address = "Россия, Москва, Ветошный пер. ,д.9";
    if (geocoder) {
        geocoder.geocode({ 'address': address }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                    map: map,
                    title: "JewelBox.ru",
                    position: results[0].geometry.location
                });
            } else {
                alert("Geocode was not successful for the following reason: " + status);
            }
        });
    }
};
var RegisterLiveOperator = function () {
    var livOp = document.createElement('script');
    livOp.language = 'JavaScript';
    livOp.type = 'text/javascript';
    livOp.id = 'clScript';
    livOp.src = 'http://live07.liveoperator.ru:443/chat/cl.php?site=814';
    document.body.appendChild(livOp);
    clGlobal.dataResopnse = 1;
};
var clearCurrentPartner = function () {
    $.ajax({ type: "POST",
        traditional: true,
        url: "/utils/clearPartner",
        async: true,
        success: function (data) { $("#spOperator").hide(); },
        failure: function (data) { alert("Че то сломалось."); }
    });
};
var loadNavBar = function (iid) {
    $.ajax({ type: "POST",
        traditional: true,
        url: "/utils/buildNavBar",
        data: { id: iid },
        async: true,
        success: function (data) { $("#nBar").html(data); },
        failure: function (data) { alert("Че то сломалось."); }
    });
};
var initPodpiskaOff = function (id) {
    $("#btnSend").bind("click",
          function () {
              debugger;
              $("#divError").hide();
              $("#imgWait").show();

              $.ajax({ type: "POST",
                  traditional: true,
                  url: "/podpiska/doOff",
                  async: true,
                  data: { guid: id },
                  success: function (data) {
                      $("#divError").show();
                      $("#divError").text(data);
                      $("#imgWait").hide();
                  },
                  failure: function (data) {
                      $("#divError").show();
                      $("#divError").text("При удалении подписки произошла ошибка. Пожалуйста свяжитесь с администратором магазина.");
                      $("#imgWait").hide();
                  }
              });
          });
};



