var Site = {
    // This function must list all pages for the sidebar menu.
    addMenuPages: function()
    {
        Site.addMenuPage("sissejuhatus", "index.html");
        Site.addMenuPage("tõmmise kirjutamine plaadile", "isokirjutamine.html");
        Site.addMenuPage("paigaldamine", "paigaldamine.html");
        Site.addMenuPage("Kickoff menüü", "menu.html");
        Site.addMenuPage("töölaud", "toolaud.html");
        Site.addMenuPage("tegumiriba", "tegumihaldur.html");
        Site.addMenuPage("uuenduste tõmbamine", "uuendamine.html");
        Site.addMenuPage("tarkvara haldamine", "tarkvara.html");
        Site.addMenuPage("internet", "internet.html");
        Site.addMenuPage("graafika", "graafika.html");
        Site.addMenuPage("arvuti seadistamine", "seadistamine.html");
        Site.addMenuPage("kuva seadistamine", "kuva.html");
        Site.addMenuPage("failihaldur Dolphin", "dolphin.html");
        Site.addMenuPage("kasutajate haldamine", "kuser.html");
        Site.addMenuPage("töölaua efektid", "toolauaefektid.html");
        Site.addMenuPage("tööriistad", "tooriistad.html");
        Site.addMenuPage("muusikamängija Amarok", "amarok.html"); 
        Site.addMenuPage("videode vaatamine", "video.html");
        Site.addMenuPage("KMail", "kmail.html");       
        Site.addMenuPage("CD/DVD kirjutamine", "k3b.html");
        Site.addMenuPage("Digikam", "digikam.html");
        Site.addMenuPage("kiirsuhtlemine", "kopete.html");
        Site.addMenuPage("kontoritarkvara", "kontoritoo.html");
        Site.addMenuPage("Skype", "skype.html");
        Site.addMenuPage("töölaua pildistamine", "pildistamine.html");
        Site.addMenuPage("süsteemi jälgija", "system.html");
        Site.addMenuPage("arvuti väljalülitamine", "valjumine.html");
    },


    start: function()
    {
        // Phase 1: build the general structure of the page
        Site.body = $("body");

        // Create a wrapper element. Everything else will go into the wrapper.
        Site.wrapper = new Element("div", { id: "wrapper" });
        Site.body.adopt(Site.wrapper);

        // Header
        Site.header = new Element("div", { id: "header" });
        Site.headerText = new Element("h1", { html: "Estobuntu juhend" })
        Site.header.adopt(Site.headerText);
        Site.wrapper.adopt(Site.header);

        // Create sidebar
        Site.sidebar = new Element("div", { id: "sidebar" });
        Site.wrapper.adopt(Site.sidebar);

        // Create content area
        Site.content = new Element("div", { id: "content" });
        Site.wrapper.adopt(Site.content);

        // Footer
        Site.footer = new Element("div", { id: "footer" });
        Site.wrapper.adopt(Site.footer);
        // Status area
        Site.statusArea = new Element("div", { id: "statusArea" });
        Site.statusArea.set("style", "display: none");
        Site.footer.adopt(Site.statusArea);

        Site.dbg("Page built");
        Site.dbg("URL is '" + document.URL + "'");


        // Phase 2: create the dynamic content
        // Reparent static content (if any)
        if ($("sisu")) {
            Site.content.adopt($("sisu"));
        }
        // Add pages to the sidebar menu
        Site.sidebarMenu = new Element("div", { id: "sidebarMenu" });
        Site.sidebar.adopt(Site.sidebarMenu);
        Site.addMenuPages();

        // Collect the slides
        Site.collectSlides();

        // Create slideshow version of the page
        // Wrapper
        Site.singleImageWrapper = new Element("div", { id: "pageStyleSingle" });
        Site.singleImageWrapper.set("style", "display: none");
        Site.content.adopt(Site.singleImageWrapper);
        // Image area
        Site.image = new Element("div", { id: "image" });
        Site.singleImageWrapper.adopt(Site.image);
        // Create buttons area
        Site.buttonsArea = new Element("div", { id: "buttonsArea" });
        Site.singleImageWrapper.adopt(Site.buttonsArea);
        // Text area
        Site.textArea = new Element("div", { id: "textArea" });
        Site.singleImageWrapper.adopt(Site.textArea);
        if (Site.picArray.length > 0) {
            // Populate the buttonarea
            // Previous button
            var button = new Element("a", { "href": "#", "html": "< Eelmine", "class": "image-button" });
            button.addEvent("click", Site.selectImagePrevious)
            Site.buttonsArea.adopt(button);
            // Individual buttons
            for (var i = 0; i < Site.picArray.length; i++) {
                var button = new Element("a", { "href": "#", "html": (i+1), "class": "image-button", "pic-id": i, "id": "button-"+i });
                button.addEvent("click", Site.selectImageByElement)
                Site.buttonsArea.adopt(button);
            }
            // Next button
            var button = new Element("a", { "href": "#", "html": "Järgmine >", "class": "image-button" });
            button.addEvent("click", Site.selectImageNext)
            Site.buttonsArea.adopt(button);

            // Select the first image
            Site.currentImageIndex = 0;
            Site.selectImage(0);
        }

        // Create serialized version of the page
        // Wrapper
        Site.serializedWrapper = new Element("div", { id: "pageStyleSerial" });
        Site.serializedWrapper.set("style", "display: none");
        Site.content.adopt(Site.serializedWrapper);
        // Content
        for (var i = 0; i < Site.picArray.length; i++) {
            var slide = new Element("div", { class: "serialSlideWrapper" });
            Site.serializedWrapper.adopt(slide);

            var imageLink = new Element("a", { href: "originals/" + Site.picArray[i]["origimage"], target: "_blank" });
            imageLink.adopt(new Element("img", { class: "serialSlideImage", src: "images/" + Site.picArray[i]["image"] }));
            slide.adopt(imageLink);
            slide.adopt(new Element("div", { class: "serialSlideText", html: Site.picArray[i]["text"]}));
            Site.serializedWrapper.adopt(new Element("br", { style: "clear: both" }));
        }

        // Create page style chooser
        Site.pageStyleChooser = new Element("div", { id: "pageStyleChooser" });
        Site.sidebar.adopt(Site.pageStyleChooser);
        var styleLink = new Element("a", { id: "pageStyleLinkSingle", class: "pageStyleLink", html: "Näita korraga ühte pilti", href: "#" });
        styleLink.addEvent("click", Site.selectPageStyle.bind(null, "Single"));
        Site.pageStyleChooser.adopt(styleLink);
        styleLink = new Element("a", { id: "pageStyleLinkSerial", class: "pageStyleLink", html: "Näita korraga kõiki pilte", href: "#" });
        styleLink.addEvent("click", Site.selectPageStyle.bind(null, "Serial"));
        Site.pageStyleChooser.adopt(styleLink);

        Site.currentStyle = null;
        var newstyle = Cookie.read("eb-manual-pagestyle");
        if (newstyle == null) {
            newstyle = "Single";
        }
        Site.selectPageStyle(newstyle);
    },

    addMenuPage: function(text, target)
    {
        // Create a version of the text which has the first character capitalized.
        var textCap = text.charAt(0).toUpperCase() + text.substr(1);
        // Create the sidebar link
        var link = new Element("a", { "href": target, "html": textCap, "class": "menu-item" })
        Site.sidebarMenu.adopt(link);

        // If this is the current page, then also add a special class to the link and modify header and page title.
        if (document.URL.indexOf("/" + target) != -1) {
            link.addClass("menu-item-selected");

            document.title = "Estobuntu juhend - " + text;
            Site.headerText.appendText(" - " + text);
        }
    },

    dbg: function(text)
    {
        Site.statusArea.set("html", Site.statusArea.get("html") + text + "<br />");
    },

    addPic: function(originalimagefile, description)
    {
        imagefile = originalimagefile.replace(".png", ".jpg");
        Site.picArray.push({ "image": imagefile, "origimage": originalimagefile, "text": description });
    },

    selectImageByElement: function()
    {
        Site.selectImage(parseInt(this.get("pic-id")));
        return false;
    },
    selectImagePrevious: function()
    {
        Site.dbg("Site.selectImagePrevious() called");
        Site.selectImage(Site.currentImageIndex - 1);
        return false;
    },
    selectImageNext: function()
    {
        Site.dbg("Site.selectImageNext() called");
        Site.selectImage(Site.currentImageIndex + 1);
        return false;
    },

    selectImage: function(index)
    {
        Site.dbg("Click on button for image " + index);
        if (index < 0 || index >= Site.picArray.length) {
            Site.dbg("Index out of range, ignoring");
            return;
        }

        var imgname = Site.picArray[index]["image"];
        var origimgname = Site.picArray[index]["origimage"];
        Site.dbg("Image name is " + imgname);
        Site.image.set("html", "<a href=\"originals/" + origimgname + "\" target=\"_blank\"><img class=\"screenshot\" src=\"images/" + imgname + "\" /></a>");

        Site.textArea.set("html", Site.picArray[index]["text"]);

        $("button-" + Site.currentImageIndex).removeClass("image-button-selected");
        $("button-" + index).addClass("image-button-selected");

        Site.currentImageIndex = index;
    },

    collectSlides: function()
    {
        var slides = $$(".juhend");
        Site.dbg("Found " + slides.length + " slides");

        for (var i = 0; i < slides.length; i++) {
            addPic(slides[i].get("img"), slides[i].get("html"));
        }
    },

    selectPageStyle: function(style)
    {
        Site.dbg("Selecting page style " + style);

        if (Site.currentStyle != null) {
            $("pageStyle" + Site.currentStyle).style.display = "none";
            $("pageStyleLink" + Site.currentStyle).removeClass("pageStyleLink-selected");
        }
        $("pageStyle" + style).style.display = "block";
        $("pageStyleLink" + style).addClass("pageStyleLink-selected");
        
        Site.currentStyle = style;
        Cookie.write("eb-manual-pagestyle", style);
    },


    picArray: new Array()
}


function addPic(imagefile, description)
{
    Site.addPic(imagefile, description);
}

window.addEvent('domready', Site.start);
