
Event.observe(window, 'load', function(){
    initSifr();
    attachMenu();
    attachPageLinks();
    //attachScrollbars();
    attachQuoteRotation();
    attachNieuwsoverzicht();
    attachColofon();
    attachManualControl();
    attachDrag();
});

var SifrInitialized = false;

function initSifr(){
    if (typeof(sIFR) == 'function') {
        sIFR.replaceElement(".content h1", named({
            sFlashSrc: "/swf/fonts/itc_bold.swf",
            sColor: "#000000",
            sWmode: 'transparent'
        }));
        sIFR.replaceElement(".content h2.white", named({
            sFlashSrc: "/swf/fonts/itc_bold.swf",
            sColor: "#ffffff",
            sWmode: 'transparent'
        }));
        sIFR.replaceElement(".content h2.pink", named({
            sFlashSrc: "/swf/fonts/itc_bold.swf",
            sColor: "#FF65A4",
            sWmode: 'transparent'
        }));
        sIFR.replaceElement(".content h2", named({
            sFlashSrc: "/swf/fonts/itc_book.swf",
            sColor: "#000000",
            sWmode: 'transparent'
        }));
        sIFR.replaceElement(".content h3", named({
            sFlashSrc: "/swf/fonts/itc_book.swf",
            sColor: "#ffffff",
            sWmode: 'transparent'
            //sFlashVars: 'textalign=right' 
        }));
        initSifrQuotes();
    }
}

function initSifrQuotes(){
    if (typeof(sIFR) == 'function') {
    
		sIFR.rollback('.quote .quote_text');
		sIFR.rollback('.quote .quote_auteur');
        
        sIFR.replaceElement(".quote .quote_text", named({
            sFlashSrc: "/swf/fonts/itc_bold.swf",
            sColor: "#ffffff",
            sWmode: 'transparent'
            //sFlashVars: 'textalign=right' 
        }));
        sIFR.replaceElement(".quote .quote_auteur", named({
            sFlashSrc: "/swf/fonts/itc_medium.swf",
            sColor: "#ffffff",
            sWmode: 'transparent'
            //sFlashVars: 'textalign=right' 
        }));
    }
}

var AnimationInProgress = false;

function attachMenu(){

    $$('#menuitems .submenu').each(function(el){
        el.observe('mouseover', function(e){
            el.show();
        });
        el.observe('mouseout', function(e){
            el.hide();
        });
    });
    
    $$('#menuitems a').each(function(el){
        var menu_id = el.id.replace('link_page_', '');
        el.observe('mouseover', function(e){
            if ($('submenu_' + menu_id)) {
                $('submenu_' + menu_id).show();
            }
        });
        el.observe('mouseout', function(e){
            if ($('submenu_' + menu_id)) {
                $('submenu_' + menu_id).hide();
            }
        });
        
        el.observe('click', function(e){
            Event.stop(e);
            if (AnimationInProgress) {
                return false;
            }
            AnimationInProgress = true;
            var targetel = el.id.replace('link_', '');
            
            focus_page(targetel);
            
        });
    });
}

function attachPageLinks(){
    $$('#pages a').each(function(el){
    
        if (el.href.include('#')) {
            var linkparts = el.href.split('#');
            if (linkparts[1] != "" && $(linkparts[1])) {
                var targetel = linkparts[1];
                el.observe('click', function(e){
                    Event.stop(e);
                    if (AnimationInProgress) {
                        return false;
                    }
                    AnimationInProgress = true;
                    focus_page(targetel);
                });
            }
        }
    });
}

function focus_page(targetel){
    $(targetel).absolutize;
    
    var position_info = Element.cumulativeOffset($(targetel));
    var move_x = position_info.left;
    var move_y = position_info.top;
    
    var duration_x = 0.6;
    var duration_y = 0.6;
    
    if (move_x == 111) 
        duration_x = 0;
    if (move_y == 155) 
        duration_y = 0;
    
    new Effect.Move('pages', {
        x: -move_x + 111,
        y: 0,
        mode: 'relative',
        duration: duration_x,
        afterFinish: function(){
            new Effect.Move('pages', {
                x: 0,
                y: -move_y + 155,
                mode: 'relative',
                duration: duration_y,
                afterFinish: function(){
                    AnimationInProgress = false;
                }
            });
        }
    });
}

function moreToggle(el, anchor){
    if ($(el).visible()) {
        $(el).hide();
        $(anchor).innerHTML = 'MORE +';
        
        if ($(el + '_hide')) {
            $(el + '_hide').show();
        }
    }
    else {
        $(el).show();
        $(anchor).innerHTML = 'LESS -';
        if ($(el + '_hide')) {
            $(el + '_hide').hide();
        }
    }
}

function attachScrollbars(){
    $$('.scrollbar_container').each(function(scroll_el){
    
        var scrollbar_nr = scroll_el.id.replace('scrollbar_container', '');
        
        var size_outer = $(scroll_el).getHeight();
        var size_inner = $('scrollbar_content_inner' + scrollbar_nr).getHeight();
        
        if (size_inner > size_outer) {
            var scrollbar = new Control.ScrollBar('scrollbar_content' + scrollbar_nr, 'scrollbar_track' + scrollbar_nr);
        }
        else {
            $('scrollbar_track' + scrollbar_nr).hide();
        }
    });
}

function attachQuoteRotation(){
	
	var quote_rotation_delay = 5;
	
    $$('.rotation').each(function(el){
        var items = el.getElementsByClassName('inner');
        var position = 0;
        var firstskipped = false;
        new PeriodicalExecuter(function(pe){
        
            if (!firstskipped) {
                firstskipped = true;
                return;
            }
            
            items[position].setStyle({
                'position': 'absolute',
                'top': '-1000px',
                'left': '0px'
            });
            var position_next = position + 1;
            if (position_next > items.length - 1) {
                position_next = 0;
            }
            items[position_next].setStyle({
                'position': 'relative',
                'top': '0px',
                'left': '0px'
            });
            position = position_next;
			
			initSifrQuotes();
			
        }, quote_rotation_delay);
    });
}

function attachNieuwsoverzicht(){
    if ($('nieuwsoverzicht')) {
        $$('#nieuwsoverzicht .item .head').each(function(el){
            el.observe('click', function(e){
                Event.stop(e);
                var item_id = el.id.replace('nieuws_head_', '');
                if ($('nieuws_content_' + item_id).visible()) {
                    $('nieuws_content_' + item_id).blindUp({
                        duration: 0.15
                    });
                }
                else {
                    $('nieuws_content_' + item_id).blindDown({
                        duration: 0.15,
                        queue: 'end'
                    });
                }
                $$('#nieuwsoverzicht .nieuws_content').each(function(content_el){
                    if (content_el.visible()) {
                        //content_el.blindUp({duration:0.15});
                    }
                });
            });
        });
    }
}

function attachColofon(){
    if ($('colofon_link') && $('colofon')) {
        var colofon_visible = false;
        var colofon_animation_in_progress = false;
        $('colofon_link').observe('click', function(e){
            Event.stop(e);
            if (colofon_animation_in_progress) {
                return;
            }
            colofon_animation_in_progress = true;
            if (colofon_visible == false) {
                colofon_style = 'top: 71px';
                colofon_visible = true;
            }
            else {
                colofon_style = 'top: -5px';
                colofon_visible = false;
            }
            
            new Effect.Morph('colofon', {
                style: colofon_style,
                duration: 0.3,
                afterFinish: function(){
                    colofon_animation_in_progress = false;
                }
            });
            
            
        });
    }
}

function attachManualControl(){
    if ($('pijl_down') && $('pijl_up')) {
        $('pijl_up').observe('click', function(e){
            Event.stop(e);
            manualMove(1)
        });
        $('pijl_down').observe('click', function(e){
            Event.stop(e);
            manualMove(-1)
        });
    }
}

function manualMove(direction){

    // Tweaking
    var scroll_by = 345; // De afstand die gescrollt wordt
    var duration = 0.6; // De snelheid van de scroll
    if (AnimationInProgress) {
        return false;
    }
    AnimationInProgress = true;
    
    var pages_top = parseInt(Element.getStyle('pages', 'top'));
    var pages_left = 0;
    var scroll_distance = scroll_by * direction;
    var pages_top_new = pages_top + scroll_distance;
    var scroll_mode = 'relative';
    
    if (pages_top_new > 155) {
        scroll_distance = 155;
        pages_left = parseInt(Element.getStyle('pages', 'left'));
        scroll_mode = 'absolute';
    }
    if (pages_top_new < -1600) {
        AnimationInProgress = false;
        return;
    }
    
    //	if (scroll_to < 155) {
    //		scroll_to = 155;
    //	}
    
    
    new Effect.Move('pages', {
        x: pages_left,
        y: scroll_distance,
        mode: scroll_mode,
        duration: duration,
        afterFinish: function(){
            AnimationInProgress = false;
        }
    });
}

function attachDrag(){
    new Draggable('pages', {
        zindex: 0,
        starteffect: null,
        endeffect: null,
        snap: function(x, y, draggable_object){
            if (x > 0) 
                x = 0;
            if (y > 0) 
                y = 0;
            return [x, y];
        }
    });
}
