﻿// Используемые глобальные переменные
// Используемые глобальные переменные

// priceList
var lastCallFreeNumber = "";
var productLoadUrl = "/ajax/getproducts.php";
var printUrl = "/catalog/catalog.php";
var sectionId, resultId;
var pageSegment = 11;
var isPrice = null;
var terms = new Array();

var pageNumber;

var filterReloadTimeout;

var currenciesSymbols = new Object();
currenciesSymbols.rub_after = " руб";
currenciesSymbols.rub_before = "";
currenciesSymbols.usd_after = "";
currenciesSymbols.usd_before = "$";
currenciesSymbols.eur_after = "";
currenciesSymbols.eur_before = "&euro;";


// Скрипты, выполняемые при инициализации страницы
$(function(){
    $("a.prettyPhoto").prettyPhoto({
        theme:'facebook',
        show_title: false
    });
    $(".currency").click(function() {
        recalcCurrency(this);
        return false;
    });
    initMenu();
    initFilter();
    initTerms();
    initProductControlLinks(loadData);
    recalcCurrency($("#currency_" + current_currency).get(0), false);
});

// Плавная прокрутка страницы при клике по якорю
// Использование:
// .anchor { display: block; width: 100%; height: 0; line-height: 0; top: 0; left: 0; }
// <a name="top" class="anchor abs"></a>
// <a href="#top" onclick="return anchorScroller(this)">top</a>

function initTerms() {
    $('dfn').unbind('click').click(
        function() {
            var tt = $(this).attr("term");
            
            if ( (tt != true) && (tt != "true") ) {
                var term = $(this).html();
                $(this).addClass("waiting").prepend("<div class='saveloader '></div>");
                var position = $(this).position();
                $(".saveloader ").show();
                $(".saveloader ").css("left", position.left);
                
                $.get("/ajax/term.php", {term: term}, function(data) {
                    var $this = $(".waiting").eq(0).removeClass("waiting");
                    $(".saveloader ").remove();
                    var position = $this.position();
                    $this.attr("term", true).append("<dd><span></span>" + data + "</dd>");
                    $this.children("dd").show().css("left", position.left).children("span").click(function() {
                        $(this).attr("closed", "closed").parent("dd").hide();
                        return false;
                    });
                });
            } else {
                $(this).children("dd").show().children("span").removeAttr("closed");
            }
            return false;
        }
    );
}

function anchorScroller(el, duration) {
    if (this.criticalSection) { return false; }
    if ((typeof el != 'object') || (typeof el.href != 'string')) return true;
    
    var address = el.href.split('#');
    if (address.length < 2) return true;
    
    address = address[address.length-1];
    el = 0;
    
    for (var i=0; i<document.anchors.length; i++) {
        if (document.anchors[i].name == address) {
            el = document.anchors[i];
            break;
        }
    }
    if (el === 0) return true;
        
    this.stopX = 0;
    this.stopY = 0;
    do {
        this.stopX += el.offsetLeft;
        this.stopY += el.offsetTop;
    } while (el = el.offsetParent);
    
    this.startX = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;
    this.startY = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    
    this.stopX = this.stopX - this.startX;
    this.stopY = this.stopY - this.startY;
    
    if ( (this.stopX == 0) && (this.stopY == 0) ) return false;
    
    this.criticalSection = true;
    if (typeof duration == 'undefined') {
        this.duration = 500;
    } else {
        this.duration = duration;
    }
            
    var date = new Date();
    this.start = date.getTime();
    this.timer = setInterval(function () {    
        var date = new Date();
        var X = (date.getTime() - this.start) / this.duration;
        if (X > 1) X = 1;
        var Y = ((-Math.cos(X*Math.PI)/2) + 0.5);
        
        cX = Math.round(this.startX + this.stopX*Y);
        cY = Math.round(this.startY + this.stopY*Y);
        
        document.documentElement.scrollLeft = cX;
        document.documentElement.scrollTop = cY;
        document.body.scrollLeft = cX;
        document.body.scrollTop = cY;
        
        if (X == 1) {
            clearInterval(this.timer);
            this.criticalSection = false;
        }
    }, 10);
    return false;
}

// Установка в шапке данных о пользолвателе
function setTopUserData(str) {
    if (str != "") {
        $("#topUserData").show().children("a").eq(0).html(str);//"Здравствуйте, <a href='/user/'>" + str + "</a>");
    } else {
        $("#topUserData").hide();
    }
}
// Logout через Ajax
function doAjaxLogout(btn) {
    $(btn).fadeTo("fast", 0.5);
    $.ajax({
        'type'  : 'GET',
        'url'   : "/ajax/logout.php?logout=yes",
        'cache' : false,

        'success': function(data) {
            var jsonData = $.evalJSON(data);
            $('.loginLogoutLink .logoutBtn').hide();
            $('.loginLogoutLink .loginBtn').show();
            setTopUserData("");
        },

        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $(btn).fadeTo("fast", 1);
        }
    });

    return false;
}

var escCloseId = "";

// Закрыть попап по эскейпу
function doEscClose(e) {
    if (!e) e = window.event; // fix IE
    if (e.keyCode) { // IE
        if (e.keyCode == "27") formClose(escCloseId);
    } else if (e.charCode) {    // Netscape/Firefox/Opera
        if (e.keyCode == "27") formClose(escCloseId);
    } 
}

// Показать/спрятать попапную форму
function formOpen(id, link) {
    escCloseId = id;
    $("#" + id).toggle();
    document.onkeypress = doEscClose;
    if ($("#" + id).css("display") == "none") {
        formClose(id);
    } else {
        $(link).removeClass("ajax").addClass("ajaxActive");
        $('body').append('<div class="blackBg"></div>');
        $('.blackBg').fadeTo(0, 0.4);
        $('.blackBg').click(function() {
            formOpen(id);
            $('.blackBg').remove();
            $(".ajaxActive").addClass('ajax').removeClass('ajaxActive');
        });
    }

    return false;
}
// Показать/спрятать вкладку (используется для попап форм)
function showPage (id, formid) {
    $("#topLoginForm" + formid + " .page").hide();
    $("#topLoginForm" + formid + "Page" + id).show();

    return false;
}
// Закрыть форму
function formClose(id) {
    $("#" + id).hide();
    $('.blackBg').remove();
    $(".ajaxActive").addClass('ajax').removeClass('ajaxActive');

    return false;
}

// Группа функций для авторизации, регистрации и напоминания пароля
function doAuth(form) {     // AJAX-авторизация
    var formid = $(form).attr('formid');
    $('#doauthBtn' + formid).fadeTo("slow", 0.5);
    $("#topLoginForm"+formid+" .loader").show();
    $("#loginFormErrors" + formid).hide();

//    alert($("#USER_REMEMBER_frm" + formid).attr("checked"));

    $.ajax({
        'type'  : 'POST',
        'url'   : $(form).attr("action"),
        'data'  : {
            "email": $('#doauthEmail' + formid).val(),
            "pass":  $('#doauthPass' + formid).val(),
            "remember": $("#USER_REMEMBER_frm" + formid).attr("checked")
        },
        'cache' : false,

        'success': function(data) {
            $('#doauthBtn'+ formid).fadeTo("slow", 1);
            var jsonData = $.evalJSON(data);
            if (jsonData.result == "1") {
                setTopUserData(jsonData.name);
                formClose("topLoginForm" + formid);
                $('.loginLogoutLink .logoutBtn').show();
                $('.loginLogoutLink .loginBtn').hide();
            } else {
                $("#loginFormErrors" + formid).show().html(jsonData.error);
            }
            $("#topLoginForm"+formid+" .loader").hide();
        },

        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $('#doauthBtn' + formid).fadeTo("slow", 1);
            $("#topLoginForm"+formid+" .loader").hide();
            $("#loginFormErrors"+formid+"").show().html("Ошибка обращения к серверу");
        }
    });

    return false;
}
// Восстановление пароля
function doRestore(form) {
    var formid = $(form).attr('formid');
    $("#topLoginForm"+formid+" .loader").show();
    $("#loginFormErrors" + formid).hide();

    $.ajax({
        'type'  : 'POST',
        'url'   : $(form).attr("action"),
        'data'  : { "restoreEmail": $('#restoreEmail' + formid).val() },
        'cache' : false,

        'success': function(data) {
            var jsonData = $.evalJSON(data);
            if (jsonData.result == "1") {
                $('#tableRestore' + formid).hide();
                $('#divRestoreResult' + formid).html("<p>" + jsonData.message + "</p><p style='text-align:right'><a href='#' onclick='return formClose(\"topLoginForm"+formid+"\");'>Закрыть</a></p>");
                $('.ie7fckingfix2').show();
            } else {
                $("#loginFormErrors"+formid).show().html("Такой email отсутствует в базе");
            }
            $("#topLoginForm"+formid+" .loader").hide();
        },

        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error: " + XMLHttpRequest + "\n" + textStatus + "\n" + errorThrown);
            $("#topLoginForm"+formid+" .loader").hide();
            $("#loginFormErrors"+formid).show().html("Ошибка обращения к серверу");
        }
    });

    return false;
}
// Регистрация нового пользователя
function doRegister(form) {
    var formid = $(form).attr('formid');
    $("#topLoginForm"+formid+" .loader").show();
    $("#loginFormErrors" + formid).hide();

    $.ajax({
        'type'  : 'POST',
        'url'   : $(form).attr("action"),
        'data'  : {
                    "name" : $('#regName' + formid).val(),
                    "email": $('#regEmail' + formid).val(),
                    "pass" : $('#regPass' + formid).val(),
                    "sessid":$('#sessid').val()
                  },
        'cache' : false,

        'success': function(data) {
            var jsonData = $.evalJSON(data);
            if (jsonData.result == "1") {
                $('#tableRegister' + formid).hide();
                $('#divRegisterResult' + formid).html("<p>Вы зарегистрированы как " + $('#regName' + formid).val() + ", ваш логин " + $('#regEmail' + formid).val() + ". На ваш email отправленно письмо с подтверждением регистрации</p><p style='text-align:right'><a href='#' onclick='return formClose(\"topLoginForm"+formid+"\");'>Закрыть</a></p>");

                $('.loginLogoutLink .logoutBtn').show().fadeTo(0, 1);
                $('.loginLogoutLink .loginBtn').hide();
                $('.ie7fckingfix').show();
                $(".ajaxActive").addClass('ajax').removeClass('ajaxActive');
                setTopUserData($('#regName' + formid).val());
            } else {
                $("#loginFormErrors"+formid).show().html(jsonData.message);
            }
            $("#topLoginForm"+formid+" .loader").hide();
        },

        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error: " + XMLHttpRequest + "\n" + textStatus + "\n" + errorThrown);
            $("#topLoginForm"+formid+" .loader").hide();
            $("#loginFormErrors"+formid).show().html("Ошибка обращения к серверу");
        }
    });

    return false;
}

// Блок "Позвонить бесплатно"
// Синхронизация номера бесплатного звонка - сохранение его на сервере
// + валидация этого номера (вкл/выкл кнопки)
function syncCallFreeNumber(obj) {
    if ($(obj).val() == "") {
        $('.callFreeNumber').addClass('fieldError');
        $('.btnDoCallFree').fadeTo("fast", 0.5).attr("disabled", "disabled");
        return;
    }

    if (($(obj).val() != lastCallFreeNumber) && ($(obj).val() != "") && ($(obj).val() != "Введите ваш номер")) {
        lastCallFreeNumber = $(obj).val();
        $.ajax({
            'type'  : 'POST',
            'url'   : '/ajax/synccallfreenumber.php',
            'data'  : { "number" : $(obj).val() },
            'cache' : false
        });
        if ($(obj).val() != $('.callFreeNumber').val()) {
            $('.callFreeNumber').val($(obj).val());
        }
        if (!checkCallFreeNumber($(obj).val()) || ($(obj).val() == "") || ($(obj).val() == "Введите ваш номер")) {
            $('.callFreeNumber').addClass('fieldError');
            $('.btnDoCallFree').fadeTo("fast", 0.5).attr("disabled", "disabled");
        } else {
            $('.callFreeNumber').removeClass('fieldError');
            $('.btnDoCallFree').fadeTo("fast", 1).removeAttr("disabled");
        }
    }

}
// Валидация номера
function checkCallFreeNumber(number) {
    var re = new RegExp( /^(8)( |-)?(\(?[0-9]{1,5}\)?)( |-)?([0-9]( |-)?)+$/ );
    if (number.match(re)) return true;
    else return false;
}
// Выполнение бесплатного звонка + сохранение его на сервере
function doCallFree(obj) {
    if ($("#" + obj).val() == "") return false;

    $('.btnDoCallFree').fadeTo("fast", 0.5);
    $('.callFreeErrors').hide();
    $('.callFreeSuccess').hide();
    $('.callFreeError_errortext').hide();

    lastCallFreeNumber = $(obj).val();

    $.ajax({
        'type'  : 'POST',
        'url'   : '/ajax/callfreenumber.php',
        'data'  : {
            "number" : $("#" + obj).val(),
            "sessid" : $('#sessid').val()
        },
        'cache' : false,
        'success': function(data) {
            var jsonData = $.evalJSON(data);
            $('.btnDoCallFree').fadeTo("fast", 1);
            if (jsonData.result == 1) {
                $('.callFreeSuccess').show();
                $('.callFreeErrors').hide();
                /*$('.btnDoCallFree').hide();*/
                /*$('input.callFreeNumber').attr("readonly", "readonly");*/
            } else if (jsonData.result == 0) {
                //$('.callFreeError_serverError').show();
                $('.callFreeError_errortext').html(jsonData.message).show();
            } else {
                $('.callFreeError_serverError').show();
            }
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $('.callFreeError_serverError').show();
            $('.btnDoCallFree').fadeTo("fast", 0.5);
        }
    });

    return false;
}

// Создание постраничной навигации
function createNavigation(objId, pageTotal, pageCurrent, total, url) {
    var obj = $("#" + objId);
    var pageSegment = 11;

    if ($("#productsBlock").length) {
        var printPageCount1 = Math.floor((total + 2) / 14 * 0.95);
        var printPageCount2 = Math.floor((total + 15) / 14 * 1.05);
    } else if ($('.pricelist').length) {
        var printPageCount1 = Math.floor((total + 2) / 40 * 0.95);
        var printPageCount2 = Math.floor((total + 42) / 40 * 1.05);
    } else {
        var printPageCount1 = Math.floor((total + 2) / 14 * 0.95);
        var printPageCount2 = Math.floor((total + 15) / 14 * 1.05);
    }

    var pageString = " страницы";
    if ((printPageCount2 % 100 >= 10) && (printPageCount2 % 100 <= 10) || (printPageCount2 % 10 >= 5)) pageString = " страниц";
    else if (printPageCount2 % 10 == 1) pageString = " страница";
    if (printPageCount1 == 0) printPageCount1 = 1;
    if (printPageCount1 == printPageCount2) {
        $('#printCount').html(" (" + printPageCount2 + pageString + " A4)");
    } else {
        $('#printCount').html(" (примерно " + printPageCount1 + "-" + printPageCount2 + pageString + " A4)");
    }

    if (total != null) $('#printAllLink').show();

    pageTotal = parseInt(pageTotal);
    pageCurrent = parseInt(pageCurrent);
    total = parseInt(total);

    currentPage = pageCurrent;
    
    if (pageCurrent > 10)  pageSegment -= 1;
    if (pageCurrent > 100) pageSegment -= 3;

    var numbersString = "<div id='numbers'><span class='navText'>Страницы:</span>";
    
    if (pageTotal == 0) {
        $("#" + objId).html("<span class='navText'>Нет товаров</span>");
        $('#priceList').children().children("tr:first").hide();
        return;
    } else {
        $('#priceList').children().children("tr:first").show();
    }

    // Текущая страница в начале списка
    if (pageCurrent < pageSegment) {
        for (var i=0; i<pageTotal && i<pageSegment*2; i++) {
            numbersString += "<span id='navPage"+i+"' class='navPage";
            if (i == pageCurrent) { numbersString += " navPage_current"; }
            numbersString += "' page='"+i+"'><a href='"+url+i+"' page='"+i+"'>"+(i+1)+"</a></span>";
        }
        if (pageSegment*2+1 < pageTotal) {
            numbersString += "... <span id='navPage"+(pageTotal-1)+"' class='navPage' page='"+(pageTotal-1)+"'><a href='"+url+(pageTotal-1)+"' page='"+(pageTotal-1)+"'>"+pageTotal+"</a></span>";
        }

    } else if (pageCurrent > (pageTotal-pageSegment)) { //  Текущая страница в конце списка
        if (pageTotal > pageSegment*2) {
            numbersString += "<span id='navPage0' class='navPage' page='0'><a href='"+url+"0' page='0'>1</a></span> ... ";
        }
        for (var i=pageTotal-pageSegment*2+1; i<pageTotal; i++) {
            numbersString += "<span id='navPage"+i+"' class='navPage";
            if (i == pageCurrent) { numbersString += " navPage_current"; }
            numbersString += "' page='"+i+"'><a href='"+url+i+"' page='"+i+"'>"+(i+1)+"</a></span>";
        }

    } else {            //  Текущая страница по середине списка
        if (pageCurrent-pageSegment+1 > 0) {
            numbersString += "<span id='navPage0' class='navPage' page='0'><a href='"+url+"0' page='0'>1</a></span>";
        }
        if (pageCurrent-pageSegment > 1) {
            numbersString += " ... "; 
        } else if (pageCurrent-pageSegment == 1) {
            numbersString += "<span id='navPage1' class='navPage' page='1'><a href='"+url+"1' page='1'>2</a></span>";
        }
        for (var i=pageCurrent-pageSegment+1; i<pageCurrent+pageSegment; i++) {
            numbersString += "<span id='navPage"+i+"' class='navPage";
            if (i == pageCurrent) { numbersString += " navPage_current"; }
            numbersString += "' page='"+i+"'><a href='"+url+i+"' page='"+i+"'>"+(i+1)+"</a></span>";
        }
        if (pageCurrent+pageSegment+2 < pageTotal) {
            numbersString += " ... ";
        } else if (pageCurrent+pageSegment+1 < pageTotal) {
            numbersString += "<span id='navPage"+(pageTotal-2)+"' class='navPage' page='"+(pageTotal-2)+"'><a href='"+url+(pageTotal-2)+"' page='"+(pageTotal-2)+"'>"+(pageTotal-1)+"</a></span>";
        }
        if (pageCurrent+pageSegment < pageTotal) {
            numbersString += "<span id='navPage"+(pageTotal-1)+"' class='navPage' page='"+(pageTotal-1)+"'><a href='"+url+(pageTotal-1)+"' page='"+(pageTotal-1)+"'>"+pageTotal+"</a></span>";
        }
    }
    numbersString += "</div>";

    var inPage = 10;
    if (isPrice != null) inPage = 30;
    var prodFrom = (pageCurrent*inPage+1);
    if (prodFrom > total) prodFrom = total;
    var prodTo = (pageCurrent*inPage+inPage);
    if (prodTo > total) prodTo = total;

    var currentLink = "";
    if (url != "/catalog/viewed.php?page=") {
        currentLink = "<div class='currentLink'>Постоянная ссылка: <input type='text' value='"+baseurl+url+pageCurrent+"'></div>";
    }

    var controlString = "<div id='navButtons'>";
    if (pageCurrent > 0) controlString += "<a href='"+url+(pageCurrent-1)+"' class='navPage' page='"+(pageCurrent-1)+"'><img src='/images/prevpage.gif' alt='Предыдущая страница' /></a>";
    controlString += "Результаты " + prodFrom + "-" + prodTo + " из " + total;
    if (pageCurrent < pageTotal-1) controlString += "<a href='"+url+(pageCurrent+1)+"' class='navPage' page='"+(pageCurrent+1)+"'><img src='/images/nextpage.gif' alt='Следующая страница' /></a>";
    controlString += "</div>";
    controlString += "<div class='totop'><a href='#top' onclick='return anchorScroller(this);'>Наверх страницы</a></div>";
    
    $("#" + objId).html(currentLink + controlString + numbersString);
    $('.navPage').click(function() {
        // Загрузка нового контента
        $(this).fadeTo("fast", 0.5);
        $("#productsBlock").fadeTo("fast", 0.5);
        $("#priceList").fadeTo("fast", 0.5);
        loadCatalogPage($(this).attr('page'));
        return false;
    });

    $('.numeric').each(function(num) {
        $(this).html(num+prodFrom);
    });
}

// Инициализация левого меню (дерева каталогов)
function initMenu() {
    /*$(".current").parent().show().removeClass('hidden').parent().show().parent().show().parent().show();
    $("li.current").parent().show().css("display", "block");
    $(".current").parent().prev('li').addClass('opened');
    $(".current").addClass('opened').next('ul').show().css("display", "block");*/
}
// Сворацивание всех подразделов при сворачивании меню верхнего уровня
function resursiveMenuClose(jqObject) {
    jqObject.children("li").children("a.opened").click();
}

// Перевод всех цен на странице в выбранную валюту
function recalcCurrency(obj, needsave) {
    if (! $(obj).hasClass('currency_active')) {
        $('.currency_active').removeClass('currency_active');
        $(obj).addClass("currency_active");
    }

    var newcur = new String($(obj).attr("id"));
    newcur = newcur.substr(9);

    if (needsave !== false) {
        saveValue("currency", newcur.toUpperCase());
    }

    $('.currencyDisplay').html(currenciesSymbols[newcur+"_before"] + currenciesSymbols[newcur+"_after"]);

    $('.priceBlock').each(function() {
        var mycur = $(this).attr('baseCurrency').toLowerCase();
        if ($(this).attr('basePrice') != "") {
            var myprice = parseFloat($(this).attr('basePrice'));
            $(this).html( convertCurrency(myprice, mycur, newcur) );
        }
    });
}
function convertCurrency(price, oldcur, newcur) {
    var tprice = price * currencies[oldcur];
    tprice = tprice / currencies[newcur];
    var ret = currenciesSymbols[newcur+"_before"] + tprice.toFixed(2) + currenciesSymbols[newcur+"_after"];
    return ret;
}

// Сохранение значения переменной на сервере
function saveValue(name, value) {
    $.ajax({
        'type'  : 'POST',
        'url'   : '/ajax/savevalue.php',
        'data'  : {
            "name"  : name,
            "value" : value
        },
        'cache' : false
    });
}
// Сохранение значения элемента массива на сервере
function saveValueToArray(arrayname, name, value) {
    $.ajax({
        'type'  : 'POST',
        'url'   : '/ajax/savevalue.php',
        'data'  : {
            "name"  : arrayname,
            "name2" : name,
            "value" : value
        },
        'cache' : false
    });
}

// Инициализация фильтра товаров
function initFilter() {
    $("a.filter").click(function(){
        var par = $(this).parent().eq(0);
        if (par.hasClass("active")) {
            // Если ==0, то это ссылка "все", она уже активна, ничего менять не надо, просто запросить товары заново
            if (par.attr('filterValueId') != "0") {
                par.removeClass('active');
                // Проверить что убрали не последний фильтр - иначе выставить "Все"
                if ($("div.active[filterGroupId=" + par.attr('filterGroupId') + "]").length == 0) {
                    $("div[filterGroupId=" + par.attr('filterGroupId') + "][filterValueId=0]").addClass('active');
                }
            } else {
                // Кликнули на "все", когда оно выделено - никаких действий
            }
        } else {
            // Если ==0, то это ссылка "все", сбросить все остальные
            if (par.attr('filterValueId') == "0") {
                $("div[filterGroupId=" + par.attr('filterGroupId') + "]").removeClass('active');
                par.addClass('active');
            } else {
                par.addClass('active');
                $("div[filterGroupId=" + par.attr('filterGroupId') + "][filterValueId=0]").removeClass('active');
            }
        }
        clearTimeout(filterReloadTimeout);
        filterReloadTimeout = setTimeout(saveFilter, 100);
        //saveFilter();
        return false;
    });
    
    $(".sorter").click(function(){
        var par = $(this).parent().eq(0);
        if (par.hasClass("sort_up")) {
            $(".sorter").parent().removeClass('sort_up').removeClass('sort_down');
            $(this).parent().addClass('sort_down');
        } else if (par.hasClass("sort_down")) {
            $(".sorter").parent().removeClass('sort_up').removeClass('sort_down');
            $(this).parent().removeClass('sort_down');
        } else {
            $(".sorter").parent().removeClass('sort_up').removeClass('sort_down');
            $(this).parent().addClass('sort_up');
        }
        clearTimeout(filterReloadTimeout);
        filterReloadTimeout = setTimeout(saveFilter, 100);
        //saveFilter();
        return false;
    });
}

// Запоминаем значения фильтра на сервере
function saveFilter() {
//    $('#filterBlock').fadeTo("fast", 0.5);//.before("<div class='loader'></div>");
    $("#productsBlock").fadeTo("fast", 0.5).before("<div class='loader'></div>");
    $("#priceList").fadeTo("fast", 0.5).before("<div class='loader'></div>");
    $('.loader').show();

//  var str = "";
    var filterGroups = new Array();
    $("td.filterGroupTd").each(function() {
        //filterGroups[$(this).attr('filterGroup')] = new Array();
        $(this).children("div.active").each(function() {
//          alert($(this).attr("id"));
//          str += $(this).attr("id") + " | ";
            filterGroups.push($(this).attr("id"));
        });
    });
    
//  alert(filterGroups);
//  alert(str);
    
    var sortGroups = new Object();
    $(".sortGroupDiv").each(function() {
        if ($(this).hasClass('sort_up')) {
            sortGroups[$(this).attr('sortValueName')] = 'sort_up';
        } else if ($(this).hasClass('sort_down')) {
            sortGroups[$(this).attr('sortValueName')] = 'sort_down'; 
        }
    });
    
    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/savefilter.php',
        'data'   : {
            "sectionId" : sectionId,
            "filter": filterGroups,
            "sort"  : sortGroups,
            "url"   : productLoadUrl
        },
        'cache'  : false,
        'success': function(data) {
            // alert(data);
            // Фильтры сохранились - грузим первую страницу для них
            $('#filterBlock').fadeTo("fast", 1);
            $("#productsBlock").fadeTo("fast", 1);
            $("#priceList").fadeTo("fast", 1);
            $('.loader').hide().remove();
            
//          alert(data);
            var jsonData = $.evalJSON(data);
            currentPage = 0;
            viewLoadedProducts(jsonData);
            createNavigation("bottomNavigation", jsonData.result.pageTotal, jsonData.result.page, jsonData.result.total, "/catalog/"+sectionId+"/page=");
            updateFilterCounts(jsonData);

            $('body').attr('saveFilterValue', jsonData.result.sfv);
            //$('.currentLink').eq(0).html(jsonData.result.sfv);
            //$('body').append(data.result.sfv);
//            loadCatalogPage(0);
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            // Ошибка доступа к серверу
            $('#filterBlock').fadeTo("fast", 1);
            $("#productsBlock").fadeTo("fast", 1);
            $("#priceList").fadeTo("fast", 1);
            $('.loader').hide().remove();
            alert("Ошибка доступа к серверу, товары не загружены. Повторите попытку позже.");
        }
    });
}

// Загрузка товаров по фильтрам через ajax
function loadCatalogPage(page) {
    currentPage = page;
    $("#productsBlock").fadeTo("fast", 0.5).before("<div class='loader'></div>");
    $("#priceList").fadeTo("fast", 0.5).before("<div class='loader'></div>");
    $('.loader').show();

    $.ajax({
        'type'   : 'POST',
        'url'    : productLoadUrl,
        'data'   : {
            "SECTION_ID" : sectionId,
            "page": page
        },
        'cache'  : false,
        'success': function(data) {
            $("#productsBlock").fadeTo("fast", 1);
            $("#priceList").fadeTo("fast", 1);
            $('.loader').hide().remove();
            
            var jsonData = $.evalJSON(data);
            viewLoadedProducts(jsonData);
            createNavigation("bottomNavigation", jsonData.result.pageTotal, jsonData.result.page, jsonData.result.total, "/catalog/"+sectionId+"/page=");
            updateFilterCounts(jsonData);
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $("#productsBlock").fadeTo("fast", 1);
            $("#priceList").fadeTo("fast", 1);
            $('.loader').hide().remove();
            alert("Ошибка доступа к серверу, товары не загружены. Повторите попытку позже.");
        }
    });
}

// Отображение загруженных через ajax товаров
function viewLoadedProducts(data) {
    var rez = "";
    var prodUrl = "/catalog/";
    if (productLoadUrl == "/ajax/getready.php") {
        prodUrl = "/catalog/viewready/";
    }

    if ($("#productsBlock").length) {
        for (var id in data.result.products) {
            product = data.result.products[id];
            var prodText = "";
            prodText  = "<div class='product' id='product"+product.ID+"'>";
            
            prodText += "<div class='productLeft'>";
            if (product.photo != undefined) {
                if (product.bigphoto != undefined) {
                    prodText += "<div class='image'><a href='"+product.bigphoto.src+"' rel='prettyPhoto[product"+product.ID+"]' class='prettyPhoto prettyPhotoUpdate'><img src='"+product.photo.src+"' alt='' /></a></div>";
                } else {
                    prodText += "<div class='image'><img src='"+product.photo.src+"' alt='' /></div>";
                }
            } else {
                prodText += "<div class='image noimage'>&nbsp;</div>";
            }
            prodText += "<div class='c2' id='link2_"+product.ID+"' pid='"+product.ID+"'><a href=\"#\" class=\"ajax\"></a></div>\n";
            prodText += "</div>";

            prodText += "<div class='name'><a href='"+prodUrl+product.IBLOCK_SECTION_ID+'/'+product.ID+"'>"+product.NAME+"</a></div>";
            if (product.PROPERTY_UNIQ_VALUE == undefined) product.PROPERTY_UNIQ_VALUE = "";
            prodText += "<div class='uniq'>"+product.PROPERTY_UNIQ_VALUE+"</div>";

            prodText += "<div class='control'>";
        
            if ((product.price == undefined) || (product.price == false) || (product.price.PRICE == undefined) || (product.price.PRICE == false)) {
                if ((product.questionaire == undefined) || (product.questionaire == false) || (product.questionaire.src == undefined) || (product.questionaire.src == false)) {
                    prodText += "<div class='questionaire'><span class='nop' title='Добавьте в запрос - узнайте цену!'>Цена не указана</span></div>";
                } else {
                    prodText += "<div class='questionaire'><a target='_self' href='" + product.questionaire.src + "' title='Заполните и отправьте - получите рекомендации.'>Скачать опросный лист</a> <span>(" + product.questionaire.typeext + ")</span></div>";
                }
            } else {
                prodText += "<div class='price priceBlock' baseCurrency='"+product.price.CURRENCY+"' basePrice='"+product.price.PRICE+"'>" + product.price.PRICE + "</div>"
            }
            prodText += "<div class='c1' id='link1_"+product.ID+"' pid='"+product.ID+"'><a href='#' class='ajax' title='Мы напомним вам о снижении цены!'>Узнать о снижении цены</a></div>";
            prodText += "<div class='c3' id='link3_"+product.ID+"' pid='"+product.ID+"'><a href=\"#\" class=\"ajax\"></a></div>";
            prodText += "<div style='clear:right;'></div>";
            prodText += "</div>";

            prodText += "<div class='description'>"+product.PREVIEW_TEXT+"</div>";
            prodText += "<div style='clear:both;'></div></div>";

            rez += prodText;
        }
        $('#productsBlock').html(rez);
        initProductControlLinks(data);
    } else {
        $('.pricelist').remove();
        for (var id in data.result.products) {
            product = data.result.products[id];
            var prodText = "";
            prodText  = "<tr class='pricelist' id='product"+product.ID+"'><td class='numeric'></td>";
            if ((product.PROPERTY_CML2_ARTICLE_VALUE == null) || (product.PROPERTY_CML2_ARTICLE_VALUE == "null")) product.PROPERTY_CML2_ARTICLE_VALUE = "";
            prodText += "<td>"+product.PROPERTY_CML2_ARTICLE_VALUE+"</a><br />";
            prodText += "<td><a href='"+prodUrl+product.IBLOCK_SECTION_ID+'/'+product.ID+"'>"+product.NAME+"</a><br />";
            if (product.PROPERTY_UNIQ_VALUE == undefined) product.PROPERTY_UNIQ_VALUE = "";
            prodText += "<span class='uniq'>"+product.PROPERTY_UNIQ_VALUE+"</span>" + product.PREVIEW_TEXT + "</td>";

            if ((product.price == undefined) || (product.price == false) || (product.price.PRICE == undefined) || (product.price.PRICE == false)) {
                prodText += "<td><span class='nop' title='Добавьте в запрос - узнайте цену!'>не указана</span></td>";
            } else {
                prodText += "<td class='price priceBlock' basePrice='"+product.price.PRICE+"' baseCurrency='"+product.price.CURRENCY+"'>" + product.price.PRICE + "</td>";
            }
            if (product.PROPERTY_CML2_BASE_UNIT_VALUE == null) product.PROPERTY_CML2_BASE_UNIT_VALUE = "";
            prodText += "<td style='text-align:center;'>" + product.PROPERTY_CML2_BASE_UNIT_VALUE + "</td>";

            prodText += "</tr>";
            rez += prodText;
        }
        $("#priceList").append(rez);
    }
    $("a.prettyPhotoUpdate").prettyPhoto({theme:'facebook'});
    recalcCurrency($(".currency_active").get(0));
}

function updateFilterCounts(data) {
    if ((data.result.filter == null) || (data.result.filter.length == 0)) return;
    $(".filterGroupTd").each(function(num) {
        var filtergroup = $(this).attr("filtergroup");
        if ( (filtergroup == "brand") ) {
            return;
        } else if (filtergroup == "common") {
            $(this).children("div").not("[id$=_0]").addClass("inactiveFilter");
            if (data.result.filter[filtergroup] == undefined) return;
            for (var i=0; i<data.result.filter[filtergroup].length; i++) {
                var cid = data.result.filter[filtergroup][i][0];
                if (data.result.filter[filtergroup][i][1] != 0) {
                    $("#filter_common_" + cid).removeClass("inactiveFilter").children("span").html("&nbsp;(" + data.result.filter[filtergroup][i][1] + ")");
                }
            }
            $(this).children(".inactiveFilter").each(function() {
                $(this).children("span").html("&nbsp;(0)");
            });
            return;
        }
        $(this).children("div").not("[id$=_0]").addClass("inactiveFilter");
        if (data.result.filter[filtergroup] == undefined) return;
        for (var i=0; i<data.result.filter[filtergroup].length; i++) {
            $(this).children(".inactiveFilter").each(function() {
                if ( $(this).children("a").children("span").html() == data.result.filter[filtergroup][i][0] ) {
                    $(this).removeClass("inactiveFilter");
                    $(this).children("span").html("&nbsp;(" + data.result.filter[filtergroup][i][1] + ")");
                }
            });
            $(this).children(".inactiveFilter").each(function() {
                $(this).children("span").html("&nbsp;(0)");
            });
        }
    });
}

// Инициализация ссылок на действия с товаром - сравнение, запрос, снижение цены
function initProductControlLinks(data) {
    var requested = data.result.request;
    var compared  = data.result.compare;
    var notice    = data.result.notice;

    if ($("#linkDoLogin").css("display") == "none") {
        $(".c1").each(function() {   // Узнать о снижении цены
            var pid = $(this).attr("pid");
            var dialog = $("#productNoticeDialog").clone().attr("id", "productNoticeDialog" + pid).prependTo($(this));
            dialog.children("div:first").children("span").attr("id", "noticeerror" + pid);
            var mailInput = dialog.children("div:first").children("form").children("div:first").children("div:last").children("input").attr("pid", pid);
            var priceInput = dialog.children("div:first").children("form").children("div:last").children("div:last").children("input").attr("pid", pid);

            dialog.children("div").eq(1).attr("pid", pid);
            dialog.children("div").eq(3).attr("pid", pid);
            dialog.children("div").eq(4).attr("pid", pid);
            
            dialog.children("div").eq(1).children("a").attr("id", "noticeChangeLink" + pid).click(function() {   // Кнопка "Изменить настройки"
                addToNotice(this, pid);
                return false;
            });
            dialog.children("div").eq(2).children("a").attr("id", "noticeCloseLink" + pid).click(function() {   // Кнопка "Закрыть"
                formClose('productNoticeDialog' + pid);
                return false;
            });
            dialog.children("div").eq(3).children("a").attr("id", "noticeDeleteLink" + pid).click(function() {   // Кнопка "Удалить из слежения"
                mailInput.val("");
                priceInput.val("");
                addToNotice(this, pid);
                
                formClose('productNoticeDialog' + pid);
                
                $('#notice' + pid).remove();
                if ( $('tr.pricelist').length == 0 ) {
                    $('table.price').hide();
                    $('#errNoNotice').show();
                } else {
                    $('.numeric').each(function(num) { $(this).html(num+1); });
                }
                
                return false;
            });
            dialog.children("div").eq(4).children("a").attr("id", "noticeStartLink" + pid).click(function() {   // Кнопка "Следить за ценой"
                addToNotice(this, pid);
                return false;
            });

            var found = false;
            for (var i=0; i<loadData.result.notice.length; i++) {
                if (loadData.result.notice[i][0] == pid) {
                    found = i;
                    break;
                }
            }
            if (found !== false) {
                var text = "Изменить отслеживание цены";
                var more = "<br />Оповестить о цене &le; " + loadData.result.notice[found][2] + "руб";
                if ( $(this).hasClass('c1short') ) {
                    text = "Изменить";
                    more = "";
                }
                mailInput.val(loadData.result.notice[found][1]);
                priceInput.val(loadData.result.notice[found][2]);
                $("#link1_" + pid).children("small").remove();
                $("#link1_" + pid).children("a").html( text ).after("<small>"+more+"</small>");
                $("#link1_" + pid).addClass("c1_active");
                $("div.noticeBtns1[pid="+pid+"]").hide();
                $("div.noticeBtns2[pid="+pid+"]").show();
            } else {
                $("input[name=productNoticeEmail][pid="+pid+"]").val( lastEmail );
            }

            $(this).children("a").click(function() {
                formOpen("productNoticeDialog" + pid);
                return false;
            });
            
            $("input[name=productNoticeEmail][pid="+pid+"]").change(function() {
                checkNoticeFieldsFilled(pid);
            }).keyup(function() {
                checkNoticeFieldsFilled(pid);
            });
            $("input[name=productNoticePrice][pid="+pid+"]").change(function() {
                checkNoticeFieldsFilled(pid);
            }).keyup(function() {
                checkNoticeFieldsFilled(pid);
            });

            checkNoticeFieldsFilled(pid);
            
        });
    } else {
        $(".c1").hide();
    }

    $(".c2").each(function() {   // Сравнение
        var pid = $(this).attr("pid");
        var found = false;
        for (var i=0; i<compared.length; i++) {
            if (compared[i] == pid) {
                found = true;
                break;
            }
        }
        if (found) {
            $(this).children("a").attr('href', '#').removeClass('ajax').html('В сравнении').attr("href", "/catalog/compare.php").attr('title', 'Переход к списку сравнения');
            $(this).addClass("c2_active");
            $(this).append(" <span> ("+compared.length+")</span>");
        } else {
            $(this).children("a").attr('href', '#').addClass('ajax').html('Сравнить').attr('title', 'Добавить товар для сравнения').click(function() {
                return addToCompare(this, $(this).parent().attr('pid'));
            });
        }
    });

    $(".c3").each(function() {   // Запрос
        var pid = $(this).attr("pid");
        var found = false;
        for (var i=0; i<requested.length; i++) {
            if (requested[i] == pid) {
                found = true;
                break;
            }
        }
        if (found) {
            $(this).children("a").attr('href', '#').removeClass('ajax').html('В запросе').attr("href", "/catalog/request.php");
            $(this).addClass("c3_active").append(" <span> ("+requested.length+")</span>");
        } else {
            $(this).children("a").attr('href', '#').addClass('ajax').html('Добавить в запрос').attr('title', 'Быстрая комплектация оборудования').click(function() {
                return addToRequest(this, $(this).parent().attr('pid'));
            });
        }
    });

    $(".requestBlock").html("(" + requested.length + ")");
    $(".compareBlock").html("(" + compared.length + ")"); 
}

// Добавление товара к сравнению
function addToCompare(obj, id) {
    $(obj).fadeTo("fast", 0.5);
    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/addtocompare.php',
        'data'   : {
            "SECTION_ID" : sectionId,
            "ELEMENT_ID" : id
        },
        'cache'  : false,
        'success': function(data) {
            $(obj).fadeTo("fast", 1);
            if (!in_array(id, loadData.result.compare)) { loadData.result.compare.push(id); }
            $(obj).removeClass('ajax').attr("href", "/catalog/compare.php").html("В сравнении").attr('title', 'Переход к списку сравнения').unbind('click');
            $("#link2_" + id).addClass("c2_active");
            $(obj).parent().append(" <span> ("+loadData.result.compare.length+")</span>");
            $(".c2").children("span").html("(" + loadData.result.compare.length + ")");
            $(".compareBlock").html("(" + loadData.result.compare.length + ")");
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error " + XMLHttpRequest + " " + textStatus + " " + errorThrown);
            $(obj).fadeTo("fast", 1);
        }
    });
    return false;
}

function in_array(what, where) {
    for(var i=0; i<where.length; i++)
        if(what == where[i]) 
            return true;
    return false;
}

// Открыть версию страницы для печати
function doPrintPage(linkObject, page) {
    var linkHref = "?";
    if (sectionId != null) {
        linkHref += "SECTION_ID=" + sectionId + "&";
    }
    if (elementId != null) {
        linkHref += "ELEMENT_ID=" + elementId + "&";
    }
    if (resultId != null) {
        linkHref += "RESULT_ID=" + resultId + "&";
    }
    if ((searchQuery != null) && (searchQuery != "")) {
        linkHref += "q=" + searchQuery + "&";
    }
    if ((searchTags != null) && (searchTags != "")) {
        linkHref += "tags=" + searchTags + "&";
    }
    if (page !== null) {
        linkHref += "page=" + page + "&";
    }
    if (pageNumber !== null) {
        linkHref += "PAGEN_1=" + pageNumber + "&";
    }
    var sfv = $('body').attr('savefiltervalue');
    if ((sfv !== null) && (sfv != "") && (sfv != undefined) && (sfv != "undefined")) {
        linkHref += "sfv=" + sfv + "&";
    }
    linkHref += "print=yes";
    $(linkObject).attr('href', linkHref);
    formClose("printDialog");
    return true;
}
// Сохранить страницу в формате MS Word
function doPdfPage(linkObject, page) {
    if($(linkObject).attr('basehref') == null) {
        $(linkObject).attr('basehref', $(linkObject).attr('href'));
    }

    var linkHref = $(linkObject).attr('basehref') + "?";

    if (sectionId != null) {
        linkHref += "SECTION_ID=" + sectionId + "&";
    }
    if (elementId != null) {
        linkHref += "ELEMENT_ID=" + elementId + "&";
    }
    if (resultId != null) {
        linkHref += "RESULT_ID=" + resultId + "&";
    }
    if ((searchQuery != null) && (searchQuery != "")) {
        linkHref += "q=" + searchQuery + "&";
    }
    if ((searchTags != null) && (searchTags != "")) {
        linkHref += "tags=" + searchTags + "&";
    }
    if (page !== null) {
        linkHref += "page=" + page + "&";
    }
    var sfv = $('body').attr('savefiltervalue');
    if ((sfv !== null) && (sfv != "")) {
        linkHref += "sfv=" + sfv + "&";
    }
    linkHref += "pdf=yes";
    var href = "http://pdfmyurl.com/?--zoom=0.7&--filename=elleron.ru.pdf&url=" + escape(linkHref);
    //alert(href);
    $(linkObject).attr('href', href);
    formClose("pdfDialog");
    return true;
    //return false;
}
// Сохранить страницу в формате MS Word
function doWordPage(linkObject, page) {
    var linkHref = "?";
    /*
    if (sectionId != null) {
        linkHref += "SECTION_ID=" + sectionId + "&";
    }
    if (elementId != null) {
        linkHref += "ELEMENT_ID=" + elementId + "&";
    }
    */
    if (resultId != null) {
        linkHref += "RESULT_ID=" + resultId + "&";
    }
    if ((searchQuery != null) && (searchQuery != "")) {
        linkHref += "q=" + searchQuery + "&";
    }
    if ((searchTags != null) && (searchTags != "")) {
        linkHref += "tags=" + searchTags + "&";
    }
    if (page !== null) {
        linkHref += "page=" + page + "&";
    }
    
    /*
    var sfv = $('body').attr('savefiltervalue');
    if ((sfv !== null) && (sfv != "")) {
        linkHref += "sfv=" + sfv + "&";
    }
    */
    linkHref += "word=yes";
    $(linkObject).attr('href', linkHref);
    formClose("wordDialog");
    return true;
}

// Добавить товар в запрос
function addToRequest(obj, id, amount) {
    $(obj).fadeTo("fast", 0.5);
    if (amount == null) amount = 1;
    var subprods = new Object();

    if ($('.productChecked').length) {
        $('.productChecked').each(function() {
            subprods[$(this).attr('pid')] = $(this).attr('amount');
        });
    }

    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/addtorequest.php',
        'data'   : {
            "ELEMENT_ID" : id,
            "amount"     : amount,
            "subprods"   : subprods
        },
        'cache'  : false,
        'success': function(data) {
            $(obj).fadeTo("fast", 1);
            var jsonData = $.evalJSON(data);
            if (!in_array(id, loadData.result.request)) { loadData.result.request.push(id); }

            if ((obj != null) && ($(obj).hasClass('ajax'))) {
                $(obj).removeClass('ajax').attr("href", "/catalog/request.php").html("В запросе").unbind('click');
                $("#link3_" + id).addClass("c3_active");
                $(obj).parent().append(" <span> ("+ jsonData.count +")</span>");

                var copy = $("#" + $(obj).attr('copy')).children().eq(0);
                if (copy.length != 0) {
                    copy.removeClass('ajax').attr("href", "/catalog/request.php").html("В запросе").unbind('click');
                    copy.parent().append("<span>("+ jsonData.count +")</span>");
                }
            }
            //$(".links").children(".c3").children("span").html("(" + loadData.result.request.length + ")");
            $(".c3").children("span").html("(" + jsonData.count + ")");
            //$(".requestBlock").html("(" + loadData.result.request.length + ")"); 
            $(".requestBlock").html("(" + jsonData.count + ")"); 

            $(obj).removeClass('inputWait').addClass('inputCorrect');

        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error " + XMLHttpRequest + " " + textStatus + " " + errorThrown);
            $(obj).fadeTo("fast", 1);
        }
    });

    return false;
}

// Убрать товар из запроса
function deleteFromRequest(id) {
    $("#prodrow"+id + ", .prodrow"+id).children("td").css("background", "#fcc");
    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/addtorequest.php',
        'data'   : {
            "ELEMENT_ID" : id,
            "delete"     : 1
        },
        'cache'  : false,
        'success': function(data) {
            $("#prodrow"+id + ", .prodrow"+id).remove();
            $('.numbers').each(function(num) {
                $(this).html(num+1);
            });
            if ($('.numbers').length == 0) {
                $('#requestTable').hide();
                $('#noProdsError').show();
            }
            
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $("#prodrow"+id + ", .prodrow"+id).children("td").css("background", "#fff");
        }
    });
    return false;
}

// Отправка формы запроса товаров
// Предварительно забираем с стрвера сформированный текст заказанных товаров
function submitRequestForm(obj) {
    if (obj != null) { $(obj).fadeTo("fast", 0.5); }
    else { $("#requestBtn").fadeTo("fast", 0.5);}

    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/getrequeststring.php',
        'data'   : {
            'coupon' : $('[name=form_text_29]').eq(0).val()
        },
        'cache'  : false,
        'success': function(data) {
            var jsonData = $.evalJSON(data);
            
            var result = jsonData.result;
            /*if ($.browser.msie) {
                result = result.replace(/\n/g, "<br>\r\n");
            }*/
            $("textarea[name=form_textarea_28]").text(result);
            
            $("form[name=SIMPLE_FORM_2]").unbind('submit');
            $('input[name=web_form_submit]').click();

            if (obj != null) { $(obj).fadeTo("fast", 1); }
            else { $("#requestBtn").fadeTo("fast", 1);}
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            if (obj != null) { $(obj).fadeTo("fast", 1); } 
            else { $("#requestBtn").fadeTo("fast", 1);}
        }
    });

    if ( $("form[name=SIMPLE_FORM_2]").attr("allow") != "1") {
        return false;
    } else {
        $("form[name=SIMPLE_FORM_2]").unbind('submit');
        $('input[name=web_form_submit]').click();
        return true;
    }
    return false;
}

// Скачать архив выбранных файлов для товара
function downloadArchive(obj) {
    if ($(obj).attr("href") != "#") return true;

    $(obj).fadeTo("fast", 0.5);

    var filelist = "";
    $("input.fileCheckbox:checked").each(function(num) {
        if (num > 0) filelist += ",";
        filelist += $(this).val();
    });

    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/getarchive.php',
        'data'   : {
            "filelist" : filelist
        },
        'cache'  : false,
        'success': function(data) {
            $(obj).fadeTo("fast", 1);
            var jsonData = $.evalJSON(data);
            if (jsonData.result == "ok")  {
                $(obj).attr("href", jsonData.message);
                window.location = jsonData.message;
            } else {
                alert("Ошибка архивации файлов. Повторите попытку позднее либо скачивайте файлы по одному.");
            }
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            $(obj).fadeTo("fast", 1);
        }
    });

    return false;
}

function checkNoticeFieldsFilled(pid) {
    var dialog = $("#productNoticeDialog" + pid);
    var good = true;
    
    if ($("input[name=productNoticePrice][pid="+pid+"]").val() == "") {
        good = false;
        $("input[name=productNoticePrice][pid="+pid+"]").css("border-color", "#f00");
    } else {
        $("input[name=productNoticePrice][pid="+pid+"]").css("border-color", "#0c0");
    }
    if ($("input[name=productNoticeEmail][pid="+pid+"]").val() == "") {
        good = false;
        $("input[name=productNoticeEmail][pid="+pid+"]").css("border-color", "#f00");
    } else {
        $("input[name=productNoticeEmail][pid="+pid+"]").css("border-color", "#0c0");
    }
    if (!good) {
        dialog.children("div").eq(4).children("a").fadeTo("fast", 0.5);
        dialog.children("div").eq(1).children("a").fadeTo("fast", 0.5);
    } else {
        dialog.children("div").eq(4).children("a").fadeTo("fast", 1);
        dialog.children("div").eq(1).children("a").fadeTo("fast", 1);
    }
}
// Добавление товара в наблюдение за ценой
function addToNotice(obj, pid) {
    $(obj).fadeTo("fast", 0.5);

    $('#noticeerror' + pid).html("");

    var email = $("input[name=productNoticeEmail][pid="+pid+"]").val();
    var price = $("input[name=productNoticePrice][pid="+pid+"]").val();
    
    if ( ((email == "") && (price != "")) || ((email != "") && (price == ""))) {
        $('#noticeerror' + pid).html("Заполните все поля!");
        return false;
    }

    $.ajax({
        'type'   : 'POST',
        'url'    : '/ajax/addtonotice.php',
        'data'   : {
            "product" : pid,
            "email"   : email,
            "price"   : price
        },
        'cache'  : false,
        'success': function(data) {
            $(obj).fadeTo("fast", 1);
            var jsonData = $.evalJSON(data);

            if (jsonData.result == 1) { // Добавили/обновили
                formClose("productNoticeDialog" + pid);
                var found = false;
                for (var i=0; i<loadData.result.notice.length; i++) {
                    if (loadData.result.notice[i][0] == pid) {
                        found = i;
                        break;
                    }
                }
                if (found == false) {
                    loadData.result.notice.push([pid, email, price]);
                } else {
                    loadData.result.notice[found] = new Array([pid, email, price]);
                }
                
                $("div.noticeBtns1[pid="+pid+"]").hide();
                $("div.noticeBtns2[pid="+pid+"]").show();

                var parsedPrice = parseFloat( $("input[name=productNoticePrice][pid="+pid+"]").val() );                
                var text = "Изменить отслеживание цены";
                var more = "<br />Оповестить о цене &le; " + parsedPrice + "руб";
                if ( $("#link1_" + pid).hasClass('c1short') ) text = "Изменить";

                $("#link1_" + pid).children("small").remove();
                $("#link1_" + pid).children("a").html( text ).after("<small>"+more+"</small>");
                
                $("#link1_" + pid).addClass("c1_active");

                // Обновить цену в таблице, если мы на странице уведомлений

                $('#notice' + pid + 'price').attr("basePrice", parsedPrice);
                recalcCurrency($(".currency_active").get(0));
                
            } else if (jsonData.result == -1) { // Удалили
                formClose("productNoticeDialog" + pid);
                var found = false;
                for (var i=0; i<loadData.result.notice.length; i++) {
                    if (loadData.result.notice[i][0] == pid) {
                        found = i;
                        break;
                    }
                }
                if (found !== false) {
                    for (var i=found; i<loadData.result.notice.length-1; i++) {
                        loadData.result.notice[i] = loadData.result.notice[i+1];
                    }
                    loadData.result.notice.pop();
                }
                $("#link1_" + pid).children("small").remove();
                $("#link1_" + pid).children("a").html("Узнать о снижении цены").attr('title', 'Мы напомним вам о снижении цены!');
                $("#link1_" + pid).removeClass("c1_active");
                $("div.noticeBtns1[pid="+pid+"]").show();
                $("div.noticeBtns2[pid="+pid+"]").hide();
            } else { // Ошибка
                if (jsonData.message != null) $('#noticeerror' + pid).html(jsonData.message);
            }
        },
        'error' : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error: " + XMLHttpRequest + "\n" + textStatus + "\n" + errorThrown);
            $(obj).fadeTo("fast", 1);
        }
    });

    return false;
}

// Сраврение товаров на странице сравнения
// Обработка кликов на галки
function initComparePage() {
    $('input[type=checkbox]').change(function() {
        var sectionClass = $(this).attr("class");
        var checkedNumber = $("." + sectionClass + ":checked").length;
        if (checkedNumber < 2) {
            $("img[toclass="+sectionClass+"]").fadeTo("fast", 0.5);
        } else {
            $("img[toclass="+sectionClass+"]").fadeTo("fast", 1);
        }
    });
}
// Кнопка сравнения
function createCompareList(obj, sid) {
    var list = new Array();
    $('.compareSection' + sid).each(function() {
        if ($(this).attr("checked")) {
            list.push( $(this).attr("pid") );
        }
    });
    var productsString = list.join(",");
    $(obj).attr("href", $(obj).attr("basehref") + "&products=" + productsString);
    
    //alert($('.compareSection' + sid + ':checked').length + " | " + '.compareSection' + sid + ':checked');
    if ($('.compareSection' + sid + ':checked').length < 2) {
        $("img[toclass=compareSection"+sid+"]").fadeTo("fast", 0.5);
        return false;
    } else {
        $("img[toclass=compareSection"+sid+"]").fadeTo("fast", 1);
        return true;
    }
}
// Валидация емейла
function checkemail(val) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if(!reg.test(val)) {
        return false;
    }
    return true;
}
/* Валидация группы полей - активация кнопки, навешивание рамок, валидация емейла */
function validateFieldsGroup(buttonId, fieldsId, emailId) {
    var button = $(buttonId);
    button.attr("disabled", "disabled");
    
    for (var i in fieldsId) {
        if ($.browser.msie) {
            if (i != parseInt(i)) break;
        }

        $(fieldsId[i]).change(function() {
            if (!$.browser.msie){
                button.change();
            }
        }).blur(function() {
            button.change();
        }).keyup(function() {
            button.change();
        });
    }
    button.change(function() {
        var good = true;
        for (var i in fieldsId) {
            if ($.browser.msie) {
                if (i != parseInt(i)) break;
            }
            if ($(fieldsId[i]).val() != "") {
                $(fieldsId[i]).css("border-color", "#0c0");
            } else {
                $(fieldsId[i]).css("border-color", "#f00");
                good = false;
            }
        }
        if (emailId != undefined) {
            if ( !checkemail($(emailId).val()) ) {
                $(emailId).css("border-color", "#f00");
                good = false;
            }
        }
        if (good) {
            $(this).removeAttr("disabled").fadeTo(0, 1);
        } else {
            $(this).attr("disabled", "disabled").fadeTo(0, 0.5);
        }
    }).click(function() {
        $(this).change();
        var disabled = $(this).attr("disabled");
        return (disabled != "disabled");
    });

    button.change();
}

// Добавить страницу в избранное
function addbookmark(obj) {
    var bookmarkTitle = window.document.title;
    var bookmarkLink = window.document.location + "?";
    if (sectionId != null) {
        bookmarkLink += "SECTION_ID=" + sectionId + "&";
    }
    if (elementId != null) {
        bookmarkLink += "ELEMENT_ID=" + elementId + "&";
    }
    if (resultId != null) {
        bookmarkLink += "RESULT_ID=" + resultId + "&";
    }
    if ((searchQuery != null) && (searchQuery != "")) {
        bookmarkLink += "q=" + searchQuery + "&";
    }
    if ((searchTags != null) && (searchTags != "")) {
        bookmarkLink += "tags=" + searchTags + "&";
    }
    if ((currentPage !== null) && (typeof(currentPage) != "object")) {
        bookmarkLink += "page=" + currentPage + "&";
    }
    if ( (pageNumber !== null) && (pageNumber !== undefined) && (pageNumber !== "null") ) {
        bookmarkLink += "PAGEN_1=" + pageNumber + "&";
    }
    
    //alert(bookmarkLink + " " + bookmarkTitle);
    
    if (document.all  && !window.opera) {
        if (typeof window.external == "object") {
            window.external.AddFavorite (bookmarkLink, bookmarkTitle);
            return true;
        }
        else return false;
    } else {
        obj.href = bookmarkLink;
        obj.title = bookmarkTitle;
        obj.rel = "sidebar";
        return true;
    }
    
    /*if (document.all) {
        window.external.AddFavorite(bookmarkLink, bookmarkTitle);
    } else {
        alert("!document.all");
    }*/
    return false;
}
