
/*
 * Artefacto - main.js
 * RS : 2011/06/01
 * Dépendances : Jquery
 *
 * */


// Patch HTML5 pour Internet Explorer
if( navigator.appName == 'Microsoft Internet Explorer' )
{
    document.createElement("header");
    document.createElement("footer");
    document.createElement("section");
    document.createElement("aside");
    document.createElement("nav");
    document.createElement("article");
    document.createElement("figure");
    document.createElement("figcaption");
    document.createElement("hgroup");
    document.createElement("time");
}


// Change le slide du slideshow indiqué
function ChangeSlide( sSlideShowid, iLaps )
{
    // Récupère l'élement courant
    var liShown = $( '#' + sSlideShowid +'>li.Shown');
    // Récupère l'élement suivant
    var liNext = $( liShown ).next();
    if( liNext.length == 0 ) {liNext = $( '#' + sSlideShowid + '>li:first' );}
    // Met l'élement suivant devant
    liNext.addClass('Shown').fadeIn(1000);
    liShown.removeClass('Shown').fadeOut(1000);
    setTimeout( 'ChangeSlide(\'' + sSlideShowid + '\',' + iLaps + ')', iLaps );
}


// Scroll la liste de news
function ScrollNewsList( iMoveValue )
{
    // Calculs préalables
    var iNewsWidth = 112;
    var iNewsMustShown = 5;
    var iNewsShown = $('aside div.Scroller>nav.NewsList>a').length;
    var iNewsListWidth = iNewsWidth * iNewsShown;
    var iScrollerWidth = iNewsWidth * iNewsMustShown;
    // Redéfini la largeur de la liste de liens et du scroller
    $('aside div.Scroller>nav.NewsList').css( 'width', iNewsListWidth + 'px' );
    $('aside div.Scroller').css( 'width', iScrollerWidth + 'px' );
    var iLeft = parseInt( $('div.Scroller>nav.NewsList').css('left') );
    var iNewLeft = iLeft + iMoveValue * iNewsWidth;
    if( iNewLeft >= 0 ) { iNewLeft = 0; }
    else if( iNewLeft <= iScrollerWidth - iNewsShown * iNewsWidth ) { iNewLeft = iScrollerWidth - iNewsShown * iNewsWidth; }
    $('div.Scroller>nav.NewsList').css( 'left', iNewLeft + 'px' );
}
// Scroll sur le lien actuellement sélectionné
function ScrollNewsToCurrent()
{
    var iCurrentNewsIndex;
    $('aside div.Scroller>nav.NewsList>a').each(function(i){
        if( $(this).hasClass('Selected') ) { iCurrentNewsIndex = i; }
    });
    ScrollNewsList( -iCurrentNewsIndex + 1 );
}


// Met en scène le logo Artefacto
function AnimeLogo( iDelay )
{
    setTimeout( 'AnimeLogo(' + iDelay + ')', iDelay * 2 );
    $('#Logo>img').fadeOut(iDelay, function(){$('#Logo>img').fadeIn(iDelay);});
}



// Au chargement du DOM
$(document).ready(function(){

    // Ouvre / Ferme les sous-menus du menu principal
    $('#MainMenu>ul>li>a').click(function(event){
        if( $(this).parent().children('ul').length > 0 ) {event.preventDefault();}
        $('#MainMenu>ul>li>ul').hide();
        $(this).next('ul').show(150);
    });
    // Ouvre les sous-menus possédant un lien sélectionné
    $('#MainMenu>ul>li>ul>li>a.Selected').each(function(){
        var eMenu = $(this).parent().parent();
        var eLink = eMenu.prev();
        eMenu.children('li').css( 'margin-left', '1em' );
        eLink.addClass( 'Selected' );
        //eLink.text( '* ' + eLink.text() );
        eMenu.toggle(150);
    });

    // Met en place le fondu du logo Artefacto (IE est exclu)
    if (-[1,]) {AnimeLogo( 7500 );}

    // Pour chaque slideshow trouvé
    $('ul.SlideShow').each(function(){
        var iLaps = 3000;
        $( this ).children('li:first').addClass('Shown').css('display','list-item');
        setTimeout( 'ChangeSlide(\'' + $(this).attr('id') + '\',' + iLaps + ')', iLaps );
    });

    // Permet d'ouvrir des aides contextuels au survol des champs
    /*
    $('form div>div.Help').each(function(i){
        var eDiv = $(this).parent();
        //
    });*/

    // Met en place le scroll sur la liste des news
    $('#ScrollRightButton').click(function(event){event.preventDefault();ScrollNewsList(1);});
    $('#ScrollLeftButton').click(function(event){event.preventDefault();ScrollNewsList(-1);});
    //ScrollNewsList( 0 );
    ScrollNewsToCurrent();

    // Met en place la navigation dans la section actualités
    $('article.Activities div.Jobs>ul>li>a, article.Activities div.Waitings>ul>li>a').click(function(event){
        event.preventDefault();
        if( $(this).parents('div').hasClass('Jobs') )
        {
            $('div.Jobs>ul>li>a').removeClass('Selected');
            $('div.Waitings>ul>li>a').removeClass('Selected');
            $('article.Activities div.Waitings').hide();
        }
        else if( $(this).parents('div').hasClass('Waitings') )
        {
            $('div.Waitings>ul>li>a').removeClass('Selected');
        }
        $('article.Activities div.Solutions').hide();
        $(this).addClass('Selected');
        $( $(this).attr('href') ).show(250);
    });

    // Permet d'agrandir les images situées en galeries
    $('ul.Gallery>li>a').each(function(){
        $(this).lightBox({
            overlayBgColor: '#FFF',
            overlayOpacity: 0.6,
            imageLoading:  '/styles/lightbox/images/lightbox-ico-loading.gif',
            imageBtnClose: '/styles/lightbox/images/lightbox-btn-close.gif',
            imageBtnPrev:  '/styles/lightbox/images/lightbox-btn-prev.gif',
            imageBtnNext:  '/styles/lightbox/images/lightbox-btn-next.gif',
            containerResizeSpeed: 350
        });
    });

});
