﻿(function($) {
    // Call the model dialog for message showing.
    function Dialog() {
        this.modal = $('<div class="jqmNotice">' +
            '<div class="jqmdTC"/>' +
        //'<img alt="Close" class="jqmdX jqmClose pngfix" src="' + (BASEURL + "/Content/images/cancel.png") + '"/>' +
            '<input type="image" class="jqmdX jqmClose pngfix" src="' + (BASEURL + "/Content/images/cancel.png") + '" />' +
            '<div class="jqmdBC">' +
                '<div class="content dialog"/>' +
                '<iframe class="jqmContent" style="display:none;" src=""></iframe>' +
            '</div>' +
            '<div class="jqmButtonBar">' +
                '<a class="jqmClose cancelLink" href="#" /> <a class="wynnlinkbutton" href="#" />' +
            '</div>' +
        '</div>');
        this.defaults = {
            title: "Dialog",
            content: "Sample Text",
            modalClass: "",
            showButton: true,
            showCancel: false,
            buttonText: "OK",
            cancelButtonText: "Cancel",
            cancelClose: false,
            buttonEvent: null,
            ShowCancelX: true,
            cancelClick: false,
            iframeMode: false,
            iframeURL: "",
            jqmOptions: {
                target: ".content"
            }
        };
        this.target = null;
    }

    $.extend(Dialog.prototype, {
        _init: function(target, options) {
            this.target = $(target);
            var self = this;
            var settings = $.extend(self.defaults, options || {});
            var modal = self.modal.addClass(settings.modalClass);
            $(".jqmdTC", modal).html(settings.title);
            if (settings.iframeMode) {
                $(".jqmdBC .content", modal).hide();
            } else {
                if (settings.jqmOptions && settings.jqmOptions.ajax) {
                    settings.jqmOptions["target"] = ".content";
                    settings.jqmOptions["ajaxText"] = '<div class="ajaxLoading"><img src="' + (BASEURL + "/Content/images/loader-bgwynn.gif") + '" /> Please wait...</div>';
                } else {
                    if (typeof settings.content === "string") {
                        $(".jqmdBC .content", modal).html(settings.content);
                    } else if (settings.content && settings.content.html) {
                        $(".jqmdBC .content", modal).html(settings.content.html());
                    }
                }
            }
            var ShowCancelX = $(".jqmClose", modal);
            if (settings.ShowCancelX) {
                $(".jqmClose",modal).show();
            }
            else {
                $(".jqmClose",modal).hide();
            }
            var button = $(".wynnlinkbutton", modal);
            var cancelButton = $(".cancelLink", modal);
            if (settings.showButton) {
                button.html(settings.buttonText);
                button.unbind("click");
                if ($.isFunction(settings.buttonEvent)) {
                    button.click(settings.buttonEvent);
                }
                if (!settings.cancelClose) {
                    button.click(function() {
                        self._hide();
                        return false;
                    });
                }
            } else {
                $(".jqmButtonBar", modal).hide();
            }

            if (settings.showCancel) {
                cancelButton.html(settings.cancelButtonText);
            } else {
                cancelButton.hide();
            }


            if (!self.target.data("dialog")) {
                $(document.body).append(modal);
            }

            $.ajaxSetup({ cache: false });
            var jqmodalOptions = {
                modal: 'true',
                onShow: function(h) {
                    if (settings.iframeMode && $("iframe", modal).attr('src') != settings.iframeURL) {
                        $("iframe", modal).attr('src', settings.iframeURL).show();
                    }

                    function center() {
                        var wnd = $(window), doc = $(document), pTop, pLeft;
                        pTop = doc.scrollTop(), pLeft = doc.scrollLeft();
                        var minTop = pTop;
                        pLeft += (wnd.width() - h.w.outerWidth()) / 2;
                        //pTop += (wnd.height() - h.w.outerHeight()) / 2;
                        //pTop = Math.max(pTop, minTop);
                        pTop = "17%";
                        return { top: pTop, left: pLeft };
                    }
                    h.w.css(center()).fadeIn('slow');
                    if (!h.w.data("dialog.resize")) {
                        $(window).resize(function() {
                            h.w.animate(center(), 100);
                        });
                        h.w.data("dialog.resize", true);
                    }
                    setTimeout(function() {
                        button.focus();
                    }, 100);
                }
            };

            $.extend(jqmodalOptions, settings.jqmOptions || {});

            // Hook up the on load event, when the ajax load completed,
            // jqModel will auto focus to the first element.
            // Set the focus back to the OK/Submit button after ajax load completed.
            //
            var originalOnLoad = jqmodalOptions.onLoad;
            jqmodalOptions.onLoad = function() {
                if ($.isFunction(originalOnLoad)) {
                    originalOnLoad.apply(originalOnLoad, arguments);
                }
                button.focus();
            }

            modal.jqm(jqmodalOptions);
            $.ajaxSetup({ cache: true });
            self.target.data("dialog", this);
            if (!settings.cancelClick) {
                self.target.click(function() {
                    self._show();
                    return false;
                });
            }
        },
        _show: function() {
            this.modal.jqmShow();
        },
        _hide: function() {
            this.modal.jqmHide();
        }
    });

    $.fn.dialog = function(options) {
        var otherArgs = Array.prototype.slice.call(arguments, 1);
        return this.each(function(i) {
            var dialog;
            var self = $(this);
            if (self.data("dialog")) {
                dialog = self.data("dialog");
            } else {
                dialog = new Dialog();
            }
            typeof options == 'string' ?
            dialog['_' + options].apply(dialog, [this].concat(otherArgs)) :
            dialog._init(this, options);
        });
    };

    $.fn.showDialog = function() {
        $(this).data("dialog").modal.jqmShow();
    };

})(jQuery);

(function($) {
    // Call the model dialog for message showing.
    function Tabs() {
        this.defaults = {
            activeIndex: 0,
            activeCSSClass: "active",
            onShow: null,
            onHide: null
        };
        this.activeIndex = 0;
        this.target = null;
    }
    $.extend(Tabs.prototype, {
        _init: function(target, options) {
            this.target = $(target);
            var self = this;
            var settings = $.extend(self.defaults, options || {});
            self.activeIndex = settings.activeIndex;
            var tabs = self.target;
            $($(".tabsBar a", tabs)[settings.activeIndex]).addClass(settings.activeCSSClass);
            $(".tabsPanel", tabs).filter(function(index) {
                return index != self.activeIndex;
            }).hide();

            $(".tabsBar a", tabs).each(function(index) {
                $(this).click(function() {
                    if (self.activeIndex == index) {
                        return false;
                    }

                    $(".tabsBar a", tabs).each(function(i) {
                        if (i == index) {
                            $(this).addClass(settings.activeCSSClass);
                        } else {
                            $(this).removeClass(settings.activeCSSClass);
                        }
                    });

                    $($(".tabsPanel", tabs)[self.activeIndex]).fadeOut(function() {
                        if (settings.onHide && settings.onHide[self.activeIndex] && $.isFunction(settings.onHide[self.activeIndex])) {
                            settings.onHide[index].apply(null, []);
                        }
                        $($(".tabsPanel", tabs)[index]).fadeIn(function() {
                            if (settings.onShow && settings.onShow[index] && $.isFunction(settings.onShow[index])) {
                                settings.onShow[index].apply(null, []);
                            }
                        });
                    });
                    self.activeIndex = index;
                    return false;
                });
            });
        }
    });

    $.fn.tabs = function(options) {
        var otherArgs = Array.prototype.slice.call(arguments, 1);
        return this.each(function(i) {
            var tabs;
            var self = $(this);
            if (self.data("tabs")) {
                tabs = self.data("tabs");
            } else {
                tabs = new Tabs();
            }
            typeof options == 'string' ?
            tabs['_' + options].apply(tabs, [this].concat(otherArgs)) :
            tabs._init(this, options);
        });
    };
})(jQuery);