(function ($) {
'use strict';
jQuery.each(gallery_resp_lightbox_obj, function (index, value) {
if (value.indexOf('true') > -1 || value.indexOf('false') > -1)
gallery_resp_lightbox_obj[index] = value == "true";
});
function Lightbox(element, options) {
this.el = element;
this.$element = $(element);
this.$body = $('body');
this.objects = {};
this.lightboxModul = {};
this.$item = '';
this.$cont = '';
this.$items = this.$body.find('a.gallery_responsive_lightbox');
this.settings = $.extend({}, this.constructor.defaults, options);
this.init();
return this;
}
Lightbox.defaults = {
idPrefix: 'rwd-',
classPrefix: 'rwd-',
attrPrefix: 'data-',
slideAnimationType: gallery_resp_lightbox_obj.gallery_img_lightbox_slideAnimationType, /* effect_1 effect_2 effect_3
effect_4 effect_5 effect_6
effect_7 effect_8 effect_9 */
lightboxView: gallery_resp_lightbox_obj.gallery_img_lightbox_lightboxView, // view1, view2, view3, view4, view5
speed: gallery_resp_lightbox_obj.gallery_img_lightbox_speed_new,
width: gallery_resp_lightbox_obj.gallery_img_lightbox_width_new + '%',
height: gallery_resp_lightbox_obj.gallery_img_lightbox_height_new + '%',
videoMaxWidth: gallery_resp_lightbox_obj.gallery_img_lightbox_videoMaxWidth,
sizeFix: true, //not for option
overlayDuration: +gallery_resp_lightbox_obj.gallery_img_lightbox_overlayDuration,
slideAnimation: true, //not for option
overlayClose: gallery_resp_lightbox_obj.gallery_img_lightbox_overlayClose_new,
loop: gallery_resp_lightbox_obj.gallery_img_lightbox_loop_new,
escKey: gallery_resp_lightbox_obj.gallery_img_lightbox_escKey_new,
keyPress: gallery_resp_lightbox_obj.gallery_img_lightbox_keyPress_new,
arrows: gallery_resp_lightbox_obj.gallery_img_lightbox_arrows,
mouseWheel: gallery_resp_lightbox_obj.gallery_img_lightbox_mouseWheel,
download: gallery_resp_lightbox_obj.gallery_img_lightbox_download,
showCounter: gallery_resp_lightbox_obj.gallery_img_lightbox_showCounter,
defaultTitle: '', //some text
preload: 10, //not for option
showAfterLoad: true, //not for option
nextHtml: '', //not for option
prevHtml: '', //not for option
sequence_info: gallery_resp_lightbox_obj.gallery_img_lightbox_sequence_info,
sequenceInfo: gallery_resp_lightbox_obj.gallery_img_lightbox_sequenceInfo,
slideshow: gallery_resp_lightbox_obj.gallery_img_lightbox_slideshow_new,
slideshowAuto: gallery_resp_lightbox_obj.gallery_img_lightbox_slideshow_auto_new,
slideshowSpeed: gallery_resp_lightbox_obj.gallery_img_lightbox_slideshow_speed_new,
slideshowStart: '', //not for option
slideshowStop: '', //not for option
hideControlOnEnd: false, //not for option
watermark: gallery_resp_lightbox_obj.gallery_img_lightbox_watermark,
socialSharing: gallery_resp_lightbox_obj.gallery_img_lightbox_socialSharing,
titlePos: gallery_resp_lightbox_obj.gallery_img_lightbox_title_pos,
fullwidth: gallery_resp_lightbox_obj.gallery_img_lightbox_fullwidth_effect,
zoomLogo: gallery_resp_lightbox_obj.gallery_img_lightbox_zoomlogo,
share: {
facebookButton: gallery_resp_lightbox_obj.gallery_img_lightbox_facebookButton==true,
twitterButton: gallery_resp_lightbox_obj.gallery_img_lightbox_twitterButton==true,
googleplusButton: gallery_resp_lightbox_obj.gallery_img_lightbox_googleplusButton==true,
pinterestButton: gallery_resp_lightbox_obj.gallery_img_lightbox_pinterestButton==true,
linkedinButton: gallery_resp_lightbox_obj.gallery_img_lightbox_linkedinButton==true,
tumblrButton: gallery_resp_lightbox_obj.gallery_img_lightbox_tumblrButton==true,
redditButton: gallery_resp_lightbox_obj.gallery_img_lightbox_redditButton==true,
bufferButton: gallery_resp_lightbox_obj.gallery_img_lightbox_bufferButton==true,
diggButton: gallery_resp_lightbox_obj.gallery_img_lightbox_diggButton==true,
vkButton: gallery_resp_lightbox_obj.gallery_img_lightbox_vkButton==true,
yummlyButton: gallery_resp_lightbox_obj.gallery_img_lightbox_yummlyButton==true
}
};
Lightbox.prototype.init = function () {
var $object = this,
$hash;
$hash = window.location.hash;
($object.settings.watermark && $('.watermark').watermark());
if ($hash.indexOf('lightbox&') > 0) {
$object.index = parseInt($hash.split('&slide=')[1], 10) - 1;
$object.$body.addClass('rwd-share');
if (!$object.$body.hasClass('rwd-on')) {
setTimeout(function () {
$object.build($object.index);
}, 900);
$object.$body.addClass('rwd-on');
}
}
(($object.settings.preload > $object.$items.length) && ($object.settings.preload = $object.$items.length));
$object.$items.on('click.rwdcustom', function (event) {
event = event || window.event;
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
$object.index = $object.$items.index(this);
if (!$object.$body.hasClass($object.settings.classPrefix + 'on')) {
$object.build($object.index);
$object.$body.addClass($object.settings.classPrefix + 'on');
}
});
$object.$body.on('click', function () {
$object.$_y_ = window.pageYOffset;
});
switch (this.settings.zoomLogo) {
case '1':
$object.$body.addClass('rwd-zoomGlass');
break;
case '2':
$object.$body.addClass('rwd-zoomHand');
break;
}
};
Lightbox.prototype.build = function (index) {
var $object = this;
$object.structure();
$object.lightboxModul['modul'] = new $.fn.lightbox.lightboxModul['modul']($object.el);
$object.slide(index, false, false);
($object.settings.keyPress && $object.addKeyEvents());
if ($object.$items.length > 1) {
$object.arrow();
($object.settings.mouseWheel && $object.mousewheel());
($object.settings.slideshow && $object.slideShow());
}
$object.counter();
$object.closeGallery();
$object.$cont.on('click.rwd-container', function () {
$object.$cont.removeClass($object.settings.classPrefix + 'hide-items');
});
$('.shareLook').on('click.rwd-container', function () {
$(this).css({'display': 'none'});
$('.rwd-share-buttons').css({'display': 'block'});
setTimeout(function(){
$('.shareLook').css({'display' : 'block'});
$('.rwd-share-buttons').css({'display' : 'none'});
}, 9000);
});
$object.calculateDimensions();
};
Lightbox.prototype.structure = function () {
var $object = this, list = '', controls = '', i,
subHtmlCont1 = '', subHtmlCont2 = '', subHtmlCont3 = '',
close1 = '', close2 = '', socialIcons = '',
template, $arrows, $next, $prev,
$_next, $_prev, $close_bg, $download_bg, $download_bg_, $contInner;
this.$body.append(
this.objects.overlay = $('
')
);
this.objects.overlay.css('transition-duration', this.settings.overlayDuration + 'ms');
for (i = 0; i < this.$items.length; i++) {
list += '';
}
$close_bg = '';
switch (this.settings.lightboxView) {
case 'view1':
default:
$_next = '';
$_prev = '';
subHtmlCont1 = '';
close1 = '' + $close_bg + '';
break;
case 'view2':
$_next = '';
$_prev = '';
subHtmlCont2 = '';
close2 = '' + $close_bg + '';
break;
case 'view3':
$_next = '';
$_prev = '';
subHtmlCont1 = '';
close1 = '' + $close_bg + '';
break;
case 'view4':
$_next = '';
$_prev = '';
$close_bg = '';
subHtmlCont2 = '';
close1 = '' + $close_bg + '';
break;
case 'view5':
$_next = '';
$_prev = '';
$close_bg = '';
subHtmlCont3 = '' +
'';
close1 = '' + $close_bg + '';
break;
}
if (this.settings.arrows && this.$items.length > 1) {
controls = '' +
'
' + $_prev + this.settings.prevHtml + '
' +
'
' + $_next + this.settings.nextHtml + '
' +
'
';
}
if (this.settings.socialSharing && this.settings.lightboxView !== 'view5') {
socialIcons = '';
}
$contInner = (this.settings.lightboxView === 'view5') ? '' + subHtmlCont3 + '
' : '';
var $zoomDiv = gallery_resp_lightbox_obj.gallery_img_lightbox_zoom ? '' : '';
template = '' +
$zoomDiv +
'
' +
'
' + list + '
' +
$contInner +
'
' +
close1 + subHtmlCont2 +
'
' +
controls +
'
' +
close2 + subHtmlCont1 + socialIcons + '
' +
'
' +
'
';
if ($object.settings.socialSharing) {
setTimeout(function () {
$object.socialShare();
}, 50);
}
this.$body.append(template);
this.$cont = $('.' + $object.settings.classPrefix + 'cont');
this.$item = this.$cont.find('.' + $object.settings.classPrefix + 'item');
if (!this.settings.slideAnimation) {
this.$cont.addClass(this.settings.classPrefix + 'animation');
this.settings.slideAnimationType = this.settings.classPrefix + 'slide';
} else {
this.$cont.addClass(this.settings.classPrefix + 'use');
}
$object.calculateDimensions();
$(window).on('resize.rwd-container', function () {
setTimeout(function () {
$object.calculateDimensions();
}, 100);
});
this.$item.eq(this.index).addClass(this.settings.classPrefix + 'current');
if (this.effectsSupport()) {
this.$cont.addClass(this.settings.classPrefix + 'support');
} else {
this.$cont.addClass(this.settings.classPrefix + 'noSupport');
this.settings.speed = 0;
}
this.$cont.addClass(this.settings.slideAnimationType);
((this.settings.showAfterLoad) && (this.$cont.addClass(this.settings.classPrefix + 'show-after-load')));
if (this.effectsSupport()) {
var $inner = this.$cont.find('.cont-inner');
$inner.css('transition-timing-function', 'ease');
$inner.css('transition-duration', this.settings.speed + 'ms');
}
$object.objects.overlay.addClass('in');
setTimeout(function () {
$object.$cont.addClass($object.settings.classPrefix + 'visible');
}, this.settings.overlayDuration);
if (this.settings.download) {
$download_bg = '';
$download_bg_ = '';
switch (this.settings.lightboxView) {
case 'view1':
default:
this.$cont.find('.' + $object.settings.classPrefix + 'toolbar').append('' + $download_bg + '');
break;
case 'view2':
this.$cont.find('.' + $object.settings.classPrefix + 'bar').append('' + $download_bg + '');
break;
case 'view4':
$('' + $download_bg + '').insertBefore($('.rwd-title'));
break;
case 'view5':
$('.rwd-toolbar').append('' + $download_bg_ + '');
break;
}
}
$arrows = $('.rwd-arrows .rwd-next, .rwd-arrows .rwd-prev');
$next = $('.rwd-arrows .rwd-next');
$prev = $('.rwd-arrows .rwd-prev');
var title_text = $('.rwd-title');
switch (this.settings.titlePos) {
case 'left':
title_text.css({'text-align': 'left'});
break;
case 'center':
title_text.css({'text-align': 'center'});
break;
case 'right':
title_text.css({'text-align': 'right'});
break;
}
switch (this.settings.lightboxView) {
case 'view1':
default:
$arrows.css({'top': '50%'});
$next.css({'right': '20px'});
$prev.css({'left': '20px'});
break;
case 'view2':
$arrows.css({'bottom': '0'});
$next.css({'right': '40%'});
$prev.css({'left': '40%'});
break;
case 'view3':
$arrows.css({'top': '14px', 'z-index': '1090'});
$next.css({'right': '20px'});
$prev.css({'right': '55px'});
title_text.css({'text-align': 'left', 'border-top': '1px solid #999'});
$('.rwd-close').css({'margin-right': '45%'});
$('.rwd-overlay, .rwd-toolbar, .rwd-title, .rwd-next, .rwd-prev').css({'background': 'rgba(255, 255, 255, 1)'});
$('.rwd-title, .shareLook').css({'color': '#999'});
$('.rwd-toolbar').css({'border-bottom': '1px solid #999'});
$('.rwd-toolbar .rwd-icon, .rwd-arrows .rwd-icon').addClass('rwd-icon0');
break;
}
this.prevScrollTop = $(window).scrollTop();
$object.objects.content = $('.rwd-container');
$object.objects.content.css({
'width': $object.settings.width,
'height': $object.settings.height
});
var $color, $zoomTop = (document.documentElement.clientHeight - $object.objects.content.height()) / 2 - 1;
switch (this.settings.lightboxView){
case 'view3':
$color = 'rgba(255,255,255,.9)';
break;
default:
$color = 'rgba(0,0,0,.9)';
break;
}
$('.rwd-zoomDiv').css({
'width': $object.settings.width,
'top': $zoomTop + 'px',
'background-color': $color
});
setTimeout(function () {
$('.rwd-container').bind('contextmenu', function () {
return false;
});
}, 50);
};
Lightbox.prototype.calculateDimensions = function () {
var $object = this, $width;
$width = $('.' + $object.settings.classPrefix + 'current').height() * 16 / 9;
if ($width > $object.settings.videoMaxWidth) {
$width = $object.settings.videoMaxWidth;
}
$('.' + $object.settings.classPrefix + 'video-cont ').css({
'max-width': $width + 'px'
});
};
Lightbox.prototype.effectsSupport = function () {
var transition, root, support;
support = function () {
transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
root = document.documentElement;
for (var i = 0; i < transition.length; i++) {
if (transition[i] in root.style) {
return transition[i] in root.style;
}
}
};
return support();
};
Lightbox.prototype.isVideo = function (src, index) {
var youtube, vimeo;
youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i);
vimeo = src.match(/\/\/?player.vimeo.com\/([0-9a-z\-_]+)/i);
if (youtube) {
return {
youtube: youtube
};
} else if (vimeo) {
return {
vimeo: vimeo
};
}
};
Lightbox.prototype.counter = function () {
if (this.settings.showCounter) {
switch (this.settings.lightboxView) {
case 'view1':
default:
$('.' + this.settings.classPrefix + 'toolbar').append(this.objects.counter = $(''));
$('#rwd-counter').css({'padding-left': '23px'});
break;
case 'view2':
case 'view4':
$('.' + this.settings.classPrefix + 'bar').append('').append(this.objects.counter = $(''));
break;
case 'view5':
$('.contInner').append(this.objects.counter = $(''));
break;
}
this.objects.counter.append(
this.objects.current = $('' + this.settings.sequence_info + ' ' + (parseInt(this.index, 10) + 1) + ' ' +
this.settings.sequenceInfo + ' ' + this.$items.length + '
')
);
}
};
Lightbox.prototype.setTitle = function (index) {
var $object = this, $title, $currentElement;
$currentElement = this.$items.eq(index);
$title = $currentElement.find('img').attr('alt') ||
$currentElement.find('img').attr('title') ||
this.settings.defaultTitle || '';
this.$cont.find('.' + this.settings.classPrefix + 'title').html('' + $title + '
');
(($object.settings.lightboxView === 'view2') && $('.rwd-title-text').css({'width': '100%'}));
if ($object.settings.lightboxView !== 'view1' && $object.settings.lightboxView !== 'view3' && $object.settings.lightboxView !== 'view4') {
($title === '' && $object.settings.socialSharing) ?
this.$cont.find('.' + this.settings.classPrefix + 'title').hide() :
this.$cont.find('.' + this.settings.classPrefix + 'title').show();
}
};
Lightbox.prototype.setDescription = function (index) {
var $object = this, $description, $currentElement;
$currentElement = this.$items.eq(index);
$description = $currentElement.find('img').attr('data-description') || '';
this.$cont.find('.' + this.settings.classPrefix + 'description').html('' + $description + '
');
};
Lightbox.prototype.preload = function (index) {
for (var i = 1; i <= this.settings.preload; i++) {
if (i >= this.$items.length - index) {
break;
}
this.loadContent(index + i, false, 0);
}
for (var j = 1; j <= this.settings.preload; j++) {
if (index - j < 0) {
break;
}
this.loadContent(index - j, false, 0);
}
};
Lightbox.prototype.socialShare = function () {
return false;
var $object = this;
var shareButtons = '';
if (this.settings.lightboxView === 'view5') {
$('.contInner').append(shareButtons);
} else {
$('.' + this.settings.classPrefix + 'socialIcons').append(shareButtons);
}
setTimeout(function () {
$('#rwd-share-facebook').attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-twitter').attr('href', 'https://twitter.com/intent/tweet?text=&url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-googleplus').attr('href', 'https://plus.google.com/share?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-pinterest').attr('href', 'http://www.pinterest.com/pin/create/button/?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-linkedin').attr('href', 'http://www.linkedin.com/shareArticle?mini=true&url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-tumblr').attr('href', 'http://www.tumblr.com/share/link?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-reddit').attr('href', 'http://reddit.com/submit?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-buffer').attr('href', 'https://bufferapp.com/add?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-digg').attr('href', 'http://www.digg.com/submit?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-vk').attr('href', 'http://vkontakte.ru/share.php?url=' + (encodeURIComponent(window.location.href)));
$('#rwd-share-yummly').attr('href', 'http://www.yummly.com/urb/verify?url=' + (encodeURIComponent(window.location.href)));
}, 200);
};
Lightbox.prototype.changeHash = function (index) {
var $object = this;
(($object.settings.socialSharing) && (window.location.hash = '/lightbox&slide=' + (index + 1)));
};
Lightbox.prototype.loadContent = function (index, rec, delay) {
var $object, src, isVideo;
$object = this;
function isImg() {
src = $object.$items.eq(index).attr('href');
return src.match(/\.(jpg|png|gif)\b/);
}
if ($object.settings.watermark) {
if (isImg()) {
src = $object.$items.eq(index).find('img').attr('data-src');
}
} else {
src = $object.$items.eq(index).attr('href');
}
isVideo = $object.isVideo(src, index);
if (!$object.$item.eq(index).hasClass($object.settings.classPrefix + 'loaded')) {
if (isVideo) {
$object.$item.eq(index).prepend('');
$object.$element.trigger('hasVideo.rwd-container', [index, src]);
} else {
$object.$item.eq(index).prepend('');
}
$object.$element.trigger('onAferAppendSlide.rwd-container', [index]);
$object.$item.eq(index).addClass($object.settings.classPrefix + 'loaded');
}
$object.$item.eq(index).find('.' + $object.settings.classPrefix + 'object').on('load.rwd-container error.rwd-container', function () {
var speed = 0;
if (delay) {
speed = delay;
}
setTimeout(function () {
$object.$item.eq(index).addClass($object.settings.classPrefix + 'complete');
}, speed);
});
if (rec === true) {
if (!$object.$item.eq(index).hasClass($object.settings.classPrefix + 'complete')) {
$object.$item.eq(index).find('.' + $object.settings.classPrefix + 'object').on('load.rwd-container error.rwd-container', function () {
$object.preload(index);
});
} else {
$object.preload(index);
}
}
};
Lightbox.prototype.slide = function (index, fromSlide, fromThumb) {
var $object, prevIndex;
$object = this;
prevIndex = this.$cont.find('.' + $object.settings.classPrefix + 'current').index();
var length = this.$item.length,
time = 0,
next = false,
prev = false;
if (this.settings.download) {
var src;
if (!this.settings.watermark) {
src = $object.$items.eq(index).attr('data-download-url') !== 'false' && ($object.$items.eq(index).attr('data-download-url') || $object.$items.eq(index).attr('href'));
}
else {
src = $object.$items.eq(index).find('img').attr('data-src');
}
if (src) {
$('#' + $object.settings.classPrefix + 'download').attr('href', src);
$object.$cont.removeClass($object.settings.classPrefix + 'hide-download');
$object.$cont.removeClass($object.settings.classPrefix + 'hide-actual-size');
$object.$cont.removeClass($object.settings.classPrefix + 'hide-fullwidth');
$object.$cont.removeClass($object.settings.classPrefix + 'hide-zoom-in');
$object.$cont.removeClass($object.settings.classPrefix + 'hide-zoom-out');
} else {
$object.$cont.addClass($object.settings.classPrefix + 'hide-download');
$object.$cont.addClass($object.settings.classPrefix + 'hide-actual-size');
$object.$cont.addClass($object.settings.classPrefix + 'hide-fullwidth');
$object.$cont.addClass($object.settings.classPrefix + 'hide-zoom-in');
$object.$cont.addClass($object.settings.classPrefix + 'hide-zoom-out');
}
}
this.$element.trigger('onBeforeSlide.rwd-container', [prevIndex, index, fromSlide, fromThumb]);
setTimeout(function () {
$object.setTitle(index);
}, time);
if ($object.settings.lightboxView === 'view5') {
setTimeout(function () {
$object.setDescription(index);
}, time);
}
this.arrowDisable(index);
$object.$cont.addClass($object.settings.classPrefix + 'no-trans');
this.$item.removeClass($object.settings.classPrefix + 'prev-slide ' + $object.settings.classPrefix + 'next-slide');
if (!fromSlide) {
if (index < prevIndex) {
prev = true;
if ((index === 0) && (prevIndex === length - 1) && !fromThumb) {
prev = false;
next = true;
}
} else if (index > prevIndex) {
next = true;
if ((index === length - 1) && (prevIndex === 0) && !fromThumb) {
prev = true;
next = false;
}
}
if (prev) {
this.$item.eq(index).addClass($object.settings.classPrefix + 'prev-slide');
this.$item.eq(prevIndex).addClass($object.settings.classPrefix + 'next-slide');
} else if (next) {
this.$item.eq(index).addClass($object.settings.classPrefix + 'next-slide');
this.$item.eq(prevIndex).addClass($object.settings.classPrefix + 'prev-slide');
}
setTimeout(function () {
$object.$item.removeClass($object.settings.classPrefix + 'current');
$object.$item.eq(index).addClass($object.settings.classPrefix + 'current');
$object.$cont.removeClass($object.settings.classPrefix + 'no-trans');
}, 50);
} else {
var slidePrev = index - 1;
var slideNext = index + 1;
if ((index === 0) && (prevIndex === length - 1)) {
slideNext = 0;
slidePrev = length - 1;
} else if ((index === length - 1) && (prevIndex === 0)) {
slideNext = 0;
slidePrev = length - 1;
}
this.$item.removeClass($object.settings.classPrefix + 'prev-slide ' + $object.settings.classPrefix + 'current ' + $object.settings.classPrefix + 'next-slide');
$object.$item.eq(slidePrev).addClass($object.settings.classPrefix + 'prev-slide');
$object.$item.eq(slideNext).addClass($object.settings.classPrefix + 'next-slide');
$object.$item.eq(index).addClass($object.settings.classPrefix + 'current');
}
$object.loadContent(index, true, $object.settings.overlayDuration);
$object.$element.trigger('onAfterSlide.rwd-container', [prevIndex, index, fromSlide, fromThumb]);
if (this.settings.showCounter) {
$('#' + $object.settings.classPrefix + 'counter-current').text(index + 1);
}
if (this.settings.socialSharing) {
$object.changeHash(index);
}
$object.calculateDimensions();
};
Lightbox.prototype.goToNextSlide = function (fromSlide) {
var $object = this,
$cont = $('.rwd-cont'),
$imageObject, k;
if (($object.index + 1) < $object.$item.length) {
$object.index++;
$object.slide($object.index, fromSlide, false);
} else {
if ($object.settings.loop) {
$object.index = 0;
$object.slide($object.index, fromSlide, false);
}
}
if ($object.settings.fullwidth && $cont.hasClass('rwd-fullwidth-on')) {
$imageObject = $cont.find('.rwd-image').eq($object.index);
k = $imageObject.width() / $imageObject.height();
if ($imageObject.width() > $imageObject.height() && k > 2) {
$imageObject.css({
'min-width': '100%'
});
} else {
$imageObject.css({
'min-height': '100%'
});
}
}
};
Lightbox.prototype.goToPrevSlide = function (fromSlide) {
var $object = this,
$cont = $('.rwd-cont'),
$imageObject, k;
if ($object.index > 0) {
$object.index--;
$object.slide($object.index, fromSlide, false);
} else {
if ($object.settings.loop) {
$object.index = $object.$items.length - 1;
$object.slide($object.index, fromSlide, false);
}
}
if ($object.settings.fullwidth && $cont.hasClass('rwd-fullwidth-on')) {
$imageObject = $cont.find('.rwd-image').eq($object.index);
k = $imageObject.width() / $imageObject.height();
if ($imageObject.width() > $imageObject.height() && k > 2) {
$imageObject.css({
'min-width': '100%'
});
} else {
$imageObject.css({
'min-height': '100%'
});
}
}
};
Lightbox.prototype.slideShow = function () {
var $object = this, $toolbar, $play_bg, $pause_bg;
$play_bg = '';
$pause_bg = '';
$toolbar = $('.' + $object.settings.classPrefix + 'toolbar');
switch (this.settings.lightboxView) {
case 'view1':
default:
$toolbar.append('' + $play_bg + $pause_bg + '');
break;
case 'view2':
$('.' + $object.settings.classPrefix + 'bar').append('' + $play_bg + $pause_bg + '');
break;
case 'view3':
$toolbar.append('' + $play_bg + $pause_bg + '');
$('.rwd-toolbar .rwd-icon').addClass('rwd-icon0');
break;
case 'view4':
$('' + $play_bg + $pause_bg + '').insertBefore($('.rwd-title'));
$('.rwd-toolbar .rwd-icon').addClass('rwd-icon0');
break;
}
if ($object.settings.slideshowAuto) {
$object.slideshowAuto();
}
$object.$cont.find('.' + $object.settings.classPrefix + 'autoplay-button').on('click.rwd-container', function () {
!$($object.$cont).hasClass($object.settings.classPrefix + 'show-autoplay') ? $object.startSlide() : $object.stopSlide();
});
};
Lightbox.prototype.slideshowAuto = function () {
var $object = this;
$object.$cont.addClass('' + $object.settings.classPrefix + 'show-autoplay');
$object.startSlide();
};
Lightbox.prototype.startSlide = function () {
var $object = this;
$object.$cont.addClass('' + $object.settings.classPrefix + 'show-autoplay');
$('.rwd-autoplay-button > .pause_bg').css({'display': 'inline-block'});
$('.rwd-autoplay-button > .play_bg').css({'display': 'none'});
$object.interval = setInterval(function () {
$object.goToNextSlide();
}, $object.settings.slideshowSpeed);
};
Lightbox.prototype.stopSlide = function () {
clearInterval(this.interval);
this.$cont.removeClass(this.settings.classPrefix + 'show-autoplay');
$('.rwd-autoplay-button > .pause_bg').css({'display': 'none'});
$('.rwd-autoplay-button > .play_bg').css({'display': 'inline-block'});
};
Lightbox.prototype.addKeyEvents = function () {
var $object = this;
if (this.$items.length > 1) {
$(window).on('keyup.rwd-container', function (e) {
if ($object.$items.length > 1) {
if (e.keyCode === 37) {
e.preventDefault();
$object.goToPrevSlide();
}
if (e.keyCode === 39) {
e.preventDefault();
$object.goToNextSlide();
}
}
});
}
$(window).on('keydown.rwd-container', function (e) {
if ($object.settings.escKey === true && e.keyCode === 27) {
e.preventDefault();
if (!$object.$cont.hasClass($object.settings.classPrefix + 'thumb-open')) {
$object.destroy();
} else {
$object.$cont.removeClass($object.settings.classPrefix + 'thumb-open');
}
}
});
};
Lightbox.prototype.arrow = function () {
var $object = this;
this.$cont.find('.' + $object.settings.classPrefix + 'prev').on('click.rwd-container', function () {
$object.goToPrevSlide();
});
this.$cont.find('.' + $object.settings.classPrefix + 'next').on('click.rwd-container', function () {
$object.goToNextSlide();
});
};
Lightbox.prototype.arrowDisable = function (index) {
if (!this.settings.loop && this.settings.hideControlOnEnd) {
if ((index + 1) < this.$item.length) {
this.$cont.find('.' + this.settings.classPrefix + 'next').removeAttr('disabled').removeClass('disabled');
} else {
this.$cont.find('.' + this.settings.classPrefix + 'next').attr('disabled', 'disabled').addClass('disabled');
}
if (index > 0) {
this.$cont.find('.' + this.settings.classPrefix + 'prev').removeAttr('disabled').removeClass('disabled');
} else {
this.$cont.find('.' + this.settings.classPrefix + 'prev').attr('disabled', 'disabled').addClass('disabled');
}
}
};
Lightbox.prototype.setTranslate = function ($element, xValue, yValue) {
if (!this.settings.slideAnimation) {
$element.css('left', xValue);
} else {
$element.css({
transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)'
});
}
};
Lightbox.prototype.mousewheel = function () {
var $object = this, delta;
$object.$cont.on('mousewheel', function (e) {
e = e || window.event;
delta = e.deltaY || e.detail || e.wheelDelta;
(delta > 0) ? $object.goToNextSlide() : $object.goToPrevSlide();
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
});
};
Lightbox.prototype.closeGallery = function () {
var $object = this, mousedown = false;
this.$cont.find('.' + $object.settings.classPrefix + 'close').on('click.rwd-container', function () {
$object.destroy();
});
if ($object.settings.overlayClose) {
$object.$cont.on('mousedown.rwd-container', function (e) {
mousedown = ($(e.target).is('.' + $object.settings.classPrefix + 'cont') || $(e.target).is('.' + $object.settings.classPrefix + 'item ') || $(e.target).is('.' + $object.settings.classPrefix + 'img-wrap'));
});
$object.$cont.on('mouseup.rwd-container', function (e) {
if ($(e.target).is('.contInner') || $(e.target).is('.' + $object.settings.classPrefix + 'cont') || $(e.target).is('.' + $object.settings.classPrefix + 'item ') || $(e.target).is('.' + $object.settings.classPrefix + 'img-wrap') && mousedown) {
if (!$object.$cont.hasClass($object.settings.classPrefix + 'dragEvent')) {
$object.destroy();
}
}
});
}
};
Lightbox.prototype.destroy = function (d) {
var $object = this;
clearInterval($object.interval);
$object.$body.removeClass($object.settings.classPrefix + 'on');
$(window).scrollTop($object.prevScrollTop);
if (d) {
$.removeData($object.el, 'lightbox');
}
($object.settings.socialSharing && (window.location.hash = ''));
this.$element.off('.rwd-container.tm');
$(window).off('.rwd-container');
if ($object.$cont) {
$object.$cont.removeClass($object.settings.classPrefix + 'visible');
}
$object.objects.overlay.removeClass('in');
setTimeout(function () {
if ($object.$cont) {
$object.$cont.remove();
}
$object.objects.overlay.remove();
}, $object.settings.overlayDuration + 50);
window.scrollTo(0, $object.$_y_);
};
$.fn.lightbox = function (options) {
return this.each(function () {
if (!$.data(this, 'lightbox')) {
$.data(this, 'lightbox', new Lightbox(this, options));
}
});
};
$.fn.lightbox.lightboxModul = {};
var Modul = function (element) {
this.core = $(element).data('lightbox');
this.$element = $(element);
this.core.modulSettings = $.extend({}, this.constructor.defaultsModul);
this.init();
if (this.core.modulSettings.zoom && this.core.effectsSupport()) {
this.initZoom();
this.zoomabletimeout = false;
this.pageX = $(window).width() / 2;
this.pageY = ($(window).height() / 2) + $(window).scrollTop();
}
if (this.core.modulSettings.fullwidth && this.core.effectsSupport()) {
this.initFullWidth();
}
return this;
};
Modul.defaultsModul = {
idPrefix: 'rwd-',
classPrefix: 'rwd-',
attrPrefix: 'data-',
videoMaxWidth: gallery_resp_lightbox_obj.gallery_img_lightbox_videoMaxWidth, //Assigned with line 34
//videoMaxHeight: '100%',
youtubePlayerParams: false,
vimeoPlayerParams: false,
fullwidth: gallery_resp_lightbox_obj.gallery_img_lightbox_fullwidth_effect,
zoom: gallery_resp_lightbox_obj.gallery_img_lightbox_zoom,
scale: +gallery_resp_lightbox_obj.gallery_img_lightbox_zoomsize / 10
};
Modul.prototype.init = function () {
var $object = this;
$object.core.$element.on('hasVideo.rwd-container.tm', function (event, index, src) {
$object.core.$item.eq(index).find('.' + $object.core.modulSettings.classPrefix + 'video').append($object.loadVideo(src, '' + $object.core.modulSettings.classPrefix + 'object', index));
});
$object.core.$element.on('onAferAppendSlide.rwd-container.tm', function (event, index) {
$object.core.$item.eq(index).find('.' + $object.core.settings.classPrefix + 'video-cont').css({
'max-width': $object.core.modulSettings.videoMaxWidth + 'px'
//'max-height' : $object.core.modulSettings.videoMaxHeight
});
});
$object.core.$element.on('onBeforeSlide.rwd-container.tm', function (event, prevIndex, index) {
var $videoSlide = $object.core.$item.eq(prevIndex),
youtubePlayer = $videoSlide.find('.rwd-youtube').get(0),
vimeoPlayer = $videoSlide.find('.rwd-vimeo').get(0);
if (youtubePlayer) {
youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
} else if (vimeoPlayer) {
try {
$f(vimeoPlayer).api('pause');
} catch (e) {
console.error('Make sure you have included froogaloop2 js');
}
}
var src;
src = $object.core.$items.eq(index).attr('href');
var isVideo = $object.core.isVideo(src, index) || {};
if (isVideo.youtube || isVideo.vimeo) {
$object.core.$cont.addClass($object.core.modulSettings.classPrefix + 'hide-download');
$object.core.$cont.addClass($object.core.modulSettings.classPrefix + 'hide-actual-size');
$object.core.$cont.addClass($object.core.modulSettings.classPrefix + 'hide-fullwidth');
$object.core.$cont.addClass($object.core.modulSettings.classPrefix + 'hide-zoom-in');
$object.core.$cont.addClass($object.core.modulSettings.classPrefix + 'hide-zoom-out');
}
});
$object.core.$element.on('onAfterSlide.rwd-container.tm', function (event, prevIndex) {
$object.core.$item.eq(prevIndex).removeClass($object.core.modulSettings.classPrefix + 'video-playing');
});
};
Modul.prototype.loadVideo = function (src, addClass, index) {
var video = '',
autoplay = 0,
a = '',
isVideo = this.core.isVideo(src, index) || {};
if (isVideo.youtube) {
a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';
if (this.core.modulSettings.youtubePlayerParams) {
a = a + '&' + $.param(this.core.modulSettings.youtubePlayerParams);
}
video = '';
} else if (isVideo.vimeo) {
a = '?autoplay=' + autoplay + '&api=1';
if (this.core.modulSettings.vimeoPlayerParams) {
a = a + '&' + $.param(this.core.modulSettings.vimeoPlayerParams);
}
video = '';
}
return video;
};
Modul.prototype.initFullWidth = function () {
var $object = this,
$fullWidth, $fullWidthOn;
$fullWidth = '';
$fullWidthOn = '';
if (this.core.modulSettings.fullwidth) {
var fullwidth = '' + $fullWidth + $fullWidthOn + '';
switch (gallery_resp_lightbox_obj.gallery_img_lightbox_lightboxView) {
case 'view1':
default:
this.core.$cont.find('.rwd-toolbar').append(fullwidth);
break;
case 'view2':
this.core.$cont.find('.rwd-bar').append(fullwidth);
break;
case 'view4':
$(fullwidth).insertBefore('.rwd-title');
break;
}
}
if (this.core.modulSettings.fullwidth) {
$('.rwd-fullwidth').on('click.rwd-container', function () {
!$('.rwd-cont').hasClass('rwd-fullwidth-on') ? $object.onFullWidth() : $object.offFullWidth();
});
}
};
Modul.prototype.onFullWidth = function () {
var $imageObject = this.core.$cont.find('.rwd-current .rwd-image');
$('#rwd-fullwidth').css({'display': 'none'});
$('#rwd-fullwidth_on').css({'display': 'inline-block'});
$('.rwd-cont').addClass('rwd-fullwidth-on');
$('.rwd-container').css({
width: '100%',
height: '100%'
});
var k = $imageObject.width() / $imageObject.height();
if ($imageObject.width() > $imageObject.height() && k > 2) {
$imageObject.css({
'min-width': '100%'
});
} else {
$imageObject.css({
'min-height': '100%'
});
}
};
Modul.prototype.offFullWidth = function () {
var $imageObject = this.core.$cont.find('.rwd-current .rwd-image');
$('#rwd-fullwidth').css({'display': 'inline-block'});
$('#rwd-fullwidth_on').css({'display': 'none'});
$('.rwd-cont').removeClass('rwd-fullwidth-on');
$('.rwd-container').css({
width: gallery_resp_lightbox_obj.gallery_img_lightbox_width_new + '%',
height: gallery_resp_lightbox_obj.gallery_img_lightbox_height_new + '%'
});
$imageObject.css({
'min-width': '',
'min-height': ''
});
};
Modul.prototype.initZoom = function () {
var $object = this, zoomIcons,
$zoomIn, $zoomOut, scale;
$zoomIn = '';
$zoomOut = '';
zoomIcons = '' + $zoomOut + '' + $zoomIn + '';
switch (gallery_resp_lightbox_obj.gallery_img_lightbox_lightboxView) {
case 'view1':
default:
this.core.$cont.find('.rwd-toolbar').append(zoomIcons);
break;
case 'view2':
this.core.$cont.find('.rwd-bar').append(zoomIcons);
break;
case 'view4':
$(zoomIcons).insertBefore('.rwd-title');
break;
}
scale = 1;
function zoom(scaleVal) {
var $imageObject, _x, _y, offsetX, offsetY, x, y;
$imageObject = $object.core.$cont.find('.rwd-current .rwd-image');
offsetX = ($(window).width() - $imageObject.width()) / 2;
offsetY = (($(window).height() - $imageObject.height()) / 2) + $(window).scrollTop();
_x = $object.pageX - offsetX;
_y = $object.pageY - offsetY;
x = _x;
y = _y;
$imageObject.css('transform', 'scale3d(' + scaleVal + ', ' + scaleVal + ', 1)').attr('data-scale', scaleVal);
$imageObject.parent().css({
transform: 'translate3d(0, ' + -y + 'px, 0)'
}).attr('data-y', -y);
}
function callScale() {
if (scale > 1) {
$object.core.$cont.addClass('rwd-zoomed');
} else {
$object.core.$cont.removeClass('rwd-zoomed');
}
if (scale < 1) {
scale = 1;
}
zoom(scale);
}
$(window).on('resize.rwd.zoom scroll.rwd.zoom orientationchange.rwd.zoom', function () {
$object.pageX = $(window).width() / 2;
$object.pageY = ($(window).height() / 2) + $(window).scrollTop();
zoom(scale);
});
$('#rwd-zoom-out').on('click.rwd-container', function () {
if ($object.core.$cont.find('.rwd-current .rwd-image').length) {
scale -= $object.core.modulSettings.scale;
callScale();
}
});
$('#rwd-zoom-in').on('click.rwd-container', function () {
if ($object.core.$cont.find('.rwd-current .rwd-image').length) {
scale += $object.core.modulSettings.scale;
callScale();
}
});
if (gallery_resp_lightbox_obj.gallery_img_lightbox_zoomlogo !== '0') {
$object.core.$cont.dblclick(function () {
if (!$object.core.$cont.hasClass('dbl-zoomed')) {
$object.core.$cont.addClass('dbl-zoomed');
if ($object.core.$cont.find('.rwd-current .rwd-image').length) {
scale += $object.core.modulSettings.scale;
callScale();
}
} else {
$object.core.$cont.removeClass('dbl-zoomed');
if ($object.core.$cont.find('.rwd-current .rwd-image').length) {
scale -= $object.core.modulSettings.scale;
callScale();
}
}
});
}
if (!('ontouchstart' in document.documentElement)) {
$object.zoomDrag();
}
if (('ontouchstart' in document.documentElement)) {
$object.zoomSwipe();
}
};
Modul.prototype.touchendZoom = function (startCoords, endCoords, abscissa, ordinate) {
var $object = this, _$el, $imageObject, distanceX, distanceY, maxX, maxY;
_$el = $object.core.$item.eq($object.core.index).find('.rwd-img-wrap');
$imageObject = $object.core.$item.eq($object.core.index).find('.rwd-object');
maxX = Math.abs($imageObject.outerWidth() * Math.abs($imageObject.attr('data-scale')) - $object.core.$cont.find('.rwd-container').width()) / 2;
maxY = Math.abs($imageObject.outerHeight() * Math.abs($imageObject.attr('data-scale')) - $object.core.$cont.find('.rwd-container').height()) / 2 + $(window).scrollTop();
if (_$el.attr('data-x')) {
distanceX = +_$el.attr('data-x') + (endCoords.x - startCoords.x);
} else {
distanceX = endCoords.x - startCoords.x;
}
distanceY = +_$el.attr('data-y') + (endCoords.y - startCoords.y);
if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
if (abscissa) {
if (endCoords.x - startCoords.x < 0) {
if(distanceX <= -maxX){
distanceX = -maxX;
}
} else {
if(distanceX >= maxX) {
distanceX = maxX;
}
}
_$el.attr('data-x', distanceX);
}
if (ordinate) {
if (endCoords.y - startCoords.y < 0) {
if(distanceY <= -(maxY + ($object.pageY - ($(window).height() - $imageObject.height()) / 2)) + 2 * $(window).scrollTop()) {
distanceY = -(maxY + ($object.pageY - ($(window).height() - $imageObject.height()) / 2)) + 2 * $(window).scrollTop();
}
} else {
if(distanceY >= maxY - ($object.pageY - ($(window).height() - $imageObject.height()) / 2)) {
distanceY = maxY - ($object.pageY - ($(window).height() - $imageObject.height()) / 2);
}
}
_$el.attr('data-y', distanceY);
}
_$el.css({
transform: 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'
});
}
};
Modul.prototype.zoomDrag = function () {
var $object = this;
var startCoords = {};
var endCoords = {};
var isDraging = false;
var isMoved = false;
var abscissa = false;
var ordinate = false;
$object.core.$item.on('mousedown.rwd.zoom', function (e) {
var $imageObject = $object.core.$item.eq($object.core.index).find('.rwd-object');
ordinate = $imageObject.outerHeight() * $imageObject.attr('data-scale') > $object.core.$cont.find('.rwd-container').height();
abscissa = $imageObject.outerWidth() * $imageObject.attr('data-scale') > $object.core.$cont.find('.rwd-container').width();
if ($object.core.$cont.hasClass('rwd-zoomed')) {
if ($(e.target).hasClass('rwd-object') && (abscissa || ordinate)) {
e.preventDefault();
startCoords = {
x: e.pageX,
y: e.pageY
};
isDraging = true;
$object.core.$cont.scrollLeft += 1;
$object.core.$cont.scrollLeft -= 1;
$object.core.$cont.removeClass('rwd-grab').addClass('rwd-grabbing');
}
}
});
$(window).on('mousemove.rwd.zoom', function (e) {
if (isDraging) {
var _$el = $object.core.$item.eq($object.core.index).find('.rwd-img-wrap');
var distanceX;
var distanceY;
isMoved = true;
endCoords = {
x: e.pageX,
y: e.pageY
};
$object.core.$cont.addClass('rwd-zoom-dragging');
if (_$el.attr('data-x')) {
distanceX = +_$el.attr('data-x') + (endCoords.x - startCoords.x);
} else {
distanceX = endCoords.x - startCoords.x;
}
if (ordinate) {
distanceY = +_$el.attr('data-y') + (endCoords.y - startCoords.y);
}
_$el.css({
transform: 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'
});
}
});
$(window).on('mouseup.rwd.zoom', function (e) {
if (isDraging) {
isDraging = false;
$object.core.$cont.removeClass('rwd-zoom-dragging');
if (isMoved && ((startCoords.x !== endCoords.x) || (startCoords.y !== endCoords.y))) {
endCoords = {
x: e.pageX,
y: e.pageY
};
$object.touchendZoom(startCoords, endCoords, abscissa, ordinate);
}
isMoved = false;
}
$object.core.$cont.removeClass('rwd-grabbing').addClass('rwd-grab');
});
};
Modul.prototype.zoomSwipe = function () {
var $object = this;
var startCoords = {};
var endCoords = {};
var isMoved = false;
var abscissa = false;
var ordinate = false;
$object.core.$item.on('touchstart.rwd-container', function (e) {
if ($object.core.$cont.hasClass('rwd-zoomed')) {
var $imageObject = $object.core.$item.eq($object.core.index).find('.rwd-object');
ordinate = $imageObject.outerHeight() * $imageObject.attr('data-scale') > $object.core.$cont.find('.rwd-container').height();
abscissa = $imageObject.outerWidth() * $imageObject.attr('data-scale') > $object.core.$cont.find('.rwd-container').width();
if ((abscissa || ordinate)) {
e.preventDefault();
startCoords = {
x: e.originalEvent.targetTouches[0].pageX,
y: e.originalEvent.targetTouches[0].pageY
};
}
}
});
$object.core.$item.on('touchmove.rwd-container', function (e) {
if ($object.core.$cont.hasClass('rwd-zoomed')) {
var _$el = $object.core.$item.eq($object.core.index).find('.rwd-img-wrap');
var distanceX;
var distanceY;
e.preventDefault();
isMoved = true;
endCoords = {
x: e.originalEvent.targetTouches[0].pageX,
y: e.originalEvent.targetTouches[0].pageY
};
$object.core.$cont.addClass('rwd-zoom-dragging');
if (_$el.attr('data-x')) {
distanceX = +_$el.attr('data-x') + (endCoords.x - startCoords.x);
} else {
distanceX = endCoords.x - startCoords.x;
}
if (ordinate) {
distanceY = +_$el.attr('data-y') + (endCoords.y - startCoords.y);
}
if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
_$el.css({
transform: 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'
});
}
}
});
$object.core.$item.on('touchend.rwd-container', function () {
if ($object.core.$cont.hasClass('rwd-zoomed')) {
if (isMoved) {
isMoved = false;
$object.core.$cont.removeClass('rwd-zoom-dragging');
$object.touchendZoom(startCoords, endCoords, abscissa, ordinate);
}
}
});
};
Modul.prototype.destroy = function () {
var $object = this;
$object.core.$element.off('.rwd.zoom');
$(window).off('.rwd.zoom');
$object.core.$item.off('.rwd.zoom');
$object.core.$element.off('.rwd.tm.zoom');
$object.core.$cont.removeClass('rwd-zoomed');
clearTimeout($object.zoomabletimeout);
$object.zoomabletimeout = false;
};
$.fn.lightbox.lightboxModul.modul = Modul;
var WaterMark = function (element) {
this.element = element;
this.settings = $.extend({}, this.constructor.defaults);
this.init();
};
WaterMark.defaults = {
imgSrc: gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_img_src_new,
text: gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_text,
textColor: '#' + gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_textColor,
textFontSize: +gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_textFontSize,
containerBackground: gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_container_bg_color,
containerWidth: +gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_containerWidth,
position: 'pos' + gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_position_new,
opacity: +gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_opacity / 100,
margin: +gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_margin,
done: function (imgURL) {
this.dataset.src = imgURL;
}
};
WaterMark.prototype.init = function () {
var $object = this,
$elem = $object.element,
$settings = $object.settings,
wmData = {},
imageData = {};
var WatermarkImage = jQuery('
');
WatermarkImage.attr('src', $object.settings.imgSrc);
WatermarkImage.css('display', 'none').attr('id', 'huge_it_watermark_img_sample');
if (!jQuery('body').find('#huge_it_watermark_img_sample').length) {
jQuery('body').append(WatermarkImage);
}
wmData = {
imgurl: $settings.imgSrc,
type: 'jpeg'
};
imageData = {
imgurl: $elem.dataset.imgsrc
};
var defer = $.Deferred();
$.when(defer).done(function (imgObj) {
imageData.$wmObject = imgObj;
$object.imgurltodata(imageData, function (dataURL) {
$settings.done.call($elem, dataURL);
});
});
if ($settings.text !== '') {
wmData.imgurl = $object.textwatermark();
}
$object.imgurltodata(wmData, function (imgObj) {
defer.resolve(imgObj);
});
};
WaterMark.prototype.textwatermark = function () {
var $object = this,
$settings,
canvas,
context,
$width,
$height;
$settings = $object.settings;
canvas = document.createElement('canvas');
context = canvas.getContext('2d');
$width = $settings.containerWidth;
$height = $settings.textFontSize;
canvas.width = $width;
canvas.height = $height;
context.fillStyle = $settings.containerBackground;
context.fillRect(0, 0, $width, $height);
context.fillStyle = $settings.textColor;
context.textAlign = 'center';
context.font = '500 ' + $settings.textFontSize + 'px Sans-serif';
context.fillText($settings.text, ($width / 2), ($height - 5));
return canvas.toDataURL();
};
WaterMark.prototype.imgurltodata = function (data, callback) {
var $object = this,
$settings = $object.settings,
img;
img = new Image();
img.setAttribute('crossOrigin', 'anonymous');
img.onload = function () {
var canvas = document.createElement('canvas'),
context = canvas.getContext('2d'),
$imgWidth = this.width,
$imgHeight = this.height;
if (data.$wmObject) {
if (data.width !== 'auto' && data.height === 'auto' && data.width < $imgWidth) {
$imgHeight = $imgHeight / $imgWidth * data.width;
$imgWidth = data.width;
} else if (data.width === 'auto' && data.height !== 'auto' && data.height < $imgHeight) {
$imgWidth = $imgWidth / $imgHeight * data.height;
$imgHeight = data.height;
} else if (data.width !== 'auto' && data.height !== 'auto' && data.width < $imgWidth && data.height < $imgHeight) {
$imgWidth = data.width;
$imgHeight = data.height;
}
}
canvas.width = $imgWidth;
canvas.height = $imgHeight;
/*if (data.type === 'jpeg') {
context.fillStyle = '#ffffff';
context.fillRect(0, 0, $imgWidth, $imgHeight);
}*/
context.drawImage(this, 0, 0, $imgWidth, $imgHeight);
if (data.$wmObject) {
var $opacity = +gallery_resp_lightbox_obj.gallery_img_lightbox_watermark_containerOpacity / 100;
if ($opacity >= 0 && $opacity <= 1) {
//context.globalAlpha = $settings.opacity;
context.globalAlpha = $opacity;
}
var $wmWidth,
$wmHeight,
pos = $settings.margin,
$x, $y;
if ($settings.text !== '') {
$wmWidth = data.$wmObject.width;
$wmHeight = data.$wmObject.height;
}
else {
$wmWidth = $settings.containerWidth;
$wmHeight = (jQuery('img#huge_it_watermark_img_sample').prop('naturalHeight') * $wmWidth) / jQuery('img#huge_it_watermark_img_sample').prop('naturalWidth');
}
switch ($settings.position) {
case 'pos1':
$x = pos;
$y = pos;
break;
case 'pos2':
$x = $imgWidth / 2 - $wmWidth / 2;
$y = pos;
break;
case 'pos3':
$x = $imgWidth - $wmWidth - pos;
$y = pos;
break;
case 'pos4':
$x = pos;
$y = $imgHeight / 2 - $wmHeight / 2;
break;
case 'pos5':
$x = $imgWidth / 2 - $wmWidth / 2;
$y = $imgHeight / 2 - $wmHeight / 2;
break;
case 'pos6':
$x = $imgWidth - $wmWidth - pos;
$y = $imgHeight / 2 - $wmHeight / 2;
break;
case 'pos7':
$x = pos;
$y = $imgHeight - $wmHeight - pos;
break;
case 'pos8':
$x = $imgWidth / 2 - $wmWidth / 2;
$y = $imgHeight - $wmHeight - pos;
break;
case 'pos9':
$x = $imgWidth - $wmWidth - pos;
$y = $imgHeight - $wmHeight - pos;
break;
default:
$x = $imgWidth - $wmWidth - pos;
$y = $imgHeight - $wmHeight - pos;
}
context.drawImage(data.$wmObject, $x, $y, $wmWidth, $wmHeight);
}
var dataURL = canvas.toDataURL('image/' + data.type);
if (typeof callback === 'function') {
if (data.$wmObject) {
callback(dataURL);
} else {
var $wmNew = new Image();
$wmNew.src = dataURL;
callback($wmNew);
}
}
canvas = null;
};
img.src = data.imgurl;
};
$.fn['watermark'] = function () {
return this.each(function () {
if (!$.data(this, 'watermark')) {
$.data(this, 'watermark', new WaterMark(this));
}
});
};
})(jQuery);