www/adium.im 582:05bd926590b1: Update fancyBox.
commits at adium.im
commits at adium.im
Tue Feb 21 15:23:36 UTC 2012
details: http://hg.adium.im/www/adium.im/rev/05bd926590b1
revision: 582:05bd926590b1
branch: rewrite
author: Paul Wilde <me at paulwilde.co.uk>
date: Tue Feb 21 14:52:59 2012 +0000
Update fancyBox.
diffs (truncated from 1674 to 1000 lines):
diff -r b323210dacc6 -r 05bd926590b1 about/index.php
--- a/about/index.php Sun Feb 19 15:09:55 2012 +0000
+++ b/about/index.php Tue Feb 21 14:52:59 2012 +0000
@@ -9,7 +9,7 @@
<link rel="stylesheet" href="/rewrite/assets/styles/global.css">
<link rel="stylesheet" href="/rewrite/assets/styles/about.css">
<link rel="stylesheet" href="/rewrite/assets/styles/thumbnails.css">
- <link rel="stylesheet" href="/rewrite/assets/scripts/fancybox/fancybox.css">
+ <link rel="stylesheet" href="/rewrite/assets/scripts/fancybox/fancybox.min.css">
<link rel="shortcut icon" href="/rewrite/favicon.ico">
<link rel="apple-touch-icon-precomposed" href="/rewrite/apple-touch-icon.png">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
diff -r b323210dacc6 -r 05bd926590b1 assets/scripts/fancybox/blank.gif
Binary file assets/scripts/fancybox/blank.gif has changed
diff -r b323210dacc6 -r 05bd926590b1 assets/scripts/fancybox/close.png
Binary file assets/scripts/fancybox/close.png has changed
diff -r b323210dacc6 -r 05bd926590b1 assets/scripts/fancybox/fancybox.css
--- a/assets/scripts/fancybox/fancybox.css Sun Feb 19 15:09:55 2012 +0000
+++ b/assets/scripts/fancybox/fancybox.css Tue Feb 21 14:52:59 2012 +0000
@@ -1,4 +1,4 @@
-/*! fancyBox v2.0.4 fancyapps.com | fancyapps.com/fancybox/#license */
+/*! fancyBox v2.0.5 fancyapps.com | fancyapps.com/fancybox/#license */
.fancybox-tmp iframe, .fancybox-tmp object {
vertical-align: top;
padding: 0;
@@ -13,23 +13,25 @@
}
.fancybox-outer {
+ position: relative;
padding: 0;
margin: 0;
- /* Removed to prevent bad edges on images
- background: #f9f9f9; */
+ background: transparent;
color: #444;
text-shadow: none;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
-.fancybox-opened { z-index: 1003; }
+.fancybox-opened {
+ z-index: 1003;
+}
.fancybox-opened .fancybox-outer {
- -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, .5);
- -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, .5);
- box-shadow: 0 10px 25px rgba(0, 0, 0, .5);
+ -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
}
.fancybox-inner {
@@ -43,14 +45,15 @@
}
.fancybox-error {
+ background-color: #000;
color: #666;
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+ padding: 13px 16px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
margin: 0;
- padding: 13px 16px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- background-color: #000;
+ padding: 10px;
}
.fancybox-image, .fancybox-iframe {
@@ -67,32 +70,33 @@
max-width: 100%;
max-height: 100%;
-webkit-background-clip: content-box;
- -moz-background-clip: content;
- background-clip: content-box;
+ -moz-background-clip: content;
+ background-clip: content-box;
-webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+ background-image: url('fancybox_sprite.png');
}
#fancybox-loading {
position: fixed;
top: 50%;
left: 50%;
- margin-top: -21px;
- margin-left: -21px;
- width: 42px;
- height: 42px;
- background: #000 url('fancybox_loading.gif') center center no-repeat;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- opacity: .8;
+ margin-top: -22px;
+ margin-left: -22px;
+ background-position: 0 -108px;
+ opacity: 0.8;
cursor: pointer;
z-index: 1010;
}
-.fancybox-close, .fancybox-prev span, .fancybox-next span {
- background-image: url('fancybox_sprite.png');
+#fancybox-loading div {
+ width: 44px;
+ height: 44px;
+ background: url('fancybox_loading.gif') center center no-repeat;
}
.fancybox-close {
@@ -105,7 +109,7 @@
z-index: 1004;
}
-.fancybox-prev, .fancybox-next {
+.fancybox-nav {
position: absolute;
top: 0;
width: 40%;
@@ -123,38 +127,31 @@
right: 0;
}
-.fancybox-prev span, .fancybox-next span {
+.fancybox-nav span {
position: absolute;
top: 50%;
- left: -9999px;
width: 36px;
height: 36px;
margin-top: -18px;
cursor: pointer;
z-index: 1003;
+ visibility: hidden;
}
.fancybox-prev span {
+ left: 20px;
background-position: 0 -36px;
}
.fancybox-next span {
+ right: 20px;
background-position: 0 -72px;
}
-.fancybox-prev:hover, .fancybox-next:hover {
+.fancybox-nav:hover span {
visibility: visible;
}
-.fancybox-prev:hover span {
- left: 20px;
-}
-
-.fancybox-next:hover span {
- left: auto;
- right: 20px;
-}
-
.fancybox-tmp {
position: absolute;
top: -9999px;
@@ -194,7 +191,7 @@
position: absolute;
bottom: 0;
right: 50%;
- margin-bottom: -38px;
+ margin-bottom: -35px;
z-index: 1003;
text-align: center;
}
@@ -202,7 +199,7 @@
.fancybox-title-float-wrap .child {
display: inline-block;
margin-right: -100%;
- padding: 6px 12px;
+ padding: 3px 12px;
-webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, .4);
-moz-box-shadow: 0 2px 3px rgba(0, 0, 0, .4);
box-shadow: 0 2px 3px rgba(0, 0, 0, .4);
@@ -218,7 +215,10 @@
border-radius: 6px;
color: #eee;
font-size: 14px;
+ text-shadow: 0 1px 2px #222;
+ color: #FFF;
font-weight: bold;
+ line-height: 24px;
white-space: nowrap;
}
diff -r b323210dacc6 -r 05bd926590b1 assets/scripts/fancybox/fancybox.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/scripts/fancybox/fancybox.js Tue Feb 21 14:52:59 2012 +0000
@@ -0,0 +1,1414 @@
+ /*!
+ * fancyBox - jQuery Plugin
+ * version: 2.0.5 (21/02/2012)
+ * @requires jQuery v1.6 or later
+ *
+ * Examples at http://fancyapps.com/fancybox/
+ * License: www.fancyapps.com/fancybox/#license
+ *
+ * Copyright 2012 Janis Skarnelis - janis at fancyapps.com
+ *
+ */
+(function (window, document, $) {
+ var W = $(window),
+ D = $(document),
+ F = $.fancybox = function () {
+ F.open.apply( this, arguments );
+ },
+ didResize = false,
+ resizeTimer = null,
+ isMobile = typeof document.createTouch !== "undefined";
+
+ $.extend(F, {
+ // The current version of fancyBox
+ version: '2.0.5',
+
+ defaults: {
+ padding: 15,
+ margin: 20,
+
+ width: 800,
+ height: 600,
+ minWidth: 100,
+ minHeight: 100,
+ maxWidth: 9999,
+ maxHeight: 9999,
+
+ autoSize: true,
+ autoResize: !isMobile,
+ autoCenter : !isMobile,
+ fitToView: true,
+ aspectRatio: false,
+ topRatio: 0.5,
+
+ fixed: !($.browser.msie && $.browser.version <= 6) && !isMobile,
+ scrolling: 'auto', // 'auto', 'yes' or 'no'
+ wrapCSS: 'fancybox-default',
+
+ arrows: true,
+ closeBtn: true,
+ closeClick: false,
+ nextClick : false,
+ mouseWheel: true,
+ autoPlay: false,
+ playSpeed: 3000,
+ preload : 3,
+
+ modal: false,
+ loop: true,
+ ajax: { dataType: 'html', headers: { 'X-fancyBox': true } },
+ keys: {
+ next: [13, 32, 34, 39, 40], // enter, space, page down, right arrow, down arrow
+ prev: [8, 33, 37, 38], // backspace, page up, left arrow, up arrow
+ close: [27] // escape key
+ },
+
+ // Override some properties
+ index: 0,
+ type: null,
+ href: null,
+ content: null,
+ title: null,
+
+ // HTML templates
+ tpl: {
+ wrap: '<div class="fancybox-wrap"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div>',
+ image: '<img class="fancybox-image" src="{href}" alt="" />',
+ iframe: '<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"' + ($.browser.msie ? ' allowtransparency="true"' : '') + '></iframe>',
+ swf: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',
+ error: '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
+ closeBtn: '<div title="Close" class="fancybox-item fancybox-close"></div>',
+ next: '<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',
+ prev: '<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'
+ },
+
+ // Properties for each animation type
+ // Opening fancyBox
+ openEffect: 'fade', // 'elastic', 'fade' or 'none'
+ openSpeed: 250,
+ openEasing: 'swing',
+ openOpacity: true,
+ openMethod: 'zoomIn',
+
+ // Closing fancyBox
+ closeEffect: 'fade', // 'elastic', 'fade' or 'none'
+ closeSpeed: 250,
+ closeEasing: 'swing',
+ closeOpacity: true,
+ closeMethod: 'zoomOut',
+
+ // Changing next gallery item
+ nextEffect: 'elastic', // 'elastic', 'fade' or 'none'
+ nextSpeed: 300,
+ nextEasing: 'swing',
+ nextMethod: 'changeIn',
+
+ // Changing previous gallery item
+ prevEffect: 'elastic', // 'elastic', 'fade' or 'none'
+ prevSpeed: 300,
+ prevEasing: 'swing',
+ prevMethod: 'changeOut',
+
+ // Enabled helpers
+ helpers: {
+ overlay: {
+ speedIn: 0,
+ speedOut: 300,
+ opacity: 0.8,
+ css: {
+ cursor: 'pointer'
+ },
+ closeClick: true
+ },
+ title: {
+ type: 'float' // 'float', 'inside', 'outside' or 'over'
+ }
+ },
+
+ // Callbacks
+ onCancel: $.noop, // If canceling
+ beforeLoad: $.noop, // Before loading
+ afterLoad: $.noop, // After loading
+ beforeShow: $.noop, // Before changing in current item
+ afterShow: $.noop, // After opening
+ beforeClose: $.noop, // Before closing
+ afterClose: $.noop // After closing
+ },
+
+ //Current state
+ group: {}, // Selected group
+ opts: {}, // Group options
+ coming: null, // Element being loaded
+ current: null, // Currently loaded element
+ isOpen: false, // Is currently open
+ isOpened: false, // Have been fully opened at least once
+ wrap: null,
+ outer: null,
+ inner: null,
+
+ player: {
+ timer: null,
+ isActive: false
+ },
+
+ // Loaders
+ ajaxLoad: null,
+ imgPreload: null,
+
+ // Some collections
+ transitions: {},
+ helpers: {},
+
+ /*
+ * Static methods
+ */
+
+ open: function (group, opts) {
+ //Kill existing instances
+ F.close(true);
+
+ //Normalize group
+ if (group && !$.isArray(group)) {
+ group = group instanceof $ ? $(group).get() : [group];
+ }
+
+ F.isActive = true;
+
+ //Extend the defaults
+ F.opts = $.extend(true, {}, F.defaults, opts);
+
+ //All options are merged recursive except keys
+ if ($.isPlainObject(opts) && typeof opts.keys !== 'undefined') {
+ F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
+ }
+
+ F.group = group;
+
+ F._start(F.opts.index || 0);
+ },
+
+ cancel: function () {
+ if (F.coming && false === F.trigger('onCancel')) {
+ return;
+ }
+
+ F.coming = null;
+
+ F.hideLoading();
+
+ if (F.ajaxLoad) {
+ F.ajaxLoad.abort();
+ }
+
+ F.ajaxLoad = null;
+
+ if (F.imgPreload) {
+ F.imgPreload.onload = F.imgPreload.onabort = F.imgPreload.onerror = null;
+ }
+ },
+
+ close: function (a) {
+ F.cancel();
+
+ if (!F.current || false === F.trigger('beforeClose')) {
+ return;
+ }
+
+ F.unbindEvents();
+
+ //If forced or is still opening then remove immediately
+ if (!F.isOpen || (a && a[0] === true)) {
+ $(".fancybox-wrap").stop().trigger('onReset').remove();
+
+ F._afterZoomOut();
+
+ } else {
+ F.isOpen = F.isOpened = false;
+
+ $(".fancybox-item, .fancybox-nav").remove();
+
+ F.wrap.stop(true).removeClass('fancybox-opened');
+ F.inner.css('overflow', 'hidden');
+
+ F.transitions[F.current.closeMethod]();
+ }
+ },
+
+ // Start/stop slideshow
+ play: function (a) {
+ var clear = function () {
+ clearTimeout(F.player.timer);
+ },
+ set = function () {
+ clear();
+
+ if (F.current && F.player.isActive) {
+ F.player.timer = setTimeout(F.next, F.current.playSpeed);
+ }
+ },
+ stop = function () {
+ clear();
+
+ $('body').unbind('.player');
+
+ F.player.isActive = false;
+
+ F.trigger('onPlayEnd');
+ },
+ start = function () {
+ if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
+ F.player.isActive = true;
+
+ $('body').bind({
+ 'afterShow.player onUpdate.player': set,
+ 'onCancel.player beforeClose.player': stop,
+ 'beforeLoad.player': clear
+ });
+
+ set();
+
+ F.trigger('onPlayStart');
+ }
+ };
+
+ if (F.player.isActive || (a && a[0] === false)) {
+ stop();
+ } else {
+ start();
+ }
+ },
+
+ next: function () {
+ if (F.current) {
+ F.jumpto(F.current.index + 1);
+ }
+ },
+
+ prev: function () {
+ if (F.current) {
+ F.jumpto(F.current.index - 1);
+ }
+ },
+
+ jumpto: function (index) {
+ if (!F.current) {
+ return;
+ }
+
+ index = parseInt(index, 10);
+
+ if (F.group.length > 1 && F.current.loop) {
+ if (index >= F.group.length) {
+ index = 0;
+
+ } else if (index < 0) {
+ index = F.group.length - 1;
+ }
+ }
+
+ if (typeof F.group[index] !== 'undefined') {
+ F.cancel();
+
+ F._start(index);
+ }
+ },
+
+ reposition: function (a) {
+ if (F.isOpen) {
+ F.wrap.css(F._getPosition(a));
+ }
+ },
+
+ update: function (e) {
+ if (F.isOpen) {
+ // It's a very bad idea to attach handlers to the window scroll event, run this code after a delay
+ if (!didResize) {
+ resizeTimer = setTimeout(function () {
+ var current = F.current;
+
+ if (didResize) {
+ didResize = false;
+
+ if (current) {
+ if (current.autoResize || (e && e.type === 'orientationchange')) {
+ if (current.autoSize) {
+ F.inner.height('auto');
+ current.height = F.inner.height();
+ }
+
+ F._setDimension();
+
+ if (current.canGrow) {
+ F.inner.height('auto');
+ }
+ }
+
+ if (current.autoCenter) {
+ F.reposition();
+ }
+
+ F.trigger('onUpdate');
+ }
+ }
+ }, 100);
+ }
+
+ didResize = true;
+ }
+ },
+
+ toggle: function () {
+ if (F.isOpen) {
+ F.current.fitToView = !F.current.fitToView;
+
+ F.update();
+ }
+ },
+
+ hideLoading: function () {
+ $("#fancybox-loading").remove();
+ },
+
+ showLoading: function () {
+ F.hideLoading();
+
+ $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
+ },
+
+ getViewport: function () {
+ return {
+ x: W.scrollLeft(),
+ y: W.scrollTop(),
+ w: W.width(),
+ h: W.height()
+ };
+ },
+
+ // Unbind the keyboard / clicking actions
+ unbindEvents: function () {
+ if (F.wrap) {
+ F.wrap.unbind('.fb');
+ }
+
+ D.unbind('.fb');
+ W.unbind('.fb');
+ },
+
+ bindEvents: function () {
+ var current = F.current,
+ keys = current.keys;
+
+ if (!current) {
+ return;
+ }
+
+ W.bind('resize.fb, orientationchange.fb', F.update);
+
+ if (keys) {
+ D.bind('keydown.fb', function (e) {
+ var code;
+
+ // Ignore key combinations and key events within form elements
+ if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && $.inArray(e.target.tagName.toLowerCase(), ['input', 'textarea', 'select', 'button']) < 0) {
+ code = e.keyCode;
+
+ if ($.inArray(code, keys.close) > -1) {
+ F.close();
+ e.preventDefault();
+
+ } else if ($.inArray(code, keys.next) > -1) {
+ F.next();
+ e.preventDefault();
+
+ } else if ($.inArray(code, keys.prev) > -1) {
+ F.prev();
+ e.preventDefault();
+ }
+ }
+ });
+ }
+
+ if ($.fn.mousewheel && current.mouseWheel && F.group.length > 1) {
+ F.wrap.bind('mousewheel.fb', function (e, delta) {
+ var target = $(e.target).get(0);
+
+ if (target.clientHeight === 0 || (target.scrollHeight === target.clientHeight && target.scrollWidth === target.clientWidth)) {
+ e.preventDefault();
+
+ F[delta > 0 ? 'prev' : 'next']();
+ }
+ });
+ }
+ },
+
+ trigger: function (event) {
+ var ret, obj = F[ $.inArray(event, ['onCancel', 'beforeLoad', 'afterLoad']) > -1 ? 'coming' : 'current' ];
+
+ if (!obj) {
+ return;
+ }
+
+ if ($.isFunction( obj[event] )) {
+ ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
+ }
+
+ if (ret === false) {
+ return false;
+ }
+
+ if (obj.helpers) {
+ $.each(obj.helpers, function (helper, opts) {
+ if (opts && typeof F.helpers[helper] !== 'undefined' && $.isFunction(F.helpers[helper][event])) {
+ F.helpers[helper][event](opts, obj);
+ }
+ });
+ }
+
+ $.event.trigger(event + '.fb');
+ },
+
+ isImage: function (str) {
+ return str && str.match(/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i);
+ },
+
+ isSWF: function (str) {
+ return str && str.match(/\.(swf)(.*)?$/i);
+ },
+
+ _start: function (index) {
+ var coming = {},
+ element = F.group[index] || null,
+ isDom,
+ href,
+ type,
+ rez;
+
+ if (element && (element.nodeType || element instanceof $)) {
+ isDom = true;
+
+ if ($.metadata) {
+ coming = $(element).metadata();
+ }
+ }
+
+ coming = $.extend(true, {}, F.opts, {index : index, element : element}, ($.isPlainObject(element) ? element : coming));
+
+ // Re-check overridable options
+ $.each(['href', 'title', 'content', 'type'], function(i,v) {
+ coming[v] = F.opts[ v ] || (isDom && $(element).attr( v )) || coming[ v ] || null;
+ });
+
+ // Convert margin property to array - top, right, bottom, left
+ if (typeof coming.margin === 'number') {
+ coming.margin = [coming.margin, coming.margin, coming.margin, coming.margin];
+ }
+
+ // 'modal' propery is just a shortcut
+ if (coming.modal) {
+ $.extend(true, coming, {
+ closeBtn : false,
+ closeClick: false,
+ nextClick : false,
+ arrows : false,
+ mouseWheel : false,
+ keys : null,
+ helpers: {
+ overlay : {
+ css: {
+ cursor : 'auto'
+ },
+ closeClick : false
+ }
+ }
+ });
+ }
+
+ //Give a chance for callback or helpers to update coming item (type, title, etc)
+ F.coming = coming;
+
+ if (false === F.trigger('beforeLoad')) {
+ F.coming = null;
+ return;
+ }
+
+ type = coming.type;
+ href = coming.href || element;
+
+ ///Check if content type is set, if not, try to get
+ if (!type) {
+ if (isDom) {
+ rez = $(element).data('fancybox-type');
+
+ if (!rez && element.className) {
+ rez = element.className.match(/fancybox\.(\w+)/);
+ type = rez ? rez[1] : null;
+ }
+ }
+
+ if (!type && $.type(href) === "string") {
+ if (F.isImage(href)) {
+ type = 'image';
+
+ } else if (F.isSWF(href)) {
+ type = 'swf';
+
+ } else if (href.match(/^#/)) {
+ type = 'inline';
+ }
+ }
+
+ // ...if not - display element itself
+ if (!type) {
+ type = isDom ? 'inline' : 'html';
+ }
+
+ coming.type = type;
+ }
+
+ // Check before try to load; 'inline' and 'html' types need content, others - href
+ if (type === 'inline' || type === 'html') {
+ if (!coming.content) {
+ if (type === 'inline') {
+ coming.content = $( $.type(href) === "string" ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
+
+ } else {
+ coming.content = element;
+ }
+ }
+
+ if (!coming.content || !coming.content.length) {
+ type = null;
+ }
+
+ } else if (!href) {
+ type = null;
+ }
+
+ /*
+ Add reference to the group, so it`s possible to access from callbacks, example:
+
+ afterLoad : function() {
+ this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+ }
+
+ */
+
+ coming.group = F.group;
+ coming.isDom = isDom;
+ coming.href = href;
+
+ if (type === 'image') {
+ F._loadImage();
+
+ } else if (type === 'ajax') {
+ F._loadAjax();
+
+ } else if (type) {
+ F._afterLoad();
+
+ } else {
+ F._error( 'type' );
+ }
+ },
+
+ _error: function ( type ) {
+ F.hideLoading();
+
+ $.extend(F.coming, {
+ type : 'html',
+ autoSize : true,
+ minHeight : 0,
+ hasError : type,
+ content : F.coming.tpl.error
+ });
+
+ F._afterLoad();
+ },
+
+ _loadImage: function () {
+ // Reset preload image so it is later possible to check "complete" property
+ F.imgPreload = new Image();
+
+ F.imgPreload.onload = function () {
+ this.onload = this.onerror = null;
+
+ F.coming.width = this.width;
+ F.coming.height = this.height;
+
+ F._afterLoad();
+ };
+
+ F.imgPreload.onerror = function () {
+ this.onload = this.onerror = null;
+
+ F._error( 'image' );
+ };
+
+ F.imgPreload.src = F.coming.href;
+
+ if (!F.imgPreload.width) {
+ F.showLoading();
+ }
+ },
+
+ _loadAjax: function () {
+ F.showLoading();
+
+ F.ajaxLoad = $.ajax($.extend({}, F.coming.ajax, {
+ url: F.coming.href,
+ error: function (jqXHR, textStatus) {
+ if (textStatus !== 'abort') {
+ F._error( 'ajax', jqXHR );
+
+ } else {
+ F.hideLoading();
+ }
+ },
+ success: function (data, textStatus) {
+ if (textStatus === 'success') {
+ F.coming.content = data;
+
+ F._afterLoad();
+ }
+ }
+ }));
+ },
+
+ _preloadImages: function() {
+ var group = F.group,
+ current = F.current,
+ len = group.length,
+ item,
+ href;
+
+ if (!current.preload || group.length < 2) {
+ return;
+ }
+
+ for (var i = 1; i <= Math.min(current.preload, len - 1); i++) {
+ item = group[ (current.index + i ) % len ];
+ href = $( item ).attr('href') || item;
+
+ if (href) {
+ new Image().src = href;
+ }
+ }
+ },
+
+ _afterLoad: function () {
+ F.hideLoading();
+
+ if (!F.coming || false === F.trigger('afterLoad', F.current)) {
+ F.coming = false;
+
+ return;
+ }
+
+ if (F.isOpened) {
+ $(".fancybox-item").remove();
+
+ F.wrap.stop(true).removeClass('fancybox-opened');
+ F.inner.css('overflow', 'hidden');
+
+ F.transitions[F.current.prevMethod]();
+
+ } else {
+ $(".fancybox-wrap").stop().trigger('onReset').remove();
+
+ F.trigger('afterClose');
+ }
+
+ F.unbindEvents();
+
+ F.isOpen = false;
+ F.current = F.coming;
+
+ //Build the neccessary markup
+ F.wrap = $(F.current.tpl.wrap).addClass('fancybox-' + (isMobile ? 'mobile' : 'desktop') + ' fancybox-tmp ' + F.current.wrapCSS).appendTo('body');
+ F.outer = $('.fancybox-outer', F.wrap).css('padding', F.current.padding + 'px');
+ F.inner = $('.fancybox-inner', F.wrap);
+
+ F._setContent();
+ },
+
+ _setContent: function () {
+ var content, loadingBay, iframe, current = F.current, type = current.type;
+
+ switch (type) {
+ case 'inline':
+ case 'ajax':
+ case 'html':
+ content = current.content;
+
+ if (content instanceof $) {
+ content = content.show().detach();
+
+ if (content.parent().hasClass('fancybox-inner')) {
+ content.parents('.fancybox-wrap').trigger('onReset').remove();
+ }
+
+ $(F.wrap).bind('onReset', function () {
+ content.appendTo('body').hide();
+ });
+ }
+
+ if (current.autoSize) {
+ loadingBay = $('<div class="fancybox-tmp ' + F.current.wrapCSS + '"></div>').appendTo('body').append(content);
+ current.width = loadingBay.width();
+ current.height = loadingBay.height();
+
+ // Re-check to fix 1px bug in some browsers
+ loadingBay.width( F.current.width );
+
+ if (loadingBay.height() > current.height) {
+ loadingBay.width(current.width + 1);
+
+ current.width = loadingBay.width();
+ current.height = loadingBay.height();
+ }
+
+ content = loadingBay.contents().detach();
+
+ loadingBay.remove();
+ }
+
+ break;
+
+ case 'image':
+ content = current.tpl.image.replace('{href}', current.href);
+
+ current.aspectRatio = true;
+ break;
+
+ case 'swf':
+ content = current.tpl.swf.replace(/\{width\}/g, current.width).replace(/\{height\}/g, current.height).replace(/\{href\}/g, current.href);
More information about the commits
mailing list