@pimaonline/pimaonline-themepack 3.12.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. package/README.md +12 -23
  2. package/dist/css/main.css +1 -1
  3. package/dist/css/plugins/alt-icons.css +1 -1
  4. package/dist/css/plugins/font-awesome.css +1 -1
  5. package/dist/css/routes.css +1 -1
  6. package/dist/css/themes/ait/styles.css +1 -1
  7. package/dist/css/themes/ajs/styles.css +1 -1
  8. package/dist/css/themes/ant/styles.css +1 -0
  9. package/dist/css/themes/art/styles.css +1 -1
  10. package/dist/css/themes/aviation/styles.css +1 -1
  11. package/dist/css/themes/bct/styles.css +1 -1
  12. package/dist/css/themes/bio/styles.css +1 -1
  13. package/dist/css/themes/business/styles.css +1 -1
  14. package/dist/css/themes/cad/styles.css +1 -1
  15. package/dist/css/themes/cards/styles.css +1 -1
  16. package/dist/css/themes/cas/styles.css +1 -0
  17. package/dist/css/themes/cda/styles.css +1 -1
  18. package/dist/css/themes/chm/styles.css +1 -0
  19. package/dist/css/themes/cis/styles.css +1 -1
  20. package/dist/css/themes/communication/styles.css +1 -1
  21. package/dist/css/themes/computer-information-systems/styles.css +1 -1
  22. package/dist/css/themes/culinary/styles.css +1 -1
  23. package/dist/css/themes/culinary/versions/black-marble.css +1 -1
  24. package/dist/css/themes/culinary/versions/stainless.css +1 -1
  25. package/dist/css/themes/culinary/versions/wood.css +1 -1
  26. package/dist/css/themes/dental/styles.css +1 -1
  27. package/dist/css/themes/ece/styles.css +1 -1
  28. package/dist/css/themes/ecn/styles.css +1 -1
  29. package/dist/css/themes/eng/styles.css +1 -1
  30. package/dist/css/themes/fashion/styles.css +1 -1
  31. package/dist/css/themes/fitness/styles.css +1 -1
  32. package/dist/css/themes/fsc/styles.css +1 -1
  33. package/dist/css/themes/geography/styles.css +1 -1
  34. package/dist/css/themes/geology/styles.css +1 -1
  35. package/dist/css/themes/health-it/styles.css +1 -1
  36. package/dist/css/themes/history/styles.css +1 -1
  37. package/dist/css/themes/hrm/styles.css +1 -1
  38. package/dist/css/themes/hrs/styles.css +1 -1
  39. package/dist/css/themes/journalism/styles.css +1 -1
  40. package/dist/css/themes/lang/styles.css +1 -1
  41. package/dist/css/themes/lgm/styles.css +1 -1
  42. package/dist/css/themes/machine/styles.css +1 -1
  43. package/dist/css/themes/math/styles.css +1 -1
  44. package/dist/css/themes/mgt/styles.css +1 -1
  45. package/dist/css/themes/minimalist/styles.css +1 -1
  46. package/dist/css/themes/mkt/styles.css +1 -0
  47. package/dist/css/themes/music/styles.css +1 -1
  48. package/dist/css/themes/nursing/styles.css +1 -0
  49. package/dist/css/themes/philosophy/styles.css +1 -1
  50. package/dist/css/themes/pht/styles.css +1 -1
  51. package/dist/css/themes/phy/styles.css +1 -0
  52. package/dist/css/themes/pos/styles.css +1 -0
  53. package/dist/css/themes/psy/styles.css +1 -1
  54. package/dist/css/themes/reading/styles.css +1 -0
  55. package/dist/css/themes/resort/styles.css +1 -1
  56. package/dist/css/themes/soc/styles.css +1 -1
  57. package/dist/css/themes/ss/styles.css +1 -1
  58. package/dist/css/themes/tps/styles.css +1 -0
  59. package/dist/css/themes/university/styles.css +1 -1
  60. package/dist/css/themes/vet/styles.css +1 -1
  61. package/dist/css/themes/welding/styles.css +1 -1
  62. package/dist/css/themes/writing/styles.css +1 -1
  63. package/dist/img/general/arrow-right-black.svg +1 -0
  64. package/dist/img/general/arrow-right-primary-blue.svg +1 -0
  65. package/dist/img/general/arrow-right-white.svg +1 -0
  66. package/dist/img/theme-images/ant/texture.png +0 -0
  67. package/dist/img/theme-images/cas/city-vector.svg +92 -0
  68. package/dist/img/theme-images/cas/farm-vector.svg +1 -0
  69. package/dist/img/theme-images/cas/ocean-vector.svg +1 -0
  70. package/dist/img/theme-images/cas/recycle-symbol.svg +1 -0
  71. package/dist/img/theme-images/chm/chem-letters/letter-a.png +0 -0
  72. package/dist/img/theme-images/chm/chem-letters/letter-b.png +0 -0
  73. package/dist/img/theme-images/chm/chem-letters/letter-c.png +0 -0
  74. package/dist/img/theme-images/chm/chem-letters/letter-d.png +0 -0
  75. package/dist/img/theme-images/chm/chem-letters/letter-e.png +0 -0
  76. package/dist/img/theme-images/chm/chem-letters/letter-f.png +0 -0
  77. package/dist/img/theme-images/chm/chem-letters/letter-g.png +0 -0
  78. package/dist/img/theme-images/chm/chem-letters/letter-h.png +0 -0
  79. package/dist/img/theme-images/chm/chem-letters/letter-i.png +0 -0
  80. package/dist/img/theme-images/chm/chem-letters/letter-j.png +0 -0
  81. package/dist/img/theme-images/chm/chem-letters/letter-k.png +0 -0
  82. package/dist/img/theme-images/chm/chem-letters/letter-l.png +0 -0
  83. package/dist/img/theme-images/chm/chem-letters/letter-m.png +0 -0
  84. package/dist/img/theme-images/chm/chem-letters/letter-n.png +0 -0
  85. package/dist/img/theme-images/chm/chem-letters/letter-o.png +0 -0
  86. package/dist/img/theme-images/chm/chem-letters/letter-p.png +0 -0
  87. package/dist/img/theme-images/chm/chem-letters/letter-q.png +0 -0
  88. package/dist/img/theme-images/chm/chem-letters/letter-r.png +0 -0
  89. package/dist/img/theme-images/chm/chem-letters/letter-s.png +0 -0
  90. package/dist/img/theme-images/chm/chem-letters/letter-t.png +0 -0
  91. package/dist/img/theme-images/chm/chem-letters/letter-u.png +0 -0
  92. package/dist/img/theme-images/chm/chem-letters/letter-v.png +0 -0
  93. package/dist/img/theme-images/chm/chem-letters/letter-w.png +0 -0
  94. package/dist/img/theme-images/chm/chem-letters/letter-x.png +0 -0
  95. package/dist/img/theme-images/chm/chem-letters/letter-y.png +0 -0
  96. package/dist/img/theme-images/chm/chem-letters/letter-z.png +0 -0
  97. package/dist/img/theme-images/mkt/blue/bluebars.svg +36 -0
  98. package/dist/img/theme-images/mkt/blue/blueheader.jpg +0 -0
  99. package/dist/img/theme-images/mkt/blue/bluepie.svg +42 -0
  100. package/dist/img/theme-images/mkt/green/greenbars.svg +36 -0
  101. package/dist/img/theme-images/mkt/green/greenheader.jpg +0 -0
  102. package/dist/img/theme-images/mkt/green/greenpie.svg +42 -0
  103. package/dist/img/theme-images/mkt/yellow/yellowbars.svg +36 -0
  104. package/dist/img/theme-images/mkt/yellow/yellowheader.jpg +0 -0
  105. package/dist/img/theme-images/mkt/yellow/yellowpie.svg +42 -0
  106. package/dist/img/theme-images/nursing/blue/bottomright-blue.svg +95 -0
  107. package/dist/img/theme-images/nursing/blue/topleft-blue.svg +111 -0
  108. package/dist/img/theme-images/nursing/green/bottomright-green.svg +95 -0
  109. package/dist/img/theme-images/nursing/green/topleft-green.svg +111 -0
  110. package/dist/img/theme-images/nursing/purple/bottomright-purple.svg +95 -0
  111. package/dist/img/theme-images/nursing/purple/topleft-purple.svg +111 -0
  112. package/dist/img/theme-images/nursing/teal/bottomright-teal.svg +95 -0
  113. package/dist/img/theme-images/nursing/teal/topleft-teal.svg +111 -0
  114. package/dist/img/theme-images/phy/background.svg +150 -0
  115. package/dist/img/theme-images/phy/tape-style1.svg +8 -0
  116. package/dist/img/theme-images/reading/bg10.jpg +0 -0
  117. package/dist/js/scripts2.js +1 -1552
  118. package/dist/js/themes/cas.js +1 -0
  119. package/dist/js/themes/chm.js +1 -0
  120. package/dist/js/themes/ecn.js +1 -13
  121. package/dist/js/themes/hrs.js +1 -19
  122. package/dist/js/themes/ss.js +1 -197
  123. package/dist/plugins/fancybox/fancybox-example.html +1 -1
  124. package/dist/plugins/fancybox/helpers/jquery.fancybox-buttons.js +2 -122
  125. package/dist/plugins/fancybox/helpers/jquery.fancybox-media.js +2 -201
  126. package/dist/plugins/fancybox/helpers/jquery.fancybox-thumbs.js +2 -165
  127. package/dist/plugins/fancybox/jquery.fancybox.js +2 -2018
  128. package/dist/plugins/fancybox/jquery.fancybox.pack.js +2 -46
  129. package/dist/plugins/flashcards/flashcards-example.html +1 -1
  130. package/dist/plugins/flashcards/js/flash_cards.min.js +1 -12
  131. package/dist/plugins/flashcards/js/plugins/flash_cards.js +1 -62
  132. package/dist/plugins/flashcards/js/plugins/jquery.cycle.js +2 -1148
  133. package/dist/plugins/flashcards/js/vendor/jquery-1.7.2.js +2 -9404
  134. package/dist/plugins/flashcards/js/vendor/jquery-1.7.2.min.js +2 -4
  135. package/dist/plugins/flashcards/js/vendor/modernizr-2.5.3.min.js +1 -4
  136. package/dist/plugins/floating-particles/floating-particles.js +1 -68
  137. package/dist/plugins/global-homepage-overrides/global-homepage-overrides.js +1 -53
  138. package/dist/plugins/preview-banner/preview-banner.js +1 -57
  139. package/package.json +12 -16
  140. package/dist/js/jumpTo.js +0 -4
  141. package/dist/js/scripts-ts.js +0 -1
  142. package/dist/js/scripts.js +0 -327
@@ -1,2018 +1,2 @@
1
- /*!
2
- * fancyBox - jQuery Plugin
3
- * version: 2.1.7 (Tue, 28 Feb 2017)
4
- * requires jQuery v1.6 or later
5
- *
6
- * Examples at http://fancyapps.com/fancybox/
7
- * License: www.fancyapps.com/fancybox/#license
8
- *
9
- * Copyright 2017 fancyapps.com
10
- *
11
- */
12
-
13
- ;(function (window, document, $, undefined) {
14
- "use strict";
15
-
16
- var H = $("html"),
17
- W = $(window),
18
- D = $(document),
19
- F = $.fancybox = function () {
20
- F.open.apply( this, arguments );
21
- },
22
- IE = navigator.userAgent.match(/msie/i),
23
- didUpdate = null,
24
- isTouch = document.createTouch !== undefined,
25
-
26
- isQuery = function(obj) {
27
- return obj && obj.hasOwnProperty && obj instanceof $;
28
- },
29
- isString = function(str) {
30
- return str && $.type(str) === "string";
31
- },
32
- isPercentage = function(str) {
33
- return isString(str) && str.indexOf('%') > 0;
34
- },
35
- isScrollable = function(el) {
36
- return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));
37
- },
38
- getScalar = function(orig, dim) {
39
- var value = parseInt(orig, 10) || 0;
40
-
41
- if (dim && isPercentage(orig)) {
42
- value = F.getViewport()[ dim ] / 100 * value;
43
- }
44
-
45
- return Math.ceil(value);
46
- },
47
- getValue = function(value, dim) {
48
- return getScalar(value, dim) + 'px';
49
- };
50
-
51
- $.extend(F, {
52
- // The current version of fancyBox
53
- version: '2.1.7',
54
-
55
- defaults: {
56
- padding : 15,
57
- margin : 20,
58
-
59
- width : 800,
60
- height : 600,
61
- minWidth : 100,
62
- minHeight : 100,
63
- maxWidth : 9999,
64
- maxHeight : 9999,
65
- pixelRatio: 1, // Set to 2 for retina display support
66
-
67
- autoSize : true,
68
- autoHeight : false,
69
- autoWidth : false,
70
-
71
- autoResize : true,
72
- autoCenter : !isTouch,
73
- fitToView : true,
74
- aspectRatio : false,
75
- topRatio : 0.5,
76
- leftRatio : 0.5,
77
-
78
- scrolling : 'auto', // 'auto', 'yes' or 'no'
79
- wrapCSS : '',
80
-
81
- arrows : true,
82
- closeBtn : true,
83
- closeClick : false,
84
- nextClick : false,
85
- mouseWheel : true,
86
- autoPlay : false,
87
- playSpeed : 3000,
88
- preload : 3,
89
- modal : false,
90
- loop : true,
91
-
92
- ajax : {
93
- dataType : 'html',
94
- headers : { 'X-fancyBox': true }
95
- },
96
- iframe : {
97
- scrolling : 'auto',
98
- preload : true
99
- },
100
- swf : {
101
- wmode: 'transparent',
102
- allowfullscreen : 'true',
103
- allowscriptaccess : 'always'
104
- },
105
-
106
- keys : {
107
- next : {
108
- 13 : 'left', // enter
109
- 34 : 'up', // page down
110
- 39 : 'left', // right arrow
111
- 40 : 'up' // down arrow
112
- },
113
- prev : {
114
- 8 : 'right', // backspace
115
- 33 : 'down', // page up
116
- 37 : 'right', // left arrow
117
- 38 : 'down' // up arrow
118
- },
119
- close : [27], // escape key
120
- play : [32], // space - start/stop slideshow
121
- toggle : [70] // letter "f" - toggle fullscreen
122
- },
123
-
124
- direction : {
125
- next : 'left',
126
- prev : 'right'
127
- },
128
-
129
- scrollOutside : true,
130
-
131
- // Override some properties
132
- index : 0,
133
- type : null,
134
- href : null,
135
- content : null,
136
- title : null,
137
-
138
- // HTML templates
139
- tpl: {
140
- wrap : '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
141
- image : '<img class="fancybox-image" src="{href}" alt="" />',
142
- iframe : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency="true"' : '') + '></iframe>',
143
- error : '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
144
- closeBtn : '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',
145
- next : '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
146
- prev : '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>',
147
- loading : '<div id="fancybox-loading"><div></div></div>'
148
- },
149
-
150
- // Properties for each animation type
151
- // Opening fancyBox
152
- openEffect : 'fade', // 'elastic', 'fade' or 'none'
153
- openSpeed : 250,
154
- openEasing : 'swing',
155
- openOpacity : true,
156
- openMethod : 'zoomIn',
157
-
158
- // Closing fancyBox
159
- closeEffect : 'fade', // 'elastic', 'fade' or 'none'
160
- closeSpeed : 250,
161
- closeEasing : 'swing',
162
- closeOpacity : true,
163
- closeMethod : 'zoomOut',
164
-
165
- // Changing next gallery item
166
- nextEffect : 'elastic', // 'elastic', 'fade' or 'none'
167
- nextSpeed : 250,
168
- nextEasing : 'swing',
169
- nextMethod : 'changeIn',
170
-
171
- // Changing previous gallery item
172
- prevEffect : 'elastic', // 'elastic', 'fade' or 'none'
173
- prevSpeed : 250,
174
- prevEasing : 'swing',
175
- prevMethod : 'changeOut',
176
-
177
- // Enable default helpers
178
- helpers : {
179
- overlay : true,
180
- title : true
181
- },
182
-
183
- // Callbacks
184
- onCancel : $.noop, // If canceling
185
- beforeLoad : $.noop, // Before loading
186
- afterLoad : $.noop, // After loading
187
- beforeShow : $.noop, // Before changing in current item
188
- afterShow : $.noop, // After opening
189
- beforeChange : $.noop, // Before changing gallery item
190
- beforeClose : $.noop, // Before closing
191
- afterClose : $.noop // After closing
192
- },
193
-
194
- //Current state
195
- group : {}, // Selected group
196
- opts : {}, // Group options
197
- previous : null, // Previous element
198
- coming : null, // Element being loaded
199
- current : null, // Currently loaded element
200
- isActive : false, // Is activated
201
- isOpen : false, // Is currently open
202
- isOpened : false, // Have been fully opened at least once
203
-
204
- wrap : null,
205
- skin : null,
206
- outer : null,
207
- inner : null,
208
-
209
- player : {
210
- timer : null,
211
- isActive : false
212
- },
213
-
214
- // Loaders
215
- ajaxLoad : null,
216
- imgPreload : null,
217
-
218
- // Some collections
219
- transitions : {},
220
- helpers : {},
221
-
222
- /*
223
- * Static methods
224
- */
225
-
226
- open: function (group, opts) {
227
- if (!group) {
228
- return;
229
- }
230
-
231
- if (!$.isPlainObject(opts)) {
232
- opts = {};
233
- }
234
-
235
- // Close if already active
236
- if (false === F.close(true)) {
237
- return;
238
- }
239
-
240
- // Normalize group
241
- if (!$.isArray(group)) {
242
- group = isQuery(group) ? $(group).get() : [group];
243
- }
244
-
245
- // Recheck if the type of each element is `object` and set content type (image, ajax, etc)
246
- $.each(group, function(i, element) {
247
- var obj = {},
248
- href,
249
- title,
250
- content,
251
- type,
252
- rez,
253
- hrefParts,
254
- selector;
255
-
256
- if ($.type(element) === "object") {
257
- // Check if is DOM element
258
- if (element.nodeType) {
259
- element = $(element);
260
- }
261
-
262
- if (isQuery(element)) {
263
- obj = {
264
- href : element.data('fancybox-href') || element.attr('href'),
265
- title : $('<div/>').text( element.data('fancybox-title') || element.attr('title') || '' ).html(),
266
- isDom : true,
267
- element : element
268
- };
269
-
270
- if ($.metadata) {
271
- $.extend(true, obj, element.metadata());
272
- }
273
-
274
- } else {
275
- obj = element;
276
- }
277
- }
278
-
279
- href = opts.href || obj.href || (isString(element) ? element : null);
280
- title = opts.title !== undefined ? opts.title : obj.title || '';
281
-
282
- content = opts.content || obj.content;
283
- type = content ? 'html' : (opts.type || obj.type);
284
-
285
- if (!type && obj.isDom) {
286
- type = element.data('fancybox-type');
287
-
288
- if (!type) {
289
- rez = element.prop('class').match(/fancybox\.(\w+)/);
290
- type = rez ? rez[1] : null;
291
- }
292
- }
293
-
294
- if (isString(href)) {
295
- // Try to guess the content type
296
- if (!type) {
297
- if (F.isImage(href)) {
298
- type = 'image';
299
-
300
- } else if (F.isSWF(href)) {
301
- type = 'swf';
302
-
303
- } else if (href.charAt(0) === '#') {
304
- type = 'inline';
305
-
306
- } else if (isString(element)) {
307
- type = 'html';
308
- content = element;
309
- }
310
- }
311
-
312
- // Split url into two pieces with source url and content selector, e.g,
313
- // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
314
- if (type === 'ajax') {
315
- hrefParts = href.split(/\s+/, 2);
316
- href = hrefParts.shift();
317
- selector = hrefParts.shift();
318
- }
319
- }
320
-
321
- if (!content) {
322
- if (type === 'inline') {
323
- if (href) {
324
- content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
325
-
326
- } else if (obj.isDom) {
327
- content = element;
328
- }
329
-
330
- } else if (type === 'html') {
331
- content = href;
332
-
333
- } else if (!type && !href && obj.isDom) {
334
- type = 'inline';
335
- content = element;
336
- }
337
- }
338
-
339
- $.extend(obj, {
340
- href : href,
341
- type : type,
342
- content : content,
343
- title : title,
344
- selector : selector
345
- });
346
-
347
- group[ i ] = obj;
348
- });
349
-
350
- // Extend the defaults
351
- F.opts = $.extend(true, {}, F.defaults, opts);
352
-
353
- // All options are merged recursive except keys
354
- if (opts.keys !== undefined) {
355
- F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
356
- }
357
-
358
- F.group = group;
359
-
360
- return F._start(F.opts.index);
361
- },
362
-
363
- // Cancel image loading or abort ajax request
364
- cancel: function () {
365
- var coming = F.coming;
366
-
367
- if (coming && false === F.trigger('onCancel')) {
368
- return;
369
- }
370
-
371
- F.hideLoading();
372
-
373
- if (!coming) {
374
- return;
375
- }
376
-
377
- if (F.ajaxLoad) {
378
- F.ajaxLoad.abort();
379
- }
380
-
381
- F.ajaxLoad = null;
382
-
383
- if (F.imgPreload) {
384
- F.imgPreload.onload = F.imgPreload.onerror = null;
385
- }
386
-
387
- if (coming.wrap) {
388
- coming.wrap.stop(true, true).trigger('onReset').remove();
389
- }
390
-
391
- F.coming = null;
392
-
393
- // If the first item has been canceled, then clear everything
394
- if (!F.current) {
395
- F._afterZoomOut( coming );
396
- }
397
- },
398
-
399
- // Start closing animation if is open; remove immediately if opening/closing
400
- close: function (event) {
401
- F.cancel();
402
-
403
- if (false === F.trigger('beforeClose')) {
404
- return;
405
- }
406
-
407
- F.unbindEvents();
408
-
409
- if (!F.isActive) {
410
- return;
411
- }
412
-
413
- if (!F.isOpen || event === true) {
414
- $('.fancybox-wrap').stop(true).trigger('onReset').remove();
415
-
416
- F._afterZoomOut();
417
-
418
- } else {
419
- F.isOpen = F.isOpened = false;
420
- F.isClosing = true;
421
-
422
- $('.fancybox-item, .fancybox-nav').remove();
423
-
424
- F.wrap.stop(true, true).removeClass('fancybox-opened');
425
-
426
- F.transitions[ F.current.closeMethod ]();
427
- }
428
- },
429
-
430
- // Manage slideshow:
431
- // $.fancybox.play(); - toggle slideshow
432
- // $.fancybox.play( true ); - start
433
- // $.fancybox.play( false ); - stop
434
- play: function ( action ) {
435
- var clear = function () {
436
- clearTimeout(F.player.timer);
437
- },
438
- set = function () {
439
- clear();
440
-
441
- if (F.current && F.player.isActive) {
442
- F.player.timer = setTimeout(F.next, F.current.playSpeed);
443
- }
444
- },
445
- stop = function () {
446
- clear();
447
-
448
- D.unbind('.player');
449
-
450
- F.player.isActive = false;
451
-
452
- F.trigger('onPlayEnd');
453
- },
454
- start = function () {
455
- if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
456
- F.player.isActive = true;
457
-
458
- D.bind({
459
- 'onCancel.player beforeClose.player' : stop,
460
- 'onUpdate.player' : set,
461
- 'beforeLoad.player' : clear
462
- });
463
-
464
- set();
465
-
466
- F.trigger('onPlayStart');
467
- }
468
- };
469
-
470
- if (action === true || (!F.player.isActive && action !== false)) {
471
- start();
472
- } else {
473
- stop();
474
- }
475
- },
476
-
477
- // Navigate to next gallery item
478
- next: function ( direction ) {
479
- var current = F.current;
480
-
481
- if (current) {
482
- if (!isString(direction)) {
483
- direction = current.direction.next;
484
- }
485
-
486
- F.jumpto(current.index + 1, direction, 'next');
487
- }
488
- },
489
-
490
- // Navigate to previous gallery item
491
- prev: function ( direction ) {
492
- var current = F.current;
493
-
494
- if (current) {
495
- if (!isString(direction)) {
496
- direction = current.direction.prev;
497
- }
498
-
499
- F.jumpto(current.index - 1, direction, 'prev');
500
- }
501
- },
502
-
503
- // Navigate to gallery item by index
504
- jumpto: function ( index, direction, router ) {
505
- var current = F.current;
506
-
507
- if (!current) {
508
- return;
509
- }
510
-
511
- index = getScalar(index);
512
-
513
- F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];
514
- F.router = router || 'jumpto';
515
-
516
- if (current.loop) {
517
- if (index < 0) {
518
- index = current.group.length + (index % current.group.length);
519
- }
520
-
521
- index = index % current.group.length;
522
- }
523
-
524
- if (current.group[ index ] !== undefined) {
525
- F.cancel();
526
-
527
- F._start(index);
528
- }
529
- },
530
-
531
- // Center inside viewport and toggle position type to fixed or absolute if needed
532
- reposition: function (e, onlyAbsolute) {
533
- var current = F.current,
534
- wrap = current ? current.wrap : null,
535
- pos;
536
-
537
- if (wrap) {
538
- pos = F._getPosition(onlyAbsolute);
539
-
540
- if (e && e.type === 'scroll') {
541
- delete pos.position;
542
-
543
- wrap.stop(true, true).animate(pos, 200);
544
-
545
- } else {
546
- wrap.css(pos);
547
-
548
- current.pos = $.extend({}, current.dim, pos);
549
- }
550
- }
551
- },
552
-
553
- update: function (e) {
554
- var type = (e && e.originalEvent && e.originalEvent.type),
555
- anyway = !type || type === 'orientationchange';
556
-
557
- if (anyway) {
558
- clearTimeout(didUpdate);
559
-
560
- didUpdate = null;
561
- }
562
-
563
- if (!F.isOpen || didUpdate) {
564
- return;
565
- }
566
-
567
- didUpdate = setTimeout(function() {
568
- var current = F.current;
569
-
570
- if (!current || F.isClosing) {
571
- return;
572
- }
573
-
574
- F.wrap.removeClass('fancybox-tmp');
575
-
576
- if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {
577
- F._setDimension();
578
- }
579
-
580
- if (!(type === 'scroll' && current.canShrink)) {
581
- F.reposition(e);
582
- }
583
-
584
- F.trigger('onUpdate');
585
-
586
- didUpdate = null;
587
-
588
- }, (anyway && !isTouch ? 0 : 300));
589
- },
590
-
591
- // Shrink content to fit inside viewport or restore if resized
592
- toggle: function ( action ) {
593
- if (F.isOpen) {
594
- F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView;
595
-
596
- // Help browser to restore document dimensions
597
- if (isTouch) {
598
- F.wrap.removeAttr('style').addClass('fancybox-tmp');
599
-
600
- F.trigger('onUpdate');
601
- }
602
-
603
- F.update();
604
- }
605
- },
606
-
607
- hideLoading: function () {
608
- D.unbind('.loading');
609
-
610
- $('#fancybox-loading').remove();
611
- },
612
-
613
- showLoading: function () {
614
- var el, viewport;
615
-
616
- F.hideLoading();
617
-
618
- el = $(F.opts.tpl.loading).click(F.cancel).appendTo('body');
619
-
620
- // If user will press the escape-button, the request will be canceled
621
- D.bind('keydown.loading', function(e) {
622
- if ((e.which || e.keyCode) === 27) {
623
- e.preventDefault();
624
-
625
- F.cancel();
626
- }
627
- });
628
-
629
- if (!F.defaults.fixed) {
630
- viewport = F.getViewport();
631
-
632
- el.css({
633
- position : 'absolute',
634
- top : (viewport.h * 0.5) + viewport.y,
635
- left : (viewport.w * 0.5) + viewport.x
636
- });
637
- }
638
-
639
- F.trigger('onLoading');
640
- },
641
-
642
- getViewport: function () {
643
- var locked = (F.current && F.current.locked) || false,
644
- rez = {
645
- x: W.scrollLeft(),
646
- y: W.scrollTop()
647
- };
648
-
649
- if (locked && locked.length) {
650
- rez.w = locked[0].clientWidth;
651
- rez.h = locked[0].clientHeight;
652
-
653
- } else {
654
- // See http://bugs.jquery.com/ticket/6724
655
- rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width();
656
- rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();
657
- }
658
-
659
- return rez;
660
- },
661
-
662
- // Unbind the keyboard / clicking actions
663
- unbindEvents: function () {
664
- if (F.wrap && isQuery(F.wrap)) {
665
- F.wrap.unbind('.fb');
666
- }
667
-
668
- D.unbind('.fb');
669
- W.unbind('.fb');
670
- },
671
-
672
- bindEvents: function () {
673
- var current = F.current,
674
- keys;
675
-
676
- if (!current) {
677
- return;
678
- }
679
-
680
- // Changing document height on iOS devices triggers a 'resize' event,
681
- // that can change document height... repeating infinitely
682
- W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);
683
-
684
- keys = current.keys;
685
-
686
- if (keys) {
687
- D.bind('keydown.fb', function (e) {
688
- var code = e.which || e.keyCode,
689
- target = e.target || e.srcElement;
690
-
691
- // Skip esc key if loading, because showLoading will cancel preloading
692
- if (code === 27 && F.coming) {
693
- return false;
694
- }
695
-
696
- // Ignore key combinations and key events within form elements
697
- if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
698
- $.each(keys, function(i, val) {
699
- if (current.group.length > 1 && val[ code ] !== undefined) {
700
- F[ i ]( val[ code ] );
701
-
702
- e.preventDefault();
703
- return false;
704
- }
705
-
706
- if ($.inArray(code, val) > -1) {
707
- F[ i ] ();
708
-
709
- e.preventDefault();
710
- return false;
711
- }
712
- });
713
- }
714
- });
715
- }
716
-
717
- if ($.fn.mousewheel && current.mouseWheel) {
718
- F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {
719
- var target = e.target || null,
720
- parent = $(target),
721
- canScroll = false;
722
-
723
- while (parent.length) {
724
- if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {
725
- break;
726
- }
727
-
728
- canScroll = isScrollable( parent[0] );
729
- parent = $(parent).parent();
730
- }
731
-
732
- if (delta !== 0 && !canScroll) {
733
- if (F.group.length > 1 && !current.canShrink) {
734
- if (deltaY > 0 || deltaX > 0) {
735
- F.prev( deltaY > 0 ? 'down' : 'left' );
736
-
737
- } else if (deltaY < 0 || deltaX < 0) {
738
- F.next( deltaY < 0 ? 'up' : 'right' );
739
- }
740
-
741
- e.preventDefault();
742
- }
743
- }
744
- });
745
- }
746
- },
747
-
748
- trigger: function (event, o) {
749
- var ret, obj = o || F.coming || F.current;
750
-
751
- if (obj) {
752
- if ($.isFunction( obj[event] )) {
753
- ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
754
- }
755
-
756
- if (ret === false) {
757
- return false;
758
- }
759
-
760
- if (obj.helpers) {
761
- $.each(obj.helpers, function (helper, opts) {
762
- if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {
763
- F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);
764
- }
765
- });
766
- }
767
- }
768
-
769
- D.trigger(event);
770
- },
771
-
772
- isImage: function (str) {
773
- return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
774
- },
775
-
776
- isSWF: function (str) {
777
- return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
778
- },
779
-
780
- _start: function (index) {
781
- var coming = {},
782
- obj,
783
- href,
784
- type,
785
- margin,
786
- padding;
787
-
788
- index = getScalar( index );
789
- obj = F.group[ index ] || null;
790
-
791
- if (!obj) {
792
- return false;
793
- }
794
-
795
- coming = $.extend(true, {}, F.opts, obj);
796
-
797
- // Convert margin and padding properties to array - top, right, bottom, left
798
- margin = coming.margin;
799
- padding = coming.padding;
800
-
801
- if ($.type(margin) === 'number') {
802
- coming.margin = [margin, margin, margin, margin];
803
- }
804
-
805
- if ($.type(padding) === 'number') {
806
- coming.padding = [padding, padding, padding, padding];
807
- }
808
-
809
- // 'modal' propery is just a shortcut
810
- if (coming.modal) {
811
- $.extend(true, coming, {
812
- closeBtn : false,
813
- closeClick : false,
814
- nextClick : false,
815
- arrows : false,
816
- mouseWheel : false,
817
- keys : null,
818
- helpers: {
819
- overlay : {
820
- closeClick : false
821
- }
822
- }
823
- });
824
- }
825
-
826
- // 'autoSize' property is a shortcut, too
827
- if (coming.autoSize) {
828
- coming.autoWidth = coming.autoHeight = true;
829
- }
830
-
831
- if (coming.width === 'auto') {
832
- coming.autoWidth = true;
833
- }
834
-
835
- if (coming.height === 'auto') {
836
- coming.autoHeight = true;
837
- }
838
-
839
- /*
840
- * Add reference to the group, so it`s possible to access from callbacks, example:
841
- * afterLoad : function() {
842
- * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
843
- * }
844
- */
845
-
846
- coming.group = F.group;
847
- coming.index = index;
848
-
849
- // Give a chance for callback or helpers to update coming item (type, title, etc)
850
- F.coming = coming;
851
-
852
- if (false === F.trigger('beforeLoad')) {
853
- F.coming = null;
854
-
855
- return;
856
- }
857
-
858
- type = coming.type;
859
- href = coming.href;
860
-
861
- if (!type) {
862
- F.coming = null;
863
-
864
- //If we can not determine content type then drop silently or display next/prev item if looping through gallery
865
- if (F.current && F.router && F.router !== 'jumpto') {
866
- F.current.index = index;
867
-
868
- return F[ F.router ]( F.direction );
869
- }
870
-
871
- return false;
872
- }
873
-
874
- F.isActive = true;
875
-
876
- if (type === 'image' || type === 'swf') {
877
- coming.autoHeight = coming.autoWidth = false;
878
- coming.scrolling = 'visible';
879
- }
880
-
881
- if (type === 'image') {
882
- coming.aspectRatio = true;
883
- }
884
-
885
- if (type === 'iframe' && isTouch) {
886
- coming.scrolling = 'scroll';
887
- }
888
-
889
- // Build the neccessary markup
890
- coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );
891
-
892
- $.extend(coming, {
893
- skin : $('.fancybox-skin', coming.wrap),
894
- outer : $('.fancybox-outer', coming.wrap),
895
- inner : $('.fancybox-inner', coming.wrap)
896
- });
897
-
898
- $.each(["Top", "Right", "Bottom", "Left"], function(i, v) {
899
- coming.skin.css('padding' + v, getValue(coming.padding[ i ]));
900
- });
901
-
902
- F.trigger('onReady');
903
-
904
- // Check before try to load; 'inline' and 'html' types need content, others - href
905
- if (type === 'inline' || type === 'html') {
906
- if (!coming.content || !coming.content.length) {
907
- return F._error( 'content' );
908
- }
909
-
910
- } else if (!href) {
911
- return F._error( 'href' );
912
- }
913
-
914
- if (type === 'image') {
915
- F._loadImage();
916
-
917
- } else if (type === 'ajax') {
918
- F._loadAjax();
919
-
920
- } else if (type === 'iframe') {
921
- F._loadIframe();
922
-
923
- } else {
924
- F._afterLoad();
925
- }
926
- },
927
-
928
- _error: function ( type ) {
929
- $.extend(F.coming, {
930
- type : 'html',
931
- autoWidth : true,
932
- autoHeight : true,
933
- minWidth : 0,
934
- minHeight : 0,
935
- scrolling : 'no',
936
- hasError : type,
937
- content : F.coming.tpl.error
938
- });
939
-
940
- F._afterLoad();
941
- },
942
-
943
- _loadImage: function () {
944
- // Reset preload image so it is later possible to check "complete" property
945
- var img = F.imgPreload = new Image();
946
-
947
- img.onload = function () {
948
- this.onload = this.onerror = null;
949
-
950
- F.coming.width = this.width / F.opts.pixelRatio;
951
- F.coming.height = this.height / F.opts.pixelRatio;
952
-
953
- F._afterLoad();
954
- };
955
-
956
- img.onerror = function () {
957
- this.onload = this.onerror = null;
958
-
959
- F._error( 'image' );
960
- };
961
-
962
- img.src = F.coming.href;
963
-
964
- if (img.complete !== true) {
965
- F.showLoading();
966
- }
967
- },
968
-
969
- _loadAjax: function () {
970
- var coming = F.coming;
971
-
972
- F.showLoading();
973
-
974
- F.ajaxLoad = $.ajax($.extend({}, coming.ajax, {
975
- url: coming.href,
976
- error: function (jqXHR, textStatus) {
977
- if (F.coming && textStatus !== 'abort') {
978
- F._error( 'ajax', jqXHR );
979
-
980
- } else {
981
- F.hideLoading();
982
- }
983
- },
984
- success: function (data, textStatus) {
985
- if (textStatus === 'success') {
986
- coming.content = data;
987
-
988
- F._afterLoad();
989
- }
990
- }
991
- }));
992
- },
993
-
994
- _loadIframe: function() {
995
- var coming = F.coming,
996
- iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
997
- .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)
998
- .attr('src', coming.href);
999
-
1000
- // This helps IE
1001
- $(coming.wrap).bind('onReset', function () {
1002
- try {
1003
- $(this).find('iframe').hide().attr('src', '//about:blank').end().empty();
1004
- } catch (e) {}
1005
- });
1006
-
1007
- if (coming.iframe.preload) {
1008
- F.showLoading();
1009
-
1010
- iframe.one('load', function() {
1011
- $(this).data('ready', 1);
1012
-
1013
- // iOS will lose scrolling if we resize
1014
- if (!isTouch) {
1015
- $(this).bind('load.fb', F.update);
1016
- }
1017
-
1018
- // Without this trick:
1019
- // - iframe won't scroll on iOS devices
1020
- // - IE7 sometimes displays empty iframe
1021
- $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();
1022
-
1023
- F._afterLoad();
1024
- });
1025
- }
1026
-
1027
- coming.content = iframe.appendTo( coming.inner );
1028
-
1029
- if (!coming.iframe.preload) {
1030
- F._afterLoad();
1031
- }
1032
- },
1033
-
1034
- _preloadImages: function() {
1035
- var group = F.group,
1036
- current = F.current,
1037
- len = group.length,
1038
- cnt = current.preload ? Math.min(current.preload, len - 1) : 0,
1039
- item,
1040
- i;
1041
-
1042
- for (i = 1; i <= cnt; i += 1) {
1043
- item = group[ (current.index + i ) % len ];
1044
-
1045
- if (item.type === 'image' && item.href) {
1046
- new Image().src = item.href;
1047
- }
1048
- }
1049
- },
1050
-
1051
- _afterLoad: function () {
1052
- var coming = F.coming,
1053
- previous = F.current,
1054
- placeholder = 'fancybox-placeholder',
1055
- current,
1056
- content,
1057
- type,
1058
- scrolling,
1059
- href,
1060
- embed;
1061
-
1062
- F.hideLoading();
1063
-
1064
- if (!coming || F.isActive === false) {
1065
- return;
1066
- }
1067
-
1068
- if (false === F.trigger('afterLoad', coming, previous)) {
1069
- coming.wrap.stop(true).trigger('onReset').remove();
1070
-
1071
- F.coming = null;
1072
-
1073
- return;
1074
- }
1075
-
1076
- if (previous) {
1077
- F.trigger('beforeChange', previous);
1078
-
1079
- previous.wrap.stop(true).removeClass('fancybox-opened')
1080
- .find('.fancybox-item, .fancybox-nav')
1081
- .remove();
1082
- }
1083
-
1084
- F.unbindEvents();
1085
-
1086
- current = coming;
1087
- content = coming.content;
1088
- type = coming.type;
1089
- scrolling = coming.scrolling;
1090
-
1091
- $.extend(F, {
1092
- wrap : current.wrap,
1093
- skin : current.skin,
1094
- outer : current.outer,
1095
- inner : current.inner,
1096
- current : current,
1097
- previous : previous
1098
- });
1099
-
1100
- href = current.href;
1101
-
1102
- switch (type) {
1103
- case 'inline':
1104
- case 'ajax':
1105
- case 'html':
1106
- if (current.selector) {
1107
- content = $('<div>').html(content).find(current.selector);
1108
-
1109
- } else if (isQuery(content)) {
1110
- if (!content.data(placeholder)) {
1111
- content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter( content ).hide() );
1112
- }
1113
-
1114
- content = content.show().detach();
1115
-
1116
- current.wrap.bind('onReset', function () {
1117
- if ($(this).find(content).length) {
1118
- content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);
1119
- }
1120
- });
1121
- }
1122
- break;
1123
-
1124
- case 'image':
1125
- content = current.tpl.image.replace(/\{href\}/g, href);
1126
- break;
1127
-
1128
- case 'swf':
1129
- content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="../../cards/source/' + href + '"></param>';
1130
- embed = '';
1131
-
1132
- $.each(current.swf, function(name, val) {
1133
- content += '<param name="' + name + '" value="' + val + '"></param>';
1134
- embed += ' ' + name + '="' + val + '"';
1135
- });
1136
-
1137
- content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + '></embed></object>';
1138
- break;
1139
- }
1140
-
1141
- if (!(isQuery(content) && content.parent().is(current.inner))) {
1142
- current.inner.append( content );
1143
- }
1144
-
1145
- // Give a chance for helpers or callbacks to update elements
1146
- F.trigger('beforeShow');
1147
-
1148
- // Set scrolling before calculating dimensions
1149
- current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
1150
-
1151
- // Set initial dimensions and start position
1152
- F._setDimension();
1153
-
1154
- F.reposition();
1155
-
1156
- F.isOpen = false;
1157
- F.coming = null;
1158
-
1159
- F.bindEvents();
1160
-
1161
- if (!F.isOpened) {
1162
- $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();
1163
-
1164
- } else if (previous.prevMethod) {
1165
- F.transitions[ previous.prevMethod ]();
1166
- }
1167
-
1168
- F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();
1169
-
1170
- F._preloadImages();
1171
- },
1172
-
1173
- _setDimension: function () {
1174
- var viewport = F.getViewport(),
1175
- steps = 0,
1176
- canShrink = false,
1177
- canExpand = false,
1178
- wrap = F.wrap,
1179
- skin = F.skin,
1180
- inner = F.inner,
1181
- current = F.current,
1182
- width = current.width,
1183
- height = current.height,
1184
- minWidth = current.minWidth,
1185
- minHeight = current.minHeight,
1186
- maxWidth = current.maxWidth,
1187
- maxHeight = current.maxHeight,
1188
- scrolling = current.scrolling,
1189
- scrollOut = current.scrollOutside ? current.scrollbarWidth : 0,
1190
- margin = current.margin,
1191
- wMargin = getScalar(margin[1] + margin[3]),
1192
- hMargin = getScalar(margin[0] + margin[2]),
1193
- wPadding,
1194
- hPadding,
1195
- wSpace,
1196
- hSpace,
1197
- origWidth,
1198
- origHeight,
1199
- origMaxWidth,
1200
- origMaxHeight,
1201
- ratio,
1202
- width_,
1203
- height_,
1204
- maxWidth_,
1205
- maxHeight_,
1206
- iframe,
1207
- body;
1208
-
1209
- // Reset dimensions so we could re-check actual size
1210
- wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');
1211
-
1212
- wPadding = getScalar(skin.outerWidth(true) - skin.width());
1213
- hPadding = getScalar(skin.outerHeight(true) - skin.height());
1214
-
1215
- // Any space between content and viewport (margin, padding, border, title)
1216
- wSpace = wMargin + wPadding;
1217
- hSpace = hMargin + hPadding;
1218
-
1219
- origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width;
1220
- origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;
1221
-
1222
- if (current.type === 'iframe') {
1223
- iframe = current.content;
1224
-
1225
- if (current.autoHeight && iframe && iframe.data('ready') === 1) {
1226
- try {
1227
- if (iframe[0].contentWindow.document.location) {
1228
- inner.width( origWidth ).height(9999);
1229
-
1230
- body = iframe.contents().find('body');
1231
-
1232
- if (scrollOut) {
1233
- body.css('overflow-x', 'hidden');
1234
- }
1235
-
1236
- origHeight = body.outerHeight(true);
1237
- }
1238
-
1239
- } catch (e) {}
1240
- }
1241
-
1242
- } else if (current.autoWidth || current.autoHeight) {
1243
- inner.addClass( 'fancybox-tmp' );
1244
-
1245
- // Set width or height in case we need to calculate only one dimension
1246
- if (!current.autoWidth) {
1247
- inner.width( origWidth );
1248
- }
1249
-
1250
- if (!current.autoHeight) {
1251
- inner.height( origHeight );
1252
- }
1253
-
1254
- if (current.autoWidth) {
1255
- origWidth = inner.width();
1256
- }
1257
-
1258
- if (current.autoHeight) {
1259
- origHeight = inner.height();
1260
- }
1261
-
1262
- inner.removeClass( 'fancybox-tmp' );
1263
- }
1264
-
1265
- width = getScalar( origWidth );
1266
- height = getScalar( origHeight );
1267
-
1268
- ratio = origWidth / origHeight;
1269
-
1270
- // Calculations for the content
1271
- minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);
1272
- maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);
1273
-
1274
- minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);
1275
- maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);
1276
-
1277
- // These will be used to determine if wrap can fit in the viewport
1278
- origMaxWidth = maxWidth;
1279
- origMaxHeight = maxHeight;
1280
-
1281
- if (current.fitToView) {
1282
- maxWidth = Math.min(viewport.w - wSpace, maxWidth);
1283
- maxHeight = Math.min(viewport.h - hSpace, maxHeight);
1284
- }
1285
-
1286
- maxWidth_ = viewport.w - wMargin;
1287
- maxHeight_ = viewport.h - hMargin;
1288
-
1289
- if (current.aspectRatio) {
1290
- if (width > maxWidth) {
1291
- width = maxWidth;
1292
- height = getScalar(width / ratio);
1293
- }
1294
-
1295
- if (height > maxHeight) {
1296
- height = maxHeight;
1297
- width = getScalar(height * ratio);
1298
- }
1299
-
1300
- if (width < minWidth) {
1301
- width = minWidth;
1302
- height = getScalar(width / ratio);
1303
- }
1304
-
1305
- if (height < minHeight) {
1306
- height = minHeight;
1307
- width = getScalar(height * ratio);
1308
- }
1309
-
1310
- } else {
1311
- width = Math.max(minWidth, Math.min(width, maxWidth));
1312
-
1313
- if (current.autoHeight && current.type !== 'iframe') {
1314
- inner.width( width );
1315
-
1316
- height = inner.height();
1317
- }
1318
-
1319
- height = Math.max(minHeight, Math.min(height, maxHeight));
1320
- }
1321
-
1322
- // Try to fit inside viewport (including the title)
1323
- if (current.fitToView) {
1324
- inner.width( width ).height( height );
1325
-
1326
- wrap.width( width + wPadding );
1327
-
1328
- // Real wrap dimensions
1329
- width_ = wrap.width();
1330
- height_ = wrap.height();
1331
-
1332
- if (current.aspectRatio) {
1333
- while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {
1334
- if (steps++ > 19) {
1335
- break;
1336
- }
1337
-
1338
- height = Math.max(minHeight, Math.min(maxHeight, height - 10));
1339
- width = getScalar(height * ratio);
1340
-
1341
- if (width < minWidth) {
1342
- width = minWidth;
1343
- height = getScalar(width / ratio);
1344
- }
1345
-
1346
- if (width > maxWidth) {
1347
- width = maxWidth;
1348
- height = getScalar(width / ratio);
1349
- }
1350
-
1351
- inner.width( width ).height( height );
1352
-
1353
- wrap.width( width + wPadding );
1354
-
1355
- width_ = wrap.width();
1356
- height_ = wrap.height();
1357
- }
1358
-
1359
- } else {
1360
- width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_)));
1361
- height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));
1362
- }
1363
- }
1364
-
1365
- if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {
1366
- width += scrollOut;
1367
- }
1368
-
1369
- inner.width( width ).height( height );
1370
-
1371
- wrap.width( width + wPadding );
1372
-
1373
- width_ = wrap.width();
1374
- height_ = wrap.height();
1375
-
1376
- canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;
1377
- canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));
1378
-
1379
- $.extend(current, {
1380
- dim : {
1381
- width : getValue( width_ ),
1382
- height : getValue( height_ )
1383
- },
1384
- origWidth : origWidth,
1385
- origHeight : origHeight,
1386
- canShrink : canShrink,
1387
- canExpand : canExpand,
1388
- wPadding : wPadding,
1389
- hPadding : hPadding,
1390
- wrapSpace : height_ - skin.outerHeight(true),
1391
- skinSpace : skin.height() - height
1392
- });
1393
-
1394
- if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {
1395
- inner.height('auto');
1396
- }
1397
- },
1398
-
1399
- _getPosition: function (onlyAbsolute) {
1400
- var current = F.current,
1401
- viewport = F.getViewport(),
1402
- margin = current.margin,
1403
- width = F.wrap.width() + margin[1] + margin[3],
1404
- height = F.wrap.height() + margin[0] + margin[2],
1405
- rez = {
1406
- position: 'absolute',
1407
- top : margin[0],
1408
- left : margin[3]
1409
- };
1410
-
1411
- if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
1412
- rez.position = 'fixed';
1413
-
1414
- } else if (!current.locked) {
1415
- rez.top += viewport.y;
1416
- rez.left += viewport.x;
1417
- }
1418
-
1419
- rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));
1420
- rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio)));
1421
-
1422
- return rez;
1423
- },
1424
-
1425
- _afterZoomIn: function () {
1426
- var current = F.current;
1427
-
1428
- if (!current) {
1429
- return;
1430
- }
1431
-
1432
- F.isOpen = F.isOpened = true;
1433
-
1434
- F.wrap.css('overflow', 'visible').addClass('fancybox-opened').hide().show(0);
1435
-
1436
- F.update();
1437
-
1438
- // Assign a click event
1439
- if ( current.closeClick || (current.nextClick && F.group.length > 1) ) {
1440
- F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
1441
- if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
1442
- e.preventDefault();
1443
-
1444
- F[ current.closeClick ? 'close' : 'next' ]();
1445
- }
1446
- });
1447
- }
1448
-
1449
- // Create a close button
1450
- if (current.closeBtn) {
1451
- $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {
1452
- e.preventDefault();
1453
-
1454
- F.close();
1455
- });
1456
- }
1457
-
1458
- // Create navigation arrows
1459
- if (current.arrows && F.group.length > 1) {
1460
- if (current.loop || current.index > 0) {
1461
- $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
1462
- }
1463
-
1464
- if (current.loop || current.index < F.group.length - 1) {
1465
- $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
1466
- }
1467
- }
1468
-
1469
- F.trigger('afterShow');
1470
-
1471
- // Stop the slideshow if this is the last item
1472
- if (!current.loop && current.index === current.group.length - 1) {
1473
-
1474
- F.play( false );
1475
-
1476
- } else if (F.opts.autoPlay && !F.player.isActive) {
1477
- F.opts.autoPlay = false;
1478
-
1479
- F.play(true);
1480
- }
1481
- },
1482
-
1483
- _afterZoomOut: function ( obj ) {
1484
- obj = obj || F.current;
1485
-
1486
- $('.fancybox-wrap').trigger('onReset').remove();
1487
-
1488
- $.extend(F, {
1489
- group : {},
1490
- opts : {},
1491
- router : false,
1492
- current : null,
1493
- isActive : false,
1494
- isOpened : false,
1495
- isOpen : false,
1496
- isClosing : false,
1497
- wrap : null,
1498
- skin : null,
1499
- outer : null,
1500
- inner : null
1501
- });
1502
-
1503
- F.trigger('afterClose', obj);
1504
- }
1505
- });
1506
-
1507
- /*
1508
- * Default transitions
1509
- */
1510
-
1511
- F.transitions = {
1512
- getOrigPosition: function () {
1513
- var current = F.current,
1514
- element = current.element,
1515
- orig = current.orig,
1516
- pos = {},
1517
- width = 50,
1518
- height = 50,
1519
- hPadding = current.hPadding,
1520
- wPadding = current.wPadding,
1521
- viewport = F.getViewport();
1522
-
1523
- if (!orig && current.isDom && element.is(':visible')) {
1524
- orig = element.find('img:first');
1525
-
1526
- if (!orig.length) {
1527
- orig = element;
1528
- }
1529
- }
1530
-
1531
- if (isQuery(orig)) {
1532
- pos = orig.offset();
1533
-
1534
- if (orig.is('img')) {
1535
- width = orig.outerWidth();
1536
- height = orig.outerHeight();
1537
- }
1538
-
1539
- } else {
1540
- pos.top = viewport.y + (viewport.h - height) * current.topRatio;
1541
- pos.left = viewport.x + (viewport.w - width) * current.leftRatio;
1542
- }
1543
-
1544
- if (F.wrap.css('position') === 'fixed' || current.locked) {
1545
- pos.top -= viewport.y;
1546
- pos.left -= viewport.x;
1547
- }
1548
-
1549
- pos = {
1550
- top : getValue(pos.top - hPadding * current.topRatio),
1551
- left : getValue(pos.left - wPadding * current.leftRatio),
1552
- width : getValue(width + wPadding),
1553
- height : getValue(height + hPadding)
1554
- };
1555
-
1556
- return pos;
1557
- },
1558
-
1559
- step: function (now, fx) {
1560
- var ratio,
1561
- padding,
1562
- value,
1563
- prop = fx.prop,
1564
- current = F.current,
1565
- wrapSpace = current.wrapSpace,
1566
- skinSpace = current.skinSpace;
1567
-
1568
- if (prop === 'width' || prop === 'height') {
1569
- ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);
1570
-
1571
- if (F.isClosing) {
1572
- ratio = 1 - ratio;
1573
- }
1574
-
1575
- padding = prop === 'width' ? current.wPadding : current.hPadding;
1576
- value = now - padding;
1577
-
1578
- F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) );
1579
- F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );
1580
- }
1581
- },
1582
-
1583
- zoomIn: function () {
1584
- var current = F.current,
1585
- startPos = current.pos,
1586
- effect = current.openEffect,
1587
- elastic = effect === 'elastic',
1588
- endPos = $.extend({opacity : 1}, startPos);
1589
-
1590
- // Remove "position" property that breaks older IE
1591
- delete endPos.position;
1592
-
1593
- if (elastic) {
1594
- startPos = this.getOrigPosition();
1595
-
1596
- if (current.openOpacity) {
1597
- startPos.opacity = 0.1;
1598
- }
1599
-
1600
- } else if (effect === 'fade') {
1601
- startPos.opacity = 0.1;
1602
- }
1603
-
1604
- F.wrap.css(startPos).animate(endPos, {
1605
- duration : effect === 'none' ? 0 : current.openSpeed,
1606
- easing : current.openEasing,
1607
- step : elastic ? this.step : null,
1608
- complete : F._afterZoomIn
1609
- });
1610
- },
1611
-
1612
- zoomOut: function () {
1613
- var current = F.current,
1614
- effect = current.closeEffect,
1615
- elastic = effect === 'elastic',
1616
- endPos = {opacity : 0.1};
1617
-
1618
- if (elastic) {
1619
- endPos = this.getOrigPosition();
1620
-
1621
- if (current.closeOpacity) {
1622
- endPos.opacity = 0.1;
1623
- }
1624
- }
1625
-
1626
- F.wrap.animate(endPos, {
1627
- duration : effect === 'none' ? 0 : current.closeSpeed,
1628
- easing : current.closeEasing,
1629
- step : elastic ? this.step : null,
1630
- complete : F._afterZoomOut
1631
- });
1632
- },
1633
-
1634
- changeIn: function () {
1635
- var current = F.current,
1636
- effect = current.nextEffect,
1637
- startPos = current.pos,
1638
- endPos = { opacity : 1 },
1639
- direction = F.direction,
1640
- distance = 200,
1641
- field;
1642
-
1643
- startPos.opacity = 0.1;
1644
-
1645
- if (effect === 'elastic') {
1646
- field = direction === 'down' || direction === 'up' ? 'top' : 'left';
1647
-
1648
- if (direction === 'down' || direction === 'right') {
1649
- startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);
1650
- endPos[ field ] = '+=' + distance + 'px';
1651
-
1652
- } else {
1653
- startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);
1654
- endPos[ field ] = '-=' + distance + 'px';
1655
- }
1656
- }
1657
-
1658
- // Workaround for http://bugs.jquery.com/ticket/12273
1659
- if (effect === 'none') {
1660
- F._afterZoomIn();
1661
-
1662
- } else {
1663
- F.wrap.css(startPos).animate(endPos, {
1664
- duration : current.nextSpeed,
1665
- easing : current.nextEasing,
1666
- complete : F._afterZoomIn
1667
- });
1668
- }
1669
- },
1670
-
1671
- changeOut: function () {
1672
- var previous = F.previous,
1673
- effect = previous.prevEffect,
1674
- endPos = { opacity : 0.1 },
1675
- direction = F.direction,
1676
- distance = 200;
1677
-
1678
- if (effect === 'elastic') {
1679
- endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';
1680
- }
1681
-
1682
- previous.wrap.animate(endPos, {
1683
- duration : effect === 'none' ? 0 : previous.prevSpeed,
1684
- easing : previous.prevEasing,
1685
- complete : function () {
1686
- $(this).trigger('onReset').remove();
1687
- }
1688
- });
1689
- }
1690
- };
1691
-
1692
- /*
1693
- * Overlay helper
1694
- */
1695
-
1696
- F.helpers.overlay = {
1697
- defaults : {
1698
- closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay
1699
- speedOut : 200, // duration of fadeOut animation
1700
- showEarly : true, // indicates if should be opened immediately or wait until the content is ready
1701
- css : {}, // custom CSS properties
1702
- locked : !isTouch, // if true, the content will be locked into overlay
1703
- fixed : true // if false, the overlay CSS position property will not be set to "fixed"
1704
- },
1705
-
1706
- overlay : null, // current handle
1707
- fixed : false, // indicates if the overlay has position "fixed"
1708
- el : $('html'), // element that contains "the lock"
1709
-
1710
- // Public methods
1711
- create : function(opts) {
1712
- var parent;
1713
-
1714
- opts = $.extend({}, this.defaults, opts);
1715
-
1716
- if (this.overlay) {
1717
- this.close();
1718
- }
1719
-
1720
- parent = F.coming ? F.coming.parent : opts.parent;
1721
-
1722
- this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( parent && parent.length ? parent : 'body' );
1723
- this.fixed = false;
1724
-
1725
- if (opts.fixed && F.defaults.fixed) {
1726
- this.overlay.addClass('fancybox-overlay-fixed');
1727
-
1728
- this.fixed = true;
1729
- }
1730
- },
1731
-
1732
- open : function(opts) {
1733
- var that = this;
1734
-
1735
- opts = $.extend({}, this.defaults, opts);
1736
-
1737
- if (this.overlay) {
1738
- this.overlay.unbind('.overlay').width('auto').height('auto');
1739
-
1740
- } else {
1741
- this.create(opts);
1742
- }
1743
-
1744
- if (!this.fixed) {
1745
- W.bind('resize.overlay', $.proxy( this.update, this) );
1746
-
1747
- this.update();
1748
- }
1749
-
1750
- if (opts.closeClick) {
1751
- this.overlay.bind('click.overlay', function(e) {
1752
- if ($(e.target).hasClass('fancybox-overlay')) {
1753
- if (F.isActive) {
1754
- F.close();
1755
- } else {
1756
- that.close();
1757
- }
1758
-
1759
- return false;
1760
- }
1761
- });
1762
- }
1763
-
1764
- this.overlay.css( opts.css ).show();
1765
- },
1766
-
1767
- close : function() {
1768
- W.unbind('resize.overlay');
1769
-
1770
- if (this.el.hasClass('fancybox-lock')) {
1771
- $('.fancybox-margin').removeClass('fancybox-margin');
1772
-
1773
- this.el.removeClass('fancybox-lock');
1774
-
1775
- W.scrollTop( this.scrollV ).scrollLeft( this.scrollH );
1776
- }
1777
-
1778
- $('.fancybox-overlay').remove().hide();
1779
-
1780
- $.extend(this, {
1781
- overlay : null,
1782
- fixed : false
1783
- });
1784
- },
1785
-
1786
- // Private, callbacks
1787
-
1788
- update : function () {
1789
- var width = '100%', offsetWidth;
1790
-
1791
- // Reset width/height so it will not mess
1792
- this.overlay.width(width).height('100%');
1793
-
1794
- // jQuery does not return reliable result for IE
1795
- if (IE) {
1796
- offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
1797
-
1798
- if (D.width() > offsetWidth) {
1799
- width = D.width();
1800
- }
1801
-
1802
- } else if (D.width() > W.width()) {
1803
- width = D.width();
1804
- }
1805
-
1806
- this.overlay.width(width).height(D.height());
1807
- },
1808
-
1809
- // This is where we can manipulate DOM, because later it would cause iframes to reload
1810
- onReady : function (opts, obj) {
1811
- var overlay = this.overlay;
1812
-
1813
- $('.fancybox-overlay').stop(true, true);
1814
-
1815
- if (!overlay) {
1816
- this.create(opts);
1817
- }
1818
-
1819
- if (opts.locked && this.fixed && obj.fixed) {
1820
- obj.locked = this.overlay.append( obj.wrap );
1821
- obj.fixed = false;
1822
- }
1823
-
1824
- if (opts.showEarly === true) {
1825
- this.beforeShow.apply(this, arguments);
1826
- }
1827
- },
1828
-
1829
- beforeShow : function(opts, obj) {
1830
- if (obj.locked && !this.el.hasClass('fancybox-lock')) {
1831
- if (this.fixPosition !== false) {
1832
- $('*:not(object)').filter(function(){
1833
- return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
1834
- }).addClass('fancybox-margin');
1835
- }
1836
-
1837
- this.el.addClass('fancybox-margin');
1838
-
1839
- this.scrollV = W.scrollTop();
1840
- this.scrollH = W.scrollLeft();
1841
-
1842
- this.el.addClass('fancybox-lock');
1843
-
1844
- W.scrollTop( this.scrollV ).scrollLeft( this.scrollH );
1845
- }
1846
-
1847
- this.open(opts);
1848
- },
1849
-
1850
- onUpdate : function() {
1851
- if (!this.fixed) {
1852
- this.update();
1853
- }
1854
- },
1855
-
1856
- afterClose: function (opts) {
1857
- // Remove overlay if exists and fancyBox is not opening
1858
- // (e.g., it is not being open using afterClose callback)
1859
- if (this.overlay && !F.coming) {
1860
- this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));
1861
- }
1862
- }
1863
- };
1864
-
1865
- /*
1866
- * Title helper
1867
- */
1868
-
1869
- F.helpers.title = {
1870
- defaults : {
1871
- type : 'float', // 'float', 'inside', 'outside' or 'over',
1872
- position : 'bottom' // 'top' or 'bottom'
1873
- },
1874
-
1875
- beforeShow: function (opts) {
1876
- var current = F.current,
1877
- text = current.title,
1878
- type = opts.type,
1879
- title,
1880
- target;
1881
-
1882
- if ($.isFunction(text)) {
1883
- text = text.call(current.element, current);
1884
- }
1885
-
1886
- if (!isString(text) || $.trim(text) === '') {
1887
- return;
1888
- }
1889
-
1890
- title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + '</div>');
1891
-
1892
- switch (type) {
1893
- case 'inside':
1894
- target = F.skin;
1895
- break;
1896
-
1897
- case 'outside':
1898
- target = F.wrap;
1899
- break;
1900
-
1901
- case 'over':
1902
- target = F.inner;
1903
- break;
1904
-
1905
- default: // 'float'
1906
- target = F.skin;
1907
-
1908
- title.appendTo('body');
1909
-
1910
- if (IE) {
1911
- title.width( title.width() );
1912
- }
1913
-
1914
- title.wrapInner('<span class="child"></span>');
1915
-
1916
- //Increase bottom margin so this title will also fit into viewport
1917
- F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );
1918
- break;
1919
- }
1920
-
1921
- title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target);
1922
- }
1923
- };
1924
-
1925
- // jQuery plugin initialization
1926
- $.fn.fancybox = function (options) {
1927
- var index,
1928
- that = $(this),
1929
- selector = this.selector || '',
1930
- run = function(e) {
1931
- var what = $(this).blur(), idx = index, relType, relVal;
1932
-
1933
- if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {
1934
- relType = options.groupAttr || 'data-fancybox-group';
1935
- relVal = what.attr(relType);
1936
-
1937
- if (!relVal) {
1938
- relType = 'rel';
1939
- relVal = what.get(0)[ relType ];
1940
- }
1941
-
1942
- if (relVal && relVal !== '' && relVal !== 'nofollow') {
1943
- what = selector.length ? $(selector) : that;
1944
- what = what.filter('[' + relType + '="' + relVal + '"]');
1945
- idx = what.index(this);
1946
- }
1947
-
1948
- options.index = idx;
1949
-
1950
- // Stop an event from bubbling if everything is fine
1951
- if (F.open(what, options) !== false) {
1952
- e.preventDefault();
1953
- }
1954
- }
1955
- };
1956
-
1957
- options = options || {};
1958
- index = options.index || 0;
1959
-
1960
- if (!selector || options.live === false) {
1961
- that.unbind('click.fb-start').bind('click.fb-start', run);
1962
-
1963
- } else {
1964
- D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run);
1965
- }
1966
-
1967
- this.filter('[data-fancybox-start=1]').trigger('click');
1968
-
1969
- return this;
1970
- };
1971
-
1972
- // Tests that need a body at doc ready
1973
- D.ready(function() {
1974
- var w1, w2;
1975
-
1976
- if ( $.scrollbarWidth === undefined ) {
1977
- // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
1978
- $.scrollbarWidth = function() {
1979
- var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo('body'),
1980
- child = parent.children(),
1981
- width = child.innerWidth() - child.height( 99 ).innerWidth();
1982
-
1983
- parent.remove();
1984
-
1985
- return width;
1986
- };
1987
- }
1988
-
1989
- if ( $.support.fixedPosition === undefined ) {
1990
- $.support.fixedPosition = (function() {
1991
- var elem = $('<div style="position:fixed;top:20px;"></div>').appendTo('body'),
1992
- fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );
1993
-
1994
- elem.remove();
1995
-
1996
- return fixed;
1997
- }());
1998
- }
1999
-
2000
- $.extend(F.defaults, {
2001
- scrollbarWidth : $.scrollbarWidth(),
2002
- fixed : $.support.fixedPosition,
2003
- parent : $('body')
2004
- });
2005
-
2006
- //Get real width of page scroll-bar
2007
- w1 = $(window).width();
2008
-
2009
- H.addClass('fancybox-lock-test');
2010
-
2011
- w2 = $(window).width();
2012
-
2013
- H.removeClass('fancybox-lock-test');
2014
-
2015
- $("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head");
2016
- });
2017
-
2018
- }(window, document, jQuery));
1
+ /*! For license information please see jquery.fancybox.js.LICENSE.txt */
2
+ !function(e,t,i,n){"use strict";var o=i("html"),a=i(e),r=i(t),s=i.fancybox=function(){s.open.apply(this,arguments)},l=navigator.userAgent.match(/msie/i),c=null,d=t.createTouch!==n,p=function(e){return e&&e.hasOwnProperty&&e instanceof i},h=function(e){return e&&"string"===i.type(e)},f=function(e){return h(e)&&e.indexOf("%")>0},u=function(e,t){var i=parseInt(e,10)||0;return t&&f(e)&&(i=s.getViewport()[t]/100*i),Math.ceil(i)},g=function(e,t){return u(e,t)+"px"};i.extend(s,{version:"2.1.7",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!d,fitToView:!0,aspectRatio:!1,topRatio:.5,leftRatio:.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3e3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+(l?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>',loading:'<div id="fancybox-loading"><div></div></div>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:i.noop,beforeLoad:i.noop,afterLoad:i.noop,beforeShow:i.noop,afterShow:i.noop,beforeChange:i.noop,beforeClose:i.noop,afterClose:i.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(e,t){if(e&&(i.isPlainObject(t)||(t={}),!1!==s.close(!0)))return i.isArray(e)||(e=p(e)?i(e).get():[e]),i.each(e,(function(o,a){var r,l,c,d,f,u,g,m={};"object"===i.type(a)&&(a.nodeType&&(a=i(a)),p(a)?(m={href:a.data("fancybox-href")||a.attr("href"),title:i("<div/>").text(a.data("fancybox-title")||a.attr("title")||"").html(),isDom:!0,element:a},i.metadata&&i.extend(!0,m,a.metadata())):m=a),r=t.href||m.href||(h(a)?a:null),l=t.title!==n?t.title:m.title||"",!(d=(c=t.content||m.content)?"html":t.type||m.type)&&m.isDom&&((d=a.data("fancybox-type"))||(d=(f=a.prop("class").match(/fancybox\.(\w+)/))?f[1]:null)),h(r)&&(d||(s.isImage(r)?d="image":s.isSWF(r)?d="swf":"#"===r.charAt(0)?d="inline":h(a)&&(d="html",c=a)),"ajax"===d&&(u=r.split(/\s+/,2),r=u.shift(),g=u.shift())),c||("inline"===d?r?c=i(h(r)?r.replace(/.*(?=#[^\s]+$)/,""):r):m.isDom&&(c=a):"html"===d?c=r:d||r||!m.isDom||(d="inline",c=a)),i.extend(m,{href:r,type:d,content:c,title:l,selector:g}),e[o]=m})),s.opts=i.extend(!0,{},s.defaults,t),t.keys!==n&&(s.opts.keys=!!t.keys&&i.extend({},s.defaults.keys,t.keys)),s.group=e,s._start(s.opts.index)},cancel:function(){var e=s.coming;e&&!1===s.trigger("onCancel")||(s.hideLoading(),e&&(s.ajaxLoad&&s.ajaxLoad.abort(),s.ajaxLoad=null,s.imgPreload&&(s.imgPreload.onload=s.imgPreload.onerror=null),e.wrap&&e.wrap.stop(!0,!0).trigger("onReset").remove(),s.coming=null,s.current||s._afterZoomOut(e)))},close:function(e){s.cancel(),!1!==s.trigger("beforeClose")&&(s.unbindEvents(),s.isActive&&(s.isOpen&&!0!==e?(s.isOpen=s.isOpened=!1,s.isClosing=!0,i(".fancybox-item, .fancybox-nav").remove(),s.wrap.stop(!0,!0).removeClass("fancybox-opened"),s.transitions[s.current.closeMethod]()):(i(".fancybox-wrap").stop(!0).trigger("onReset").remove(),s._afterZoomOut())))},play:function(e){var t=function(){clearTimeout(s.player.timer)},i=function(){t(),s.current&&s.player.isActive&&(s.player.timer=setTimeout(s.next,s.current.playSpeed))},n=function(){t(),r.unbind(".player"),s.player.isActive=!1,s.trigger("onPlayEnd")};!0===e||!s.player.isActive&&!1!==e?s.current&&(s.current.loop||s.current.index<s.group.length-1)&&(s.player.isActive=!0,r.bind({"onCancel.player beforeClose.player":n,"onUpdate.player":i,"beforeLoad.player":t}),i(),s.trigger("onPlayStart")):n()},next:function(e){var t=s.current;t&&(h(e)||(e=t.direction.next),s.jumpto(t.index+1,e,"next"))},prev:function(e){var t=s.current;t&&(h(e)||(e=t.direction.prev),s.jumpto(t.index-1,e,"prev"))},jumpto:function(e,t,i){var o=s.current;o&&(e=u(e),s.direction=t||o.direction[e>=o.index?"next":"prev"],s.router=i||"jumpto",o.loop&&(e<0&&(e=o.group.length+e%o.group.length),e%=o.group.length),o.group[e]!==n&&(s.cancel(),s._start(e)))},reposition:function(e,t){var n,o=s.current,a=o?o.wrap:null;a&&(n=s._getPosition(t),e&&"scroll"===e.type?(delete n.position,a.stop(!0,!0).animate(n,200)):(a.css(n),o.pos=i.extend({},o.dim,n)))},update:function(e){var t=e&&e.originalEvent&&e.originalEvent.type,i=!t||"orientationchange"===t;i&&(clearTimeout(c),c=null),s.isOpen&&!c&&(c=setTimeout((function(){var n=s.current;n&&!s.isClosing&&(s.wrap.removeClass("fancybox-tmp"),(i||"load"===t||"resize"===t&&n.autoResize)&&s._setDimension(),"scroll"===t&&n.canShrink||s.reposition(e),s.trigger("onUpdate"),c=null)}),i&&!d?0:300))},toggle:function(e){s.isOpen&&(s.current.fitToView="boolean"===i.type(e)?e:!s.current.fitToView,d&&(s.wrap.removeAttr("style").addClass("fancybox-tmp"),s.trigger("onUpdate")),s.update())},hideLoading:function(){r.unbind(".loading"),i("#fancybox-loading").remove()},showLoading:function(){var e,t;s.hideLoading(),e=i(s.opts.tpl.loading).click(s.cancel).appendTo("body"),r.bind("keydown.loading",(function(e){27===(e.which||e.keyCode)&&(e.preventDefault(),s.cancel())})),s.defaults.fixed||(t=s.getViewport(),e.css({position:"absolute",top:.5*t.h+t.y,left:.5*t.w+t.x})),s.trigger("onLoading")},getViewport:function(){var t=s.current&&s.current.locked||!1,i={x:a.scrollLeft(),y:a.scrollTop()};return t&&t.length?(i.w=t[0].clientWidth,i.h=t[0].clientHeight):(i.w=d&&e.innerWidth?e.innerWidth:a.width(),i.h=d&&e.innerHeight?e.innerHeight:a.height()),i},unbindEvents:function(){s.wrap&&p(s.wrap)&&s.wrap.unbind(".fb"),r.unbind(".fb"),a.unbind(".fb")},bindEvents:function(){var e,t=s.current;t&&(a.bind("orientationchange.fb"+(d?"":" resize.fb")+(t.autoCenter&&!t.locked?" scroll.fb":""),s.update),(e=t.keys)&&r.bind("keydown.fb",(function(o){var a=o.which||o.keyCode,r=o.target||o.srcElement;if(27===a&&s.coming)return!1;o.ctrlKey||o.altKey||o.shiftKey||o.metaKey||r&&(r.type||i(r).is("[contenteditable]"))||i.each(e,(function(e,r){return t.group.length>1&&r[a]!==n?(s[e](r[a]),o.preventDefault(),!1):i.inArray(a,r)>-1?(s[e](),o.preventDefault(),!1):void 0}))})),i.fn.mousewheel&&t.mouseWheel&&s.wrap.bind("mousewheel.fb",(function(e,n,o,a){for(var r,l=e.target||null,c=i(l),d=!1;c.length&&!(d||c.is(".fancybox-skin")||c.is(".fancybox-wrap"));)d=(r=c[0])&&!(r.style.overflow&&"hidden"===r.style.overflow)&&(r.clientWidth&&r.scrollWidth>r.clientWidth||r.clientHeight&&r.scrollHeight>r.clientHeight),c=i(c).parent();0===n||d||s.group.length>1&&!t.canShrink&&(a>0||o>0?s.prev(a>0?"down":"left"):(a<0||o<0)&&s.next(a<0?"up":"right"),e.preventDefault())})))},trigger:function(e,t){var n,o=t||s.coming||s.current;if(o){if(i.isFunction(o[e])&&(n=o[e].apply(o,Array.prototype.slice.call(arguments,1))),!1===n)return!1;o.helpers&&i.each(o.helpers,(function(t,n){n&&s.helpers[t]&&i.isFunction(s.helpers[t][e])&&s.helpers[t][e](i.extend(!0,{},s.helpers[t].defaults,n),o)}))}r.trigger(e)},isImage:function(e){return h(e)&&e.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(e){return h(e)&&e.match(/\.(swf)((\?|#).*)?$/i)},_start:function(e){var t,n,o,a,r,l={};if(e=u(e),!(t=s.group[e]||null))return!1;if(a=(l=i.extend(!0,{},s.opts,t)).margin,r=l.padding,"number"===i.type(a)&&(l.margin=[a,a,a,a]),"number"===i.type(r)&&(l.padding=[r,r,r,r]),l.modal&&i.extend(!0,l,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}}),l.autoSize&&(l.autoWidth=l.autoHeight=!0),"auto"===l.width&&(l.autoWidth=!0),"auto"===l.height&&(l.autoHeight=!0),l.group=s.group,l.index=e,s.coming=l,!1!==s.trigger("beforeLoad")){if(o=l.type,n=l.href,!o)return s.coming=null,!(!s.current||!s.router||"jumpto"===s.router)&&(s.current.index=e,s[s.router](s.direction));if(s.isActive=!0,"image"!==o&&"swf"!==o||(l.autoHeight=l.autoWidth=!1,l.scrolling="visible"),"image"===o&&(l.aspectRatio=!0),"iframe"===o&&d&&(l.scrolling="scroll"),l.wrap=i(l.tpl.wrap).addClass("fancybox-"+(d?"mobile":"desktop")+" fancybox-type-"+o+" fancybox-tmp "+l.wrapCSS).appendTo(l.parent||"body"),i.extend(l,{skin:i(".fancybox-skin",l.wrap),outer:i(".fancybox-outer",l.wrap),inner:i(".fancybox-inner",l.wrap)}),i.each(["Top","Right","Bottom","Left"],(function(e,t){l.skin.css("padding"+t,g(l.padding[e]))})),s.trigger("onReady"),"inline"===o||"html"===o){if(!l.content||!l.content.length)return s._error("content")}else if(!n)return s._error("href");"image"===o?s._loadImage():"ajax"===o?s._loadAjax():"iframe"===o?s._loadIframe():s._afterLoad()}else s.coming=null},_error:function(e){i.extend(s.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:e,content:s.coming.tpl.error}),s._afterLoad()},_loadImage:function(){var e=s.imgPreload=new Image;e.onload=function(){this.onload=this.onerror=null,s.coming.width=this.width/s.opts.pixelRatio,s.coming.height=this.height/s.opts.pixelRatio,s._afterLoad()},e.onerror=function(){this.onload=this.onerror=null,s._error("image")},e.src=s.coming.href,!0!==e.complete&&s.showLoading()},_loadAjax:function(){var e=s.coming;s.showLoading(),s.ajaxLoad=i.ajax(i.extend({},e.ajax,{url:e.href,error:function(e,t){s.coming&&"abort"!==t?s._error("ajax",e):s.hideLoading()},success:function(t,i){"success"===i&&(e.content=t,s._afterLoad())}}))},_loadIframe:function(){var e=s.coming,t=i(e.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",d?"auto":e.iframe.scrolling).attr("src",e.href);i(e.wrap).bind("onReset",(function(){try{i(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(e){}})),e.iframe.preload&&(s.showLoading(),t.one("load",(function(){i(this).data("ready",1),d||i(this).bind("load.fb",s.update),i(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show(),s._afterLoad()}))),e.content=t.appendTo(e.inner),e.iframe.preload||s._afterLoad()},_preloadImages:function(){var e,t,i=s.group,n=s.current,o=i.length,a=n.preload?Math.min(n.preload,o-1):0;for(t=1;t<=a;t+=1)"image"===(e=i[(n.index+t)%o]).type&&e.href&&((new Image).src=e.href)},_afterLoad:function(){var e,t,n,o,a,r,l=s.coming,c=s.current,d="fancybox-placeholder";if(s.hideLoading(),l&&!1!==s.isActive){if(!1===s.trigger("afterLoad",l,c))return l.wrap.stop(!0).trigger("onReset").remove(),void(s.coming=null);switch(c&&(s.trigger("beforeChange",c),c.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()),s.unbindEvents(),e=l,t=l.content,n=l.type,o=l.scrolling,i.extend(s,{wrap:e.wrap,skin:e.skin,outer:e.outer,inner:e.inner,current:e,previous:c}),a=e.href,n){case"inline":case"ajax":case"html":e.selector?t=i("<div>").html(t).find(e.selector):p(t)&&(t.data(d)||t.data(d,i('<div class="'+d+'"></div>').insertAfter(t).hide()),t=t.show().detach(),e.wrap.bind("onReset",(function(){i(this).find(t).length&&t.hide().replaceAll(t.data(d)).data(d,!1)})));break;case"image":t=e.tpl.image.replace(/\{href\}/g,a);break;case"swf":t='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="../../cards/source/'+a+'"></param>',r="",i.each(e.swf,(function(e,i){t+='<param name="'+e+'" value="'+i+'"></param>',r+=" "+e+'="'+i+'"'})),t+='<embed src="'+a+'" type="application/x-shockwave-flash" width="100%" height="100%"'+r+"></embed></object>"}p(t)&&t.parent().is(e.inner)||e.inner.append(t),s.trigger("beforeShow"),e.inner.css("overflow","yes"===o?"scroll":"no"===o?"hidden":o),s._setDimension(),s.reposition(),s.isOpen=!1,s.coming=null,s.bindEvents(),s.isOpened?c.prevMethod&&s.transitions[c.prevMethod]():i(".fancybox-wrap").not(e.wrap).stop(!0).trigger("onReset").remove(),s.transitions[s.isOpened?e.nextMethod:e.openMethod](),s._preloadImages()}},_setDimension:function(){var e,t,n,o,a,r,l,c,d,p,h,m,y,x,v,w,b,k=s.getViewport(),C=0,O=s.wrap,W=s.skin,_=s.inner,S=s.current,T=S.width,E=S.height,L=S.minWidth,H=S.minHeight,j=S.maxWidth,P=S.maxHeight,R=S.scrolling,M=S.scrollOutside?S.scrollbarWidth:0,A=S.margin,I=u(A[1]+A[3]),D=u(A[0]+A[2]);if(O.add(W).add(_).width("auto").height("auto").removeClass("fancybox-tmp"),a=I+(n=u(W.outerWidth(!0)-W.width())),r=D+(o=u(W.outerHeight(!0)-W.height())),l=f(T)?(k.w-a)*u(T)/100:T,c=f(E)?(k.h-r)*u(E)/100:E,"iframe"===S.type){if(w=S.content,S.autoHeight&&w&&1===w.data("ready"))try{w[0].contentWindow.document.location&&(_.width(l).height(9999),b=w.contents().find("body"),M&&b.css("overflow-x","hidden"),c=b.outerHeight(!0))}catch(e){}}else(S.autoWidth||S.autoHeight)&&(_.addClass("fancybox-tmp"),S.autoWidth||_.width(l),S.autoHeight||_.height(c),S.autoWidth&&(l=_.width()),S.autoHeight&&(c=_.height()),_.removeClass("fancybox-tmp"));if(T=u(l),E=u(c),h=l/c,L=u(f(L)?u(L,"w")-a:L),j=u(f(j)?u(j,"w")-a:j),H=u(f(H)?u(H,"h")-r:H),d=j,p=P=u(f(P)?u(P,"h")-r:P),S.fitToView&&(j=Math.min(k.w-a,j),P=Math.min(k.h-r,P)),x=k.w-I,v=k.h-D,S.aspectRatio?(T>j&&(E=u((T=j)/h)),E>P&&(T=u((E=P)*h)),T<L&&(E=u((T=L)/h)),E<H&&(T=u((E=H)*h))):(T=Math.max(L,Math.min(T,j)),S.autoHeight&&"iframe"!==S.type&&(_.width(T),E=_.height()),E=Math.max(H,Math.min(E,P))),S.fitToView)if(_.width(T).height(E),O.width(T+n),m=O.width(),y=O.height(),S.aspectRatio)for(;(m>x||y>v)&&T>L&&E>H&&!(C++>19);)E=Math.max(H,Math.min(P,E-10)),(T=u(E*h))<L&&(E=u((T=L)/h)),T>j&&(E=u((T=j)/h)),_.width(T).height(E),O.width(T+n),m=O.width(),y=O.height();else T=Math.max(L,Math.min(T,T-(m-x))),E=Math.max(H,Math.min(E,E-(y-v)));M&&"auto"===R&&E<c&&T+n+M<x&&(T+=M),_.width(T).height(E),O.width(T+n),m=O.width(),y=O.height(),e=(m>x||y>v)&&T>L&&E>H,t=S.aspectRatio?T<d&&E<p&&T<l&&E<c:(T<d||E<p)&&(T<l||E<c),i.extend(S,{dim:{width:g(m),height:g(y)},origWidth:l,origHeight:c,canShrink:e,canExpand:t,wPadding:n,hPadding:o,wrapSpace:y-W.outerHeight(!0),skinSpace:W.height()-E}),!w&&S.autoHeight&&E>H&&E<P&&!t&&_.height("auto")},_getPosition:function(e){var t=s.current,i=s.getViewport(),n=t.margin,o=s.wrap.width()+n[1]+n[3],a=s.wrap.height()+n[0]+n[2],r={position:"absolute",top:n[0],left:n[3]};return t.autoCenter&&t.fixed&&!e&&a<=i.h&&o<=i.w?r.position="fixed":t.locked||(r.top+=i.y,r.left+=i.x),r.top=g(Math.max(r.top,r.top+(i.h-a)*t.topRatio)),r.left=g(Math.max(r.left,r.left+(i.w-o)*t.leftRatio)),r},_afterZoomIn:function(){var e=s.current;e&&(s.isOpen=s.isOpened=!0,s.wrap.css("overflow","visible").addClass("fancybox-opened").hide().show(0),s.update(),(e.closeClick||e.nextClick&&s.group.length>1)&&s.inner.css("cursor","pointer").bind("click.fb",(function(t){i(t.target).is("a")||i(t.target).parent().is("a")||(t.preventDefault(),s[e.closeClick?"close":"next"]())})),e.closeBtn&&i(e.tpl.closeBtn).appendTo(s.skin).bind("click.fb",(function(e){e.preventDefault(),s.close()})),e.arrows&&s.group.length>1&&((e.loop||e.index>0)&&i(e.tpl.prev).appendTo(s.outer).bind("click.fb",s.prev),(e.loop||e.index<s.group.length-1)&&i(e.tpl.next).appendTo(s.outer).bind("click.fb",s.next)),s.trigger("afterShow"),e.loop||e.index!==e.group.length-1?s.opts.autoPlay&&!s.player.isActive&&(s.opts.autoPlay=!1,s.play(!0)):s.play(!1))},_afterZoomOut:function(e){e=e||s.current,i(".fancybox-wrap").trigger("onReset").remove(),i.extend(s,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null}),s.trigger("afterClose",e)}}),s.transitions={getOrigPosition:function(){var e=s.current,t=e.element,i=e.orig,n={},o=50,a=50,r=e.hPadding,l=e.wPadding,c=s.getViewport();return!i&&e.isDom&&t.is(":visible")&&((i=t.find("img:first")).length||(i=t)),p(i)?(n=i.offset(),i.is("img")&&(o=i.outerWidth(),a=i.outerHeight())):(n.top=c.y+(c.h-a)*e.topRatio,n.left=c.x+(c.w-o)*e.leftRatio),("fixed"===s.wrap.css("position")||e.locked)&&(n.top-=c.y,n.left-=c.x),{top:g(n.top-r*e.topRatio),left:g(n.left-l*e.leftRatio),width:g(o+l),height:g(a+r)}},step:function(e,t){var i,n,o=t.prop,a=s.current,r=a.wrapSpace,l=a.skinSpace;"width"!==o&&"height"!==o||(i=t.end===t.start?1:(e-t.start)/(t.end-t.start),s.isClosing&&(i=1-i),n=e-("width"===o?a.wPadding:a.hPadding),s.skin[o](u("width"===o?n:n-r*i)),s.inner[o](u("width"===o?n:n-r*i-l*i)))},zoomIn:function(){var e=s.current,t=e.pos,n=e.openEffect,o="elastic"===n,a=i.extend({opacity:1},t);delete a.position,o?(t=this.getOrigPosition(),e.openOpacity&&(t.opacity=.1)):"fade"===n&&(t.opacity=.1),s.wrap.css(t).animate(a,{duration:"none"===n?0:e.openSpeed,easing:e.openEasing,step:o?this.step:null,complete:s._afterZoomIn})},zoomOut:function(){var e=s.current,t=e.closeEffect,i="elastic"===t,n={opacity:.1};i&&(n=this.getOrigPosition(),e.closeOpacity&&(n.opacity=.1)),s.wrap.animate(n,{duration:"none"===t?0:e.closeSpeed,easing:e.closeEasing,step:i?this.step:null,complete:s._afterZoomOut})},changeIn:function(){var e,t=s.current,i=t.nextEffect,n=t.pos,o={opacity:1},a=s.direction;n.opacity=.1,"elastic"===i&&(e="down"===a||"up"===a?"top":"left","down"===a||"right"===a?(n[e]=g(u(n[e])-200),o[e]="+=200px"):(n[e]=g(u(n[e])+200),o[e]="-=200px")),"none"===i?s._afterZoomIn():s.wrap.css(n).animate(o,{duration:t.nextSpeed,easing:t.nextEasing,complete:s._afterZoomIn})},changeOut:function(){var e=s.previous,t=e.prevEffect,n={opacity:.1},o=s.direction;"elastic"===t&&(n["down"===o||"up"===o?"top":"left"]=("up"===o||"left"===o?"-":"+")+"=200px"),e.wrap.animate(n,{duration:"none"===t?0:e.prevSpeed,easing:e.prevEasing,complete:function(){i(this).trigger("onReset").remove()}})}},s.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!d,fixed:!0},overlay:null,fixed:!1,el:i("html"),create:function(e){var t;e=i.extend({},this.defaults,e),this.overlay&&this.close(),t=s.coming?s.coming.parent:e.parent,this.overlay=i('<div class="fancybox-overlay"></div>').appendTo(t&&t.length?t:"body"),this.fixed=!1,e.fixed&&s.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(e){var t=this;e=i.extend({},this.defaults,e),this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(e),this.fixed||(a.bind("resize.overlay",i.proxy(this.update,this)),this.update()),e.closeClick&&this.overlay.bind("click.overlay",(function(e){if(i(e.target).hasClass("fancybox-overlay"))return s.isActive?s.close():t.close(),!1})),this.overlay.css(e.css).show()},close:function(){a.unbind("resize.overlay"),this.el.hasClass("fancybox-lock")&&(i(".fancybox-margin").removeClass("fancybox-margin"),this.el.removeClass("fancybox-lock"),a.scrollTop(this.scrollV).scrollLeft(this.scrollH)),i(".fancybox-overlay").remove().hide(),i.extend(this,{overlay:null,fixed:!1})},update:function(){var e,i="100%";this.overlay.width(i).height("100%"),l?(e=Math.max(t.documentElement.offsetWidth,t.body.offsetWidth),r.width()>e&&(i=r.width())):r.width()>a.width()&&(i=r.width()),this.overlay.width(i).height(r.height())},onReady:function(e,t){var n=this.overlay;i(".fancybox-overlay").stop(!0,!0),n||this.create(e),e.locked&&this.fixed&&t.fixed&&(t.locked=this.overlay.append(t.wrap),t.fixed=!1),!0===e.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(e,t){t.locked&&!this.el.hasClass("fancybox-lock")&&(!1!==this.fixPosition&&i("*:not(object)").filter((function(){return"fixed"===i(this).css("position")&&!i(this).hasClass("fancybox-overlay")&&!i(this).hasClass("fancybox-wrap")})).addClass("fancybox-margin"),this.el.addClass("fancybox-margin"),this.scrollV=a.scrollTop(),this.scrollH=a.scrollLeft(),this.el.addClass("fancybox-lock"),a.scrollTop(this.scrollV).scrollLeft(this.scrollH)),this.open(e)},onUpdate:function(){this.fixed||this.update()},afterClose:function(e){this.overlay&&!s.coming&&this.overlay.fadeOut(e.speedOut,i.proxy(this.close,this))}},s.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(e){var t,n,o=s.current,a=o.title,r=e.type;if(i.isFunction(a)&&(a=a.call(o.element,o)),h(a)&&""!==i.trim(a)){switch(t=i('<div class="fancybox-title fancybox-title-'+r+'-wrap">'+a+"</div>"),r){case"inside":n=s.skin;break;case"outside":n=s.wrap;break;case"over":n=s.inner;break;default:n=s.skin,t.appendTo("body"),l&&t.width(t.width()),t.wrapInner('<span class="child"></span>'),s.current.margin[2]+=Math.abs(u(t.css("margin-bottom")))}t["top"===e.position?"prependTo":"appendTo"](n)}}},i.fn.fancybox=function(e){var t,n=i(this),o=this.selector||"",a=function(a){var r,l,c=i(this).blur(),d=t;a.ctrlKey||a.altKey||a.shiftKey||a.metaKey||c.is(".fancybox-wrap")||(r=e.groupAttr||"data-fancybox-group",(l=c.attr(r))||(r="rel",l=c.get(0)[r]),l&&""!==l&&"nofollow"!==l&&(d=(c=(c=o.length?i(o):n).filter("["+r+'="'+l+'"]')).index(this)),e.index=d,!1!==s.open(c,e)&&a.preventDefault())};return t=(e=e||{}).index||0,o&&!1!==e.live?r.undelegate(o,"click.fb-start").delegate(o+":not('.fancybox-item, .fancybox-nav')","click.fb-start",a):n.unbind("click.fb-start").bind("click.fb-start",a),this.filter("[data-fancybox-start=1]").trigger("click"),this},r.ready((function(){var t,a,r,l;i.scrollbarWidth===n&&(i.scrollbarWidth=function(){var e=i('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),t=e.children(),n=t.innerWidth()-t.height(99).innerWidth();return e.remove(),n}),i.support.fixedPosition===n&&(i.support.fixedPosition=(l=20===(r=i('<div style="position:fixed;top:20px;"></div>').appendTo("body"))[0].offsetTop||15===r[0].offsetTop,r.remove(),l)),i.extend(s.defaults,{scrollbarWidth:i.scrollbarWidth(),fixed:i.support.fixedPosition,parent:i("body")}),t=i(e).width(),o.addClass("fancybox-lock-test"),a=i(e).width(),o.removeClass("fancybox-lock-test"),i("<style type='text/css'>.fancybox-margin{margin-right:"+(a-t)+"px;}</style>").appendTo("head")}))}(window,document,jQuery);