function intval( mixed_var, base ) {
    var tmp;

    if( typeof( mixed_var ) == 'string' ){
        tmp = parseInt(mixed_var);
        if(isNaN(tmp)){
            return 0;
        } else{
            return tmp.toString(base || 10);
        }
    } else if( typeof( mixed_var ) == 'number' ){
        return Math.floor(mixed_var);
    } else{
        return 0;
    }
}

function basket_update(p, c)
{
    var bsk_count = $('#bsk_count').text();
    var bsk_price = $('#bsk_price').text();

    bsk_count = parseInt(intval(bsk_count)) + parseInt(intval(c));
    bsk_price = parseInt(intval(bsk_price.replace(' ', ''))) + parseInt(intval(p)) * parseInt(intval(c));

    $('#bsk_count').text(bsk_count);
    $('#bsk_price').text(bsk_price.toMoney(2, ',' , ' '));
}

Number.prototype.toMoney = function(decimals, decimal_sep, thousands_sep)
{
    var n = this,
    c = isNaN(decimals) ? 2 : Math.abs(decimals),
    d = decimal_sep || ',',
    t = (typeof thousands_sep === 'undefined') ? '.' : thousands_sep,

    sign = (n < 0) ? '-' : '',

    i = parseInt(n = Math.abs(n).toFixed(c)) + '',

    j = ((j = i.length) > 3) ? j % 3 : 0;

    return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');
}

function show_alert(selected_city)
{
    var alert_html = '<div class="pop_menu" id="alert">';
        alert_html += '<div class="pop_head"><span>Внимание</span><a href="javascript:void(0);" id="pop_close"></a></div><div class="pop_cont">';
        alert_html += 'Выбран город <b>' + selected_city + '</b>';
        alert_html += '</div></div>';

    $("body").append(alert_html);
    $("#alert").css("top", "48%");
    $("#alert").fadeIn(300).css("left", Math.round($(window).width()/2) - ($("#alert div.pop_cont").innerWidth()/2));
    $("div.pop_head").width($("div.pop_cont").innerWidth());

    $("#pop_close").click(function(event){
        event.preventDefault();
        $("#alert").remove();
    });
}

$(document).ready(function(){
    // ---------------------------------------------------------------------
    // Main menu popups

    if($("#menu").length > 0) {
        var $menu_a = $("#menu a.mb");
        var menu_off;
        var menu_cont;
        var menu_hover = false;

        $menu_a.click(function(e){
            $("#pm").remove();
            var rel = $(this).attr("rel");

            if(rel !== "") {
                e.preventDefault();
                menu_off = $(this).offset();
                menu_cont = $("#" + rel).html();

                var html = '<div id="pm"><div id="pm_top"></div><div id="pm_cont"><ul>';
                html += menu_cont;
                html += '</ul></div><div id="pm_bot"></div></div>';

                $("body").append(html);
                $("#pm").css("left",menu_off.left - 45).css("top",menu_off.top + 22);
                $("#pm").mouseenter(function(){
                    menu_hover = true;
                });
                $("#pm").mouseleave(function(){
                    menu_hover = false;
                });
            }
        });

        $(document).mousedown(function(){
            if(menu_hover == false) {
                $("#pm").remove();
            }
        });

    }

    // ---------------------------------------------------------------------
    // Foot search submit

    $("#foot_search_submit").click(function(e){
        $("#foot_search").submit();
    });

    // ---------------------------------------------------------------------
    // Info pop hide

    $("div.info_pop q").live("click",function(e){
        e.preventDefault();
        $("div.info_pop").remove();
    });

    // ---------------------------------------------------------------------
    // Показываем/прячем фильтр в каталоге

    function dance_with_filter() {
        $("#filter_control").change(function(){
            change_filter_state();
        });

        function change_filter_state() {
            var z = $("#filter_control:checked").length;
            if(z > 0) {
                $("#filter_bord").removeClass("nofilter");
            } else {
                $("#filter_bord").addClass("nofilter");
            }
        }
        change_filter_state();
    }
    if($("#filter_control").length > 0) {dance_with_filter()};

    // ---------------------------------------------------------------------
    // функция показа модального окна для всяких событий

    $(".show_modal").live("click",function(){
        $("#modal").remove();
        var offset = $(this).offset();
        var tit = 'Товар успешно добавлен';
        var txt = 'Перейти <a href="/basket/">в корзину</a>';

        var i = intval( $(this).attr('rel') ),
            p = intval( $(this).attr('rel2') ),
            c = intval( $(this).parent().find('input').val() );

        $.get('/ajax/', {'do' : 'basket', 'id' : i, 'count' : c }, function(data){
            if(data == undefined || data.done == 1){
                tit = 'Ошибка добавления в корзину';
                txt = ''
            }

            basket_update(p, c);
        });

        var html = '<div class="info_pop" id="modal"><div class="ip_top"></div><div class="ip_mid">';
            html += '<h1>'+tit+'</h1>';
            html += '<p>'+txt+'</p>';
            html += '</div><div class="ip_bot"></div><q></q></div>';

        $("body").append(html);
        $("#modal").css("left",offset.left - 190).css("top",offset.top - 20);
    });

    // ---------------------------------------------------------------------
    // фиксим назойливое выделение текста при кликаньи в чекбоксы

    $("label").live("mousedown",function(){
        return false
    });

    // ---------------------------------------------------------------------
    // неактивные блоки в корзине

    $("div.dop_form > div.df_top input").change(function(){
        var z = $(this).parent().children("input:checked").length;
        if(z > 0) {
            $(this).parent().parent().parent().removeClass("inactive");
        } else {
            $(this).parent().parent().parent().addClass("inactive");
        }
    });

});

// ---------------------------------------------------------------------
/* Мощная и крутая менялка города
 * by IonDen
 * 04.06.2010
 * v1.0
 */

(function($){

    var raw_html = '';
    var end_html = '';
    var second_level_raw_html = '';
    var second_level_end_html = '';
    var last_level_raw_html = '';
    var last_level_end_html = '';
    var off_lev_1 = 0;
    var off_lev_2 = 0;
    var lev_2_width = 0;
    var last_top = 0;
    var last_left = 0;
    var lev_name_1 = '';
    var lev_name_2 = '';
    var selected_city = '';
    var hover_state = false;

    // Вызов первого уровня
    $("#changer > li > a").live("click", function(event){
        event.preventDefault();
        raw_html = $(this).parent().find("ul").html();
        off_lev_1 = $(this).offset();

        set_menu();
    });

    function set_menu() {
        end_html = '<div class="pop_menu" id="level_1"><ul>';
        end_html += raw_html;
        end_html += '</ul></div>'

        $("body").append(end_html);
        $("#level_1").fadeIn(300);

        $("#level_1").css("left", off_lev_1.left - 18).css("top", off_lev_1.top - 14);
        last_top = off_lev_1.top - 14 + $("#level_1").height();

        $("#level_1 li.lb").width($("#level_1").width());

        $("#level_1").hover(
            function() {
                hover_state = true;
            },
            function() {
                hover_state = false;
            }
        );

        // Убриаем меню
        $(document.body).mousedown(function() {
            hide_menu();
        });

        // Устанавливаем выбранный город
        $("a.changer").live("click", function(event){
            event.preventDefault();
            selected_city = $(this).text();
            set_city($(this).attr('rel'));
        });

        // Вызов второго уровня
        $("a.next_level").live("click", function(event){
            event.preventDefault();
            $("#level_2").remove();
            $("#level_3").remove();
            second_level_raw_html = $(this).parent().find("ul").html();
            lev_name_1 = $(this).text();
            off_lev_2 = $(this).offset();
            lev_2_width = $(this).width();
            set_menu_2();
        });
    }

    function set_menu_2() {
        second_level_end_html = '<div class="pop_menu" id="level_2"><ul>';
        second_level_end_html += second_level_raw_html;
        second_level_end_html += '</ul></div>';

        $("body").append(second_level_end_html);
        $("#level_2").fadeIn(300);

        $("#level_2").css("left", off_lev_2.left + lev_2_width + 30).css("top", off_lev_2.top - 15);
        last_left = off_lev_2.left + lev_2_width;

        $("#level_2").hover(
            function() {
                hover_state = true;
            },
            function() {
                hover_state = false;
            }
        );

        // Вызов третьего уровня
        $("a.go_next").live("click", function(event){
            event.preventDefault();
            $("#level_3").remove();
            last_level_raw_html = $(this).parent().find("ul").html();
            lev_name_2 = $(this).text();
            set_menu_3();
        });
    }

    function set_menu_3() {
        last_level_end_html = '<div class="pop_menu" id="level_3">';
        last_level_end_html += '<div class="pop_head"><span>' + lev_name_1 + ' &rarr; ' + lev_name_2 + '</span><a href="javascript:void(0);" id="pop_close"></a></div><ul>';
        last_level_end_html += last_level_raw_html;
        last_level_end_html += '</ul></div>';

        $("body").append(last_level_end_html);
        $("#level_3").fadeIn(300);

        $("#level_3").css("top", last_top + 20).css("left", last_left - 460);

        $("#level_3").hover(
            function() {
                hover_state = true;
            },
            function() {
                hover_state = false;
            }
        );

        $("#pop_close").click(function(event){
            event.preventDefault();
            hover_state = false;
            hide_menu();
        });
    }

    function hide_menu() {
        if(hover_state === false) {
            $("#level_1").remove();
            $("#level_2").remove();
            $("#level_3").remove();
            $("#pop_photo").remove();
        }
    }

    function set_city(city) {
        $("#current_city").text(selected_city);
        $("#current_city_2").text(selected_city);
        $("#current_city_3").text(selected_city);

        $('#set_city input').val( city );
        $('#set_city').submit();

        hover_state = false;
        hide_menu();
    }


})(jQuery);
