(function($){ if ($.fn.preloader) return; $.fn.preloader=function(tconfig){ var pl=$.fn.preloader; var config=$.extend({},pl.defaults,tconfig); var imglist=config.imglist; var onload=function(event){ var obj=event.data.obj,count=obj.data(pl.d.unloaded)-1,e={},config=event.data.config; e[pl.event.percent]=1-(count/obj.data(pl.d.count)); obj.triggerhandler($.event(pl.event.update,e)); (count>0) && obj.data(pl.d.unloaded,count) || finish(obj); } var finish=function(obj){ obj.one(pl.event.prefinish,onfinish); obj.triggerhandler($.event(pl.event.prefinish)); } var onfinish=function(){ config=$(this).data(pl.d.config); var obj=$(this); /* if (config.cleancontent){obj.html(obj.data(pl.d.content));obj.removedata(pl.d.content)}*/ obj.removedata(pl.d.imglist); obj.trigger($.event(pl.event.finish)); } var load=function(){ var tempimgs=[],imgcount=0,imglist=$.extend({},config.imglist),imgs; $(this).data(pl.d.config,config) imgs=$("a."+config.hrefclass,$(this)).get(); for (img in (imgs)){ aimage=$(imgs[img]); newimg=$("").addclass(aimage.attr("class")).removeclass(config.hrefclass); if (aimage.attr("id")){newimg.attr("id",aimage.attr("id"))} newimg.insertafter(aimage); aimage.remove(); }; $('img[src]',this).each(function(){ var imageurl=$(this).attr("src"); imglist[imageurl]=imglist[imageurl] || {}; }); for (var img in imglist){imgcount++} if (imgcount==0){ finish($(this)); }else{ $(this).data(pl.d.unloaded,imgcount).data(pl.d.count,imgcount); for (var img in imglist){ tempimgs.push($("").bind("error load",{obj:$(this),config:imglist[img]},onload).attr("src",img)); } $(this).data(pl.d.imglist,tempimgs); var e={}; e[pl.event.percent]=0; $(this).trigger($.event(pl.event.update,e)); } } return this.each(load) } var pl=$.fn.preloader; pl.d={ config:"__pl_data_config", count:"__pl_data_count", unloaded:"__pl_data_unloaded", imglist:"__pl_data_imglist", content:"__pl_data_content" }; pl.event={ finish:"preloadfinish", update:"preloadupdate", percent:"percent", prefinish:"__preload_pre_finish" }; pl.defaults={ imglist:{}, hrefclass:"image" }; })(jquery)