﻿
(function($) {

    $.jmsajaxurl = function(options) {
        var url = options.url;
        url += "/" + options.method;
        if (options.data) {
            var data = ""; for (var i in options.data) {
                if (data != "")
                    data += "&"; data += i + "=" +
                     msJSON.stringify(options.data[i]);
            }
            url += "?" + data; data = null; options.data = "{}";
        }
        return url;
    };

    $.fn.extend({

        myAAOWidget: function(options) {
            var defaultOptions = { requestDomain: "", collapsed: false, interval: 1500 };
            var _intervalTimer = null;
            var _timerProcessing = false;

            settings = $.extend(defaultOptions, options);

            return this.each(function() {
                var obj = $(this);
                initialize(obj, settings);
            });

            function initialize(obj, options) {
                if (settings.collapsed) {
                    obj.addClass("collapsed").addClass("aaoTheme");
                }

                var parent = obj.parent(".webPartBody");
                if (parent) parent.parent().addClass("ie7Zorderhack");

                obj.html("<div id='widgetTop'></div><div class='loading'>Loading...</div><div id='widgetFooter'></div>");

                var url = $.jmsajaxurl({
                    url: settings.requestDomain + "/ajax/MyAAOWidgetService.asmx",
                    method: "WidgetPanel",
                    data: {}
                });
                $.ajax({
                    url: url + "&format=json",
                    type: "GET",
                    dataType: "jsonp",
                    contentType: "application/json; charset=utf-8",
                    data: "{}",
                    //error: function(xhr, msg) { alert(xhr.statusText); },
                    success: WidgetLoaded
                });
            };

            function Logout() {
                var url = $.jmsajaxurl({
                    url: settings.requestDomain + "/ajax/MyAAOWidgetService.asmx",
                    method: "Logout",
                    data: {}
                });
                $.ajax({
                    url: url + "&format=json",
                    type: "GET",
                    dataType: "jsonp",
                    contentType: "application/json; charset=utf-8",
                    data: "{}"
                    //error: function(xhr, msg) { alert(xhr.statusText); },
                    //success: WidgetLoaded
                });

                return true;
            }

            function WidgetLoaded(data) {
                $("#myAAOWidget").html(data.d);

                $("#widgetTopNavLinks a").click(function() { return Logout(); });

                $("#widgetMenu li").click(
                        function() {
                            HideFlyoutPanels(false);
                            OpenFlyoutPanel($(this));
                        }
                    );

                $(".flyoutCloseButton").click(
                        function() {
                            HideFlyoutPanels(true);
                        }
                    );
            };


            function StartTimer() {
                if (!_timerProcessing) {
                    _intervalTimer = setInterval(OnTimer, settings.interval);
                    _timerProcessing = true;
                }
            }

            function StopTimer() {
                if (_timerProcessing) {
                    clearInterval(_intervalTimer);
                    _timerProcessing = false;
                }
            }

            function OnTimer() {
                HideFlyoutPanels(true);
            }


            function OpenFlyoutPanel(item) {
                //item.addClass("selected");
                var title = item.text();
                $("<div class='myAAOSelectedItem'><span></span>" + title + "</div>").appendTo(item);

                var panelId = item.attr("flyout");
                var panel = $("#" + panelId);
                panel.show();

                if (!item.attr("populated")) {
                    item.attr("populated", "1");

                    panel.mouseleave(function() { StartTimer() });
                    panel.mouseenter(function() { StopTimer() });

                    var method = item.attr("method");
                    var panelContent = panel.find("div.ajaxLoading");

                    var url = $.jmsajaxurl({
                        url: settings.requestDomain + "/ajax/MyAAOWidgetService.asmx",
                        method: method,
                        data: {}
                    });

                    $.ajax({
                        url: url + "&format=json",
                        type: "GET",
                        dataType: "jsonp",
                        contentType: "application/json; charset=utf-8",
                        data: "{}",
                        success: function(data) {
                            panelContent.removeClass("ajaxLoading");
                            panelContent.html(data.d);
                        }
                    });

                };
            };

            function HideFlyoutPanels(fade) {
                StopTimer();
                $(".myAAOSelectedItem").remove();
                if (fade) {
                    $(".flyout").fadeOut('fast');
                }
                else {
                    $(".flyout").hide();
                }
            };

        }
    });
})(jQuery);
