1(function (jQuery) { 2 if (!jQuery.isFunction(jQuery.fn.on)) { 3 jQuery.fn.on = function(types, sel, fn) { 4 return this.delegate(sel, types, fn); 5 }; 6 jQuery.fn.off = function(types, sel, fn) { 7 return this.undelegate(sel, types, fn); 8 }; 9 } 10 11 if (!jQuery.support.transition) 12 jQuery.fn.transition = jQuery.fn.animate; 13 14 jQuery.fn.emodal = function (method) { 15 // Method calling logic 16 if (jQuery.fn.emodal.methods[method]) { 17 return jQuery.fn.emodal.methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 18 } else if (typeof method === 'object' || !method) { 19 return jQuery.fn.emodal.methods.init.apply(this, arguments); 20 } else { 21 jQuery.error('Method ' + method + ' does not exist on jQuery.fn.emodal'); 22 } 23 }; 24 jQuery.fn.emodal.methods = { 25 init: function (options) { 26 return this.each(function () { 27 var $this = jQuery(this); 28 var settings = jQuery.extend(true, {}, jQuery.fn.emodal.defaults, $this.data('emodal'), options); 29 30 if (!$this.parent().is('body')) 31 $this.appendTo('body'); 32 33 if (!jQuery('#' + settings.overlay.attr.id).length) 34 jQuery('<div>').attr(settings.overlay.attr).appendTo('body'); 35 36 jQuery(window).on('resize', function () { 37 if ($this.hasClass('active')) 38 jQuery.fn.emodal.utilities.throttle(setTimeout(function () { 39 $this.emodal('reposition'); 40 }, 25), 500, false); 41 }); 42 43 $this 44 .data('emodal', settings) 45 .on('emodalBeforeOpen.hide_modal', function (e) { 46 jQuery(this) 47 .css({ visibility: "visible" }) 48 .hide() 49 .addClass(settings.container.active_class); 50 51 if(!settings.meta.display.stackable) { 52 $this.emodal('close_all'); 53 } 54 }) 55 .on('emodalAfterClose.close_overlay', function (e) { 56 $overlay = jQuery('#' + settings.overlay.attr.id); 57 if ($overlay.length && $overlay.is(":visible")) { 58 $overlay.fadeOut(settings.close.close_speed); 59 } 60 }) 61 .on('emodalAfterClose.reset_videos', function (e) { 62 jQuery('iframe', $this).filter('[src*="youtube"],[src*="vimeo"]').each(function () { 63 var src = jQuery(this).attr('src'); 64 jQuery(this).attr('src', '').attr('src', src); 65 }); 66 }) 67 .on('emodalBeforeOpen.setup_close', function () { 68 $this.emodal('setup_close'); 69 }) 70 .on('emodalBeforeOpen.retheme', function () { 71 $this.emodal('retheme'); 72 }) 73 .on('emodalBeforeOpen.reposition', function () { 74 $this.emodal('reposition'); 75 }) 76 .trigger('emodalInit'); 77 return this; 78 }); 79 }, 80 setup_close: function () { 81 var $this = jQuery(this), 82 settings = $this.data('emodal'), 83 $overlay = jQuery('#' + settings.overlay.attr.id), 84 $close = jQuery('.' + settings.close.attr.class, $this); 85 86 $close 87 .off('click.emodal') 88 .on("click.emodal", function (e) { 89 e.preventDefault(); 90 e.stopPropagation(); 91 $this.emodal('close'); 92 93 }); 94 if (settings.meta.close.esc_press) 95 jQuery(window) 96 .off('keyup.emodal') 97 .on('keyup.emodal', function (e) { 98 if (e.keyCode == 27) 99 $this.emodal('close'); 100 }); 101 102 if (settings.meta.close.overlay_click) 103 $overlay 104 .off('click.emodal') 105 .on('click.emodal', function (e) { 106 e.preventDefault(); 107 e.stopPropagation(); 108 $this.emodal('close'); 109 }); 110 111 $this 112 .on('emodalAfterClose', function () { 113 jQuery(window).off('keyup.emodal'); 114 $overlay.off('click.emodal'); 115 $close.off('click.emodal'); 116 }) 117 .trigger('emodalSetupClose'); 118 }, 119 open: function (callback) { 120 var $this = jQuery(this); 121 var settings = $this.data('emodal'); 122 123 $this 124 .trigger('emodalBeforeOpen') 125 .emodal('animate', settings.meta.display.animation.type, function() { 126 $this.trigger('emodalAfterOpen'); 127 if(callback !== undefined) callback(); 128 }); 129 return this; 130 }, 131 close: function () { 132 return this.each(function () { 133 var $this = jQuery(this), 134 settings = $this.data('emodal'); 135 $this 136 .trigger('emodalBeforeClose') 137 .removeClass('active') 138 .fadeOut(settings.close.close_speed, function () { 139 $this.trigger('emodalAfterClose'); 140 }); 141 return this; 142 }); 143 }, 144 close_all: function () { 145 var settings = jQuery(this).data('emodal'); 146 jQuery('.' + settings.container.attr.class).removeClass('active').hide(0); 147 return this; 148 }, 149 reposition: function (callback) { 150 var $this = jQuery(this); 151 $this.trigger('emodalBeforeReposition'); 152 var settings = $this.data('emodal'); 153 var location = settings.meta.display.location; 154 var position = settings.meta.display.position; 155 156 var reposition = { 157 my: "", 158 at: "" 159 }; 160 161 if (location.indexOf('left') >= 0) reposition = { 162 my: reposition.my + " left" + (position.left !== 0 ? "+" + position.left : ""), 163 at: reposition.at + " left" 164 }; 165 if (location.indexOf('right') >= 0) reposition = { 166 my: reposition.my + " right" + (position.right !== 0 ? "-" + position.right : ""), 167 at: reposition.at + " right" 168 }; 169 170 if (location.indexOf('center') >= 0) 171 { 172 if (location == 'center') reposition = { 173 my: "center", 174 at: "center" 175 }; 176 else reposition = { 177 my: reposition.my + " center", 178 at: reposition.at + " center" 179 }; 180 } 181 182 if (location.indexOf('top') >= 0) reposition = { 183 my: reposition.my + " top" + (position.top !== 0 ? "+" + position.top : ""), 184 at: reposition.at + " top" 185 }; 186 if (location.indexOf('bottom') >= 0) reposition = { 187 my: reposition.my + " bottom" + (position.bottom !== 0 ? "-" + position.bottom : ""), 188 at: reposition.at + " bottom" 189 }; 190 191 192 reposition.my = jQuery.trim(reposition.my); 193 reposition.at = jQuery.trim(reposition.at); 194 reposition.of = window; 195 reposition.collision = 'fit'; 196 reposition.using = typeof (callback) == "function" ? callback : jQuery.fn.emodal.callbacks.reposition_using; 197 var opacity = false;
198 if ($this.is(':hidden')) { 199 opacity = $this.css("opacity"); 200 $this.css({ 201 opacity: 0 202 }).show(); 203 } 204 205 if (position.fixed) 206 $this.addClass('fixed'); 207 else 208 $this.removeClass('fixed'); 209 210 if (settings.meta.display.size == 'custom') { 211 $this.css({ 212 width: settings.meta.display.custom_width + settings.meta.display.custom_width_unit, 213 height: settings.meta.display.custom_height_auto ? 'auto' : settings.meta.display.custom_height + settings.meta.display.custom_height_unit 214 }); 215 } 216 217 $this 218 .addClass('custom-position') 219 .position(reposition) 220 .trigger('emodalAfterReposition'); 221 222 if (opacity) { 223 $this.css({ 224 opacity: opacity 225 }).hide(); 226 } 227 return this; 228 }, 229 retheme: function (theme) { 230 var $this = jQuery(this); 231 $this.trigger('emodalBeforeRetheme'); 232 var settings = $this.data('emodal'), 233 $overlay = jQuery('#' + settings.overlay.attr.id), 234 $container = $this, 235 $title = jQuery('> .' + settings.title.attr.class, $container), 236 $content = jQuery('> .' + settings.content.attr.class, $container), 237 $close = jQuery('> .' + settings.close.attr.class, $container); 238 239 if (theme === undefined) { 240 theme = jQuery.fn.emodal.themes[settings.theme_id]; 241 if (theme === undefined) { 242 theme = jQuery.fn.emodal.themes[1]; 243 } 244 } 245 246 $overlay.removeAttr('style').css({ 247 backgroundColor: jQuery.fn.emodal.utilities.convert_hex(theme.overlay.background.color, theme.overlay.background.opacity) 248 }); 249 var container_inset = theme.container.boxshadow.inset == 'yes' ? 'inset ' : ''; 250 $container.css({ 251 padding: theme.container.padding + 'px', 252 backgroundColor: jQuery.fn.emodal.utilities.convert_hex(theme.container.background.color, theme.container.background.opacity), 253 borderStyle: theme.container.border.style, 254 borderColor: theme.container.border.color, 255 borderWidth: theme.container.border.width + 'px', 256 borderRadius: theme.container.border.radius + 'px', 257 boxShadow: container_inset + theme.container.boxshadow.horizontal + 'px ' + theme.container.boxshadow.vertical + 'px ' + theme.container.boxshadow.blur + 'px ' + theme.container.boxshadow.spread + 'px ' + jQuery.fn.emodal.utilities.convert_hex(theme.container.boxshadow.color, theme.container.boxshadow.opacity) 258 }); 259 $title.css({ 260 color: theme.title.font.color, 261 fontSize: theme.title.font.size + 'px', 262 fontFamily: theme.title.font.family, 263 textAlign: theme.title.text.align, 264 textShadow: theme.title.textshadow.horizontal + 'px ' + theme.title.textshadow.vertical + 'px ' + theme.title.textshadow.blur + 'px ' + jQuery.fn.emodal.utilities.convert_hex(theme.title.textshadow.color, theme.title.textshadow.opacity) 265 }); 266 $content.css({ 267 color: theme.content.font.color, 268 //fontSize: theme.content.font.size+'px', 269 fontFamily: theme.content.font.family 270 }); 271 jQuery('p, label', $content).css({ 272 color: theme.content.font.color, 273 //fontSize: theme.content.font.size+'px', 274 fontFamily: theme.content.font.family 275 }); 276 var close_inset = theme.close.boxshadow.inset == 'yes' ? 'inset ' : ''; 277 $close.html(theme.close.text).css({ 278 padding: theme.close.padding + 'px', 279 backgroundColor: jQuery.fn.emodal.utilities.convert_hex(theme.close.background.color, theme.close.background.opacity), 280 color: theme.close.font.color, 281 fontSize: theme.close.font.size + 'px', 282 fontFamily: theme.close.font.family, 283 borderStyle: theme.close.border.style, 284 borderColor: theme.close.border.color, 285 borderWidth: theme.close.border.width + 'px', 286 borderRadius: theme.close.border.radius + 'px', 287 boxShadow: close_inset + theme.close.boxshadow.horizontal + 'px ' + theme.close.boxshadow.vertical + 'px ' + theme.close.boxshadow.blur + 'px ' + theme.close.boxshadow.spread + 'px ' + jQuery.fn.emodal.utilities.convert_hex(theme.close.boxshadow.color, theme.close.boxshadow.opacity), 288 textShadow: theme.close.textshadow.horizontal + 'px ' + theme.close.textshadow.vertical + 'px ' + theme.close.textshadow.blur + 'px ' + jQuery.fn.emodal.utilities.convert_hex(theme.close.textshadow.color, theme.close.textshadow.opacity) 289 }); 290 switch (theme.close.location) { 291 case "topleft": 292 $close.css({ 293 top: theme.close.position.top + 'px', 294 left: theme.close.position.left + 'px' 295 }); 296 break; 297 case "topright": 298 $close.css({ 299 top: theme.close.position.top + 'px', 300 right: theme.close.position.right + 'px' 301 }); 302 break; 303 case "bottomleft": 304 $close.css({ 305 bottom: theme.close.position.bottom + 'px', 306 left: theme.close.position.left + 'px' 307 }); 308 break; 309 case "bottomright": 310 $close.css({ 311 bottom: theme.close.position.bottom + 'px', 312 right: theme.close.position.right + 'px' 313 }); 314 break; 315 } 316 $this.trigger('emodalAfterRetheme', [theme]); 317 return this; 318 }, 319 animate_overlay: function (style, duration, callback) { 320 // Method calling logic 321 var $this = jQuery(this); 322 var settings = $this.data('emodal'); 323 if(settings.meta.display.overlay_disabled) 324 { 325 callback(); 326 } 327 else 328 {
329 if (jQuery.fn.emodal.overlay_animations[style]) 330 return jQuery.fn.emodal.overlay_animations[style].apply(this, Array.prototype.slice.call(arguments, 1)); 331 else 332 jQuery.error('Animation style ' + jQuery.fn.emodal.overlay_animations + ' does not exist.'); 333 } 334 return this; 335 }, 336 animate: function (style, callback) { 337 // Method calling logic 338 if (jQuery.fn.emodal.animations[style]) 339 return jQuery.fn.emodal.animations[style].apply(this, Array.prototype.slice.call(arguments, 1)); 340 else 341 jQuery.error('Animation style ' + jQuery.fn.emodal.animations + ' does not exist.'); 342 return this; 343 } 344 }; 345 346 jQuery.fn.emodal.callbacks = { 347 reposition_using: function (position) { 348 jQuery(this).css(position); 349 } 350 }; 351 352 jQuery.fn.emodal.utilities = { 353 convert_hex: function (hex, opacity) { 354 hex = hex.replace('#', ''); 355 r = parseInt(hex.substring(0, 2), 16); 356 g = parseInt(hex.substring(2, 4), 16); 357 b = parseInt(hex.substring(4, 6), 16); 358 result = 'rgba(' + r + ',' + g + ',' + b + ',' + opacity / 100 + ')'; 359 return result; 360 }, 361 debounce: function (callback, threshold) { 362 var timeout; 363 return function() { 364 var context = this, params = arguments; 365 window.clearTimeout(timeout); 366 timeout = window.setTimeout(function() { 367 callback.apply(context, params); 368 }, threshold); 369 }; 370 }, 371 throttle: function (callback, threshold) { 372 var suppress = false; 373 var clear = function() { 374 suppress = false; 375 }; 376 return function() { 377 if (!suppress) { 378 callback.apply(this, arguments); 379 window.setTimeout(clear, threshold); 380 suppress = true; 381 }; 382 } 383 } 384 }; 385 // Deprecated fix. utilies was renamed because of typo. 386 jQuery.fn.emodal.utilies = jQuery.fn.emodal.utilities; 387 388 jQuery.fn.emodal.defaults = { 389 390 meta: { 391 display: { 392 stackable: 0, 393 overlay_disabled: 0, 394 size: 'medium', 395 custom_width: '', 396 custom_width_unit: '%', 397 custom_height: '', 398 custom_height_unit: 'em', 399 custom_height_auto: 1, 400 location: 'center top', 401 position: { 402 top: 100, 403 left: 0, 404 bottom: 0, 405 right: 0, 406 fixed: 0 407 }, 408 animation: { 409 type: 'fade', 410 speed: 350, 411 origin: 'center top' 412 } 413 }, 414 close: { 415 overlay_click: 0, 416 esc_press: 1 417 } 418 }, 419 420 421 container: { 422 active_class: 'active', 423 attr: { 424 class: "emodal" 425 } 426 }, 427 title: { 428 attr: { 429 class: "emodal-title" 430 } 431 }, 432 content: { 433 attr: { 434 class: "emodal-content" 435 } 436 }, 437 close: { 438 close_speed: 0, 439 attr: { 440 class: "emodal-close" 441 } 442 }, 443 overlay: { 444 attr: { 445 id: "emodal-overlay", 446 class: "emodal-overlay" 447 } 448 } 449 }; 450 451 jQuery.fn.emodal.themes = emodal_themes; 452 453 jQuery.fn.emodal.overlay_animations = { 454 none: function (duration, callback) { 455 var $this = jQuery(this); 456 var settings = $this.data('emodal'); 457 jQuery('#' + settings.overlay.attr.id).show(duration, callback); 458 }, 459 fade: function (duration, callback) { 460 var $this = jQuery(this); 461 var settings = $this.data('emodal'); 462 jQuery('#' + settings.overlay.attr.id).fadeIn(duration, callback); 463 }, 464 slide: function (duration, callback) { 465 var $this = jQuery(this); 466 var settings = $this.data('emodal'); 467 jQuery('#' + settings.overlay.attr.id).slideDown(duration, callback); 468 } 469 }; 470 471 jQuery.fn.emodal.animations = { 472 none: function (callback) { 473 var $this = jQuery(this); 474 var settings = $this.data('emodal'); 475 $this.emodal('animate_overlay', 'none', 0, function(){ 476 $this.show(); 477 if(callback !== undefined) callback(); 478 }); 479 return this; 480 }, 481 slide: function (callback) { 482 var $this = jQuery(this).show(0).css({ 483 opacity: 0 484 }); 485 var settings = $this.data('emodal'); 486 var speed = settings.meta.display.animation.speed; 487 var origin = settings.meta.display.animation.origin; 488 var start = { 489 my: "", 490 at: "" 491 }; 492 switch (origin) { 493 case 'top': 494 start = { 495 my: "left+" + $this.offset().left + " bottom", 496 at: "left top" 497 }; 498 break; 499 case 'bottom': 500 start = { 501 my: "left+" + $this.offset().left + " top", 502 at: "left bottom" 503 }; 504 break; 505 case 'left': 506 start = { 507 my: "right top+" + $this.offset().top, 508 at: "left top" 509 }; 510 break; 511 case 'right': 512 start = { 513 my: "left top+" + $this.offset().top, 514 at: "right top" 515 }; 516 break; 517 default: 518 if (origin.indexOf('left') >= 0) start = { 519 my: start.my + " right", 520 at: start.at + " left" 521 }; 522 if (origin.indexOf('right') >= 0) start = { 523 my: start.my + " left", 524 at: start.at + " right" 525 }; 526 if (origin.indexOf('center') >= 0) start = { 527 my: start.my + " center", 528 at: start.at + " center" 529 }; 530 if (origin.indexOf('top') >= 0) start = { 531 my: start.my + " bottom", 532 at: start.at + " top" 533 }; 534 if (origin.indexOf('bottom') >= 0) start = { 535 my: start.my + " top", 536 at: start.at + " bottom" 537 }; 538 start.my = jQuery.trim(start.my); 539 start.at = jQuery.trim(start.at); 540 break; 541 } 542 start.of = window; 543 start.collision = 'none'; 544 jQuery('html').css('overflow-x', 'hidden'); 545 $this.position(start).css({ 546 opacity: 1 547 }); 548 549 $this.emodal('animate_overlay', 'fade', speed * 0.25, function () { 550 $this.emodal('reposition', function (position) { 551 position.opacity = 1; 552 $this.transition(position, speed * 0.75, function () { 553 jQuery('html').css('overflow-x', 'inherit'); 554 if(callback !== undefined) callback(); 555 }); 556 }); 557 }); 558 return this; 559 }, 560 fade: function (callback) { 561 var $this = jQuery(this); 562 var settings = $this.data('emodal'); 563 var speed = settings.meta.display.animation.speed / 2; 564 $this.emodal('animate_overlay', 'fade', speed, function () { 565 $this.fadeIn(speed, function(){ 566 if(callback !== undefined) callback(); 567 }); 568 }); 569 return this; 570 }, 571 fadeAndSlide: function (callback) { 572 var $this = jQuery(this).show(0).css({ 573 opacity: 0 574 }); 575 var settings = $this.data('emodal'); 576 var speed = settings.meta.display.animation.speed; 577 var origin = settings.meta.display.animation.origin; 578 var start = { 579 my: "", 580 at: "" 581 }; 582 switch (origin) { 583 case 'top': 584 start = { 585 my: "left+" + $this.offset().left + " bottom", 586 at: "left top" 587 }; 588 break; 589 590 case 'bottom': 591 start = { 592 my: "left+" + $this.offset().left + " top", 593 at: "left bottom" 594 }; 595 break; 596 597 case 'left': 598 start = { 599 my: "right top+" + $this.offset().top, 600 at: "left top" 601 }; 602 break; 603 604 case 'right': 605 start = { 606 my: "left top+" + $this.offset().top, 607 at: "right top" 608 }; 609 break; 610 611 default: 612 if (origin.indexOf('left') >= 0) start = { 613 my: start.my + " right", 614 at: start.at + " left" 615 }; 616 if (origin.indexOf('right') >= 0) start = { 617 my: start.my + " left", 618 at: start.at + " right" 619 }; 620 if (origin.indexOf('center') >= 0) start = { 621 my: start.my + " center", 622 at: start.at + " center" 623 }; 624 if (origin.indexOf('top') >= 0) start = { 625 my: start.my + " bottom", 626 at: start.at + " top" 627 }; 628 if (origin.indexOf('bottom') >= 0) start = { 629 my: start.my + " top", 630 at: start.at + " bottom" 631 }; 632 start.my = jQuery.trim(start.my); 633 start.at = jQuery.trim(start.at); 634 break; 635 } 636 start.of = window; 637 start.collision = 'none'; 638 jQuery('html').css('overflow-x', 'hidden'); 639 $this.position(start); 640 $this.emodal('animate_overlay', 'fade', speed * 0.25, function () { 641 $this.emodal('reposition', function (position) { 642 position.opacity = 1; 643 $this.transition(position, speed * 0.75, function () { 644 jQuery('html').css('overflow-x', 'inherit'); 645 if(callback !== undefined) callback(); 646 }); 647 }); 648 }); 649 return this; 650 }, 651 grow: function (callback) { 652 var $this = jQuery(this); 653 var settings = $this.data('emodal'); 654 var speed = settings.meta.display.animation.speed; 655 var origin = settings.meta.display.animation.origin; 656 657 // Set css for animation start. 658 $this.css({ 659 transformOrigin: origin, 660 opacity: 0 661 }).show(); 662 663 // Begin Animation with overlay fade in then grow animation. 664 $this.emodal('animate_overlay', 'fade', speed * 0.25, function () { 665 // Reposition with callback. position returns default positioning. 666 $this.emodal('reposition', function (position) { 667 position.scale = 1; 668 position.duration = speed * 0.75; 669 $this 670 .css({ 671 scale: 0, 672 opacity: 1 673 }) 674 .transition(position); 675 if(callback !== undefined) callback(); 676 }); 677 }); 678 return this; 679 }, 680 growAndSlide: function (callback) { 681 var $this = jQuery(this).css({ 682 opacity: 0 683 }).show(); 684 var settings = $this.data('emodal'); 685 var speed = settings.meta.display.animation.speed; 686 var origin = settings.meta.display.animation.origin; 687 var start = { 688 my: "", 689 at: "" 690 }; 691 switch (origin) { 692 case 'top': 693 start = { 694 my: "left+" + $this.offset().left + " bottom", 695 at: "left top" 696 }; 697 break; 698 case 'bottom': 699 start = { 700 my: "left+" + $this.offset().left + " top", 701 at: "left bottom" 702 }; 703 break; 704 case 'left': 705 start = { 706 my: "right top+" + $this.offset().top, 707 at: "left top" 708 }; 709 break; 710 case 'right': 711 start = { 712 my: "left top+" + $this.offset().top, 713 at: "right top" 714 }; 715 break; 716 default: 717 if (origin.indexOf('left') >= 0) start = { 718 my: start.my + " right", 719 at: start.at + " left" 720 }; 721 if (origin.indexOf('right') >= 0) start = { 722 my: start.my + " left", 723 at: start.at + " right" 724 }; 725 if (origin.indexOf('center') >= 0) start = { 726 my: start.my + " center", 727 at: start.at + " center" 728 }; 729 if (origin.indexOf('top') >= 0) start = { 730 my: start.my + " bottom", 731 at: start.at + " top" 732 }; 733 if (origin.indexOf('bottom') >= 0) start = { 734 my: start.my + " top", 735 at: start.at + " bottom" 736 }; 737 start.my = jQuery.trim(start.my); 738 start.at = jQuery.trim(start.at); 739 break; 740 } 741 start.of = window; 742 start.collision = 'none'; 743 jQuery('html').css('overflow-x', 'hidden'); 744 $this.position(start) 745 .css({ 746 opacity: origin == 'center center' ? 0 : 1, 747 transformOrigin: origin 748 }); 749 $this.emodal('animate_overlay', 'fade', speed * 0.25, function () { 750 $this.emodal('reposition', function (position) { 751 position.scale = 1; 752 position.opacity = 1; 753 position.duration = speed * 0.75; 754 $this.css({ 755 scale: 0 756 }) 757 .transition(position, function () { 758 jQuery('html').css('overflow-x', 'inherit'); 759 }); 760 if(callback !== undefined) callback(); 761 }); 762 }); 763 return this; 764 } 765 }; 766 767 jQuery('.emodal').css({ visibility: "visible" }).hide(); 768 769 jQuery(document).ready(function () { 770 jQuery('.emodal') 771 .emodal() 772 .each(function () { 773 var $this = jQuery(this); 774 jQuery(document).on('click', '.' + $this.attr('id'), function (e) { 775 e.preventDefault(); 776 e.stopPropagation(); 777 $this.emodal('open'); 778 }); 779 jQuery('.' + $this.attr('id')).css('cursor', 'pointer'); 780 }); 781 }); 782}(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.