(function($,document){$.glisse=function(element,options){var plugin=this,$element=$(element),defaults={dataName:'data-glisse-big',speed:300,changeSpeed:1000,effect:'bounce',mobile:false,fullscreen:false,disablindRightClick:false,parent:null},pictureUrl,group,isChange=false,mobile={},touch={},cache=[],getFullUrl=function($el){return $el.attr(plugin.settings.dataName)||$el.attr('src');};plugin.settings={};plugin.els={};plugin.init=function(){plugin.settings=$.extend({},defaults,options);group=$element.attr('rel')||null;plugin.settings.mobile=!!navigator.userAgent.match(/iPhone|iPod|iPad|Android/i);$element.on('click',function(){pictureUrl=getFullUrl($element);createElements();setChangeStyle();addImage(pictureUrl);setChangeStatus();setTitle();preloadImgs();$(document).keydown(function(event){if(event.keyCode.toString()==='27'){closeLightbox();}if(event.keyCode.toString()==='39'){changePicture('next');}if(event.keyCode.toString()==='37'){changePicture('prev');}});if(plugin.settings.disablindRightClick){plugin.els['content'].on('contextmenu',function(e){return false;});}if(plugin.settings.mobile){mobile={touching:false,nx:0,oX:0,scrollX:null};document.ontouchmove=document.ontouchstart=document.ontouchend=touchHandler;}});};var preloadImgs=function preloadImgs(){var current,image_urls=[],i;$('img[rel="'+group+'"]').each(function(i,el){image_urls.push(getFullUrl($(this)));});function loaded(current){cache.push(current);}for(i=0;i").attr("src",image_urls[i]);current.load(loaded(image_urls[i]));}};var createElements=function createElements(){$element.addClass('active');var cssProp=getPrefix('transition')+'transition',cssVal='opacity '+plugin.settings.speed+'ms ease, '+getPrefix('transform')+'transform '+plugin.settings.speed+'ms ease';plugin.els['wrapper']=$(document.createElement('div')).attr('id','glisse-wrapper');plugin.els['overlay']=$(document.createElement('div')).attr('id','glisse-overlay').css(cssProp,cssVal);plugin.els['spinner']=$(document.createElement('div')).attr('id','glisse-spinner');plugin.els['controlcls']=$(document.createElement('div')).attr('class','glisse-cls').append($(document.createElement('span')).html(""));plugin.els['close']=$(document.createElement('span')).attr('id','glisse-close').css(cssProp,cssVal);plugin.els['content']=$(document.createElement('div')).attr('id','glisse-overlay-content').css(cssProp,cssVal).css(getPrefix('transform')+'transform','scale(0)');plugin.els['controls']=$(document.createElement('div')).attr('id','glisse-controls').css(cssProp,cssVal);plugin.els['controlNext']=$(document.createElement('span')).attr('class','glisse-next').append($(document.createElement('a')).html("").attr("href","#"));plugin.els['controlPrev']=$(document.createElement('span')).attr('class','glisse-prev').append($(document.createElement('a')).html("").attr("href","#"));plugin.els['controlstit']=$(document.createElement('div')).attr('id','glisse-controlstit').css(cssProp,cssVal);plugin.els['controlLegend']=$(document.createElement('span')).attr('class','glisse-legend');plugin.els['overlay'].append(plugin.els['spinner']);plugin.els['controls'].append(plugin.els['controlNext'],plugin.els['controlPrev']);plugin.els['controlstit'].append(plugin.els['controlLegend']);plugin.els['wrapper'].append(plugin.els['overlay'],plugin.els['close'],plugin.els['content'],plugin.els['controlcls'],plugin.els['controls'],plugin.els['controlstit']);$('body').append(plugin.els['wrapper']);readyElement.observe('glisse-overlay',function(){plugin.els['overlay'].css('opacity',1);});readyElement.observe('glisse-close',function(){plugin.els['close'].css('opacity',1);});readyElement.observe('glisse-controls',function(){plugin.els['controls'].css('opacity',1);});plugin.els['controls'].delegate('a','click',function(e){e.preventDefault();var changeTo=($(this).parent().hasClass('glisse-next'))?'next':'prev';changePicture(changeTo);});plugin.els['overlay'].on('click',function(){closeLightbox();});plugin.els['content'].on('click',function(){closeLightbox();});plugin.els['close'].on('click',function(){closeLightbox();});plugin.els['controlstit'].on('click',function(){closeLightbox();});plugin.els['controlcls'].on('click',function(){closeLightbox();});if(plugin.settings.fullscreen){var docElm=document.documentElement;if(docElm.requestFullscreen){docElm.requestFullscreen();}else if(docElm.mozRequestFullScreen){docElm.mozRequestFullScreen();}else if(docElm.webkitRequestFullScreen){docElm.webkitRequestFullScreen();}}};var closeLightbox=function closeLightbox(){plugin.els['content'].css({opacity:0}).css(getPrefix('transform')+'transform','scale(1.2)');plugin.els['overlay'].css({opacity:0});plugin.els['close'].css({opacity:0});plugin.els['controls'].css({opacity:0});setTimeout(function(){plugin.els['content'].remove();plugin.els['overlay'].remove();plugin.els['close'].remove();plugin.els['controls'].remove();plugin.els['wrapper'].remove();$('#glisse-transition-css').remove();},plugin.settings.speed);$element.removeClass('active');document.ontouchmove=function(e){return true;};document.ontouchstart=function(e){return true;};document.ontouchend=function(e){return true;};$(document).unbind("keydown");if(plugin.settings.fullscreen){if(document.exitFullscreen){document.exitFullscreen();}else if(document.mozCancelFullScreen){document.mozCancelFullScreen();}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen();}}};var addImage=function addImage(pic){spinner(true);var img=$('',{src:pic}).appendTo(plugin.els['content']);plugin.els['content'].css({backgroundImage:'url("'+pic+'")'});img.load(function(){img.remove();spinner(false);plugin.els['content'].css({visibility:'visible',opacity:1}).css(getPrefix('transform')+'transform','scale(1)');});};var changePicture=function changePicture(direction){var $currentEl=$('img['+plugin.settings.dataName+'="'+pictureUrl+'"][rel='+group+']'),currentId=$('img[rel='+group+']').index($currentEl),totGroup=$('img[rel='+group+']').length,change=true;if((currentId===0&&direction==='prev')||(currentId===(totGroup-1)&&direction==='next')){change=false;}if(change&&isChange===false){isChange=true;var $next=(direction==='next')?$('img[rel='+group+']').eq(currentId+1):$('img[rel='+group+']').eq(currentId-1);if(plugin.settings.mobile){if(direction!=='next'){plugin.els['content'].css(getPrefix('transform')+'transform','translateX(2000px)');}else{plugin.els['content'].css(getPrefix('transform')+'transform','translateX(-2000px)');}}else{plugin.els['content'].addClass('glisse-transitionOut-'+direction);var cssProp=getPrefix('transition')+'transition',cssVal='opacity '+plugin.settings.speed+'ms ease, '+getPrefix('transform')+'transform '+plugin.settings.speed+'ms ease';plugin.els['content'].css(cssProp,'');}pictureUrl=getFullUrl($next);if($.inArray(pictureUrl,cache)===-1)spinner(true);$currentEl.removeClass('active');$next.addClass('active');setChangeStatus();setTitle();setTimeout(function(){if(plugin.settings.mobile){plugin.els['content'].css(getPrefix('transform')+'transform','translateX(0px)').css('display','none');}var img=$('',{src:pictureUrl}).appendTo(plugin.els['content']);plugin.els['content'].css({backgroundImage:'url("'+pictureUrl+'")'});img.load(function(){img.remove();if($.inArray(pictureUrl,cache)===-1)spinner(false);if(plugin.settings.mobile){plugin.els['content'].css('display','block');}plugin.els['content'].removeClass('glisse-transitionOut-'+direction).addClass('glisse-transitionIn-'+direction);setTimeout(function(){plugin.els['content'].removeClass('glisse-transitionIn-'+direction).css(cssProp,cssVal);isChange=false;},plugin.settings.changeSpeed);});},plugin.settings.changeSpeed);}else if(change===false&&isChange===false){if(plugin.settings.mobile){plugin.els['content'].css(getPrefix('transform')+'transform','translateX(0px)');}plugin.els['content'].addClass('shake');setTimeout(function(){plugin.els['content'].removeClass('shake');},600);}};var setChangeStyle=function setChangeStyle(){var prefix=getPrefix('transform'),prefixAnimation=getPrefix('animation'),effect=[];if(!isValidEffect(plugin.settings.effect))plugin.settings.effect='bounce';switch(plugin.settings.effect){case'bounce':effect=['@'+prefixAnimation+'keyframes outLeft {','0% { '+prefix+'transform: translateX(0);}','20% { opacity: 1;'+prefix+'transform: translateX(20px);}','100% { opacity: 0;'+prefix+'transform: translateX(-2000px);}','}','@'+prefixAnimation+'keyframes inLeft {','0% {opacity: 0;'+prefix+'transform: translateX(-2000px);}','60% {opacity: 1;'+prefix+'transform: translateX(30px);}','80% {'+prefix+'transform: translateX(-10px);}','100% {'+prefix+'transform: translateX(0);}','}','@'+prefixAnimation+'keyframes outRight {','0% {'+prefix+'transform: translateX(0);}','20% {opacity: 1;'+prefix+'transform: translateX(-20px);}','100% {opacity: 0;'+prefix+'transform: translateX(2000px);}','}','@'+prefixAnimation+'keyframes inRight {','0% {opacity: 0;'+prefix+'transform: translateX(2000px);}','60% {opacity: 1;'+prefix+'transform: translateX(-30px);}','80% {'+prefix+'transform: translateX(10px);}','100% {'+prefix+'transform: translateX(0);}','}'].join('');break;case'fadeBig':effect=['@'+prefixAnimation+'keyframes outLeft {','0% { opacity: 1;'+prefix+'transform: translateX(0);}','100% {opacity: 0;'+prefix+'transform: translateX(-2000px);}','}','@'+prefixAnimation+'keyframes inLeft {','0% { opacity: 0;'+prefix+'transform: translateX(-2000px);}','100% {opacity: 1;'+prefix+'transform: translateX(0);}','}','@'+prefixAnimation+'keyframes outRight {','0% { opacity: 1;'+prefix+'transform: translateX(0);}','100% {opacity: 0;'+prefix+'transform: translateX(2000px);}','}','@'+prefixAnimation+'keyframes inRight {','0% { opacity: 0;'+prefix+'transform: translateX(2000px);}','100% {opacity: 1;'+prefix+'transform: translateX(0);}','}'].join('');break;case'fade':effect=['@'+prefixAnimation+'keyframes outLeft {','0% { opacity: 1;'+prefix+'transform: translateX(0);}','100% {opacity: 0;'+prefix+'transform: translateX(-200px);}','}','@'+prefixAnimation+'keyframes inLeft {','0% { opacity: 0;'+prefix+'transform: translateX(-200px);}','100% {opacity: 1;'+prefix+'transform: translateX(0);}','}','@'+prefixAnimation+'keyframes outRight {','0% { opacity: 1;'+prefix+'transform: translateX(0);}','100% {opacity: 0;'+prefix+'transform: translateX(200px);}','}','@'+prefixAnimation+'keyframes inRight {','0% { opacity: 0;'+prefix+'transform: translateX(200px);}','100% {opacity: 1;'+prefix+'transform: translateX(0);}','}'].join('');break;case'roll':effect=['@'+prefixAnimation+'keyframes outLeft {','0% { opacity: 1;'+prefix+'transform: translateX(0px) rotate(0deg);}','100% {opacity: 0;'+prefix+'transform: translateX(-100%) rotate(-120deg);}','}','@'+prefixAnimation+'keyframes inLeft {','0% { opacity: 0;'+prefix+'transform: translateX(-100%) rotate(-120deg);}','100% {opacity: 1;'+prefix+'transform: translateX(0px) rotate(0deg);}','}','@'+prefixAnimation+'keyframes outRight {','0% { opacity: 1;'+prefix+'transform:translateX(0px) rotate(0deg);}','100% {opacity: 0;'+prefix+'transform:translateX(100%) rotate(120deg);}','}','@'+prefixAnimation+'keyframes inRight {','0% { opacity: 0;'+prefix+'transform: translateX(100%) rotate(120deg);}','100% {opacity: 1;'+prefix+'transform: translateX(0px) rotate(0deg);}','}'].join('');break;case'rotate':effect=['@'+prefixAnimation+'keyframes outRight {','0% { opacity: 1;'+prefix+'transform: rotate(0deg);'+prefix+'transform-origin:left bottom;}','100% {opacity: 0;'+prefix+'transform: rotate(-90deg);'+prefix+'transform-origin:left bottom;}','}','@'+prefixAnimation+'keyframes inLeft {','0% { opacity: 0;'+prefix+'transform: rotate(90deg);'+prefix+'transform-origin:left bottom;}','100% {opacity: 1;'+prefix+'transform: rotate(0deg);'+prefix+'transform-origin:left bottom;}','}','@'+prefixAnimation+'keyframes outLeft {','0% { opacity: 1;'+prefix+'transform: rotate(0deg);'+prefix+'transform-origin:right bottom;}','100% {opacity: 0;'+prefix+'transform: rotate(90deg);'+prefix+'transform-origin:right bottom;}','}','@'+prefixAnimation+'keyframes inRight {','0% { opacity: 0;'+prefix+'transform: rotate(-90deg);'+prefix+'transform-origin:right bottom;}','100% {opacity: 1;'+prefix+'transform: rotate(0deg);'+prefix+'transform-origin:right bottom;}','}'].join('');break;case'flipX':effect=['@'+prefixAnimation+'keyframes outLeft {','0% {'+prefix+'transform: perspective(400px) rotateX(0deg);opacity: 1;}','100% {'+prefix+'transform: perspective(400px) rotateX(90deg);opacity: 0;}','}','@'+prefixAnimation+'keyframes inLeft {','0% {'+prefix+'transform: perspective(400px) rotateX(90deg);opacity: 0;}','40% {'+prefix+'transform: perspective(400px) rotateX(-10deg);}','70% {'+prefix+'transform: perspective(400px) rotateX(10deg);}','100% {'+prefix+'transform: perspective(400px) rotateX(0deg);opacity: 1;}','}','@'+prefixAnimation+'keyframes outRight {','0% {'+prefix+'transform: perspective(400px) rotateX(0deg);opacity: 1;}','100% {'+prefix+'transform: perspective(400px) rotateX(90deg);opacity: 0;}','}','@'+prefixAnimation+'keyframes inRight {','0% {'+prefix+'transform: perspective(400px) rotateX(90deg);opacity: 0;}','40% {'+prefix+'transform: perspective(400px) rotateX(-10deg);}','70% {'+prefix+'transform: perspective(400px) rotateX(10deg);}','100% {'+prefix+'transform: perspective(400px) rotateX(0deg);opacity: 1;}','}'].join('');break;case'flipY':effect=['@'+prefixAnimation+'keyframes outLeft {','0% {'+prefix+'transform: perspective(400px) rotateY(0deg);opacity: 1;}','100% {'+prefix+'transform: perspective(400px) rotateY(90deg);opacity: 0;}','}','@'+prefixAnimation+'keyframes inLeft {','0% {'+prefix+'transform: perspective(400px) rotateY(90deg);opacity: 0;}','40% {'+prefix+'transform: perspective(400px) rotateY(-10deg);}','70% {'+prefix+'transform: perspective(400px) rotateY(10deg);}','100% {'+prefix+'transform: perspective(400px) rotateY(0deg);opacity: 1;}','}','@'+prefixAnimation+'keyframes outRight {','0% {'+prefix+'transform: perspective(400px) rotateY(0deg);opacity: 1;}','100% {'+prefix+'transform: perspective(400px) rotateY(-90deg);opacity: 0;}','}','@'+prefixAnimation+'keyframes inRight {','0% {'+prefix+'transform: perspective(400px) rotateY(90deg);opacity: 0;}','40% {'+prefix+'transform: perspective(400px) rotateY(-10deg);}','70% {'+prefix+'transform: perspective(400px) rotateY(10deg);}','100% {'+prefix+'transform: perspective(400px) rotateY(0deg);opacity: 1;}','}'].join('');break;}var changeClass=['.glisse-transitionOut-next {',prefixAnimation+'animation: '+plugin.settings.changeSpeed+'ms ease;',prefixAnimation+'animation-name: outLeft;',prefixAnimation+'animation-fill-mode: both;','}','.glisse-transitionIn-prev {',prefixAnimation+'animation: '+plugin.settings.changeSpeed+'ms ease;',prefixAnimation+'animation-name: inLeft;',prefixAnimation+'animation-fill-mode: both;','}','.glisse-transitionOut-prev {',prefixAnimation+'animation: '+plugin.settings.changeSpeed+'ms ease;',prefixAnimation+'animation-name: outRight;',prefixAnimation+'animation-fill-mode: both;','}','.glisse-transitionIn-next {',prefixAnimation+'animation: '+plugin.settings.changeSpeed+'ms ease;',prefixAnimation+'animation-name: inRight;',prefixAnimation+'animation-fill-mode: both;','}'].join('');if(!document.getElementById('glisse-css')){$('').appendTo('head');}else{$('#glisse-css').html(effect+changeClass);}};var setChangeStatus=function setChangeStatus(){var $currentEl=$('img['+plugin.settings.dataName+'="'+pictureUrl+'"]'),parent=plugin.settings.parent?$currentEl.closest(plugin.settings.parent):$currentEl.parent();if(!parent.next().find('img[rel='+group+']').length){plugin.els['controls'].find('.glisse-next').addClass('ended');}else{plugin.els['controls'].find('.glisse-next').removeClass('ended');}if(!parent.prev().find('img[rel='+group+']').length){plugin.els['controls'].find('.glisse-prev').addClass('ended');}else{plugin.els['controls'].find('.glisse-prev').removeClass('ended');}};var setTitle=function setTitle(){var $legend=plugin.els['controlstit'].find('.glisse-legend');var $currentEl=$('img['+plugin.settings.dataName+'="'+pictureUrl+'"]');var title=$currentEl.attr('title');$legend.html((title)?title:'');};var spinner=function spinner(action){plugin.els['overlay'].toggleClass('loading',action);};var getPrefix=function getPrefix(prop){var prefixes=['Moz','Khtml','Webkit','O','ms'],elem=document.createElement('div'),upper=prop.charAt(0).toUpperCase()+prop.slice(1);for(var len=prefixes.length;len--;){if((prefixes[len]+upper)in elem.style)return('-'+prefixes[len].toLowerCase()+'-');}return false;};var readyElement=(function(){return{observe:function(id,callback){var interval=setInterval(function(){if(document.getElementById(id)){callback(document.getElementById(id));clearInterval(interval);}},60);}};})();var isValidEffect=function isValidEffect(effect){return!!~$.inArray(effect,['bounce','fadeBig','fade','roll','rotate','flipX','flipY']);};var touchHandler=function touchHandler(e){if(e.type=="touchstart"){mobile.touching=true;if(e.touches.length==1){plugin.els['content'].css(getPrefix('transition')+'transition','');var touch=e.touches[0];if(touch.target.onclick){touch.target.onclick();}mobile.oX=touch.pageX;mobile.nX=0;mobile.scrollX=0;}}else if(e.type=="touchmove"){e.preventDefault();mobile.scrollX=null;if(e.touches.length==1){var touch=e.touches[0];mobile.nX=touch.pageX;if(mobile.oX>mobile.nX){mobile.scrollX=-(mobile.oX-mobile.nX);}else if(mobile.nX>mobile.oX){mobile.scrollX=mobile.nX-mobile.oX;}plugin.els['content'].css(getPrefix('transform')+'transform','translateX('+(mobile.scrollX)+'px)');}}else if(e.type=="touchend"||e.type=="touchcancel"){mobile.touching=false;var cssProp=getPrefix('transition')+'transition',cssVal='opacity '+plugin.settings.speed+'ms ease, '+getPrefix('transform')+'transform '+plugin.settings.speed+'ms ease';plugin.els['content'].css(cssProp,cssVal);if(mobile.scrollX>140){changePicture('prev');}else if(mobile.scrollX<-(140)){changePicture('next');}else{plugin.els['content'].css(getPrefix('transform')+'transform','translateX(0px)');}}else{}};plugin.changeEffect=function(effect){if(isValidEffect(effect)){plugin.settings.effect=effect;setChangeStyle();}};plugin.init();};$.fn.glisse=function(options){return this.each(function(){if(undefined===$(this).data('glisse')){var plugin=new $.glisse(this,options);$(this).data('glisse',plugin);}});};})(jQuery,window.document);