/*! touch-imagelightbox - v0.1.0 - 2014-06-27 * https://github.com/victorhaggqvist/touch-imagelightbox * Copyright (c) 2014 Osvaldas Valutis (www.osvaldas.info); Licensed MIT * Contributors Victor Häggqvist (victorhaggqvist.com) */ !function(a,b,c){"use strict";var d,e=function(){var a=c.body||c.documentElement,b=a.style;return""===b.WebkitTransition?"-webkit-":""===b.MozTransition?"-moz-":""===b.OTransition?"-o-":""===b.transition?"":!1},f=e()===!1?!1:!0,g=function(a,b,c){d={};var f=e();d[f+"transform"]="translateX("+b+")",d[f+"transition"]=f+"transform "+c+"s linear",a.css(d)},h="ontouchstart"in b,i=b.navigator.pointerEnabled||b.navigator.msPointerEnabled,j=function(a){if(h)return!0;if(!i||"undefined"==typeof a||"undefined"==typeof a.pointerType)return!1;if("undefined"!=typeof a.MSPOINTER_TYPE_MOUSE){if(a.MSPOINTER_TYPE_MOUSE!==a.pointerType)return!0}else if("mouse"!==a.pointerType)return!0;return!1};a.fn.imageLightbox=function(d){d=a.extend({selector:'id="imagelightbox"',allowedTypes:"png|jpg|jpeg|gif",animationSpeed:250,preloadNext:!0,enableKeyboard:!0,quitOnEnd:!1,quitOnImgClick:!1,quitOnDocClick:!0,onStart:!1,onEnd:!1,onLoadStart:!1,onLoadEnd:!1},d);var e=a([]),k=a(),l=a(),m=0,n=0,o=0,p=!1,q=function(b){return d.regexValidObject=new RegExp("(.("+d.allowedTypes+")$)"),"a"===a(b).prop("tagName").toLowerCase()&&d.regexValidObject.test(a(b).attr("href"))},r=function(){if(!l.length)return!1;var c=.8*a(b).width(),d=.9*a(b).height(),e=new Image;e.src=l.attr("src"),e.onload=function(){if(m=e.width,n=e.height,m>c||n>d){var f=m/n>c/d?m/c:n/d;m/=f,n/=f}l.css({width:m+"px",height:n+"px",top:(a(b).height()-n)/2+"px",left:(a(b).width()-m)/2+"px"})}},s=function(b){if(p)return!1;if(b="undefined"==typeof b?!1:"left"===b?1:-1,l.length){if(b!==!1&&(e.length<2||d.quitOnEnd===!0&&(-1===b&&0===e.index(k)||1===b&&e.index(k)===e.length-1)))return u(),!1;var c={opacity:0};f?g(l,100*b-o+"px",d.animationSpeed/1e3):c.left=parseInt(l.css("left"))+100*b+"px",l.animate(c,d.animationSpeed,function(){t()}),o=0}p=!0,d.onLoadStart!==!1&&d.onLoadStart(),setTimeout(function(){l=a("").attr("src",k.attr("href")).load(function(){l.appendTo("body"),r();var c={opacity:1};if(l.css("opacity",0),f)g(l,-100*b+"px",0),setTimeout(function(){g(l,"0px",d.animationSpeed/1e3)},50);else{var h=parseInt(l.css("left"));c.left=h+"px",l.css("left",h-100*b+"px")}if(l.animate(c,d.animationSpeed,function(){p=!1,d.onLoadEnd!==!1&&d.onLoadEnd()}),d.preloadNext){var i=e.eq(e.index(k)+1);i.length||(i=e.eq(0)),a("").attr("src",i.attr("href")).load()}}).error(function(){d.onLoadEnd!==!1&&d.onLoadEnd()});var c=0,h=0,n=0;l.on(i?"pointerup MSPointerUp":"click",function(a){if(a.preventDefault(),d.quitOnImgClick)return u(),!1;if(j(a.originalEvent))return!0;var b=(a.pageX||a.originalEvent.pageX)-a.target.offsetLeft;k=e.eq(e.index(k)-(m/2>b?1:-1)),k.length||(k=e.eq(m/2>b?e.length:0)),s(m/2>b?"left":"right")}).on("touchstart pointerdown MSPointerDown",function(a){return!j(a.originalEvent)||d.quitOnImgClick?!0:(f&&(n=parseInt(l.css("left"))),void(c=a.originalEvent.pageX||a.originalEvent.touches[0].pageX))}).on("touchmove pointermove MSPointerMove",function(a){return!j(a.originalEvent)||d.quitOnImgClick?!0:(a.preventDefault(),h=a.originalEvent.pageX||a.originalEvent.touches[0].pageX,o=c-h,void(f?g(l,-o+"px",0):l.css("left",n-o+"px")))}).on("touchend touchcancel pointerup MSPointerUp",function(a){return!j(a.originalEvent)||d.quitOnImgClick?!0:void(Math.abs(o)>50?(k=e.eq(e.index(k)-(0>o?1:-1)),k.length||(k=e.eq(0>o?e.length:0)),s(o>0?"right":"left")):f?g(l,"0px",d.animationSpeed/1e3):l.animate({left:n+"px"},d.animationSpeed/2))})},d.animationSpeed+100)},t=function(){return l.length?(l.remove(),void(l=a())):!1},u=function(){return l.length?void l.animate({opacity:0},d.animationSpeed,function(){t(),p=!1,d.onEnd!==!1&&d.onEnd()}):!1};return a(b).on("resize",r),d.quitOnDocClick&&a(c).on(h?"touchend":"click",function(b){l.length&&!a(b.target).is(l)&&u()}),d.enableKeyboard&&a(c).on("keyup",function(a){return l.length?(a.preventDefault(),27===a.keyCode&&u(),void((37===a.keyCode||39===a.keyCode)&&(k=e.eq(e.index(k)-(37===a.keyCode?1:-1)),k.length||(k=e.eq(37===a.keyCode?e.length:0)),s(37===a.keyCode?"left":"right")))):!0}),a(c).on("click",this.selector,function(b){return q(this)?(b.preventDefault(),p?!1:(p=!1,d.onStart!==!1&&d.onStart(),k=a(this),void s())):!0}),this.each(function(){return q(this)?void(e=e.add(a(this))):!0}),this.switchImageLightbox=function(a){var b=e.eq(a);if(b.length){var c=e.index(k);k=b,s(c>a?"left":"right")}return this},this.quitImageLightbox=function(){return u(),this},this}}(jQuery,window,document);