// og modal dialog definition
(function ($) {
    jQuery.ogDialog = function (options, callback) {
        var defaults = {
            title: 'Alert',
            type: 'alert',
            message: 'Please confirm',
            verticalOffset: -181,
            horizontalOffset: 0,
            width: 410,
            btnclose: false,
            customInput: null
        }

        var options = $.extend(defaults, options);
        var $dialog = '<div id="og-dialog"><div id="og-dialog-wrapper"><h4></h4><div id="og-dialog-content" class="clearfix"><p></p></div></div></div>';
        var $btnclose = '<a href="#" id="og-btnclose">&times;</a>';
        var functions = {

            _show: function () {
                $("#og-dialog").remove();
                $('#og-overlay').remove();

                $('body').append('<div id="og-overlay"></div>');
                $('#og-overlay').css({
                    position: 'absolute',
                    zIndex: 99998,
                    top: '0px',
                    left: '0px',
                    width: '100%',
                    height: $(document).height(),
                    background: '#000',
                    opacity: .0
                }).animate({ 'opacity': 0.4 }, 200);

                $('body').append($dialog);

                // IE6 fix
                var pos = ($.browser.msie && parseInt($.browser.version) <= 6) ? 'absolute' : 'fixed';

                $('#og-dialog').css({
                    position: pos,
                    zIndex: 99999,
                    padding: 0,
                    margin: 0,
                    width: options.width + 'px'
                });

                if (options.btnclose) {
                    $('#og-dialog').find('h4').html(options.title + $btnclose)
                    $('#og-dialog').find('a#og-btnclose').unbind().bind('click', function () { functions._hide(false); return false; });
                } else {
                    $('#og-dialog').find('h4').html(options.title)
                }
                $('#og-dialog-content').find('p').html(options.message);

                var $input;
                switch (options.type) {
                    case 'alert':
                        var $input = '<div id="og-dialog-panel"><span class="btn-wrapper clearfix"><a href="#" id="btn-true" class="button-dialog button-faux"><span>OK</span></a></span></div>';
                        break;
                    case 'confirm':
                        var $input = '<div id="og-dialog-panel"><span class="btn-wrapper clearfix"><a href="#" id="btn-true" class="button-dialog button-faux"><span>OK</span></a><a href="#" id="btn-false" class="button-dialog button-faux"><span>Cancel</span></a></span></div>';
                        break;
                    case 'confirm-alt':
                        var $input = '<div id="og-dialog-panel"><span class="btn-wrapper clearfix"><a href="#" id="btn-true" class="button-dialog button-faux"><span>Yes</span></a><a href="#" id="btn-false" class="button-dialog button-faux"><span>No</span></a></span></div>';
                        break;
                    case 'no-button':
                        var $input = '';
                        break;
                    case 'custom':
                        var $input = '';
                        if (options.customInput != null) {
                            $input = '<div id="og-dialog-panel"><span class="btn-wrapper clearfix">';
                            $.each(options.customInput, function (n, input) {
                                $input += '<a href="#" id="btn-custom-' + n + '" class="button-dialog button-faux"><span>' + input + '</span></a>';
                            });
                            $input += '</span></div>';
                        }
                        break;
                }

                $('#og-dialog-content').append($input);
                $('#og-dialog').find('#btn-true').unbind().bind('click', function () { functions._hide(true); return false; });
                $('#og-dialog').find('#btn-false').unbind().bind('click', function () { functions._hide(false); return false; });

                if (options.type == 'custom') $('#og-dialog').find('a.button-faux').unbind().bind('click', function () { functions._hideCustom($(this).find('span').text()); return false; });
                functions._position();

            },

            _position: function () {
                var top = Math.round((($(window).height() / 2) - ($("#og-dialog").outerHeight() / 2)) + options.verticalOffset);
                var left = Math.round((($(window).width() / 2) - ($("#og-dialog").outerWidth() / 2)) + options.horizontalOffset);
                if (top < 0) top = 0;
                if (left < 0) left = 0;

                // IE6 fix
                if ($.browser.msie && parseInt($.browser.version) <= 6) top = top + $(window).scrollTop();

                $("#og-dialog").css({
                    top: top + 'px',
                    left: left + 'px'
                });
            },

            _hide: function (confirm) {
                if (confirm) {
                    functions._onComplete();
                }
                $("#og-dialog").remove();
                $('#og-overlay').remove();
            },

            _hideCustom: function (datastream) {
                var fallback = function () { };
                var returnVal = null;
                returnVal = (callback == null) ? fallback() : callback(datastream);
                $("#og-dialog").remove();
                $('#og-overlay').remove();
                return returnVal;
            },

            _onComplete: function () {
                var fallback = function () { };
                return (callback == null) ? fallback() : callback();
            }

        };
        functions._show();
    };

    jQuery.fn.ogDialog = function (options, callback) {
        return this.each(function () {
            $.ogDialog(options, callback);
        });
    }
})(jQuery);

function ogDialogQuickClose() {
    //quick close functionality. Notice that the callback is not being called !
    $("#og-dialog").remove();
    $('#og-overlay').remove();
}
