@ -1,8 +1,17 @@ |
||||
{% load static %} |
||||
{% load i18n %} |
||||
|
||||
<div id="pw-reg-complete" class="popup-window pw-period"> |
||||
<div id="pw-reg-complete" class="popup-window pw-period thank-registering"> |
||||
<header class="clearfix"> |
||||
<div class="pw-title">{% trans 'Письмо отправлено' %}</div> |
||||
<div class="pw-title">{% trans 'Благодарим за регистрацию' %}</div> |
||||
</header> |
||||
<div class="pw-body clearfix"> |
||||
<div class="pwf-line"> |
||||
<p>На указанный Вами e-mail отправлено письмо для подтверждения. |
||||
<strong>Пожалуйста, перейдите по ссылке, указанной в письме, и завершите регистрацию!</strong></p> |
||||
<p>Ссылка будет активна 3 дня. Если в течение этого времени Вы не воспользуетесь ею, Ваши данные будут автоматически удалены.</p> |
||||
|
||||
<p>Если Вы не получили письмо - обновите страницу либо нажмите <a href="javascript:void(0);" class="resend-letter" data-email="pavel.handleman@gmail.com">здесь</a>, письмо будет выслано вновь.</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -1 +1 @@ |
||||
var EXPO=EXPO||{};EXPO.profile=EXPO.profile||{},EXPO.profile.calendar?console.warn("WARNING: EXPO.profile.calendar is already defined!"):EXPO.profile.calendar=function(){var o=(EXPO.common,{});return o.opt={},$(function(){}),o.init=function(o){$.extend(this.opt,o);var t=this,s=$("#"+this.opt.scrollBoxId),l=$("#"+this.opt.calenadrId),e=l.find("td."+this.opt.currentDayClass).index()*this.opt.cellWidth,n=$("#"+this.opt.scrollLeftId),i=$("#"+this.opt.scrollRightId),a=$("."+this.opt.noEventsClass),c=$("."+this.opt.calendarToggleClass),r=this.opt.cellWidth*this.opt.cellsToScroll,d=0;$(function(){a.each(function(){$(this).attr("colspan")&&1!=$(this).attr("colspan")||$(this).find("."+t.opt.eventWrapClass).addClass("small")}),$("."+t.opt.eventsClass).each(function(){d++,3==d&&$(this).addClass("grey"),4==d&&($(this).addClass("grey"),d=0)})}),$(window).load(function(){s.mCustomScrollbar({axis:"y",horizontalScroll:!0,advanced:{autoScrollOnFocus:!1,updateOnContentResize:!1,updateOnBrowserResize:!1}}),s.mCustomScrollbar("scrollTo",e)}),n.on("click",function(){s.mCustomScrollbar("scrollTo","+="+r)}),i.on("click",function(){s.mCustomScrollbar("scrollTo","-="+r)}),c.on("click",function(){var o=$(this),t=o.closest(".ep-sect"),s=t.children("div.ep-sect-body");return t.hasClass("eps-opened")?(i.hide(),n.hide(),s.stop().animate({opacity:0},300,function(){t.removeClass("eps-opened")})):(i.show(),n.show(),s.stop().animate({opacity:1},300,function(){t.addClass("eps-opened")})),!1})},o}(); |
||||
var EXPO=EXPO||{};EXPO.profile=EXPO.profile||{},EXPO.profile.calendar?console.warn("WARNING: EXPO.profile.calendar is already defined!"):EXPO.profile.calendar=function(){var o=(EXPO.common,{});return o.opt={},$(function(){}),o.init=function(o){$.extend(this.opt,o);var t=this,s=$("#"+this.opt.scrollBoxId),l=$("#"+this.opt.calenadrId),n=(l.find("td."+this.opt.currentDayClass).index()*this.opt.cellWidth,$("#"+this.opt.scrollLeftId)),e=$("#"+this.opt.scrollRightId),a=$("."+this.opt.noEventsClass),i=$("."+this.opt.calendarToggleClass),c=this.opt.cellWidth*this.opt.cellsToScroll,r=0,d=function(){var o=0,s=0,l=t.opt.cellWidth,n=$("#"+t.opt.calenadrId),e=n.find("td."+t.opt.currentDayClass).index()+1,a=t.opt.cellsToScroll,i=n.find("."+t.opt.daysClass+" td").length,c=i/a,r=i/e;return s=c-r,s?(s=Math.round(s),o=a*s*l):o=0,o};$(function(){a.each(function(){$(this).attr("colspan")&&1!=$(this).attr("colspan")||$(this).find("."+t.opt.eventWrapClass).addClass("small")}),$("."+t.opt.eventsClass).each(function(){r++,3==r&&$(this).addClass("grey"),4==r&&($(this).addClass("grey"),r=0)})}),$(window).load(function(){s.mCustomScrollbar({axis:"y",horizontalScroll:!0,advanced:{autoScrollOnFocus:!1,updateOnContentResize:!1,updateOnBrowserResize:!1}}),s.mCustomScrollbar("scrollTo",d())}),n.on("click",function(){s.mCustomScrollbar("scrollTo","+="+c)}),e.on("click",function(){s.mCustomScrollbar("scrollTo","-="+c)}),i.on("click",function(){var o=$(this),t=o.closest(".ep-sect"),s=t.children("div.ep-sect-body");return t.hasClass("eps-opened")?(e.hide(),n.hide(),s.stop().animate({opacity:0},300,function(){t.removeClass("eps-opened")})):(e.show(),n.show(),s.stop().animate({opacity:1},300,function(){t.addClass("eps-opened")})),!1})},o}(); |
||||
|
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,97 @@ |
||||
#fancybox-buttons { |
||||
position: fixed; |
||||
left: 0; |
||||
width: 100%; |
||||
z-index: 8050; |
||||
} |
||||
|
||||
#fancybox-buttons.top { |
||||
top: 10px; |
||||
} |
||||
|
||||
#fancybox-buttons.bottom { |
||||
bottom: 10px; |
||||
} |
||||
|
||||
#fancybox-buttons ul { |
||||
display: block; |
||||
width: 166px; |
||||
height: 30px; |
||||
margin: 0 auto; |
||||
padding: 0; |
||||
list-style: none; |
||||
border: 1px solid #111; |
||||
border-radius: 3px; |
||||
-webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); |
||||
-moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); |
||||
box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); |
||||
background: rgb(50,50,50); |
||||
background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); |
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); |
||||
background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); |
||||
background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); |
||||
background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); |
||||
background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); |
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); |
||||
} |
||||
|
||||
#fancybox-buttons ul li { |
||||
float: left; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
#fancybox-buttons a { |
||||
display: block; |
||||
width: 30px; |
||||
height: 30px; |
||||
text-indent: -9999px; |
||||
background-color: transparent; |
||||
background-image: url('fancybox_buttons.png'); |
||||
background-repeat: no-repeat; |
||||
outline: none; |
||||
opacity: 0.8; |
||||
} |
||||
|
||||
#fancybox-buttons a:hover { |
||||
opacity: 1; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnPrev { |
||||
background-position: 5px 0; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnNext { |
||||
background-position: -33px 0; |
||||
border-right: 1px solid #3e3e3e; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnPlay { |
||||
background-position: 0 -30px; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnPlayOn { |
||||
background-position: -30px -30px; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnToggle { |
||||
background-position: 3px -60px; |
||||
border-left: 1px solid #111; |
||||
border-right: 1px solid #3e3e3e; |
||||
width: 35px |
||||
} |
||||
|
||||
#fancybox-buttons a.btnToggleOn { |
||||
background-position: -27px -60px; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnClose { |
||||
border-left: 1px solid #111; |
||||
width: 35px; |
||||
background-position: -56px 0px; |
||||
} |
||||
|
||||
#fancybox-buttons a.btnDisabled { |
||||
opacity : 0.4; |
||||
cursor: default; |
||||
} |
||||
@ -0,0 +1,122 @@ |
||||
/*! |
||||
* Buttons helper for fancyBox |
||||
* version: 1.0.5 (Mon, 15 Oct 2012) |
||||
* @requires fancyBox v2.0 or later |
||||
* |
||||
* Usage: |
||||
* $(".fancybox").fancybox({ |
||||
* helpers : { |
||||
* buttons: { |
||||
* position : 'top' |
||||
* } |
||||
* } |
||||
* }); |
||||
* |
||||
*/ |
||||
(function ($) { |
||||
//Shortcut for fancyBox object
|
||||
var F = $.fancybox; |
||||
|
||||
//Add helper object
|
||||
F.helpers.buttons = { |
||||
defaults : { |
||||
skipSingle : false, // disables if gallery contains single image
|
||||
position : 'top', // 'top' or 'bottom'
|
||||
tpl : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>' |
||||
}, |
||||
|
||||
list : null, |
||||
buttons: null, |
||||
|
||||
beforeLoad: function (opts, obj) { |
||||
//Remove self if gallery do not have at least two items
|
||||
|
||||
if (opts.skipSingle && obj.group.length < 2) { |
||||
obj.helpers.buttons = false; |
||||
obj.closeBtn = true; |
||||
|
||||
return; |
||||
} |
||||
|
||||
//Increase top margin to give space for buttons
|
||||
obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; |
||||
}, |
||||
|
||||
onPlayStart: function () { |
||||
if (this.buttons) { |
||||
this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); |
||||
} |
||||
}, |
||||
|
||||
onPlayEnd: function () { |
||||
if (this.buttons) { |
||||
this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); |
||||
} |
||||
}, |
||||
|
||||
afterShow: function (opts, obj) { |
||||
var buttons = this.buttons; |
||||
|
||||
if (!buttons) { |
||||
this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); |
||||
|
||||
buttons = { |
||||
prev : this.list.find('.btnPrev').click( F.prev ), |
||||
next : this.list.find('.btnNext').click( F.next ), |
||||
play : this.list.find('.btnPlay').click( F.play ), |
||||
toggle : this.list.find('.btnToggle').click( F.toggle ), |
||||
close : this.list.find('.btnClose').click( F.close ) |
||||
} |
||||
} |
||||
|
||||
//Prev
|
||||
if (obj.index > 0 || obj.loop) { |
||||
buttons.prev.removeClass('btnDisabled'); |
||||
} else { |
||||
buttons.prev.addClass('btnDisabled'); |
||||
} |
||||
|
||||
//Next / Play
|
||||
if (obj.loop || obj.index < obj.group.length - 1) { |
||||
buttons.next.removeClass('btnDisabled'); |
||||
buttons.play.removeClass('btnDisabled'); |
||||
|
||||
} else { |
||||
buttons.next.addClass('btnDisabled'); |
||||
buttons.play.addClass('btnDisabled'); |
||||
} |
||||
|
||||
this.buttons = buttons; |
||||
|
||||
this.onUpdate(opts, obj); |
||||
}, |
||||
|
||||
onUpdate: function (opts, obj) { |
||||
var toggle; |
||||
|
||||
if (!this.buttons) { |
||||
return; |
||||
} |
||||
|
||||
toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); |
||||
|
||||
//Size toggle button
|
||||
if (obj.canShrink) { |
||||
toggle.addClass('btnToggleOn'); |
||||
|
||||
} else if (!obj.canExpand) { |
||||
toggle.addClass('btnDisabled'); |
||||
} |
||||
}, |
||||
|
||||
beforeClose: function () { |
||||
if (this.list) { |
||||
this.list.remove(); |
||||
} |
||||
|
||||
this.list = null; |
||||
this.buttons = null; |
||||
} |
||||
}; |
||||
|
||||
}(jQuery)); |
||||
@ -0,0 +1,199 @@ |
||||
/*! |
||||
* Media helper for fancyBox |
||||
* version: 1.0.6 (Fri, 14 Jun 2013) |
||||
* @requires fancyBox v2.0 or later |
||||
* |
||||
* Usage: |
||||
* $(".fancybox").fancybox({ |
||||
* helpers : { |
||||
* media: true |
||||
* } |
||||
* }); |
||||
* |
||||
* Set custom URL parameters: |
||||
* $(".fancybox").fancybox({ |
||||
* helpers : { |
||||
* media: { |
||||
* youtube : { |
||||
* params : { |
||||
* autoplay : 0 |
||||
* } |
||||
* } |
||||
* } |
||||
* } |
||||
* }); |
||||
* |
||||
* Or: |
||||
* $(".fancybox").fancybox({, |
||||
* helpers : { |
||||
* media: true |
||||
* }, |
||||
* youtube : { |
||||
* autoplay: 0 |
||||
* } |
||||
* }); |
||||
* |
||||
* Supports: |
||||
* |
||||
* Youtube |
||||
* http://www.youtube.com/watch?v=opj24KnzrWo
|
||||
* http://www.youtube.com/embed/opj24KnzrWo
|
||||
* http://youtu.be/opj24KnzrWo
|
||||
* http://www.youtube-nocookie.com/embed/opj24KnzrWo
|
||||
* Vimeo |
||||
* http://vimeo.com/40648169
|
||||
* http://vimeo.com/channels/staffpicks/38843628
|
||||
* http://vimeo.com/groups/surrealism/videos/36516384
|
||||
* http://player.vimeo.com/video/45074303
|
||||
* Metacafe |
||||
* http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
|
||||
* http://www.metacafe.com/watch/7635964/
|
||||
* Dailymotion |
||||
* http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
|
||||
* Twitvid |
||||
* http://twitvid.com/QY7MD
|
||||
* Twitpic |
||||
* http://twitpic.com/7p93st
|
||||
* Instagram |
||||
* http://instagr.am/p/IejkuUGxQn/
|
||||
* http://instagram.com/p/IejkuUGxQn/
|
||||
* Google maps |
||||
* http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
|
||||
* http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
|
||||
* http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
|
||||
*/ |
||||
(function ($) { |
||||
"use strict"; |
||||
|
||||
//Shortcut for fancyBox object
|
||||
var F = $.fancybox, |
||||
format = function( url, rez, params ) { |
||||
params = params || ''; |
||||
|
||||
if ( $.type( params ) === "object" ) { |
||||
params = $.param(params, true); |
||||
} |
||||
|
||||
$.each(rez, function(key, value) { |
||||
url = url.replace( '$' + key, value || '' ); |
||||
}); |
||||
|
||||
if (params.length) { |
||||
url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; |
||||
} |
||||
|
||||
return url; |
||||
}; |
||||
|
||||
//Add helper object
|
||||
F.helpers.media = { |
||||
defaults : { |
||||
youtube : { |
||||
matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, |
||||
params : { |
||||
autoplay : 1, |
||||
autohide : 1, |
||||
fs : 1, |
||||
rel : 0, |
||||
hd : 1, |
||||
wmode : 'opaque', |
||||
enablejsapi : 1 |
||||
}, |
||||
type : 'iframe', |
||||
url : '//www.youtube.com/embed/$3' |
||||
}, |
||||
vimeo : { |
||||
matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, |
||||
params : { |
||||
autoplay : 1, |
||||
hd : 1, |
||||
show_title : 1, |
||||
show_byline : 1, |
||||
show_portrait : 0, |
||||
fullscreen : 1 |
||||
}, |
||||
type : 'iframe', |
||||
url : '//player.vimeo.com/video/$1' |
||||
}, |
||||
metacafe : { |
||||
matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, |
||||
params : { |
||||
autoPlay : 'yes' |
||||
}, |
||||
type : 'swf', |
||||
url : function( rez, params, obj ) { |
||||
obj.swf.flashVars = 'playerVars=' + $.param( params, true ); |
||||
|
||||
return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; |
||||
} |
||||
}, |
||||
dailymotion : { |
||||
matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, |
||||
params : { |
||||
additionalInfos : 0, |
||||
autoStart : 1 |
||||
}, |
||||
type : 'swf', |
||||
url : '//www.dailymotion.com/swf/video/$1' |
||||
}, |
||||
twitvid : { |
||||
matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, |
||||
params : { |
||||
autoplay : 0 |
||||
}, |
||||
type : 'iframe', |
||||
url : '//www.twitvid.com/embed.php?guid=$1' |
||||
}, |
||||
twitpic : { |
||||
matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, |
||||
type : 'image', |
||||
url : '//twitpic.com/show/full/$1/' |
||||
}, |
||||
instagram : { |
||||
matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, |
||||
type : 'image', |
||||
url : '//$1/p/$2/media/?size=l' |
||||
}, |
||||
google_maps : { |
||||
matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, |
||||
type : 'iframe', |
||||
url : function( rez ) { |
||||
return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); |
||||
} |
||||
} |
||||
}, |
||||
|
||||
beforeLoad : function(opts, obj) { |
||||
var url = obj.href || '', |
||||
type = false, |
||||
what, |
||||
item, |
||||
rez, |
||||
params; |
||||
|
||||
for (what in opts) { |
||||
if (opts.hasOwnProperty(what)) { |
||||
item = opts[ what ]; |
||||
rez = url.match( item.matcher ); |
||||
|
||||
if (rez) { |
||||
type = item.type; |
||||
params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); |
||||
|
||||
url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); |
||||
|
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (type) { |
||||
obj.href = url; |
||||
obj.type = type; |
||||
|
||||
obj.autoHeight = false; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
}(jQuery)); |
||||
@ -0,0 +1,55 @@ |
||||
#fancybox-thumbs { |
||||
position: fixed; |
||||
left: 0; |
||||
width: 100%; |
||||
overflow: hidden; |
||||
z-index: 8050; |
||||
} |
||||
|
||||
#fancybox-thumbs.bottom { |
||||
bottom: 2px; |
||||
} |
||||
|
||||
#fancybox-thumbs.top { |
||||
top: 2px; |
||||
} |
||||
|
||||
#fancybox-thumbs ul { |
||||
position: relative; |
||||
list-style: none; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
#fancybox-thumbs ul li { |
||||
float: left; |
||||
padding: 1px; |
||||
opacity: 0.5; |
||||
} |
||||
|
||||
#fancybox-thumbs ul li.active { |
||||
opacity: 0.75; |
||||
padding: 0; |
||||
border: 1px solid #fff; |
||||
} |
||||
|
||||
#fancybox-thumbs ul li:hover { |
||||
opacity: 1; |
||||
} |
||||
|
||||
#fancybox-thumbs ul li a { |
||||
display: block; |
||||
position: relative; |
||||
overflow: hidden; |
||||
border: 1px solid #222; |
||||
background: #111; |
||||
outline: none; |
||||
} |
||||
|
||||
#fancybox-thumbs ul li img { |
||||
display: block; |
||||
position: relative; |
||||
border: 0; |
||||
padding: 0; |
||||
max-width: none; |
||||
} |
||||
@ -0,0 +1,162 @@ |
||||
/*! |
||||
* Thumbnail helper for fancyBox |
||||
* version: 1.0.7 (Mon, 01 Oct 2012) |
||||
* @requires fancyBox v2.0 or later |
||||
* |
||||
* Usage: |
||||
* $(".fancybox").fancybox({ |
||||
* helpers : { |
||||
* thumbs: { |
||||
* width : 50, |
||||
* height : 50 |
||||
* } |
||||
* } |
||||
* }); |
||||
* |
||||
*/ |
||||
(function ($) { |
||||
//Shortcut for fancyBox object
|
||||
var F = $.fancybox; |
||||
|
||||
//Add helper object
|
||||
F.helpers.thumbs = { |
||||
defaults : { |
||||
width : 50, // thumbnail width
|
||||
height : 50, // thumbnail height
|
||||
position : 'bottom', // 'top' or 'bottom'
|
||||
source : function ( item ) { // function to obtain the URL of the thumbnail image
|
||||
var href; |
||||
|
||||
if (item.element) { |
||||
href = $(item.element).find('img').attr('src'); |
||||
} |
||||
|
||||
if (!href && item.type === 'image' && item.href) { |
||||
href = item.href; |
||||
} |
||||
|
||||
return href; |
||||
} |
||||
}, |
||||
|
||||
wrap : null, |
||||
list : null, |
||||
width : 0, |
||||
|
||||
init: function (opts, obj) { |
||||
var that = this, |
||||
list, |
||||
thumbWidth = opts.width, |
||||
thumbHeight = opts.height, |
||||
thumbSource = opts.source; |
||||
|
||||
//Build list structure
|
||||
list = ''; |
||||
|
||||
for (var n = 0; n < obj.group.length; n++) { |
||||
list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>'; |
||||
} |
||||
|
||||
this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body'); |
||||
this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap); |
||||
|
||||
//Load each thumbnail
|
||||
$.each(obj.group, function (i) { |
||||
var href = thumbSource( obj.group[ i ] ); |
||||
|
||||
if (!href) { |
||||
return; |
||||
} |
||||
|
||||
$("<img />").load(function () { |
||||
var width = this.width, |
||||
height = this.height, |
||||
widthRatio, heightRatio, parent; |
||||
|
||||
if (!that.list || !width || !height) { |
||||
return; |
||||
} |
||||
|
||||
//Calculate thumbnail width/height and center it
|
||||
widthRatio = width / thumbWidth; |
||||
heightRatio = height / thumbHeight; |
||||
|
||||
parent = that.list.children().eq(i).find('a'); |
||||
|
||||
if (widthRatio >= 1 && heightRatio >= 1) { |
||||
if (widthRatio > heightRatio) { |
||||
width = Math.floor(width / heightRatio); |
||||
height = thumbHeight; |
||||
|
||||
} else { |
||||
width = thumbWidth; |
||||
height = Math.floor(height / widthRatio); |
||||
} |
||||
} |
||||
|
||||
$(this).css({ |
||||
width : width, |
||||
height : height, |
||||
top : Math.floor(thumbHeight / 2 - height / 2), |
||||
left : Math.floor(thumbWidth / 2 - width / 2) |
||||
}); |
||||
|
||||
parent.width(thumbWidth).height(thumbHeight); |
||||
|
||||
$(this).hide().appendTo(parent).fadeIn(300); |
||||
|
||||
}).attr('src', href); |
||||
}); |
||||
|
||||
//Set initial width
|
||||
this.width = this.list.children().eq(0).outerWidth(true); |
||||
|
||||
this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); |
||||
}, |
||||
|
||||
beforeLoad: function (opts, obj) { |
||||
//Remove self if gallery do not have at least two items
|
||||
if (obj.group.length < 2) { |
||||
obj.helpers.thumbs = false; |
||||
|
||||
return; |
||||
} |
||||
|
||||
//Increase bottom margin to give space for thumbs
|
||||
obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); |
||||
}, |
||||
|
||||
afterShow: function (opts, obj) { |
||||
//Check if exists and create or update list
|
||||
if (this.list) { |
||||
this.onUpdate(opts, obj); |
||||
|
||||
} else { |
||||
this.init(opts, obj); |
||||
} |
||||
|
||||
//Set active element
|
||||
this.list.children().removeClass('active').eq(obj.index).addClass('active'); |
||||
}, |
||||
|
||||
//Center list
|
||||
onUpdate: function (opts, obj) { |
||||
if (this.list) { |
||||
this.list.stop(true).animate({ |
||||
'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) |
||||
}, 150); |
||||
} |
||||
}, |
||||
|
||||
beforeClose: function () { |
||||
if (this.wrap) { |
||||
this.wrap.remove(); |
||||
} |
||||
|
||||
this.wrap = null; |
||||
this.list = null; |
||||
this.width = 0; |
||||
} |
||||
} |
||||
|
||||
}(jQuery)); |
||||