/*
* jQuery 1.2.x Plugin
* plugin: light modal
* author: Alexandre Quinto (kintobr[at]gmail.com)
* 
* example: $('div.modal').modalToggle()
* params: 
*	zIndex: 12000,
*	lock: false,
*	fade: true,
*	cssClass: 'modal',
*	overlayAlpha: 50,
*	overlayCssClass: 'overlay'
*/
(function($) {
    var config = {}
    $.fn.modalToggle = function(config) {
        var $this = $(this);
        config = $.modalConfig(config, $this);
        $.overlay(config, $this);
        $.modalDraw($this, config);
    }
    $.modalDefaults =
	{
	    zIndex: 12000,
	    lock: false,
	    fade: true,
	    cssClass: 'modal',
	    overlayAlpha: 50,
	    overlayCssClass: 'overlay',
	    callbackOpen: function() { },
	    callbackClose: function() { }
	}
    $.modalConfig = function(config, element) {
        return jQuery.extend($.modalDefaults, config);
    }
    $.modalDraw = function(element, config) {
        var overlay = $('div.' + config.overlayCssClass);
        element.css('z-index', config.zIndex);
        if (element.is(':visible')) {
            if (config.fade) {
                overlay.fadeOut();
                element.fadeOut(config.callbackClose);
            } else {
                overlay.hide();
                element.hide(config.callbackClose);
            }
        } else {
            if (config.fade) {
                overlay.fadeIn();
                element.fadeIn(config.callbackOpen);
            } else {
                overlay.show();
                element.show(config.callbackOpen);
            }
        }
    }
    $.setHeight = function() {
        var doc = $(document).height(),
			win = $(window).height();

        if ($.browser.msie && $.browser.version.indexOf('6') != -1)
            return doc > win ? doc - 20 : win - 20;
        else
            return doc > win ? doc : win;
    }
    $.setWidth = function() {
        var doc = $(document).width(),
			win = $(window).width();

        if ($.browser.msie && $.browser.version.indexOf('6') != -1)
            return doc > win ? doc - 18 : win - 18;
        else
            return doc > win ? doc : win;
    }
    $.overlay = function(config, element) {
        $('div').hasClass(config.overlayCssClass) == false ?
			$('<div class="' + config.overlayCssClass + '"></div>')
				.prependTo( 'form' )
				.css({
				    'filter': 'alpha(opacity=' + config.overlayAlpha + ')',
				    'opacity': config.overlayAlpha / 100,
				    '-moz-opacity': config.overlayAlpha / 100,
				    'z-index': config.zIndex - 1
				})
				.height($.setHeight())
				.width($.setWidth())
				.unbind()
				.click(function() {
				    if (!config.lock) $('.modal:visible').modalToggle();
				    return false;
				})
		: null;
    }
    $.overlayClick = function(element, config) {
        if (!config.lock) element.modalToggle(config);
        return false;
    }
})($);