(function($)
{
    $(function()
    {
        // Firefox .btn style fix
        if ($.browser.mozilla)
            $("input[type='submit'], input[type='button']").css('padding-bottom', '3px');
        
        
        $(".translations_list .item a").hover(
            function()
            {
                $(".flag_cnt", this).css({
                    background: 'url(images/flag_bg_active.gif) no-repeat'
                });
            },
            function()
            {
                $(".flag_cnt", this).css({
                    background: 'url(images/flag_bg.gif) no-repeat'
                });
            }
        );
        
        // This is another fix for IE6 quirks
        // if ($.browser.msie && $.browser.version < 7.0)
        // {
            // $(".translations_list .item .flag_cnt").each(function()
            // {
                // $(this).data('orig_position_top', $(this).position().top);
            // });
            
            // $(window).resize(function()
            // {
                // $(".translations_list .item .flag_cnt").each(function()
                // {
                    // $(this).css({
                        // top: $(this).data('orig_position_top')
                    // });
                // });
            // });
        // }
        
        function position_visible_translations_list_item(item)
        {
            var pos_top     = $("a", item).offset().top -  $(".balloon", item).height() - 25;
            var pos_left    = $("a", item).offset().left - ($(".balloon", item).outerWidth() / 2)
                + ($("a", item).outerWidth() / 2);
            
            if (pos_top < 10)
                pos_top = 10;
            if (pos_left < 10)
                pos_left = 10;
            if (pos_left + $(".balloon", item).outerWidth() > $(window).width() - 10)
                pos_left = $(window).width() - 10 - $(".balloon", item).outerWidth();
            
            $(".balloon", item).css({
                top: pos_top,
                // marginLeft: - ($(".balloon", item).outerWidth() / 2)
                    // + ($("a", item).outerWidth() / 2)
                left: pos_left
            });
            
            // if ($(".balloon", item).offset().left < 0)
                // $(".balloon", item).css({
                    // marginLeft: $(".balloon", item).css('marginLeft').replace(/px/, '')
                        // - $(".balloon", item).offset().left
                // });
        }
        
        function show_translations_list_item(item)
        {
            // var hide_afterwards = false;
            // if ($(".balloon", item).is(":visible") == false)
            // {
                // // $(".balloon", item).css('opacity', 0.51);
                
                
                
                // hide_afterwards = true;
            // }
            
            // $(".balloon", item).fadeTo(0, 0.01, function()
            // {
                // position_visible_translations_list_item(item);
                // $(".balloon", item).fadeTo(400, 1.0);
            // });
            
            position_visible_translations_list_item(item);
            $(".balloon", item).fadeIn()
        }
        
        $(window).resize(function()
        {
            $(".translations_list .item").each(function()
            {
                if ($(".balloon", this).is(":visible"))
                    position_visible_translations_list_item($(this));
            });
        });
        
        $(".translations_list .item").each(function()
        {
            var item = $(this);
            
            $(".balloon .close", item).click(function()
            {
                $(".balloon", item).fadeOut();
            });
            
            $(".balloon", item).hover(
                function()
                {
                    $(this).data('mouse_over', true);
                },
                function()
                {
                    $(this).data('mouse_over', false);
                }
            );
            $("a", this).click(function()
            {
                if ($(".balloon", item).is(":visible"))
                    $(".balloon", item).fadeOut();
                else
                {
                    $(".translations_list .item .balloon").fadeOut();
                    // $(".balloon", item).fadeIn();
                    show_translations_list_item(item);
                    $(document).click(function()
                    {
                        if (! $(".balloon", item).data('mouse_over'))
                            $(".balloon", item).fadeOut();
                    });
                }
                
                return false;
            });
        });
    });
})(jQuery);

function dump(arr,return_text,level,objs_dumped) {
    if (return_text == undefined) return_text = false;
    var dumped_text = "";
    if(!level) level = 0;
    if (objs_dumped == undefined) objs_dumped = [];
    
    //The padding given at the beginning of the line.
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    
    if(typeof(arr) == 'object') { //Array/Hashes/Objects 
        for(var item in arr) {
            try {
                var value = arr[item];
                if(typeof(value) == 'object') { //If it is an array,
                    dumped_text += level_padding + "'" + item + "' ...\n";
                    // Recursion protection
                    var already_dumped = false;
                    for (var k = 0; k < objs_dumped.length; k++)
                        if (value == objs_dumped[k]) {
                            already_dumped = true;
                            dumped_text += 'recursion! (already dumped somewhere above)\n';
                        }
                    if (already_dumped == false) {
                        objs_dumped[objs_dumped.length] = value;
                        dumped_text += dump(value,true,level+1,objs_dumped);
                    }
                } else {
                    dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
                }
            } catch (err) {}
        }
    } else { //Stings/Chars/Numbers etc.
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    
    if (return_text)
        return dumped_text;
    else
        alert(dumped_text);
}