/*!
*  JqueryAsynchImageLoader (JAIL) : plugin for jQuery
*
* Developed by
* Sebastiano Armeli-Battana (@sebarmeli) - http://www.sebastianoarmelibattana.com | http://blog.sebarmeli.com
*
* Licensed under MIT
*/
(function(a){var b=a(window);a.fn.asynchImageLoader=function(d){d=a.extend({timeout:10,effect:false,speed:400,selector:null,event:"load+scroll",callback:jQuery.noop,offset:0,placeholder:false},d);var c=this;this.data("triggerEl",(d.selector)?a(d.selector):b);if(d.placeholder!==false){c.each(function(){a(this).attr("src",d.placeholder)})}if(/^load/.test(d.event)){a.asynchImageLoader.later.call(this,d)}else{a.asynchImageLoader.onEvent.call(this,d,c)}return this};a.asynchImageLoader={_purgeStack:function(c){var d=0;while(true){if(d===c.length){break}else{if(c[d].getAttribute("data-href")){d++}else{c.splice(d,1)}}}},_loadOnEvent:function(g){var f=a(this),d=g.data.options,c=g.data.images;a.asynchImageLoader._loadImage(d,f);f.unbind(d.event,a.asynchImageLoader._loadOnEvent);d.callback.call(this,d);a.asynchImageLoader._purgeStack(c)},_bufferedEventListener:function(g){var c=g.data.images,d=g.data.options,f=c.data("triggerEl");clearTimeout(c.data("poller"));c.data("poller",setTimeout(function(){c.each(function e(){a.asynchImageLoader._loadImageIfVisible(d,this,f)});a.asynchImageLoader._purgeStack(c);d.callback.call(this,d,c)},d.timeout))},onEvent:function(d,c){c=c||this;if(d.event==="scroll"||d.selector){var e=c.data("triggerEl");if(c.length>0){e.bind(d.event,{images:c,options:d},a.asynchImageLoader._bufferedEventListener)}else{var f=(d.selector)?a(d.selector):b;f.unbind(d.event,a.asynchImageLoader._bufferedEventListener)}}else{c.bind(d.event,{options:d,images:c},a.asynchImageLoader._loadOnEvent)}},later:function(d){var c=this;if(d.event==="load"){c.each(function(){a.asynchImageLoader._loadImageIfVisible(d,this,c.data("triggerEl"))})}a.asynchImageLoader._purgeStack(c);setTimeout(function(){if(d.event==="load"){c.each(function(){a.asynchImageLoader._loadImage(d,a(this))})}else{c.each(function(){a.asynchImageLoader._loadImageIfVisible(d,this,c.data("triggerEl"))})}a.asynchImageLoader._purgeStack(c);if(/^load\+/.test(d.event)){d.event=d.event.substring(d.event.indexOf("+")+1,d.event.length);a.asynchImageLoader.onEvent(d,c)}},d.timeout)},_loadImageIfVisible:function(d,g,f){var e=a(g),c=(d.event==="scroll"?f:b);if(a.asynchImageLoader._isInTheScreen(c,e,d.offset)){a.asynchImageLoader._loadImage(d,e)}},_isInTheScreen:function(i,c,g){var e=i[0]===window,l=i.offset()||{top:0,left:0},f=l.top+(e?i.scrollTop():0),h=l.left+(e?i.scrollLeft():0),d=h+i.width(),j=f+i.height(),k=c.offset();return(f-g)<=k.top&&(j+g)>=k.top&&(h-g)<=k.left&&(d+g)>=k.left},_loadImage:function(c,d){d.hide();d.attr("src",d.attr("data-href"));d.removeAttr("data-href");if(c.effect){if(c.speed){d[c.effect](c.speed)}else{d[c.effect]()}}else{d.show()}}}}(jQuery));
