| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811 |
- /*
- * VenoBox - jQuery Plugin
- * version: 1.9.1
- * @requires jQuery >= 1.7.0
- *
- * Examples at http://veno.es/venobox/
- * License: MIT License
- * License URI: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE
- * Copyright 2013-2020 Nicola Franchini - @nicolafranchini
- *
- */
-
- /* global jQuery */
-
- (function($){
- "use strict";
- var autoplay, bgcolor, blockleft, blocknum, blockshare, blocktitle, border, core, container, content, dest, extraCss,
- framewidth, frameheight, gallItems, infinigall, items, keyNavigationDisabled, margine, numeratio,
- overlayColor, overlay, title, thisgall, thenext, theprev, nextok, prevok, preloader, $preloader, navigation,
- obj, gallIndex, startouch, vbheader, images, startY, startX, endY, endX, diff, diffX, diffY, threshold,
- share, sharelinks, vbfooter, sharepos;
-
- var pinIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.372-12 12 0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738.098.119.112.224.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146 1.124.347 2.317.535 3.554.535 6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z" fill-rule="evenodd" clip-rule="evenodd"/></svg>';
- var fbIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm3 8h-1.35c-.538 0-.65.221-.65.778v1.222h2l-.209 2h-1.791v7h-3v-7h-2v-2h2v-2.308c0-1.769.931-2.692 3.029-2.692h1.971v3z"/></svg>';
- var twitterIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm6.066 9.645c.183 4.04-2.83 8.544-8.164 8.544-1.622 0-3.131-.476-4.402-1.291 1.524.18 3.045-.244 4.252-1.189-1.256-.023-2.317-.854-2.684-1.995.451.086.895.061 1.298-.049-1.381-.278-2.335-1.522-2.304-2.853.388.215.83.344 1.301.359-1.279-.855-1.641-2.544-.889-3.835 1.416 1.738 3.533 2.881 5.92 3.001-.419-1.796.944-3.527 2.799-3.527.825 0 1.572.349 2.096.907.654-.128 1.27-.368 1.824-.697-.215.671-.67 1.233-1.263 1.589.581-.07 1.135-.224 1.649-.453-.384.578-.87 1.084-1.433 1.489z"/></svg>';
- var linkedinIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-2 16h-2v-6h2v6zm-1-6.891c-.607 0-1.1-.496-1.1-1.109 0-.612.492-1.109 1.1-1.109s1.1.497 1.1 1.109c0 .613-.493 1.109-1.1 1.109zm8 6.891h-1.998v-2.861c0-1.881-2.002-1.722-2.002 0v2.861h-2v-6h2v1.093c.872-1.616 4-1.736 4 1.548v3.359z"/></svg>';
- var downloadIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm2 9h-4v-1h4v1zm0-3v1h-4v-1h4zm-2 13l-6-6h4v-3h4v3h4l-6 6z"/></svg>';
-
- $.fn.extend({
- //plugin name - venobox
- venobox: function(options) {
- var plugin = this;
- // default options
- var defaults = {
- arrowsColor : '#B6B6B6',
- autoplay : false, // same as data-autoplay - thanks @codibit
- bgcolor: '#fff',
- border: '0',
- closeBackground : 'transparent',
- closeColor : "#d2d2d2",
- framewidth: '',
- frameheight: '',
- gallItems: false,
- infinigall: false,
- htmlClose : '×',
- htmlNext : '<span>Next</span>',
- htmlPrev : '<span>Prev</span>',
- numeratio: false,
- numerationBackground : '#161617',
- numerationColor : '#d2d2d2',
- numerationPosition : 'top', // 'top' || 'bottom'
- overlayClose: true, // disable overlay click-close - thanx @martybalandis
- overlayColor : 'rgba(23,23,23,0.85)',
- spinner : 'double-bounce', // available: 'rotating-plane' | 'double-bounce' | 'wave' | 'wandering-cubes' | 'spinner-pulse' | 'chasing-dots' | 'three-bounce' | 'circle' | 'cube-grid' | 'fading-circle' | 'folding-cube'
- spinColor : '#d2d2d2',
- titleattr: 'title', // specific attribute to get a title (e.g. [data-title]) - thanx @mendezcode
- titleBackground: '#161617',
- titleColor: '#d2d2d2',
- titlePosition : 'top', // 'top' || 'bottom'
- share: [], // ['facebook', 'twitter', 'linkedin', 'pinterest', 'download']
- cb_pre_open: function(){ return true; }, // Callbacks - thanx @garyee
- cb_post_open: function(){},
- cb_pre_close: function(){ return true; },
- cb_post_close: function(){},
- cb_post_resize: function(){},
- cb_after_nav: function(){},
- cb_content_loaded: function(){},
- cb_init: function(){}
- };
-
- var option = $.extend(defaults, options);
-
- // callback plugin initialization
- option.cb_init(plugin);
-
- return this.each(function() {
-
- obj = $(this);
-
- // Prevent double initialization - thanx @matthistuff
- if (obj.data('venobox')) {
- return true;
- }
-
- // method to be used outside the plugin
- plugin.VBclose = function() {
- closeVbox();
- };
- obj.addClass('vbox-item');
- obj.data('framewidth', option.framewidth);
- obj.data('frameheight', option.frameheight);
- obj.data('border', option.border);
- obj.data('bgcolor', option.bgcolor);
- obj.data('numeratio', option.numeratio);
- obj.data('gallItems', option.gallItems);
- obj.data('infinigall', option.infinigall);
- obj.data('overlaycolor', option.overlayColor);
- obj.data('titleattr', option.titleattr);
- obj.data('share', option.share);
-
- obj.data('venobox', true);
-
- obj.on('click', function(e){
-
- e.preventDefault();
- obj = $(this);
-
- // callback plugin initialization
- var cb_pre_open = option.cb_pre_open(obj);
-
- if (cb_pre_open === false) {
- return false;
- }
-
- // methods to be used outside the plugin
- plugin.VBnext = function() {
- navigateGall(thenext);
- };
- plugin.VBprev = function() {
- navigateGall(theprev);
- };
-
- overlayColor = obj.data('overlay') || obj.data('overlaycolor');
-
- framewidth = obj.data('framewidth');
- frameheight = obj.data('frameheight');
- // set data-autoplay="true" for vimeo and youtube videos - thanx @zehfernandes
- autoplay = obj.data('autoplay') || option.autoplay;
- border = obj.data('border');
- bgcolor = obj.data('bgcolor');
- nextok = false;
- prevok = false;
- keyNavigationDisabled = false;
-
- // set a different url to be loaded using data-href="" - thanx @pixeline
- dest = obj.data('href') || obj.attr('href');
- extraCss = obj.data( 'css' ) || '';
- title = obj.attr(obj.data('titleattr')) || '';
- share = obj.data('share');
-
- preloader = '<div class="vbox-preloader">';
-
- switch (option.spinner) {
-
- case 'rotating-plane':
- preloader += '<div class="sk-rotating-plane"></div>';
- break;
- case 'double-bounce':
- preloader += '<div class="sk-double-bounce">'+
- '<div class="sk-child sk-double-bounce1"></div>'+
- '<div class="sk-child sk-double-bounce2"></div>'+
- '</div>';
- break;
- case 'wave':
- preloader += '<div class="sk-wave">'+
- '<div class="sk-rect sk-rect1"></div>'+
- '<div class="sk-rect sk-rect2"></div>'+
- '<div class="sk-rect sk-rect3"></div>'+
- '<div class="sk-rect sk-rect4"></div>'+
- '<div class="sk-rect sk-rect5"></div>'+
- '</div>';
- break;
- case 'wandering-cubes':
- preloader += '<div class="sk-wandering-cubes">'+
- '<div class="sk-cube sk-cube1"></div>'+
- '<div class="sk-cube sk-cube2"></div>'+
- '</div>';
- break;
- case 'spinner-pulse':
- preloader += '<div class="sk-spinner sk-spinner-pulse"></div>';
- break;
- case 'chasing-dots':
- preloader += '<div class="sk-chasing-dots">'+
- '<div class="sk-child sk-dot1"></div>'+
- '<div class="sk-child sk-dot2"></div>'+
- '</div>';
- break;
- case 'three-bounce':
- preloader += '<div class="sk-three-bounce">'+
- '<div class="sk-child sk-bounce1"></div>'+
- '<div class="sk-child sk-bounce2"></div>'+
- '<div class="sk-child sk-bounce3"></div>'+
- '</div>';
- break;
- case 'circle':
- preloader += '<div class="sk-circle">'+
- '<div class="sk-circle1 sk-child"></div>'+
- '<div class="sk-circle2 sk-child"></div>'+
- '<div class="sk-circle3 sk-child"></div>'+
- '<div class="sk-circle4 sk-child"></div>'+
- '<div class="sk-circle5 sk-child"></div>'+
- '<div class="sk-circle6 sk-child"></div>'+
- '<div class="sk-circle7 sk-child"></div>'+
- '<div class="sk-circle8 sk-child"></div>'+
- '<div class="sk-circle9 sk-child"></div>'+
- '<div class="sk-circle10 sk-child"></div>'+
- '<div class="sk-circle11 sk-child"></div>'+
- '<div class="sk-circle12 sk-child"></div>'+
- '</div>';
- break;
- case 'cube-grid':
- preloader += '<div class="sk-cube-grid">'+
- '<div class="sk-cube sk-cube1"></div>'+
- '<div class="sk-cube sk-cube2"></div>'+
- '<div class="sk-cube sk-cube3"></div>'+
- '<div class="sk-cube sk-cube4"></div>'+
- '<div class="sk-cube sk-cube5"></div>'+
- '<div class="sk-cube sk-cube6"></div>'+
- '<div class="sk-cube sk-cube7"></div>'+
- '<div class="sk-cube sk-cube8"></div>'+
- '<div class="sk-cube sk-cube9"></div>'+
- '</div>';
- break;
- case 'fading-circle':
- preloader += '<div class="sk-fading-circle">'+
- '<div class="sk-circle1 sk-circle"></div>'+
- '<div class="sk-circle2 sk-circle"></div>'+
- '<div class="sk-circle3 sk-circle"></div>'+
- '<div class="sk-circle4 sk-circle"></div>'+
- '<div class="sk-circle5 sk-circle"></div>'+
- '<div class="sk-circle6 sk-circle"></div>'+
- '<div class="sk-circle7 sk-circle"></div>'+
- '<div class="sk-circle8 sk-circle"></div>'+
- '<div class="sk-circle9 sk-circle"></div>'+
- '<div class="sk-circle10 sk-circle"></div>'+
- '<div class="sk-circle11 sk-circle"></div>'+
- '<div class="sk-circle12 sk-circle"></div>'+
- '</div>';
- break;
- case 'folding-cube':
- preloader += '<div class="sk-folding-cube">'+
- '<div class="sk-cube1 sk-cube"></div>'+
- '<div class="sk-cube2 sk-cube"></div>'+
- '<div class="sk-cube4 sk-cube"></div>'+
- '<div class="sk-cube3 sk-cube"></div>'+
- '</div>';
- break;
- }
- preloader += '</div>';
-
- navigation = '<a class="vbox-next">' + option.htmlNext + '</a><a class="vbox-prev">' + option.htmlPrev + '</a>';
- vbheader = '<div class="vbox-title"></div><div class="vbox-left"><div class="vbox-num">0/0</div></div><div class="vbox-close">' + option.htmlClose + '</div>';
- vbfooter = '<div class="vbox-share"></div>';
-
- core = '<div class="vbox-overlay ' + extraCss + '" style="background:'+ overlayColor +'">'+
- preloader + '<div class="vbox-container"><div class="vbox-content"></div></div>' + vbheader + navigation + vbfooter + '</div>';
-
- $('body').append(core).addClass('vbox-open');
-
- $('.vbox-preloader div:not(.sk-circle) .sk-child, .vbox-preloader .sk-rotating-plane, .vbox-preloader .sk-rect, .vbox-preloader div:not(.sk-folding-cube) .sk-cube, .vbox-preloader .sk-spinner-pulse').css('background-color', option.spinColor);
-
- overlay = $('.vbox-overlay');
- container = $('.vbox-container');
- content = $('.vbox-content');
- blockleft = $('.vbox-left');
- blocknum = $('.vbox-num');
- blockshare = $('.vbox-share');
- blocktitle = $('.vbox-title');
- $preloader = $('.vbox-preloader');
-
- $preloader.show();
-
- if (option.titlePosition == 'top') {
- sharepos = 'bottom';
- } else {
- sharepos = 'top';
- }
- blockshare.css(sharepos, '-1px');
- blockshare.css({
- 'color' : option.titleColor,
- 'fill' : option.titleColor,
- 'background-color' : option.titleBackground
- });
-
- blocktitle.css(option.titlePosition, '-1px');
-
- blocktitle.css({
- 'color' : option.titleColor,
- 'background-color' : option.titleBackground
- });
-
- $('.vbox-close').css({
- 'color' : option.closeColor,
- 'background-color' : option.closeBackground
- });
-
- blockleft.css(option.numerationPosition, '-1px');
- blockleft.css({
- 'color' : option.numerationColor,
- 'background-color' : option.numerationBackground
- });
-
- $('.vbox-next span, .vbox-prev span').css({
- 'border-top-color' : option.arrowsColor,
- 'border-right-color' : option.arrowsColor
- });
-
- content.html('');
- content.css('opacity', '0');
- overlay.css('opacity', '0');
-
- checknav();
-
- // fade in overlay
- overlay.animate({opacity:1}, 250, function(){
-
- if (obj.data('vbtype') == 'iframe') {
- loadIframe();
- } else if (obj.data('vbtype') == 'inline') {
- loadInline();
- } else if (obj.data('vbtype') == 'ajax') {
- loadAjax();
- } else if (obj.data('vbtype') == 'video') {
- loadVid(autoplay);
- } else {
- content.html('<img src="'+dest+'">');
- preloadFirst();
- }
- option.cb_post_open(obj, gallIndex, thenext, theprev);
- });
-
- /* -------- KEYBOARD ACTIONS -------- */
- $('body').keydown(keyboardHandler);
-
- /* -------- PREVGALL -------- */
- $('.vbox-prev').on('click', function(){
- navigateGall(theprev);
- });
- /* -------- NEXTGALL -------- */
- $('.vbox-next').on('click', function(){
- navigateGall(thenext);
- });
-
- return false;
-
- }); // click
-
- /* -------- CHECK NEXT / PREV -------- */
- function checknav(){
-
- thisgall = obj.data('gall');
- numeratio = obj.data('numeratio');
- gallItems = obj.data('gallItems');
- infinigall = obj.data('infinigall');
- share = obj.data('share');
- blockshare.html('');
- if ( obj.data('vbtype') !== 'iframe' && obj.data('vbtype') !== 'inline' && obj.data('vbtype') !== 'ajax' ) {
- sharelinks = {
- pinterest : '<a target="_blank" href="https://pinterest.com/pin/create/button/?url='+obj.prop('href')+'&media='+obj.prop('href')+'&description='+title+'">'+pinIcon+'</a>',
- facebook : '<a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u='+obj.prop('href')+'">'+fbIcon+'</a>',
- twitter : '<a target="_blank" href="https://twitter.com/intent/tweet?text='+title+'&url='+obj.prop('href')+'">'+twitterIcon+'</a>',
- linkedin : '<a target="_blank" href="https://www.linkedin.com/sharing/share-offsite/?url='+obj.prop('href')+'">'+linkedinIcon+'</a>',
- download : '<a target="_blank" href="'+obj.prop('href')+'">'+downloadIcon+'</a>'
- };
- $.each( share, function( key, value ) {
- blockshare.append(sharelinks[value]);
- });
- }
-
- if (gallItems) {
- items = gallItems;
- } else {
- items = $('.vbox-item[data-gall="' + thisgall + '"]');
- }
-
- if (items.length < 2) {
- infinigall = false;
- numeratio = false;
- }
-
- thenext = items.eq( items.index(obj) + 1 );
- theprev = items.eq( items.index(obj) - 1 );
-
- if (!thenext.length && infinigall === true) {
- thenext = items.eq(0);
- }
-
- // update gall numeration
- if (items.length >= 1) {
- gallIndex = items.index(obj)+1;
- blocknum.html(gallIndex + ' / ' + items.length);
- } else {
- gallIndex = 1;
- }
- if (numeratio === true) {
- blocknum.show();
- } else {
- blocknum.hide();
- }
-
- // update title
- if (title !== '') {
- blocktitle.show();
- } else {
- blocktitle.hide();
- }
-
- // update navigation arrows
- if (!thenext.length && infinigall !== true) {
- $('.vbox-next').css('display', 'none');
- nextok = false;
- } else {
- $('.vbox-next').css('display', 'block');
- nextok = true;
- }
-
- if (items.index(obj) > 0 || infinigall === true) {
- $('.vbox-prev').css('display', 'block');
- prevok = true;
- } else {
- $('.vbox-prev').css('display', 'none');
- prevok = false;
- }
- // activate swipe
- if (prevok === true || nextok === true) {
- content.on(TouchMouseEvent.DOWN, onDownEvent);
- content.on(TouchMouseEvent.MOVE, onMoveEvent);
- content.on(TouchMouseEvent.UP, onUpEvent);
- }
- }
-
- /* -------- gallery navigation -------- */
- function navigateGall(destination) {
-
- if (destination.length < 1) {
- return false;
- }
- if (keyNavigationDisabled) {
- return false;
- }
- keyNavigationDisabled = true;
-
- overlayColor = destination.data('overlay') || destination.data('overlaycolor');
-
- framewidth = destination.data('framewidth');
- frameheight = destination.data('frameheight');
- border = destination.data('border');
- bgcolor = destination.data('bgcolor');
- dest = destination.data('href') || destination.attr('href');
-
- autoplay = destination.data('autoplay');
-
- title = (destination.data('titleattr') && destination.attr(destination.data('titleattr'))) || '';
-
- // swipe out item
- if (destination === theprev) {
- content.addClass('vbox-animated').addClass('swipe-right');
- }
- if (destination === thenext) {
- content.addClass('vbox-animated').addClass('swipe-left');
- }
-
- $preloader.show();
-
- content.animate({
- opacity : 0,
- }, 500, function(){
-
- overlay.css('background',overlayColor);
-
- content
- .removeClass('vbox-animated')
- .removeClass('swipe-left')
- .removeClass('swipe-right')
- .css({'margin-left': 0,'margin-right': 0});
-
- if (destination.data('vbtype') == 'iframe') {
- loadIframe();
- } else if (destination.data('vbtype') == 'inline') {
- loadInline();
- } else if (destination.data('vbtype') == 'ajax') {
- loadAjax();
- } else if (destination.data('vbtype') == 'video') {
- loadVid(autoplay);
- } else {
- content.html('<img src="'+dest+'">');
- preloadFirst();
- }
- obj = destination;
- checknav();
- keyNavigationDisabled = false;
- option.cb_after_nav(obj, gallIndex, thenext, theprev);
- });
- }
-
- /* -------- KEYBOARD HANDLER -------- */
- function keyboardHandler(e) {
- if (e.keyCode === 27) { // esc
- closeVbox();
- }
-
- if (e.keyCode == 37 && prevok === true) { // left
- navigateGall(theprev);
- }
-
- if (e.keyCode == 39 && nextok === true) { // right
- navigateGall(thenext);
- }
- }
-
- /* -------- CLOSE VBOX -------- */
- function closeVbox(){
-
- var cb_pre_close = option.cb_pre_close(obj, gallIndex, thenext, theprev);
-
- if (cb_pre_close === false) {
- return false;
- }
-
- $('body').off('keydown', keyboardHandler).removeClass('vbox-open');
-
- obj.focus();
-
- overlay.animate({opacity:0}, 500, function(){
- overlay.remove();
- keyNavigationDisabled = false;
- option.cb_post_close();
- });
- }
-
- /* -------- CLOSE CLICK -------- */
- var closeclickclass = '.vbox-overlay';
- if(!option.overlayClose){
- closeclickclass = '.vbox-close'; // close only on X
- }
-
- $('body').on('click touchstart', closeclickclass, function(e){
- if ($(e.target).is('.vbox-overlay') ||
- $(e.target).is('.vbox-content') ||
- $(e.target).is('.vbox-close') ||
- $(e.target).is('.vbox-preloader') ||
- $(e.target).is('.vbox-container')
- ) {
- closeVbox();
- }
- });
-
- startX = 0;
- endX = 0;
-
- diff = 0;
- threshold = 50;
- startouch = false;
-
- function onDownEvent(e){
- content.addClass('vbox-animated');
- startY = endY = e.pageY;
- startX = endX = e.pageX;
- startouch = true;
- }
-
- function onMoveEvent(e){
- if (startouch === true) {
- endX = e.pageX;
- endY = e.pageY;
-
- diffX = endX - startX;
- diffY = endY - startY;
-
- var absdiffX = Math.abs(diffX);
- var absdiffY = Math.abs(diffY);
-
- if ((absdiffX > absdiffY) && (absdiffX <= 100)) {
- e.preventDefault();
- content.css('margin-left', diffX);
- }
- }
- }
-
- function onUpEvent(e){
- if (startouch === true) {
- startouch = false;
- var subject = obj;
- var change = false;
- diff = endX - startX;
-
- if (diff < 0 && nextok === true) {
- subject = thenext;
- change = true;
- }
- if (diff > 0 && prevok === true) {
- subject = theprev;
- change = true;
- }
-
- if (Math.abs(diff) >= threshold && change === true) {
- navigateGall(subject);
- } else {
- content.css({'margin-left': 0,'margin-right': 0});
- }
- }
- }
-
- /* == GLOBAL DECLERATIONS == */
- var TouchMouseEvent = {
- DOWN: "touchmousedown",
- UP: "touchmouseup",
- MOVE: "touchmousemove"
- };
-
- /* == EVENT LISTENERS == */
- var onMouseEvent = function(event) {
- var type;
- switch (event.type) {
- case "mousedown": type = TouchMouseEvent.DOWN; break;
- case "mouseup": type = TouchMouseEvent.UP; break;
- case "mouseout": type = TouchMouseEvent.UP; break;
- case "mousemove": type = TouchMouseEvent.MOVE; break;
- default:
- return;
- }
- var touchMouseEvent = normalizeEvent(type, event, event.pageX, event.pageY);
- $(event.target).trigger(touchMouseEvent);
- };
-
- var onTouchEvent = function(event) {
- var type;
- switch (event.type) {
- case "touchstart": type = TouchMouseEvent.DOWN; break;
- case "touchend": type = TouchMouseEvent.UP; break;
- case "touchmove": type = TouchMouseEvent.MOVE; break;
- default:
- return;
- }
-
- var touch = event.originalEvent.touches[0];
- var touchMouseEvent;
-
- if (type == TouchMouseEvent.UP) {
- touchMouseEvent = normalizeEvent(type, event, null, null);
- } else {
- touchMouseEvent = normalizeEvent(type, event, touch.pageX, touch.pageY);
- }
- $(event.target).trigger(touchMouseEvent);
- };
-
- /* == NORMALIZE == */
- var normalizeEvent = function(type, original, x, y) {
- return $.Event(type, {
- pageX: x,
- pageY: y,
- originalEvent: original
- });
- };
-
- /* == LISTEN TO ORIGINAL EVENT == */
- if ("ontouchstart" in window) {
- $(document).on("touchstart", onTouchEvent);
- $(document).on("touchmove", onTouchEvent);
- $(document).on("touchend", onTouchEvent);
- } else {
- $(document).on("mousedown", onMouseEvent);
- $(document).on("mouseup", onMouseEvent);
- $(document).on("mouseout", onMouseEvent);
- $(document).on("mousemove", onMouseEvent);
- }
-
- /* -------- LOAD AJAX -------- */
- function loadAjax(){
- $.ajax({
- url: dest,
- cache: false
- }).done(function( msg ) {
- content.html('<div class="vbox-inline">'+ msg +'</div>');
- preloadFirst();
-
- }).fail(function() {
- content.html('<div class="vbox-inline"><p>Error retrieving contents, please retry</div>');
- updateoverlay();
- });
- }
-
- /* -------- LOAD IFRAME -------- */
- function loadIframe(){
- content.html('<iframe class="venoframe" src="'+dest+'"></iframe>');
- // $('.venoframe').load(function(){ // valid only for iFrames in same domain
- updateoverlay();
- // });
- }
-
- /* -------- LOAD VIDEOs -------- */
- function loadVid(autoplay){
-
- var player;
- var videoObj = parseVideo(dest);
-
- // set rel=0 to hide related videos at the end of YT + optional autoplay
- var stringAutoplay = autoplay ? "?rel=0&autoplay=1" : "?rel=0";
- var queryvars = stringAutoplay + getUrlParameter(dest);
-
- if (videoObj.type == 'vimeo') {
- player = 'https://player.vimeo.com/video/';
- } else if (videoObj.type == 'youtube') {
- player = 'https://www.youtube.com/embed/';
- }
- content.html('<iframe class="venoframe vbvid" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="autoplay" frameborder="0" src="'+player+videoObj.id+queryvars+'"></iframe>');
- updateoverlay();
- }
-
- /**
- * Parse Youtube or Vimeo videos and get host & ID
- */
- function parseVideo (url) {
- url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
- var type;
- if (RegExp.$3.indexOf('youtu') > -1) {
- type = 'youtube';
- } else if (RegExp.$3.indexOf('vimeo') > -1) {
- type = 'vimeo';
- }
- return {
- type: type,
- id: RegExp.$6
- };
- }
-
- /**
- * get additional video url parameters
- */
- function getUrlParameter(name) {
- var result = '';
- var sPageURL = decodeURIComponent(name);
- var firstsplit = sPageURL.split('?');
-
- if (firstsplit[1] !== undefined) {
- var sURLVariables = firstsplit[1].split('&');
- var sParameterName;
- var i;
- for (i = 0; i < sURLVariables.length; i++) {
- sParameterName = sURLVariables[i].split('=');
- result = result + '&'+ sParameterName[0]+'='+ sParameterName[1];
- }
- }
- return encodeURI(result);
- }
-
- /* -------- LOAD INLINE -------- */
- function loadInline(){
- content.html('<div class="vbox-inline">'+$(dest).html()+'</div>');
- updateoverlay();
- }
-
- /* -------- PRELOAD IMAGE -------- */
- function preloadFirst(){
- images = content.find('img');
-
- if (images.length) {
- images.each(function(){
- $(this).one('load', function() {
- updateoverlay();
- });
- });
- } else {
- updateoverlay();
- }
- }
-
- /* -------- FADE-IN THE NEW CONTENT -------- */
- function updateoverlay(){
-
- blocktitle.html(title);
- content.find(">:first-child").addClass('vbox-figlio').css({
- 'width': framewidth,
- 'height': frameheight,
- 'padding': border,
- 'background': bgcolor
- });
-
- $('img.vbox-figlio').on('dragstart', function(event) {
- event.preventDefault();
- });
-
- // reset content scroll
- container.scrollTop(0);
-
- updateOL();
-
- content.animate({
- 'opacity': '1'
- },'slow', function(){
- $preloader.hide();
- });
-
- option.cb_content_loaded(obj, gallIndex, thenext, theprev);
- }
-
- /* -------- CENTER FRAME -------- */
- function updateOL(){
-
- var sonH = content.outerHeight();
- var finH = $(window).height();
-
- if (sonH + 60 < finH) {
- margine = (finH - sonH)/2;
- } else {
- margine = '30px';
- }
- content.css('margin-top', margine);
- content.css('margin-bottom', margine);
- option.cb_post_resize();
- }
-
- $(window).resize(function(){
- if($('.vbox-content').length){
- setTimeout(updateOL(), 800);
- }
- });
- }); // each
- } // venobox
- }); // extend
- })(jQuery);
|