;( function ( $ , window , document , undefined ) { var pluginName = 'Lightboxed'; var ver = '0.3'; var namespace = 'lightboxed--'; function Lightboxed ( element , options ) { jQuery.extend( this , { Obj : element , _name : pluginName , _defaults : $.fn.lightboxed.defaults , options : jQuery.extend( {} , $.fn.lightboxed.defaults , options ) , uniq : 'id' + ( new Date() ).getTime() , lightbox : {} , cache : {} , index : false , touch : {} , phantoms : { left : false , right : false } , } ); this.init(); } function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; function touchCoordinates ( event ) { return { clientX : /touch/.test( event.type ) ? ( event.originalEvent || event ).changedTouches[0][ 'clientX' ] : event[ 'clientX' ] , clientY : /touch/.test( event.type ) ? ( event.originalEvent || event ).changedTouches[0][ 'clientY' ] : event[ 'clientY' ] , pageX : /touch/.test( event.type ) ? ( event.originalEvent || event ).changedTouches[0][ 'pageX' ] : event[ 'pageX' ] , pageY : /touch/.test( event.type ) ? ( event.originalEvent || event ).changedTouches[0][ 'pageY' ] : event[ 'pageY' ] , timestamp : Date.now() }; } function scrollPreventDefault( event ) { event = event || window.event; if ( event.preventDefault ) { event.preventDefault(); } event.returnValue = false; } function preventDefaultForScrollKeys( event ) { var keys = { 37 : 1 , 38 : 1 , 39 : 1 , 40 : 1 }; if ( keys[ event.keyCode ] ) { scrollPreventDefault( event ); return false; } } function disableScroll() { if ( window.addEventListener ) { window.addEventListener( 'DOMMouseScroll' , scrollPreventDefault , false ); } window.onwheel = scrollPreventDefault; window.onmousewheel = document.onmousewheel = scrollPreventDefault; window.ontouchmove = scrollPreventDefault; document.onkeydown = preventDefaultForScrollKeys; } function enableScroll() { if ( window.removeEventListener ) { window.removeEventListener( 'DOMMouseScroll' , scrollPreventDefault , false ); } window.onmousewheel = document.onmousewheel = null; window.onwheel = null; window.ontouchmove = null; document.onkeydown = null; } $.extend( Lightboxed.prototype , { init : function () { var that = this; this.CacheObj = ( jQuery( document ).find( '#' + namespace + 'cache' ).length > 0 ) ? jQuery( document ).find( '#' + namespace + 'cache' ) : jQuery( '
' ).appendTo( 'body' ); this.cache.container = jQuery( '
' ).appendTo( this.CacheObj ); this.cache.content = jQuery( '
' ).appendTo( this.cache.container ); if ( this.Obj.length > 1 ) { this.cache.thumbs = jQuery( '
' ).appendTo( this.cache.container ); } this.Obj.each( function () { that.addToCache( this ); } ); this.lightbox.container = ( jQuery( document ).find( '#' + namespace + 'container' ).length > 0 ) ? jQuery( document ).find( '#' + namespace + 'container' ) : jQuery( '
' ).addClass( this.options.lightboxCloseClass ).appendTo( 'body' ); this.lightbox.stage = ( this.lightbox.container.find( '#' + namespace + 'stage' ).length > 0 ) ? this.lightbox.container.find( '#' + namespace + 'stage' ) : jQuery( '
' ).appendTo( this.lightbox.container ); this.lightbox.content = ( this.lightbox.stage.find( '#' + namespace + 'content' ).length > 0 ) ? this.lightbox.stage.find( '#' + namespace + 'content' ) : jQuery( '
' ).appendTo( this.lightbox.stage ); this.lightbox.thumbs = ( this.lightbox.container.find( '#' + namespace + 'thumbs' ).length > 0 ) ? this.lightbox.container.find( '#' + namespace + 'thumbs' ) : jQuery( '
' ).appendTo( this.lightbox.stage ); this.lightbox.close = ( this.lightbox.container.find( '#' + namespace + 'bttn_close' ).length > 0 ) ? this.lightbox.container.find( '#' + namespace + 'bttn_close' ) : jQuery( '
' ).appendTo( this.lightbox.container ); this.lightbox.prev = ( this.lightbox.container.find( '#' + namespace + 'bttn_prev' ).length > 0 ) ? this.lightbox.container.find( '#' + namespace + 'bttn_prev' ) : jQuery( '
' ).appendTo( this.lightbox.container ); this.lightbox.next = ( this.lightbox.container.find( '#' + namespace + 'bttn_next' ).length > 0 ) ? this.lightbox.container.find( '#' + namespace + 'bttn_next' ) : jQuery( '
' ).appendTo( this.lightbox.container ); this.registerEvents( 'init' ); } , addToCache : function ( element ) { if ( ( jQuery( element ).attr( 'data-link' ) || jQuery( element ).attr( 'href' ) || jQuery( element ).attr( 'data-src' ) || jQuery( element ).attr( 'src' ) ).match( 'jpg|gif|png|JPG|GIF|PNG|JPEG|jpeg|svg|SVG|tif|TIF|bmp|BMP|webp' ) ) { var content = jQuery( '' ) .attr( 'src' , ( jQuery( element ).attr( 'data-link' ) || jQuery( element ).attr( 'href' ) || jQuery( element ).attr( 'src' ) ) ) .attr( 'alt' , jQuery( element ).attr( 'alt' ) ) .attr( 'data-caption' , jQuery( element ).attr( 'data-caption' ) ); } else if ( ( jQuery( element ).attr( 'data-link' ) || jQuery( element ).attr( 'href' ) ).match( '^#' ) && jQuery( ( jQuery( element ).attr( 'data-link' ) || jQuery( element ).attr( 'href' ) ) ).length > 0 ) { var content = jQuery( jQuery( element ).attr( 'data-link' ) || jQuery( element ).attr( 'href' ) ).html(); } else { var content = jQuery( '