soundManager.url = "soundmanager/swf/";

$(function() {
    // E-Mailadresse einblenden
    $("#mail_address").html(decode_adress(content.email));

    // Zufälliges Hintergrundbild anzeigen
    var index = Math.min(Math.floor(Math.random() * content.backgrounds.length), content.backgrounds.length);
    $("#bg_title").text(content.backgrounds[index].txt);
    $("#content").css("background-image", "url(" + content.backgrounds[index].url + ")");

    // Logo einbinden
    $("#logo").html("<img src='" + content.logo.url + "' alt='" + content.logo.txt + "' onclick='hide_content()'/>");

    function resize_overlay_area() {
        var needed_space = Math.min($("#address").position().top, $("#logo").position().top);
        var new_bottom = $("#content").height() - needed_space;
        $("#content .overlay .text").css("margin-bottom", new_bottom);
    }

    $(window).resize(resize_overlay_area);
    resize_overlay_area();

    // Playlist für Demosongs aufbauen
    var playlist_html = "";

    $.each(content.soundfiles, function(index, entry) {
        playlist_html += "<li class='sound nr_" + index + "'><span onclick='play_sound(" + index + ")'>" + entry.txt + "</span></li>";
    });

    $("#musicplayer .playlist").html(playlist_html);

    // Soundmanager starten. soundManager.url wird außerhalb dieser Funktion
    // zugewiesen, um ein Ablaufproblem im Internet Explorer zu umgehen, da
    // sowohl Soundmanager als auch diese Funktion bei DOM READY laufen.
    var debugSound = false;
    stop_sound();

    // soundManager.url = "soundmanager/swf/";
    soundManager.flashLoadTimeout = 3000;
    soundManager.useFlashBlock = true;
    soundManager.useHTML5Audio = false;

    if (debugSound) {
        soundManager.debugMode = true;
        soundManager.consoleOnly = false;
        $("#soundmanager-debug").css("display", "block");
    }

    // Menü aufbauen
    var menu_html = "";
    var row_amount = 0;
    var max_per_row = 2;
    var default_page = 0;

    $.each(content.menu, function(index, entry) {
        row_amount++;

        if (row_amount > max_per_row) {
            menu_html += "<br/><br/>";
            row_amount = 0;
        }

        menu_html += "<img src='" + entry.img + "' "
                  +  "alt='" + entry.txt + "' "
                  +  "onmouseover='on_menu_hover(" + index + ")' "
                  +  "onmouseout='clear_menu_text()' "
                  +  "onclick='on_menu_clicked(" + index + ")'/>"
                  +  "&nbsp;&nbsp;"

        if (entry.def) {
            default_page = index;
        }
    });

    $("#menu .entries").html(menu_html);
    clear_menu_text();
    on_menu_clicked(default_page);

    // Setlist sortieren
    $.each(content.setlist, function(index, section) {
        section.songs = section.songs.sort(function (a, b) {
            if (a[0] < b[0]) {
                return -1;
            } else if (a[0] > b[0]) {
                return 1;
            } else {
                if (a[1] < b[1]) {
                    return -1;
                } else if (a[1] > b[1]) {
                    return 1;
                } else {
                    return 0;
                }
            }
        });
    });
});

// Hilfsfunktionen für das Menü
function on_menu_hover(index) {
    $("#menu .text").text(content.menu[index].txt);
}

function clear_menu_text() {
    $("#menu .text").text("");
}

function on_menu_clicked(index) {
    if (content.menu[index].typ == "link") {
        window.open(content.menu[index].url);
    } else if (content.menu[index].typ == "mail") {
        decode_and_link_to(content.menu[index].url);
    } else if (content.menu[index].typ == "text") {
        var fetch_url = document.URL.slice(0, document.URL.lastIndexOf("/")) + "/" + content.menu[index].url;

        $.ajax(fetch_url, {
            isLocal: true,
            mimeType: "text/html",
            success: function(data, status, xhr) {
                var overlay_img = $("#content .overlay");
                var overlay_txt = $("#content .overlay .text");

                var css_overflow = overlay_txt.css("overflow");
                overlay_txt.css("overflow", "hidden");

                overlay_img.slideUp("slow", function() {
                    overlay_txt.html(data);
                    overlay_img.slideDown("slow", function() {
                        overlay_txt.css("overflow", css_overflow);
                    });
                });
            }
        });
    }
}

function hide_content() {
    var overlay_img = $("#content .overlay");
    var overlay_txt = $("#content .overlay .text");

    var css_overflow = overlay_txt.css("overflow");
    overlay_txt.css("overflow", "hidden");

    overlay_img.slideUp("slow", function() {
        overlay_txt.css("overflow", css_overflow);
    });
}

// Hilfsfunktionen für den Demoplayer
var playing_sound = null;

function play_sound(index) {
    stop_sound();
    if (! content.soundfiles[index]) { return; }

    $("#musicplayer .stop").addClass("active");
    $("#musicplayer .stop").removeClass("inactive");
    $("#musicplayer .sound.nr_" + index).addClass("selected");

    var time_window = $("#musicplayer .playtime");

    playing_sound = soundManager.createSound({
        id: "snd_" + (index + 1),
        url: content.soundfiles[index].url,
        whileplaying: function() {
            if (time_window) {
                var pos_min = Math.floor(playing_sound.position / 1000 / 60);
                var pos_sec = Math.floor(playing_sound.position / 1000) - (pos_min * 60);
                var dur_min = Math.floor(playing_sound.duration / 1000 / 60);
                var dur_sec = Math.floor(playing_sound.duration / 1000) - (dur_min * 60);

                if (pos_min < 10) { pos_min = "0" + String(pos_min); }
                if (pos_sec < 10) { pos_sec = "0" + String(pos_sec); }
                if (dur_min < 10) { dur_min = "0" + String(dur_min); }
                if (dur_sec < 10) { dur_sec = "0" + String(dur_sec); }

                time_window.text(pos_min + ":" + pos_sec + " von " + dur_min + ":" + dur_sec);
            }
        },
        onfinish: function() {
            play_sound(index + 1);
        }
    });

    if (playing_sound) {
        playing_sound.play();
        $("#musicplayer .error").css("display", "none");
        $("#musicplayer .playtime").css("display", "block");
    } else {
        stop_sound();
        $("#musicplayer .error").css("display", "block");
        $("#musicplayer .playtime").css("display", "none");
    }
}

function stop_sound() {
    $("#musicplayer .stop").addClass("inactive");
    $("#musicplayer .stop").removeClass("active");
    $("#musicplayer .sound").removeClass("selected");
    $("#musicplayer .playtime").text("--:-- von --:--");

    if (playing_sound) {
        playing_sound.stop();
        playing_sound = null;
    }
}

// Hilfsfunktion für die Bilder- und Repertoireseiten
function print_photos() {
    var photos_html = "";

    $.each(content.photos, function(index, entry) {
        photos_html +=  "<img src='" + entry + "'/> &nbsp; &nbsp;"
    });

    var overlay_txt = $("#content .overlay .text");
    overlay_txt.html(overlay_txt.html() + photos_html);
}

function print_setlist() {
    var setlist_html = "<table style='border-width: 0;'>";

    $.each(content.setlist, function(index, section) {
        setlist_html += "<tr>"
                     +  "<td colspan='2'>";

        if (index > 0) {
            setlist_html += "<br/>";
        }

        setlist_html += "<h3>" + section.title + "</h3>"
                     +  "</td>"
                     +  "</tr>";

        $.each(section.songs, function(index, song) {
            setlist_html += "<tr>"
                         +  "<td>" + song[0] + "&nbsp; &nbsp; </td>"
                         +  "<td>" + song[1] + "&nbsp; &nbsp; </td>"
                         +  "</tr>";
        });
    });

    setlist_html += "</table>";
    var overlay_txt = $("#content .overlay .text");
    overlay_txt.html(overlay_txt.html() + setlist_html);
}

