var bubbles_visibility = {};
for (var i = 1; i <= 6; i++)
    bubbles_visibility['m' + i] = false;


window.current_bubble = '';
var captions_path = 'images/cap/captions/';
var captions = ['en', 'ru', 'fr', 'ge', 'it', 'iv', 'jp'];
var current_caption_index = 1;
var piles = ['pile1', 'pile2', 'pile4', 'pile5'];
var fade_speed = 100;

    var images_for_preload = [];
    for (var i = 0, len = captions.length; i < len; i++)
        images_for_preload.push(captions_path + captions[i] + '.jpg');

    for (var i = 0, len = piles.length; i < len; i++)
        images_for_preload.push(captions_path + piles[i] + '.jpg');


function captions_handler()
{
    $image = $('#pic img');
    $block = $('#pic_container');
    //$image.attr('src', captions_path + captions[current_caption_index] + '.jpg');
    //$block.css('background-image', captions_path + captions[current_caption_index] + '.jpg');

    // mouseover
    $block.bind('mouseover', function() 
    {
        var rand_index = array_rand(piles);
        var rand_el = piles[rand_index];

        play_sound(3);
        $block.fadeOut(fade_speed, function()
        {
            $block.attr('class', rand_el);
            $block.fadeIn(fade_speed);
        });
        
//        $image.hide();
//        $image.attr('src', captions_path + rand_el + '.jpg');
//        $image.one('load', function()
//        {
//            
//            $image.show();
//        });
    });
    
    // mouseout
    $block.bind('mouseout', function()
    {
        if (current_caption_index > captions.length-1)
            current_caption_index = 0;

        play_sound(4);
        $block.fadeOut(fade_speed, function()
        {
            $block.attr('class', captions[current_caption_index]);
            current_caption_index++;
            $block.fadeIn(fade_speed);
        });
        
//        $image.hide();
//        $image.attr('src', captions_path + captions[current_caption_index] + '.jpg');
//        $image.one('load', function()
//        {
//            $image.attr('class', captions[current_caption_index]);
//            $image.show();
//            current_caption_index++;
//        });


    });
}


function menu_handler()
{
    var $menu_points = $('#menu a.point');
    var $bubbles = $('#menu .bubble');

    // mouseover
    // parsenki v0.284
    var sounds = [1, 2];
    $menu_points.bind('mouseover', function()
    {
        var rand_index = array_rand(sounds);
        var rand_el = sounds[rand_index];
        play_sound(rand_el);

        var $bubble = get_bubble(this);
        
        if (current_bubble)
        {
            $('#menu .bubble').each(function()
            {
                if (!$(this).hasClass(current_bubble))
                    $(this).hide()
            });
        }
        else
        {
            $('#menu .bubble[class!="'+ $bubble['class'] +'"]').hide();
        }
        $bubble.obj.show();
        return false;
    });

    // mouseout
    $menu_points.bind('mouseout', function()
    {
        if (current_bubble)
        {
            $('#menu .bubble[class!="'+ 'bubble '+ current_bubble +'"]').hide();
        }
        else
        {
            $bubbles.hide();
            for (var key in bubbles_visibility)
            {
                bubbles_visibility[key] = false;
            }
            current_bubble = '';
        }

    });


    // click
    $menu_points.bind('click', function()
    {
        var $bubble = get_bubble(this);

        $('#menu .bubble[class!="'+ $bubble['class'] +'"]').hide();

        if (current_bubble && current_bubble == $bubble['class'].replace('bubble ', ''))
        {
            $bubble.obj.toggle();
            if ($bubble.obj.css('display') == 'none')
                window.current_bubble = '';
            else
                window.current_bubble = $bubble.id;
        }
        else
        {
            window.current_bubble = $bubble.id;
        }

        
        return false;
    });
}

function lang_handler()
{
    $("#cap .lang").click(function()
    {
        var lang = this.id.replace('lang_', '');
        hash.setParam('lang', lang);
        $('#cap .lang').removeClass('active');
        $(this).addClass('active');
        

        $('#cap .topmenu, #pic .content, #menu .menu').each(function()
        {
            var page = getPage();
            var attr = $(this).attr('lang');
            switch (lang)
            {
                case 'rus':
                    if (attr == 'ru') {
                        $(this).show();
                        $("#logo").addClass("rus");
                        $("#logo").removeClass("en");
                    }
                    else if (attr == 'en') {
                        $(this).hide();
                    }
                    $('#'+page+ '_' + lang).show();
                    break;

                case 'eng':
                    if (attr == 'en') {
                        $(this).show();
                        $("#logo").addClass("en");
                        $("#logo").removeClass("rus");
                    }
                    else if (attr == 'ru') {
                        $(this).hide();

                    }
                    $('#'+page+ '_' + lang).show();
                    break;
            }
        });
        return false;
    });
}

function getPage() {
    return hash.hasParam('p') ? hash.getParam('p') : 'pic_container';
}

function getLang() {
    return hash.hasParam('lang') ? hash.getParam('lang') : 'rus';
}

function content_handler()
{
    $('.layer4 .switch').click(function()
    {
        $('.layer4 .switch em').parent().hide();
        $('.layer4 .switch span').show();

        $('.bc').removeClass("hidden");
        $('.bf').addClass("hidden");

        $('.layer4 .switch2 em').parent().show();
        $('.layer4 .switch2 span').hide();
    });
    
    $('.layer4 .switch2').click(function()
    {
        $('.layer4 .switch2 em').parent().hide();
        $('.layer4 .switch2 span').show();

        $('.bf').removeClass("hidden");
        $('.bc').addClass("hidden");
        
        $('.layer4 .switch em').parent().show();
        $('.layer4 .switch span').hide();
    });
}


function topmenu_handler()
{
    $('#logo').click(function() {
        $(this).addClass('active');
        $('#pic .layer').hide();
        $('#pic_container').show();
        hash.clear();
    });

    $('#cap .topmenu a').click(function()
    {
        $('#logo').removeClass('active');
        var num = $(this).attr('class').replace('s', '');
        var pname, sign;
        var lang = getLang();
        
        /*
        if (lang == 'rus')
        {
            $('#cap .content[lang="ru"]').show();
            $('#cap .content[lang="en"]').hide();
        }
        else if (lang == 'eng')
        {
            $('#cap .content[lang="ru"]').hide();
            $('#cap .content[lang="en"]').show();
        }
        */
        var lang_hide = (lang == 'rus') ? 'eng' : 'rus';

        if (typeof current_menu !== 'undefined' && current_menu == num)
        {
            sign = $('#layer' + num + '_' + lang).toggle().css('display');
            if (sign == 'none')
                pname = 'pic_container';
            else
                pname = 'layer' + num;

            $('#pic_container').toggle();
        }
        else
        {
            $('#pic .layer').hide();
            $('#layer' + num + '_' + lang).show();
            //$('#layer' + num + '_' + lang_hide).hide();

            $('#pic_container').hide();
            pname = 'layer' + num;
        }
        
        current_menu = num;
        hash.setParam('p', pname);
        return false;
    });
}



function map_handler()
{
$("#show_map a").click(function() {
    $("#map_hover").fadeIn();
    return false;
})

$("#map_hover a.btn_close").click(function() {
    $("#map_hover").fadeOut();
    return false;
})

$("#show_map_en a").click(function() {
    $("#map_hover_en").fadeIn();
    return false;
})

$("#map_hover_en a.btn_close").click(function() {
    $("#map_hover_en").fadeOut();
    return false;
})
}



function preload_images(images, default_path)
{
    if (typeof document.body == "undefined")
        return;
    try 
    {
        var div = document.createElement("div");
        div.id = 'images_preload';
        document.body.appendChild(div);
        div.innerHTML = '<img src="' + images.join('" /><img src="') + '" />';
    }
    catch(e)
    {
        // do nothing
    }
}


// получает бабл
function get_bubble(menu_item)
{
    var $bubble = $(menu_item).next();
    var c = $bubble.attr('class');

    return {
        'obj': $bubble,
        'id': c.match( /\s(m[0-9]{1})/ )[1],
        'class': c
    }
}


function getSWF(movieName)
{
    //return document.getElementById(movieName);
    if (navigator.appName.indexOf("Microsoft") != -1)
        return window[movieName];
    else
        return document[movieName];
    return null;
}


function play_sound(num)
{
    getSWF('player').sendFromJS(num);
}


function array_rand ( input, num_req ) {
    // Return key/keys for random entry/entries in the array  
    // 
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/array_rand    // +   original by: Waldo Malqui Silva
    // *     example 1: array_rand( ['Kevin'], 1 );
    // *     returns 1: 0
    var indexes = [];
    var ticks = num_req || 1;    var checkDuplicate = function ( input, value ) {
        var exist = false, index = 0;
        while ( index < input.length ) {
            if ( input [ index ] === value ) {
                exist = true;                break;
            }
            index++;
        }
        return exist;    };
 
    if ( input instanceof Array && ticks <= input.length ) {
        while ( true ) {
            var rand = Math.floor( ( Math.random( ) * input.length ) );
            if ( indexes.length === ticks ) { break; }
            if ( !checkDuplicate( indexes, rand ) ) { indexes.push( rand ); }
        }
    } else {
        indexes = null;
    }
 
    return ( ( ticks == 1 ) ? indexes.join( ) : indexes );
}


