﻿var locations = {
    data: null,
    is_hovering: false,
    drop_down: {
        is_visible: false,
        init: function () {
            this.load_list();
        },
        hide_list: function () {
            $("#branch-list-cont ul").slideUp();
            this.is_visible = false;
        },
        display_list: function () {
            $("#branch-list-cont ul").slideDown();
            this.is_visible = true;
        },
        load_list: function () {
            var that = this;
            $.ajax({
                url: "/controls/branch-locations.xml",
                dataType: "xml",
                success: function (data) {
                    locations.data = data;

                    var list_markup = "";
                    list_markup += "<ul>";
                    var $branches = $("branch", data).each(function () {
                        list_markup += "<li><a href=\"#\" id=\"" + $(this).attr("id") + "\">" + $(this).attr("name") + "<\/a><\/li>";
                    });
                    list_markup += "<\/ul>";
                    $("#branch-list-cont").append($(list_markup));

                    that.set_events();
                }
            });
        },
        set_events: function () {
            var that = this;
            $("#search-button").click(function () {
                if (that.is_visible) {
                    that.hide_list();
                } else {
                    that.display_list();
                }
            });
            $("#branch-list-cont ul").hover(function () {
                that.is_hovering = true;
            },
            function () {
                if (that.is_hovering) {
                    that.hide_list();
                    that.is_hovering = false;
                }
            });
            var area_markup = "";
            $("shape", locations.data).each(function () {
                area_markup += "<area shape=\"" + $(this).attr("type") + "\" href=\"#\" coords=\"" + $(this).attr("coords") + "\" id=\"" + $(this).closest("branch").attr("id") + "\" alt=\"" + $(this).closest("branch").attr("name") + "\" />\n";
            });
            $("#SouthOntario").html(area_markup);

            $("map#SouthOntario area, #branch-list-cont a").click(function (e) {
                e.preventDefault();
                var id = $(this).attr("id");
                $("#branch-info").slideUp(300, function () {
                    locations.load(id, function () {
                        $("#branch-info").slideDown(500, function () {
                            $.scrollTo($("#branch-info"), 300);
                        });
                    });
                });
            });
        }
    },
    load: function (id, callback) {
        if (this.data === null) {
            alert("Data is still loading");
            return false;
        }
        var $branch_data = $("branch[id=" + id + "]", this.data);
        var $branch_elem = $("#branch-info");

        //headings
        $("#branch-name", $branch_elem).html($branch_data.attr("name"));
        if (typeof $branch_data.attr("manager") != 'undefined') {
            $("#manager-name", $branch_elem).html($branch_data.attr("manager"));
            $("#branch-manager-cont").show();
        } else {
            $("#branch-manager-cont").hide();
        }

        //body
        //address
        $("#address", $branch_elem).html($branch_data.children("address").text().replace(/([\w\d])\s*(\n)\s*([\w\d])/g, "$1<br \/>$3"));
        if (typeof $branch_data.children("address").attr("meta") != 'undefined') {
            $("#address-meta", $branch_elem).html("(" + $branch_data.children("address").attr("meta") + ")");
        } else {
            $("#address-meta", $branch_elem).html("");
        }
        //schedule
        var schedule_markup = "";
        var has_restricted_access = false;
        $branch_data.find("hours day").each(function () {
            var restricted_access =
            schedule_markup += "<span class=\"date-range\">" + $(this).attr("value")
            if ($(this).attr("RestrictedAccess") === "True") {
                schedule_markup += "*"
                has_restricted_access = true;
            }

            if ($(this).attr("hours").length > 0) {
                schedule_markup += ":<\/span> " + $(this).attr("hours");
            } else {
                schedule_markup += "<\/span>"
            }
            schedule_markup += "<br \/>";
        });
        if (has_restricted_access) {
            schedule_markup += "<div id=\"restricted_access\">* restricted access<br \/>* appointments available on request<\/div>"
        }
        $("#schedule", $branch_elem).html(schedule_markup);

        if ($branch_data.children("ABM").length > 0) {
            if ($branch_data.children("ABM").attr("notes")) {
                $("#abm-cont", $branch_elem).html($branch_data.children("ABM").attr("notes"))
            } else {
                $("#abm-cont", $branch_elem).html("ABM Available")
            }
            $("#abm-cont", $branch_elem).show()
        }
        else {
            $("#abm-cont", $branch_elem).hide()
        }

        //fp
        var fp_markup = "";
        if ($branch_data.children("FinancialPlanner").length > 0) {
            fp_markup += "<span id=\"fp-title\">" + $branch_data.children("FinancialPlanner").attr("title") + "<\/span><br \/>";
            fp_markup += "<span id=\"fp-name\"><a target=\"_blank\" href=\"/personal-banking/investments/financial-planner-bios.htm#" + $branch_data.children("FinancialPlanner").attr("id") + "\">" + $branch_data.children("FinancialPlanner").attr("name") + "<\/a><\/span> - <span id=\"fp-credentials\">" + $branch_data.children("FinancialPlanner").attr("credentials") + "<\/span> - <br \/>";
            fp_markup += "<a href=\"mailto:" + $branch_data.children("FinancialPlanner").attr("email") + "\" id=\"fp-email\">" + $branch_data.children("FinancialPlanner").attr("email") + "<\/a>";
        }

        //mms
        var mms_markup = "";
        if ($branch_data.children("MobileMortgageSpecialist").length > 0) {
            mms_markup += "<span id=\"mms-title\">" + $branch_data.children("MobileMortgageSpecialist").attr("title") + "<\/span><br \/>";
            mms_markup += "<span id=\"mms-name\"><a target=\"_blank\" href=\"" + $branch_data.children("MobileMortgageSpecialist").attr("url") + "\">" + $branch_data.children("MobileMortgageSpecialist").attr("name") + "<\/a><\/span><br \/>";
            mms_markup += "<a href=\"mailto:" + $branch_data.children("MobileMortgageSpecialist").attr("email") + "\" id=\"fp-email\">" + $branch_data.children("MobileMortgageSpecialist").attr("email") + "<\/a>";
        }

        $("#specialist-cont").remove();
        if (fp_markup.length > 0 || mms_markup.length > 0) {
            var rep_markup = "<div id=\"specialist-cont\"><h1>Meridian Specialists<\/h1><div class=\"content\">";
            if (fp_markup.length > 0) {
                rep_markup += "<div id=\"fp\" class=\"col\">" + fp_markup + "<\/div>";
            }
            if (mms_markup.length > 0) {
                rep_markup += "<div id=\"mms\" class=\"col\">" + mms_markup + "<\/div>";
            }
            rep_markup += "<\/div><\/div>";
            $("#bd-top").after(rep_markup);
        }

        //buttons
        var branch_url = $branch_data.attr("url");
        if (branch_url) {
            $("#btVisitBranch").show();
            $("#btVisitBranch").attr("href", branch_url);
        } else {
            $("#btVisitBranch").hide();
        }
        if ($branch_data.children("googlemaps").attr("url")) {
            $("#btViewMap").attr("href", $branch_data.children("googlemaps").attr("url").replace(/%26/g, "&"));
            $("#btViewMap").show();
        } else {
            $("#btViewMap").hide();
        }
        var footer_markup = "";
        var item_count = 0;
        $branch_data.children("contacts").find("contact").each(function () {
            footer_markup += "<div><span class=\"heading\">" + $(this).attr("label") + ": <\/span>";
            if (typeof $(this).attr("url") != 'undefined') {
                footer_markup += "<a href=\"" + $(this).attr("url") + "\">" + $(this).text() + "<\/a>";
            } else {
                footer_markup += $(this).text();
            }
            footer_markup += "<\/div>";
            ++item_count;
        });

        $("#contact-info", $branch_elem).html(footer_markup);

        var footer_width = $(".ft", $branch_elem).css("width").replace("px", "");
        var footer_col_width = (footer_width / item_count) - 2;
        $(".ft div", $branch_elem).width(footer_col_width + "px");

        if (callback !== null && callback !== undefined) {
            callback();
        }
    },
    init: function () {
        this.drop_down.init();
    }
};
$(function() {
    locations.init();
});