/*
    File    : main.js
    Role    : theme specific javascript functions
    Licence : CeCILL v2
    Author  : Andre Rodier <andrerodier@free.fr>
    ---------
    History
    author <email> : Date : modification
    
*/

var ScrollPagesTimer = 0 ;
var PagesElem = false ;
var ThumbnailsInfos = false ;
var ThumbnailsInfosPos = 0 ;
var scrollTiming = 50 ;

function theme_initMenu()
{
}

function theme_init()
{
    theme_initMenu() ;
    theme_initThumbnails() ;

    // init thumbnails infos scroll
    AddEvent('ThumbnailsInfos', 'mousemove', MouseOnPages, false)
    AddEvent('ThumbnailsInfos', 'mouseout', MouseLeavePages, false)

    ThumbnailsInfos = document.getElementById('ThumbnailsInfos') ;
}

function theme_initSlide()
{
    SetElementsVisibility('SlideTitle,SlideMode,SlideBox,SlideControls,SlideInfos,SlideBottom,SlideDesc', 'visible') ;
    SetElementsVisibility('ThumbnailsMode,BildoMenu,ThumbnailsBox,BildoTitle,BildoInfos,ThumbnailsBottom', 'hidden') ;
}

function theme_initThumbnails()
{
    SetElementsVisibility('SlideTitle,SlideMode,SlideBox,SlideControls,SlideInfos,SlideBottom,SlideDesc', 'hidden') ;
    SetElementsVisibility('ThumbnailsMode,BildoMenu,ThumbnailsBox,BildoTitle,BildoInfos,ThumbnailsBottom', 'visible') ;

    var thumbnailsBox = document.getElementById('ThumbnailsBox') ;

    if ( CurrentThumbnailsMode == 'GRID' )
    {
        thumbnailsBox.style.overflow = 'hidden' ;
        thumbnailsBox.scrollTop = 0 ;
    }
    else
        thumbnailsBox.style.overflow = 'auto' ;

    ClearSlide() ;
}

function MouseOnPages(ev)
{
    if ( !ScrollPagesTimer )
    {
        PagesElem = this.firstChild ;
        if ( !ev ) ev = window.event ;
        scrollTiming = 50 ;

        var xpos = ev.clientX - ThumbnailsInfos.offsetLeft ;
        var rightOffset = ThumbnailsInfos.scrollWidth - xpos ;

        if ( ( PagesElem.clientWidth + PagesElem.scrollLeft != PagesElem.scrollWidth ) && rightOffset < 20 )
        {
            ScrollPagesTimer = window.setTimeout('ScrollPages(2)',scrollTiming) ;
        }
        else if ( PagesElem.scrollLeft && xpos < 20 )
        {
            ScrollPagesTimer = window.setTimeout('ScrollPages(-2)',scrollTiming) ;
        }
    }
    else
    {
        var xpos = ev ? ev.layerX : event.offsetX ;

        if ( ( this.clientWidth - xpos ) > 20 && xpos > 20 )
        {
            window.clearTimeout(ScrollPagesTimer) ;
            ScrollPagesTimer = 0 ;
        }
    }
}

function MouseLeavePages()
{
    if ( ScrollPagesTimer )
    {
        window.clearTimeout(ScrollPagesTimer) ;
        ScrollPagesTimer = 0 ;
    }
}

function ScrollPages(dir)
{

    var endOffset = PagesElem.scrollWidth - PagesElem.clientWidth - PagesElem.scrollLeft ;

    // aceleration
    if ( Math.abs(dir) < 15 )
        dir *= 1.2 ;
    else
        dir = 15 * ( Math.abs(dir) / dir ) ;
    
    // slow down
    if ( Math.abs(dir) != 1 && ( dir < 0 && PagesElem.scrollLeft < 30 || dir > 0 && endOffset < 30 ) )
    {
        scrollTiming = 50 ;
        dir = 2 * ( Math.abs(dir) / dir ) ;
    }

    PagesElem.scrollLeft += dir ;

    // finish
    if ( dir < 0 && PagesElem.scrollLeft < 5 || dir > 0 && endOffset < 5 )
    {
        ScrollPagesTimer = 0 ;
        PagesElem.scrollLeft *= 100 * dir  ;
    }
    else
        ScrollPagesTimer = window.setTimeout('ScrollPages('+dir+')',scrollTiming) ;

    ThumbnailsInfosPos = PagesElem.scrollLeft ;
}

function theme_afterUpdate()
{
    ThumbnailsInfos = document.getElementById('ThumbnailsInfos') ;
    ThumbnailsInfos.firstChild.scrollLeft = ThumbnailsInfosPos ;
}

function theme_selectAlbum(name)
{
    var albumLink = document.getElementById('AlbumLink'+name) ;

    if ( albumLink )
    {
        var albumTopPos = albumLink.parentNode.offsetTop - 15 ;
        var menuTableDiv = document.getElementById('BildoToc') ;
        menuTableDiv.scrollTop = albumTopPos ;
    }
}
