(function($) { $.extend({ add2cart: function(source_id, target_id, callback) { var source = $('#' + source_id ); var target = $('#' + target_id ); var shadow = $('#' + source_id + '_shadow'); if( !shadow.attr('id') ) { $('body').prepend(''); var shadow = $('#'+source.attr('id')+'_shadow'); } if( !shadow ) { alert('Cannot create the shadow div'); } shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.5).show(); shadow.css('position', 'absolute'); shadow.animate( { width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: 300 } ) .animate( { opacity: 0 }, { duration: 100, complete: callback } ); } }); })(jQuery);