/*
Slideshow für die Meray MMG Seite
*/
dojo.require("dojox.fx");
dojo.require("dojo.html");

// Zuerst alle Bilder nachladen die per JSON definiert wurden
dojo.ready(function(){
    // Zuerst die JSON Daten zu den Bildern aus HTML auslesen
    var data_node   = dojo.byId('slideshow_data');
	if ( !data_node ) {
		return;
	}
    var data_string = dojo.attr(data_node, 'innerHTML');
    var data        = dojo.fromJson(data_string);
    var banners     = data.banners;

    // Daten sind URL encodiert. Vorher wieder decodieren
    data.auto_slide     = unescape(data.auto_slide);
    data.slide_duration = unescape(data.slide_duration);
    banners = dojo.map(banners, function(item){
        return {
            "banner_org": unescape(item.banner_org),
            "title":      unescape(item.title),
            "teaser":     unescape(item.teaser),
            "link":       unescape(item.link)
        };
    });

    // "img" Objekete erzeugen und in div container auf seite einfügen
    dojo.forEach(banners, function(item){
        var image = dojo.create('img', { src: item.banner_org });
        dojo.place(image, 'slide_images');
    });
    // Text des ersten Bildes setzen
    dojo.html.set(dojo.byId('slide_title'), banners[0].title);
    dojo.html.set(dojo.byId('slide_text'),  banners[0].teaser);
    if ( banners[0].link.match(/^##Kein Link/) ) { 		
		dojo.attr('slide_button', 'style', { "display" : "none" } );		
	} else {
		dojo.attr('slide_button', 'href', banners[0].link);
	}

    // Anpassbare Werte
    var image_width    = 960;
    var image_height   = 200;
    var auto_slide     = data.auto_slide     || 5000;
    var slide_duration = data.slide_duration || 1000;

    // Status Variablen
    var sliding        = 0;
    var current_banner = 1;
    var max_banners    = banners.length;

    // Funktion das neues image einslidet oder zum ersten zurück slidet
    // wenn es schon am ende angelangt ist
    var next_image = function(){
        // Wenn derzeit schon geslidet wird, dann ignorieren
        if ( sliding ) { return }
        else           { sliding = 1 }

        // Nächstes Bild einsliden wenn es geht
        if ( current_banner < max_banners ) {
            // Counter erhöhen
            current_banner++;
            // Nächstes Bild einsliden
            dojox.fx.slideBy({
                node:    'slide_images',
                duration: slide_duration,
                top:      0,
                left:     -image_width,
                onEnd:    function(){
                    sliding = 0;
                }
            }).play();
            // Neuen Text setzen
            var banner = banners[current_banner-1];
            dojo.html.set(dojo.byId('slide_title'), banner.title);
            dojo.html.set(dojo.byId('slide_text'),  banner.teaser);
			if ( banner.link.match(/^##Kein Link/) ) { 		
				dojo.attr('slide_button', 'style', { "display" : "none" } );		
			} else {
				dojo.attr('slide_button', 'style', { "display" : "block" } );						
				dojo.attr('slide_button', 'href', banner.link);
			}

        }
        // ansonsten zurück zum ersten bild
        else {
            var pixel_to_move = (current_banner - 1) * image_width;
            current_banner    = 1;

            // Nächstes Bild einsliden
            dojox.fx.slideBy({
                node:    'slide_images',
                duration: slide_duration,
                top:      0,
                left:     pixel_to_move,
                onEnd:    function(){
                    sliding = 0;
                }
            }).play();
            // Neuen Text setzen
            var banner = banners[current_banner-1];
            dojo.html.set(dojo.byId('slide_title'), banner.title);
            dojo.html.set(dojo.byId('slide_text'),  banner.teaser);
			if ( banner.link.match(/^##Kein Link/) ) { 		
				dojo.attr('slide_button', 'style', { "display" : "none" } );		
			} else {
				dojo.attr('slide_button', 'style', { "display" : "block" } );										
				dojo.attr('slide_button', 'href', banner.link);
			}

        }
    }

    // Funktion das vorheriges Bild einslidet oder zum letzten bild
    // slidet wenn es schon am anfang ist
    var prev_image = function(){
        // Wenn derzeit schon geslidet wird, dann ignorieren
        if ( sliding ) { return }
        else           { sliding = 1 }

        // Vorheriges Bild einsliden
        if ( current_banner > 1 ) {
            current_banner--;
            dojox.fx.slideBy({
                node:    'slide_images',
                duration: slide_duration,
                top:      0,
                left:     image_width,
                onEnd:    function(){
                    sliding = 0;
                }
            }).play();
            // Neuen Text setzen
            var banner = banners[current_banner-1];
            dojo.html.set(dojo.byId('slide_title'), banner.title);
            dojo.html.set(dojo.byId('slide_text'),  banner.teaser);
			if ( banner.link.match(/^##Kein Link/) ) { 		
				dojo.attr('slide_button', 'style', { "display" : "none" } );		
			} else {
				dojo.attr('slide_button', 'style', { "display" : "block" } );										
				dojo.attr('slide_button', 'href', banner.link);
			}

        }
        // ansonsten zurück zum letzten Bild springen
        else {
            var pixel_to_move = (max_banners - 1) * image_width;
            current_banner    = max_banners;

            // Nächstes Bild einsliden
            dojox.fx.slideBy({
                node:    'slide_images',
                duration: slide_duration,
                top:      0,
                left:     -pixel_to_move,
                onEnd:    function(){
                    sliding = 0;
                }
            }).play();
            // Neuen Text setzen
            var banner = banners[current_banner-1];
            dojo.html.set(dojo.byId('slide_title'), banner.title);
            dojo.html.set(dojo.byId('slide_text'),  banner.teaser);
			if ( banner.link.match(/^##Kein Link/) ) { 		
				dojo.attr('slide_button', 'style', { "display" : "none" } );		
			} else {
				dojo.attr('slide_button', 'style', { "display" : "block" } );										
				dojo.attr('slide_button', 'href', banner.link);
			}

        }
    }

    // Vor & Zurück Button mit Events versehen
    dojo.connect(dojo.byId('move_right_button'), 'onclick', null, next_image);
    dojo.connect(dojo.byId('move_left_button'),  'onclick', null, prev_image);

    // Nächstes Bild Periodisch neu aufrufen
    var auto_function = function() {
        next_image();
        window.setTimeout(auto_function, auto_slide);
    }
    window.setTimeout(auto_function, auto_slide);
});

