(function($, window){
'use strict';
window.NggTikTokVideo=window.NggTikTokVideo||{};
let linkHandlersInitialized=false;
const galleryIdCache=new Map();
const DEFAULT_DIMENSIONS={ width: 480, height: 854 };
const ASPECT_RATIO=9 / 16;
const MAX_DEPTH=15;
const INIT_DELAY=100;
NggTikTokVideo.getTikTokSettings=(galleryId)=> {
if(!window.ngg_tiktok_gallery_settings){
window.ngg_tiktok_gallery_settings={
global: {
link: '0',
link_target: '0'
}};}
const settings=window.ngg_tiktok_gallery_settings;
const galleryIdStr=galleryId ? String(galleryId):null;
if(galleryIdStr&&settings[`gallery_${galleryIdStr}`]){
const gallerySettings=settings[`gallery_${galleryIdStr}`];
if(gallerySettings&&(gallerySettings.link!==undefined||gallerySettings.link_target!==undefined)){
return {
link: String(gallerySettings.link ?? '0'),
link_target: String(gallerySettings.link_target ?? '0')
};}}
const globalSettings=settings.global||{};
return {
link: String(globalSettings.link||'0'),
link_target: String(globalSettings.link_target||'0')
};};
const findGalleryId=($anchor, imageId)=> {
const cacheKey=imageId||$anchor[0];
const cachedResult=galleryIdCache.get(cacheKey);
if(cachedResult){
return cachedResult;
}
let $galleryContainer=null;
let galleryId=null;
$galleryContainer=$anchor.closest('[data-gallery-id]');
if($galleryContainer.length){
galleryId=$galleryContainer.attr('data-gallery-id')||$galleryContainer.data('gallery-id');
}
if(!galleryId){
$galleryContainer=$anchor.closest('.ngg-galleryoverview, .ngg-imagebrowser, .ngg-slideshow');
if($galleryContainer.length){
galleryId=$galleryContainer.attr('data-gallery-id') ||
$galleryContainer.data('gallery-id') ||
$galleryContainer.attr('data-nextgen-gallery-id') ||
$galleryContainer.data('nextgen-gallery-id');
}}
if(!galleryId){
let $current=$anchor;
let depth=0;
while (depth < MAX_DEPTH&&$current.length){
if($current.is('[data-gallery-id]')){
galleryId=$current.attr('data-gallery-id')||$current.data('gallery-id');
$galleryContainer=$current;
break;
}
const $sibling=$current.siblings('[data-gallery-id]').first();
if($sibling.length){
galleryId=$sibling.attr('data-gallery-id')||$sibling.data('gallery-id');
$galleryContainer=$sibling;
break;
}
$current=$current.parent();
depth++;
}}
if(!galleryId&&imageId){
const $allContainers=$('[data-gallery-id]');
$allContainers.each(function(){
const $container=$(this);
if($container.find($anchor).length > 0){
galleryId=$container.attr('data-gallery-id')||$container.data('gallery-id');
$galleryContainer=$container;
return false;
}});
}
const result={
galleryId: galleryId ? String(galleryId):null,
$galleryContainer
};
galleryIdCache.set(cacheKey, result);
return result;
};
const getTikTokDataFromAnchor=($anchor, imageId)=> {
if(imageId&&window.ngg_tiktok_images?.[imageId]){
return window.ngg_tiktok_images[imageId];
}
const playUrl=$anchor.attr('data-tiktok-play-url');
const shareUrl=$anchor.attr('data-tiktok-share-url');
const embedUrl=$anchor.attr('data-tiktok-embed-url');
if(playUrl||shareUrl||embedUrl){
return {
playUrl: playUrl||'',
shareUrl: shareUrl||'',
embedUrl: embedUrl||''
};}
return null;
};
const handleTikTokLinkClick=(e)=> {
const anchor=e.target.closest('a[data-image-id]');
if(!anchor){
return;
}
const $anchor=$(anchor);
const imageId=$anchor.attr('data-image-id');
const tiktokData=getTikTokDataFromAnchor($anchor, imageId);
if(!tiktokData){
return;
}
const { galleryId }=findGalleryId($anchor, imageId);
const tiktokSettings=NggTikTokVideo.getTikTokSettings(galleryId);
const linkSetting=String(tiktokSettings.link||'0');
const linkTarget=String(tiktokSettings.link_target||'0');
if(linkSetting!=='1'&&linkSetting!=='2'){
return;
}
if(linkSetting==='1'&&!tiktokData.shareUrl){
return;
}
if(linkSetting==='2'&&!tiktokData.embedUrl&&!tiktokData.shareUrl){
return;
}
e.preventDefault();
e.stopPropagation();
const openNewTab=linkTarget==='1'||linkTarget==='_blank';
let targetUrl='';
if(linkSetting==='1'){
targetUrl=tiktokData.shareUrl||'';
}else if(linkSetting==='2'){
targetUrl=tiktokData.embedUrl||tiktokData.shareUrl||'';
}
if(targetUrl){
if(openNewTab){
window.open(targetUrl, '_blank', 'noopener,noreferrer');
}else{
window.location.href=targetUrl;
}}
};
NggTikTokVideo.initLinkHandlers=()=> {
if(linkHandlersInitialized){
return;
}
linkHandlersInitialized=true;
document.addEventListener('click', handleTikTokLinkClick, true);
};
NggTikTokVideo.isTikTokImage=(element)=> {
const $el=$(element);
const $anchor=$el.is('a') ? $el:$el.closest('a');
if($anchor.attr('data-ngg-tiktok-source')==='true'){
return true;
}
const imageId=$anchor.attr('data-image-id');
if(imageId&&window.ngg_tiktok_images?.[imageId]){
const $galleryContainer=$anchor.closest('[data-gallery-id]');
const galleryId=$galleryContainer.length ? $galleryContainer.attr('data-gallery-id'):null;
const settings=NggTikTokVideo.getTikTokSettings(galleryId);
return String(settings.link||'0')==='0';
}
return false;
};
NggTikTokVideo.getTikTokData=(element)=> {
const $el=$(element);
const $anchor=$el.is('a') ? $el:$el.closest('a');
const playUrl=$anchor.attr('data-ngg-tiktok-play-url');
const shareUrl=$anchor.attr('data-ngg-tiktok-share-url');
const embedUrl=$anchor.attr('data-ngg-tiktok-embed-url');
const tiktokId=$anchor.attr('data-ngg-tiktok-id');
if(playUrl||shareUrl||embedUrl){
return {
tiktokId: tiktokId||'',
playUrl: playUrl||'',
shareUrl: shareUrl||'',
embedUrl: embedUrl||'',
linkSetting: '0'
};}
const imageId=$anchor.attr('data-image-id');
if(imageId&&window.ngg_tiktok_images?.[imageId]){
return window.ngg_tiktok_images[imageId];
}
return null;
};
NggTikTokVideo.getVideoUrl=(tiktokData)=> {
if(!tiktokData){
return '';
}
if(tiktokData.playUrl?.length > 0){
return tiktokData.playUrl;
}
if(tiktokData.shareUrl?.length > 0){
return tiktokData.shareUrl;
}
return '';
};
NggTikTokVideo.getEmbedUrl=(tiktokData)=> {
if(!tiktokData){
return '';
}
if(tiktokData.embedUrl){
return tiktokData.embedUrl;
}
if(tiktokData.shareUrl){
const match=tiktokData.shareUrl.match(/video\/(\d+)/);
if(match?.[1]){
return `https://www.tiktok.com/embed/v2/${match[1]}`;
}}
return '';
};
const createErrorMessage=(message)=> {
return $('<div class="ngg-tiktok-error"></div>')
.text(message)
.css({
color: '#fff',
textAlign: 'center',
padding: '20px'
});
};
const createVideoElement=(videoUrl, autoplay, onReady, onError)=> {
const $video=$('<video></video>').attr({
src: videoUrl,
controls: true,
autoplay: autoplay,
playsinline: true,
preload: 'auto'
}).css({
width: '100%',
height: '100%',
objectFit: 'contain'
});
$video.on('loadeddata', ()=> {
onReady($video[0]);
});
$video.on('error', ()=> {
$video.remove();
onError(new Error('Video failed to load'));
});
return $video;
};
NggTikTokVideo.createPlayer=(options={})=> {
const {
tiktokData,
width=DEFAULT_DIMENSIONS.width,
height=DEFAULT_DIMENSIONS.height,
autoplay=true,
onReady=()=> {},
onError=()=> {}}=options;
const $container=$('<div class="ngg-tiktok-video-container"></div>').css({
position: 'relative',
width,
height,
maxWidth: '100%',
maxHeight: '100%',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
});
const videoUrl=NggTikTokVideo.getVideoUrl(tiktokData);
if(videoUrl&&videoUrl.includes('tiktokcdn.com')){
const $video=createVideoElement(videoUrl, autoplay, onReady, (error)=> {
$container.append(createErrorMessage('Video failed to load'));
onError(error);
});
$container.append($video);
}else{
$container.append(createErrorMessage('Video not available'));
onError(new Error('No video URL available'));
}
return $container;
};
NggTikTokVideo._createEmbedPlayer=($container, embedUrl, width, height, autoplay, onReady, onError)=> {
$container.empty();
if(!embedUrl){
$container.append(createErrorMessage('Video not available'));
onError(new Error('No embed URL available'));
return;
}
const url=autoplay
? `${embedUrl}${embedUrl.includes('?') ? '&':'?'}autoplay=1`
: embedUrl;
const $iframe=$('<iframe></iframe>').attr({
src: url,
frameborder: '0',
allowfullscreen: true,
allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'
}).css({
width: '100%',
height: '100%',
border: 'none'
});
$iframe.on('load', ()=> {
onReady($iframe[0]);
});
$iframe.on('error', ()=> {
onError(new Error('Failed to load TikTok embed'));
});
$container.append($iframe);
};
NggTikTokVideo.replaceImageWithVideo=(imageElement, options={})=> {
const $image=$(imageElement);
const $anchor=$image.closest('a');
const tiktokData=options.tiktokData||NggTikTokVideo.getTikTokData($anchor);
if(!tiktokData){
return null;
}
const width=options.width||$image.width()||DEFAULT_DIMENSIONS.width;
const height=options.height||$image.height()||DEFAULT_DIMENSIONS.height;
const playerOptions={
...options,
tiktokData,
width,
height
};
const $player=NggTikTokVideo.createPlayer(playerOptions);
$image.replaceWith($player);
return $player;
};
NggTikTokVideo.createLightboxPlayer=(tiktokData, lightboxOptions={})=> {
const {
maxWidth=window.innerWidth * 0.8,
maxHeight=window.innerHeight * 0.9,
onReady,
onError
}=lightboxOptions;
let width, height;
if(maxHeight * ASPECT_RATIO <=maxWidth){
height=maxHeight;
width=height * ASPECT_RATIO;
}else{
width=maxWidth;
height=width / ASPECT_RATIO;
}
return NggTikTokVideo.createPlayer({
tiktokData,
width: Math.round(width),
height: Math.round(height),
autoplay: true,
onReady,
onError
});
};
NggTikTokVideo.destroyPlayer=($container)=> {
if(!$container?.length){
return;
}
const $video=$container.find('video');
if($video.length){
$video[0].pause();
$video.attr('src', '');
}
const $iframe=$container.find('iframe');
if($iframe.length){
$iframe.attr('src', '');
}
$container.remove();
};
$(()=> {
setTimeout(()=> {
NggTikTokVideo.initLinkHandlers();
}, INIT_DELAY);
});
})(jQuery, window);
(function($){
"use strict";
window.NextGEN_Video={
detect_platform: function(url){
if(!url) return null;
url=url.trim().toLowerCase();
if(url.match(/youtube\.com|youtu\.be|youtube-nocookie\.com/)){
return 'youtube';
}
if(url.match(/vimeo\.com/)){
return 'vimeo';
}
if(url.match(/dailymotion\.com|dai\.ly/)){
return 'dailymotion';
}
if(url.match(/twitch\.tv/)){
return 'twitch';
}
if(url.match(/videopress\.com|video\.wordpress\.com/)){
return 'videopress';
}
if(url.match(/wistia\.com|wistia\.net/)){
return 'wistia';
}
if(url.match(/\.(mp4|webm|ogg|ogv|mov|avi|wmv|flv|mkv)(\?|$)/i)){
return 'local';
}
return null;
},
extract_youtube_id: function(url){
if(!url) return null;
var patterns=[
/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube-nocookie\.com\/embed\/)([^&\n?#]+)/,
/youtube\.com\/.*[?&]v=([^&\n?#]+)/,
];
for (var i=0; i < patterns.length; i++){
var match=url.match(patterns[i]);
if(match&&match[1]){
return match[1];
}}
return null;
},
extract_vimeo_id: function(url){
if(!url) return null;
var patterns=[
/vimeo\.com\/(\d+)/,
/vimeo\.com\/.*\/(\d+)/,
/player\.vimeo\.com\/video\/(\d+)/,
];
for (var i=0; i < patterns.length; i++){
var match=url.match(patterns[i]);
if(match&&match[1]){
return match[1];
}}
return null;
},
extract_dailymotion_id: function(url){
if(!url) return null;
var patterns=[
/dailymotion\.com\/video\/([^/?]+)/,
/dai\.ly\/([^/?]+)/,
/dailymotion\.com\/embed\/video\/([^/?]+)/,
];
for (var i=0; i < patterns.length; i++){
var match=url.match(patterns[i]);
if(match&&match[1]){
return match[1];
}}
return null;
},
extract_twitch_id: function(url){
if(!url) return null;
var videoMatch=url.match(/twitch\.tv\/videos\/(\d+)/);
if(videoMatch&&videoMatch[1]){
return { videoId: videoMatch[1], type: 'video' };}
var clipMatch=url.match(/(?:twitch\.tv\/|clips\.twitch\.tv\/)([^/?]+)/);
if(clipMatch&&clipMatch[1]){
return { videoId: clipMatch[1], type: 'clip' };}
return null;
},
extract_videopress_id: function(url){
if(!url) return null;
var patterns=[
/videopress\.com\/v\/([^/?]+)/,
/video\.wordpress\.com\/v\/([^/?]+)/,
];
for (var i=0; i < patterns.length; i++){
var match=url.match(patterns[i]);
if(match&&match[1]){
return match[1];
}}
return null;
},
extract_wistia_id: function(url){
if(!url) return null;
var patterns=[
/wistia\.(?:com|net)\/medias\/([^/?]+)/,
/wistia\.(?:com|net)\/embed\/([^/?]+)/,
];
for (var i=0; i < patterns.length; i++){
var match=url.match(patterns[i]);
if(match&&match[1]){
return match[1];
}}
return null;
},
get_embed_url: function(platform, videoId, settings){
if(!platform||!videoId) return null;
settings=settings||{};
var autoplay=settings.autoplay_videos ? 1:0;
var controls=settings.show_video_controls!==false ? 1:0;
switch (platform){
case 'youtube':
var youtubeId=typeof videoId==='string' ? videoId:videoId.videoId;
return 'https://www.youtube.com/embed/' + youtubeId +
'?autoplay=' + autoplay +
'&controls=' + controls +
'&rel=0&modestbranding=1';
case 'vimeo':
var vimeoId=typeof videoId==='string' ? videoId:videoId.videoId;
return 'https://player.vimeo.com/video/' + vimeoId +
'?autoplay=' + autoplay +
'&controls=' + controls;
case 'dailymotion':
var dmId=typeof videoId==='string' ? videoId:videoId.videoId;
return 'https://www.dailymotion.com/embed/video/' + dmId +
'?autoplay=' + autoplay +
'&controls=' + controls;
case 'twitch':
var twitchData=typeof videoId==='object' ? videoId:{ videoId: videoId, type: 'video' };
if(twitchData.type==='clip'){
return 'https://clips.twitch.tv/embed?clip=' + twitchData.videoId +
'&autoplay=' + autoplay +
'&parent=' + window.location.hostname;
}else{
return 'https://player.twitch.tv/?video=v' + twitchData.videoId +
'&autoplay=' + autoplay +
'&parent=' + window.location.hostname;
}
case 'videopress':
var vpId=typeof videoId==='string' ? videoId:videoId.videoId;
return 'https://videopress.com/embed/' + vpId +
'?autoplay=' + autoplay +
'&controls=' + controls;
case 'wistia':
var wistiaId=typeof videoId==='string' ? videoId:videoId.videoId;
return 'https://fast.wistia.net/embed/iframe/' + wistiaId +
'?autoplay=' + autoplay +
'&controlsVisibleOnLoad=' + controls;
case 'local':
return typeof videoId==='string' ? videoId:null;
default:
return null;
}},
create_local_player: function(videoUrl, settings, containerClass, videoClass){
var container=document.createElement("div");
container.className=containerClass||"ngg-video-container";
var video=document.createElement("video");
video.className=videoClass||"ngg-video-player";
video.controls=settings.show_video_controls!==false;
video.autoplay=settings.autoplay_videos===true;
video.playsInline=true;
video.preload="auto";
video.setAttribute("playsinline", "");
video.setAttribute("webkit-playsinline", "");
video.src=videoUrl;
video.addEventListener("error", function(e){
console.error("Video player error:", {
error: e,
videoUrl: videoUrl,
errorCode: video.error ? video.error.code:"unknown",
errorMessage: video.error ? video.error.message:"Unknown error"
});
});
video.addEventListener("loadedmetadata", function (){
var naturalWidth=video.videoWidth;
var naturalHeight=video.videoHeight;
if(naturalWidth&&naturalHeight){
var container=video.closest('.ngg-video-container');
var displayWidth=naturalWidth;
var displayHeight=naturalHeight;
if(container){
var fancyboxContent=container.closest('#fancybox-content');
var tbWindow=container.closest('#TB_window');
var slImage=container.closest('.sl-image');
var shWrap=container.closest('#shWrap');
if(shWrap){
var wiH=window.innerHeight||0;
var dbH=document.body.clientHeight||0;
var deH=document.documentElement ? document.documentElement.clientHeight:0;
var wHeight;
if(wiH > 0){
wHeight=((wiH - dbH) > 1&&(wiH - dbH) < 30) ? dbH:wiH;
wHeight=((wHeight - deH) > 1&&(wHeight - deH) < 30) ? deH:wHeight;
}else{
wHeight=(deH > 0) ? deH:dbH;
}
if(document.getElementsByTagName("body")[0].className.match(/admin-bar/)
&& document.getElementById('wpadminbar')!==null){
wHeight=wHeight - document.getElementById('wpadminbar').offsetHeight;
}
var shHeight=wHeight - 50;
var deW=document.documentElement ? document.documentElement.clientWidth:0;
var dbW=window.innerWidth||document.body.clientWidth;
var wWidth=(deW > 1) ? deW:dbW;
if(displayHeight > shHeight){
displayWidth=displayWidth * (shHeight / displayHeight);
displayHeight=shHeight;
}
if(displayWidth > (wWidth - 16)){
displayHeight=displayHeight * ((wWidth - 16) / displayWidth);
displayWidth=wWidth - 16;
}
video.style.width=displayWidth + "px";
video.style.height=displayHeight + "px";
video.style.maxWidth="none";
video.style.maxHeight="none";
video.setAttribute("width", displayWidth);
video.setAttribute("height", displayHeight);
}else if(fancyboxContent){
setTimeout(function(){
var contentRect=fancyboxContent.getBoundingClientRect();
if(contentRect.width > 10&&contentRect.height > 10){
var maxW=contentRect.width;
var maxH=contentRect.height;
if(displayWidth > maxW||displayHeight > maxH){
var ratio=displayWidth / displayHeight > maxW / maxH
? displayWidth / maxW
: displayHeight / maxH;
displayWidth=displayWidth / ratio;
displayHeight=displayHeight / ratio;
}
video.style.width=displayWidth + "px";
video.style.height=displayHeight + "px";
video.setAttribute("width", displayWidth);
video.setAttribute("height", displayHeight);
}}, 50);
return;
}else if(tbWindow){
var pageWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
var pageHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;
var x=pageWidth - 150;
var y=pageHeight - 150;
if(displayWidth > x){
displayHeight=displayHeight * (x / displayWidth);
displayWidth=x;
if(displayHeight > y){
displayWidth=displayWidth * (y / displayHeight);
displayHeight=y;
}}else if(displayHeight > y){
displayWidth=displayWidth * (y / displayHeight);
displayHeight=y;
if(displayWidth > x){
displayHeight=displayHeight * (x / displayWidth);
displayWidth=x;
}}
video.style.width=displayWidth + "px";
video.style.height=displayHeight + "px";
video.setAttribute("width", displayWidth);
video.setAttribute("height", displayHeight);
}else if(slImage){
var widthRatio=0.8;
var heightRatio=0.9;
var windowWidth=window.innerWidth;
var windowHeight=window.innerHeight;
var maxWidth=windowWidth * widthRatio;
var maxHeight=windowHeight * heightRatio;
if(displayWidth > maxWidth||displayHeight > maxHeight){
var ratio=displayWidth / displayHeight > maxWidth / maxHeight
? displayWidth / maxWidth
: displayHeight / maxHeight;
displayWidth /=ratio;
displayHeight /=ratio;
}
video.style.width=displayWidth + "px";
video.style.height=displayHeight + "px";
video.style.maxWidth=maxWidth + "px";
video.style.maxHeight=maxHeight + "px";
}}
}});
if(settings.autoplay_videos){
video.addEventListener("canplay", function (){
video.play().catch(function (error){
console.error("Video autoplay failed:", error);
});
});
}
container.appendChild(video);
return container;
},
create_embed_player: function(embedUrl, settings, containerClass){
var container=document.createElement("div");
container.className=containerClass||"ngg-video-container";
var iframe=document.createElement("iframe");
iframe.src=embedUrl;
iframe.frameBorder="0";
iframe.allowFullscreen=true;
iframe.setAttribute("allow", "autoplay; encrypted-media");
iframe.style.width="100%";
iframe.style.height="100%";
iframe.style.border="none";
iframe.addEventListener("error", function(e){
console.error("Video iframe error:", {
error: e,
embedUrl: embedUrl
});
});
iframe.addEventListener("load", function(){
try {
var iframeDoc=iframe.contentDocument||iframe.contentWindow.document;
} catch (e){
if(e.name!=="SecurityError"){
console.error("Video iframe load error:", e);
}}
});
var aspectRatio=16 / 9;
var maxWidth=window.innerWidth * 0.9;
var maxHeight=window.innerHeight * 0.9;
var width=Math.min(maxWidth, 1080);
var height=width / aspectRatio;
if(height > maxHeight){
height=maxHeight;
width=height * aspectRatio;
}
container.style.width=width + "px";
container.style.height=height + "px";
container.style.maxWidth="100%";
container.style.maxHeight="90vh";
container.appendChild(iframe);
return container;
},
handle_content: function(options){
var self=this;
var videoUrl=options.videoUrl;
var $targetContainer=$(options.container);
var settings=options.settings||{};
if(!videoUrl){
console.error("Video URL is required");
return null;
}
try {
var platform=self.detect_platform(videoUrl);
if(!platform){
console.warn("Unrecognized video URL:", videoUrl);
return null;
}} catch (error){
console.error("Error detecting video platform:", error);
return null;
}
var videoContent=null;
var videoId=null;
switch (platform){
case 'youtube':
videoId=self.extract_youtube_id(videoUrl);
break;
case 'vimeo':
videoId=self.extract_vimeo_id(videoUrl);
break;
case 'dailymotion':
videoId=self.extract_dailymotion_id(videoUrl);
break;
case 'twitch':
videoId=self.extract_twitch_id(videoUrl);
break;
case 'videopress':
videoId=self.extract_videopress_id(videoUrl);
break;
case 'wistia':
videoId=self.extract_wistia_id(videoUrl);
break;
case 'local':
videoId=videoUrl;
break;
}
if(!videoId){
var errorMsg=self.create_error("Could not extract video ID from URL", options.errorClass);
if(typeof options.onBeforeAppend==="function") options.onBeforeAppend(errorMsg);
$targetContainer.append(errorMsg);
return errorMsg;
}
try {
if(platform==='local'){
videoContent=self.create_local_player(videoId, settings, options.containerClass, options.videoClass);
}else{
var embedUrl=self.get_embed_url(platform, videoId, settings);
if(embedUrl){
videoContent=self.create_embed_player(embedUrl, settings, options.containerClass);
}else{
var errorMsg=self.create_error("Could not generate embed URL", options.errorClass);
if(typeof options.onBeforeAppend==="function") options.onBeforeAppend(errorMsg);
$targetContainer.append(errorMsg);
return errorMsg;
}}
if(videoContent){
if(platform==='local'){
var video=videoContent.querySelector("video");
if(video){
video.onerror=function (){
$(videoContent).remove();
var errorMsg=self.create_error("Video failed to load", options.errorClass);
if(typeof options.onBeforeAppend==="function") options.onBeforeAppend(errorMsg);
$targetContainer.append(errorMsg);
};}}
if(typeof options.onBeforeAppend==="function") options.onBeforeAppend(videoContent);
$targetContainer.append(videoContent);
}} catch (error){
console.error("Error creating video player:", error);
var errorMsg=self.create_error("Video player creation failed", options.errorClass);
if(typeof options.onBeforeAppend==="function") options.onBeforeAppend(errorMsg);
$targetContainer.append(errorMsg);
return errorMsg;
}
return videoContent;
},
create_error: function(message, containerClass){
var container=document.createElement("div");
container.className=containerClass||"ngg-video-error";
container.innerHTML =
'<div class="ngg-video-error-content">' +
'<span class="ngg-video-error-icon">&#9888;</span>' +
'<span class="ngg-video-error-text">' +
(message||"Video failed to load") +
"</span>" +
"</div>";
return container;
}};})(jQuery);
function nextgen_lightbox_filter_selector($, selector){
if(nextgen_lightbox_settings&&nextgen_lightbox_settings.context){
var context=nextgen_lightbox_settings.context;
if(context=='all_images'){
selector=selector.add($('a > img').parent());
}
else if(context=='all_images_direct'){
selector=selector.add($('a[href] > img').parent()
.filter(function(){
var href=$(this).attr('href').toLowerCase();
var ext=href.substring(href.length - 3);
var ext2=href.substring(href.length - 4);
return (ext=='jpg'||ext=='gif'||ext=='png'||ext2=='tiff'||ext2=='jpeg'||ext2=='webp');
}));
}
else if(context=='nextgen_and_wp_images'){
selector=selector.add($('a > img[class*="wp-image-"]').parent());
}
selector=selector.not('.gallery_link');
selector=selector.not('.use_imagebrowser_effect');
}
return selector;
};