$(document).ready(function () {

    //set key events
    document.onkeydown = function (evt) {
        evt = evt || window.event;
        switch (evt.keyCode) {
            //close viewer on escape      
            case 27:
                viewerClose();
                break;
            //prevent ctrl, alt 
            case 17:
            case 18:
                copyrightMessage();
                return false;
                break;
        }
    };

    //get site settings
    settingsGet();

    //window resize
    $(window).resize(function () {
        contentSize();
    });

    //add mouseover title to viewer close button
    $(".viewerClose").attr("title", "use ESC key to close");

});

//variables and defaults
var siteSettings;
var currentPage = -1;
var currentDirection = "left";

function contentSize() {
    var menuHeight = $(".siteMenu" + siteSettings.menuLocation).height();
    if (siteSettings.menuLocation == "Vertical") menuHeight = 0;

    $(".background")
        .height($(window).height());

    $(".background, .header, .footer")
        .width($(window).width());

    $(".contentContainer, .contentWindow, .siteMenuVerticalContainer")
        .height($(window).height() - $(".header").height() - $(".footer").height());

    $(".siteMenuVerticalContainer, .contentContainer")
        .css("top", $(".header").height() + "px");

    if ($(".backgroundImage").attr("src") != "") {
        backgroundImageDisplay($(".backgroundImage").attr("src"));
    }

    //detect vertical scrollbar
    $(".contentColumn1").css("padding-left", "0px");
    if ($(".contentBody").height() > $(".contentContainer").height()) {
        $(".contentColumn1").css("padding-left", "10px");
    }

    //vertical menu test
    if (siteSettings.menuLocation == "Vertical") {
        //if vertical menu would overlap content
        if ((($(window).width() - $(".contentWindow").width()) / 2) < $(".siteMenuVertical").width()) {
            $(".contentContainer")
            .width($(window).width() - $(".siteMenuVertical").width());
            $(".siteMenuVerticalContainer")
            .width($(".siteMenuVertical").width());
        } else {
            $(".siteMenuVerticalContainer")
            .width(($(window).width() - $(".contentWindow").width()) / 2);
        }
    }

    //detect horizontal scrollbar
    if ($(".contentWindow").width() > $(".contentContainer").width()) {
        $(".contentWindow").width($(".contentContainer").width() - 20);
    } else {
        $(".contentWindow").width(800);
    }
}

function contentAdd(title, column1, column2, column3, column4, fadeIn) {
    //reset height and width of first column
    $(".contentColumn1").css("width", "");
    $(".contentColumn1").css("height", "");

    //set content html
    $(".contentTitle")
        .html(title);
    $(".contentColumn")
        .hide().html("");
    if (column1 != null && column1 != "") {
        $(".contentColumn1").show().html(column1).css("width", "");
    }
    if (column2 != null && column2 != "") {
        $(".contentColumn2").show().html(column2);
        $(".contentColumn").css("width", "50%");
    }
    if (column3 != null && column3 != "") {
        $(".contentColumn3").show().html(column3);
        $(".contentColumn").css("width", "33%");
    }
    if (column4 != null && column4 != "") {
        $(".contentColumn4").show().html(column3);
        $(".contentColumn").css("width", "25%");
    }

    //show content
    $(".contentTitle, .contentBody").hide();
    if (fadeIn) {
        if (title != "") $(".contentTitle").fadeIn(1500);
        $(".contentBody").fadeIn(1500);
    } else {
        if (title != "") $(".contentTitle").show();
        $(".contentBody").show();
    }

    //set content size after title is added
    setTimeout(function () {
        contentSize();
    }, 500);
}

function nextMenuItem() {
	$("#divPage" + (parseInt(currentPage) + 1)).click();
}

function prevMenuItem() {
	currentDirection = "right";
	$("#divPage" + (parseInt(currentPage) - 1)).click();
	currentDirection = "left";
}

function menuGet() {
    $.ajax({
        type: "POST",
        url: "default.aspx/pageGet",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            //set array for common use
            pages = result.d;
            //display menu
            menuDisplay();
        },
        error: function (xhr) {
            var sError = eval("(" + xhr.responseText + ")");
            alert("(ajax error)" + sError.Message + sError.StackTrace + sError.StackTrace);
        }
    });
}

function settingsGet() {
    $.ajax({
        type: "POST",
        url: "default.aspx/settingsGet",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            //set array for common use
            siteSettings = result.d;

            //set logo
            $(".logo")
            .attr("src", siteSettings.artistImageFolder + "/" + siteSettings.logoImageFile)
            .attr("alt", siteSettings.siteTitle + " (click to return to home page)")
            .attr("title", siteSettings.siteTitle + " (click to return to home page)")
            .click(function () {
                $("#divPage0").click();
            });

            //set site background image
            if (siteSettings.backgroundImageFile != "") backgroundImageDisplay(siteSettings.artistImageFolder + "/" + siteSettings.backgroundImageFile);

            //display menu
            menuGet();

            //set footer content
            $(".footerContent").html("All content &copy; " + siteSettings.artistName + ". All rights reserved.");
        },
        error: function (xhr) {
            var sError = eval("(" + xhr.responseText + ")");
            alert("(ajax error)" + sError.Message + sError.StackTrace + sError.StackTrace);
        }
    });
}

function menuDisplay() {
    var timeDelay = 0;

    //show menu
    $(".siteMenu" + siteSettings.menuLocation).show();

    $.each(pages, function (index, page) {
        //increase time delay
        if (page.menuText != null) timeDelay += 200;

        //add menu item
        var menuItem = page.menuText;
        if (page.menuImageFile != "") menuItem = "<img id=\"imgPage" + index + "\" src=\"" + siteSettings.artistImageFolder + "/" + page.menuImageFile + "\" alt=\"" + page.menuText + "\" />";
        $(".siteMenu" + siteSettings.menuLocation).html($(".siteMenu" + siteSettings.menuLocation).html() + "<div id=\"divPage" + index + "\" class=\"siteMenuItem\">" + menuItem + "</div>");
        $("#divPage" + index).hide();

        //apply mouseover, fadein, and click event
        setTimeout(function () {
            $("#divPage" + index).click(function () {
                //set doc title
                document.title = siteSettings.siteTitle + " - " + page.title;

                //set current page
                currentPage = index

                //stop slide show
                if (imageSlideShowPlay) imageSlideShowToggle();
                //hide content slide show
                $(".contentSlideShow").hide();

                //hide other viewers
                $(".imageViewer").hide();

                //set background image
                if (page.backgroundImageFile != "") backgroundImageDisplay(siteSettings.artistImageFolder + "/" + page.backgroundImageFile);

                //book
                switch (page.type) {
                    case "book":
                        //open book
                        bookGet();
                        break;

                    case "images":
                        //show image categories
                        imageCategoryDisplay(page.title);
                        break;

                    case "slideshow":
                        //content slide show
                        contentAdd(page.title, page.column1, page.column2, page.column3, page.column4, true);
                        contentSlideShow(-1);
                        break;

                    default:
                        //show content
                        contentAdd(page.title, page.column1, page.column2, page.column3, page.column4, true);
                        break;
                }
            });

            //add mouseover
            if (page.menuHoverImageFile != "") {
                $("#imgPage" + index)
                    .hover(
                        function () { $(this).attr("src", siteSettings.artistImageFolder + "/" + page.menuHoverImageFile) },
                        function () { $(this).attr("src", siteSettings.artistImageFolder + "/" + page.menuImageFile) })
            } else {
                $("#divPage" + index)
                    .hover(
                        function () { menuItemMouseover($(this)); },
                        function () { menuItemMouseout($(this)); });
            }

            //fade in menu item
            if (page.menuText != null) $("#divPage" + index).fadeIn(500);

        }, timeDelay);

    });

    //display first page
    setTimeout(function () {
        $(".logo").click();
    }, timeDelay);

    //resize content as items are displayed
    setTimeout(function () { contentSize(); }, 200);

}

function menuItemMouseover(obj) {
	$(obj).stop(true,true).addClass("highlight");
}

function menuItemMouseout(obj) {
    $(obj).stop(true, true).removeClass("highlight");
}

function backgroundImageDisplay(image) {
    //add background image
    $(".background").html("<img class=\"backgroundImage\" src=\"" + image + "\" />");

    //wait until image is loaded
    $(".backgroundImage").load(function () {
        //get image size
        var imageWidth = this.width;
        var imageHeight = this.height;

        //width proportion is larger
        if ((imageWidth / $(window).width()) > (imageHeight / $(window).height())) {
            $(".backgroundImage").css("width", $(window).width() + "px");
        } else {
            $(".backgroundImage").css("width", $(window).width() + "px");
        }
    });
}
