﻿/*
* SimpleModal 1.1.1 - jQuery Plugin
* http://www.ericmmartin.com/projects/simplemodal/
* http://plugins.jquery.com/project/SimpleModal
* http://code.google.com/p/simplemodal/
*
* Copyright (c) 2007 Eric Martin - http://ericmmartin.com
*
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* Revision: $Id: jquery.simplemodal.js 93 2008-01-15 16:14:20Z emartin24 $
*
*/
(function($) {
    $.modal = function(data, options) { return $.modal.impl.init(data, options); }; $.modal.close = function() { $.modal.impl.close(true); }; $.fn.modal = function(options) { return $.modal.impl.init(this, options); }; $.modal.defaults = { overlay: 50, overlayId: 'modalOverlay', overlayCss: {}, containerId: 'modalContainer', containerCss: {}, close: true, closeTitle: 'Close', closeClass: 'modalClose', persist: false, onOpen: null, onShow: null, onClose: null }; $.modal.impl = { opts: null, dialog: {}, init: function(data, options) { if (this.dialog.data) { return false; } this.opts = $.extend({}, $.modal.defaults, options); if (typeof data == 'object') { data = data instanceof jQuery ? data : $(data); if (data.parent().parent().size() > 0) { this.dialog.parentNode = data.parent(); if (!this.opts.persist) { this.dialog.original = data.clone(true); } } } else if (typeof data == 'string' || typeof data == 'number') { data = $('<div>').html(data); } else { if (console) { console.log('SimpleModal Error: Unsupported data type: ' + typeof data); } return false; } this.dialog.data = data.addClass('modalData'); data = null; this.create(); this.open(); if ($.isFunction(this.opts.onShow)) { this.opts.onShow.apply(this, [this.dialog]); } return this; }, create: function() {
        this.dialog.overlay = $('<div>').attr('id', this.opts.overlayId).addClass('modalOverlay').css($.extend(this.opts.overlayCss, { opacity: this.opts.overlay / 100, height: '100%', width: '100%', position: 'fixed', left: 0, top: 0, zIndex: 10000 })).hide().appendTo('body'); this.dialog.container = $('<div>').attr('id', this.opts.containerId).addClass('modalContainer').css($.extend(this.opts.containerCss, { position: 'fixed', zIndex: 10100 })).append(this.opts.close ? '<a class="modalCloseImg ' + this.opts.closeClass
+ '" title="' + this.opts.closeTitle + '"></a>' : '').hide().appendTo('body'); if ($.browser.msie && ($.browser.version < 7)) { this.fixIE(); } this.dialog.container.append(this.dialog.data.hide());
    }, bindEvents: function() { var modal = this; $('.' + this.opts.closeClass).click(function(e) { e.preventDefault(); modal.close(); }); }, unbindEvents: function() { $('.' + this.opts.closeClass).unbind('click'); }, fixIE: function() { var wHeight = $(document.body).height() + 'px'; var wWidth = $(document.body).width() + 'px'; this.dialog.overlay.css({ position: 'absolute', height: wHeight, width: wWidth }); this.dialog.container.css({ position: 'absolute' }); this.dialog.iframe = $('<iframe src="javascript:false;">').css($.extend(this.opts.iframeCss, { opacity: 0, position: 'absolute', height: wHeight, width: wWidth, zIndex: 1000, width: '100%', top: 0, left: 0 })).hide().appendTo('body'); }, open: function() { if (this.dialog.iframe) { this.dialog.iframe.show(); } if ($.isFunction(this.opts.onOpen)) { this.opts.onOpen.apply(this, [this.dialog]); } else { this.dialog.overlay.show(); this.dialog.container.show(); this.dialog.data.show(); } this.bindEvents(); }, close: function(external) { if (!this.dialog.data) { return false; } if ($.isFunction(this.opts.onClose) && !external) { this.opts.onClose.apply(this, [this.dialog]); } else { if (this.dialog.parentNode) { if (this.opts.persist) { this.dialog.data.hide().appendTo(this.dialog.parentNode); } else { this.dialog.data.remove(); this.dialog.original.appendTo(this.dialog.parentNode); } } else { this.dialog.data.remove(); } this.dialog.container.remove(); this.dialog.overlay.remove(); if (this.dialog.iframe) { this.dialog.iframe.remove(); } this.dialog = {}; } this.unbindEvents(); } 
    };
})(jQuery);


// --
// This object is responsible for showing a modal dialog. The dialog container must have an id of idModalMessage.
//   elemId  - The element of the id containing the the html to display
//   message - An optional message text to display in any element containing the css class .pageerror
//   func    - An optional block of code on dialog close
//   title   - An optional title to display in the h2 element
// --
function ModalMessageBox(elemId, message, func, title, opts) {
    this.init(elemId, message, func, title, opts);
}

ModalMessageBox.prototype = {
    init: function(elemId, message, func, title, opts) {
        var html = $('#' + elemId).html();
        $('#idModalMessage')
            .html(html, opts)
            .modal({
                close: false,
                closeClass: 'modalClose',
                onOpen: function(dialog) {
                    $.modal.displayed = true;
                    dialog.overlay.fadeIn('fast', function() {
                        dialog.container.slideDown('fast', function() {
                            dialog.data.fadeIn('fast');
                            // See Other Notes below regarding
                            // data display property and
                            // iframe details
                            if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
                                // hide those bleeding combo's
                                $('select :visible').addClass('bleeder').hide();
                            }
                        });
                    });
                },
                onClose: function(dialog) {
                    $.modal.displayed = false;
                    dialog.data.fadeOut('fast', function() {
                        dialog.container.slideUp('fast', function() {
                            dialog.overlay.fadeOut('fast', function() {
                                $.modal.close();
                                // must call this to have SimpleModal
                                // re-insert the data correctly and
                                // clean up the dialog elements
                                if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
                                    // show those bleeding combo's
                                    $('select.bleeder').removeClass('bleeder').show();
                                }
                                if ($.isFunction(func)) {
                                    func();
                                }
                            });
                        });
                    });
                }
            });
        // add the error message if present
        var sect = $('#idModalMessage .pageerror');
        if (sect.length !== 0) {
            if (message === '') {
                sect.hide();
            } else {
                sect.html(message);
            }
        }
        if (typeof title != 'undefined') {
            $('#idModalMessage h2').html(title);
        }
    }
};
