/* * @name: ImgSwitch * @version: 0.3 * @release: 2010-03-08 12:22:28 * @type: jQuery plugin * @author: David Sklar --------------------------------------- */ (function($){var ImgSwitch=function(box,opts){var $this=box;var master;var slave;var css;var duration;var options=opts;var pattern={small:options.small,medium:options.medium,full:options.full};var color={};master=$(options.master);duration=options.duration;css=options.css;$this.find('a:first').addClass(css);color={dead:$this.find('a:eq(1)').css('border-top-color'),live:$this.find('a:first').css('border-top-color')};$this.find('div').bind('click',function(e){e.preventDefault();var target=$(e.target);if(target.is('a, img')){reset();if(target.is('a')){target.stop().animate({'borderTopColor':color.live,'borderRightColor':color.live,'borderBottomColor':color.live,'borderLeftColor':color.live},{duration:300,complete:function(){target.addClass(css);}});load(target.find('img'));}else{target.parent('a').stop().animate({'borderTopColor':color.live,'borderRightColor':color.live,'borderBottomColor':color.live,'borderLeftColor':color.live},{duration:300,complete:function(){target.parent('a').addClass(css);}});load(target);}}});var load=function(img){$(new Image()).bind('load',function(){var tmp=$(this);dx=1/2*(master.parent().innerWidth()-this.width);dy=1/2*(master.parent().innerHeight()-this.height);master.after($(this));master.animate({opacity:0},{duration:duration/2,complete:function(){master.remove();master=tmp;}});$(this).css({position:'absolute',top:dy,left:dx,opacity:0}).animate({opacity:1.0},{duration:duration});$(this).parent('a').attr({href:img.attr('src').replace(new RegExp(pattern.small,'i'),pattern.full)});}).attr({src:img.attr('src').replace(new RegExp(pattern.small,'i'),pattern.medium),alt:img.attr('alt'),title:img.attr('title')});};var reset=function(){$this.find('a').stop().animate({'borderTopColor':color.dead,'borderRightColor':color.dead,'borderBottomColor':color.dead,'borderLeftColor':color.dead},{duration:600,complete:function(){$this.find('a').removeClass(css);}});};};$.fn.imgSwitch=function(options){var opts=$.extend({},{master:'#master img',small:'/60/60/',medium:'/220/150/',full:'/800/600/',duration:300,css:'active'},options);return this.each(function(){return new ImgSwitch($(this),opts);});};})(jQuery);