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