/*
 * MooTools based thumbnail scroller
 * Copyright (c) Nick Wellnhofer
 */

function nbStartScroller() {
    var ts = $('thumbscroller');
    var tsSize = ts.getSize();
    var tsScrollSize = ts.getScrollSize();
    
    if(tsSize.x >= tsScrollSize.x) {
        ts.setStyle('visibility', 'visible');
        return;
    }
    
    var lastImageGroup;
    var lastScrollPos;
    var nameFields = window.name.split(':');
    
    if(nameFields[0] == 'nburg') {
        lastImageGroup = nameFields[1];
        lastScrollPos = parseInt(nameFields[2]);
        window.name = '';
    }
    
    //ts.setStyle('overflow', 'hidden');
    //ts.setStyle('height', tsSize.y - 16);
    
    $('thumbarrows').setStyle('display', 'block');
    
    var scrollReady = true;
    var scrollSize = 142;
    var scrollMax = Math.floor((tsScrollSize.x - tsSize.x) / scrollSize);
    var scrollPos;
    var imageGroup = window.location.pathname.replace(/\/[^\/]+$/, '');
    
    if(imageGroup == lastImageGroup) {
        scrollPos = lastScrollPos;
    }
    else {
        scrollPos = 0;
        
        ts.getElements('tr').each(function(row, rowIdx) {
            row.getElements('a').each(function(a, colIdx) {
                if(a.get('class') == 'selected') {
                    scrollPos = colIdx;
                }
            });
        });
    }
    
    if(scrollPos < 0) {
        scrollPos  = 0;
    }
    else if(scrollPos > scrollMax) {
        scrollPos = scrollMax;
    }
    
    var scroll = new Fx.Scroll(ts, {
        fps: 25,
        duration: 600,
        transition: Fx.Transitions.Quad.easeInOut,
        wheelStops: false,
        onComplete: function() {
            scrollReady = true;
        }
    });
    
    var updateLinks = function() {
        if(scrollPos <= 0) a1.set('class', 'inactive');
        else a1.set('class', '');
        if(scrollPos >= scrollMax) a2.set('class', 'inactive');
        else a2.set('class', '');
    }
    
    var a1 = $('thumbprev');
    a1.addEvent('click', function(event) {
        this.blur();
    	event.stop();
    	if(scrollReady && scrollPos > 0) {
    	    scrollReady = false;
    	    --scrollPos;
    	    scroll.start(scrollPos * scrollSize, 0);
            updateLinks();
    	}
    });
    
    var a2 = $('thumbnext');
    a2.addEvent('click', function(event) {
        this.blur();
    	event.stop();
    	if(scrollReady && scrollPos < scrollMax) {
    	    scrollReady = false;
    	    ++scrollPos;
    	    scroll.start(scrollPos * scrollSize, 0);
            updateLinks();
    	}
    });
    
    ts.getElements('a').addEvent('click', function(event) {
        window.name = 'nburg:' + imageGroup + ':' + scrollPos;
    });
    
    scroll.set(scrollPos * scrollSize, 0);
    updateLinks();
    
    ts.setStyle('visibility', 'visible');
}

// disable noscript stylesheet
for(var i=0; i<document.styleSheets.length; ++i) {
    var sheet = document.styleSheets[i];
    if(sheet.href && sheet.href.match(/noscript\d+\.css$/)) {
        sheet.disabled = true;
    }
}

window.addEvent('domready', nbStartScroller);
