1/** 2 * Isotope v1.5.04 3 * An exquisite jQuery plugin for magical layouts 4 * http://isotope.metafizzy.co 5 * 6 * Commercial use requires one-time license fee 7 * http://metafizzy.co/#licenses 8 * 9 * Copyright 2011 David DeSandro / Metafizzy 10 */ 11/*jshint curly: true, eqeqeq: true, forin: false, immed: false, newcap: true, noempty: true, undef: true */ 12/*global Modernizr: true, jQuery: true */ 13(function (a, b, c) { 14 "use strict"; 15 var d = function (a) { 16 return a.charAt(0).toUpperCase() + a.slice(1) 17 } 18 , e = "Moz Webkit Khtml O Ms".split(" ") 19 , f = function (a) { 20 var b = document.documentElement.style 21 , c; 22 if (typeof b[a] == "string") return a; 23 a = d(a); 24 for (var f = 0, g = e.length; f < g; f++) { 25 c = e[f] + a; 26 if (typeof b[c] == "string") return c 27 } 28 } 29 , g = f("transform") 30 , h = f("transitionProperty") 31 , i = { 32 csstransforms: function () { 33 return !!g 34 } 35 , csstransforms3d: function () { 36 var a = !!f("perspective"); 37 if (a) { 38 var c = " -o- -moz- -ms- -webkit- -khtml- ".split(" ") 39 , d = "@media (" + c.join("transform-3d),(") + "modernizr)" 40 , e = b("<style>" + d + "{#modernizr{height:3px}}" + "</style>").appendTo("head") 41 , g = b('<div id="modernizr" />').appendTo("html"); 42 a = g.height() === 3, g.remove(), e.remove() 43 } 44 return a 45 } 46 , csstransitions: function () { 47 return !!h 48 } 49 }; 50 if (a.Modernizr) 51 for (var j in i) Modernizr.hasOwnProperty(j) || Modernizr.addTest(j, i[j]); 52 else a.Modernizr = function () { 53 var a = { 54 _version: "1.6ish: miniModernizr for Isotope" 55 } 56 , c = " " 57 , d, e; 58 for (e in i) d = i[e](), a[e] = d, c += " " + (d ? "" : "no-") + e; 59 b("html").addClass(c); 60 return a 61 }(); 62 if (Modernizr.csstransforms) { 63 var k = Modernizr.csstransforms3d ? { 64 translate: function (a) { 65 return "translate3d(" + a[0] + "px, " + a[1] + "px, 0) " 66 } 67 , scale: function (a) { 68 return "scale3d(" + a + ", " + a + ", 1) " 69 } 70 } : { 71 translate: function (a) { 72 return "translate(" + a[0] + "px, " + a[1] + "px) " 73 } 74 , scale: function (a) { 75 return "scale(" + a + ") " 76 } 77 } 78 , l = function (a, c, d) { 79 var e = b.data(a, "isoTransform") || {} 80 , f = {} 81 , h, i = {} 82 , j; 83 f[c] = d, b.extend(e, f); 84 for (h in e) j = e[h], i[h] = k[h](j); 85 var l = i.translate || "" 86 , m = i.scale || "" 87 , n = l + m; 88 b.data(a, "isoTransform", e), a.style[g] = n 89 }; 90 b.cssNumber.scale = !0, b.cssHooks.scale = { 91 set: function (a, b) { 92 l(a, "scale", b) 93 } 94 , get: function (a, c) { 95 var d = b.data(a, "isoTransform"); 96 return d && d.scale ? d.scale : 1 97 } 98 }, b.fx.step.scale = function (a) { 99 b.cssHooks.scale.set(a.elem, a.now + a.unit) 100 }, b.cssNumber.translate = !0, b.cssHooks.translate = { 101 set: function (a, b) { 102 l(a, "translate", b) 103 } 104 , get: function (a, c) { 105 var d = b.data(a, "isoTransform"); 106 return d && d.translate ? d.translate : [0, 0] 107 } 108 } 109 } 110 var m, n; 111 Modernizr.csstransitions && (m = { 112 WebkitTransitionProperty: "webkitTransitionEnd" 113 , MozTransitionProperty: "transitionend" 114 , OTransitionProperty: "oTransitionEnd" 115 , transitionProperty: "transitionEnd" 116 }[h], n = f("transitionDuration")); 117 var o = b.event 118 , p; 119 o.special.smartresize = { 120 setup: function () { 121 b(this).bind("resize", o.special.smartresize.handler) 122 } 123 , teardown: function () { 124 b(this).unbind("resize", o.special.smartresize.handler) 125 } 126 , handler: function (a, b) { 127 var c = this 128 , d = arguments; 129 a.type = "smartresize", p && clearTimeout(p), p = setTimeout(function () { 130 jQuery.event.handle.apply(c, d) 131 }, b === "execAsap" ? 0 : 100) 132 } 133 }, b.fn.smartresize = function (a) { 134 return a ? this.bind("smartresize", a) : this.trigger("smartresize", ["execAsap"]) 135 }, b.Isotope = function (a, c, d) { 136 this.element = b(c), this._create(a), this._init(d) 137 }; 138 var q = ["overflow", "position", "width", "height"]; 139 b.Isotope.settings = { 140 resizable: !0 141 , layoutMode: "masonry" 142 , containerClass: "isotope" 143 , itemClass: "isotope-item" 144 , hiddenClass: "isotope-hidden" 145 , hiddenStyle: { 146 opacity: 0 147 , scale: .001 148 } 149 , visibleStyle: { 150 opacity: 1 151 , scale: 1 152 } 153 , animationEngine: "best-available" 154 , animationOptions: { 155 queue: !1
156 , duration: 800 157 } 158 , sortBy: "original-order" 159 , sortAscending: !0 160 , resizesContainer: !0 161 162 , itemPositionDataEnabled: !1 163 }, b.Isotope.prototype = { 164 _create: function (c) { 165 this.options = b.extend({}, b.Isotope.settings, c), this.styleQueue = [], this.elemCount = 0; 166 var d = this.element[0].style; 167 this.originalStyle = {}; 168 for (var e = 0, f = q.length; e < f; e++) { 169 var g = q[e]; 170 this.originalStyle[g] = d[g] || "" 171 } 172 this.element.css({ 173 overflow: "hidden" 174 , position: "relative" 175 }), this._updateAnimationEngine(), this._updateUsingTransforms(); 176 var h = { 177 "original-order": function (a, b) { 178 b.elemCount++; 179 return b.elemCount 180 } 181 , random: function () { 182 return Math.random() 183 } 184 }; 185 this.options.getSortData = b.extend(this.options.getSortData, h), this.reloadItems(); 186 var i = b(document.createElement("div")).prependTo(this.element); 187 this.offset = i.position(), i.remove(); 188 var j = this; 189 setTimeout(function () { 190 j.element.addClass(j.options.containerClass) 191 }, 0), this.options.resizable && b(a).bind("smartresize.isotope", function () { 192 j.resize() 193 }), this.element.delegate("." + this.options.hiddenClass, "click", function () { 194 return !1 195 }) 196 } 197 , _getAtoms: function (a) { 198 var b = this.options.itemSelector 199 , c = b ? a.filter(b).add(a.find(b)) : a 200 , d = { 201 position: "absolute" 202 }; 203 this.usingTransforms && (d.left = 0, d.top = 0), c.css(d).addClass(this.options.itemClass), this.updateSortData(c, !0); 204 return c 205 } 206 , _init: function (a) { 207 this.$filteredAtoms = this._filter(this.$allAtoms), this._sort(), this.reLayout(a) 208 } 209 , option: function (a) { 210 if (b.isPlainObject(a)) { 211 this.options = b.extend(!0, this.options, a); 212 var c; 213 for (var e in a) c = "_update" + d(e), this[c] && this[c]() 214 } 215 } 216 , _updateAnimationEngine: function () { 217 var a = this.options.animationEngine.toLowerCase().replace(/[ _\-]/g, ""); 218 switch (a) { 219 case "css": 220 case "none": 221 this.isUsingJQueryAnimation = !1; 222 break; 223 case "jquery": 224 this.isUsingJQueryAnimation = !0; 225 break; 226 default: 227 this.isUsingJQueryAnimation = !Modernizr.csstransitions 228 } 229 this._updateUsingTransforms() 230 } 231 , _updateTransformsEnabled: function () { 232 this._updateUsingTransforms() 233 } 234 , _updateUsingTransforms: function () { 235 var a = this.usingTransforms = this.options.transformsEnabled && Modernizr.csstransforms && Modernizr.csstransitions && !this.isUsingJQueryAnimation; 236 a || (delete this.options.hiddenStyle.scale, delete this.options.visibleStyle.scale), this.getPositionStyles = a ? this._translate : this._positionAbs 237 } 238 , _filter: function (a) { 239 var b = this.options.filter === "" ? "*" : this.options.filter; 240 if (!b) return a; 241 var c = this.options.hiddenClass 242 , d = "." + c 243 , e = a.filter(d) 244 , f = e; 245 if (b !== "*") { 246 f = e.filter(b); 247 var g = a.not(d).not(b).addClass(c); 248 this.styleQueue.push({ 249 $el: g 250 , style: this.options.hiddenStyle 251 }) 252 } 253 this.styleQueue.push({ 254 $el: f 255 , style: this.options.visibleStyle 256 }), f.removeClass(c); 257 return a.filter(b) 258 } 259 , updateSortData: function (a, c) { 260 var d = this 261 , e = this.options.getSortData 262 , f, g; 263 a.each(function () { 264 f = b(this), g = {}; 265 for (var a in e) !c && a === "original-order" ? g[a] = b.data(this, "isotope-sort-data")[a] : g[a] = e[a](f, d); 266 b.data(this, "isotope-sort-data", g) 267 }) 268 } 269 , _sort: function () { 270 var a = this.options.sortBy 271 , b = this._getSorter 272 , c = this.options.sortAscending ? 1 : -1 273 , d = function (d, e) { 274 var f = b(d, a) 275 , g = b(e, a); 276 f === g && a !== "original-order" && (f = b(d, "original-order"), g = b(e, "original-order")); 277 return (f > g ? 1 : f < g ? -1 : 0) * c 278 }; 279 this.$filteredAtoms.sort(d) 280 } 281 , _getSorter: function (a, c) { 282 return b.data(a, "isotope-sort-data")[c] 283 } 284 , _translate: function (a, b) { 285 return { 286 translate: [a, b] 287 } 288 } 289 , _positionAbs: function (a, b) { 290 return { 291 left: a 292 , top: b 293 } 294 } 295 , _pushPosition: function (a, b, c) { 296 b += this.offset.left, c += this.offset.top; 297 var d = this.getPositionStyles(b, c); 298 this.styleQueue.push({ 299 $el: a 300 , style: d 301 }), this.options.itemPositionDataEnabled && a.data("isotope-item-position", { 302 x: b 303 , y: c 304 }) 305 } 306 , layout: function (a, b) { 307 var c = this.options.layoutMode; 308 this["_" + c + "Layout"](a); 309 if (this.options.resizesContainer) { 310 var d = this["_" + c + "GetContainerSize"](); 311 this.styleQueue.push({ 312 $el: this.element 313 , style: d 314 }) 315 } 316 this._processStyleQueue(a, b), this.isLaidOut = !0 317 } 318 , _processStyleQueue: function (a, c) { 319 var d = this.isLaidOut ? this.isUsingJQueryAnimation ? "animate" : "css" : "css" 320 , e = this.options.animationOptions 321 , f, g, h, i;
322 g = function (a, b) { 323 b.$el[d](b.style, e) 324 }; 325 if (this._isInserting && this.isUsingJQueryAnimation) g = function (a, b) { 326 f = b.$el.hasClass("no-transition") ? "css" : d, b.$el[f](b.style, e) 327 }; 328 else if (c) { 329 var j = !1 330 , k = this; 331 h = !0, i = function () { 332 j || (c.call(k.element, a), j = !0) 333 }; 334 if (this.isUsingJQueryAnimation && d === "animate") e.complete = i, h = !1; 335 else if (Modernizr.csstransitions) { 336 var l = 0 337 , o = this.styleQueue[0].$el 338 , p; 339 while (!o.length) { 340 p = this.styleQueue[l++]; 341 if (!p) return; 342 o = p.$el 343 } 344 var q = parseFloat(getComputedStyle(o[0])[n]); 345 q > 0 && (g = function (a, b) { 346 b.$el[d](b.style, e).one(m, i) 347 }, h = !1) 348 } 349 } 350 b.each(this.styleQueue, g), h && i(), this.styleQueue = [] 351 } 352 , resize: function () { 353 this["_" + this.options.layoutMode + "ResizeChanged"]() && this.reLayout() 354 } 355 , reLayout: function (a) { 356 this["_" + this.options.layoutMode + "Reset"](), this.layout(this.$filteredAtoms, a) 357 } 358 , addItems: function (a, b) { 359 var c = this._getAtoms(a); 360 this.$allAtoms = this.$allAtoms.add(c), b && b(c) 361 } 362 , insert: function (a, b) { 363 this.element.append(a); 364 var c = this; 365 this.addItems(a, function (a) { 366 var d = c._filter(a, !0); 367 c._addHideAppended(d), c._sort(), c.reLayout(), c._revealAppended(d, b) 368 }) 369 } 370 , appended: function (a, b) { 371 var c = this; 372 this.addItems(a, function (a) { 373 c._addHideAppended(a), c.layout(a), c._revealAppended(a, b) 374 }) 375 } 376 , _addHideAppended: function (a) { 377 this.$filteredAtoms = this.$filteredAtoms.add(a), a.addClass("no-transition"), this._isInserting = !0, this.styleQueue.push({ 378 $el: a 379 , style: this.options.hiddenStyle 380 }) 381 } 382 , _revealAppended: function (a, b) { 383 var c = this; 384 setTimeout(function () { 385 a.removeClass("no-transition"), c.styleQueue.push({ 386 $el: a 387 , style: c.options.visibleStyle 388 }), c._isInserting = !1, c._processStyleQueue(a, b) 389 }, 10) 390 } 391 , reloadItems: function () { 392 this.$allAtoms = this._getAtoms(this.element.children()) 393 } 394 , remove: function (a) { 395 this.$allAtoms = this.$allAtoms.not(a), this.$filteredAtoms = this.$filteredAtoms.not(a), a.remove() 396 } 397 , shuffle: function (a) { 398 this.updateSortData(this.$allAtoms), this.options.sortBy = "random", this._sort(), this.reLayout(a) 399 } 400 , destroy: function () { 401 var c = this.usingTransforms;
402 this.$allAtoms.removeClass(this.options.hiddenClass + " " + this.options.itemClass).each(function () { 403 this.style.position = "", this.style.top = "", this.style.left = "", this.style.opacity = "", c && (this.style[g] = "") 404 }); 405 var d = this.element[0].style; 406 for (var e = 0, f = q.length; e < f; e++) { 407 var h = q[e]; 408 d[h] = this.originalStyle[h] 409 } 410 this.element.unbind(".isotope").undelegate("." + this.options.hiddenClass, "click").removeClass(this.options.containerClass).removeData("isotope"), b(a).unbind(".isotope") 411 } 412 , _getSegments: function (a) { 413 var b = this.options.layoutMode 414 , c = a ? "rowHeight" : "columnWidth" 415 , e = a ? "height" : "width" 416 , f = a ? "rows" : "cols" 417 , g = this.element[e]() 418 , h, i = this.options[b] && this.options[b][c] || this.$filteredAtoms["outer" + d(e)](!0) || g; 419 h = Math.floor(g / i), h = Math.max(h, 1), this[b][f] = h, this[b][c] = i 420 } 421 , _checkIfSegmentsChanged: function (a) { 422 var b = this.options.layoutMode 423 , c = a ? "rows" : "cols" 424 , d = this[b][c]; 425 this._getSegments(a); 426 return this[b][c] !== d 427 } 428 , _masonryReset: function () { 429 this.masonry = {}, this._getSegments(); 430 var a = this.masonry.cols; 431 this.masonry.colYs = []; 432 while (a--) this.masonry.colYs.push(0) 433 } 434 , _masonryLayout: function (a) { 435 var c = this 436 , d = c.masonry; 437 a.each(function () { 438 var a = b(this) 439 , e = Math.ceil(a.outerWidth(!0) / d.columnWidth); 440 e = Math.min(e, d.cols); 441 if (e === 1) c._masonryPlaceBrick(a, d.colYs); 442 else { 443 var f = d.cols + 1 - e 444 , g = [] 445 , h, i; 446 for (i = 0; i < f; i++) h = d.colYs.slice(i, i + e), g[i] = Math.max.apply(Math, h); 447 c._masonryPlaceBrick(a, g) 448 } 449 }) 450 } 451 , _masonryPlaceBrick: function (a, b) { 452 var c = Math.min.apply(Math, b) 453 , d = 0; 454 for (var e = 0, f = b.length; e < f; e++) 455 if (b[e] === c) { 456 d = e; 457 break 458 } 459 var g = this.masonry.columnWidth * d 460 , h = c; 461 this._pushPosition(a, g, h); 462 var i = c + a.outerHeight(!0) 463 , j = this.masonry.cols + 1 - f; 464 for (e = 0; e < j; e++) this.masonry.colYs[d + e] = i 465 } 466 , _masonryGetContainerSize: function () { 467 var a = Math.max.apply(Math, this.masonry.colYs); 468 return { 469 height: a 470 } 471 } 472 , _masonryResizeChanged: function () { 473 return this._checkIfSegmentsChanged() 474 } 475 , _fitRowsReset: function () { 476 this.fitRows = { 477 x: 0 478 , y: 0 479 , height: 0 480 } 481 } 482 , _fitRowsLayout: function (a) { 483 var c = this 484 , d = this.element.width() 485 , e = this.fitRows; 486 a.each(function () { 487 var a = b(this) 488 , f = a.outerWidth(!0) 489 , g = a.outerHeight(!0); 490 e.x !== 0 && f + e.x > d && (e.x = 0, e.y = e.height), c._pushPosition(a, e.x, e.y), e.height = Math.max(e.y + g, e.height), e.x += f 491 }) 492 } 493 , _fitRowsGetContainerSize: function () { 494 return { 495 height: this.fitRows.height 496 } 497 } 498 , _fitRowsResizeChanged: function () { 499 return !0 500 } 501 , _cellsByRowReset: function () { 502 this.cellsByRow = { 503 index: 0 504 }, this._getSegments(), this._getSegments(!0) 505 }
506 , _cellsByRowLayout: function (a) { 507 var c = this 508 , d = this.cellsByRow; 509 a.each(function () { 510 var a = b(this) 511 , e = d.index % d.cols 512 , f = Math.floor(d.index / d.cols) 513 , g = Math.round((e + .5) * d.columnWidth - a.outerWidth(!0) / 2) 514 , h = Math.round((f + .5) * d.rowHeight - a.outerHeight(!0) / 2); 515 c._pushPosition(a, g, h), d.index++ 516 }) 517 } 518 , _cellsByRowGetContainerSize: function () { 519 return { 520 height: Math.ceil(this.$filteredAtoms.length / this.cellsByRow.cols) * this.cellsByRow.rowHeight + this.offset.top 521 } 522 } 523 , _cellsByRowResizeChanged: function () { 524 return this._checkIfSegmentsChanged() 525 } 526 , _straightDownReset: function () { 527 this.straightDown = { 528 y: 0 529 } 530 } 531 , _straightDownLayout: function (a) { 532 var c = this; 533 a.each(function (a) { 534 var d = b(this); 535 c._pushPosition(d, 0, c.straightDown.y), c.straightDown.y += d.outerHeight(!0) 536 }) 537 } 538 , _straightDownGetContainerSize: function () { 539 return { 540 height: this.straightDown.y 541 } 542 } 543 , _straightDownResizeChanged: function () { 544 return !0 545 } 546 , _masonryHorizontalReset: function () { 547 this.masonryHorizontal = {}, this._getSegments(!0); 548 var a = this.masonryHorizontal.rows; 549 this.masonryHorizontal.rowXs = []; 550 while (a--) this.masonryHorizontal.rowXs.push(0) 551 } 552 , _masonryHorizontalLayout: function (a) { 553 var c = this 554 , d = c.masonryHorizontal; 555 a.each(function () { 556 var a = b(this) 557 , e = Math.ceil(a.outerHeight(!0) / d.rowHeight); 558 e = Math.min(e, d.rows); 559 if (e === 1) c._masonryHorizontalPlaceBrick(a, d.rowXs); 560 else { 561 var f = d.rows + 1 - e 562 , g = [] 563 , h, i; 564 for (i = 0; i < f; i++) h = d.rowXs.slice(i, i + e), g[i] = Math.max.apply(Math, h); 565 c._masonryHorizontalPlaceBrick(a, g) 566 } 567 }) 568 } 569 , _masonryHorizontalPlaceBrick: function (a, b) { 570 var c = Math.min.apply(Math, b) 571 , d = 0; 572 for (var e = 0, f = b.length; e < f; e++) 573 if (b[e] === c) { 574 d = e; 575 break 576 } 577 var g = c 578 , h = this.masonryHorizontal.rowHeight * d; 579 this._pushPosition(a, g, h); 580 var i = c + a.outerWidth(!0) 581 , j = this.masonryHorizontal.rows + 1 - f; 582 for (e = 0; e < j; e++) this.masonryHorizontal.rowXs[d + e] = i 583 } 584 , _masonryHorizontalGetContainerSize: function () { 585 var a = Math.max.apply(Math, this.masonryHorizontal.rowXs); 586 return { 587 width: a 588 } 589 } 590 , _masonryHorizontalResizeChanged: function () { 591 return this._checkIfSegmentsChanged(!0) 592 } 593 , _fitColumnsReset: function () { 594 this.fitColumns = { 595 x: 0 596 , y: 0 597 , width: 0 598 } 599 } 600 , _fitColumnsLayout: function (a) { 601 var c = this 602 , d = this.element.height() 603 , e = this.fitColumns; 604 a.each(function () { 605 var a = b(this) 606 , f = a.outerWidth(!0) 607 , g = a.outerHeight(!0); 608 e.y !== 0 && g + e.y > d && (e.x = e.width, e.y = 0), c._pushPosition(a, e.x, e.y), e.width = Math.max(e.x + f, e.width), e.y += g 609 }) 610 } 611 , _fitColumnsGetContainerSize: function () { 612 return { 613 width: this.fitColumns.width 614 } 615 } 616 , _fitColumnsResizeChanged: function () { 617 return !0 618 }
619 , _cellsByColumnReset: function () { 620 this.cellsByColumn = { 621 index: 0 622 }, this._getSegments(), this._getSegments(!0) 623 } 624 , _cellsByColumnLayout: function (a) { 625 var c = this 626 , d = this.cellsByColumn; 627 a.each(function () { 628 var a = b(this) 629 , e = Math.floor(d.index / d.rows) 630 , f = d.index % d.rows 631 , g = Math.round((e + .5) * d.columnWidth - a.outerWidth(!0) / 2) 632 , h = Math.round((f + .5) * d.rowHeight - a.outerHeight(!0) / 2); 633 c._pushPosition(a, g, h), d.index++ 634 }) 635 } 636 , _cellsByColumnGetContainerSize: function () { 637 return { 638 width: Math.ceil(this.$filteredAtoms.length / this.cellsByColumn.rows) * this.cellsByColumn.columnWidth 639 } 640 } 641 , _cellsByColumnResizeChanged: function () { 642 return this._checkIfSegmentsChanged(!0) 643 } 644 , _straightAcrossReset: function () { 645 this.straightAcross = { 646 x: 0 647 } 648 } 649 , _straightAcrossLayout: function (a) { 650 var c = this; 651 a.each(function (a) { 652 var d = b(this); 653 c._pushPosition(d, c.straightAcross.x, 0), c.straightAcross.x += d.outerWidth(!0) 654 }) 655 } 656 , _straightAcrossGetContainerSize: function () { 657 return { 658 width: this.straightAcross.x 659 } 660 } 661 , _straightAcrossResizeChanged: function () { 662 return !0 663 } 664 }, b.fn.imagesLoaded = function (a) { 665 function h(a) { 666 --e <= 0 && a.target.src !== f && (setTimeout(g), d.unbind("load error", h)) 667 } 668 669 function g() { 670 a.call(b, d) 671 } 672 var b = this
673 , d = b.find("img").add(b.filter("img")) 674 , e = d.length 675 , f = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; 676 e || g(), d.bind("load error", h).each(function () { 677 if (this.complete || this.complete === c) { 678 var a = this.src; 679 this.src = f, this.src = a 680 } 681 }); 682 return b 683 }; 684 var r = function (b) { 685 a.console && a.console.error(b) 686 }; 687 b.fn.isotope = function (a, c) { 688 if (typeof a == "string") { 689 var d = Array.prototype.slice.call(arguments, 1); 690 this.each(function () { 691 var c = b.data(this, "isotope"); 692 if (!c) r("cannot call methods on isotope prior to initialization; attempted to call method '" + a + "'"); 693 else { 694 if (!b.isFunction(c[a]) || a.charAt(0) === "_") { 695 r("no such method '" + a + "' for isotope instance"); 696 return 697 } 698 c[a].apply(c, d) 699 } 700 }) 701 } 702 else this.each(function () { 703 var d = b.data(this, "isotope"); 704 d ? (d.option(a), d._init(c)) : b.data(this, "isotope", new b.Isotope(a, this, c)) 705 }); 706 return this 707 } 708})(window, jQuery); 709 710/*************************************************** 711 ISOTOPE (FILTER NAVIGATION AND MASONRY) 712***************************************************/ 713(function($){ 714 window.onload=function(){ 715 if ($("#thumbs").length > 0){ 716 var $container = $('#thumbs'); 717 $container.isotope({ 718 itemSelector : '.item', 719 //filter: '.video', //check the source to see the class name of filter 720 animationEngine : 'jquery', 721 animationOptions: { 722 duration: 250, 723 easing: 'linear', 724 queue: false 725 } 726 }); 727 728 729 730 731 $(window).resize(function() { 732 var $container = $('#thumbs'); 733 $container.isotope({ 734 itemSelector : '.item', 735 //filter: '.video', //check the source to see the class name of filter 736 animationEngine : 'jquery', 737 animationOptions: { 738 duration: 250, 739 easing: 'linear', 740 queue: false 741 } 742 }); 743 }); 744 745 746 // filter items when filter link is clicked 747 $('#portfolio-nav a').click(function(){ 748 var selector = $(this).attr('data-filter'); 749 $container.isotope({ filter: selector }); 750 751 $("#portfolio-nav li").removeClass("current"); 752 $(this).closest("li").addClass("current"); 753 754 return false; 755 }); 756 757 var height = ""; 758 var img_height = ""; 759 $(".fixed_height").each(function(){ 760 height = $(this).css("height"); 761 height = parseInt(height); 762 item_info_height = $(this).find(".item-info").outerHeight(); 763 item_info_height = parseInt(item_info_height); 764 fixed_container_height = height - item_info_height; 765 $(this).find("img").wrap("<div class='fixed_container' style='height:" + fixed_container_height + "px; overflow: hidden' />") 766 img_height = $(this).find("img").height(); 767 img_height = parseInt(img_height); 768 if (img_height > height + 2) { 769 var margin_top = parseInt((img_height - height) / 2 ) 770 $(this).find("img").css("margin-top", -margin_top + "px") 771 } 772 773 }) 774 } 775 776/*************************************************** 777 ADD MASK LAYER 778***************************************************/ 779 var $item_mask = jQuery("<div />", {"class": "item-mask"}); 780 jQuery("ul.shaped .item-container, ul.comment-list .avatar").append($item_mask) 781 782 783/*************************************************** 784 PORTFOLIO ITEM IMAGE HOVER 785***************************************************/ 786jQuery(".portfolio-grid ul li .item-info-overlay").hide(); 787 788 if( is_touch_device() ){ 789 jQuery(".portfolio-grid ul li").click(function(){ 790 791 var count_before = jQuery(this).closest("li").prevAll("li").length; 792 793 var this_opacity = jQuery(this).find(".item-info-overlay").css("opacity"); 794 var this_display = jQuery(this).find(".item-info-overlay").css("display"); 795 796 797 if ((this_opacity == 0) || (this_display == "none")) { 798 jQuery(this).find(".item-info-overlay").fadeTo(250, 1); 799 } else { 800 jQuery(this).find(".item-info-overlay").fadeTo(250, 0); 801 } 802 803 jQuery(this).closest("ul").find("li:lt(" + count_before + ") .item-info-overlay").fadeTo(250, 0); 804 jQuery(this).closest("ul").find("li:gt(" + count_before + ") .item-info-overlay").fadeTo(250, 0); 805 806 }); 807 808 } 809 else{
810 jQuery(".portfolio-grid ul li").hover(function(){ 811 jQuery(this).find(".item-info-overlay").fadeTo(250, 1); 812 }, function() { 813 jQuery(this).find(".item-info-overlay").fadeTo(250, 0); 814 }); 815 816 } 817 818/*************************************************** 819 DUPLICATE H3 & H4 IN PORTFOLIO 820***************************************************/ 821 jQuery(".item-info:not(.no_hover)").each(function(i){ 822 jQuery(this).next().prepend(jQuery(this).html()) 823 }); 824 825 826 } 827 })(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.