$(document).ready(function() {

    $('#logo').click(function() {
        $('#navigation #contact_link').trigger('click');
    }).css({
        background: 'url(images/logo_sicabol.png) no-repeat transparent 0 0',
        cursor: 'pointer'
    }).attr('title', 'Contactez Patrig Droumaguet').find('h1').hide();

    var sous_pages = $('#content > div');

    $('a.external').click(function(event) {
        event.preventDefault();
        window.open($(this).attr('href'));
    });

    $('#navigation').after('<div id="navigation_holder"></div><div id="navigation_holder_pre_back"></div><div id="navigation_holder_back"></div>');
    $('#navigation_holder').corners("5px 3px 3px 0");
    $('#navigation_holder_back').corners("4px 0 0 4px");

    $('#navigation li').css('cursor', 'pointer').filter(':has(a[href])').each(function() {
        var anchor = $(this).children('a');
        var anchor_href = anchor.attr('href');
        if (anchor_href.substring(0, 1) == '#') {
            var elem_name = anchor_href.substring(1, anchor_href.length);
            $(this).click(function() {
                if ($(this).hasClass('selected') == false) {
                    $('#content > div:visible').fadeOut(1000, function() {
                         $('#content > div#content_' + elem_name).show_illustration().fadeIn(1000, function(){
                             $(this).children('.nav_prev, .nav_next').fadeTo(500, 0.3).fadeTo(500, 0);
                         }).arrange_details();
                    });
                }
                $(this).set_selected();
                return false;
            });
        } else {
            $(this).click(function(event) {
                if (anchor.hasClass('external')) {
                    window.open(anchor_href);
                } else {
                    event.preventDefault();
                    self.location = anchor_href;
                }
               return false;
            });
        }
        $(this).html(anchor.html());
    }).eq(0).addClass('selected').css('padding-left', 20);
    $('#navigation li:last').css('padding-right', 20);

    sous_pages.filter(':has(ul.projets)').each(function() {
        var sous_page_id = $(this).attr('id').substring(8, $(this).attr('id').length);
        var sous_page_menu_li = $('#navigation li:has(a[href=#' + sous_page_id + '])');
        var sous_sous_pages = $(this).find('ul.projets > li');
        sous_sous_pages.hide().eq(0).show_illustration().show().arrange_details();
        
        var code_sommaire = '';
        sous_sous_pages.each(function() {
            code_sommaire += '<li>' + $(this).children('h3').text() + '</li>';
        });
        $(this).children('h2').after('<div class="sous_navigation"><ul>' + code_sommaire + '</ul></div>');

        var projets = $(this).find('.sous_navigation > ul > li');
        projets.eq(0).addClass('selected').css('padding-left', 20);
        projets.filter(':last').css('padding-right', 20);
        projets.css('cursor', 'pointer').click(function() {
            if ($(this).hasClass('selected') == false) {
                var selected_page = sous_sous_pages.eq(projets.index(this));
                sous_sous_pages.filter(':visible').fadeOut(1000, function() {
                    selected_page.show_illustration().fadeIn(1000).arrange_details();
                });
            }
            $('#navigation li.selected').set_selected();
            $(this).set_selected();
        });
        $(this).append('<div class="nav_prev"></div><div class="nav_next"></div>').children('div.nav_prev, div.nav_next').fadeTo(0, 0).hover(function() {
            $(this).stop().fadeTo(2000, 0.3);
        }, function() {
            $(this).stop().fadeTo(500, 0);
        }).click(function() {
           $(this).easy_navigation();
        });
    });

    $('#navigation ul, .sous_navigation ul').before('<div class="selected_li"></div>');
    $('.selected_li').bind('mouseenter click', function() {
        $(this).show_navigation();
    });

    $('#page, #content').corners("30px 0 0 30px");
    $('.nav_prev').corners("0 0 0 30px");
    $('.nav_next').corners("30px 0 0 0");

    $('#navigation ul, .sous_navigation ul, .selected_li').corners('0 0 3px 3px');
    $('#navigation li, .sous_navigation li').hover(function(){
        $(this).addClass('hover');
    }, function(){
        $(this).removeClass('hover');
    });

    sous_pages.eq(0).show_illustration().show().arrange_details().init_webkit();
    sous_pages.filter(':gt(0)').hide();

    $(window).bind('resize', arrange_display).trigger('resize');
    
});

function arrange_display() {
    $('#page').center();
    $('#body_sicabol').css({
        'background': 'url(images/fond_global.png) repeat-x transparent 0 ' + ($('#page').offset().top + 550 - 119) + 'px'
    })
}


(function($){
    $.fn.arrange_details = function() {
        var details = $(this).children('.details');
        if (details.length && $(this).data('details_height') == undefined) {
            var content = $('#content');
            var details_height = details.height();
            var h = 410 + content.offset().top - details.offset().top;
            if (details.height() > h && h > 0) {
                var delta_h = details_height - h + 20;
                $('<div class="details_slider"></div>').data('details', details).data('delta_h', delta_h).insertBefore(details).css({
                    height: h,
                    'float': 'right',
                    right: '-20px'
                }).slider({
                    orientation: 'vertical',
                    min: 0,
                    max: delta_h,
                    value: delta_h,
                    slide: function(event, ui){
                        $(this).siblings('.details').scrollTop($(this).data('delta_h') - ui.value);
                    }
                }).corners('3px 3px 3px 3px').children('.ui-slider-handle').corners('3px 3px 3px 3px');
                $(this).data('details_height', h);
                details.height(h).css('overflow', 'hidden');
            }
        }
        return this;
    }

    $.fn.corners = function(options){
        var radius = new Array(0,0,0,0);
        var options_radius = options.split(' ');
        for (var i = 0; i < options_radius.length; i ++)
            radius[i] = options_radius[i];
        $(this).css('border-top-right-radius', radius[0]).css('-moz-border-radius-topright', radius[0]).css('-webkit-border-top-right-radius', radius[0]).css('-khtml-border-top-right-radius', radius[0]);
        $(this).css('border-bottom-right-radius', radius[1]).css('-moz-border-radius-bottomright', radius[1]).css('-webkit-border-bottom-right-radius', radius[1]).css('-khtml-border-bottom-right-radius', radius[1]);
        $(this).css('border-bottom-left-radius', radius[2]).css('-moz-border-radius-bottomleft', radius[2]).css('-webkit-border-bottom-left-radius', radius[2]).css('-khtml-border-bottom-left-radius', radius[2]);
        $(this).css('border-top-left-radius', radius[3]).css('-moz-border-radius-topleft', radius[3]).css('-webkit-border-top-left-radius', radius[3]).css('-khtml-border-top-left-radius', radius[3]);
        return this;
    }

    $.fn.set_selected = function() {
        $(this).siblings('.selected').removeClass('selected');
        $(this).addClass('selected');
        var parent_ul = $(this).parent('ul');
        var selected_li_title = parent_ul.siblings('div.selected_li');
        if (parent_ul.filter(':visible').length) {
            selected_li_title.hide().text($(this).text());
            parent_ul.hide('slide', {direction: 'right'}, 1000, function() {
                selected_li_title.show('slide', {direction: 'right'}, 400).bind('mouseleave', function() {
                    $(this).bind('mouseenter click', function() {
                        $(this).show_navigation();
                    })
                });
            });
        } else {
            selected_li_title.text($(this).text());
        }
        return this;
    }

    $.fn.show_navigation = function() {
        $(this).unbind('mouseenter');
        var selected_li_title = $(this);
        var ul = $(this).siblings('ul:hidden');
        if (ul.length) {
            $(this).html('').hide();
            ul.show('slide', {direction: 'right'}, 1000, function() {
                selected_li_title.bind('mouseenter click', function() {
                    $(this).show_navigation();
                });
            });
        }
        return this;
    }

    $.fn.easy_navigation = function() {
        var navigation = $(this).siblings('div.sous_navigation');
        var selected_li = navigation.find('li.selected');
        var navigation_lis = selected_li.parent().children('li');
        var new_index = navigation_lis.index(selected_li) + (($(this).hasClass('nav_prev')) ? -1 : 1);
        if (new_index < 0)
            new_index = navigation_lis.length - 1;
        else if (new_index >= navigation_lis.length)
            new_index = 0;
        navigation_lis.eq(new_index).trigger('click');
        return this;
    }

    $.fn.show_illustration = function() {
        if ($(this).filter('[class^=illustration_]').length) {
            var illustration_url = $(this).attr('class').split(' ')[0];
            var content_div = $(this).parents('div[id^=content_]');
            if (content_div.length == 0) {
                content_div = this;
            }
            $(this).css({
                paddingRight: 480
            });
            content_div.css({
                background: 'url(images/' + illustration_url + '.png) 410px 83px transparent no-repeat'
            });
        }
        return this;
    }

    $.fn.init_webkit = function() {
        $('h2, p, ul', $(this)).css({
            width: 368
        });
    }
})(jQuery);
