/* * jQuery Simple Overlay * A jQuery Plugin for creating a simple, customizable overlay. Supports multiple instances, * custom callbacks, hide on click, glossy effect, and more. * * Copyright 2011 Tom McFarlin, http://tommcfarlin.com, @moretom * Released under the MIT License * * http://moreco.de/jquery-simple-overlay */ (function($){$.fn.overlay=function(options){var opts=$.extend({},$.fn.overlay.defaults,options);return this.each(function(evt){if(!$(this).hasClass('overlay-trigger')){show(create($(this),opts),opts);}});};function create($src,opts){$src.addClass('overlay-trigger');var overlay=$('
').addClass('overlay').css({background:opts.color,opacity:opts.opacity,top:opts.container.toString()==='body'?$(opts.container).scrollTop():$(opts.container).offset().top,left:$(opts.container).offset().left,width:opts.container==='body'?'100%':$(opts.container).width(),height:opts.container==='body'?'100%':$(opts.container).height(),position:'absolute',zIndex:1000,display:'none',overflow:'hidden'});if(opts.glossy){applyGloss(opts,overlay);} $(opts.container).append(overlay); if(opts.closeOnClick){$(overlay).click(function(){close(overlay,opts);$src.removeClass('overlay-trigger');});} if(opts.closeOnFocus){$(window).focus(function() {close(overlay, opts);$src.removeClass('overlay-trigger');});} return overlay;} function show(overlay,opts){switch(opts.effect.toString().toLowerCase()){case'fade':$(overlay).fadeIn('fast',opts.onShow);break;case'slide':$(overlay).slideDown('fast',opts.onShow);break;default:$(overlay).show(opts.onShow);break;} $(opts.container).css('overflow','hidden');} function close(overlay,opts){switch(opts.effect.toString().toLowerCase()){case'fade':$(overlay).fadeOut('fast',function(){opts.onHide();$(this).remove();});break;case'slide':$(overlay).slideUp('fast',function(){opts.onHide();$(this).remove();});break;default:$(overlay).hide();if(opts.onHide){opts.onHide();} $(overlay).remove();break;} $(opts.container).css('overflow','auto');} function applyGloss(opts,overlay){var gloss=$('
');$(gloss).css({background:'#fff',opacity:0.2,width:'200%',height:'100%',position:'absolute',zIndex:1001,msTransform:'rotate(45deg)',webkitTransform:'rotate(45deg)',oTransform:'rotate(45deg)'});if($.browser.mozilla){$(gloss).css('-moz-transform','rotate(45deg');} $(overlay).append(gloss);} $.fn.overlay.defaults={color:'#000',opacity:0.5,effect:'none',onShow:null,onHide:null,closeOnClick:false,closeOnFocus:false,glossy:false,container:'body'};})(jQuery);