/*******************************************************************************
jquery.mb.components
Copyright (c) 2001-2010. Matteo Bicocchi (Pupunzi); Open lab srl, Firenze - Italy
email: info@pupunzi.com
site: http://pupunzi.com
Licences: MIT, GPL
******************************************************************************/
/*
* jQuery.mb.components: mb.mediaEmbedder
* version: 1.0- 23-gen-2010 - 55
* © 2001 - 2010 Matteo Bicocchi (pupunzi), Open Lab
*
*/
(function ($) {
$.mb_videoEmbedder = {
name:"jquery.mb.videoEmbedder",
version:1.0,
author:"Matteo Bicocchi",
defaults: {
width:450,
youtube:{
showTitle:false
},
called: false
},
regEx:/\[(.*?)\]/g,
mb_setMovie:function (context, pat, embedString) {
// console.debug(context);
// console.debug(pat);
// console.debug(embedString);
function findMovieAndEmbed(node, pat, embedString) {
var skip = 0;
if (pat.indexOf("&") != -1)
pat = pat.replace(/&/g, "&");
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
// teoros
//var embed = $('').addClass("mb_video");
var embed = $('').addClass("mb_video");
var middlebit = node.splitText(pos);
middlebit.splitText(pat.length);
embed.append(embedString);
middlebit.parentNode.replaceChild(embed.get(0), middlebit);
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i)
i += findMovieAndEmbed(node.childNodes[i], pat.toUpperCase(), embedString);
}
return skip;
}
return context.each(function () {
findMovieAndEmbed(this, pat.toUpperCase(), embedString);
});
},
mb_embedMovies:function (opt) {
var context = $(this);
this.options = {};
$.extend(this.options, $.mb_videoEmbedder.defaults, opt);
var html = context.html();
if(!html)
return;
var movies = html.match($.mb_videoEmbedder.regEx);
if (!movies)
return;
$(movies).each(function (i) {
var pat = movies[i];
var isYoutube = pat.indexOf("youtube=http://") != -1 || pat.indexOf("youtube=https://") != -1 ;
var isYoutubeChannel = pat.indexOf("youtube=http://www.youtube.com/user/") != -1 || pat.indexOf("youtube=https://www.youtube.com/user/") != -1 ;
var isVimeo = pat.indexOf("vimeo=http://") != -1 || pat.indexOf("vimeo=https://") != -1;
// for CORS call
var isVimeoExternal = pat.indexOf("vimeoext=http://")!= -1 || pat.indexOf("vimeoext=https://") != -1;
var isUstream = pat.indexOf("ustream=http://") != -1;
var isLivestream = pat.indexOf("livestream=http://") != -1;
var isFlickr= pat.indexOf("flickr=http://")!=-1;
var isDailyMotion = pat.indexOf("dailymotion=http://") != -1;
var isFacebook = pat.indexOf("facebook=http://") != -1 || pat.indexOf("facebook=https://") != -1;
// FROM: https://youtu.be/ELGNcMSaKJk
// TO: https://www.youtube.com/watch?v=ELGNcMSaKJk
if(isYoutube)
pat = pat.replace('youtu.be/', 'youtube.com/watch?v=');
var stringToParse = pat.replace(/\[/g, "").replace(/\]/g, "");
//console.log("stringToParse", stringToParse);
var showTitle = !$.mb_videoEmbedder.defaults.youtube.showTitle ? 0 : 1;
var vidId =
isYoutubeChannel ? stringToParse.split("/")[stringToParse.split("/").length - 1] :
isFacebook ? (stringToParse.match(/[\\?&]v=([^]*)/) )[1] :
isYoutube ? ((stringToParse.match(/[\\?&]v=([^]*)/) )!=null?(stringToParse.match(/[\\?&]v=([^]*)/) )[1]:(stringToParse.match(/embed\/([^]*)/) )[1] ):
isVimeo ? (stringToParse.match(/\d+/))[0] :
isVimeoExternal ? stringToParse.replace('vimeoext=', '') :
isUstream ? (stringToParse.match(/\d+/))[0] :
isFlickr?(stringToParse.match(/\d+/))[0] :
isLivestream ? (stringToParse.replace("livestream=http://www.livestream.com/", "").toLowerCase()) :
isDailyMotion ? (stringToParse.substring(stringToParse.lastIndexOf("/")+1, stringToParse.length)) :
null;
// [facebook=https://www.facebook.com/watch/?v=1080442295448572]
var embedString = '';
if(isVimeoExternal) {
//embedString = '';
var data = { videoSrc : vidId };
$.ajax({
async:false,
data:data,
url: contextPath + '/applications/webwork/layout/vimeoExternalViewer.jsp',
dataType:'html',
cache:false,
success: function (html) {
embedString = html;
$.mb_videoEmbedder.mb_setMovie(context, pat, embedString);
}
});
} else {
//var ratio=isYoutube?(showTitle==1?80.5:68) : (isVimeo ? 57.5 : 65);
var ratio = 65;
var width = $.mb_videoEmbedder.defaults.width;
var height = Math.ceil((width * ratio) / 100);
var param = isYoutube ? "&fs=1&rel=0&hd=1&showsearch=0&showinfo=" + showTitle :
isVimeo ? "&server=vimeo.com&show_title=" + showTitle + "&show_byline=1&show_portrait=0&color=&fullscreen=1" :
isUstream ? "?disabledComment=true&autoplay=false" :
isLivestream ? "&color=0xe8e8e8&autoPlay=false&mute=false" :
"";
vidId = vidId && vidId!='null' ? vidId : "";
if (isVimeo) {
//embedString = '';
embedString = '
' +
'
';
} else if(isYoutube) {
embedString = "" +
"
"
} else if(isFacebook) {
// embedString = ""
var fbScript = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.2";
if(!scriptLoaded(fbScript)) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.2";
head.appendChild(script);
}
embedString = "" +
"";
} else {
var path =
isUstream ? "http://www.ustream.tv/flash/video/" :
isLivestream ? "http://cdn.livestream.com/grid/LSPlayer.swf?channel=" :
isFlickr?"http://www.flickr.com/apps/video/stewart.swf?photo_id=":
isDailyMotion ? "http://www.dailymotion.com/swf/video/" :
null;
// console.log(isYoutube, "path", path);
embedString =
'';
}
}
// console.log(embedString);
if (isYoutube || isVimeo || isFacebook || isUstream || isLivestream || isDailyMotion || isFlickr)
$.mb_videoEmbedder.mb_setMovie(context, pat, embedString);
});
$.mb_videoEmbedder.defaults.called = true;
}
};
$.mb_audioEmbedder = {
name:"jquery.mb.videoEmbedder",
version:1.0,
author:"Matteo Bicocchi",
playerPath:"media/player.swf",
defaults:{
width:300
},
regEx:/\[audio=(.*?)\]/g,
mb_setAudio: function (context, pat, string) {
function findAudioAndEmbed(node, pat, string) {
var skip = 0;
if (pat.indexOf("&") != -1)
pat = pat.replace(/&/g, "&");
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var embed = $('').addClass("mb_audio");
embed.append(string);
// teoros gestione safari senza quicktime
if(isSafari && !detectQuickTimePlugin()) {
embed.bind('click', function() {
alert('Sorry but Safari requires QuickTime installed to work properly with audio and video!\nChange browser or download it.');
});
}
var middlebit = node.splitText(pos);
middlebit.splitText(pat.length);
middlebit.parentNode.replaceChild(embed.get(0), middlebit);
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i)
i += findAudioAndEmbed(node.childNodes[i], pat.toUpperCase(), string);
}
return skip;
}
return context.each(function () {
findAudioAndEmbed(this, pat.toUpperCase(), string);
});
},
mb_embedAudio:function (opt) {
var context = $(this);
this.options = {};
$.extend(this.options, $.mb_audioEmbedder.defaults, opt);
var audiofiles = $(this).html().match($.mb_audioEmbedder.regEx);
//console.debug(audiofiles)
if (!audiofiles)
return;
$(audiofiles).each(function (i) {
var pat = audiofiles[i];
var isAudio = pat.indexOf("audio=") != -1;
var params = pat.replace(/\[audio=/g, "").replace(/\]/g, "");
params = params.startsWith('http://') || params.startsWith('https://') || params.startsWith('/') ? params : '/' + params;
// teoros aggiunta per avere il player minimized (solo tasto play)
var minimized = false;
if(params.indexOf(" ")>-1) {
if(params.indexOf("minimized=true")>-1)
minimized = true;
params = params.substring(0, params.indexOf(" "));
}
// teoros aggiunta per avere il player minimized (solo tasto play) e con immagine più grande
var biggerIcons = false;
if(params.indexOf(" ")>-1) {
if(params.indexOf("biggerIcons=true")>-1)
biggerIcons = true;
params = params.substring(0, params.indexOf(" "));
}
var fileName = params.split("/")[params.split("/").length - 1];
if( fileName.indexOf(" ") >-1)
fileName = fileName.substring(0, fileName.indexOf(" "));
if (fileName.split(".").length > 2)
fileName = fileName.split(".")[1];
if( fileName.indexOf(".") ==-1)
fileName = params;
var embedString = "" + fileName + "";
if (isAudio)
$.mb_audioEmbedder.mb_setAudio(context, pat, embedString);
});
}
};
$.fn.mb_embedMovies = $.mb_videoEmbedder.mb_embedMovies;
$.fn.mb_embedAudio = $.mb_audioEmbedder.mb_embedAudio;
})(jQuery);
function scriptLoaded(url) {
if (!url)
return false;
var scripts = document.getElementsByTagName('script');
for (var i = scripts.length; i--;) {
if (scripts[i].src == url)
return true;
}
return false;
}
//https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_responsive_iframe_11
function ajustVideo(wth, pat,patMedia,mainVideoID) {
// console.debug(resptempl.attr("id")) ;
// if (resptempl != undefined) {
var isYoutube = pat.indexOf("youtube=http://") != -1 || pat.indexOf("youtube=https://") != -1;
var isYoutubeChannel = pat.indexOf("youtube=http://www.youtube.com/user/") != -1 || pat.indexOf("youtube=https://www.youtube.com/user/") != -1;
var isVimeo = pat.indexOf("vimeo=http://") != -1 || pat.indexOf("vimeo=https://") != -1;
// for CORS call
var isVimeoExternal = pat.indexOf("vimeoext=http://") != -1 || pat.indexOf("vimeoext=https://") != -1;
var isUstream = pat.indexOf("ustream=http://") != -1;
var isLivestream = pat.indexOf("livestream=http://") != -1;
var isFlickr = pat.indexOf("flickr=http://") != -1;
var isDailyMotion = pat.indexOf("dailymotion=http://") != -1;
var stringToParse = pat.replace(/\[/g, "").replace(/\]/g, "");
var vidId =
isYoutubeChannel ? stringToParse.split("/")[stringToParse.split("/").length - 1] :
isYoutube ? ((stringToParse.match(/[\\?&]v=([^]*)/) )!=null?(stringToParse.match(/[\\?&]v=([^]*)/) )[1]:(stringToParse.match(/embed\/([^]*)/) )[1] ):
isVimeo ? (stringToParse.match(/\d+/))[0] :
isVimeoExternal ? stringToParse.replace('vimeoext=', '') :
isUstream ? (stringToParse.match(/\d+/))[0] :
isFlickr ? (stringToParse.match(/\d+/))[0] :
isLivestream ? (stringToParse.replace("livestream=http://www.livestream.com/", "").toLowerCase()) :
isDailyMotion ? (stringToParse.substring(stringToParse.lastIndexOf("/") + 1, stringToParse.length)) :
null;
vidId = vidId && vidId != 'null' ? vidId : "";
var w = $($("#"+mainVideoID)).width();
// var w = $($(window)).width();
var player1c = $("#"+patMedia + (isVimeo ? vidId : ""));
player1c.width(w);
player1c.attr("width", w);
player1c.attr("height", w / wth);
player1c.height(w / wth);
// $("#boxIntroText").attr("height", w / wth);
if (!isVimeo) {
var embed = player1c.find("embed");
embed.attr("width", w);
embed.attr("height", w / wth);
}
$(window).on("resize", function () {
// w = $($(this)).width();
w = $($("#"+mainVideoID)).width();
player1c = $("#" +patMedia+ (isVimeo ? vidId : ""));
player1c.width(w);
player1c.attr("width", w);
player1c.attr("height", w / wth);
player1c.height(w / wth);
if (!isVimeo) {
embed = player1c.find("embed");
embed.attr("width", w);
embed.attr("height", w / wth);
}
});
}