/* Mosaic - Sliding Boxes and Captions jQuery Plugin Version 1.0.1 www.buildinternet.com/project/mosaic By Sam Dunn / One Mighty Roar (www.onemightyroar.com) Released under MIT License / GPL License */ (function($){ if(!$.omr){ $.omr = new Object(); }; $.omr.mosaic = function(el, options){ var base = this; // Access to jQuery and DOM versions of element base.$el = $(el); base.el = el; // Add a reverse reference to the DOM object base.$el.data("omr.mosaic", base); base.init = function(){ base.options = $.extend({},$.omr.mosaic.defaultOptions, options); base.load_box(); }; // Preload Images base.load_box = function(){ // Hide until window loaded, then fade in if (base.options.preload){ $(base.options.backdrop, base.el).hide(); $(base.options.overlay, base.el).hide(); $(window).load(function(){ // IE transparency fade fix if(base.options.options.animation == 'fade_' && $(base.options.overlay, base.el).css('opacity') == 0 ) $(base.options.overlay, base.el).css('filter', 'alpha(opacity=0)'); $(base.options.overlay, base.el).fadeIn(200, function(){ $(base.options.backdrop, base.el).fadeIn(200); }); base.allow_hover(); }); }else{ $(base.options.backdrop, base.el).show(); $(base.options.overlay , base.el).show(); base.allow_hover(); } }; // Initialize hover animations base.allow_hover = function(){ // Select animation switch(base.options.animation){ // Handle fade animations case 'fade_': $(base.el).hover(function () { $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, base.options.opacity); },function () { $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, 0); }); break; // Handle slide animations case 'slide': // Grab default overlay x,y position startX = $(base.options.overlay, base.el).css(base.options.anchor_x) != 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_x) : '0px'; startY = $(base.options.overlay, base.el).css(base.options.anchor_y) != 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_y) : '0px';; var hoverState = {}; hoverState[base.options.anchor_x] = base.options.hover_x; hoverState[base.options.anchor_y] = base.options.hover_y; var endState = {}; endState[base.options.anchor_x] = startX; endState[base.options.anchor_y] = startY; $(base.el).hover(function () { $(base.options.overlay, base.el).stop().animate(hoverState, base.options.speed); },function () { $(base.options.overlay, base.el).stop().animate(endState, base.options.speed); }); break; }; }; // Make it go! base.init(); }; $.omr.mosaic.defaultOptions = { animation : 'fade_', speed : 300, opacity : 1, preload : 0, anchor_x : 'left', anchor_y : 'bottom', hover_x : '0px', hover_y : '0px', overlay : '.mosaic-overlay', //Mosaic overlay backdrop : '.mosaic-backdrop' //Mosaic backdrop }; $.fn.mosaic = function(options){ return this.each(function(){ (new $.omr.mosaic(this, options)); }); }; })(jQuery);