function focus(className) {
    var elements = YAHOO.util.Dom.getElementsByClassName(className);
    for (var ec = 0; ec < elements.length; ec++)  { elements[ec].focus(); return true; }
    return false;
}

function pagination() {
    var pageableContainers = YAHOO.util.Dom.getElementsByClassName("pageable");
    for (var pc = 0; pc < pageableContainers.length; pc++) {
        var currentPageableContainer = pageableContainers[pc];
        var pages = YAHOO.util.Dom.getElementsByClassName("page", null, currentPageableContainer);
        if (pages.length > 1) {
            for (var ppc = 1; ppc <= pages.length; ppc++) {
                var currentPage = pages[ppc - 1];
                YAHOO.util.Dom.addClass(currentPage, "pagenumber-" + ppc);
                if (ppc > 1) {
                    YAHOO.util.Dom.setStyle(currentPage, "display", "none");
                }
            }
            var paginator = new YAHOO.widget.Paginator({
                rowsPerPage: 1,
                totalRecords: pages.length,
                template: "{PreviousPageLink} Seite {PageLinks} {NextPageLink}",
                previousPageLinkLabel: "&lt;&lt;",
                nextPageLinkLabel: "&gt;&gt;",
                containers: YAHOO.util.Dom.getElementsByClassName("paginator-widget", null, currentPageableContainer)
                });
            paginator.subscribe("changeRequest", function(newState) {
                var oldPages = YAHOO.util.Dom.getElementsByClassName("pagenumber-" + newState.before.page, null, currentPageableContainer);
                for (var opc = 0; opc < oldPages.length; opc++) { YAHOO.util.Dom.setStyle(oldPages[opc], "display", "none"); }
                var newPages = YAHOO.util.Dom.getElementsByClassName("pagenumber-" + newState.page, null, currentPageableContainer);
                for (var npc = 0; npc < newPages.length; npc++) { YAHOO.util.Dom.setStyle(newPages[npc], "display", "block"); }
                paginator.setState(newState);
                currentPageableContainer.scrollIntoView(true);
                var colorAnim = new YAHOO.util.ColorAnim(currentPageableContainer, { backgroundColor: { from: '#ccc', to: '#fff' } }, 1, YAHOO.util.Easing.easeOut);
                colorAnim.animate();
            });
            paginator.render();
        }
    }
}

function publicationInfos() {
    var publicationContainers = YAHOO.util.Dom.getElementsByClassName("publication-container");
    for (var pc = 0; pc < publicationContainers.length; pc++) {
        var currentPublicationContainer = publicationContainers[pc];
        var textPanels = YAHOO.util.Dom.getElementsByClassName("publication-text-panel", null, currentPublicationContainer);
        for (var tc = 0; tc < textPanels.length; tc++) {
            var textPanel = new YAHOO.widget.Panel(textPanels[tc], { width: "600px", modal: true, fixedcenter: true, visible: false });
            textPanel.render();
            var imageLinks = YAHOO.util.Dom.getElementsByClassName("publication-img-link", null, currentPublicationContainer);
            for (var ic = 0; ic < imageLinks.length; ic++) {
                YAHOO.util.Event.addListener(imageLinks[ic], "click", function(evt, panel) {
                        panel.show();
                        YAHOO.util.Event.preventDefault(evt);
                    }, textPanel);
            }
        }
    }
}

YAHOO.util.Event.onDOMReady(function() {
    var mainMenu = new YAHOO.widget.MenuBar("main-menu", { position: "static", autosubmenudisplay: true });
    mainMenu.render();

    pagination();
    publicationInfos();
    if (!focus("error")) { focus("focus"); }
});