https://www.tokajneum.com/components/com_virtuemart/assets/js/fancybox/jquery.fancybox-1.3.4.pack.js
1/* 2 * FancyBox - jQuery Plugin 3 * Simple and fancy lightbox alternative 4 * 5 * Examples and documentation at: http://fancybox.net 6 * 7 * Copyright (c) 2008 - 2010 Janis Skarnelis 8 * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. 9 * 10 * Version: 1.3.4 (11/11/2010) 11 * Requires: jQuery v1.3+ 12 * 13 * Dual licensed under the MIT and GPL licenses: 14 * http://www.opensource.org/licenses/mit-license.php 15 * http://www.gnu.org/licenses/gpl.html 16 * 17 * 18 * Modified by Stan Scholtz, RuposTel.com for jQuery 3 compatibility and public usage. 19 * 20 * Stripped version by Stefan Schumacher, 2021. 21 * Removed Flash support, removed bg elements and added box shadow via CSS. 22 * Based on Stan's version. 23 */ 24 25;(function($) { 26 27 var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right, 28 selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [], 29 ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg|webp)(.*)?$/i, 30 loadingTimer, loadingFrame = 1, 31 titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx
31= $.extend($('<div/>')[0], { prop: 0 }), 32 33 /* 34 * Private methods 35 */ 36 37 _abort = function() { 38 if (typeof loading == 'undefined') { 39 $.fancybox.initMe(); 40 } 41 if (typeof loading == 'undefined') { 42 return; 43 } 44 loading.hide(); 45 imgPreloader.onerror = imgPreloader.onload = null; 46 if (ajaxLoader) { 47 ajaxLoader.abort(); 48 } 49 tmp.empty(); 50 }, 51 52 _error = function() { 53 if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) { 54 loading.hide(); 55 busy = false; 56 return; 57 } 58 selectedOpts.titleShow = false; 59 selectedOpts.width = 'auto'; 60 selectedOpts.height = 'auto'; 61 tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br>Please try again later.</p>' ); 62 _process_inline(); 63 }, 64 65 _start = function() { 66 var obj = selectedArray[ selectedIndex ], 67 href, 68 type, 69 titleText, 70 str, 71 emb, 72 ret; 73 74 _abort(); 75 _init_fancy(); 76 77 tmp = jQuery('#fancybox-tmp'); 78 loading = jQuery('#fancybox-loading'); 79 overlay = jQuery('#fancybox-overlay'); 80 wrap = jQuery('#fancybox-wrap'); 81 outer = jQuery('#fancybox-outer'); 82 content = jQuery('#fancybox-content'); 83 close = jQuery('#fancybox-close'); 84 title = jQuery('#fancybox-title'); 85 nav_left = jQuery('#fancybox-left'); 86 nav_right = jQuery('#fancybox-right'); 87 selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox'))); 88 ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts); 89 if (ret === false) { 90 busy = false; 91 return; 92 } else if (typeof ret == 'object') { 93 selectedOpts = $.extend(selectedOpts, ret); 94 } 95 titleText = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.titleText) || ''; 96 if (obj.nodeName && !selectedOpts.orig) { 97 selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj); 98 } 99 if (obj.title) { 100 titleText = obj.title; 101 } 102 else 103 if (titleText === '' && selectedOpts.orig && selectedOpts.titleFromAlt) { 104 titleText = selectedOpts.orig.attr('alt'); 105 } 106 href = (obj.nodeName ? $(obj).attr('href') : obj.href) || selectedOpts.href || null; 107 if ((/^(?:javascript)/i).test(href) || href == '#') { 108 href = null; 109 } 110 if (selectedOpts.type) { 111 type = selectedOpts.type; 112 if (!href) { 113 href = selectedOpts.content; 114 } 115 } else if (selectedOpts.content) { 116 type = 'html'; 117 } else if (href) { 118 if (href.match(imgRegExp)) { 119 type = 'image'; 120 } else if ($(obj).hasClass("iframe")) { 121 type = 'iframe'; 122 } else if (href.indexOf("#") === 0) { 123 type = 'inline'; 124 } else { 125 type = 'ajax'; 126 } 127 } 128 if (!type) { 129 _error(); 130 return; 131 } 132 if (type == 'inline') { 133 obj = href.substr(href.indexOf("#")); 134 type = $(obj).length > 0 ? 'inline' : 'ajax'; 135 } 136 selectedOpts.type = type; 137 selectedOpts.href = href; 138 selectedOpts.title = titleText; 139 140 if (selectedOpts.autoDimensions) { 141 if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') { 142 selectedOpts.width = 'auto'; 143 selectedOpts.height = 'auto'; 144 } else { 145 selectedOpts.autoDimensions = false; 146 } 147 } 148 if (selectedOpts.modal) { 149 selectedOpts.overlayShow = true; 150 selectedOpts.hideOnOverlayClick = false; 151 selectedOpts.hideOnContentClick = false; 152 selectedOpts.enableEscapeButton = false; 153 selectedOpts.showCloseButton = false; 154 } 155 selectedOpts.padding = parseInt(selectedOpts.padding, 10); 156 selectedOpts.margin = parseInt(selectedOpts.margin, 10); 157 tmp.css('padding', (selectedOpts.padding + selectedOpts.margin)); 158 $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() { 159 $(this).replaceWith(content.children()); 160 }); 161 switch (type) { 162 case 'html' : 163 tmp.html( selectedOpts.content ); 164 _process_inline(); 165 break; 166 167 case 'inline' : 168 if ( $(obj).parent().is('#fancybox-content') === true) { 169 busy = false; 170 return; 171 } 172 $('<div class="fancybox-inline-tmp" />') 173 .hide() 174 .insertBefore( $(obj) ) 175 .bind('fancybox-cleanup', function() { 176 $(this).replaceWith(content.children()); 177 }).bind('fancybox-cancel', function() { 178 $(this).replaceWith(tmp.children()); 179 }); 180 $(obj).appendTo(tmp); 181 _process_inline(); 182 break; 183
184 case 'image': 185 busy = false; 186 $.fancybox.showActivity(); 187 imgPreloader = new Image(); 188 imgPreloader.onerror = function() { 189 _error(); 190 }; 191 imgPreloader.onload = function() { 192 busy = true; 193 imgPreloader.onerror = imgPreloader.onload = null; 194 _process_image(obj); 195 }; 196 imgPreloader.src = href; 197 break; 198 199 case 'ajax': 200 busy = false; 201 $.fancybox.showActivity(); 202 selectedOpts.ajax.win = selectedOpts.ajax.success; 203 ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, { 204 url : href, 205 data : selectedOpts.ajax.data || {}, 206 error : function(XMLHttpRequest, textStatus, errorThrown) { 207 if ( XMLHttpRequest.status > 0 ) { 208 _error(); 209 } 210 }, 211 success : function(data, textStatus, XMLHttpRequest) { 212 var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader; 213 if (o.status == 200) { 214 if ( typeof selectedOpts.ajax.win == 'function' ) { 215 ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest); 216 if (ret === false) { 217 loading.hide(); 218 return; 219 } else if (typeof ret == 'string' || typeof ret == 'object') { 220 data = ret; 221 } 222 } 223 tmp.html( data ); 224 _process_inline(); 225 } 226 } 227 })); 228 break; 229 case 'iframe': 230 _show(); 231 break; 232 } 233 }, 234 235 _process_inline = function() { 236 var 237 w = selectedOpts.width, 238 h = selectedOpts.height; 239 240 if (w.toString().indexOf('%') > -1) { 241 w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px'; 242 } else { 243 w = w == 'auto' ? 'auto' : w + 'px'; 244 } 245 if (h.toString().indexOf('%') > -1) { 246 h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px'; 247 } else { 248 h = h == 'auto' ? 'auto' : h + 'px'; 249 } 250 tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>'); 251 selectedOpts.width = tmp.width(); 252 selectedOpts.height = tmp.height(); 253 _show(); 254 }, 255 256 _process_image = function(obj) { 257 selectedOpts.width = imgPreloader.width; 258 selectedOpts.height = imgPreloader.height; 259 if ( ((obj.className.indexOf('example') >= 0))) { 260 var exampleWrap = jQuery('.imgwrap.example'); 261 if (exampleWrap.length) { 262 var firstEl = jQuery('<span class="imgwrap example">'+exampleWrap[0].innerHTML+'</span>'); 263 firstEl.find('img').attr({ 264 'id' : 'fancybox-img', 265 'src' : imgPreloader.src, 266 'alt' : selectedOpts.title 267 }); 268 firstEl.appendTo(tmp); 269 } 270 } else { 271 $("<img />").attr({ 272 'id' : 'fancybox-img', 273 'src' : imgPreloader.src, 274 'alt' : selectedOpts.title 275 }).appendTo( tmp ); 276 } 277 _show(); 278 }, 279 280 _show = function() { 281 var pos, equal; 282 loading.hide(); 283 if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { 284 $.event.trigger('fancybox-cancel'); 285 busy = false; 286 return; 287 } 288 busy = true; 289 $(content.add( overlay )).unbind(); 290 $(window).unbind("resize.fb scroll.fb"); 291 $(document).unbind('keydown.fb'); 292 if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') { 293 wrap.css('height', wrap.height()); 294 } 295 currentArray = selectedArray; 296 currentIndex = selectedIndex; 297 currentOpts = selectedOpts; 298 299 if (currentOpts.overlayShow) { 300 overlay.css({ 301 'background-color' : currentOpts.overlayColor, 302 'opacity' : currentOpts.overlayOpacity, 303 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto', 304 'height' : $(document).height() 305 }); 306 if (!overlay.is(':visible')) { 307 overlay.show(); 308 } 309 } else { 310 overlay.hide(); 311 } 312 final_pos = _get_zoom_to(); 313 _process_title(); 314 315 if (wrap.is(":visible")) { 316 $( close.add( nav_left ).add( nav_right ) ).hide(); 317 pos = wrap.position(), 318 start_pos = { 319 top : pos.top, 320 left : pos.left, 321 width : wrap.width(), 322 height : wrap.height() 323 }; 324 equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height); 325 content.fadeTo(currentOpts.changeFade, 0.3, function() { 326 var finish_resizing = function() { 327 content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish); 328 }; 329 $.event.trigger('fancybox-change'); 330 content 331 .empty() 332 .removeAttr('filter') 333 .css({ 334 'width' : final_pos.width - currentOpts.padding * 2, 335 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 336 }); 337 if (equal) {
338 finish_resizing(); 339 } else { 340 fx.prop = 0; 341 $(fx).animate({prop: 1}, { 342 duration : currentOpts.changeSpeed, 343 easing : currentOpts.easingChange, 344 step : _draw, 345 complete : finish_resizing 346 }); 347 } 348 }); 349 return; 350 } 351 wrap.removeAttr("style"); 352 if (currentOpts.titlePosition == 'inside' && titleHeight > 0) { 353 title.show(); 354 } 355 content 356 .css({ 357 'width' : final_pos.width - currentOpts.padding * 2, 358 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 359 }) 360 .html( tmp.contents() ); 361 wrap 362 .css(final_pos) 363 .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish ); 364 }, 365 366 _format_title = function(title) { 367 if (title && title.length) { 368 if (currentOpts.titlePosition == 'float') { 369 return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>'; 370 } 371 return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>'; 372 } 373 return false; 374 }, 375 376 _process_title = function() { 377 titleStr = currentOpts.title || ''; 378 titleHeight = 0; 379 title 380 .empty() 381 .removeAttr('style') 382 .removeClass(); 383 if (currentOpts.titleShow === false) { 384 title.hide(); 385 return; 386 } 387 titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr); 388 if (!titleStr || titleStr === '') { 389 title.hide(); 390 return; 391 } 392 title 393 .addClass('fancybox-title-' + currentOpts.titlePosition) 394 .html( titleStr ) 395 .appendTo( 'body' ) 396 .show(); 397 switch (currentOpts.titlePosition) { 398 case 'inside': 399 title 400 .css({ 401 'width' : final_pos.width - (currentOpts.padding * 2), 402 'marginLeft' : currentOpts.padding, 403 'marginRight' : currentOpts.padding 404 }); 405 titleHeight = title.outerHeight(true); 406 title.appendTo( outer ); 407 final_pos.height += titleHeight; 408 break; 409 case 'over': 410 title 411 .css({ 412 'marginLeft' : currentOpts.padding, 413 'width' : final_pos.width - (currentOpts.padding * 2), 414 'bottom' : currentOpts.padding 415 }) 416 .appendTo( outer ); 417 break; 418 case 'float': 419 title 420 .css('left', parseInt((title.width() - final_pos.width - 0)/ 2, 10) * -1) 421 .appendTo( wrap ); 422 break; 423 default: 424 title 425 .css({ 426 'width' : final_pos.width - (currentOpts.padding * 2), 427 'paddingLeft' : currentOpts.padding, 428 'paddingRight' : currentOpts.padding 429 }) 430 .appendTo( wrap ); 431 break; 432 } 433 title.hide(); 434 }, 435 436 _set_navigation = function() { 437 if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) { 438 $(document).bind('keydown.fb', function(e) { 439 if (e.keyCode == 27 && currentOpts.enableEscapeButton) { 440 e.preventDefault(); 441 $.fancybox.close(); 442 } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { 443 e.preventDefault(); 444 $.fancybox[ e.keyCode == 37 ? 'prev' : 'next'](); 445 } 446 }); 447 } 448 if (!currentOpts.showNavArrows) { 449 nav_left.hide(); 450 nav_right.hide(); 451 return; 452 } 453 if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) { 454 nav_left.show(); 455 } 456 if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) { 457 nav_right.show(); 458 } 459 }, 460 461 _finish = function () { 462 if (selectedOpts.autoDimensions) { 463 content.css('height', 'auto'); 464 } 465 wrap.css('height', 'auto'); 466 if (titleStr && titleStr.length) { 467 title.show(); 468 } 469 if (currentOpts.showCloseButton) { 470 close.show(); 471 } 472 _set_navigation(); 473 if (currentOpts.hideOnContentClick) { 474 content.bind('click', $.fancybox.close); 475 } 476 if (currentOpts.hideOnOverlayClick) { 477 overlay.bind('click', $.fancybox.close); 478 } 479 $(window).bind("resize.fb", $.fancybox.resize); 480 if (currentOpts.centerOnScroll) { 481 $(window).bind("scroll.fb", $.fancybox.center); 482 } 483 if (currentOpts.type == 'iframe') { 484 $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content); 485 } 486 wrap.show(); 487 busy = false;
488 $.fancybox.center(); 489 currentOpts.onComplete(currentArray, currentIndex, currentOpts); 490 _preload_images(); 491 }, 492 493 _preload_images = function() { 494 var href, 495 objNext; 496 if ((currentArray.length -1) > currentIndex) { 497 href = currentArray[ currentIndex + 1 ].href; 498 if (typeof href !== 'undefined' && href.match(imgRegExp)) { 499 objNext = new Image(); 500 objNext.src = href; 501 } 502 } 503 if (currentIndex > 0) { 504 href = currentArray[ currentIndex - 1 ].href; 505 if (typeof href !== 'undefined' && href.match(imgRegExp)) { 506 objNext = new Image(); 507 objNext.src = href; 508 } 509 } 510 }, 511 512 _draw = function(pos) { 513 var dim = { 514 width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10), 515 height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10), 516 top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10), 517 left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10) 518 }; 519 if (typeof final_pos.opacity !== 'undefined') { 520 dim.opacity = pos < 0.5 ? 0.5 : pos; 521 } 522 wrap.css(dim); 523 content.css({ 524 'width' : dim.width - currentOpts.padding * 2, 525 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2 526 }); 527 }, 528 529 _get_viewport = function() { 530 var wrap = jQuery('#fancybox-wrap'); 531 var outer = jQuery('#fancybox-outer'); 532 var paddT = (wrap.innerWidth() - wrap.width()) + (outer.innerWidth() - outer.width()); 533 return [ 534 $(window).width() - (currentOpts.margin * 2) - (paddT), 535 ($(window).height() - (currentOpts.margin * 2)) * 0.8, 536 $(document).scrollLeft() + currentOpts.margin - 0, 537 $(document).scrollTop() + currentOpts.margin 538 ]; 539 }, 540 541 _get_zoom_to = function () { 542 var view = _get_viewport(), 543 to = {}, 544 resize = currentOpts.autoScale, 545 double_padding = currentOpts.padding * 2, 546 ratio; 547 if (currentOpts.width.toString().indexOf('%') > -1) { 548 to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10); 549 } else { 550 to.width = currentOpts.width + double_padding; 551 } 552 if (currentOpts.height.toString().indexOf('%') > -1) { 553 to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10); 554 } else { 555 to.height = currentOpts.height + double_padding; 556 } 557 if (resize && (to.width > view[0] || to.height > view[1])) { 558 if (selectedOpts.type == 'image') { 559 ratio = (currentOpts.width ) / (currentOpts.height ); 560 if ((to.width ) > view[0]) { 561 to.width = view[0]; 562 to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10); 563 } 564 if ((to.height) > view[1]) { 565 to.height = view[1]; 566 to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10); 567 } 568 } else { 569 to.width = Math.min(to.width, view[0]); 570 to.height = Math.min(to.height, view[1]); 571 } 572 } 573 to.top = parseInt(Math.max(view[3] - 0, view[3] + ((view[1] - to.height - 0) * 0.5)), 10); 574 if (to.top < 40) to.top = 80; 575 to.left = parseInt(Math.max(view[2] - 0, view[2] + ((view[0] - to.width - 0) * 0.5)), 10); 576 return to; 577 }, 578 579 _get_obj_pos = function(obj) { 580 var pos = obj.offset(); 581 pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0; 582 pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0; 583 pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0; 584 pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0; 585 pos.width = obj.width(); 586 pos.height = obj.height(); 587 return pos; 588 }, 589 590 _get_zoom_from = function() { 591 var orig = selectedOpts.orig ? $(selectedOpts.orig) : false, 592 from = {}, 593 pos, 594 view; 595 if (orig && orig.length) { 596 pos = _get_obj_pos(orig); 597 from = { 598 width : pos.width + (currentOpts.padding * 2), 599 height : pos.height + (currentOpts.padding * 2), 600 top : pos.top - currentOpts.padding - 20, 601 left : pos.left - currentOpts.padding - 20 602 }; 603 } else { 604 view = _get_viewport(); 605 from = { 606 width : currentOpts.padding * 2, 607 height : currentOpts.padding * 2,
608 top : parseInt(view[3] + view[1] * 0.5, 10), 609 left : parseInt(view[2] + view[0] * 0.5, 10) 610 }; 611 } 612 return from; 613 }, 614 615 _animate_loading = function() { 616 if (!loading.is(':visible')){ 617 clearInterval(loadingTimer); 618 return; 619 } 620 $('div', loading).css('top', (loadingFrame * -40) + 'px'); 621 loadingFrame = (loadingFrame + 1) % 12; 622 }; 623 _init_fancy = function() { 624 625 if ((currentOpts) && (!currentOpts.length)) { 626 currentOpts = $.fn.fancybox.defaults; 627 } 628 console.log('init fancy'); 629 if ($("#fancybox-wrap").length) { 630 tmp = jQuery('#fancybox-tmp'); 631 loading = jQuery('#fancybox-loading'); 632 overlay = jQuery('#fancybox-overlay'); 633 wrap = jQuery('#fancybox-wrap'); 634 return; 635 } 636 var appendHtml = '<div id="fancybox-tmp"></div><div id="fancybox-loading"><div></div></div><div id="fancybox-overlay"></div><div id="fancybox-wrap"></div>'; 637 tmp = jQuery('#fancybox-tmp'); 638 loading = jQuery('#fancybox-loading'); 639 overlay = jQuery('#fancybox-overlay'); 640 wrap = jQuery('#fancybox-wrap'); 641 return; 642 643 } 644 /* 645 * Public methods 646 */ 647 648 $.fn.fancybox = function(options) { 649 //console.log('fancy contructor'); 650 if (!$(this).length) { 651 return this; 652 } 653 $(this) 654 .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) 655 .unbind('click.fb') 656 .bind('click.fb', function(e) { 657 e.preventDefault(); 658 if (busy) { 659 return; 660 } 661 busy = true; 662 $(this).blur(); 663 selectedArray = []; 664 selectedIndex = 0; 665 var rel = $(this).attr('rel') || ''; 666 var rel2 = $(this).attr('data-rel') || ''; 667 668 if ((!rel || rel == '' || rel === 'nofollow') && (!rel2 || rel2 == '' || rel2 === 'nofollow')) { 669 selectedArray.push(this); 670 } else { 671 if (rel2) { 672 selectedArray = $("a." + rel2 ); 673 selectedIndex = 0; //selectedArray.index( this ); 674 } 675 else { 676 selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]"); 677 jQuery(this).data('fbAdded', true); 678 selectedIndex = selectedArray.index( this ); 679 } 680 } 681 $.fancybox.init(); 682 _start(); 683 return; 684 }); 685 return this; 686 }; 687 688 $.fancybox = function(obj) { 689 var opts; 690 if (busy) { 691 return; 692 } 693 busy = true; 694 opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {}; 695 selectedArray = []; 696 selectedIndex = parseInt(opts.index, 10) || 0; 697 if ($.isArray(obj)) { 698 for (var i = 0, j = obj.length; i < j; i++) { 699 if (typeof obj[i] == 'object') { 700 $(obj[i]).data('fancybox', $.extend({}, opts, obj[i])); 701 } else { 702 obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts)); 703 } 704 } 705 selectedArray = jQuery.merge(selectedArray, obj); 706 } else { 707 if (typeof obj == 'object') { 708 $(obj).data('fancybox', $.extend({}, opts, obj)); 709 } else { 710 obj = $({}).data('fancybox', $.extend({content : obj}, opts)); 711 } 712 selectedArray.push(obj); 713 } 714 if (selectedIndex > selectedArray.length || selectedIndex < 0) { 715 selectedIndex = 0; 716 } 717 _start(); 718 }; 719 720 $.fancybox.showActivity = function() { 721 $.fancybox.initMe(); 722 clearInterval(loadingTimer); 723 loading.show(); 724 loadingTimer = setInterval(_animate_loading, 66); 725 }; 726 727 $.fancybox.hideActivity = function() { 728 loading.hide(); 729 }; 730 731 $.fancybox.next = function() { 732 return $.fancybox.pos( currentIndex + 1); 733 }; 734 735 $.fancybox.prev = function() { 736 return $.fancybox.pos( currentIndex - 1); 737 }; 738 739 $.fancybox.pos = function(pos) { 740 if (busy) { 741 return; 742 } 743 pos = parseInt(pos); 744 selectedArray = currentArray; 745 if (pos > -1 && pos < currentArray.length) { 746 selectedIndex = pos; 747 _start(); 748 } else if (currentOpts.cyclic && currentArray.length > 1) { 749 selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1; 750 _start(); 751 } 752 return; 753 }; 754 755 $.fancybox.cancel = function() { 756 if (busy) { 757 return; 758 } 759 busy = true; 760 $.event.trigger('fancybox-cancel'); 761 _abort(); 762 selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts); 763 busy = false; 764 }; 765 766 // Note: within an iframe use - parent.$.fancybox.close(); 767 $.fancybox.close = function() { 768 if (busy || wrap.is(':hidden')) { 769 return; 770 } 771 busy = true; 772 if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { 773 busy = false;
774 return; 775 } 776 _abort(); 777 $(close.add( nav_left ).add( nav_right )).hide(); 778 $(content.add( overlay )).unbind(); 779 $(window).unbind("resize.fb scroll.fb"); 780 $(document).unbind('keydown.fb'); 781 isIE6 = false; 782 content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank'); 783 if (currentOpts.titlePosition !== 'inside') { 784 title.empty(); 785 } 786 wrap.stop(); 787 function _cleanup() { 788 overlay.fadeOut('fast'); 789 title.empty().hide(); 790 wrap.hide(); 791 $.event.trigger('fancybox-cleanup'); 792 content.empty(); 793 currentOpts.onClosed(currentArray, currentIndex, currentOpts); 794 currentArray = selectedOpts = []; 795 currentIndex = selectedIndex = 0; 796 currentOpts = selectedOpts = {}; 797 busy = false; 798 } 799 wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup); 800 }; 801 802 $.fancybox.resize = function() { 803 if (overlay.is(':visible')) { 804 overlay.css('height', $(document).height()); 805 } 806 $.fancybox.center(true); 807 }; 808 809 $.fancybox.center = function() { 810 var view, align; 811 if (busy) { 812 return; 813 } 814 align = arguments[0] === true ? 1 : 0; 815 view = _get_viewport(); 816 if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) { 817 return; 818 } 819 wrap 820 .stop() 821 .animate({ 822 'top' : parseInt(Math.max(view[3], view[3] + ((view[1] - content.height() - 0) * 0.5) - currentOpts.padding + 64 )), 823 'left' : parseInt(Math.max(view[2] - 0, view[2] + ((view[0] - content.width() - 0) * 0.5) - currentOpts.padding)) 824 }, typeof arguments[0] == 'number' ? arguments[0] : 200); 825 }; 826 827 $.fancybox.init = function() { 828 $.fancybox.initMe(); 829 }; 830 831 $.fancybox.initMe = function() { 832 if ($("#fancybox-wrap").length) { 833 tmp = jQuery('#fancybox-tmp'); 834 loading = jQuery('#fancybox-loading'); 835 overlay = jQuery('#fancybox-overlay'); 836 wrap = jQuery('#fancybox-wrap'); 837 outer = jQuery('#fancybox-outer'); 838 content = jQuery('#fancybox-content'); 839 close = jQuery('#fancybox-close'); 840 title = jQuery('#fancybox-title'); 841 nav_left = jQuery('#fancybox-left'); 842 nav_right = jQuery('#fancybox-right'); 843 return; 844 } 845 846 $('body').append( 847 tmp = $('<div id="fancybox-tmp"></div>'), 848 loading = $('<div id="fancybox-loading"><div></div></div>'), 849 overlay = $('<div id="fancybox-overlay"></div>'), 850 wrap = $('<div id="fancybox-wrap"></div>') 851 ); 852 outer = $('<div id="fancybox-outer"></div>') 853 .append('') 854 .appendTo( wrap ); 855 856 outer.append( 857 content = $('<div id="fancybox-content"></div>'), 858 close = $('<a id="fancybox-close"></a>'), 859 title = $('<div id="fancybox-title"></div>'), 860 nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'), 861 nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>') 862 ); 863 864 close.click($.fancybox.close); 865 loading.click($.fancybox.cancel); 866 nav_left.click(function(e) { 867 e.preventDefault(); 868 $.fancybox.prev(); 869 }); 870 871 nav_right.click(function(e) { 872 e.preventDefault(); 873 $.fancybox.next(); 874 }); 875 876 if ($.fn.mousewheel) { 877 wrap.bind('mousewheel.fb', function(e, delta) { 878 if (busy) { 879 e.preventDefault(); 880 } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) { 881 e.preventDefault(); 882 $.fancybox[ delta > 0 ? 'prev' : 'next'](); 883 } 884 }); 885 } 886 }; 887 888 $.fn.fancybox.defaults = { 889 padding : 0, 890 margin : 0, 891 opacity : false, 892 modal : false, 893 cyclic : false, 894 scrolling : 'auto', // 'auto', 'yes' or 'no' 895 width : 560, 896 height : 340, 897 autoScale : true, 898 autoDimensions : true, 899 centerOnScroll : false, 900 ajax : {}, 901 hideOnOverlayClick : true, 902 hideOnContentClick : false, 903 overlayShow : true, 904 overlayOpacity : 0.7, 905 overlayColor : '#777', 906 titleShow : true, 907 titlePosition : 'float', // 'float', 'outside', 'inside' or 'over' 908 titleFormat : null, 909 titleFromAlt : false, 910 transitionIn : 'fade', // 'elastic', 'fade' or 'none' 911 transitionOut : 'fade', // 'elastic', 'fade' or 'none' 912 speedIn : 300, 913 speedOut : 300, 914 changeSpeed : 300, 915 changeFade : 'fast', 916 easingIn : 'swing', 917 easingOut : 'swing', 918 showCloseButton : true, 919 showNavArrows : true, 920 enableEscapeButton : true, 921 enableKeyboardNav : true, 922 onStart : function(){}, 923 onCancel : function(){}, 924 onComplete : function(){}, 925 onCleanup : function(){}, 926 onClosed : function(){}, 927 onError : function(){} 928 }; 929})(jQuery); 930 931if (typeof window.fancyQueue !== 'undefined') { 932 for (var i=0; i<window.fancyQueue.length; i++) { 933 jQuery(window.fancyQueue[i]).fancybox(window.fancyConfig[i]); 934 } 935}
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.