1(function ($) { 2 "use strict"; 3 /*jslint undef: false, browser: true, devel: false, eqeqeq: false, bitwise: false, white: false, plusplus: false, regexp: false, nomen: false */ 4 /*jshint undef: false, browser: true, devel: false, eqeqeq: false, bitwise: false, white: false, plusplus: false, regexp: false, nomen: false, validthis: true */ 5 /*global jQuery,setTimeout,setInterval,clearInterval,clearTimeout,WebKitCSSMatrix,pixelentity */ 6 7 $.pixelentity = $.pixelentity || {version: '1.0.0'}; 8 9 $.pixelentity.peVoloCaptions = { 10 conf: { 11 slider: false, 12 origW: false, 13 origH: false, 14 orig: "default", 15 api: false 16 } 17 }; 18 19 20 // 0-480, 481-767, 768-980, 980 - anything 21 var cssT = $.support.csstransitions; 22 var cssA = $.support.cssanimation; 23 var ieOld = $.browser.msie && $.browser.version < 9; 24 var jwin = $(window); 25 26 var properties = ""; 27 28 if (cssT) { 29 //properties = "opacity, %0transform".format($.support.csstransitionsPrefix); 30 properties = "opacity"; 31 } 32 33 function PeVoloCaptions(target, conf) { 34 var w,h,cw,ch; 35 var slider; 36 var slides; 37 var active = {}; 38 var current = -1; 39 var scaled = false; 40 //var captionsLayer; 41 42 function resizeCaption(c) { 43 if (!w || !h || w<20 || h<20) { 44 setTimeout(resize,100); 45 return; 46 } 47 c = $(c); 48 49 var scaler; 50 51 if (c.find(".peCaptionLayer").length > 0) { 52 c.css({ 53 "margin": 0, 54 "padding": 0, 55 "background": "none" 56 }); 57 var r = 1,x = 0, y = 0; 58 59 cw = parseInt(c.attr("data-orig-width"),10) || conf.origW; 60 ch = parseInt(c.attr("data-orig-height"),10) || conf.origH; 61 62 if (cw && ch) { 63 scaler = $.pixelentity.Geom.getScaler("fit","center","center",w,h,cw,ch); 64 r = scaler.ratio; 65 x = scaler.offset.w; 66 y = scaler.offset.h; 67 } else { 68 r = h/conf.origH; 69 } 70 71 if (r != 1 || x !== 0 || y !== 0 || scaled) { 72 c.transform(r,x,y,null,null,true); 73 scaled = true; 74 } 75 76 } else { 77 var align = (c.attr("data-align") || "bottom,left").split(","); 78 scaler = $.pixelentity.Geom.getScaler("none",align[1],align[0],w,h,c.outerWidth(),c.outerHeight()); 79 var co = (c.attr("data-offset") || "-20,40").split(","); 80 c.css({ 81 "margin-top": scaler.offset.h+parseInt(co[0],10), 82 "margin-left": scaler.offset.w+parseInt(co[1],10) 83 }); 84 } 85 } 86 87 88 function resizeCaptions() { 89 var i,j; 90 for (i in active) { 91 if (typeof i == "string" && active[i]) { 92 for (j = 0; j<active[i].length;j++) { 93 resizeCaption(active[i][j]); 94 } 95 } 96 } 97 } 98 99 function removeAnimationClasses() { 100 var layer = $(this); 101 layer.removeClass(layer.data("transition-classes")); 102 } 103 104 function resize() { 105 w = target.width(); 106 h = target.height(); 107 resizeCaptions(); 108 } 109 110 /* 111 function remove(el,idx) { 112 slides[idx].append(active[idx]); 113 delete active[idx]; 114 } 115 */ 116 117 function fadeIn(el) { 118 var jel = $(el); 119 120 var duration = parseFloat(jel.attr("data-duration") || 0.5); 121 var delay = parseFloat(jel.attr("data-delay") || 0); 122 var layers = jel.find(".peCaptionLayer"); 123 var i,layer,x,y,tClass,cmd; 124 125 if (layers.length > 0) { 126 127 jel.addClass("pe-has-layers"); 128 129 for (i=0;i<layers.length;i++) { 130 layer = layers.eq(i); 131 132 duration = parseFloat(layer.attr("data-duration"),10) || 1;
133 delay = parseFloat(layer.attr("data-delay"),10) || 0; 134 135 136 if ((cmd = layer.attr("data-command"))) { 137 if (typeof slider[cmd] === "function") { 138 if (delay) { 139 setTimeout(function () { 140 slider[cmd](); 141 },delay*1000); 142 } else { 143 slider[cmd](); 144 } 145 } 146 //continue; 147 } 148 149 x = parseInt(layer.attr("data-x"),10) || 0; 150 y = parseInt(layer.attr("data-y"),10) || 0; 151 152 //conf.orig = "center"; 153 154 if (conf.orig === "center" || layer.attr("data-origin") === "center") { 155 156 if (h <= 400 && y < 0) { 157 //alert("here"); 158 //y = 0; 159 } 160 161 x += (cw - layer.width()) >> 1; 162 y += (ch - layer.height()) >> 1; 163 } 164 165 layer.css({ 166 "left": x+"px", 167 "top": y+"px" 168 }); 169 170 if (cssA) { 171 layer[0].style[cssA+"Delay"] = delay + "s"; 172 layer[0].style[cssA+"Duration"] = duration + "s"; 173 tClass = "animated "; 174 tClass += layer.attr("data-transition") || "peZoom"; 175 // workaround for some chrome version which reach 100% cpu usage in a background tab 176 // disabled for now, in case they fix 177 //layer.one("webkitAnimationEnd",removeAnimationClasses); 178 layer.addClass(tClass).data("transition-classes",tClass); 179 } else { 180 //layer.stop().css("opacity",0).delay(delay*1000).animate({opacity:ieOld ? 1 : 1},Math.min(duration,1)*1000); 181 layer.stop().css("opacity",0).delay(delay*1000).animate({opacity:1},ieOld ? 0 : Math.min(duration,1)*1000); 182 } 183 184 } 185 186 jel.css("opacity",1); 187 188 } else { 189 if (cssT) { 190 el.style[cssT+"Property"] = properties; 191 el.style[cssT+"Duration"] = duration + "s"; 192 el.style[cssT+"Delay"] = delay + "s"; 193 jel.css("opacity",1); 194 jel.transform(1,0,0,w,h); 195 } else { 196 jel.stop().delay(delay*1000).animate({opacity:1,left:0,top:0},Math.min(duration,1)*1000); 197 } 198 } 199 jel.find("img").addClass("pe-lazyloading-forceload"); 200 jwin.triggerHandler("pe-lazyloading-refresh"); 201 } 202 203 function fadeOut(el) { 204 var jel = $(el); 205 if (cssT) { 206 el.style[cssT+"Property"] = "opacity"; 207 el.style[cssT+"Delay"] = "0s"; 208 el.style[cssT+"Duration"] = "0.5s"; 209 jel.css("opacity",0); 210 } else { 211 jel.stop().animate({opacity:0}
211,500); 212 } 213 //console.log(el); 214 } 215 216 function killCaption(i) { 217 if (active[i].hasClass('pe-caption-persistent')) { 218 return; 219 } 220 var j, layers; 221 if (cssT) { 222 layers = active[i].find("> div.peCaptionLayer"); 223 for (j=0;j<layers.length;j++) { 224 layers.eq(j).removeClass(layers.eq(j).data("transition-classes")); 225 } 226 } 227 slides[i].append(active[i]); 228 active[i] = false; 229 } 230 231 function clean(force) { 232 var i,j,layers; 233 for (i in active) { 234 if (typeof i == "string" && i != current && active[i]) { 235 killCaption(i); 236 } 237 } 238 } 239 240 function setTransition(el) { 241 el = $(el); 242 el.fadeTo(0,0); 243 var left = 0, top = 0; 244 switch (el.attr("data-transition")) { 245 case "flyRight": 246 left = 100; 247 break; 248 case "flyLeft": 249 left = -100; 250 break; 251 case "flyTop": 252 top = -100; 253 break; 254 case "flyBottom": 255 top = 100; 256 break; 257 } 258 if (cssT) { 259 el.transform(1,left,top,w,h); 260 } else { 261 el.css({left:left,top:top}); 262 } 263 264 } 265 266 267 function change(e,data) { 268 var i,j,idx = data.slideIdx-1; 269 270 if (idx === current) { 271 return; 272 } 273 274 // detect overlap: current slide was being remove when made active again (caused by fast prev/next) 275 if (active[idx]) { 276 current = -1; 277 // destroy anything with no mercy 278 clean(true); 279 } 280 281 var c = slides[idx].find(".peCaption"); 282 283 for (i = 0; i<c.length;i++) { 284 setTransition(c[i]); 285 } 286 287 c.fadeTo(0,0); 288 target.prepend(c); 289 290 current = idx; 291 var persistent = false; 292 293 if (!(active[idx] && active[idx].hasClass('pe-caption-persistent'))) { 294 active[idx] = c; 295 } else { 296 persistent = true; 297 } 298 299 resize(); 300 301 for (i in active) { 302 if (typeof i == "string" && i != idx && active[i]) { 303 if (active[i].hasClass('pe-caption-persistent')) { 304 continue; 305 } 306 for (j = 0; j<active[i].length;j++) { 307 fadeOut(active[i][j]); 308 } 309 } 310 } 311 312 setTimeout(clean,500); 313 314 for (i = 0; i<c.length;i++) { 315 fadeIn(c[i]); 316 } 317 318 if (!persistent) { 319 active[idx] = c; 320 } 321 } 322 323 function ready(e,data) { 324 slides = data.markup; 325 } 326 327 // init function 328 function start() { 329 if (conf.slider) { 330 link(conf.slider); 331 } 332 } 333 334 function link(s) { 335 slider = s; 336 slider.bind("ready.pixelentity",ready); 337 slider.bind("resize.pixelentity",resize); 338 slider.bind("change.pixelentity",change); 339 } 340 341 $.extend(this, { 342 // plublic API 343 link: link, 344 destroy: function() { 345 target.data("peVoloCaptions", null); 346 target = undefined; 347 } 348 }); 349 350 // initialize 351 start(); 352 } 353 354 // jQuery plugin implementation 355 $.fn.peVoloCaptions = function(conf) { 356 357 // return existing instance 358 var api = this.data("peVoloCaptions"); 359 360 if (api) { 361 return api; 362 } 363 364 conf = $.extend(true, {}, $.pixelentity.peVoloCaptions.conf, conf); 365 366 // install the plugin for each entry in jQuery object 367 this.each(function() { 368 var el = $(this); 369 api = new PeVoloCaptions(el, conf); 370 el.data("peVoloCaptions", api); 371 }); 372 373 return conf.api ? api: this; 374 }; 375 376}(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.