( function( $ ) {

	/**
	 * Hook into doResponsiveLightbox event.
	 */
	$( document ).on( 'doResponsiveLightbox', function( event ) {
		// special masonry check
		if ( typeof event.masonry !== 'undefined' && event.masonry === false )
			return false;

		if ( typeof event.pagination_type !== 'undefined' ) {
			// infinite scroll
			if ( event.pagination_type === 'infinite' ) {
				var gallery = event.infinite.gallery;
				var galleryNumber = parseInt( gallery.data( 'gallery_no' ) ) + 1;
				var elements = event.infinite.items;

				if ( typeof window['rlArgsBasicMasonryGallery' + galleryNumber] !== 'undefined' ) {
					var options = window['rlArgsBasicMasonryGallery' + galleryNumber];

					// init masonry
					grid = gallery.masonry( {
						itemSelector: '.rl-gallery-item',
						columnWidth: '.rl-grid-sizer',
						percentPosition: true,
						originLeft: options.originLeft,
						originTop: options.originTop
					} );

					// append new images
					grid.append( elements ).masonry( 'appended', elements );

					// layout masonry
					grid.imagesLoaded( function() {
						grid.masonry( 'layout' );

						// trigger event only for standard lightboxes
						if ( rlArgs.scriptExtension === false ) {
							// reinitialize lightbox
							$.event.trigger( {
								type: 'doResponsiveLightbox',
								script: rlArgs.script,
								selector: rlArgs.selector,
								args: rlArgs,
								masonry: false
							} );
						}
					} );
				}
			// ajax
			} else {
				var grid = $( '.rl-gallery-container[data-gallery_id="' + event.gallery_id + '"] .rl-gallery' );
				var galleryNumber = parseInt( grid.data( 'gallery_no' ) ) + 1;

				if ( typeof window['rlArgsBasicMasonryGallery' + galleryNumber] !== 'undefined' ) {
					var options = window['rlArgsBasicMasonryGallery' + galleryNumber];

					// init masonry
					grid.masonry( {
						itemSelector: '.rl-gallery-item',
						columnWidth: '.rl-grid-sizer',
						percentPosition: true,
						originLeft: options.originLeft,
						originTop: options.originTop
					} );

					// layout masonry
					grid.imagesLoaded( function() {
						grid.masonry( 'layout' );
					} );
				}
			}
		} else {
			$( '.rl-basicmasonry-gallery' ).each( function() {
				var grid = $( this );
				var galleryNumber = parseInt( grid.data( 'gallery_no' ) ) + 1;

				if ( typeof window['rlArgsBasicMasonryGallery' + galleryNumber] !== 'undefined' ) {
					var options = window['rlArgsBasicMasonryGallery' + galleryNumber];

					// init masonry
					grid.masonry( {
						itemSelector: '.rl-gallery-item',
						columnWidth: '.rl-grid-sizer',
						percentPosition: true,
						originLeft: options.originLeft,
						originTop: options.originTop
					} );

					// layout masonry
					grid.imagesLoaded( function() {
						// remove loading class
						grid.parent().removeClass( 'rl-loading' );
						grid.masonry( 'layout' );
					} );
				}
			} );
		}
	} );

} )( jQuery );