/*  
 * Обработчики: 
 *  #hn01 - верхнее меню
 *  #hn02 - левое меню
 *  #hn03 - слайдер ( использует #fn03 )
 *  #hn04 - галерея изображений
 *  #hn05 - аддоны
 *  #hn06 - обзоры
 *  #hn07 - скрыть popup форму
 *  #hn08 - раскраска таблицы с видео    
 *  #hn09 - активация shadowbox
 *  #hn10 - всплывающая форма отправки сообщения  
 *  #hn11 - featires
 *  #hn12 - featires imeages, whats new images
 *  #hn13 - включить / выключить блок tips
 *  #hn14 - whats new 
 *  #hn14.1 - включить / выключить whats new 1 уровня
 *  #hn14.3 - включить / выключить whats new 3 уровня 
 *  #hn14.4 - раскраска блоков whats new
 *  #hn14.5 - включить / выключить whats new блок learn_more
 *  
 * Функции
 *  #fn01 - закрыть пункт левого меню
 *  #fn02 - изменение состояний стрелок слайдера
 *  #fn03 - инициализация слайдера
 *  #fn04 - инициализация js контента для ajax слоя 
 *  #fn05 - показать popup форму
 *  #fn06 - скрыть popup форму
 *  #fn07 - включить / выключить блок whats new 
 *  
 */


// скорость плавных эффектов
var effect_speed = 'normal'; 
var effect_speed_slow = 'slow';
var effect_speed_fast = 'fast';
var disable_animation = $.browser.msie && $.browser.version>=6 && $.browser.version<7; 
var ie6 = $.browser.msie && (parseInt($.browser.version) <= 6);
var block_animation = false;

$(function(){

    // #hn01 - верхнее меню
    $('.js_menu_top li:has(li)').hover(function(){
            
            // `раскрыть меню`
            // для ie6 спец обработка, с плавностью полупрозрачных элементов он не дружит
            if ( disable_animation ){
                  // обычное появление
                  $(this).addClass('on');
            } else { // 
                
                // контейнер подуровней
                var child_ul = $(this).children('ul');
                
                // ... схлопнуть по высоте
                child_ul.hide()
                
                // активировать
                $(this).addClass('on');
    
                // плавно раскрыть
                child_ul.slideDown(effect_speed)

            }

        },function(){

            // `закрыть меню`
            // спец обработка для ie6
            if ( disable_animation ){
                  $(this).removeClass('on');            
            } else {
                $(this)
                    .children('ul')
                        .stop()
                        .removeAttr('style')
                        .end()
                    .removeClass('on');
            }
        })

  
    // #hn02 - левое меню
    $('.js_menu_left')
        .hover(function(){
            
            if ( !disable_animation ){
                // `включить подсветку`
                $(this)
                    .addClass('menu_hover')
                    .find('.title')
                        .addClass('title_hover');
            }
            
        },function(){
    
            if ( !disable_animation ){
                // `выключить подсветку`
                $(this)
                    .removeClass('menu_hover')
                    .find('.title')
                        .removeClass('title_hover');
            }

        })
        .filter('.b-menu-left_no_open')
            .click(function(){
                var href = $(this).attr('js_href');
                if ( href ) window.location = href;
            })
        .end()
        .not('.b-menu-left_no_open')
            .find('.title')
                .click(function(){
                    
                    var container = $(this).parents('.js_menu_left');
                    
                    // если пункт меню открыт
                    if ( container.hasClass('b-menu-left_open') ){
                        
                        // ... закрыть его
                        if ( disable_animation ){
                            container.removeClass('b-menu-left_open');
                        } else {
                            $(this).parents(':first').close_menu_left();
                        }
                        
                    } else {
                        
                        // ... иначе раскрыть
                        
                        if ( disable_animation ){
    
                            container.addClass('b-menu-left_open');
    
                            // остальные закрыть
                            $('.js_menu_left.b-menu-left_open')
                                .not(container)
                                .removeClass('b-menu-left_open');
    
                        } else {
    
                            var child_ul = $(this).parents(':first').children('ul');
                            child_ul.hide()

                            // активировать
                            container.addClass('b-menu-left_open');
                            
                            // плавно раскрыть
                            child_ul.slideDown( effect_speed )
                            
                            // остальные закрыть
                            $('.js_menu_left.b-menu-left_open')
                                .not(container)
                                .close_menu_left()
                                
                        }
    
                    }
    
                })

    // #hn03 - слайдер
    $('.b-slider').slider_init();
    

    // добавить прелоадеры в галереи
    $('.b-picture_container').each(function(){
        $('<div class="pre-loader"><img src="/images/preloader.gif"></div>')
            .appendTo( this )
    })

    
    // #hn04 - галерея изображений
    $('.b-slider.b-gal .text:has(img[big_pic])').click(function(){
        
        // отключение обработки выделенного элемента
        if ( $(this).hasClass('text-on') ) return false;
        
        // берем адрес большого изображения
        var new_pic = $('img[big_pic]',$(this)).attr('big_pic');
        
        // контейнеры
        var container = $(this).parents('.b-gal');      // ... слайдер с миниатюрами
        var image_container = $('.b-picture_container');// ... для большого фото 
        
        // сброс подсветки с предыдущего элемента слайдера
        $('.text-box .text.text-on',container)
            .removeClass('text-on');
        
        // подсветка выбранного элемента
        $(this).addClass('text-on');
        
        // инициируем загрузку нового фото
        var preloader_image = new Image();
        $(preloader_image)
            .bind('load',function(){ // функция по завершению загрузки фото
                
                // добавить на страницу новое изображение 
                $('<div class="pic-item" style="display: none"></div>')  
                    .appendTo(image_container)
                    .html( this )
                    .fadeIn(effect_speed)
                
                // скрыть прелоадер, если он успел появиться
                $('.pre-loader:visible',image_container).hide();
                
                // обнуляем переменную
                preloader_image = null;
            
            })
            .attr('src',new_pic)
        
        // начинаем скрывать старое большое фото
        $('.pic-item',image_container)
            .fadeOut(effect_speed,function(){ // функция по завершению эффекта
                
                // удалить элемент
                $(this).remove();
                
                // если не загружено новое изображение, вывести прелоадер
                if ( !$('.pic-item',image_container).not(this).length )
                    $('.pre-loader',image_container).show();
                
            });

    })
    
    
    // #hn08 - раскраска таблицы с видео
    $('.b-data-tab .data-mid table tr:even:not(:first)').addClass('color2');

    // #hn13.1 - скрыть блок tips
    $('#js_tips_switcher')
        .click(function(){

            // блокировка анимации
            if ( block_animation ) return false;
            block_animation = true;
            
            // ссылка на переключатель
            var switcher = $(this);
            
            // текущее состояние
            var visible = !$(this).hasClass('tips-title1on');
            
            // изменение состояния
            if ( visible ) {
                
                // скрыть
                $('#js_tips')
                    .slideUp( effect_speed, function(){ 
                        block_animation = false;
                        switcher.addClass('tips-title1on')
                    } )
                
            } else {
                
                // показать
                $('#js_tips')
                    .slideDown( effect_speed, function(){ 
                        block_animation = false;
                        switcher.removeClass('tips-title1on')
                    } )
                
            }
            
        })
    
    // #hn14 - whats new
    if ( $('#js_whatsnew_block').length ){

        // #hn14.1 - включить / выключить whats new 1 уровня
        init_whats_new_block( 'ver_lavel1_left', 'ver_lavel1_title' );
    
        // #hn14.3 - включить / выключить whats new 3 уровня
        init_whats_new_block( 'ver_lavel3_list', 'ver_lavel3_item' );
        
        // #hn14.4 - раскраска блоков whats new
        $('.ver_lavel3 li', '#js_whatsnew_block')
            .each(function(){
                $('div.ver_lavel3_block:odd',this).addClass('ver_lavel3_block_color')
            })
        
        // #hn14.5 - включить / выключить whats new блок learn_more
        init_whats_new_block( 'link-more', 'ver_lavel3_block', 1 )

    }

    
})

// #fn01 - закрыть пункт левого меню
$.fn.close_menu_left = function(){

    this
        .find('ul')
        .slideUp(effect_speed,function(){ 
            $(this)
                .hide()
                .parents('.js_menu_left')
                .removeClass('b-menu-left_open') 
        })

    return this;

} // fn close_menu_left


// #fn02 - изменение состояний стрелок слайдера
$.fn.slider_check_arrows = function(position,element_cnt,on_screen){

    if ( disable_animation ) return this; 
    
    return this.each(function(){
        
        var container = $(this);
        
        // проверка стрелки вправо
        $('.right-btn', container)
            .each(function(){
                if ( position >= element_cnt - on_screen )
                    $(this)
                        .addClass('right-btn__disabled')
                        .removeClass('right-btn__on');
                else
                    $(this).removeClass('right-btn__disabled') 
            })
        
        // проверка стрелки влево
        $('.left-btn', container)
            .each(function(){
                if ( position <= 0 )
                    $(this)
                        .addClass('left-btn__disabled')
                        .removeClass('left-btn__on');
                else
                    $(this).removeClass('left-btn__disabled')
            })

    })

} // fn slider_check_arrows


// #fn03 - инициализация слайдера
$.fn.slider_init = function(){

    return this.each(function(){
    
        var element_label = '.text';

        var container = $(this); 
        var slider = $('.text-box', container);
        var screen = $('.slider', container);
        var elements = $(element_label,slider);
        var element_cnt = elements.size(); 
        
        if ( elements ){

            var local_effect_speed = container.hasClass('js_slow') ? effect_speed_slow : effect_speed;
    
            var element = elements.filter(':first');
            var element_width = 
                    element.width() + 
                    parseInt(element.css('padding-left')) + 
                    parseInt(element.css('margin-left'))*2 + 
                    parseInt(element.css('padding-right'))+
                    parseInt(element.css('margin-right'))*2;
            var screen_width = parseInt( screen.width() );
            var on_screen = Math.round(screen_width/element_width);
            
            var position = 0;
            container.slider_check_arrows(position,element_cnt,on_screen);

            if ( element_cnt > on_screen ) {
            
                if ( slider.width() < (element_width+1)*element_cnt ) slider.width( (element_width+1)*element_cnt );
                
                var is_sliding = false;
                
                // стрелка вправо
                $('.right-btn', container)
                    .hover(function(){
                        if ( !disable_animation && !$(this).hasClass('right-btn__disabled') )
                            $(this).addClass('right-btn__on');
                    },function(){
                        if ( !disable_animation )
                            $(this).removeClass('right-btn__on');
                    })
                    .click(function(){
                        if ( is_sliding ) return false;
                        is_sliding = true;
                        var new_position = position + on_screen;
                        if ( new_position > element_cnt - on_screen ) new_position = element_cnt - on_screen;
                        
                        slider.animate(
                            {marginLeft: -(new_position*element_width)+'px'},
                            local_effect_speed,
                            function(){ 
                                position = new_position; 
                                container.slider_check_arrows(position,element_cnt,on_screen);
                                is_sliding = false; 
                            })
                    })
                
                // стрелка влево
                $('.left-btn', container)
                    .hover(function(){
                        if ( !disable_animation && !$(this).hasClass('left-btn__disabled') )
                            $(this).addClass('left-btn__on');
                    },function(){
                        if ( !disable_animation )
                            $(this).removeClass('left-btn__on');
                    })
                    .click(function(){
                        if ( is_sliding && !$(this).hasClass('left-btn__disabled') ) return false;
                        is_sliding = true;
                        var new_position = position - on_screen;
                        if ( new_position < 0 ) new_position = 0;
                        
                        slider.animate(
                            {marginLeft: -(new_position*element_width)+'px'},
                            local_effect_speed,
                            function(){ 
                                position = new_position; 
                                container.slider_check_arrows(position,element_cnt,on_screen);
                                is_sliding = false; 
                            })
                    })
            }
            
        } else {
            container.hide();
        }
             

    })

} // fn slider_init


// #fn04 - инициализация js контента для ajax слоя
function js_init_page_events(){

    // #hn05 - аддоны
    $('.js_addon:has(.js_more):has(.js_more_container)').each(function(){
        
        var container = this;
        
        $('.js_more', container).click(function(){
            
            var more_btn = this;
            
            // блокировка анимации, если уже идет
            if ( $(container).hasClass('js_amimation') ) return;
            
            if ( $(this).hasClass('more_on') ){ // закрыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')

                $('.js_more_container',container)
                    .slideUp(effect_speed,function(){ 
                        $(more_btn).removeClass('more_on');
                        $(container).removeClass('js_amimation'); 
                    })
                
            } else { // открыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')
                
                $(this).addClass('more_on');
                $('.js_more_container',container)
                    .slideDown(effect_speed,function(){ 
                        $(container).removeClass('js_amimation') 
                    })
                
            }
            
        })
        
    })
    

    // #hn06 - обзоры
    $('.js_rewiew:has(.js_read_more):has(.js_read_more_container)').each(function(){
        
        var container = this;
        
        $('.js_read_more', container).click(function(){
            
            var more_btn = this;
            
            // блокировка анимации, если уже идет
            if ( $(container).hasClass('js_amimation') ) return;
            
            if ( $(this).hasClass('rewiew_arrow_on') ){ // закрыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')

                $('.js_read_more_container',container)
                    .slideUp(effect_speed,function(){ 
                        $(more_btn).removeClass('rewiew_arrow_on');
                        $(container).removeClass('js_amimation'); 
                    })
                
            } else { // открыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')
                
                $('.js_read_more_container',container)
                    .slideDown(effect_speed,function(){ 
                        $(more_btn).addClass('rewiew_arrow_on');
                        $(container).removeClass('js_amimation') 
                    })
                
            }
            
        })
        
    })
    
    // #hn06 - обзоры
    $('.js_rewiew:has(.js_read_more):has(.js_read_more_container)').each(function(){
        
        var container = this;
        
        $('.js_read_more', container).click(function(){
            
            var more_btn = this;
            
            // блокировка анимации, если уже идет
            if ( $(container).hasClass('js_amimation') ) return;
            
            if ( $(this).hasClass('rewiew_arrow_on') ){ // закрыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')

                $('.js_read_more_container',container)
                    .slideUp(effect_speed,function(){ 
                        $(more_btn).removeClass('rewiew_arrow_on');
                        $(container).removeClass('js_amimation'); 
                    })
                
            } else { // открыть
                
                // блокировка анимации
                $(container).addClass('js_amimation')
                
                $('.js_read_more_container',container)
                    .slideDown(effect_speed,function(){ 
                        $(more_btn).addClass('rewiew_arrow_on');
                        $(container).removeClass('js_amimation') 
                    })
                
            }
            
        })
        
    })
    
    // #hn07 - скрыть popup форму
    $('.js-alert .js_close_popup').unbind('click').click(function(){
        hide_popup()
        return false;
    });
    
    // #hn11 - featires
    $('.js_featires:has(.js_more)').each(function(){
        
        var container = this;
        
        $('.js_more', container).click(function(){
            
            var more_btn = this;
            
            // блокировка анимации, если уже идет
            if ( $(container).hasClass('js_amimation') ) return;
            
            if ( $(container).hasClass('b-rama-feaut-open') ){ // закрыть
                
                // блокировка анимации
                $(container)
                    .addClass('js_amimation')
                    .next('.js_more_container')
                        .slideUp(effect_speed,function(){ 
                            $(container)
                                .removeClass('b-rama-feaut-open')
                                .removeClass('js_amimation'); 
                        })
                
            } else { // открыть
                
                // блокировка анимации
                $(container)
                    .addClass('js_amimation')
                    .addClass('b-rama-feaut-open')
                    .next('.js_more_container')
                        .slideDown(effect_speed,function(){ 
                            $(container).removeClass('js_amimation') 
                        })
                
            }
            
        })
        
    })
    
    // #hn10 - всплывающая форма отправки сообщения 
    $('#show_mail_form_btn, a.show_mail_form_btn')
        .unbind('click')
        .bind('click',function(){
            //if ( !$('.b-pageshadow').length )
                show_popup('popup_mail_form');
            return false;
        })

    // #hn12 - featires imeages, whats new images, sef files
    if ( $.fn.fancybox ){
        $('div.js_features .js_features_image_container .js_image, .ver_lavel3_block2 .js_image')
            .fancybox({
        		'titleShow'		: false,
        		'transitionIn'	: 'elastic',
        		'transitionOut'	: 'elastic',
        		'speedIn'       : effect_speed_fast,
                'speedOut'      : effect_speed_fast
        	});
            	
        $('a[href$=.swf]')
            .each(function(){

                var pl_width = parseInt( $(this).attr('js_width') || 896 );
                var pl_height = parseInt( $(this).attr('js_height') || 600 );
                
                $(this)
                    .fancybox({
                		'titleShow'		: false,
                		'transitionIn'	: 'elastic',
                		'transitionOut'	: 'elastic',
                		'speedIn'       : effect_speed_fast,
                        'speedOut'      : effect_speed_fast,
                        'width'         : pl_width,
                        'height'        : pl_height
                	});
            
            })
            
    } // if
    
    
    var videos = $('a[href$=.flv]');
    
    if ( videos.length ) {

        $('body')
            .prepend(
                '<div class="overlay" style="display: none;" id="overlay">' +
                    '<div class="b-alert">' +
                        '<div class="alert-sh-left"></div>' +
                        '<div class="alert-sh-right"></div>' +
                        '<div class="alert-sh-bot"></div>' +
                        '<div class="alert-sh-u3"></div>' +
                        '<div class="alert-sh-u4"></div>' +
                        '<div class="alert-box">' +
                            '<a class="close b-btn-close" href="#close"><img alt="Close" src="/images/alert.close.png"></a>' +
                            '<a id="player" href="#null">&nbsp;</a>' +
                        '</div>' +  
                    '</div>' +            
                '</div>'
            )

        var player;
        
        videos
            .attr('rel','div.overlay')
            .overlay({
                
                // use the Apple effect for overlay
                effect: 'apple',
                
                // when overlay is opened, load our player
                onLoad: function() {
                    player.load();
                },
                
                // when overlay is closed, unload our player
                onClose: function() {
                    hide_popup()
                    player.unload();
                }
            })
            .click(function(){
    
                var href = $(this).attr('href');
                $('div.overlay #player').attr('href',href)
                
                player = $f("player", "/images/flowplayer-3.2.4.swf");
                
                $('.b-fixed_fond').show();
                
                return false;
            })
    
    } // if videos
    
    // #hn07 - скрыть popup форму
    $('.js_close_popup').unbind('click').click(function(){
        hide_popup()
        return false;
    });

} // function js_init_page_events


// #fn05 - показать popup форму
function show_popup( container_id ){
    
    var container = $('#'+container_id);
    
    if ( !container.length ){
        alert('Servise blocked');
        return false;
    }
    
    // положить содержимое
    $('#popup_main_container').html( $('#'+container_id).html() );
    
    // включение ajax форм
    $('#popup_main_container form[wait_ajax=1]').attr('wait_ajax','0');

    // form_sender wrap
    set_form_submit( '#popup_main_container' );
    
    // отобразить контейнеры
    $('.js-alert').css('display', 'block');
    $('.js-alert_2').each(function(){
        if (!ie6) {
            $(this).css({
                'margin-top': ($(this).height() / (-2 * 13)).toFixed(2) + 'em',
                'margin-left': ($(this).width() / (-2 * 13)).toFixed(2) + 'em'
            });
        }
    });

} // function show_popup

// #fn06 - скрыть popup форму
function hide_popup(){
    $('.js-alert, .b-fixed_fond').hide()
} // function hide_popup


// #hn09 - активация shadowbox
if ( typeof(Shadowbox) != 'undefined' ){
    Shadowbox.init({
        overlayOpacity: 0.5,
        overlayColor: '#A0A0A0',
        fadeDuration: 0,
        resizeDuration: 0
    });
}

// #fn07 - включить / выключить блок whats new
function init_whats_new_block( header_class, title_class, main_parent_class ){

    $('.'+header_class, '#js_whatsnew_block')
        .click(function(){
            
            // блокировка анимации
            if ( block_animation ) return false;
            block_animation = true;
    
            // контейнер заголовка
            var header = $(this);
            
            // указатель на переключатель
            var switcher;
            if ( main_parent_class )
                switcher = $(this).parent();
            else
                switcher = $( '.'+title_class, header );
                
            // набор контентных блоков
            var conteiners = $('> div',$(this).parent()).not(this)
    
            // статус отображения (показан / нет) 
            var open = switcher.hasClass( title_class+'_on' );
            
            // изменение статуса отображения
            if ( open ){
                
                conteiners
                    .slideUp( effect_speed, function(){ 
                        block_animation = false;
                        switcher.removeClass( title_class+'_on' );
                    } )
                
            } else {
                
                switcher.addClass( title_class+'_on' );
                conteiners
                    .slideDown( effect_speed, function(){ 
                        block_animation = false;
                    } )
                    
            }
            
        })

} // function init_whats_new_block
