1( function($) { 2 3 $.fn.wpBookletExtended = function(settings) { 4 5 $(this).each( function(i,v) { 6 7 new wpbookletExtended(jQuery(v),settings); 8 9 }); 10 11 } 12 13 function wpbookletExtended(container,opts) { 14 15 var settings = opts; 16 var booklet = container.find(".wp-booklet"); 17 var bookletThumbsContainer = container.find(".wp-booklet-thumbs"); 18 19 function _construct() { 20 21 prepareSettings(); 22 setUpBooklet(); 23 setUpCarousel(); 24 resizeBooklet(); 25 initializePopups(); 26 27 } 28 29 function prepareSettings() { 30 31 var defaults = { 32 width:600, 33 height:400, 34 speed:1000, 35 delay:5000, 36 arrowsEnabled:false, 37 pageNumbersEnabled:true, 38 coverBehavior:'open', 39 padding:10, 40 thumbnailsEnabled:false, 41 popupsEnabled:false, 42 bookletMargin:45, 43 direction:'LTR', 44 thumbnailsContainerMargin:11 45 } 46 47 settings = $.extend(defaults,settings); 48 49 settings.bookletWidth = settings.width + ( 4 * settings.padding); 50 settings.bookletHeight = settings.height + ( 2 * settings.padding); 51 settings.containerWidth = settings.bookletWidth + settings.bookletMargin * 2; 52 settings.bookletThumbsContainerWidth = settings.bookletWidth - settings.thumbnailsContainerMargin * 2; 53 54 55 } 56 57 function setUpBooklet() { 58 59 var bookletSettings = { 60 width:settings.bookletWidth, 61 height:settings.bookletHeight, 62 speed:settings.speed, 63 create: function(event, data) { 64 65 if ( settings.thumbnailsEnabled ) { 66 bookletThumbsContainer.find(' .wp-booklet-carousel li:eq(0) a').addClass('selected'); 67 } 68 69 }, 70 direction:settings.direction, 71 arrows: settings.arrowsEnabled, 72 pageNumbers: settings.pageNumbersEnabled, 73 start: function(event, data) { 74 75 if ( settings.thumbnailsEnabled ) { 76 77 var index = data.index; 78 79 if ( settings.coverBehavior != 'open' ) { 80 index--; 81 } 82 83 if ( index < 0 ) { 84 index = 0; 85 } 86 87 var carouselPage = booklet.find(".page").eq(index).attr("data-page"); 88 89 bookletThumbsContainer.find(' .wp-booklet-carousel li a').removeClass('selected'); 90 bookletThumbsContainer.find(' .wp-booklet-carousel li:eq('+carouselPage+') a').addClass('selected'); 91 bookletThumbsContainer.find(" .wp-booklet-carousel").wpbookletcarousel('scroll', carouselPage); 92 93 } 94 95 }, 96 pagePadding:settings.padding 97 }; 98 99 if ( settings.delay > 0 ) { 100 bookletSettings.auto = true; 101 bookletSettings.delay = settings.delay; 102 } 103 104 if ( settings.coverBehavior == 'center-closed' ) { 105 bookletSettings.autoCenter = true; 106 } 107 108 if ( settings.coverBehavior != 'open' ) { 109 bookletSettings.closed = true; 110 } 111 else { 112 bookletSettings.closed = ( ( settings.coverBehavior == 'center-closed' || settings.coverBehavior == 'closed' ) ? true : false ); 113 } 114 115 booklet.wpbooklet(bookletSettings); 116 117 booklet.find(".page").css("padding",settings.padding); 118 119 booklet.find(".page img").each( function(i,v) { 120 var img = jQuery(v); 121 var src = img.attr("src"); 122 var preloader = jQuery("<div class='wp-booklet-image-loader' data-src='"+src+"'></div>"); 123 img.after(preloader); 124 img.remove(); 125 }); 126 127 loadImages([ 128 booklet.find(".b-p0 .wp-booklet-image-loader"), 129 booklet.find(".b-p1 .wp-booklet-image-loader"), 130 booklet.find(".b-p2 .wp-booklet-image-loader") 131 ]); 132 booklet.bind('bookletchange', function(event,data) { 133 var pages = [ 134 booklet.find(".wp-booklet-image-loader").eq(data.index-1), 135 booklet.find(".wp-booklet-image-loader").eq(data.index), 136 booklet.find(".wp-booklet-image-loader").eq((data.index+1)) 137 ]; 138 loadImages(pages); 139 }); 140 141 } 142 143 function setUpCarousel() { 144 145 if ( settings.thumbnailsEnabled ) { 146 bookletThumbsContainer.find('.wp-booklet-carousel').wpbookletcarousel({ 147 rtl: ( settings.direction=='LTR' ? false : true ) 148 }); 149 bookletThumbsContainer.find('.wp-booklet-carousel-prev').wpbookletcarouselControl({ target: '-=1' }); 150 bookletThumbsContainer.find('.wp-booklet-carousel-next').wpbookletcarouselControl({ target: '+=1' }); 151 jQuery('.wp-booklet-carousel-next, .wp-booklet-carousel-prev').on('wpbookletcarouselcontrol:active', function(e) { 152 jQuery(e.currentTarget).removeClass('inactive'); 153 }); 154 jQuery('.wp-booklet-carousel-next, .wp-booklet-carousel-prev').on('wpbookletcarouselcontrol:inactive', function(e) { 155 jQuery(e.currentTarget).addClass('inactive'); 156 }); 157 bookletThumbsContainer.find('.wp-booklet-carousel a').on('click', function(e) { 158 bookletThumbsContainer.find(' .wp-booklet-carousel li a').removeClass('selected'); 159 jQuery(e.currentTarget).addClass('selected'); 160 161 if ( settings.coverBehavior == 'open' ) { 162 var index = jQuery(e.currentTarget).parent().parent().find("li").index( jQuery(e.currentTarget).parent() ); 163 if ( index == 0 ) { index = 'start' } 164 } 165 else { 166 var index = jQuery(e.currentTarget).parent().parent().find("li").index( jQuery(e.currentTarget).parent() ) + 1; 167 if ( index == 1 ) { index = 'start' } 168 } 169 booklet.wpbooklet('gotopage',index); 170 }); 171 172 173 } 174 175 } 176 177 function resizeBooklet() { 178 179 resizeBooklet(); 180 jQuery(window).resize(resizeBooklet); 181 function resizeBooklet() { 182 183 jQuery(booklet).each( function(i,v) { 184 var allowedWidth = jQuery(v).parent().parent().width(); 185 186 jQuery(v).wpbooklet("option","width",allowedWidth - settings.bookletMargin * 2); 187 jQuery(v).wpbooklet("option","height",((allowedWidth - settings.bookletMargin * 2) / 2) * settings.height / settings.width); 188 jQuery(v).parent().find(".wp-booklet-thumbs-light").width( allowedWidth - settings.bookletMargin * 2 ); 189 }); 190 } 191 192 } 193 194 function initializePopups() { 195 196 if ( settings.popupsEnabled ) { 197 198 booklet.find(".wp-booklet-popup-trigger").wpbookletImagePopup({ 199 overlayClass:'wpbooklet-image-popup-overlay-light', 200 beforeOpen: function(popup, link) { 201
202 booklet.wpbooklet( "option", "auto", false ); 203 204 if ( typeof link.attr("data-link") !== "undefined" ) { 205 206 popup.find("img").wrap("<a>"); 207 popup.find("a").attr("href", link.attr("data-link")); 208 209 } 210 211 }, 212 afterClose: function(popup, link) { 213 214 if ( settings.delay ) { 215 booklet.wpbooklet( "option", "auto", true ); 216 } 217 else { 218 booklet.wpbooklet( "option", "auto", false ); 219 } 220 221 } 222 }); 223 224 } 225 226 } 227 228 function loadImages(pages) { 229 jQuery.each(pages, function(i,v) { 230 var imageLoader = v; 231 var src = imageLoader.attr("data-src"); 232 var img = jQuery("<img/>"); 233 234 if ( imageLoader.siblings("img").length == 0 ) { 235 img.attr("src",src); 236 img.one("load", function(e) { 237 if ( imageLoader.is(":visible") ) { 238 imageLoader.after(jQuery(e.currentTarget)); 239 imageLoader.hide(); 240 } 241 }).each( function(i,v) { 242 if(jQuery(v).complete) { 243 jQuery(v).load(); 244 } 245 }); 246 } 247 248 }); 249 250 } 251 252 _construct(); 253 254 } 255 256})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.