﻿
var ViewManager = new Object();
ViewManager.defaultViewId;
ViewManager.documentTitleFormat;
ViewManager._hash;
ViewManager._hashIntervalId;
ViewManager._readyFunctions = new Array();

ViewManager.activate = function (viewId, hyperlink) {
    if (!ViewManager.hasParent(viewId)) {
        ViewManager.setLocationHash(viewId);
        ViewManager.setDocumentTitle(viewId);
        ViewManager.scrollToTop();
    }

    ViewManager.unselectAllMenuItems(viewId);
    ViewManager.hideAllContent(viewId);
    ViewManager.selectMenuItem(viewId);
    ViewManager.showView(viewId);
    ViewManager.activateParent(viewId);
};

ViewManager.activateParent = function (viewId) {
    var parents = ViewManager.getParents(viewId);
    if (parents.length == 0) return;
    var parent = parents[0];

    if (!parents.is(":visible")) {
        var parentId = parent.attr("id");
        ViewManager.activate(parentId);
    }
}

ViewManager.getParents = function (viewId) {
    return ViewManager.getView(viewId).parents("li");
};

ViewManager.getView = function(viewId) {
    return $("li#" + viewId);
};

ViewManager.getViewByHash = function() {
    var viewId = location.hash.substring(1, location.hash.length);
    if (viewId.length == 0) viewId = ViewManager.defaultViewId;
    return ViewManager.getView(viewId);
};

ViewManager.hasParent = function(viewId) {
    return ViewManager.getParents(viewId).length > 0;
};

ViewManager.hideAllContent = function(viewId) {
    ViewManager.getView(viewId).parent("ul").find("> li").hide();
};

ViewManager.ready = function(handler) {
    if ($.isFunction(handler)) {
        ViewManager._readyFunctions.push(handler);
    }
    else {
        $(ViewManager._readyFunctions).each(function() {
            this();
        });
    }
};

ViewManager.scrollToTop = function() {
    $("html, body").animate({ scrollTop: 0 }, "fast");
};

ViewManager.selectMenuItem = function (viewId) {
    var selector = "ul.menu li a." + viewId;
    $(selector).addClass("selected");
};

ViewManager.setDocumentTitle = function(viewId) {
    document.title = ViewManager.documentTitleFormat + ViewManager.getView(viewId).attr('title');
};

ViewManager.setLocationHash = function(viewId) {
    if (ViewManager._hashIntervalId != null)
        clearInterval(ViewManager._hashIntervalId);

    if (viewId == ViewManager.defaultViewId) {
        if (ViewManager._hash)
            location.hash = "";
    }
    else {
        var view = ViewManager.getView(viewId);
        view.attr("id", "");
        location.hash = "#" + viewId;
        view.attr("id", viewId);
    }

    ViewManager._hash = location.hash;

    ViewManager._hashIntervalId = setInterval(function() {
        if (location.hash != ViewManager._hash) {
            var view = ViewManager.getViewByHash();

            if (view.length > 0) {
                viewId = view.attr("id");
                ViewManager.activate(viewId);
            }
        }
    }, 100);
};

ViewManager.showView = function(viewId) {
    ViewManager.getView(viewId).fadeIn();
};

ViewManager.unselectAllMenuItems = function (viewId) {
    var selector = "ul.menu li a." + viewId;
    var ul = $(selector).parents("ul.menu");
    $("> li a", ul).removeClass("selected");
};

$(document).ready(function() {
    ViewManager.ready();
});
var EnquiryManager = new Object();
EnquiryManager._enquiryForm;

EnquiryManager.activateView = function (id) {
    var view = ViewManager.getView("ContactTheCelebrant");
    $("ul.multiview > li", view).hide();
    $("#" + id).show();
    ViewManager.scrollToTop();
};

EnquiryManager.init = function () {
    var view = ViewManager.getView("ContactTheCelebrant");

    view.find('.javascript-required').hide();

    EnquiryManager._enquiryForm = $("form", view);
    EnquiryManager.activateView("enquiryForm");

    var referrerOther = $("label[for=referrerOther], input[name=referrerOther]", EnquiryManager._enquiryForm).parent();
    referrerOther.hide();

    $("select[name=referrer]", EnquiryManager._enquiryForm).change(function callback() {
        if ($(this).val() == "Other")
            referrerOther.slideDown();
        else
            referrerOther.slideUp();
    });

    view.find("input[type=button]").click(function() {
        EnquiryManager.sendEnquiry();
    });
};

EnquiryManager.sendEnquiry = function () {

    if (!EnquiryManager.validate())
        return false;

    $.ajax({
        type: "POST",
        url: "send_enquiry",
        data: $("input, select, textarea", EnquiryManager._enquiryForm).serialize(),
        success: function (data) {
            EnquiryManager.activateView("enquirySuccess");
        },
        error: function () {
            EnquiryManager.activateView("enquiryError");
        }
    });

    return true;
};

EnquiryManager.validate = function () {

    var validationSummary = $("div.validation-summary", EnquiryManager._enquiryForm);
    var validationMessages = new Array();

    if (!EnquiryManager.validateContactDetails()) {
        validationMessages.push("Please provide either a phone number or email address.");
    }

    if (!EnquiryManager.validateEmail()) {
        validationMessages.push("Please provide a valid email address.");
    }

    if (!EnquiryManager.validateMessage()) {
        validationMessages.push("Please provide a message.");
    }

    if (validationMessages.length > 0) {
        validationSummary.html(validationMessages.join("<br />"));
        ViewManager.scrollToTop();
        return false;
    }
    else {
        validationSummary.html("");
        return true;
    }
};

EnquiryManager.validateEmail = function () {
    var email = $.trim($("input[name=email]", EnquiryManager._enquiryForm).val());

    if (email == "") {
        return true;
    }
    else {
        var re = new RegExp("\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
        return email.match(re);
    }
};

EnquiryManager.validateMessage = function () {
    var message = $.trim($("textarea[name=message]", EnquiryManager._enquiryForm).val());
    return message != "";
};

EnquiryManager.validateContactDetails = function () {
    var phone = $.trim($("input[name=phone]", EnquiryManager._enquiryForm).val());
    var email = $.trim($("input[name=email]", EnquiryManager._enquiryForm).val());
    return phone != "" || email != "";
};


ViewManager.ready(function () {

    $("a").each(function (index, link) {
        if ($(link).attr("href") == undefined) {
            var viewId = $(link).attr("class");

            if (viewId != '') {
                $(link).click(function () {
                    ViewManager.activate(viewId, link);
                });

                var view = ViewManager.getView(viewId); // issue here

                if (view.length > 0 && $(link).html() == '')
                    $(link).html(view.attr('title'))
            }
        }
    });

    ViewManager.defaultViewId = "Home";
    var viewId = location.hash.length == 0 ? ViewManager.defaultViewId : ViewManager.getViewByHash().attr("id");
    ViewManager.documentTitleFormat = "Jim Noonan - Civil Marriage Celebrant, Melbourne - ";

    var readingId = "LoveOneAnother";
    ViewManager.hideAllContent(readingId);
    ViewManager.selectMenuItem(readingId)
    ViewManager.showView(readingId);

    EnquiryManager.init();


    var load = function () {
        $("#nav").slideDown("slow");
        ViewManager.activate(viewId);
    };

    $.preload(["/images/main_background.jpg", "/images/shadow_left.gif", "/images/shadow_right.gif", "/images/menu_background.png", "/images/readings_menu_background.png"], {
        onFinish: load
    });

    $("a.print").show();
});

function loadBlog() {
    var feed = new google.feeds.Feed("http://weddings.jimnoonan.com.au/feeds/posts/default");

    feed.setNumEntries(99);

    feed.load(function (result) {
        if (!result.error) {
            var container = $("#BlogContent");
            container.empty();

            for (var i = 0; i < result.feed.entries.length; i++) {
                var entry = result.feed.entries[i];
                $(container).append("<strong>" + entry["title"] + "</strong><br /><br />");
                $(container).append(entry["content"]);
            }
        }
    });
}
