(function ($) {
  $.fn.dim = function (opt) {
    var defaults = {
      dimObj  : $(this),
      duration  : 300,
      opacity   : .9,
      color     : '#000',
      closeObj  : '.dimmer',
      contentObj: false,
      clone     : true

    };
    var opt = $.extend(defaults, opt);
    return this.each(function (){
        if($(this).children('.dimmer').size()==0){
          var dimmer=$('<div class="dimmer"></div>').css({  'display':'none',
                                                              'width':'100%',
                                                              'height':'100%',
                                                              'background-color':opt.color,
                                                              'position':'absolute',
                                                              'top':'0px',
                                                              'left':'0px',
                                                              'z-index':'9999'
                                                           })
          if(opt.dimObj.is('body')){
              $("body").css({'min-height':$(window).height()})

          }

          if($(this).css('position')=='static'){
            $(this).css({'position':'relative'})
          }
          var contentObj='';
          dimmer.appendTo(opt.dimObj).fadeTo(opt.duration,opt.opacity,function(){
            if(opt.contentObj){
                contentObj=$(opt.contentObj)
                var top=0
                var left=0
                if(opt.dimObj.is('body')){
                    top=($(window).height()-contentObj.height())/2
                    left=($(window).width()-contentObj.width())/2
                }else{
                    top=(opt.dimObj.height()-contentObj.height())/2
                    left=(opt.dimObj.width()-contentObj.width())/2
                }
                if(top<=0)top=35
                if(opt.clone){
                    contentObj=contentObj.clone().css({'top':top+'px','left':left+'px','position':'absolute','z-index':'10000'})
                                      .appendTo(opt.dimObj)
                                      .show(200);
                }else{
                    contentObj.css({'top':top+'px','left':left+'px','position':'absolute','z-index':'10000'})
                              .fadeIn(200);
                }
            }
          })
          $(opt.closeObj).live('click',function(){
            contentObj.fadeOut(200,opt.clone?contentObj.remove():'')
            dimmer.fadeOut(opt.duration,function(){dimmer.remove()})
          })
        }
    });
  };
  $.fn.undim = function (opt) {
    var dimmer=$(this).children('.dimmer')
        dimmer.next().fadeOut(200)
        dimmer.fadeOut(300,function(){dimmer.remove()})
    return $(this);
  }
})(jQuery);
