Advertisement
Guest User

Untitled

a guest
Jun 10th, 2015
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 31.38 KB | None | 0 0
  1. /*
  2.  
  3.  * FancyBox - jQuery Plugin
  4.  
  5.  * Simple and fancy lightbox alternative
  6.  
  7.  *
  8.  
  9.  * Examples and documentation at: http://fancybox.net
  10.  
  11.  *
  12.  
  13.  * Copyright (c) 2008 - 2010 Janis Skarnelis
  14.  
  15.  * 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.
  16.  
  17.  *
  18.  
  19.  * Version: 1.3.4 (11/11/2010)
  20.  
  21.  * Requires: jQuery v1.3+
  22.  
  23.  *
  24.  
  25.  * Dual licensed under the MIT and GPL licenses:
  26.  
  27.  *   http://www.opensource.org/licenses/mit-license.php
  28.  
  29.  *   http://www.gnu.org/licenses/gpl.html
  30.  
  31.  */
  32.  
  33.  
  34.  
  35. ;(function($) {
  36.  
  37.     var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
  38.  
  39.  
  40.  
  41.         selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
  42.  
  43.  
  44.  
  45.         ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
  46.  
  47.  
  48.  
  49.         loadingTimer, loadingFrame = 1,
  50.  
  51.  
  52.  
  53.         titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
  54.  
  55.  
  56.  
  57.         isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
  58.  
  59.  
  60.  
  61.         /*
  62.  
  63.          * Private methods
  64.  
  65.          */
  66.  
  67.  
  68.  
  69.         _abort = function() {
  70.  
  71.             loading.hide();
  72.  
  73.  
  74.  
  75.             imgPreloader.onerror = imgPreloader.onload = null;
  76.  
  77.  
  78.  
  79.             if (ajaxLoader) {
  80.  
  81.                 ajaxLoader.abort();
  82.  
  83.             }
  84.  
  85.  
  86.  
  87.             tmp.empty();
  88.  
  89.         },
  90.  
  91.  
  92.  
  93.         _error = function() {
  94.  
  95.             if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
  96.  
  97.                 loading.hide();
  98.  
  99.                 busy = false;
  100.  
  101.                 return;
  102.  
  103.             }
  104.  
  105.  
  106.  
  107.             selectedOpts.titleShow = false;
  108.  
  109.  
  110.  
  111.             selectedOpts.width = 'auto';
  112.  
  113.             selectedOpts.height = 'auto';
  114.  
  115.  
  116.  
  117.             tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );
  118.  
  119.  
  120.  
  121.             _process_inline();
  122.  
  123.         },
  124.  
  125.  
  126.  
  127.         _start = function() {
  128.  
  129.             var obj = selectedArray[ selectedIndex ],
  130.  
  131.                 href,
  132.  
  133.                 type,
  134.  
  135.                 title,
  136.  
  137.                 str,
  138.  
  139.                 emb,
  140.  
  141.                 ret;
  142.  
  143.  
  144.  
  145.             _abort();
  146.  
  147.  
  148.  
  149.             selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
  150.  
  151.  
  152.  
  153.             ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);
  154.  
  155.  
  156.  
  157.             if (ret === false) {
  158.  
  159.                 busy = false;
  160.  
  161.                 return;
  162.  
  163.             } else if (typeof ret == 'object') {
  164.  
  165.                 selectedOpts = $.extend(selectedOpts, ret);
  166.  
  167.             }
  168.  
  169.  
  170.  
  171.             title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';
  172.  
  173.  
  174.  
  175.             if (obj.nodeName && !selectedOpts.orig) {
  176.  
  177.                 selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
  178.  
  179.             }
  180.  
  181.  
  182.  
  183.             if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
  184.  
  185.                 title = selectedOpts.orig.attr('alt');
  186.  
  187.             }
  188.  
  189.  
  190.  
  191.             href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;
  192.  
  193.  
  194.  
  195.             if ((/^(?:javascript)/i).test(href) || href == '#') {
  196.  
  197.                 href = null;
  198.  
  199.             }
  200.  
  201.  
  202.  
  203.             if (selectedOpts.type) {
  204.  
  205.                 type = selectedOpts.type;
  206.  
  207.  
  208.  
  209.                 if (!href) {
  210.  
  211.                     href = selectedOpts.content;
  212.  
  213.                 }
  214.  
  215.  
  216.  
  217.             } else if (selectedOpts.content) {
  218.  
  219.                 type = 'html';
  220.  
  221.  
  222.  
  223.             } else if (href) {
  224.  
  225.                 if (href.match(imgRegExp)) {
  226.  
  227.                     type = 'image';
  228.  
  229.  
  230.  
  231.                 } else if (href.match(swfRegExp)) {
  232.  
  233.                     type = 'swf';
  234.  
  235.  
  236.  
  237.                 } else if ($(obj).hasClass("iframe")) {
  238.  
  239.                     type = 'iframe';
  240.  
  241.  
  242.  
  243.                 } else if (href.indexOf("#") === 0) {
  244.  
  245.                     type = 'inline';
  246.  
  247.  
  248.  
  249.                 } else {
  250.  
  251.                     type = 'ajax';
  252.  
  253.                 }
  254.  
  255.             }
  256.  
  257.  
  258.  
  259.             if (!type) {
  260.  
  261.                 _error();
  262.  
  263.                 return;
  264.  
  265.             }
  266.  
  267.  
  268.  
  269.             if (type == 'inline') {
  270.  
  271.                 obj = href.substr(href.indexOf("#"));
  272.  
  273.                 type = $(obj).length > 0 ? 'inline' : 'ajax';
  274.  
  275.             }
  276.  
  277.  
  278.  
  279.             selectedOpts.type = type;
  280.  
  281.             selectedOpts.href = href;
  282.  
  283.             selectedOpts.title = title;
  284.  
  285.  
  286.  
  287.             if (selectedOpts.autoDimensions) {
  288.  
  289.                 if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
  290.  
  291.                     selectedOpts.width = 'auto';
  292.  
  293.                     selectedOpts.height = 'auto';
  294.  
  295.                 } else {
  296.  
  297.                     selectedOpts.autoDimensions = false;   
  298.  
  299.                 }
  300.  
  301.             }
  302.  
  303.  
  304.  
  305.             if (selectedOpts.modal) {
  306.  
  307.                 selectedOpts.overlayShow = true;
  308.  
  309.                 selectedOpts.hideOnOverlayClick = false;
  310.  
  311.                 selectedOpts.hideOnContentClick = false;
  312.  
  313.                 selectedOpts.enableEscapeButton = false;
  314.  
  315.                 selectedOpts.showCloseButton = false;
  316.  
  317.             }
  318.  
  319.  
  320.  
  321.             selectedOpts.padding = parseInt(selectedOpts.padding, 10);
  322.  
  323.             selectedOpts.margin = parseInt(selectedOpts.margin, 10);
  324.  
  325.  
  326.  
  327.             tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
  328.  
  329.  
  330.  
  331.             $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
  332.  
  333.                 $(this).replaceWith(content.children());               
  334.  
  335.             });
  336.  
  337.  
  338.  
  339.             switch (type) {
  340.  
  341.                 case 'html' :
  342.  
  343.                     tmp.html( selectedOpts.content );
  344.  
  345.                     _process_inline();
  346.  
  347.                 break;
  348.  
  349.  
  350.  
  351.                 case 'inline' :
  352.  
  353.                     if ( $(obj).parent().is('#fancybox-content') === true) {
  354.  
  355.                         busy = false;
  356.  
  357.                         return;
  358.  
  359.                     }
  360.  
  361.  
  362.  
  363.                     $('<div class="fancybox-inline-tmp" />')
  364.  
  365.                         .hide()
  366.  
  367.                         .insertBefore( $(obj) )
  368.  
  369.                         .bind('fancybox-cleanup', function() {
  370.  
  371.                             $(this).replaceWith(content.children());
  372.  
  373.                         }).bind('fancybox-cancel', function() {
  374.  
  375.                             $(this).replaceWith(tmp.children());
  376.  
  377.                         });
  378.  
  379.  
  380.  
  381.                     $(obj).appendTo(tmp);
  382.  
  383.  
  384.  
  385.                     _process_inline();
  386.  
  387.                 break;
  388.  
  389.  
  390.  
  391.                 case 'image':
  392.  
  393.                     busy = false;
  394.  
  395.  
  396.  
  397.                     $.fancybox.showActivity();
  398.  
  399.  
  400.  
  401.                     imgPreloader = new Image();
  402.  
  403.  
  404.  
  405.                     imgPreloader.onerror = function() {
  406.  
  407.                         _error();
  408.  
  409.                     };
  410.  
  411.  
  412.  
  413.                     imgPreloader.onload = function() {
  414.  
  415.                         busy = true;
  416.  
  417.  
  418.  
  419.                         imgPreloader.onerror = imgPreloader.onload = null;
  420.  
  421.  
  422.  
  423.                         _process_image();
  424.  
  425.                     };
  426.  
  427.  
  428.  
  429.                     imgPreloader.src = href;
  430.  
  431.                 break;
  432.  
  433.  
  434.  
  435.                 case 'swf':
  436.  
  437.                     selectedOpts.scrolling = 'no';
  438.  
  439.  
  440.  
  441.                     str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
  442.  
  443.                     emb = '';
  444.  
  445.  
  446.  
  447.                     $.each(selectedOpts.swf, function(name, val) {
  448.  
  449.                         str += '<param name="' + name + '" value="' + val + '"></param>';
  450.  
  451.                         emb += ' ' + name + '="' + val + '"';
  452.  
  453.                     });
  454.  
  455.  
  456.  
  457.                     str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
  458.  
  459.  
  460.  
  461.                     tmp.html(str);
  462.  
  463.  
  464.  
  465.                     _process_inline();
  466.  
  467.                 break;
  468.  
  469.  
  470.  
  471.                 case 'ajax':
  472.  
  473.                     busy = false;
  474.  
  475.  
  476.  
  477.                     $.fancybox.showActivity();
  478.  
  479.  
  480.  
  481.                     selectedOpts.ajax.win = selectedOpts.ajax.success;
  482.  
  483.  
  484.  
  485.                     ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
  486.  
  487.                         url : href,
  488.  
  489.                         data : selectedOpts.ajax.data || {},
  490.  
  491.                         error : function(XMLHttpRequest, textStatus, errorThrown) {
  492.  
  493.                             if ( XMLHttpRequest.status > 0 ) {
  494.  
  495.                                 _error();
  496.  
  497.                             }
  498.  
  499.                         },
  500.  
  501.                         success : function(data, textStatus, XMLHttpRequest) {
  502.  
  503.                             var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
  504.  
  505.                             if (o.status == 200) {
  506.  
  507.                                 if ( typeof selectedOpts.ajax.win == 'function' ) {
  508.  
  509.                                     ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);
  510.  
  511.  
  512.  
  513.                                     if (ret === false) {
  514.  
  515.                                         loading.hide();
  516.  
  517.                                         return;
  518.  
  519.                                     } else if (typeof ret == 'string' || typeof ret == 'object') {
  520.  
  521.                                         data = ret;
  522.  
  523.                                     }
  524.  
  525.                                 }
  526.  
  527.  
  528.  
  529.                                 tmp.html( data );
  530.  
  531.                                 _process_inline();
  532.  
  533.                             }
  534.  
  535.                         }
  536.  
  537.                     }));
  538.  
  539.  
  540.  
  541.                 break;
  542.  
  543.  
  544.  
  545.                 case 'iframe':
  546.  
  547.                     _show();
  548.  
  549.                 break;
  550.  
  551.             }
  552.  
  553.         },
  554.  
  555.  
  556.  
  557.         _process_inline = function() {
  558.  
  559.             var
  560.  
  561.                 w = selectedOpts.width,
  562.  
  563.                 h = selectedOpts.height;
  564.  
  565.  
  566.  
  567.             if (w.toString().indexOf('%') > -1) {
  568.  
  569.                 w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';
  570.  
  571.  
  572.  
  573.             } else {
  574.  
  575.                 w = w == 'auto' ? 'auto' : w + 'px';   
  576.  
  577.             }
  578.  
  579.  
  580.  
  581.             if (h.toString().indexOf('%') > -1) {
  582.  
  583.                 h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';
  584.  
  585.  
  586.  
  587.             } else {
  588.  
  589.                 h = h == 'auto' ? 'auto' : h + 'px';   
  590.  
  591.             }
  592.  
  593.  
  594.  
  595.             tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');
  596.  
  597.  
  598.  
  599.             selectedOpts.width = tmp.width();
  600.  
  601.             selectedOpts.height = tmp.height();
  602.  
  603.  
  604.  
  605.             _show();
  606.  
  607.         },
  608.  
  609.  
  610.  
  611.         _process_image = function() {
  612.  
  613.             selectedOpts.width = imgPreloader.width;
  614.  
  615.             selectedOpts.height = imgPreloader.height;
  616.  
  617.  
  618.  
  619.             $("<img />").attr({
  620.  
  621.                 'id' : 'fancybox-img',
  622.  
  623.                 'src' : imgPreloader.src,
  624.  
  625.                 'alt' : selectedOpts.title
  626.  
  627.             }).appendTo( tmp );
  628.  
  629.  
  630.  
  631.             _show();
  632.  
  633.         },
  634.  
  635.  
  636.  
  637.         _show = function() {
  638.  
  639.             var pos, equal;
  640.  
  641.  
  642.  
  643.             loading.hide();
  644.  
  645.  
  646.  
  647.             if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
  648.  
  649.                 $.event.trigger('fancybox-cancel');
  650.  
  651.  
  652.  
  653.                 busy = false;
  654.  
  655.                 return;
  656.  
  657.             }
  658.  
  659.  
  660.  
  661.             busy = true;
  662.  
  663.  
  664.  
  665.             $(content.add( overlay )).unbind();
  666.  
  667.  
  668.  
  669.             $(window).unbind("resize.fb scroll.fb");
  670.  
  671.             $(document).unbind('keydown.fb');
  672.  
  673.  
  674.  
  675.             if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
  676.  
  677.                 wrap.css('height', wrap.height());
  678.  
  679.             }
  680.  
  681.  
  682.  
  683.             currentArray = selectedArray;
  684.  
  685.             currentIndex = selectedIndex;
  686.  
  687.             currentOpts = selectedOpts;
  688.  
  689.  
  690.  
  691.             if (currentOpts.overlayShow) {
  692.  
  693.                 overlay.css({
  694.  
  695.                     'background-color' : currentOpts.overlayColor,
  696.  
  697.                     'opacity' : currentOpts.overlayOpacity,
  698.  
  699.                     'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
  700.  
  701.                     'height' : $(document).height()
  702.  
  703.                 });
  704.  
  705.  
  706.  
  707.                 if (!overlay.is(':visible')) {
  708.  
  709.                     if (isIE6) {
  710.  
  711.                         $('select:not(#fancybox-tmp select)').filter(function() {
  712.  
  713.                             return this.style.visibility !== 'hidden';
  714.  
  715.                         }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
  716.  
  717.                             this.style.visibility = 'inherit';
  718.  
  719.                         });
  720.  
  721.                     }
  722.  
  723.  
  724.  
  725.                     overlay.show();
  726.  
  727.                 }
  728.  
  729.             } else {
  730.  
  731.                 overlay.hide();
  732.  
  733.             }
  734.  
  735.  
  736.  
  737.             final_pos = _get_zoom_to();
  738.  
  739.  
  740.  
  741.             _process_title();
  742.  
  743.  
  744.  
  745.             if (wrap.is(":visible")) {
  746.  
  747.                 $( close.add( nav_left ).add( nav_right ) ).hide();
  748.  
  749.  
  750.  
  751.                 pos = wrap.position(),
  752.  
  753.  
  754.  
  755.                 start_pos = {
  756.  
  757.                     top  : pos.top,
  758.  
  759.                     left : pos.left,
  760.  
  761.                     width : wrap.width(),
  762.  
  763.                     height : wrap.height()
  764.  
  765.                 };
  766.  
  767.  
  768.  
  769.                 equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
  770.  
  771.  
  772.  
  773.                 content.fadeTo(currentOpts.changeFade, 0.3, function() {
  774.  
  775.                     var finish_resizing = function() {
  776.  
  777.                         content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
  778.  
  779.                     };
  780.  
  781.  
  782.  
  783.                     $.event.trigger('fancybox-change');
  784.  
  785.  
  786.  
  787.                     content
  788.  
  789.                         .empty()
  790.  
  791.                         .removeAttr('filter')
  792.  
  793.                         .css({
  794.  
  795.                             'border-width' : currentOpts.padding,
  796.  
  797.                             'width' : final_pos.width - currentOpts.padding * 2,
  798.  
  799.                             'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
  800.  
  801.                         });
  802.  
  803.  
  804.  
  805.                     if (equal) {
  806.  
  807.                         finish_resizing();
  808.  
  809.  
  810.  
  811.                     } else {
  812.  
  813.                         fx.prop = 0;
  814.  
  815.  
  816.  
  817.                         $(fx).animate({prop: 1}, {
  818.  
  819.                              duration : currentOpts.changeSpeed,
  820.  
  821.                              easing : currentOpts.easingChange,
  822.  
  823.                              step : _draw,
  824.  
  825.                              complete : finish_resizing
  826.  
  827.                         });
  828.  
  829.                     }
  830.  
  831.                 });
  832.  
  833.  
  834.  
  835.                 return;
  836.  
  837.             }
  838.  
  839.  
  840.  
  841.             wrap.removeAttr("style");
  842.  
  843.  
  844.  
  845.             content.css('border-width', currentOpts.padding);
  846.  
  847.  
  848.  
  849.             if (currentOpts.transitionIn == 'elastic') {
  850.  
  851.                 start_pos = _get_zoom_from();
  852.  
  853.  
  854.  
  855.                 content.html( tmp.contents() );
  856.  
  857.  
  858.  
  859.                 wrap.show();
  860.  
  861.  
  862.  
  863.                 if (currentOpts.opacity) {
  864.  
  865.                     final_pos.opacity = 0;
  866.  
  867.                 }
  868.  
  869.  
  870.  
  871.                 fx.prop = 0;
  872.  
  873.  
  874.  
  875.                 $(fx).animate({prop: 1}, {
  876.  
  877.                      duration : currentOpts.speedIn,
  878.  
  879.                      easing : currentOpts.easingIn,
  880.  
  881.                      step : _draw,
  882.  
  883.                      complete : _finish
  884.  
  885.                 });
  886.  
  887.  
  888.  
  889.                 return;
  890.  
  891.             }
  892.  
  893.  
  894.  
  895.             if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {
  896.  
  897.                 title.show();  
  898.  
  899.             }
  900.  
  901.  
  902.  
  903.             content
  904.  
  905.                 .css({
  906.  
  907.                     'width' : final_pos.width - currentOpts.padding * 2,
  908.  
  909.                     'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
  910.  
  911.                 })
  912.  
  913.                 .html( tmp.contents() );
  914.  
  915.  
  916.  
  917.             wrap
  918.  
  919.                 .css(final_pos)
  920.  
  921.                 .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
  922.  
  923.         },
  924.  
  925.  
  926.  
  927.         _format_title = function(title) {
  928.             var nstr=imgPreloader.src;
  929.             var nres=nstr.split("/");
  930.        
  931.             var img_name=nres[nres.length-1];
  932.             var img_name_arr=img_name.split(".");
  933.             var title_new= "<b>"+img_name_arr[0]+"</b><br>";
  934.        
  935.         if (title && title.length) {
  936.  
  937.                 if (currentOpts.titlePosition == 'float') {
  938.                     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_new+  title+ '</td><td id="fancybox-title-float-right"></td></tr></table>';
  939.  
  940.                 }
  941.  
  942.  
  943.  
  944.                 return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title_new + title + '</div>';
  945.  
  946.             }
  947.  
  948.            
  949.  
  950.             return false;
  951.             /*var nstr=imgPreloader.src;
  952.             var nres=nstr.split("/");
  953.        
  954.             var img_name=nres[nres.length-1];
  955.             var img_name_arr=img_name.split(".");
  956.             return "<b>"+img_name_arr[0]+"</b>";*/
  957.  
  958.         },
  959.  
  960.  
  961.  
  962.         _process_title = function() {
  963.  
  964.             titleStr = currentOpts.title || '';
  965.  
  966.             titleHeight = 0;
  967.  
  968.  
  969.  
  970.             title
  971.  
  972.                 .empty()
  973.  
  974.                 .removeAttr('style')
  975.  
  976.                 .removeClass();
  977.  
  978.  
  979.  
  980.             if (currentOpts.titleShow === false) {
  981.  
  982.                 title.hide();
  983.  
  984.                 return;
  985.  
  986.             }
  987.  
  988.  
  989.  
  990.             titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
  991.  
  992.  
  993.  
  994.             if (!titleStr || titleStr === '') {
  995.  
  996.                 title.hide();
  997.  
  998.                 return;
  999.  
  1000.             }
  1001.  
  1002.  
  1003.  
  1004.             title
  1005.  
  1006.                 .addClass('fancybox-title-' + currentOpts.titlePosition)
  1007.  
  1008.                 .html( titleStr )
  1009.  
  1010.                 .appendTo( 'body' )
  1011.  
  1012.                 .show();
  1013.  
  1014.  
  1015.  
  1016.             switch (currentOpts.titlePosition) {
  1017.  
  1018.                 case 'inside':
  1019.  
  1020.                     title
  1021.  
  1022.                         .css({
  1023.  
  1024.                             'width' : final_pos.width - (currentOpts.padding * 2),
  1025.  
  1026.                             'marginLeft' : currentOpts.padding,
  1027.  
  1028.                             'marginRight' : currentOpts.padding
  1029.  
  1030.                         });
  1031.  
  1032.  
  1033.  
  1034.                     titleHeight = title.outerHeight(true);
  1035.  
  1036.  
  1037.  
  1038.                     title.appendTo( outer );
  1039.  
  1040.  
  1041.  
  1042.                     final_pos.height += titleHeight;
  1043.  
  1044.                 break;
  1045.  
  1046.  
  1047.  
  1048.                 case 'over':
  1049.  
  1050.                     title
  1051.  
  1052.                         .css({
  1053.  
  1054.                             'marginLeft' : currentOpts.padding,
  1055.  
  1056.                             'width' : final_pos.width - (currentOpts.padding * 2),
  1057.  
  1058.                             'bottom' : currentOpts.padding
  1059.  
  1060.                         })
  1061.  
  1062.                         .appendTo( outer );
  1063.  
  1064.                 break;
  1065.  
  1066.  
  1067.  
  1068.                 case 'float':
  1069.  
  1070.                     title
  1071.  
  1072.                         .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
  1073.  
  1074.                         .appendTo( wrap );
  1075.  
  1076.                 break;
  1077.  
  1078.  
  1079.  
  1080.                 default:
  1081.  
  1082.                     title
  1083.  
  1084.                         .css({
  1085.  
  1086.                             'width' : final_pos.width - (currentOpts.padding * 2),
  1087.  
  1088.                             'paddingLeft' : currentOpts.padding,
  1089.  
  1090.                             'paddingRight' : currentOpts.padding
  1091.  
  1092.                         })
  1093.  
  1094.                         .appendTo( wrap );
  1095.  
  1096.                 break;
  1097.  
  1098.             }
  1099.  
  1100.  
  1101.  
  1102.             title.hide();
  1103.  
  1104.         },
  1105.  
  1106.  
  1107.  
  1108.         _set_navigation = function() {
  1109.  
  1110.             if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
  1111.  
  1112.                 $(document).bind('keydown.fb', function(e) {
  1113.  
  1114.                     if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
  1115.  
  1116.                         e.preventDefault();
  1117.  
  1118.                         $.fancybox.close();
  1119.  
  1120.  
  1121.  
  1122.                     } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
  1123.  
  1124.                         e.preventDefault();
  1125.  
  1126.                         $.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
  1127.  
  1128.                     }
  1129.  
  1130.                 });
  1131.  
  1132.             }
  1133.  
  1134.  
  1135.  
  1136.             if (!currentOpts.showNavArrows) {
  1137.  
  1138.                 nav_left.hide();
  1139.  
  1140.                 nav_right.hide();
  1141.  
  1142.                 return;
  1143.  
  1144.             }
  1145.  
  1146.  
  1147.  
  1148.             if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
  1149.  
  1150.                 nav_left.show();
  1151.  
  1152.             }
  1153.  
  1154.  
  1155.  
  1156.             if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
  1157.  
  1158.                 nav_right.show();
  1159.  
  1160.             }
  1161.  
  1162.         },
  1163.  
  1164.  
  1165.  
  1166.         _finish = function () {
  1167.  
  1168.             if (!$.support.opacity) {
  1169.  
  1170.                 content.get(0).style.removeAttribute('filter');
  1171.  
  1172.                 wrap.get(0).style.removeAttribute('filter');
  1173.  
  1174.             }
  1175.  
  1176.  
  1177.  
  1178.             if (selectedOpts.autoDimensions) {
  1179.  
  1180.                 content.css('height', 'auto');
  1181.  
  1182.             }
  1183.  
  1184.  
  1185.  
  1186.             wrap.css('height', 'auto');
  1187.  
  1188.  
  1189.  
  1190.             if (titleStr && titleStr.length) {
  1191.  
  1192.                 title.show();
  1193.  
  1194.             }
  1195.  
  1196.  
  1197.  
  1198.             if (currentOpts.showCloseButton) {
  1199.  
  1200.                 close.show();
  1201.  
  1202.             }
  1203.  
  1204.  
  1205.  
  1206.             _set_navigation();
  1207.  
  1208.    
  1209.  
  1210.             if (currentOpts.hideOnContentClick) {
  1211.  
  1212.                 content.bind('click', $.fancybox.close);
  1213.  
  1214.             }
  1215.  
  1216.  
  1217.  
  1218.             if (currentOpts.hideOnOverlayClick) {
  1219.  
  1220.                 overlay.bind('click', $.fancybox.close);
  1221.  
  1222.             }
  1223.  
  1224.  
  1225.  
  1226.             $(window).bind("resize.fb", $.fancybox.resize);
  1227.  
  1228.  
  1229.  
  1230.             if (currentOpts.centerOnScroll) {
  1231.  
  1232.                 $(window).bind("scroll.fb", $.fancybox.center);
  1233.  
  1234.             }
  1235.  
  1236.  
  1237.  
  1238.             if (currentOpts.type == 'iframe') {
  1239.  
  1240.                 $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
  1241.  
  1242.             }
  1243.  
  1244.  
  1245.  
  1246.             wrap.show();
  1247.  
  1248.  
  1249.  
  1250.             busy = false;
  1251.  
  1252.  
  1253.  
  1254.             $.fancybox.center();
  1255.  
  1256.  
  1257.  
  1258.             currentOpts.onComplete(currentArray, currentIndex, currentOpts);
  1259.  
  1260.  
  1261.  
  1262.             _preload_images();
  1263.  
  1264.         },
  1265.  
  1266.  
  1267.  
  1268.         _preload_images = function() {
  1269.  
  1270.             var href,
  1271.  
  1272.                 objNext;
  1273.  
  1274.  
  1275.  
  1276.             if ((currentArray.length -1) > currentIndex) {
  1277.  
  1278.                 href = currentArray[ currentIndex + 1 ].href;
  1279.  
  1280.  
  1281.  
  1282.                 if (typeof href !== 'undefined' && href.match(imgRegExp)) {
  1283.  
  1284.                     objNext = new Image();
  1285.  
  1286.                     objNext.src = href;
  1287.  
  1288.                 }
  1289.  
  1290.             }
  1291.  
  1292.  
  1293.  
  1294.             if (currentIndex > 0) {
  1295.  
  1296.                 href = currentArray[ currentIndex - 1 ].href;
  1297.  
  1298.  
  1299.  
  1300.                 if (typeof href !== 'undefined' && href.match(imgRegExp)) {
  1301.  
  1302.                     objNext = new Image();
  1303.  
  1304.                     objNext.src = href;
  1305.  
  1306.                 }
  1307.  
  1308.             }
  1309.  
  1310.         },
  1311.  
  1312.  
  1313.  
  1314.         _draw = function(pos) {
  1315.  
  1316.             var dim = {
  1317.  
  1318.                 width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
  1319.  
  1320.                 height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
  1321.  
  1322.  
  1323.  
  1324.                 top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
  1325.  
  1326.                 left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
  1327.  
  1328.             };
  1329.  
  1330.  
  1331.  
  1332.             if (typeof final_pos.opacity !== 'undefined') {
  1333.  
  1334.                 dim.opacity = pos < 0.5 ? 0.5 : pos;
  1335.  
  1336.             }
  1337.  
  1338.  
  1339.  
  1340.             wrap.css(dim);
  1341.  
  1342.  
  1343.  
  1344.             content.css({
  1345.  
  1346.                 'width' : dim.width - currentOpts.padding * 2,
  1347.  
  1348.                 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
  1349.  
  1350.             });
  1351.  
  1352.         },
  1353.  
  1354.  
  1355.  
  1356.         _get_viewport = function() {
  1357.  
  1358.             return [
  1359.  
  1360.                 $(window).width() - (currentOpts.margin * 2),
  1361.  
  1362.                 $(window).height() - (currentOpts.margin * 2),
  1363.  
  1364.                 $(document).scrollLeft() + currentOpts.margin,
  1365.  
  1366.                 $(document).scrollTop() + currentOpts.margin
  1367.  
  1368.             ];
  1369.  
  1370.         },
  1371.  
  1372.  
  1373.  
  1374.         _get_zoom_to = function () {
  1375.  
  1376.             var view = _get_viewport(),
  1377.  
  1378.                 to = {},
  1379.  
  1380.                 resize = currentOpts.autoScale,
  1381.  
  1382.                 double_padding = currentOpts.padding * 2,
  1383.  
  1384.                 ratio;
  1385.  
  1386.  
  1387.  
  1388.             if (currentOpts.width.toString().indexOf('%') > -1) {
  1389.  
  1390.                 to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
  1391.  
  1392.             } else {
  1393.  
  1394.                 to.width = currentOpts.width + double_padding;
  1395.  
  1396.             }
  1397.  
  1398.  
  1399.  
  1400.             if (currentOpts.height.toString().indexOf('%') > -1) {
  1401.  
  1402.                 to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
  1403.  
  1404.             } else {
  1405.  
  1406.                 to.height = currentOpts.height + double_padding;
  1407.  
  1408.             }
  1409.  
  1410.  
  1411.  
  1412.             if (resize && (to.width > view[0] || to.height > view[1])) {
  1413.  
  1414.                 if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
  1415.  
  1416.                     ratio = (currentOpts.width ) / (currentOpts.height );
  1417.  
  1418.  
  1419.  
  1420.                     if ((to.width ) > view[0]) {
  1421.  
  1422.                         to.width = view[0];
  1423.  
  1424.                         to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
  1425.  
  1426.                     }
  1427.  
  1428.  
  1429.  
  1430.                     if ((to.height) > view[1]) {
  1431.  
  1432.                         to.height = view[1];
  1433.  
  1434.                         to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
  1435.  
  1436.                     }
  1437.  
  1438.  
  1439.  
  1440.                 } else {
  1441.  
  1442.                     to.width = Math.min(to.width, view[0]);
  1443.  
  1444.                     to.height = Math.min(to.height, view[1]);
  1445.  
  1446.                 }
  1447.  
  1448.             }
  1449.  
  1450.  
  1451.  
  1452.             to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
  1453.  
  1454.             to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);
  1455.  
  1456.  
  1457.  
  1458.             return to;
  1459.  
  1460.         },
  1461.  
  1462.  
  1463.  
  1464.         _get_obj_pos = function(obj) {
  1465.  
  1466.             var pos = obj.offset();
  1467.  
  1468.  
  1469.  
  1470.             pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
  1471.  
  1472.             pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;
  1473.  
  1474.  
  1475.  
  1476.             pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
  1477.  
  1478.             pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;
  1479.  
  1480.  
  1481.  
  1482.             pos.width = obj.width();
  1483.  
  1484.             pos.height = obj.height();
  1485.  
  1486.  
  1487.  
  1488.             return pos;
  1489.  
  1490.         },
  1491.  
  1492.  
  1493.  
  1494.         _get_zoom_from = function() {
  1495.  
  1496.             var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
  1497.  
  1498.                 from = {},
  1499.  
  1500.                 pos,
  1501.  
  1502.                 view;
  1503.  
  1504.  
  1505.  
  1506.             if (orig && orig.length) {
  1507.  
  1508.                 pos = _get_obj_pos(orig);
  1509.  
  1510.  
  1511.  
  1512.                 from = {
  1513.  
  1514.                     width : pos.width + (currentOpts.padding * 2),
  1515.  
  1516.                     height : pos.height + (currentOpts.padding * 2),
  1517.  
  1518.                     top : pos.top - currentOpts.padding - 20,
  1519.  
  1520.                     left : pos.left - currentOpts.padding - 20
  1521.  
  1522.                 };
  1523.  
  1524.  
  1525.  
  1526.             } else {
  1527.  
  1528.                 view = _get_viewport();
  1529.  
  1530.  
  1531.  
  1532.                 from = {
  1533.  
  1534.                     width : currentOpts.padding * 2,
  1535.  
  1536.                     height : currentOpts.padding * 2,
  1537.  
  1538.                     top : parseInt(view[3] + view[1] * 0.5, 10),
  1539.  
  1540.                     left : parseInt(view[2] + view[0] * 0.5, 10)
  1541.  
  1542.                 };
  1543.  
  1544.             }
  1545.  
  1546.  
  1547.  
  1548.             return from;
  1549.  
  1550.         },
  1551.  
  1552.  
  1553.  
  1554.         _animate_loading = function() {
  1555.  
  1556.             if (!loading.is(':visible')){
  1557.  
  1558.                 clearInterval(loadingTimer);
  1559.  
  1560.                 return;
  1561.  
  1562.             }
  1563.  
  1564.  
  1565.  
  1566.             $('div', loading).css('top', (loadingFrame * -40) + 'px');
  1567.  
  1568.  
  1569.  
  1570.             loadingFrame = (loadingFrame + 1) % 12;
  1571.  
  1572.         };
  1573.  
  1574.  
  1575.  
  1576.     /*
  1577.  
  1578.      * Public methods
  1579.  
  1580.      */
  1581.  
  1582.  
  1583.  
  1584.     $.fn.fancybox = function(options) {
  1585.  
  1586.         if (!$(this).length) {
  1587.  
  1588.             return this;
  1589.  
  1590.         }
  1591.  
  1592.  
  1593.  
  1594.         $(this)
  1595.  
  1596.             .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
  1597.  
  1598.             .unbind('click.fb')
  1599.  
  1600.             .bind('click.fb', function(e) {
  1601.  
  1602.                 e.preventDefault();
  1603.  
  1604.  
  1605.  
  1606.                 if (busy) {
  1607.  
  1608.                     return;
  1609.  
  1610.                 }
  1611.  
  1612.  
  1613.  
  1614.                 busy = true;
  1615.  
  1616.  
  1617.  
  1618.                 $(this).blur();
  1619.  
  1620.  
  1621.  
  1622.                 selectedArray = [];
  1623.  
  1624.                 selectedIndex = 0;
  1625.  
  1626.  
  1627.  
  1628.                 var rel = $(this).attr('rel') || '';
  1629.  
  1630.  
  1631.  
  1632.                 if (!rel || rel == '' || rel === 'nofollow') {
  1633.  
  1634.                     selectedArray.push(this);
  1635.  
  1636.  
  1637.  
  1638.                 } else {
  1639.  
  1640.                     selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
  1641.  
  1642.                     selectedIndex = selectedArray.index( this );
  1643.  
  1644.                 }
  1645.  
  1646.  
  1647.  
  1648.                 _start();
  1649.  
  1650.  
  1651.  
  1652.                 return;
  1653.  
  1654.             });
  1655.  
  1656.  
  1657.  
  1658.         return this;
  1659.  
  1660.     };
  1661.  
  1662.  
  1663.  
  1664.     $.fancybox = function(obj) {
  1665.  
  1666.         var opts;
  1667.  
  1668.  
  1669.  
  1670.         if (busy) {
  1671.  
  1672.             return;
  1673.  
  1674.         }
  1675.  
  1676.  
  1677.  
  1678.         busy = true;
  1679.  
  1680.         opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
  1681.  
  1682.  
  1683.  
  1684.         selectedArray = [];
  1685.  
  1686.         selectedIndex = parseInt(opts.index, 10) || 0;
  1687.  
  1688.  
  1689.  
  1690.         if ($.isArray(obj)) {
  1691.  
  1692.             for (var i = 0, j = obj.length; i < j; i++) {
  1693.  
  1694.                 if (typeof obj[i] == 'object') {
  1695.  
  1696.                     $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
  1697.  
  1698.                 } else {
  1699.  
  1700.                     obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
  1701.  
  1702.                 }
  1703.  
  1704.             }
  1705.  
  1706.  
  1707.  
  1708.             selectedArray = jQuery.merge(selectedArray, obj);
  1709.  
  1710.  
  1711.  
  1712.         } else {
  1713.  
  1714.             if (typeof obj == 'object') {
  1715.  
  1716.                 $(obj).data('fancybox', $.extend({}, opts, obj));
  1717.  
  1718.             } else {
  1719.  
  1720.                 obj = $({}).data('fancybox', $.extend({content : obj}, opts));
  1721.  
  1722.             }
  1723.  
  1724.  
  1725.  
  1726.             selectedArray.push(obj);
  1727.  
  1728.         }
  1729.  
  1730.  
  1731.  
  1732.         if (selectedIndex > selectedArray.length || selectedIndex < 0) {
  1733.  
  1734.             selectedIndex = 0;
  1735.  
  1736.         }
  1737.  
  1738.  
  1739.  
  1740.         _start();
  1741.  
  1742.     };
  1743.  
  1744.  
  1745.  
  1746.     $.fancybox.showActivity = function() {
  1747.  
  1748.         clearInterval(loadingTimer);
  1749.  
  1750.  
  1751.  
  1752.         loading.show();
  1753.  
  1754.         loadingTimer = setInterval(_animate_loading, 66);
  1755.  
  1756.     };
  1757.  
  1758.  
  1759.  
  1760.     $.fancybox.hideActivity = function() {
  1761.  
  1762.         loading.hide();
  1763.  
  1764.     };
  1765.  
  1766.  
  1767.  
  1768.     $.fancybox.next = function() {
  1769.  
  1770.         return $.fancybox.pos( currentIndex + 1);
  1771.  
  1772.     };
  1773.  
  1774.  
  1775.  
  1776.     $.fancybox.prev = function() {
  1777.  
  1778.         return $.fancybox.pos( currentIndex - 1);
  1779.  
  1780.     };
  1781.  
  1782.  
  1783.  
  1784.     $.fancybox.pos = function(pos) {
  1785.  
  1786.         if (busy) {
  1787.  
  1788.             return;
  1789.  
  1790.         }
  1791.  
  1792.  
  1793.  
  1794.         pos = parseInt(pos);
  1795.  
  1796.  
  1797.  
  1798.         selectedArray = currentArray;
  1799.  
  1800.  
  1801.  
  1802.         if (pos > -1 && pos < currentArray.length) {
  1803.  
  1804.             selectedIndex = pos;
  1805.  
  1806.             _start();
  1807.  
  1808.  
  1809.  
  1810.         } else if (currentOpts.cyclic && currentArray.length > 1) {
  1811.  
  1812.             selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
  1813.  
  1814.             _start();
  1815.  
  1816.         }
  1817.  
  1818.  
  1819.  
  1820.         return;
  1821.  
  1822.     };
  1823.  
  1824.  
  1825.  
  1826.     $.fancybox.cancel = function() {
  1827.  
  1828.         if (busy) {
  1829.  
  1830.             return;
  1831.  
  1832.         }
  1833.  
  1834.  
  1835.  
  1836.         busy = true;
  1837.  
  1838.  
  1839.  
  1840.         $.event.trigger('fancybox-cancel');
  1841.  
  1842.  
  1843.  
  1844.         _abort();
  1845.  
  1846.  
  1847.  
  1848.         selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
  1849.  
  1850.  
  1851.  
  1852.         busy = false;
  1853.  
  1854.     };
  1855.  
  1856.  
  1857.  
  1858.     // Note: within an iframe use - parent.$.fancybox.close();
  1859.  
  1860.     $.fancybox.close = function() {
  1861.  
  1862.         if (busy || wrap.is(':hidden')) {
  1863.  
  1864.             return;
  1865.  
  1866.         }
  1867.  
  1868.  
  1869.  
  1870.         busy = true;
  1871.  
  1872.  
  1873.  
  1874.         if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
  1875.  
  1876.             busy = false;
  1877.  
  1878.             return;
  1879.  
  1880.         }
  1881.  
  1882.  
  1883.  
  1884.         _abort();
  1885.  
  1886.  
  1887.  
  1888.         $(close.add( nav_left ).add( nav_right )).hide();
  1889.  
  1890.  
  1891.  
  1892.         $(content.add( overlay )).unbind();
  1893.  
  1894.  
  1895.  
  1896.         $(window).unbind("resize.fb scroll.fb");
  1897.  
  1898.         $(document).unbind('keydown.fb');
  1899.  
  1900.  
  1901.  
  1902.         content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
  1903.  
  1904.  
  1905.  
  1906.         if (currentOpts.titlePosition !== 'inside') {
  1907.  
  1908.             title.empty();
  1909.  
  1910.         }
  1911.  
  1912.  
  1913.  
  1914.         wrap.stop();
  1915.  
  1916.  
  1917.  
  1918.         function _cleanup() {
  1919.  
  1920.             overlay.fadeOut('fast');
  1921.  
  1922.  
  1923.  
  1924.             title.empty().hide();
  1925.  
  1926.             wrap.hide();
  1927.  
  1928.  
  1929.  
  1930.             $.event.trigger('fancybox-cleanup');
  1931.  
  1932.  
  1933.  
  1934.             content.empty();
  1935.  
  1936.  
  1937.  
  1938.             currentOpts.onClosed(currentArray, currentIndex, currentOpts);
  1939.  
  1940.  
  1941.  
  1942.             currentArray = selectedOpts = [];
  1943.  
  1944.             currentIndex = selectedIndex = 0;
  1945.  
  1946.             currentOpts = selectedOpts  = {};
  1947.  
  1948.  
  1949.  
  1950.             busy = false;
  1951.  
  1952.         }
  1953.  
  1954.  
  1955.  
  1956.         if (currentOpts.transitionOut == 'elastic') {
  1957.  
  1958.             start_pos = _get_zoom_from();
  1959.  
  1960.  
  1961.  
  1962.             var pos = wrap.position();
  1963.  
  1964.  
  1965.  
  1966.             final_pos = {
  1967.  
  1968.                 top  : pos.top ,
  1969.  
  1970.                 left : pos.left,
  1971.  
  1972.                 width : wrap.width(),
  1973.  
  1974.                 height : wrap.height()
  1975.  
  1976.             };
  1977.  
  1978.  
  1979.  
  1980.             if (currentOpts.opacity) {
  1981.  
  1982.                 final_pos.opacity = 1;
  1983.  
  1984.             }
  1985.  
  1986.  
  1987.  
  1988.             title.empty().hide();
  1989.  
  1990.  
  1991.  
  1992.             fx.prop = 1;
  1993.  
  1994.  
  1995.  
  1996.             $(fx).animate({ prop: 0 }, {
  1997.  
  1998.                  duration : currentOpts.speedOut,
  1999.  
  2000.                  easing : currentOpts.easingOut,
  2001.  
  2002.                  step : _draw,
  2003.  
  2004.                  complete : _cleanup
  2005.  
  2006.             });
  2007.  
  2008.  
  2009.  
  2010.         } else {
  2011.  
  2012.             wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
  2013.  
  2014.         }
  2015.  
  2016.     };
  2017.  
  2018.  
  2019.  
  2020.     $.fancybox.resize = function() {
  2021.  
  2022.         if (overlay.is(':visible')) {
  2023.  
  2024.             overlay.css('height', $(document).height());
  2025.  
  2026.         }
  2027.  
  2028.  
  2029.  
  2030.         $.fancybox.center(true);
  2031.  
  2032.     };
  2033.  
  2034.  
  2035.  
  2036.     $.fancybox.center = function() {
  2037.  
  2038.         var view, align;
  2039.  
  2040.  
  2041.  
  2042.         if (busy) {
  2043.  
  2044.             return;
  2045.  
  2046.         }
  2047.  
  2048.  
  2049.  
  2050.         align = arguments[0] === true ? 1 : 0;
  2051.  
  2052.         view = _get_viewport();
  2053.  
  2054.  
  2055.  
  2056.         if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
  2057.  
  2058.             return;
  2059.  
  2060.         }
  2061.  
  2062.  
  2063.  
  2064.         wrap
  2065.  
  2066.             .stop()
  2067.  
  2068.             .animate({
  2069.  
  2070.                 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
  2071.  
  2072.                 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
  2073.  
  2074.             }, typeof arguments[0] == 'number' ? arguments[0] : 200);
  2075.  
  2076.     };
  2077.  
  2078.  
  2079.  
  2080.     $.fancybox.init = function() {
  2081.  
  2082.         if ($("#fancybox-wrap").length) {
  2083.  
  2084.             return;
  2085.  
  2086.         }
  2087.  
  2088.  
  2089.  
  2090.         $('body').append(
  2091.  
  2092.             tmp = $('<div id="fancybox-tmp"></div>'),
  2093.  
  2094.             loading = $('<div id="fancybox-loading"><div></div></div>'),
  2095.  
  2096.             overlay = $('<div id="fancybox-overlay"></div>'),
  2097.  
  2098.             wrap = $('<div id="fancybox-wrap"></div>')
  2099.  
  2100.         );
  2101.  
  2102.  
  2103.  
  2104.         outer = $('<div id="fancybox-outer"></div>')
  2105.  
  2106.             .append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
  2107.  
  2108.             .appendTo( wrap );
  2109.  
  2110.  
  2111.  
  2112.         outer.append(
  2113.  
  2114.             content = $('<div id="fancybox-content"></div>'),
  2115.  
  2116.             close = $('<a id="fancybox-close"></a>'),
  2117.  
  2118.             title = $('<div id="fancybox-title"></div>'),
  2119.  
  2120.  
  2121.  
  2122.             nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
  2123.  
  2124.             nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
  2125.  
  2126.         );
  2127.  
  2128.  
  2129.  
  2130.         close.click($.fancybox.close);
  2131.  
  2132.         loading.click($.fancybox.cancel);
  2133.  
  2134.  
  2135.  
  2136.         nav_left.click(function(e) {
  2137.  
  2138.             e.preventDefault();
  2139.  
  2140.             $.fancybox.prev();
  2141.  
  2142.         });
  2143.  
  2144.  
  2145.  
  2146.         nav_right.click(function(e) {
  2147.  
  2148.             e.preventDefault();
  2149.  
  2150.             $.fancybox.next();
  2151.  
  2152.         });
  2153.  
  2154.  
  2155.  
  2156.         if ($.fn.mousewheel) {
  2157.  
  2158.             wrap.bind('mousewheel.fb', function(e, delta) {
  2159.  
  2160.                 if (busy) {
  2161.  
  2162.                     e.preventDefault();
  2163.  
  2164.  
  2165.  
  2166.                 } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
  2167.  
  2168.                     e.preventDefault();
  2169.  
  2170.                     $.fancybox[ delta > 0 ? 'prev' : 'next']();
  2171.  
  2172.                 }
  2173.  
  2174.             });
  2175.  
  2176.         }
  2177.  
  2178.  
  2179.  
  2180.         if (!$.support.opacity) {
  2181.  
  2182.             wrap.addClass('fancybox-ie');
  2183.  
  2184.         }
  2185.  
  2186.  
  2187.  
  2188.         if (isIE6) {
  2189.  
  2190.             loading.addClass('fancybox-ie6');
  2191.  
  2192.             wrap.addClass('fancybox-ie6');
  2193.  
  2194.  
  2195.  
  2196.             $('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
  2197.  
  2198.         }
  2199.  
  2200.     };
  2201.  
  2202.  
  2203.  
  2204.     $.fn.fancybox.defaults = {
  2205.  
  2206.         padding : 10,
  2207.  
  2208.         margin : 40,
  2209.  
  2210.         opacity : false,
  2211.  
  2212.         modal : false,
  2213.  
  2214.         cyclic : false,
  2215.  
  2216.         scrolling : 'auto', // 'auto', 'yes' or 'no'
  2217.  
  2218.  
  2219.  
  2220.         width : 560,
  2221.  
  2222.         height : 340,
  2223.  
  2224.  
  2225.  
  2226.         autoScale : true,
  2227.  
  2228.         autoDimensions : true,
  2229.  
  2230.         centerOnScroll : false,
  2231.  
  2232.  
  2233.  
  2234.         ajax : {},
  2235.  
  2236.         swf : { wmode: 'transparent' },
  2237.  
  2238.  
  2239.  
  2240.         hideOnOverlayClick : true,
  2241.  
  2242.         hideOnContentClick : false,
  2243.  
  2244.  
  2245.  
  2246.         overlayShow : true,
  2247.  
  2248.         overlayOpacity : 0.7,
  2249.  
  2250.         overlayColor : '#777',
  2251.  
  2252.  
  2253.  
  2254.         titleShow : true,
  2255.  
  2256.         titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
  2257.  
  2258.         titleFormat : null,
  2259.  
  2260.         titleFromAlt : false,
  2261.  
  2262.  
  2263.  
  2264.         transitionIn : 'fade', // 'elastic', 'fade' or 'none'
  2265.  
  2266.         transitionOut : 'fade', // 'elastic', 'fade' or 'none'
  2267.  
  2268.  
  2269.  
  2270.         speedIn : 300,
  2271.  
  2272.         speedOut : 300,
  2273.  
  2274.  
  2275.  
  2276.         changeSpeed : 300,
  2277.  
  2278.         changeFade : 'fast',
  2279.  
  2280.  
  2281.  
  2282.         easingIn : 'swing',
  2283.  
  2284.         easingOut : 'swing',
  2285.  
  2286.  
  2287.  
  2288.         showCloseButton  : true,
  2289.  
  2290.         showNavArrows : true,
  2291.  
  2292.         enableEscapeButton : true,
  2293.  
  2294.         enableKeyboardNav : true,
  2295.  
  2296.  
  2297.  
  2298.         onStart : function(){},
  2299.  
  2300.         onCancel : function(){},
  2301.  
  2302.         onComplete : function(){},
  2303.  
  2304.         onCleanup : function(){},
  2305.  
  2306.         onClosed : function(){},
  2307.  
  2308.         onError : function(){}
  2309.  
  2310.     };
  2311.  
  2312.  
  2313.  
  2314.     $(document).ready(function() {
  2315.  
  2316.         $.fancybox.init();
  2317.  
  2318.     });
  2319.  
  2320.  
  2321.  
  2322. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement