﻿var itemDialog;

$(document).ready(function() {
    // Set partial parameter for AJAX tabs.
    $(".menu-kind li a:not(.current-menu-kind)").each(function() {
        $(this).attr("href", $(this).attr("href").replace("Restaurants/Menu", "Partials/RestaurantMenu") + "?Language=" + $("html").attr("lang"));
    });

    var queryString = new QueryString($("[src*='RestaurantMenu.js']").attr("src"));
    //tabs.tabs("select", parseInt(queryString.SelectedTab));

    var temp = $("#restaurant-menu-tabs");
    if (temp.length > 0) {
        tabs = temp.tabs({
            cache: true,
            selected: queryString.SelectedTab,
            load: function(event, ui) {
                HandleTabAdd($(ui.panel));
            }
        });

        tabs.prepend($("<div></div>").attr("id", "open-close-all").html($("<a></a>").attr("href", "#open-all").text($("#OpenAllText").val()).click(function(e) {
            e.preventDefault();
            $(".menu-category + div").each(function(index, elem) {
                EnsureCategoryContentAvailable($(this));
                $(this).slideDown();
            });
        })).append($("<a></a>").attr("href", "#close-all").text($("#CloseAllText").val()).click(function(e) {
            e.preventDefault();
            $(".menu-category + div").slideUp();
        })));

        // AJAX item form stuff
        $("body").append($("<div id=\"item-dialog\"></div>").attr("title", $("#AddItemTitle").val()));

        itemDialog = $("#item-dialog").dialog({
            autoOpen: false,
            modal: true,
            minWidth: 750,
            maxWidth: 1000,
            width: 750,
            minHeight: 300,
            position: ["center", 40]
        });

        HandleTabAdd($(".menu-kind-panel"));
    }
});

function HandleTabAdd(panel) {
    panel.addClass("menu-kind-panel");
    // For togglers and shit
    panel.find(".menu-items").hide();

    panel.find("[id^='title-']").click(function() {
        var element = $(this);
        var idName = element.attr("id");
        var id = idName.replace("title-", "");

        var subElement = $("#" + id);
        EnsureCategoryContentAvailable(subElement);
        subElement.slideToggle();
    });

    panel.find(".menu-category img").lightbox();
}

function EnsureCategoryContentAvailable(subElement) {
    if (subElement.find("input[name='AjaxUrl']").length > 0) {
        var ajaxUrl = subElement.find("input[name='AjaxUrl']").val();

        subElement.html("<img src=\"/Content/Images/Jquery.Lightbox/Loading.gif\" alt=\"...\">");
        $.get(ajaxUrl, {}, function(data, textStatus) {
            subElement.html(data);
            HandleCategoryAdd(subElement);
        });
    }
}

function HandleCategoryAdd(parent) {
    parent.find("img").lightbox();

    parent.find("a.add-item").click(function(e) {
        e.preventDefault();
        itemDialog.dialog("open");
        AjaxItemForm(itemDialog, $(this).attr("href"));
    });
}

function AjaxItemForm(itemDialog, href) {
    itemDialog.html("<img src=\"/Content/Images/Jquery.Lightbox/Loading.gif\" alt=\"...\">");
    var ajaxHref = href.replace("/Add/", "/AjaxAdd/");
    $.get(ajaxHref, {}, function(data, textStatus) {
        itemDialog.html(data);
        HandleRelCancel(itemDialog);
        HandleSubmit(itemDialog);
    });
}

function HandleSubmit(itemDialog) {
    var form = itemDialog.find("form");
    form.attr("action", form.attr("action").replace("/Add/", "/AjaxAdd/"));

    form.ajaxForm({
        success: function(responseText, statusText) {
            if (responseText == "success") {
                itemDialog.dialog("close");
                RefreshOnlineOrder();
            }
            else {
                itemDialog.html(responseText);
                HandleRelCancel(itemDialog);
                HandleSubmit(itemDialog);
            }
        },
        clearForm: false
    });
}

function HandleRelCancel(itemDialog) {
    $("#item-dialog a[rel='cancel']").each(function(e) {
        var element = $(this);
        var button = document.createElement("input");
        button.type = "button";
        button.value = element.html();
        $(button).click(function() {
            itemDialog.dialog("close");
        });
        element.replaceWith(button);
    });
}

function RefreshOnlineOrder() {
    $("#online-order-wrapper-order").prepend("<img src=\"/Content/Images/Jquery.Lightbox/Loading.gif\" alt=\"...\">");
    $("#online-order-wrapper-order").load($("#OnlineOrderPartialUrl").val());
}