var ie='\v'=='v';
$(document).ready(function(){

//изменение стиля кнопок в нажатом состоянии
    $('.button').mouseover(function(){
        $(this).mousedown(function(){
            $(this).addClass('active');
        });
        $(this).mouseup(function(){
            $(this).delay(200).removeClass('active');
        });
    });
    $('.button').mouseleave(function(){
        $(this).delay(200).removeClass('active');
    });

//открытие менюшки входа в аккаунт
    $('#e-bank_enter').on('click', function(){
        $('.wrapper_enter').toggleClass('active');
        if ($('.wrapper_enter').hasClass('active')) {
            $('.box_enter').animate({'top':'0px'}, 300);
        } else {
            $('.box_enter').animate({'top':'-40px'}, 300);
        };
        var obj = $('.wrapper_enter');
        $(document).click(function(event) {
            if ($(event.target).closest(obj).length) return;
            if ($(event.target).closest('#e-bank_enter').length) return;
            obj.children('.box_enter').animate({'top':'-40px'}, 300, function(){
                obj.removeClass('active');
            });
            event.stopPropagation();
        });
    });

    $('.box_enter a').on('click', function(){
        $(this).addClass('active').siblings('a').removeClass('active');
    });

//сдайдер на главной
    var autoslide;
    function slide(){
        $('.page.active .slider').each(function(){
            var layers=$('ul li', this).size()+2;
            if ($('ul li.active', this).index()==($('ul li', this).size()-1)){
                $('ul li.active', this).removeClass('active').addClass('prev');
                $('ul li', this).eq(0).addClass('active');
                $('.slide_navigation div.active', this).removeClass('active');
                $('.slide_navigation div', this).eq(0).addClass('active');
            } else {
                $('ul li.active', this).removeClass('active').addClass('prev').next('li').addClass('active');
                $('.slide_navigation div.active', this).removeClass('active').next('div').addClass('active');
            };
            $('ul li.active', this).css('z-index', layers-1);
            $('ul li.prev', this).css('z-index', layers);
            $('ul li.prev', this).fadeOut(600, function(){
                $(this).addClass('some');
                $(this).css('z-index', (layers-2-$(this).index()) ).show().removeClass('prev');
            });
        });
    };
    $('.slider').each(function(){
        var layers=$('ul li', this).size()+2;
        $('ul li:first', this).addClass('active');
        if ($('ul li', this).size()<=1){
            return false;
        } else {
            $(this).prepend('<div class="inline slide_navigation"></div>');
            $('ul li', this).each(function(){
                $(this).css('z-index', layers-2-$(this).index()).parents('ul').siblings('.slide_navigation').append('<div class="inline"></div>');
            });
            $('.slide_navigation', this).css('marginLeft', (-$('.slide_navigation', this).width()/2+'px')).children('div:first').addClass('active');
            $('ul li.active', this).css('z-index', layers-1);
        };
    });
    autoslide = setInterval(slide, 6000);
    $('.slide_navigation div').click(function(){
        clearInterval(autoslide);
        if ($(this).hasClass('active')){
            autoslide = setInterval(slide, 6000);
        } else {
            var obj=$(this).parents('.slider');
            var layers=$('ul li', obj).size()+2;
            $(this).addClass('active').siblings('div').removeClass('active');
            var active=$(this).index();
            $('ul li.active', $(this).parents('.slider')).removeClass('active').addClass('prev');
            $('ul li', $(this).parents('.slider')).eq(active).addClass('active');
            $('ul li.active', obj).css('z-index', layers-1);
            $('ul li.prev', obj).css('z-index', layers);
            $('ul li.prev', obj).fadeOut(600, function(){$(this).addClass('some');
                $(this).css('z-index', (layers-2-$(this).index()) ).show().removeClass('prev');
            });
            autoslide = setInterval(slide, 6000);
        };
    });

//реализация вкладок
    $('.tab_control>div').on('click', function(){
        if ($(this).hasClass('sand')){
            return false;
        } else {
            $(this).addClass('sand').siblings('div').removeClass('sand');
            $('.tab_content>.tab', $(this).parents('.wrapper_tabs')).removeClass('active').eq($(this).index()).addClass('active');
        };
    });


//закрытие всплывающих окон
    $('.close').click(function(){
        if (ie){
            $('#overlay').hide();
            $(this).parents('.pop_up, .pop_up_block').hide();
        } else {
            $('#overlay').fadeOut(300);
            $(this).parents('.pop_up, .pop_up_block').fadeOut(300);
        };
    });
    $('#overlay').click(function(){
        if (ie){
            $(this).siblings('.pop_up').hide();
            $('#overlay').hide();
        } else {
            $(this).siblings('.pop_up').fadeOut(300);
            $('#overlay').fadeOut(300);
        };
    });

//цетрирование всплывающих окон по вертикали
    $('.pop_up').each(function(){
        var hgt = ($(window).height()-$(this).outerHeight())/2;
        if (hgt<0){hgt=$(window).scrollTop(); $(this).css('position','absolute');} else {hgt=hgt|0; $(this).css('position','fixed');};
        $(this).css('top', hgt+'px');
    });
    $(window).resize(function(){
        $('.pop_up').each(function(){
            var hgt = ($(window).height()-$(this).outerHeight())/2;
            if (hgt<0){hgt=$(window).scrollTop(); $(this).css('position','absolute');} else {hgt=hgt|0; $(this).css('position','fixed');};
            $(this).css('top', hgt+'px');
        });
    });
    $('.pop_up .tab_control .with_arrow').on('click', function(){
        var hgt = ($(window).height()-$(this).parents('.pop_up').outerHeight())/2;
        if (hgt<0){hgt=$(window).scrollTop(); $(this).parents('.pop_up').css('position','absolute');} else {hgt=hgt|0; $(this).parents('.pop_up').css('position','fixed');};
        $(this).parents('.pop_up').css('top', hgt+'px');
    });
    $('.button.show').on('click', function(){
        var obj=$(this);
        setTimeout(function(){
            var hgt = ($(window).height()-obj.parents('.pop_up').outerHeight())/2;
            if (hgt<0){hgt=$(window).scrollTop(); obj.parents('.pop_up').css('position','absolute');} else {hgt=hgt|0; obj.parents('.pop_up').css('position','fixed');};
            obj.parents('.pop_up').css('top', hgt+'px');
        }, 400);
    });

//открытие всплывающих окон
    $('.open').on('click', function(){
        centerAndOpenPopUp();
    });

//открытие новостей
    $('.box_news.open').on('click', function(){
        if (ie){
            $('#pop_news').show();
        } else {
            $('#pop_news').fadeIn(300);
        };
    });

//открытие заявки на автокредит
    $('#open_auto.open').on('click', function(){
        if (ie){
            $('#pop_auto').show();
        } else {
            $('#pop_auto').fadeIn(300);
        };
    });

//открытие заявки банковскую карту
    $('#open_cards.open').on('click', function(){
        if (ie){
            $('#pop_cards').show();
        } else {
            $('#pop_cards').fadeIn(300);
        };
    });

//открытие формы обратной связи
    $('#open_feedback.open').on('click', function(){
        if (ie){
            $('#pop_feedback').show();
        } else {
            $('#pop_feedback').fadeIn(300);
        };
    });



//открытие подменю на главной
    $('#open_submenu .roll_control').on('click', function(){
        $(this).parents('#open_submenu').toggleClass('active');

        var $subMenu = $(this).parents('.column.width_1').siblings('.pop_up_block');//.find('#menu_submenu');
        if ($(this).parents('#open_submenu').hasClass('active')) {
            $('.roll_icon', $(this).parents('#open_submenu')).attr('src','/style/images/icons/icon_rollin.png');
            $('.roll_header', $(this).parents('#open_submenu')).text( $(this).parents('#open_submenu').attr('hide_text') );
            if (ie){
                $subMenu.show();
            } else {
                $subMenu.fadeIn(300);
            };
        } else {
            $('.roll_icon', $(this).parents('#open_submenu')).attr('src','/style/images/icons/icon_rollout.png');
            $('.roll_header', $(this).parents('#open_submenu')).text( $(this).parents('#open_submenu').attr('open_text') );
            if (ie){
                $subMenu.hide();
            } else {
                $subMenu.fadeOut(300);
            };
        };
    });

    $('#menu_submenu .close').click(function(){
        var type = $(this).parents('#menu_submenu').attr('rel');

        var $openSubMenu = $(this).parents('.pop_up_block').siblings('.column.width_1').find('#open_submenu');
        $openSubMenu.removeClass('active');
        $openSubMenu.find('.roll_icon').attr('src','/style/images/icons/icon_rollout.png');
        $openSubMenu.find('.roll_header').text( $openSubMenu.attr( 'open_text' ) );

    });

//выпадающее меню в хлебных крошках
    $('#menu_dropdown .column>ul>li').not(':has(ul li)').addClass('empty');

    $('#menu_dropdown .column').eq(0).find('ul>li').mouseover(function(){

        $('.sub', $('#menu_dropdown .column').eq(2)).html('').hide().prev('ul').show().prev('h2').show();
        if ($(this).hasClass('empty')) {
            $(this).addClass('active').siblings('li').removeClass('active');
            $('#menu_dropdown .column').eq(1).children('.sub').hide().prev('ul').show();
        } else {
            $(this).addClass('active').siblings('li').removeClass('active');
            var list=$(this).children('ul').html();

            $(this).parents('.column').next('.column').children('.sub').html(list).show().prev('ul').hide();
        };
    });
    if ( $('#menu_dropdown .column').eq(0).find('ul>li').children('ul').find('li.active').length ) {
        var $currentLi = $('#menu_dropdown .column').eq(0).find('ul>li').children('ul').find('li.active');

        var $parentLi = $currentLi.parents('li');

        $parentLi.addClass('active').siblings('li').removeClass('active');
        var list=$parentLi.children('ul').html();
        $parentLi.parents('.column').next('.column').children('.sub').html(list).show().prev('ul').hide();


    }
    $('#menu_dropdown .column').eq(1).find('ul>li').mouseover(function(){
        if ($(this).hasClass('empty')) {
            $(this).addClass('active').siblings('li').removeClass('active');
            $('#menu_dropdown .column').eq(2).children('.sub').hide().prev('ul').show().prev('h2').show();
        } else {
            $(this).addClass('active').siblings('li').removeClass('active');
            var list2=$(this).children('ul').html();
            $(this).parents('.column').next('.column').children('.sub').html(list2).show().prev('ul').hide().prev('h2').hide();
        };
    });
    /*
    $('#menu_dropdown').mouseleave(function(){
        $('ul li', this).removeClass('active');
        $('.sub', this).html('').hide().prev('ul').show().prev('h2').show();
        $('#menu_dropdown li').removeClass('active');
    });
    */
    $('#menu_dropdown .column').mouseleave(function(){
        $('li', this).removeClass('active');
    });
    /*
    $('#menu_dropdown .column').eq(2).find('ul:first').hover(function(){
        $('#menu_dropdown .sub').html('').hide().prev('ul').show().prev('h2').show();
        $('#menu_dropdown li').removeClass('active');
    });
    */
    $('#open_dropdown .roll_control').on('click', function(){
        if (ie){
            $('#menu_dropdown').show();
        } else {
            $('#menu_dropdown').fadeIn(300);
        };
    });

//нестандартный селект
    var i =0;
    $('select').each(function(){
        $(this).wrap('<div class="wrapper_select '+ $(this).attr('class') +'"></div>').after('<div class="arrow"></div><div class="select"></div><ul></ul>');
        $('option', this).each(function(){
            if ($(this).attr('selected')=='selected'){
                $(this).parents('select').siblings('.select').html($(this).html());
            };
            $(this).parents('select').siblings('ul').append('<li>'+$(this).html()+'</li>');
        });
        $(this).hide().parents('.wrapper_select').css('z-index', (999-i));
        i++;
    });
    $('.wrapper_select').on('click', function(){
        $(this).toggleClass('active');
        var obj = $(this);
        $(document).click(function(event) {
            if ($(event.target).closest(obj).length) return;
            if ($(event.target).closest(obj).length) return;
            obj.removeClass('active');
            event.stopPropagation();
        });
    });
    $('.wrapper_select ul li').on('click', function(){
        var index=$(this).index();

        $('.select', $(this).parents('.wrapper_select')).html($(this).html());
        $('select option', $(this).parents('.wrapper_select')).removeAttr('selected').eq(index).attr('selected','selected');
        $('select', $(this).parents('.wrapper_select')).val( $('select option', $(this).parents('.wrapper_select')).eq(index).val()).change();

    });

//нестандартный радиобаттон
    $('.wrapper_radio').each(function(){
        $(this).children('input:radio').css('display','none');
        $(this).children('input:radio').after('<div class="radio"></div>');
        if ($(this).children('input:radio').attr('checked')=='checked') {
            $(this).addClass('checked');
        };
    });
    $('.wrapper_radio').click(function(){
        $(this).siblings('.wrapper_radio').children('input:radio').removeAttr('checked');
        $(this).children('input:radio').attr('checked','checked');
        $(this).siblings('.wrapper_radio').removeClass('checked');
        $(this).addClass('checked');
    });

//нестандартный чекбокс
    $('.wrapper_checkbox').each(function(){
        $(this).children('input:checkbox').css('display','none');
        $(this).children('input:checkbox').after('<div class="checkbox"></div>');
        if ($(this).children('input:checkbox').attr('checked')=='checked') {
            $(this).addClass('checked');
        };
    });
    $('.wrapper_checkbox').click(function(){
        $(this).toggleClass('checked');
        if ($(this).hasClass('checked')){
            $(this).children('input:checkbox').attr('checked','checked').change();
        } else {
            $(this).children('input:checkbox').removeAttr('checked').change();
        };
    });

//инициализация и настройки ползунка обмена валют
    /*
    $('.scroller.exchange').each(function(){
        var val_2 = $('input:text', $(this).parents('.wrapper_scroller'));
        $(this).slider({
            range: 'min',
            min: 100,
            max: 1000000,
            step: 100,
            value: 450000,
            slide: function( event, ui ) {
                val_2.val(accounting.formatNumber(ui.value,0,' '));
            }
        });
        val_2.val(accounting.formatNumber($(this).slider('value'),0,' '));
    });
*/
//инициализация и настройки ползунка сроков кредита со шкалой
    /*
    $('.scroller.term_scale').each(function(){
        var val_2 = $('input:text', $(this).parents('.wrapper_scroller'));
        $(this).slider({
            min: 30,
            max: 1825,
            step: 1,
            value: 365,
            slide: function( event, ui ) {
                val_2.val(accounting.formatNumber(ui.value,0,' '));
            }
        });
        val_2.val(accounting.formatNumber($(this).slider('value'),0,' '));
    });
    */

//запрет ввода всех символов, кроме цифр
    jQuery.fn.ForceNumericOnly = function(){
        return this.each(function(){
            $(this).keydown(function(e){
                var key = e.charCode || e.keyCode || 0;
                // Разрешаем backspace, tab, delete, стрелки, обычные цифры и цифры на дополнительной клавиатуре
                return (
                    key == 8 ||
                        key == 9 ||
                        key == 46 ||
                        (key >= 37 && key <= 40) ||
                        (key >= 48 && key <= 57) ||
                        (key >= 96 && key <= 105));
            });
        });
    };
    $('.wrapper_scroller input:text').ForceNumericOnly();

//обратная связь с ползунком
    $('.wrapper_scroller input:text').keyup(function(){
        $('.scroller', $(this).parents('.wrapper_scroller')).slider('option', 'value', parseFloat(accounting.unformat($(this).val())));
    });

//форматирование чисел
    $('.wrapper_scroller input:text').keyup(function(){
        var number = parseFloat(accounting.unformat($(this).val()));
        $(this).val(accounting.formatNumber(number,0,' '));
    });

    $('[validate="int"]').ForceNumericOnly();

    // разбираем сраскрытм меню на сводных страницах
    
    setTimeout(function(){
        $('#menu_submenu .column').each(function(){

            if ( $(this).find('[rel^="menuheader_"]').length ){

                $(this).find('[rel^="menuheader_"]').each(function(){
                    var data = $(this).attr('rel').split('_');
                    var sectionId = data[1];

                    if ( $(this).parents('.column').find('[rel="menuitems_'+ sectionId +'"]').length ) {
                        var listHtml = '<ul>';
                        $(this).parents('.column').find('[rel="menuitems_'+ sectionId +'"]').each(function(){
                            listHtml += '<li>'+ $(this).html() +'</li>'
                        });
                        listHtml += '</ul>';

                        $(this).parents('.column').find('[rel="menuitems_'+ sectionId +'"]').remove();

                        $(this).after( listHtml );
                    }



                });
            }else{
                var listHtml = '';
                if ( $(this).find('li').length ) {
                    var listHtml = '<ul>';
                    $(this).find('li').each(function(){
                        listHtml += '<li>'+ $(this).html() +'</li>'
                    });
                    listHtml += '</ul>';

                    $(this).find('li').remove();
                    $(this).prepend( listHtml );
                }

            }

            if ( $(this).find('li').parent().hasClass('column')  ){

                var listHtml = '<ul>';
                $(this).find('li').each(function(){
                    if ( $(this).parent().hasClass('column') ){
                        listHtml += '<li>'+ $(this).html() +'</li>'
                        $(this).remove();
                    }
                });
                listHtml += '</ul>';


                $(this).prepend( listHtml );
            }
        });

        // проверяем если кактой заголовок остался последним в столбце то перекидываем его в начало соседнего
        if ( $('.page .pop_up_block').find('.column.inline h1:last-child').length ) {
            var hclone = $('.page .pop_up_block').find('.column.inline h1:last-child').clone();
            $('.page .pop_up_block').find('.column.inline h1:last-child').remove();
            $('.page .pop_up_block').find('.column.inline ~ .column.inline').eq(0).prepend( hclone );
        }
    }, 300);



    //слайдер страниц
    $('#wrapper_slide_pages').each(function(){
        $('.page', this).eq($('.functional a.active').index()).addClass('active').css({'display':'inline-block', 'position':'static'});
        $(this).height($('.page.active', this).outerHeight());
        if ($('#menu_main.functional a.active').index()==0) {
            $('#next_page').css('display', 'block');
        };
        if ($('#menu_main.functional a.active').index()==($('#menu_main.functional a').size()-1)) {
            $('#prev_page').css('display', 'block');
        };
        if (($('#menu_main.functional a.active').index()>0)&&($('.functional a.active').index()<($('#menu_main.functional a').size()-1))) {
            $('#next_page, #prev_page').css('display', 'block');
        };
        $('.slider').each(function(){
            $('.slide_navigation', this).css('marginLeft', (-$('.slide_navigation', this).width()/2+'px'));
        });
    });

    var nextSlide = function($activePage, $nextPage)
    {
        if ($nextPage.index()==($('.page').size()-1)){
            $('#next_page').fadeOut(200);
        };
        clearInterval(autoslide);
        //$('body').css('overflow', 'hidden');
        var windowWidth = $(window).width() - 1020;
        var animationDuration = 1000;
        var animation = $activePage
            .find('.box_hover, .slider')
            .each(function(i, e)
            {
                $(e).delay(i * 10);
            })
            .animate({
                'left': -windowWidth + 'px',
                'opacity': 0
            }, animationDuration);
        $.when(animation).done(function()
        {
            $activePage.hide().removeClass('active');
            $activePage.find('.inline').css({'left':null,'opacity':null});

            var animation2 = $nextPage
                .show()
                .find('.box_hover, .slider')
                .css({
                    'left': windowWidth + 'px',
                    'opacity':0
                })
                .each(function(i, e)
                {
                    $(e).delay(i * 20);
                })
                .animate({
                    'left': '0',
                    'opacity': '1'
                }, animationDuration);
            $('.slider').each(function(){
                $('.slide_navigation', this).css('marginLeft', (-$('.slide_navigation', this).width()/2+'px'));
            });
            $.when(animation2).done(function()
            {
                $nextPage.addClass('active');
                $('#prev_page').fadeIn(200);
                //$('body').css('overflow', '');
                var hgt = $('.page.active').outerHeight()+'px';
                $('#wrapper_slide_pages').animate({'height': hgt}, 500);

                autoslide = setInterval(slide, 6000);
            });
        });
    };

    var prevSlide = function($activePage, $nextPage)
    {
        if ($nextPage.index()==0){
            $('#prev_page').fadeOut(200);
        };
        clearInterval(autoslide);
        var windowWidth = $(window).width() - 1020;
        var animationDuration = 1000;
        //$('body').css('overflow', 'hidden');
        var animation = $activePage
            .find('.box_hover, .slider')
            .reverse()
            .each(function(i, e)
            {
                $(e).delay(i * 10);
            })
            .animate({
                'left': windowWidth + 'px',
                'opacity': 0
            }, animationDuration);
        $.when(animation).done(function()
        {
            $activePage.hide().removeClass('active');
            $activePage.find('.inline').css({'left':null,'opacity':null});

            var animation2 = $nextPage
                .show()
                .find('.box_hover, .slider')
                .reverse()
                .css({
                    'left': -windowWidth + 'px',
                    'opacity':0
                })
                .each(function(i, e)
                {
                    $(e).delay(i * 20);
                })
                .animate({
                    'left': '0',
                    'opacity': '1'
                }, animationDuration);
            $('.slider').each(function(){
                $('.slide_navigation', this).css('marginLeft', (-$('.slide_navigation', this).width()/2+'px'));
            });
            $.when(animation2).done(function()
            {
                $nextPage.addClass('active');
                $('#next_page').fadeIn(200);
                //$('body').css('overflow', '');
                var hgt = $('.page.active').outerHeight()+'px';
                $('#wrapper_slide_pages').animate({'height': hgt}, 500);
                autoslide = setInterval(slide, 6000);
            });
        });
    };

    $('#next_page').on('click', function(){
        if($('.page.active').is(':last')==true){
            return false;
        } else {
            var $activePage = $('.page.active');
            var $nextPage = $('.page.active').next('.page');
            nextSlide($activePage, $nextPage);
            $('#menu_main a.active').removeClass('active').next('a').addClass('active');
        };
    });

    jQuery.fn.reverse = [].reverse;
    $('#prev_page').on('click', function(){
        if($('.page.active').is(':first')==true){
            return false;
        } else {
            var $activePage = $('.page.active');
            var $nextPage = $('.page.active').prev('.page');
            prevSlide($activePage, $nextPage);
            $('#menu_main a.active').removeClass('active').prev('a').addClass('active');
        };
    });

    $('#menu_main.functional a').on('click', function(){
        if($(this).hasClass('active')){
            return false;
        } else {
            $(this).addClass('active').siblings('a').removeClass('active');
            var num=$(this).index();
            var $activePage = $('.page.active');
            var $nextPage = $('.page').eq(num);
            if($activePage.index() == $nextPage.index())
            {
                return;
            }
            else if($activePage.index() < $nextPage.index())
            {
                nextSlide($activePage, $nextPage);
            }
            else if($activePage.index() > $nextPage.index())
            {
                prevSlide($activePage, $nextPage);
            }
        };
    });

//анимация блоков с ховером
    $('.box_hover').mouseover(function(){
        $(this).stop('hover').animate({
                backgroundColor: '#cab8cf', color: '#6c3581'
            },
            {
                'duration': 300,
                'queue': 'hover'
            }).dequeue('hover');
    });
    $('.box_hover').mouseleave(function(){
        if ($(this).hasClass('ultralight')){
            $(this).stop('hover').animate(
                {
                    backgroundColor: '#faf7fb',
                    color: '#ffffff'
                },
                {
                    'duration': 300,
                    'queue': 'hover'
                }).dequeue('hover');
        };
        if ($(this).hasClass('light')){
            $(this).stop('hover').animate({
                    backgroundColor: '#b484b9',
                    color: '#ffffff'
                },
                {
                    'duration': 300,
                    'queue': 'hover'
                }).dequeue('hover');
        };
        if ($(this).hasClass('dark')){
            $(this).stop('hover').animate({
                    backgroundColor: '#9163a7',
                    color: '#ffffff'
                },
                {
                    'duration': 300,
                    'queue': 'hover'
                }).dequeue('hover');
        };
        if ($(this).hasClass('sand')){
            $(this).stop('hover').animate({
                    backgroundColor: '#e1b17b',
                    color: '#ffffff'
                },
                {
                    'duration': 300,
                    'queue': 'hover'
                }).dequeue('hover');
        };
    });


});

function centerAndOpenPopUp(){
    $('.pop_up').each(function(){
        if (ie){
            var hgt = ($(window).height()-$(this).outerHeight())/2;
            if (hgt<0){hgt=$(window).scrollTop(); $(this).css('position','absolute');} else {hgt=hgt|0; $(this).css('position','fixed');};
            $(this).css('top', hgt+'px');
            $('#overlay').show();
        } else {
            var hgt = ($(window).height()-$(this).outerHeight())/2;
            if (hgt<0){hgt=$(window).scrollTop(); $(this).css('position','absolute');} else {hgt=hgt|0; $(this).css('position','fixed');};
            $(this).css('top', hgt+'px');
            $('#overlay').fadeIn(300);
        };
    });
};

function str_replace ( search, replace, subject ) {	// Replace all occurrences of the search string with the replacement string
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni

    if(!(replace instanceof Array)){
        replace=new Array(replace);
        if(search instanceof Array){//If search	is an array and replace	is a string, then this replacement string is used for every value of search
            while(search.length>replace.length){
                replace[replace.length]=replace[0];
            }
        }
    }

    if(!(search instanceof Array))search=new Array(search);
    while(search.length>replace.length){//If replace	has fewer values than search , then an empty string is used for the rest of replacement values
        replace[replace.length]='';
    }

    if(subject instanceof Array){//If subject is an array, then the search and replace is performed with every entry of subject , and the return value is an array as well.
        for(k in subject){
            subject[k]=str_replace(search,replace,subject[k]);
        }
        return subject;
    }

    for(var k=0; k<search.length; k++){
        var i = subject.indexOf(search[k]);
        while(i>-1){
            subject = subject.replace(search[k], replace[k]);
            i = subject.indexOf(search[k],i);
        }
    }

    return subject;

}


function numberRound( value, precision ){
    precision = precision * 10;
    if ( !precision ){
        return Math.round(value);
    }else{
        return Math.round(value*precision)/precision;
    }

}
function in_array(needle, haystack, strict) {	// Checks if a value exists in an array
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    var found = false, key, strict = !!strict;

    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }

    return found;
}

function pluralForms(num, expressions) {
    var result;
    count = num % 100;
    if (count >= 5 && count <= 20) {
        result = expressions[2];
    } else {
        count = count % 10;
        if (count == 1) {
            result = expressions[0];
        } else if (count >= 2 && count <= 4) {
            result = expressions[1];
        } else {
            result = expressions[2];
        }
    }
    return result;
}
function number_format( number, decimals, dec_point, thousands_sep ) {	// Format a number with grouped thousands
    //
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +	 bugfix by: Michael White (http://crestidg.com)

    var i, j, kw, kd, km;

    // input sanitation & defaults
    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
        dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }

    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }

    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");


    return km + kw + kd;
}

function validate_date(value)
{
    var arrD = value.split(".");
    arrD[1] -= 1;
    var d = new Date(arrD[2], arrD[1], arrD[0]);
    if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) {
        return true;
    } else {
        return false;
    }
}

function ksort (inputArr, sort_flags) {

    var tmp_arr = {},
        keys = [],
        sorter, i, k, that = this,
        strictForIn = false,
        populateArr = {};

    switch (sort_flags) {
        case 'SORT_STRING':
            // compare items as strings
            sorter = function (a, b) {
                return that.strnatcmp(a, b);
            };
            break;
        case 'SORT_LOCALE_STRING':
            // compare items as strings, based on the current locale (set with  i18n_loc_set_default() as of PHP6)
            var loc = this.i18n_loc_get_default();
            sorter = this.php_js.i18nLocales[loc].sorting;
            break;
        case 'SORT_NUMERIC':
            // compare items numerically
            sorter = function (a, b) {
                return ((a + 0) - (b + 0));
            };
            break;
        // case 'SORT_REGULAR': // compare items normally (don't change types)
        default:
            sorter = function (a, b) {
                var aFloat = parseFloat(a),
                    bFloat = parseFloat(b),
                    aNumeric = aFloat + '' === a,
                    bNumeric = bFloat + '' === b;
                if (aNumeric && bNumeric) {
                    return aFloat > bFloat ? 1 : aFloat < bFloat ? -1 : 0;
                } else if (aNumeric && !bNumeric) {
                    return 1;
                } else if (!aNumeric && bNumeric) {
                    return -1;
                }
                return a > b ? 1 : a < b ? -1 : 0;
            };
            break;
    }

    // Make a list of key names
    for (k in inputArr) {
        if (inputArr.hasOwnProperty(k)) {
            keys.push(k);
        }
    }
    keys.sort(sorter);

    // BEGIN REDUNDANT
    this.php_js = this.php_js || {};
    this.php_js.ini = this.php_js.ini || {};
    // END REDUNDANT
    strictForIn = this.php_js.ini['phpjs.strictForIn'] && this.php_js.ini['phpjs.strictForIn'].local_value && this.php_js.ini['phpjs.strictForIn'].local_value !== 'off';
    populateArr = strictForIn ? inputArr : populateArr;

    // Rebuild array with sorted key names
    for (i = 0; i < keys.length; i++) {
        k = keys[i];
        tmp_arr[k] = inputArr[k];
        if (strictForIn) {
            delete inputArr[k];
        }
    }
    for (i in tmp_arr) {
        if (tmp_arr.hasOwnProperty(i)) {
            populateArr[i] = tmp_arr[i];
        }
    }

    return strictForIn || populateArr;
}