Skip to content

Instantly share code, notes, and snippets.

@juusechec
Created July 9, 2017 23:53
Show Gist options
  • Save juusechec/67135bae65ba1a6995b14388eea6a402 to your computer and use it in GitHub Desktop.
Save juusechec/67135bae65ba1a6995b14388eea6a402 to your computer and use it in GitHub Desktop.
modified jquery.mb.YTPlayer for react js https://github.com/pupunzi/jquery.mb.YTPlayer
//React Component
import React from 'react';
// Import Style
//import styles from './BannerLogin.css';
// Import Components
var $ = require('jquery');
window.$ = $;
window.jQuery = $;
//require('bootstrap');
//require('bootstrap/dist/css/bootstrap.css');
// JQuery Plugins
require('./util/jquery.mb.YTPlayer');
if (typeof window !== 'undefined') {
console.log('Cargué');
$(function() {
$("#bgndVideo").YTPlayer();
});
}
const dataProperty = "{videoURL:'https://youtu.be/2r1GzseJclI',containment:'body',autoPlay:true, mute:true, startAt:0, opacity:1}";
export function BannerLogin(props) {
return (
<div id="bgndVideo" className="player" data-property={dataProperty}></div>
);
}
export default BannerLogin;
/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.YTPlayer.src.js _
_ last modified: 05/01/16 17.43 _
_ _
_ Open Lab s.r.l., Florence - Italy _
_ _
_ email: matteo@open-lab.com _
_ site: http://pupunzi.com _
_ http://open-lab.com _
_ blog: http://pupunzi.open-lab.com _
_ Q&A: http://jquery.pupunzi.com _
_ _
_ Licences: MIT, GPL _
_ http://www.opensource.org/licenses/mit-license.php _
_ http://www.gnu.org/licenses/gpl.html _
_ _
_ Copyright (c) 2001-2016. Matteo Bicocchi (Pupunzi); _
___________________________________________________________________________________________________________________________________________________*/
/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.YTPlayer.src.js _
_ last modified: 09/07/17 18.43 _
_ _
_ Colombia _
_ _
_ email: juusechec@gmail.com _
_ site: http://github.com/juuseche _
_ blog: http://ulisesuseche.blogspot.com.co/ _
_ _
_ Licences: MIT, GPL _
_ http://www.opensource.org/licenses/mit-license.php _
_ http://www.gnu.org/licenses/gpl.html _
_ _
_ Copyright (c) 2017. Jorge Ulises Useche Cuellar (juusechec); _
___________________________________________________________________________________________________________________________________________________*/
window.ytp = window.ytp || {};
window.onYouTubeIframeAPIReady = function() {
if (ytp.YTAPIReady) return;
ytp.YTAPIReady = true;
jQuery(document).trigger("YTAPIReady");
}
window.getYTPVideoID = function(url) {
var videoID, playlistID;
if (url.indexOf("youtu.be") > 0) {
videoID = url.substr(url.lastIndexOf("/") + 1, url.length);
playlistID = videoID.indexOf("?list=") > 0 ? videoID.substr(videoID.lastIndexOf("="), videoID.length) : null;
videoID = playlistID ? videoID.substr(0, videoID.lastIndexOf("?")) : videoID;
} else if (url.indexOf("http") > -1) {
//videoID = url.match( /([\/&]v\/([^&#]*))|([\\?&]v=([^&#]*))/ )[ 1 ];
videoID = url.match(/[\\?&]v=([^&#]*)/)[1];
playlistID = url.indexOf("list=") > 0 ? url.match(/[\\?&]list=([^&#]*)/)[1] : null;
} else {
videoID = url.length > 15 ? null : url;
playlistID = videoID ? null : url;
}
return {
videoID: videoID,
playlistID: playlistID
};
};
(function(jQuery, ytp) {
jQuery.mbYTPlayer = {
name: "jquery.mb.YTPlayer",
version: "3.0.8",
build: "5883",
author: "Matteo Bicocchi",
apiKey: "",
defaults: {
containment: "body",
ratio: "auto", // "auto", "16/9", "4/3"
videoURL: null,
playlistURL: null,
startAt: 0,
stopAt: 0,
autoPlay: true,
vol: 50, // 1 to 100
addRaster: false,
mask: false,
opacity: 1,
quality: "default", //or “small”, “medium”, “large”, “hd720”, “hd1080”, “highres”
mute: false,
loop: true,
showControls: true,
showAnnotations: false,
showYTLogo: true,
stopMovieOnBlur: true,
realfullscreen: true,
mobileFallbackImage: null,
gaTrack: true,
optimizeDisplay: true,
align: "center,center", // top,bottom,left,right
onReady: function(player) {}
},
/**
* @fontface icons
* */
controls: {
play: "P",
pause: "p",
mute: "M",
unmute: "A",
onlyYT: "O",
showSite: "R",
ytLogo: "Y"
},
controlBar: null,
loading: null,
locationProtocol: "https:",
filters: {
grayscale: {
value: 0,
unit: "%"
},
hue_rotate: {
value: 0,
unit: "deg"
},
invert: {
value: 0,
unit: "%"
},
opacity: {
value: 0,
unit: "%"
},
saturate: {
value: 0,
unit: "%"
},
sepia: {
value: 0,
unit: "%"
},
brightness: {
value: 0,
unit: "%"
},
contrast: {
value: 0,
unit: "%"
},
blur: {
value: 0,
unit: "px"
}
},
/**
*
* @param options
* @returns [players]
*/
buildPlayer: function(options) {
return this.each(function() {
var YTPlayer = this;
var $YTPlayer = jQuery(YTPlayer);
YTPlayer.loop = 0;
YTPlayer.opt = {};
YTPlayer.state = {};
YTPlayer.filters = jQuery.mbYTPlayer.filters;
YTPlayer.filtersEnabled = true;
YTPlayer.id = YTPlayer.id || "YTP_" + new Date().getTime();
$YTPlayer.addClass("mb_YTPlayer");
var property = $YTPlayer.data("property") && typeof $YTPlayer.data("property") == "string" ? eval('(' + $YTPlayer.data("property") + ')') : $YTPlayer.data("property");
if (typeof property != "undefined" && typeof property.vol != "undefined") property.vol = property.vol === 0 ? property.vol = 1 : property.vol;
jQuery.extend(YTPlayer.opt, jQuery.mbYTPlayer.defaults, options, property);
if (!YTPlayer.hasChanged) {
YTPlayer.defaultOpt = {};
jQuery.extend(YTPlayer.defaultOpt, jQuery.mbYTPlayer.defaults, options);
}
if (YTPlayer.opt.loop == "true")
YTPlayer.opt.loop = 9999;
YTPlayer.isRetina = (window.retina || window.devicePixelRatio > 1);
var isIframe = function() {
var isIfr = false;
try {
if (self.location.href != top.location.href) isIfr = true;
} catch (e) {
isIfr = true;
}
return isIfr;
};
YTPlayer.canGoFullScreen = !(jQuery.browser.msie || jQuery.browser.opera || isIframe());
if (!YTPlayer.canGoFullScreen) YTPlayer.opt.realfullscreen = false;
if (!$YTPlayer.attr("id")) $YTPlayer.attr("id", "video_" + new Date().getTime());
var playerID = "mbYTP_" + YTPlayer.id;
YTPlayer.isAlone = false;
YTPlayer.hasFocus = true;
YTPlayer.videoID = this.opt.videoURL ? getYTPVideoID(this.opt.videoURL).videoID : $YTPlayer.attr("href") ? getYTPVideoID($YTPlayer.attr("href")).videoID : false;
YTPlayer.playlistID = this.opt.videoURL ? getYTPVideoID(this.opt.videoURL).playlistID : $YTPlayer.attr("href") ? getYTPVideoID($YTPlayer.attr("href")).playlistID : false;
/*
YTPlayer.videoID = videoID;
YTPlayer.playlistID = playlistID;
*/
YTPlayer.opt.showAnnotations = YTPlayer.opt.showAnnotations ? '0' : '3';
var playerVars = {
'modestbranding': 1,
'autoplay': 0,
'controls': 0,
'showinfo': 0,
'rel': 0,
'enablejsapi': 1,
'version': 3,
'playerapiid': playerID,
'origin': '*',
'allowfullscreen': true,
'wmode': 'transparent',
'iv_load_policy': YTPlayer.opt.showAnnotations
};
if (document.createElement('video').canPlayType) jQuery.extend(playerVars, {
'html5': 1
});
if (jQuery.browser.msie && jQuery.browser.version < 9) this.opt.opacity = 1;
YTPlayer.isSelf = YTPlayer.opt.containment == "self";
YTPlayer.defaultOpt.containment = YTPlayer.opt.containment = YTPlayer.opt.containment == "self" ? jQuery(this) : jQuery(YTPlayer.opt.containment);
YTPlayer.isBackground = YTPlayer.opt.containment.is("body");
if (YTPlayer.isBackground && ytp.backgroundIsInited)
return;
var isPlayer = YTPlayer.opt.containment.is(jQuery(this));
YTPlayer.canPlayOnMobile = isPlayer && jQuery(this).children().length === 0;
YTPlayer.isPlayer = false;
if (!isPlayer) {
$YTPlayer.hide();
} else {
YTPlayer.isPlayer = true;
}
var overlay = jQuery("<div/>").css({
position: "absolute",
top: 0,
left: 0,
width: "100%",
height: "100%"
}).addClass("YTPOverlay");
if (YTPlayer.isPlayer) {
overlay.on("click", function() {
$YTPlayer.YTPTogglePlay();
})
}
var wrapper = jQuery("<div/>").addClass("mbYTP_wrapper").attr("id", "wrapper_" + playerID);
wrapper.css({
position: "absolute",
zIndex: 0,
minWidth: "100%",
minHeight: "100%",
left: 0,
top: 0,
overflow: "hidden",
opacity: 0
});
var playerBox = jQuery("<div/>").attr("id", playerID).addClass("playerBox");
playerBox.css({
position: "absolute",
zIndex: 0,
width: "100%",
height: "100%",
top: 0,
left: 0,
overflow: "hidden"
});
wrapper.append(playerBox);
YTPlayer.opt.containment.children().not("script, style").each(function() {
if (jQuery(this).css("position") == "static") jQuery(this).css("position", "relative");
});
if (YTPlayer.isBackground) {
jQuery("body").css({
boxSizing: "border-box"
});
wrapper.css({
position: "fixed",
top: 0,
left: 0,
zIndex: 0
});
$YTPlayer.hide();
} else if (YTPlayer.opt.containment.css("position") == "static")
YTPlayer.opt.containment.css({
position: "relative"
});
YTPlayer.opt.containment.prepend(wrapper);
YTPlayer.wrapper = wrapper;
playerBox.css({
opacity: 1
});
if (!jQuery.browser.mobile) {
playerBox.after(overlay);
YTPlayer.overlay = overlay;
}
if (!YTPlayer.isBackground) {
overlay.on("mouseenter", function() {
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.addClass("visible");
}).on("mouseleave", function() {
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.removeClass("visible");
});
}
if (!ytp.YTAPIReady) {
jQuery("#YTAPI").remove();
var tag = jQuery("<script></script>").attr({
"src": jQuery.mbYTPlayer.locationProtocol + "//www.youtube.com/iframe_api?v=" + jQuery.mbYTPlayer.version,
"id": "YTAPI"
});
jQuery("head").prepend(tag);
} else {
setTimeout(function() {
jQuery(document).trigger("YTAPIReady");
}, 100)
}
if (jQuery.browser.mobile && !YTPlayer.canPlayOnMobile) {
if (YTPlayer.opt.mobileFallbackImage) {
YTPlayer.opt.containment.css({
backgroundImage: "url(" + YTPlayer.opt.mobileFallbackImage + ")",
backgroundPosition: "center center",
backgroundSize: "cover",
backgroundRepeat: "no-repeat"
})
};
$YTPlayer.remove();
jQuery(document).trigger("YTPUnavailable");
return;
}
jQuery(document).on("YTAPIReady", function() {
if ((YTPlayer.isBackground && ytp.backgroundIsInited) || YTPlayer.isInit) return;
if (YTPlayer.isBackground) {
ytp.backgroundIsInited = true;
}
YTPlayer.opt.autoPlay = typeof YTPlayer.opt.autoPlay == "undefined" ? (YTPlayer.isBackground ? true : false) : YTPlayer.opt.autoPlay;
YTPlayer.opt.vol = YTPlayer.opt.vol ? YTPlayer.opt.vol : 100;
jQuery.mbYTPlayer.getDataFromAPI(YTPlayer);
jQuery(YTPlayer).on("YTPChanged", function() {
if (YTPlayer.isInit)
return;
YTPlayer.isInit = true;
//if is mobile && isPlayer fallback to the default YT player
if (jQuery.browser.mobile && YTPlayer.canPlayOnMobile) {
// Try to adjust the player dimention
if (YTPlayer.opt.containment.outerWidth() > jQuery(window).width()) {
YTPlayer.opt.containment.css({
maxWidth: "100%"
});
var h = YTPlayer.opt.containment.outerWidth() * .563;
YTPlayer.opt.containment.css({
maxHeight: h
});
}
new YT.Player(playerID, {
videoId: YTPlayer.videoID.toString(),
width: '100%',
height: h,
playerVars: playerVars,
events: {
'onReady': function(event) {
YTPlayer.player = event.target;
playerBox.css({
opacity: 1
});
YTPlayer.wrapper.css({
opacity: 1
});
}
}
});
return;
}
new YT.Player(playerID, {
videoId: YTPlayer.videoID.toString(),
playerVars: playerVars,
events: {
'onReady': function(event) {
YTPlayer.player = event.target;
if (YTPlayer.isReady) return;
YTPlayer.isReady = YTPlayer.isPlayer && !YTPlayer.opt.autoPlay ? false : true;
YTPlayer.playerEl = YTPlayer.player.getIframe();
jQuery(YTPlayer.playerEl).unselectable();
$YTPlayer.optimizeDisplay();
jQuery(window).off("resize.YTP_" + YTPlayer.id).on("resize.YTP_" + YTPlayer.id, function() {
$YTPlayer.optimizeDisplay();
});
jQuery.mbYTPlayer.checkForState(YTPlayer);
},
/**
*
* @param event
*
* -1 (unstarted)
* 0 (ended)
* 1 (playing)
* 2 (paused)
* 3 (buffering)
* 5 (video cued).
*
*
*/
'onStateChange': function(event) {
if (typeof event.target.getPlayerState != "function") return;
var state = event.target.getPlayerState();
if (YTPlayer.preventTrigger) {
YTPlayer.preventTrigger = false;
return
}
/*
if( YTPlayer.state == state )
return;
*/
YTPlayer.state = state;
var eventType;
switch (state) {
case -1: //----------------------------------------------- unstarted
eventType = "YTPUnstarted";
break;
case 0: //------------------------------------------------ ended
eventType = "YTPEnd";
break;
case 1: //------------------------------------------------ play
eventType = "YTPPlay";
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.find(".mb_YTPPlaypause").html(jQuery.mbYTPlayer.controls.pause);
if (typeof _gaq != "undefined" && eval(YTPlayer.opt.gaTrack)) _gaq.push(['_trackEvent', 'YTPlayer', 'Play', (YTPlayer.hasData ? YTPlayer.videoData.title : YTPlayer.videoID.toString())]);
if (typeof ga != "undefined" && eval(YTPlayer.opt.gaTrack)) ga('send', 'event', 'YTPlayer', 'play', (YTPlayer.hasData ? YTPlayer.videoData.title : YTPlayer.videoID.toString()));
break;
case 2: //------------------------------------------------ pause
eventType = "YTPPause";
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.find(".mb_YTPPlaypause").html(jQuery.mbYTPlayer.controls.play);
break;
case 3: //------------------------------------------------ buffer
YTPlayer.player.setPlaybackQuality(YTPlayer.opt.quality);
eventType = "YTPBuffering";
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.find(".mb_YTPPlaypause").html(jQuery.mbYTPlayer.controls.play);
break;
case 5: //------------------------------------------------ cued
eventType = "YTPCued";
break;
default:
break;
}
// Trigger state events
var YTPEvent = jQuery.Event(eventType);
YTPEvent.time = YTPlayer.currentTime;
if (YTPlayer.canTrigger) jQuery(YTPlayer).trigger(YTPEvent);
},
/**
*
* @param e
*/
'onPlaybackQualityChange': function(e) {
var quality = e.target.getPlaybackQuality();
var YTPQualityChange = jQuery.Event("YTPQualityChange");
YTPQualityChange.quality = quality;
jQuery(YTPlayer).trigger(YTPQualityChange);
},
/**
*
* @param err
*/
'onError': function(err) {
if (err.data == 150) {
console.log("Embedding this video is restricted by Youtube.");
if (YTPlayer.isPlayList) jQuery(YTPlayer).playNext();
}
if (err.data == 2 && YTPlayer.isPlayList)
jQuery(YTPlayer).playNext();
if (typeof YTPlayer.opt.onError == "function")
YTPlayer.opt.onError($YTPlayer, err);
}
}
});
});
});
$YTPlayer.off("YTPTime.mask");
jQuery.mbYTPlayer.applyMask(YTPlayer);
});
},
/**
*
* @param YTPlayer
*/
getDataFromAPI: function(YTPlayer) {
YTPlayer.videoData = jQuery.mbStorage.get("YTPlayer_data_" + YTPlayer.videoID);
jQuery(YTPlayer).off("YTPData.YTPlayer").on("YTPData.YTPlayer", function() {
if (YTPlayer.hasData) {
if (YTPlayer.isPlayer && !YTPlayer.opt.autoPlay) {
var bgndURL = YTPlayer.videoData.thumb_max || YTPlayer.videoData.thumb_high || YTPlayer.videoData.thumb_medium;
YTPlayer.opt.containment.css({
background: "rgba(0,0,0,0.5) url(" + bgndURL + ") center center",
backgroundSize: "cover"
});
YTPlayer.opt.backgroundUrl = bgndURL;
}
}
});
if (YTPlayer.videoData) {
setTimeout(function() {
YTPlayer.opt.ratio = YTPlayer.opt.ratio == "auto" ? "16/9" : YTPlayer.opt.ratio;
YTPlayer.dataReceived = true;
jQuery(YTPlayer).trigger("YTPChanged");
var YTPData = jQuery.Event("YTPData");
YTPData.prop = {};
for (var x in YTPlayer.videoData) YTPData.prop[x] = YTPlayer.videoData[x];
jQuery(YTPlayer).trigger(YTPData);
}, 500);
YTPlayer.hasData = true;
} else if (jQuery.mbYTPlayer.apiKey) {
// Get video info from API3 (needs api key)
// snippet,player,contentDetails,statistics,status
jQuery.getJSON(jQuery.mbYTPlayer.locationProtocol + "//www.googleapis.com/youtube/v3/videos?id=" + YTPlayer.videoID + "&key=" + jQuery.mbYTPlayer.apiKey + "&part=snippet", function(data) {
YTPlayer.dataReceived = true;
jQuery(YTPlayer).trigger("YTPChanged");
function parseYTPlayer_data(data) {
YTPlayer.videoData = {};
YTPlayer.videoData.id = YTPlayer.videoID;
YTPlayer.videoData.channelTitle = data.channelTitle;
YTPlayer.videoData.title = data.title;
YTPlayer.videoData.description = data.description.length < 400 ? data.description : data.description.substring(0, 400) + " ...";
YTPlayer.videoData.aspectratio = YTPlayer.opt.ratio == "auto" ? "16/9" : YTPlayer.opt.ratio;
YTPlayer.opt.ratio = YTPlayer.videoData.aspectratio;
YTPlayer.videoData.thumb_max = data.thumbnails.maxres ? data.thumbnails.maxres.url : null;
YTPlayer.videoData.thumb_high = data.thumbnails.high ? data.thumbnails.high.url : null;
YTPlayer.videoData.thumb_medium = data.thumbnails.medium ? data.thumbnails.medium.url : null;
jQuery.mbStorage.set("YTPlayer_data_" + YTPlayer.videoID, YTPlayer.videoData);
}
parseYTPlayer_data(data.items[0].snippet);
YTPlayer.hasData = true;
var YTPData = jQuery.Event("YTPData");
YTPData.prop = {};
for (var x in YTPlayer.videoData) YTPData.prop[x] = YTPlayer.videoData[x];
jQuery(YTPlayer).trigger(YTPData);
});
} else {
setTimeout(function() {
jQuery(YTPlayer).trigger("YTPChanged");
}, 50);
if (YTPlayer.isPlayer && !YTPlayer.opt.autoPlay) {
var bgndURL = jQuery.mbYTPlayer.locationProtocol + "//i.ytimg.com/vi/" + YTPlayer.videoID + "/hqdefault.jpg";
YTPlayer.opt.containment.css({
background: "rgba(0,0,0,0.5) url(" + bgndURL + ") center center",
backgroundSize: "cover"
});
YTPlayer.opt.backgroundUrl = bgndURL;
}
YTPlayer.videoData = null;
YTPlayer.opt.ratio = YTPlayer.opt.ratio == "auto" ? "16/9" : YTPlayer.opt.ratio;
}
if (YTPlayer.isPlayer && !YTPlayer.opt.autoPlay && !jQuery.browser.mobile) {
YTPlayer.loading = jQuery("<div/>").addClass("loading").html("Loading").hide();
jQuery(YTPlayer).append(YTPlayer.loading);
YTPlayer.loading.fadeIn();
}
},
/**
*
*/
removeStoredData: function() {
jQuery.mbStorage.remove();
},
/**
*
* @returns {*|YTPlayer.videoData}
*/
getVideoData: function() {
var YTPlayer = this.get(0);
return YTPlayer.videoData;
},
/**
*
* @returns {*|YTPlayer.videoID|boolean}
*/
getVideoID: function() {
var YTPlayer = this.get(0);
return YTPlayer.videoID || false;
},
/**
*
* @param quality
*/
setVideoQuality: function(quality) {
var YTPlayer = this.get(0);
//if( !jQuery.browser.chrome )
YTPlayer.player.setPlaybackQuality(quality);
},
/**
*
* @param videos
* @param shuffle
* @param callback
* @param loopList
* @returns {jQuery.mbYTPlayer}
*/
playlist: function(videos, shuffle, callback, loopList) {
var $YTPlayer = this;
var YTPlayer = $YTPlayer.get(0);
YTPlayer.isPlayList = true;
if (shuffle) videos = jQuery.shuffle(videos);
if (!YTPlayer.videoID) {
YTPlayer.videos = videos;
YTPlayer.videoCounter = 0;
YTPlayer.videoLength = videos.length;
jQuery(YTPlayer).data("property", videos[0]);
jQuery(YTPlayer).mb_YTPlayer();
}
if (typeof callback == "function") jQuery(YTPlayer).one("YTPChanged", function() {
callback(YTPlayer);
});
jQuery(YTPlayer).on("YTPEnd", function() {
loopList = typeof loopList == "undefined" ? true : loopList;
jQuery(YTPlayer).playNext(loopList);
});
return $YTPlayer;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
playNext: function(loopList) {
var YTPlayer = this.get(0);
if (YTPlayer.checkForStartAt) {
clearTimeout(YTPlayer.checkForStartAt);
clearInterval(YTPlayer.getState);
}
YTPlayer.videoCounter++;
if (YTPlayer.videoCounter >= YTPlayer.videoLength && loopList)
YTPlayer.videoCounter = 0;
if (YTPlayer.videoCounter < YTPlayer.videoLength)
jQuery(YTPlayer).changeMovie(YTPlayer.videos[YTPlayer.videoCounter]);
else
YTPlayer.videoCounter--;
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
playPrev: function() {
var YTPlayer = this.get(0);
if (YTPlayer.checkForStartAt) {
clearInterval(YTPlayer.checkForStartAt);
clearInterval(YTPlayer.getState);
}
YTPlayer.videoCounter--;
if (YTPlayer.videoCounter < 0) YTPlayer.videoCounter = YTPlayer.videoLength - 1;
jQuery(YTPlayer).changeMovie(YTPlayer.videos[YTPlayer.videoCounter]);
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
playIndex: function(idx) {
var YTPlayer = this.get(0);
idx = idx - 1;
if (YTPlayer.checkForStartAt) {
clearInterval(YTPlayer.checkForStartAt);
clearInterval(YTPlayer.getState);
}
YTPlayer.videoCounter = idx;
if (YTPlayer.videoCounter >= YTPlayer.videoLength - 1)
YTPlayer.videoCounter = YTPlayer.videoLength - 1;
jQuery(YTPlayer).changeMovie(YTPlayer.videos[YTPlayer.videoCounter]);
return this;
},
/**
*
* @param opt
*/
changeMovie: function(opt) {
var $YTPlayer = this;
var YTPlayer = $YTPlayer.get(0);
YTPlayer.opt.startAt = 0;
YTPlayer.opt.stopAt = 0;
YTPlayer.opt.mask = false;
YTPlayer.opt.mute = true;
YTPlayer.hasData = false;
YTPlayer.hasChanged = true;
YTPlayer.player.loopTime = undefined;
if (opt)
jQuery.extend(YTPlayer.opt, opt); //YTPlayer.defaultOpt,
YTPlayer.videoID = getYTPVideoID(YTPlayer.opt.videoURL).videoID;
if (YTPlayer.opt.loop == "true")
YTPlayer.opt.loop = 9999;
jQuery(YTPlayer.playerEl).CSSAnimate({
opacity: 0
}, 200, function() {
var YTPChangeMovie = jQuery.Event("YTPChangeMovie");
YTPChangeMovie.time = YTPlayer.currentTime;
YTPChangeMovie.videoId = YTPlayer.videoID;
jQuery(YTPlayer).trigger(YTPChangeMovie);
jQuery(YTPlayer).YTPGetPlayer().cueVideoByUrl(encodeURI(jQuery.mbYTPlayer.locationProtocol + "//www.youtube.com/v/" + YTPlayer.videoID), 1, YTPlayer.opt.quality);
jQuery(YTPlayer).optimizeDisplay();
jQuery.mbYTPlayer.checkForState(YTPlayer);
jQuery.mbYTPlayer.getDataFromAPI(YTPlayer);
});
jQuery.mbYTPlayer.applyMask(YTPlayer);
},
/**
*
* @returns {player}
*/
getPlayer: function() {
return jQuery(this).get(0).player;
},
playerDestroy: function() {
var YTPlayer = this.get(0);
ytp.YTAPIReady = true;
ytp.backgroundIsInited = false;
YTPlayer.isInit = false;
YTPlayer.videoID = null;
var playerBox = YTPlayer.wrapper;
playerBox.remove();
jQuery("#controlBar_" + YTPlayer.id).remove();
clearInterval(YTPlayer.checkForStartAt);
clearInterval(YTPlayer.getState);
return this;
},
/**
*
* @param real
* @returns {jQuery.mbYTPlayer}
*/
fullscreen: function(real) {
var YTPlayer = this.get(0);
if (typeof real == "undefined") real = YTPlayer.opt.realfullscreen;
real = eval(real);
var controls = jQuery("#controlBar_" + YTPlayer.id);
var fullScreenBtn = controls.find(".mb_OnlyYT");
var videoWrapper = YTPlayer.isSelf ? YTPlayer.opt.containment : YTPlayer.wrapper;
//var videoWrapper = YTPlayer.wrapper;
if (real) {
var fullscreenchange = jQuery.browser.mozilla ? "mozfullscreenchange" : jQuery.browser.webkit ? "webkitfullscreenchange" : "fullscreenchange";
jQuery(document).off(fullscreenchange).on(fullscreenchange, function() {
var isFullScreen = RunPrefixMethod(document, "IsFullScreen") || RunPrefixMethod(document, "FullScreen");
if (!isFullScreen) {
YTPlayer.isAlone = false;
fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT);
jQuery(YTPlayer).YTPSetVideoQuality(YTPlayer.opt.quality);
videoWrapper.removeClass("YTPFullscreen");
videoWrapper.CSSAnimate({
opacity: YTPlayer.opt.opacity
}, 500);
videoWrapper.css({
zIndex: 0
});
if (YTPlayer.isBackground) {
jQuery("body").after(controls);
} else {
YTPlayer.wrapper.before(controls);
}
jQuery(window).resize();
jQuery(YTPlayer).trigger("YTPFullScreenEnd");
} else {
jQuery(YTPlayer).YTPSetVideoQuality("default");
jQuery(YTPlayer).trigger("YTPFullScreenStart");
}
});
}
if (!YTPlayer.isAlone) {
function hideMouse() {
YTPlayer.overlay.css({
cursor: "none"
});
}
jQuery(document).on("mousemove.YTPlayer", function(e) {
YTPlayer.overlay.css({
cursor: "auto"
});
clearTimeout(YTPlayer.hideCursor);
if (!jQuery(e.target).parents().is(".mb_YTPBar")) YTPlayer.hideCursor = setTimeout(hideMouse, 3000);
});
hideMouse();
if (real) {
videoWrapper.css({
opacity: 0
});
videoWrapper.addClass("YTPFullscreen");
launchFullscreen(videoWrapper.get(0));
setTimeout(function() {
videoWrapper.CSSAnimate({
opacity: 1
}, 1000);
YTPlayer.wrapper.append(controls);
jQuery(YTPlayer).optimizeDisplay();
YTPlayer.player.seekTo(YTPlayer.player.getCurrentTime() + .1, true);
}, 500)
} else videoWrapper.css({
zIndex: 10000
}).CSSAnimate({
opacity: 1
}, 1000);
fullScreenBtn.html(jQuery.mbYTPlayer.controls.showSite);
YTPlayer.isAlone = true;
} else {
jQuery(document).off("mousemove.YTPlayer");
clearTimeout(YTPlayer.hideCursor);
YTPlayer.overlay.css({
cursor: "auto"
});
if (real) {
cancelFullscreen();
} else {
videoWrapper.CSSAnimate({
opacity: YTPlayer.opt.opacity
}, 500);
videoWrapper.css({
zIndex: 0
});
}
fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT);
YTPlayer.isAlone = false;
}
function RunPrefixMethod(obj, method) {
var pfx = ["webkit", "moz", "ms", "o", ""];
var p = 0,
m, t;
while (p < pfx.length && !obj[m]) {
m = method;
if (pfx[p] == "") {
m = m.substr(0, 1).toLowerCase() + m.substr(1);
}
m = pfx[p] + m;
t = typeof obj[m];
if (t != "undefined") {
pfx = [pfx[p]];
return (t == "function" ? obj[m]() : obj[m]);
}
p++;
}
}
function launchFullscreen(element) {
RunPrefixMethod(element, "RequestFullScreen");
}
function cancelFullscreen() {
if (RunPrefixMethod(document, "FullScreen") || RunPrefixMethod(document, "IsFullScreen")) {
RunPrefixMethod(document, "CancelFullScreen");
}
}
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
toggleLoops: function() {
var YTPlayer = this.get(0);
var data = YTPlayer.opt;
if (data.loop == 1) {
data.loop = 0;
} else {
if (data.startAt) {
YTPlayer.player.seekTo(data.startAt);
} else {
YTPlayer.player.playVideo();
}
data.loop = 1;
}
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
play: function() {
var YTPlayer = this.get(0);
if (!YTPlayer.isReady)
return this;
YTPlayer.player.playVideo();
YTPlayer.wrapper.CSSAnimate({
opacity: YTPlayer.isAlone ? 1 : YTPlayer.opt.opacity
}, 2000);
jQuery(YTPlayer.playerEl).CSSAnimate({
opacity: 1
}, 1000);
var controls = jQuery("#controlBar_" + YTPlayer.id);
var playBtn = controls.find(".mb_YTPPlaypause");
playBtn.html(jQuery.mbYTPlayer.controls.pause);
YTPlayer.state = 1;
jQuery(YTPlayer).css("background-image", "none");
return this;
},
/**
*
* @param callback
* @returns {jQuery.mbYTPlayer}
*/
togglePlay: function(callback) {
var YTPlayer = this.get(0);
if (YTPlayer.state == 1)
this.YTPPause();
else
this.YTPPlay();
if (typeof callback == "function")
callback(YTPlayer.state);
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
stop: function() {
var YTPlayer = this.get(0);
var controls = jQuery("#controlBar_" + YTPlayer.id);
var playBtn = controls.find(".mb_YTPPlaypause");
playBtn.html(jQuery.mbYTPlayer.controls.play);
YTPlayer.player.stopVideo();
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
pause: function() {
var YTPlayer = this.get(0);
YTPlayer.player.pauseVideo();
YTPlayer.state = 2;
return this;
},
/**
*
* @param val
* @returns {jQuery.mbYTPlayer}
*/
seekTo: function(val) {
var YTPlayer = this.get(0);
YTPlayer.player.seekTo(val, true);
return this;
},
/**
*
* @param val
* @returns {jQuery.mbYTPlayer}
*/
setVolume: function(val) {
var YTPlayer = this.get(0);
if (!val && !YTPlayer.opt.vol && YTPlayer.player.getVolume() == 0) jQuery(YTPlayer).YTPUnmute();
else if ((!val && YTPlayer.player.getVolume() > 0) || (val && YTPlayer.opt.vol == val)) {
if (!YTPlayer.isMute) jQuery(YTPlayer).YTPMute();
else jQuery(YTPlayer).YTPUnmute();
} else {
YTPlayer.opt.vol = val;
YTPlayer.player.setVolume(YTPlayer.opt.vol);
if (YTPlayer.volumeBar && YTPlayer.volumeBar.length) YTPlayer.volumeBar.updateSliderVal(val)
}
return this;
},
/**
*
* @returns {boolean}
*/
toggleVolume: function() {
var YTPlayer = this.get(0);
if (!YTPlayer) return;
if (YTPlayer.player.isMuted()) {
jQuery(YTPlayer).YTPUnmute();
return true;
} else {
jQuery(YTPlayer).YTPMute();
return false;
}
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
mute: function() {
var YTPlayer = this.get(0);
if (YTPlayer.isMute) return;
YTPlayer.player.mute();
YTPlayer.isMute = true;
YTPlayer.player.setVolume(0);
if (YTPlayer.volumeBar && YTPlayer.volumeBar.length && YTPlayer.volumeBar.width() > 10) {
YTPlayer.volumeBar.updateSliderVal(0);
}
var controls = jQuery("#controlBar_" + YTPlayer.id);
var muteBtn = controls.find(".mb_YTPMuteUnmute");
muteBtn.html(jQuery.mbYTPlayer.controls.unmute);
jQuery(YTPlayer).addClass("isMuted");
if (YTPlayer.volumeBar && YTPlayer.volumeBar.length) YTPlayer.volumeBar.addClass("muted");
var YTPEvent = jQuery.Event("YTPMuted");
YTPEvent.time = YTPlayer.currentTime;
if (YTPlayer.canTrigger) jQuery(YTPlayer).trigger(YTPEvent);
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
unmute: function() {
var YTPlayer = this.get(0);
if (!YTPlayer.isMute) return;
YTPlayer.player.unMute();
YTPlayer.isMute = false;
YTPlayer.player.setVolume(YTPlayer.opt.vol);
if (YTPlayer.volumeBar && YTPlayer.volumeBar.length) YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol > 10 ? YTPlayer.opt.vol : 10);
var controls = jQuery("#controlBar_" + YTPlayer.id);
var muteBtn = controls.find(".mb_YTPMuteUnmute");
muteBtn.html(jQuery.mbYTPlayer.controls.mute);
jQuery(YTPlayer).removeClass("isMuted");
if (YTPlayer.volumeBar && YTPlayer.volumeBar.length) YTPlayer.volumeBar.removeClass("muted");
var YTPEvent = jQuery.Event("YTPUnmuted");
YTPEvent.time = YTPlayer.currentTime;
if (YTPlayer.canTrigger) jQuery(YTPlayer).trigger(YTPEvent);
return this;
},
/**
* FILTERS
*
*
* @param filter
* @param value
* @returns {jQuery.mbYTPlayer}
*/
applyFilter: function(filter, value) {
return this.each(function() {
var YTPlayer = this;
YTPlayer.filters[filter].value = value;
if (YTPlayer.filtersEnabled)
jQuery(YTPlayer).YTPEnableFilters();
});
},
/**
*
* @param filters
* @returns {jQuery.mbYTPlayer}
*/
applyFilters: function(filters) {
return this.each(function() {
var YTPlayer = this;
if (!YTPlayer.isReady) {
jQuery(YTPlayer).on("YTPReady", function() {
jQuery(YTPlayer).YTPApplyFilters(filters);
});
return;
}
for (var key in filters)
jQuery(YTPlayer).YTPApplyFilter(key, filters[key]);
jQuery(YTPlayer).trigger("YTPFiltersApplied");
});
},
/**
*
* @param filter
* @param value
* @returns {*}
*/
toggleFilter: function(filter, value) {
return this.each(function() {
var YTPlayer = this;
if (!YTPlayer.filters[filter].value) YTPlayer.filters[filter].value = value;
else YTPlayer.filters[filter].value = 0;
if (YTPlayer.filtersEnabled) jQuery(this).YTPEnableFilters();
});
},
/**
*
* @param callback
* @returns {*}
*/
toggleFilters: function(callback) {
return this.each(function() {
var YTPlayer = this;
if (YTPlayer.filtersEnabled) {
jQuery(YTPlayer).trigger("YTPDisableFilters");
jQuery(YTPlayer).YTPDisableFilters();
} else {
jQuery(YTPlayer).YTPEnableFilters();
jQuery(YTPlayer).trigger("YTPEnableFilters");
}
if (typeof callback == "function")
callback(YTPlayer.filtersEnabled);
})
},
/**
*
* @returns {*}
*/
disableFilters: function() {
return this.each(function() {
var YTPlayer = this;
var iframe = jQuery(YTPlayer.playerEl);
iframe.css("-webkit-filter", "");
iframe.css("filter", "");
YTPlayer.filtersEnabled = false;
})
},
/**
*
* @returns {*}
*/
enableFilters: function() {
return this.each(function() {
var YTPlayer = this;
var iframe = jQuery(YTPlayer.playerEl);
var filterStyle = "";
for (var key in YTPlayer.filters) {
if (YTPlayer.filters[key].value)
filterStyle += key.replace("_", "-") + "(" + YTPlayer.filters[key].value + YTPlayer.filters[key].unit + ") ";
}
iframe.css("-webkit-filter", filterStyle);
iframe.css("filter", filterStyle);
YTPlayer.filtersEnabled = true;
});
},
/**
*
* @param filter
* @param callback
* @returns {*}
*/
removeFilter: function(filter, callback) {
return this.each(function() {
var YTPlayer = this;
if (typeof filter == "function") {
callback = filter;
filter = null;
}
if (!filter)
for (var key in YTPlayer.filters) {
jQuery(this).YTPApplyFilter(key, 0);
if (typeof callback == "function") callback(key);
} else {
jQuery(this).YTPApplyFilter(filter, 0);
if (typeof callback == "function") callback(filter);
}
});
},
/**
*
* @returns {*}
*/
getFilters: function() {
var YTPlayer = this.get(0);
return YTPlayer.filters;
},
/**
* MASK
*
*
* @param mask
* @returns {jQuery.mbYTPlayer}
*/
addMask: function(mask) {
var YTPlayer = this.get(0);
var overlay = YTPlayer.overlay;
if (!mask) {
mask = YTPlayer.actualMask;
}
var tempImg = jQuery("<img/>").attr("src", mask).on("load", function() {
overlay.CSSAnimate({
opacity: 0
}, 500, function() {
YTPlayer.hasMask = true;
tempImg.remove();
overlay.css({
backgroundImage: "url(" + mask + ")",
backgroundRepeat: "no-repeat",
backgroundPosition: "center center",
backgroundSize: "cover"
});
overlay.CSSAnimate({
opacity: 1
}, 500);
});
});
return this;
},
/**
*
* @returns {jQuery.mbYTPlayer}
*/
removeMask: function() {
var YTPlayer = this.get(0);
var overlay = YTPlayer.overlay;
overlay.CSSAnimate({
opacity: 0
}, 500, function() {
YTPlayer.hasMask = false;
overlay.css({
backgroundImage: "",
backgroundRepeat: "",
backgroundPosition: "",
backgroundSize: ""
});
overlay.CSSAnimate({
opacity: 1
}, 500);
});
return this;
},
/**
*
* @param YTPlayer
*/
applyMask: function(YTPlayer) {
var $YTPlayer = jQuery(YTPlayer);
$YTPlayer.off("YTPTime.mask");
if (YTPlayer.opt.mask) {
if (typeof YTPlayer.opt.mask == "string") {
$YTPlayer.YTPAddMask(YTPlayer.opt.mask);
YTPlayer.actualMask = YTPlayer.opt.mask;
} else if (typeof YTPlayer.opt.mask == "object") {
for (var time in YTPlayer.opt.mask) {
if (YTPlayer.opt.mask[time])
var img = jQuery("<img/>").attr("src", YTPlayer.opt.mask[time]);
}
if (YTPlayer.opt.mask[0])
$YTPlayer.YTPAddMask(YTPlayer.opt.mask[0]);
$YTPlayer.on("YTPTime.mask", function(e) {
for (var time in YTPlayer.opt.mask) {
if (e.time == time)
if (!YTPlayer.opt.mask[time]) {
$YTPlayer.YTPRemoveMask();
} else {
$YTPlayer.YTPAddMask(YTPlayer.opt.mask[time]);
YTPlayer.actualMask = YTPlayer.opt.mask[time];
}
}
});
}
}
},
/**
*
*/
toggleMask: function() {
var YTPlayer = this.get(0);
var $YTPlayer = $(YTPlayer);
if (YTPlayer.hasMask)
$YTPlayer.YTPRemoveMask();
else
$YTPlayer.YTPAddMask();
return this;
},
/**
*
* @returns {{totalTime: number, currentTime: number}}
*/
manageProgress: function() {
var YTPlayer = this.get(0);
var controls = jQuery("#controlBar_" + YTPlayer.id);
var progressBar = controls.find(".mb_YTPProgress");
var loadedBar = controls.find(".mb_YTPLoaded");
var timeBar = controls.find(".mb_YTPseekbar");
var totW = progressBar.outerWidth();
var currentTime = Math.floor(YTPlayer.player.getCurrentTime());
var totalTime = Math.floor(YTPlayer.player.getDuration());
var timeW = (currentTime * totW) / totalTime;
var startLeft = 0;
var loadedW = YTPlayer.player.getVideoLoadedFraction() * 100;
loadedBar.css({
left: startLeft,
width: loadedW + "%"
});
timeBar.css({
left: 0,
width: timeW
});
return {
totalTime: totalTime,
currentTime: currentTime
};
},
/**
*
* @param YTPlayer
*/
buildControls: function(YTPlayer) {
var data = YTPlayer.opt;
// @data.printUrl: is deprecated; use data.showYTLogo
data.showYTLogo = data.showYTLogo || data.printUrl;
if (jQuery("#controlBar_" + YTPlayer.id).length)
return;
YTPlayer.controlBar = jQuery("<span/>").attr("id", "controlBar_" + YTPlayer.id).addClass("mb_YTPBar").css({
whiteSpace: "noWrap",
position: YTPlayer.isBackground ? "fixed" : "absolute",
zIndex: YTPlayer.isBackground ? 10000 : 1000
}).hide();
var buttonBar = jQuery("<div/>").addClass("buttonBar");
/* play/pause button*/
var playpause = jQuery("<span>" + jQuery.mbYTPlayer.controls.play + "</span>").addClass("mb_YTPPlaypause ytpicon").click(function() {
if (YTPlayer.player.getPlayerState() == 1) jQuery(YTPlayer).YTPPause();
else jQuery(YTPlayer).YTPPlay();
});
/* mute/unmute button*/
var MuteUnmute = jQuery("<span>" + jQuery.mbYTPlayer.controls.mute + "</span>").addClass("mb_YTPMuteUnmute ytpicon").click(function() {
if (YTPlayer.player.getVolume() == 0) {
jQuery(YTPlayer).YTPUnmute();
} else {
jQuery(YTPlayer).YTPMute();
}
});
/* volume bar*/
var volumeBar = jQuery("<div/>").addClass("mb_YTPVolumeBar").css({
display: "inline-block"
});
YTPlayer.volumeBar = volumeBar;
/* time elapsed */
var idx = jQuery("<span/>").addClass("mb_YTPTime");
var vURL = data.videoURL ? data.videoURL : "";
if (vURL.indexOf("http") < 0) vURL = jQuery.mbYTPlayer.locationProtocol + "//www.youtube.com/watch?v=" + data.videoURL;
var movieUrl = jQuery("<span/>").html(jQuery.mbYTPlayer.controls.ytLogo).addClass("mb_YTPUrl ytpicon").attr("title", "view on YouTube").on("click", function() {
window.open(vURL, "viewOnYT")
});
var onlyVideo = jQuery("<span/>").html(jQuery.mbYTPlayer.controls.onlyYT).addClass("mb_OnlyYT ytpicon").on("click", function() {
jQuery(YTPlayer).YTPFullscreen(data.realfullscreen);
});
var progressBar = jQuery("<div/>").addClass("mb_YTPProgress").css("position", "absolute").click(function(e) {
timeBar.css({
width: (e.clientX - timeBar.offset().left)
});
YTPlayer.timeW = e.clientX - timeBar.offset().left;
YTPlayer.controlBar.find(".mb_YTPLoaded").css({
width: 0
});
var totalTime = Math.floor(YTPlayer.player.getDuration());
YTPlayer.goto = (timeBar.outerWidth() * totalTime) / progressBar.outerWidth();
YTPlayer.player.seekTo(parseFloat(YTPlayer.goto), true);
YTPlayer.controlBar.find(".mb_YTPLoaded").css({
width: 0
});
});
var loadedBar = jQuery("<div/>").addClass("mb_YTPLoaded").css("position", "absolute");
var timeBar = jQuery("<div/>").addClass("mb_YTPseekbar").css("position", "absolute");
progressBar.append(loadedBar).append(timeBar);
buttonBar.append(playpause).append(MuteUnmute).append(volumeBar).append(idx);
if (data.showYTLogo) {
buttonBar.append(movieUrl);
}
if (YTPlayer.isBackground || (eval(YTPlayer.opt.realfullscreen) && !YTPlayer.isBackground)) buttonBar.append(onlyVideo);
YTPlayer.controlBar.append(buttonBar).append(progressBar);
if (!YTPlayer.isBackground) {
YTPlayer.controlBar.addClass("inlinePlayer");
YTPlayer.wrapper.before(YTPlayer.controlBar);
} else {
jQuery("body").after(YTPlayer.controlBar);
}
volumeBar.simpleSlider({
initialval: YTPlayer.opt.vol,
scale: 100,
orientation: "h",
callback: function(el) {
if (el.value == 0) {
jQuery(YTPlayer).YTPMute();
} else {
jQuery(YTPlayer).YTPUnmute();
}
YTPlayer.player.setVolume(el.value);
if (!YTPlayer.isMute) YTPlayer.opt.vol = el.value;
}
});
},
/**
*
* @param YTPlayer
*/
checkForState: function(YTPlayer) {
var interval = YTPlayer.opt.showControls ? 100 : 400;
clearInterval(YTPlayer.getState);
//Checking if player has been removed from scene
if (!jQuery.contains(document, YTPlayer)) {
jQuery(YTPlayer).YTPPlayerDestroy();
clearInterval(YTPlayer.getState);
clearInterval(YTPlayer.checkForStartAt);
return;
}
jQuery.mbYTPlayer.checkForStart(YTPlayer);
YTPlayer.getState = setInterval(function() {
var prog = jQuery(YTPlayer).YTPManageProgress();
var $YTPlayer = jQuery(YTPlayer);
var data = YTPlayer.opt;
var startAt = YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
var stopAt = YTPlayer.opt.stopAt > YTPlayer.opt.startAt ? YTPlayer.opt.stopAt : 0;
stopAt = stopAt < YTPlayer.player.getDuration() ? stopAt : 0;
if (YTPlayer.currentTime != prog.currentTime) {
var YTPEvent = jQuery.Event("YTPTime");
YTPEvent.time = YTPlayer.currentTime;
jQuery(YTPlayer).trigger(YTPEvent);
}
YTPlayer.currentTime = prog.currentTime;
YTPlayer.totalTime = YTPlayer.player.getDuration();
if (YTPlayer.player.getVolume() == 0) $YTPlayer.addClass("isMuted");
else $YTPlayer.removeClass("isMuted");
if (YTPlayer.opt.showControls)
if (prog.totalTime) {
YTPlayer.controlBar.find(".mb_YTPTime").html(jQuery.mbYTPlayer.formatTime(prog.currentTime) + " / " + jQuery.mbYTPlayer.formatTime(prog.totalTime));
} else {
YTPlayer.controlBar.find(".mb_YTPTime").html("-- : -- / -- : --");
}
if (eval(YTPlayer.opt.stopMovieOnBlur)) {
if (!document.hasFocus()) {
if (YTPlayer.state == 1) {
YTPlayer.hasFocus = false;
$YTPlayer.YTPPause();
}
} else if (document.hasFocus() && !YTPlayer.hasFocus && !(YTPlayer.state == -1 || YTPlayer.state == 0)) {
YTPlayer.hasFocus = true;
$YTPlayer.YTPPlay();
}
}
if (YTPlayer.controlBar.length && YTPlayer.controlBar.outerWidth() <= 400 && !YTPlayer.isCompact) {
YTPlayer.controlBar.addClass("compact");
YTPlayer.isCompact = true;
if (!YTPlayer.isMute && YTPlayer.volumeBar) YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol);
} else if (YTPlayer.controlBar.length && YTPlayer.controlBar.outerWidth() > 400 && YTPlayer.isCompact) {
YTPlayer.controlBar.removeClass("compact");
YTPlayer.isCompact = false;
if (!YTPlayer.isMute && YTPlayer.volumeBar) YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol);
}
if (YTPlayer.player.getPlayerState() == 1 && (parseFloat(YTPlayer.player.getDuration() - 1.5) < YTPlayer.player.getCurrentTime() || (stopAt > 0 && parseFloat(YTPlayer.player.getCurrentTime()) > stopAt))) {
if (YTPlayer.isEnded) return;
YTPlayer.isEnded = true;
setTimeout(function() {
YTPlayer.isEnded = false
}, 1000);
if (YTPlayer.isPlayList) {
if (!data.loop || (data.loop > 0 && YTPlayer.player.loopTime === data.loop - 1)) {
YTPlayer.player.loopTime = undefined;
clearInterval(YTPlayer.getState);
var YTPEnd = jQuery.Event("YTPEnd");
YTPEnd.time = YTPlayer.currentTime;
jQuery(YTPlayer).trigger(YTPEnd);
//YTPlayer.state = 0;
return;
}
} else if (!data.loop || (data.loop > 0 && YTPlayer.player.loopTime === data.loop - 1)) {
YTPlayer.player.loopTime = undefined;
YTPlayer.preventTrigger = true;
YTPlayer.state = 2;
jQuery(YTPlayer).YTPPause();
YTPlayer.wrapper.CSSAnimate({
opacity: 0
}, 500, function() {
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.find(".mb_YTPPlaypause").html(jQuery.mbYTPlayer.controls.play);
var YTPEnd = jQuery.Event("YTPEnd");
YTPEnd.time = YTPlayer.currentTime;
jQuery(YTPlayer).trigger(YTPEnd);
YTPlayer.player.seekTo(startAt, true);
if (!YTPlayer.isBackground) {
YTPlayer.opt.containment.css({
background: "rgba(0,0,0,0.5) url(" + YTPlayer.opt.backgroundUrl + ") center center",
backgroundSize: "cover"
});
}
});
return;
}
YTPlayer.player.loopTime = YTPlayer.player.loopTime ? ++YTPlayer.player.loopTime : 1;
startAt = startAt || 1;
YTPlayer.preventTrigger = true;
YTPlayer.state = 2;
jQuery(YTPlayer).YTPPause();
YTPlayer.player.seekTo(startAt, true);
$YTPlayer.YTPPlay();
}
}, interval);
},
/**
*
* @returns {string} time
*/
getTime: function() {
var YTPlayer = this.get(0);
return jQuery.mbYTPlayer.formatTime(YTPlayer.currentTime);
},
/**
*
* @returns {string} total time
*/
getTotalTime: function() {
var YTPlayer = this.get(0);
return jQuery.mbYTPlayer.formatTime(YTPlayer.totalTime);
},
/**
*
* @param YTPlayer
*/
checkForStart: function(YTPlayer) {
var $YTPlayer = jQuery(YTPlayer);
//Checking if player has been removed from scene
if (!jQuery.contains(document, YTPlayer)) {
jQuery(YTPlayer).YTPPlayerDestroy();
return
}
/*
if( jQuery.browser.chrome )
YTPlayer.opt.quality = "default";
*/
YTPlayer.preventTrigger = true;
YTPlayer.state = 2
jQuery(YTPlayer).YTPPause();
jQuery(YTPlayer).muteYTPVolume();
jQuery("#controlBar_" + YTPlayer.id).remove();
YTPlayer.controlBar = false;
if (YTPlayer.opt.showControls)
jQuery.mbYTPlayer.buildControls(YTPlayer);
if (YTPlayer.opt.addRaster) {
var classN = YTPlayer.opt.addRaster == "dot" ? "raster-dot" : "raster";
YTPlayer.overlay.addClass(YTPlayer.isRetina ? classN + " retina" : classN);
} else {
YTPlayer.overlay.removeClass(function(index, classNames) {
// change the list into an array
var current_classes = classNames.split(" "),
// array of classes which are to be removed
classes_to_remove = [];
jQuery.each(current_classes, function(index, class_name) {
// if the classname begins with bg add it to the classes_to_remove array
if (/raster.*/.test(class_name)) {
classes_to_remove.push(class_name);
}
});
classes_to_remove.push("retina");
// turn the array back into a string
return classes_to_remove.join(" ");
})
}
var startAt = YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
YTPlayer.player.playVideo();
YTPlayer.player.seekTo(startAt, true);
YTPlayer.checkForStartAt = setInterval(function() {
jQuery(YTPlayer).YTPMute();
var canPlayVideo = YTPlayer.player.getVideoLoadedFraction() >= startAt / YTPlayer.player.getDuration();
if (YTPlayer.player.getDuration() > 0 && YTPlayer.player.getCurrentTime() >= startAt && canPlayVideo) {
//YTPlayer.player.playVideo();
//console.timeEnd( "checkforStart" );
clearInterval(YTPlayer.checkForStartAt);
if (typeof YTPlayer.opt.onReady == "function")
YTPlayer.opt.onReady(YTPlayer);
YTPlayer.isReady = true;
var YTPready = jQuery.Event("YTPReady");
YTPready.time = YTPlayer.currentTime;
jQuery(YTPlayer).trigger(YTPready);
YTPlayer.preventTrigger = true;
YTPlayer.state = 2;
jQuery(YTPlayer).YTPPause();
if (!YTPlayer.opt.mute) jQuery(YTPlayer).YTPUnmute();
YTPlayer.canTrigger = true;
if (YTPlayer.opt.autoPlay) {
var YTPStart = jQuery.Event("YTPStart");
YTPStart.time = YTPlayer.currentTime;
jQuery(YTPlayer).trigger(YTPStart);
$YTPlayer.css("background-image", "none");
jQuery(YTPlayer.playerEl).CSSAnimate({
opacity: 1
}, 1000);
$YTPlayer.YTPPlay();
YTPlayer.wrapper.CSSAnimate({
opacity: YTPlayer.isAlone ? 1 : YTPlayer.opt.opacity
}, 1000);
/* Fix for Safari freeze */
if (jQuery.browser.safari) {
YTPlayer.safariPlay = setInterval(function() {
if (YTPlayer.state != 1)
$YTPlayer.YTPPlay();
else
clearInterval(YTPlayer.safariPlay)
}, 10)
}
$YTPlayer.on("YTPReady", function() {
$YTPlayer.YTPPlay();
});
} else {
//$YTPlayer.YTPPause();
YTPlayer.player.pauseVideo();
if (!YTPlayer.isPlayer) {
jQuery(YTPlayer.playerEl).CSSAnimate({
opacity: 1
}, 500);
YTPlayer.wrapper.CSSAnimate({
opacity: YTPlayer.isAlone ? 1 : YTPlayer.opt.opacity
}, 500);
}
if (YTPlayer.controlBar.length)
YTPlayer.controlBar.find(".mb_YTPPlaypause").html(jQuery.mbYTPlayer.controls.play);
}
if (YTPlayer.isPlayer && !YTPlayer.opt.autoPlay && (YTPlayer.loading && YTPlayer.loading.length)) {
YTPlayer.loading.html("Ready");
setTimeout(function() {
YTPlayer.loading.fadeOut();
}, 100)
}
if (YTPlayer.controlBar && YTPlayer.controlBar.length)
YTPlayer.controlBar.slideDown(1000);
} else if (jQuery.browser.safari) {
YTPlayer.player.playVideo();
if (startAt >= 0) YTPlayer.player.seekTo(startAt, true);
}
}, 1);
},
/**
*
* @param align
*/
setAlign: function(align) {
var $YTplayer = this;
$YTplayer.optimizeDisplay(align);
},
/**
*
* @param align
*/
getAlign: function() {
var YTPlayer = this.get(0);
return YTPlayer.opt.align;
},
/**
*
* @param s
* @returns {string}
*/
formatTime: function(s) {
var min = Math.floor(s / 60);
var sec = Math.floor(s - (60 * min));
return (min <= 9 ? "0" + min : min) + " : " + (sec <= 9 ? "0" + sec : sec);
}
};
/**
*
* @param align
* can be center, top, bottom, right, left; (default is center,center)
*/
jQuery.fn.optimizeDisplay = function(align) {
var YTPlayer = this.get(0);
var playerBox = jQuery(YTPlayer.playerEl);
var vid = {};
YTPlayer.opt.align = align || YTPlayer.opt.align;
YTPlayer.opt.align = typeof YTPlayer.opt.align != "undefined " ? YTPlayer.opt.align : "center,center";
var YTPAlign = YTPlayer.opt.align.split(",");
//data.optimizeDisplay = YTPlayer.isPlayer ? false : data.optimizeDisplay;
if (YTPlayer.opt.optimizeDisplay) {
var win = {};
var el = YTPlayer.wrapper;
win.width = el.outerWidth();
win.height = el.outerHeight();
vid.width = win.width + 100;
vid.height = YTPlayer.opt.ratio == "16/9" ? Math.ceil(vid.width * (9 / 16)) : Math.ceil(vid.width * (3 / 4));
vid.marginTop = -((vid.height - win.height) / 2);
vid.marginLeft = 0;
var lowest = vid.height < win.height;
if (lowest) {
vid.height = win.height;
vid.width = YTPlayer.opt.ratio == "16/9" ? Math.floor(win.height * (16 / 9)) : Math.floor(win.height * (4 / 3));
vid.marginTop = 0;
vid.marginLeft = -((vid.width - win.width) / 2);
}
for (var a in YTPAlign) {
//var al = YTPAlign[ a ].trim();
var al = YTPAlign[a].replace(/ /g, "");
switch (al) {
case "top":
vid.marginTop = lowest ? -((vid.height - win.height) / 2) : 0;
break;
case "bottom":
vid.marginTop = lowest ? 0 : -(vid.height - win.height);
break;
case "left":
vid.marginLeft = 0;
break;
case "right":
vid.marginLeft = lowest ? -(vid.width - win.width) : 0;
break;
default:
break;
}
}
} else {
vid.width = "100%";
vid.height = "100%";
vid.marginTop = 0;
vid.marginLeft = 0;
}
playerBox.css({
width: vid.width,
height: vid.height,
marginTop: vid.marginTop,
marginLeft: vid.marginLeft
});
};
/**
*
* @param arr
* @returns {Array|string|Blob|*}
*
*/
jQuery.shuffle = function(arr) {
var newArray = arr.slice();
var len = newArray.length;
var i = len;
while (i--) {
var p = parseInt(Math.random() * len);
var t = newArray[i];
newArray[i] = newArray[p];
newArray[p] = t;
}
return newArray;
};
jQuery.fn.unselectable = function() {
return this.each(function() {
jQuery(this).css({
"-moz-user-select": "none",
"-webkit-user-select": "none",
"user-select": "none"
}).attr("unselectable", "on");
});
};
/* Exposed public method */
jQuery.fn.YTPlayer = jQuery.mbYTPlayer.buildPlayer;
jQuery.fn.YTPGetPlayer = jQuery.mbYTPlayer.getPlayer;
jQuery.fn.YTPGetVideoID = jQuery.mbYTPlayer.getVideoID;
jQuery.fn.YTPChangeMovie = jQuery.mbYTPlayer.changeMovie;
jQuery.fn.YTPPlayerDestroy = jQuery.mbYTPlayer.playerDestroy;
jQuery.fn.YTPPlay = jQuery.mbYTPlayer.play;
jQuery.fn.YTPTogglePlay = jQuery.mbYTPlayer.togglePlay;
jQuery.fn.YTPStop = jQuery.mbYTPlayer.stop;
jQuery.fn.YTPPause = jQuery.mbYTPlayer.pause;
jQuery.fn.YTPSeekTo = jQuery.mbYTPlayer.seekTo;
jQuery.fn.YTPlaylist = jQuery.mbYTPlayer.playlist;
jQuery.fn.YTPPlayNext = jQuery.mbYTPlayer.playNext;
jQuery.fn.YTPPlayPrev = jQuery.mbYTPlayer.playPrev;
jQuery.fn.YTPPlayIndex = jQuery.mbYTPlayer.playIndex;
jQuery.fn.YTPMute = jQuery.mbYTPlayer.mute;
jQuery.fn.YTPUnmute = jQuery.mbYTPlayer.unmute;
jQuery.fn.YTPToggleVolume = jQuery.mbYTPlayer.toggleVolume;
jQuery.fn.YTPSetVolume = jQuery.mbYTPlayer.setVolume;
jQuery.fn.YTPGetVideoData = jQuery.mbYTPlayer.getVideoData;
jQuery.fn.YTPFullscreen = jQuery.mbYTPlayer.fullscreen;
jQuery.fn.YTPToggleLoops = jQuery.mbYTPlayer.toggleLoops;
jQuery.fn.YTPSetVideoQuality = jQuery.mbYTPlayer.setVideoQuality;
jQuery.fn.YTPManageProgress = jQuery.mbYTPlayer.manageProgress;
jQuery.fn.YTPApplyFilter = jQuery.mbYTPlayer.applyFilter;
jQuery.fn.YTPApplyFilters = jQuery.mbYTPlayer.applyFilters;
jQuery.fn.YTPToggleFilter = jQuery.mbYTPlayer.toggleFilter;
jQuery.fn.YTPToggleFilters = jQuery.mbYTPlayer.toggleFilters;
jQuery.fn.YTPRemoveFilter = jQuery.mbYTPlayer.removeFilter;
jQuery.fn.YTPDisableFilters = jQuery.mbYTPlayer.disableFilters;
jQuery.fn.YTPEnableFilters = jQuery.mbYTPlayer.enableFilters;
jQuery.fn.YTPGetFilters = jQuery.mbYTPlayer.getFilters;
jQuery.fn.YTPGetTime = jQuery.mbYTPlayer.getTime;
jQuery.fn.YTPGetTotalTime = jQuery.mbYTPlayer.getTotalTime;
jQuery.fn.YTPAddMask = jQuery.mbYTPlayer.addMask;
jQuery.fn.YTPRemoveMask = jQuery.mbYTPlayer.removeMask;
jQuery.fn.YTPToggleMask = jQuery.mbYTPlayer.toggleMask;
jQuery.fn.YTPSetAlign = jQuery.mbYTPlayer.setAlign;
jQuery.fn.YTPGetAlign = jQuery.mbYTPlayer.getAlign;
/**
*
* @deprecated
* todo: Above methods will be removed with version 3.5.0
*
**/
jQuery.fn.mb_YTPlayer = jQuery.mbYTPlayer.buildPlayer;
jQuery.fn.playNext = jQuery.mbYTPlayer.playNext;
jQuery.fn.playPrev = jQuery.mbYTPlayer.playPrev;
jQuery.fn.changeMovie = jQuery.mbYTPlayer.changeMovie;
jQuery.fn.getVideoID = jQuery.mbYTPlayer.getVideoID;
jQuery.fn.getPlayer = jQuery.mbYTPlayer.getPlayer;
jQuery.fn.playerDestroy = jQuery.mbYTPlayer.playerDestroy;
jQuery.fn.fullscreen = jQuery.mbYTPlayer.fullscreen;
jQuery.fn.buildYTPControls = jQuery.mbYTPlayer.buildControls;
jQuery.fn.playYTP = jQuery.mbYTPlayer.play;
jQuery.fn.toggleLoops = jQuery.mbYTPlayer.toggleLoops;
jQuery.fn.stopYTP = jQuery.mbYTPlayer.stop;
jQuery.fn.pauseYTP = jQuery.mbYTPlayer.pause;
jQuery.fn.seekToYTP = jQuery.mbYTPlayer.seekTo;
jQuery.fn.muteYTPVolume = jQuery.mbYTPlayer.mute;
jQuery.fn.unmuteYTPVolume = jQuery.mbYTPlayer.unmute;
jQuery.fn.setYTPVolume = jQuery.mbYTPlayer.setVolume;
jQuery.fn.setVideoQuality = jQuery.mbYTPlayer.setVideoQuality;
jQuery.fn.manageYTPProgress = jQuery.mbYTPlayer.manageProgress;
jQuery.fn.YTPGetDataFromFeed = jQuery.mbYTPlayer.getVideoData;
})(jQuery, ytp);;
/*
* ******************************************************************************
* jquery.mb.components
* file: jquery.mb.CSSAnimate.min.js
*
* Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
* Open lab srl, Firenze - Italy
* email: matteo@open-lab.com
* site: http://pupunzi.com
* blog: http://pupunzi.open-lab.com
* http://open-lab.com
*
* Licences: MIT, GPL
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* last modified: 26/03/14 21.40
* *****************************************************************************
*/
window.uncamel = function (e) {
return e.replace(/([A-Z])/g, function(e) {
return "-" + e.toLowerCase()
})
}
window.setUnit = function (e, t) {
return "string" != typeof e || e.match(/^[\-0-9\.]+jQuery/) ? "" + e + t : e
}
window.setFilter = function (e, t, r) {
var i = uncamel(t),
n = jQuery.browser.mozilla ? "" : jQuery.CSS.sfx;
e[n + "filter"] = e[n + "filter"] || "", r = setUnit(r > jQuery.CSS.filters[t].max ? jQuery.CSS.filters[t].max : r, jQuery.CSS.filters[t].unit), e[n + "filter"] += i + "(" + r + ") ", delete e[t]
}
jQuery.support.CSStransition = function() {
var e = document.body || document.documentElement,
t = e.style;
return void 0 !== t.transition || void 0 !== t.WebkitTransition || void 0 !== t.MozTransition || void 0 !== t.MsTransition || void 0 !== t.OTransition
}(), jQuery.CSS = {
name: "mb.CSSAnimate",
author: "Matteo Bicocchi",
version: "2.0.0",
transitionEnd: "transitionEnd",
sfx: "",
filters: {
blur: {
min: 0,
max: 100,
unit: "px"
},
brightness: {
min: 0,
max: 400,
unit: "%"
},
contrast: {
min: 0,
max: 400,
unit: "%"
},
grayscale: {
min: 0,
max: 100,
unit: "%"
},
hueRotate: {
min: 0,
max: 360,
unit: "deg"
},
invert: {
min: 0,
max: 100,
unit: "%"
},
saturate: {
min: 0,
max: 400,
unit: "%"
},
sepia: {
min: 0,
max: 100,
unit: "%"
}
},
normalizeCss: function(e) {
var t = jQuery.extend(!0, {}, e);
jQuery.browser.webkit || jQuery.browser.opera ? jQuery.CSS.sfx = "-webkit-" : jQuery.browser.mozilla ? jQuery.CSS.sfx = "-moz-" : jQuery.browser.msie && (jQuery.CSS.sfx = "-ms-");
for (var r in t) {
"transform" === r && (t[jQuery.CSS.sfx + "transform"] = t[r], delete t[r]), "transform-origin" === r && (t[jQuery.CSS.sfx + "transform-origin"] = e[r], delete t[r]), "filter" !== r || jQuery.browser.mozilla || (t[jQuery.CSS.sfx + "filter"] = e[r], delete t[r]), "blur" === r && setFilter(t, "blur", e[r]), "brightness" === r && setFilter(t, "brightness", e[r]), "contrast" === r && setFilter(t, "contrast", e[r]), "grayscale" === r && setFilter(t, "grayscale", e[r]), "hueRotate" === r && setFilter(t, "hueRotate", e[r]), "invert" === r && setFilter(t, "invert", e[r]), "saturate" === r && setFilter(t, "saturate", e[r]), "sepia" === r && setFilter(t, "sepia", e[r]);
var i = "";
"x" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " translateX(" + setUnit(e[r], "px") + ")", delete t[r]), "y" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " translateY(" + setUnit(e[r], "px") + ")", delete t[r]), "z" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " translateZ(" + setUnit(e[r], "px") + ")", delete t[r]), "rotate" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " rotate(" + setUnit(e[r], "deg") + ")", delete t[r]), "rotateX" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " rotateX(" + setUnit(e[r], "deg") + ")", delete t[r]), "rotateY" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " rotateY(" + setUnit(e[r], "deg") + ")", delete t[r]), "rotateZ" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " rotateZ(" + setUnit(e[r], "deg") + ")", delete t[r]), "scale" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " scale(" + setUnit(e[r], "") + ")", delete t[r]), "scaleX" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " scaleX(" + setUnit(e[r], "") + ")", delete t[r]), "scaleY" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " scaleY(" + setUnit(e[r], "") + ")", delete t[r]), "scaleZ" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " scaleZ(" + setUnit(e[r], "") + ")", delete t[r]), "skew" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " skew(" + setUnit(e[r], "deg") + ")", delete t[r]), "skewX" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " skewX(" + setUnit(e[r], "deg") + ")", delete t[r]), "skewY" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " skewY(" + setUnit(e[r], "deg") + ")", delete t[r]), "perspective" === r && (i = jQuery.CSS.sfx + "transform", t[i] = t[i] || "", t[i] += " perspective(" + setUnit(e[r], "px") + ")", delete t[r])
}
return t
},
getProp: function(e) {
var t = [];
for (var r in e) t.indexOf(r) < 0 && t.push(uncamel(r));
return t.join(",")
},
animate: function(e, t, r, i, n) {
return this.each(function() {
function s() {
u.called = !0, u.CSSAIsRunning = !1, a.off(jQuery.CSS.transitionEnd + "." + u.id), clearTimeout(u.timeout), a.css(jQuery.CSS.sfx + "transition", ""), "function" == typeof n && n.apply(u), "function" == typeof u.CSSqueue && (u.CSSqueue(), u.CSSqueue = null)
}
var u = this,
a = jQuery(this);
u.id = u.id || "CSSA_" + (new Date).getTime();
var o = o || {
type: "noEvent"
};
if (u.CSSAIsRunning && u.eventType == o.type && !jQuery.browser.msie && jQuery.browser.version <= 9) return void(u.CSSqueue = function() {
a.CSSAnimate(e, t, r, i, n)
});
if (u.CSSqueue = null, u.eventType = o.type, 0 !== a.length && e) {
if (e = jQuery.normalizeCss(e), u.CSSAIsRunning = !0, "function" == typeof t && (n = t, t = jQuery.fx.speeds._default), "function" == typeof r && (i = r, r = 0), "string" == typeof r && (n = r, r = 0), "function" == typeof i && (n = i, i = "cubic-bezier(0.65,0.03,0.36,0.72)"), "string" == typeof t)
for (var f in jQuery.fx.speeds) {
if (t == f) {
t = jQuery.fx.speeds[f];
break
}
t = jQuery.fx.speeds._default
}
if (t || (t = jQuery.fx.speeds._default), "string" == typeof n && (i = n, n = null), !jQuery.support.CSStransition) {
for (var c in e) {
if ("transform" === c && delete e[c], "filter" === c && delete e[c], "transform-origin" === c && delete e[c], "auto" === e[c] && delete e[c], "x" === c) {
var S = e[c],
l = "left";
e[l] = S, delete e[c]
}
if ("y" === c) {
var S = e[c],
l = "top";
e[l] = S, delete e[c]
}("-ms-transform" === c || "-ms-filter" === c) && delete e[c]
}
return void a.delay(r).animate(e, t, n)
}
var y = {
"default": "ease",
"in": "ease-in",
out: "ease-out",
"in-out": "ease-in-out",
snap: "cubic-bezier(0,1,.5,1)",
easeOutCubic: "cubic-bezier(.215,.61,.355,1)",
easeInOutCubic: "cubic-bezier(.645,.045,.355,1)",
easeInCirc: "cubic-bezier(.6,.04,.98,.335)",
easeOutCirc: "cubic-bezier(.075,.82,.165,1)",
easeInOutCirc: "cubic-bezier(.785,.135,.15,.86)",
easeInExpo: "cubic-bezier(.95,.05,.795,.035)",
easeOutExpo: "cubic-bezier(.19,1,.22,1)",
easeInOutExpo: "cubic-bezier(1,0,0,1)",
easeInQuad: "cubic-bezier(.55,.085,.68,.53)",
easeOutQuad: "cubic-bezier(.25,.46,.45,.94)",
easeInOutQuad: "cubic-bezier(.455,.03,.515,.955)",
easeInQuart: "cubic-bezier(.895,.03,.685,.22)",
easeOutQuart: "cubic-bezier(.165,.84,.44,1)",
easeInOutQuart: "cubic-bezier(.77,0,.175,1)",
easeInQuint: "cubic-bezier(.755,.05,.855,.06)",
easeOutQuint: "cubic-bezier(.23,1,.32,1)",
easeInOutQuint: "cubic-bezier(.86,0,.07,1)",
easeInSine: "cubic-bezier(.47,0,.745,.715)",
easeOutSine: "cubic-bezier(.39,.575,.565,1)",
easeInOutSine: "cubic-bezier(.445,.05,.55,.95)",
easeInBack: "cubic-bezier(.6,-.28,.735,.045)",
easeOutBack: "cubic-bezier(.175, .885,.32,1.275)",
easeInOutBack: "cubic-bezier(.68,-.55,.265,1.55)"
};
y[i] && (i = y[i]), a.off(jQuery.CSS.transitionEnd + "." + u.id);
var m = jQuery.CSS.getProp(e),
d = {};
jQuery.extend(d, e), d[jQuery.CSS.sfx + "transition-property"] = m, d[jQuery.CSS.sfx + "transition-duration"] = t + "ms", d[jQuery.CSS.sfx + "transition-delay"] = r + "ms", d[jQuery.CSS.sfx + "transition-timing-function"] = i, setTimeout(function() {
a.one(jQuery.CSS.transitionEnd + "." + u.id, s), a.css(d)
}, 1), u.timeout = setTimeout(function() {
return u.called || !n ? (u.called = !1, void(u.CSSAIsRunning = !1)) : (a.css(jQuery.CSS.sfx + "transition", ""), n.apply(u), u.CSSAIsRunning = !1, void("function" == typeof u.CSSqueue && (u.CSSqueue(), u.CSSqueue = null)))
}, t + r + 10)
}
})
}
}, jQuery.fn.CSSAnimate = jQuery.CSS.animate, jQuery.normalizeCss = jQuery.CSS.normalizeCss, jQuery.fn.css3 = function(e) {
return this.each(function() {
var t = jQuery(this),
r = jQuery.normalizeCss(e);
t.css(r)
})
};;
/*
* ******************************************************************************
* jquery.mb.components
* file: jquery.mb.browser.min.js
*
* Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
* Open lab srl, Firenze - Italy
* email: matteo@open-lab.com
* site: http://pupunzi.com
* blog: http://pupunzi.open-lab.com
* http://open-lab.com
*
* Licences: MIT, GPL
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* last modified: 26/03/14 21.43
* *****************************************************************************
*/
window.nAgt = navigator.userAgent;
if (!jQuery.browser) {
jQuery.browser = {}, jQuery.browser.mozilla = !1, jQuery.browser.webkit = !1, jQuery.browser.opera = !1, jQuery.browser.safari = !1, jQuery.browser.chrome = !1, jQuery.browser.androidStock = !1, jQuery.browser.msie = !1, jQuery.browser.ua = nAgt, jQuery.browser.name = navigator.appName, jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);
var nameOffset, verOffset, ix;
if (-1 != (verOffset = nAgt.indexOf("Opera"))) jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 6), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8));
else if (-1 != (verOffset = nAgt.indexOf("OPR"))) jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 4);
else if (-1 != (verOffset = nAgt.indexOf("MSIE"))) jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer", jQuery.browser.fullVersion = nAgt.substring(verOffset + 5);
else if (-1 != nAgt.indexOf("Trident") || -1 != nAgt.indexOf("Edge")) {
jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer";
var start = nAgt.indexOf("rv:") + 3,
end = start + 4;
jQuery.browser.fullVersion = nAgt.substring(start, end)
} else -1 != (verOffset = nAgt.indexOf("Chrome")) ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = "Chrome", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7)) : nAgt.indexOf("mozilla/5.0") > -1 && nAgt.indexOf("android ") > -1 && nAgt.indexOf("applewebkit") > -1 && !(nAgt.indexOf("chrome") > -1) ? (verOffset = nAgt.indexOf("Chrome"), jQuery.browser.webkit = !0, jQuery.browser.androidStock = !0, jQuery.browser.name = "androidStock", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7)) : -1 != (verOffset = nAgt.indexOf("Safari")) ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("AppleWebkit")) ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("Firefox")) ? (jQuery.browser.mozilla = !0, jQuery.browser.name = "Firefox", jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)) : (nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/")) && (jQuery.browser.name = nAgt.substring(nameOffset, verOffset), jQuery.browser.fullVersion = nAgt.substring(verOffset + 1), jQuery.browser.name.toLowerCase() == jQuery.browser.name.toUpperCase() && (jQuery.browser.name = navigator.appName)); - 1 != (ix = jQuery.browser.fullVersion.indexOf(";")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), -1 != (ix = jQuery.browser.fullVersion.indexOf(" ")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), jQuery.browser.majorVersion = parseInt("" + jQuery.browser.fullVersion, 10), isNaN(jQuery.browser.majorVersion) && (jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10)), jQuery.browser.version = jQuery.browser.majorVersion
}
jQuery.browser.android = /Android/i.test(nAgt), jQuery.browser.blackberry = /BlackBerry|BB|PlayBook/i.test(nAgt), jQuery.browser.ios = /iPhone|iPad|iPod|webOS/i.test(nAgt), jQuery.browser.operaMobile = /Opera Mini/i.test(nAgt), jQuery.browser.windowsMobile = /IEMobile|Windows Phone/i.test(nAgt), jQuery.browser.kindle = /Kindle|Silk/i.test(nAgt), jQuery.browser.mobile = jQuery.browser.android || jQuery.browser.blackberry || jQuery.browser.ios || jQuery.browser.windowsMobile || jQuery.browser.operaMobile || jQuery.browser.kindle, jQuery.isMobile = jQuery.browser.mobile, jQuery.isTablet = jQuery.browser.mobile && jQuery(window).width() > 765, jQuery.isAndroidDefault = jQuery.browser.android && !/chrome/i.test(nAgt);;
/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.simpleSlider.min.js _
_ last modified: 16/05/15 23.45 _
_ _
_ Open Lab s.r.l., Florence - Italy _
_ _
_ email: matteo@open-lab.com _
_ site: http://pupunzi.com _
_ http://open-lab.com _
_ blog: http://pupunzi.open-lab.com _
_ Q&A: http://jquery.pupunzi.com _
_ _
_ Licences: MIT, GPL _
_ http://www.opensource.org/licenses/mit-license.php _
_ http://www.gnu.org/licenses/gpl.html _
_ _
_ Copyright (c) 2001-2015. Matteo Bicocchi (Pupunzi); _
___________________________________________________________________________________________________________________________________________________*/
! function(e) {
var t = (/iphone|ipod|ipad|android|ie|blackberry|fennec/.test(navigator.userAgent.toLowerCase()), "ontouchstart" in window || window.navigator && window.navigator.msPointerEnabled && window.MSGesture || window.DocumentTouch && document instanceof DocumentTouch || !1);
e.simpleSlider = {
defaults: {
initialval: 0,
scale: 100,
orientation: "h",
readonly: !1,
callback: !1
},
events: {
start: t ? "touchstart" : "mousedown",
end: t ? "touchend" : "mouseup",
move: t ? "touchmove" : "mousemove"
},
init: function(o) {
return this.each(function() {
var a = this,
l = e(a);
l.addClass("simpleSlider"), a.opt = {}, e.extend(a.opt, e.simpleSlider.defaults, o), e.extend(a.opt, l.data());
var i = "h" == a.opt.orientation ? "horizontal" : "vertical",
n = e("<div/>").addClass("level").addClass(i);
l.prepend(n), a.level = n, l.css({
cursor: "default"
}), "auto" == a.opt.scale && (a.opt.scale = e(a).outerWidth()), l.updateSliderVal(), a.opt.readonly || (l.on(e.simpleSlider.events.start, function(e) {
t && (e = e.changedTouches[0]), a.canSlide = !0, l.updateSliderVal(e), l.css({
cursor: "col-resize"
}), e.preventDefault(), e.stopPropagation()
}), e(document).on(e.simpleSlider.events.move, function(o) {
t && (o = o.changedTouches[0]), a.canSlide && (e(document).css({
cursor: "default"
}), l.updateSliderVal(o), o.preventDefault(), o.stopPropagation())
}).on(e.simpleSlider.events.end, function() {
e(document).css({
cursor: "auto"
}), a.canSlide = !1, l.css({
cursor: "auto"
})
}))
})
},
updateSliderVal: function(t) {
function o(e, t) {
return Math.floor(100 * e / t)
}
var a = this,
l = a.get(0);
if (l.opt) {
l.opt.initialval = "number" == typeof l.opt.initialval ? l.opt.initialval : l.opt.initialval(l);
var i = e(l).outerWidth(),
n = e(l).outerHeight();
l.x = "object" == typeof t ? t.clientX + document.body.scrollLeft - a.offset().left : "number" == typeof t ? t * i / l.opt.scale : l.opt.initialval * i / l.opt.scale, l.y = "object" == typeof t ? t.clientY + document.body.scrollTop - a.offset().top : "number" == typeof t ? (l.opt.scale - l.opt.initialval - t) * n / l.opt.scale : l.opt.initialval * n / l.opt.scale, l.y = a.outerHeight() - l.y, l.scaleX = l.x * l.opt.scale / i, l.scaleY = l.y * l.opt.scale / n, l.outOfRangeX = l.scaleX > l.opt.scale ? l.scaleX - l.opt.scale : l.scaleX < 0 ? l.scaleX : 0, l.outOfRangeY = l.scaleY > l.opt.scale ? l.scaleY - l.opt.scale : l.scaleY < 0 ? l.scaleY : 0, l.outOfRange = "h" == l.opt.orientation ? l.outOfRangeX : l.outOfRangeY, "undefined" != typeof t ? l.value = "h" == l.opt.orientation ? l.x >= a.outerWidth() ? l.opt.scale : l.x <= 0 ? 0 : l.scaleX : l.y >= a.outerHeight() ? l.opt.scale : l.y <= 0 ? 0 : l.scaleY : l.value = "h" == l.opt.orientation ? l.scaleX : l.scaleY, "h" == l.opt.orientation ? l.level.width(o(l.x, i) + "%") : l.level.height(o(l.y, n)), "function" == typeof l.opt.callback && l.opt.callback(l)
}
}
}, e.fn.simpleSlider = e.simpleSlider.init, e.fn.updateSliderVal = e.simpleSlider.updateSliderVal
}(jQuery);;
/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.storage.min.js _
_ last modified: 24/05/15 16.08 _
_ _
_ Open Lab s.r.l., Florence - Italy _
_ _
_ email: matteo@open-lab.com _
_ site: http://pupunzi.com _
_ http://open-lab.com _
_ blog: http://pupunzi.open-lab.com _
_ Q&A: http://jquery.pupunzi.com _
_ _
_ Licences: MIT, GPL _
_ http://www.opensource.org/licenses/mit-license.php _
_ http://www.gnu.org/licenses/gpl.html _
_ _
_ Copyright (c) 2001-2015. Matteo Bicocchi (Pupunzi); _
___________________________________________________________________________________________________________________________________________________*/
! function(a) {
a.mbCookie = {
set: function(a, b, c, d) {
b = JSON.stringify(b), c || (c = 7), d = d ? "; domain=" + d : "";
var f, e = new Date;
e.setTime(e.getTime() + 1e3 * 60 * 60 * 24 * c), f = "; expires=" + e.toGMTString(), document.cookie = a + "=" + b + f + "; path=/" + d
},
get: function(a) {
for (var b = a + "=", c = document.cookie.split(";"), d = 0; d < c.length; d++) {
for (var e = c[d];
" " == e.charAt(0);) e = e.substring(1, e.length);
if (0 == e.indexOf(b)) return JSON.parse(e.substring(b.length, e.length))
}
return null
},
remove: function(b) {
a.mbCookie.set(b, "", -1)
}
}, a.mbStorage = {
set: function(a, b) {
b = JSON.stringify(b), localStorage.setItem(a, b)
},
get: function(a) {
return localStorage[a] ? JSON.parse(localStorage[a]) : null
},
remove: function(a) {
a ? localStorage.removeItem(a) : localStorage.clear()
}
}
}(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment