(function($) {
    $.fn.smodal = function(options) {
        var defaults = {
            id: 'smodal',
            mClass: 'mClass',
            message: null
        };
        var opts = $.extend(defaults, options);        
        DW=400;
        DH=400;
        if($("#sMask").length==0){
            var mask = $("<div/>").addClass(opts['mClass']).css({
                position: "absolute",
                top:'0px',
                left:'0px',
                zIndex: 98,
                height: $(document).height(),
                width: $(document).width(),
                opacity:0
            }).animate({
                opacity:0.6
            },'fast').attr('id','sMask').click(function(ev) {
                close(ev);
            }).appendTo($(document.body));
        }else{
            mask=$("#sMask");
        }
        if($("#sDialog").length==0){
            var dialog = $("<div/>").attr('id','sDialog')
            .css({
                position: "absolute",
                background: "transparent",
                zIndex: 99        
            }).appendTo($(document.body));            
        }else{
            dialog=$("#sDialog");
        }
        if(opts['message']!=null){
            var temp = $("<div/>")
            .css({
                position: "absolute",
                top:'-1500px',
                left:'-1500px'
            }).html(opts['message']).appendTo($(document.body));
            var DW = temp.width();
            var DH = temp.height();            
            temp.remove();
            dialog.animate({
                opacity:0.7
            },'fast',function(){
                dialog.css({
                    width: DW,
                    height: DH,
                    top: $(document).scrollTop()+$(window).height()/2-DH/2,
                    left: $(document).width()/2-DW/2
                }).html(opts['message']).animate({
                    opacity:1
                },'fast');
                $('#mClose').click(function(ev) {
                    close(ev);
                });
            });            
        }
        else{
            $(document).keyup(function(ev) {            
                if (ev.charCode==27 || ev.keyCode==27) close(ev);
            });
        }
        function close(ev) {
            ev.stopPropagation();
            dialog.remove();
            mask.remove();
        }
    };
})(jQuery); 
