$(document).ready(function () { function initializePlayerAPI(urlApi, callback) { var tagPlayerApi = document.createElement('script'); tagPlayerApi.src = urlApi; if (callback) { tagPlayerApi.addEventListener("load", callback); } var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tagPlayerApi, firstScriptTag); } matriz.utils.media = { Playlist: function ($matrizMediaPlaylistContainer) { var $matrizMediaPlayerContainer; var $mediaCollection; var $media; function __construct() { $mediaCollection = $matrizMediaPlaylistContainer.find(".matriz-media-list").children(); $media = $mediaCollection.eq(0); initializePlayer(); initializeAction(); } function initializePlayer() { $matrizMediaPlayerContainer = $matrizMediaPlaylistContainer.find(".matriz-media-player"); $matrizMediaPlayerContainer.matrizMediaPlayer({ listeners: { onEnd: function () { next(); } } }); } function initializeAction() { $mediaCollection.on("click", function () { play($(this)); }); $matrizMediaPlaylistContainer.find("[data-matriz-action=first]").on("click", function () { first(); }); $matrizMediaPlaylistContainer.find("[data-matriz-action=previous]").on("click", function () { previous(); }); $matrizMediaPlaylistContainer.find("[data-matriz-action=next]").on("click", function () { next(); }); $matrizMediaPlaylistContainer.find("[data-matriz-action=last]").on("click", function () { last(); }); } function play($mediaToPlay) { if ($mediaToPlay.is("li")) { $media.removeClass("matriz-ui-selected"); $media = $mediaToPlay; $media.addClass("matriz-ui-selected"); var $mediaData = $mediaToPlay.find("a"); $matrizMediaPlayerContainer.matrizMediaPlayer("play", { "title": $mediaData.data("matriz-player-title"), "subtitle": $mediaData.data("matriz-player-subtitle"), "uri": $mediaData.data("matriz-player-uri"), "mimetype": $mediaData.data("matriz-player-mimetype") }); } } function first() { play($mediaCollection.first()); } function previous() { play($media.prev()); } function next() { play($media.next()); } function last() { play($mediaCollection.last()); } __construct(); }, MimeType: function (mimeTemplate) { var mimeParts = mimeTemplate.split("/"); this.type = mimeParts[0]; this.subtype = mimeParts[1]; if (matriz.utils.media.MimeType.formats[this.type]) { this.extension = matriz.utils.media.MimeType.formats[this.type].map[this.subtype]; this.list = matriz.utils.media.MimeType.formats[this.type].list; } this.template = mimeTemplate; }, AbstractPlayer: function (el, options) { options = options || {}; options.listeners = options.listeners || {}; var mediainfo; var playerEl; var playerPlugin; var timeformat; var defaultVolume; var defaultTitle; var defaultSubtitle; var defaultDuration; var ready = false; var jpcmdqueue = { queue: [], dispatched: false, enqueue: function (func) { if (ready && this.dispatched) { func(); } else { this.queue.push(func); } }, dispatch: function () { this.queue.reverse(); for (var func = this.queue.pop(); func; func = this.queue.pop()) { func(); } this.dispatched = true; }, clear: function () { this.queue = []; this.dispatched = false; } }; function __construct() { defaultVolume = getVolumeFromUI.call(this, $(el).find(".matriz-player-volume").width()); timeformat = $(el).attr("data-matriz-player-time-format") ? $(el).attr("data-matriz-player-time-format") : "h:i:s"; defaultTitle = $(el).attr("data-matriz-player-default-title") ? $(el).attr("data-matriz-player-default-title") : "-"; defaultSubtitle = $(el).attr("data-matriz-player-default-subtitle") ? $(el).attr("data-matriz-player-default-subtitle") : "-"; defaultDuration = $(el).attr("data-matriz-player-default-duration") ? $(el).attr("data-matriz-player-default-duration") : undefined; initializeDOMMediaContainer.call(this); initializeActions.call(this); var _mediainfo = (options && options.mediainfo) ? options.mediainfo : getMediaInfoFromUI.call(this); if (_mediainfo) { this.load(_mediainfo); } else { showNoMediaActions.call(this); } } function __destroy() { jpcmdqueue.clear(); if (playerPlugin !== undefined) { playerPlugin.destroy(); } playerPlugin = undefined; $(el).find(".matriz-player-media-container").empty(); } function formatTime(time, format) { var formatedTimeParts = []; var searchIdx = format.search(/'.*?'/); var timeparts = format.replace(/'.*?'/g, ''); while (searchIdx !== -1) { var maskedPart = maskTime(format.substr(0, searchIdx - 1), time, timeparts); var tmp = format.substr(searchIdx + 1); var fi = tmp.search("'"); var textPart = tmp.substr(0, fi); formatedTimeParts.push(maskedPart, textPart); format = tmp.substr(fi + 1); searchIdx = format.search(/'.*?'/); } formatedTimeParts.push(maskTime(format, time, timeparts)); return formatedTimeParts.join(''); } function getVolumeFromUI(volumeBound) { if ($(el).find(".matriz-player-volume").length > 0) { return volumeBound / $(el).find(".matriz-player-volume").parent().width() * 100; } else { return 75; } } function getMediaInfoFromUI() { if ($(el).attr("data-matriz-player-uri")) { return { "mimetype": $(el).attr("data-matriz-player-mimetype"), "title": $(el).find(".matriz-player-title").text(), "subtitle": $(el).find(".matriz-player-subtitle").text(), "uri": $(el).attr("data-matriz-player-uri"), "duration": $(el).attr("data-matriz-player-duration") }; } else { return undefined; } } function initializeActions() { $(el).find('[data-matriz-action="play"]').on("click", (function (e) { this.play(); }).bind(this)); $(el).find('[data-matriz-action="pause"]').on("click", (function (e) { this.pause(); }).bind(this)); $(el).find('[data-matriz-action="seek"]').on("click", (function (e) { this.seek(e.offsetX / $("[data-matriz-action='seek']").width() * 100); }).bind(this)); $(el).find('[data-matriz-action="volume-on"]').on("click", (function (e) { defaultVolume = getVolumeFromUI.call(this, $(el).find(".matriz-player-volume").width()); this.changeVolume(0); }).bind(this)); $(el).find('[data-matriz-action="volume-off"]').on("click", (function (e) { this.changeVolume(defaultVolume); }).bind(this)); $(el).find('[data-matriz-action="change-volume"]').on("click", (function (e) { this.changeVolume(getVolumeFromUI.call(this, (e.offsetX || e.originalEvent.layerX))); }).bind(this)); $(el).find('.matriz-ui-player-volume-controls') .on("mouseover", function () { $(el).find('[data-matriz-action="change-volume"]').parent().show(); }) .on("mouseout", function () { $(el).find('[data-matriz-action="change-volume"]').parent().hide(); }); $(el).find('[data-matriz-action="change-volume"]').parent().hide(); } function initializeDOMMediaContainer() { if ($(el).find(".matriz-player-media-container").length === 0) { playerEl = $("
").get(0); $(playerEl).appendTo($(el)); } else { playerEl = $(el).find(".matriz-player-media-container").get(0); } } function initializePlayerPlugin() { jpcmdqueue.clear(); if (playerPlugin !== undefined) { playerPlugin.destroy(); playerPlugin = undefined; } playerPlugin = matriz.utils.media.plugins.create({ "playerEl": playerEl, "playerType": this.type, "player": this }); this.changeVolume(defaultVolume); } function maskTime(mask, time, timeparts) { var hours = 0; var minutes = 0; var seconds = time; if (timeparts.search("h") !== -1) { hours = Math.floor(seconds / Math.pow(60, 2)); seconds = seconds % Math.pow(60, 2); } if (timeparts.search("i") !== -1) { minutes = Math.floor(seconds / 60); seconds = seconds % 60; } mask = mask.replace("h", matriz.utils.string.pad(hours, 2, "0")); mask = mask.replace("i", matriz.utils.string.pad(minutes, 2, "0")); return mask.replace("s", matriz.utils.string.pad(Math.floor(seconds), 2, "0")); } function resetPlayerUI() { showOnPauseActions.call(this); $(el).find(".matriz-player-loaded-bar").css("width", "0%"); $(el).find(".matriz-player-played-bar").css("width", "0%"); } function setMediaInfoInUI(mediainfo) { $(el).attr("data-matriz-player-mimetype", mediainfo.mimetype.template); $(el).find(".matriz-player-title").text(mediainfo.title); $(el).find(".matriz-player-subtitle").text(mediainfo.subtitle); $(el).attr("data-matriz-player-uri", mediainfo.uri); } function showNoMediaActions() { showOnPauseActions.call(this); $(el).find('[data-matriz-action="play"]').attr("disabled", true); } function showOnPlayActions() { $(el).find('[data-matriz-action="pause"]').show(); $(el).find('[data-matriz-action="play"]').hide(); $(el).find('[data-matriz-action="play"]').attr("disabled", false); } function showOnPauseActions() { $(el).find('[data-matriz-action="pause"]').hide(); $(el).find('[data-matriz-action="play"]').show(); $(el).find('[data-matriz-action="play"]').attr("disabled", false); } this.destroy = function () { __destroy.call(this); }; this.load = function (_mediainfo) { resetPlayerUI.call(this); var mimetype = new matriz.utils.media.MimeType(_mediainfo.mimetype); mediainfo = _mediainfo; mediainfo.mimetype = mimetype; if (mediainfo.duration === undefined) { mediainfo.duration = -1; } defaultDuration = mediainfo.duration; mediainfo.currenttime = -1; mediainfo.percentloaded = 0; setMediaInfoInUI.call(this, mediainfo); initializePlayerPlugin.call(this); jpcmdqueue.enqueue(function () { playerPlugin.clear(); playerPlugin.setMedia(mediainfo); //playerPlugin.seek(0); }); }; this.changeVolume = function (volumePercent) { if (volumePercent === 0) { $(el).find('[data-matriz-action="volume-on"]').hide(); $(el).find('[data-matriz-action="volume-off"]').show(); } else { $(el).find('[data-matriz-action="volume-on"]').show(); $(el).find('[data-matriz-action="volume-off"]').hide(); } $(el).find(".matriz-player-volume").css("width", volumePercent + "%"); jpcmdqueue.enqueue(function () { playerPlugin.changeVolume(volumePercent / 100); }); }; this.clear = function () { this.pause(); resetPlayerUI.call(this); $(el).find(".matriz-player-title").text(defaultTitle); $(el).find(".matriz-player-subtitle").text(defaultSubtitle); $(el).find(".matriz-player-total-time").text(formatTime.call(this, 0, timeformat)); $(el).find(".matriz-player-current-time").text(formatTime.call(this, 0, timeformat)); }; this.onLoadedData = function (percentLoaded) { mediainfo.percentloaded = percentLoaded; $(el).find(".matriz-player-loaded-bar").css("width", mediainfo.percentloaded + "%"); if (typeof options.listeners.onLoaded === "function") { options.listeners.onLoaded(percentLoaded); } }; this.getDefaultDuration = function () { return defaultDuration; }; this.onDurationChange = function (duration) { mediainfo.duration = duration; defaultDuration = mediainfo.duration; $(el).find(".matriz-player-total-time").text(formatTime.call(this, duration, timeformat)); if (typeof options.listeners.onDurationChange === "function") { options.listeners.onDurationChange(duration); } }; this.onEnd = function () { showOnPauseActions.call(this); if (typeof options.listeners.onEnd === "function") { options.listeners.onEnd(); } }; this.onError = function (error) { var msg = "Não é possível reproduzir a mídia selecionada."; if (error && error.message) { msg = msg.concat(" " + error.message); } resetPlayerUI.call(this); matriz.box.notify.danger(msg); if (typeof options.listeners.onError === "function") { options.listeners.onError(error); } }; this.onTimeUpdate = function (currentTime) { mediainfo.currenttime = currentTime; if (mediainfo.duration > -1) { var currperc = mediainfo.currenttime / mediainfo.duration * 100; $(el).find(".matriz-player-played-bar").css("width", currperc + "%"); } $(el).find(".matriz-player-current-time").text(formatTime.call(this, currentTime, timeformat)); if (typeof options.listeners.onTimeUpdate === "function") { options.listeners.onTimeUpdate(currentTime); } }; this.onReady = function () { ready = true; jpcmdqueue.dispatch(); if (typeof options.listeners.onReady === "function") { options.listeners.onReady(); } }; this.playing = function () { return playerPlugin.isPlaying(); }; this.play = function (_mediainfo, seekfactor) { if (_mediainfo) { this.load(_mediainfo); } showOnPlayActions.call(this); jpcmdqueue.enqueue(function () { playerPlugin.play(seekfactor); }); matriz.common.events.trigger("matriz.media.player.play", [this]); }; this.onPlay = function() { showOnPlayActions.call(this); }; this.pause = function (seekfactor) { showOnPauseActions.call(this); jpcmdqueue.enqueue(function () { playerPlugin.pause(seekfactor); }); }; this.onPause = function() { showOnPauseActions.call(this); }; this.seek = function (seekPercent) { var seekfactor = mediainfo.duration * (seekPercent / 100); if (this.playing()) { this.play(null, seekfactor); } else { this.pause(seekfactor); } }; this.setListeners = function(listeners) { options.listeners = listeners; }; this.isReady = function() { return ready; }; this.getMediaInfo = function() { return mediainfo; }; __construct.call(this); }, AudioPlayer: function (el, options) { this.type = "audio"; matriz.utils.media.AbstractPlayer.call(this, el, options); }, VideoPlayer: function (el, options) { this.type = "video"; matriz.utils.media.AbstractPlayer.call(this, el, options); }, plugins: { JPlayer: function (options) { var typelist = { "audio": ["mp3", "ogg", "oga", "wav"], "video": ["m4v", "ogv", "webmv"] }; var size = undefined; if ($(options.playerEl).hasClass("matriz-player-media-container")) { size = { "width": "100%", "height": "auto" }; } $(options.playerEl).jPlayer({ solution: "html, flash", supplied: typelist[options.playerType].join(","), swfPath: "/matriz_common/versions/" + matriz.global.version + "/js/jplayer/Jplayer.swf", "size": size, "ready": function (event) { options.player.onReady(); }, durationchange: function (event) { options.player.onDurationChange(event.jPlayer.status.duration); }, ended: function (event) { options.player.onEnd(); }, error: function (event) { console.warn(event.jPlayer.error); switch (event.jPlayer.error.type) { case "e_url": options.player.onError({ message: "O arquivo selecionado está corrompido ou não é válido." }); break; case "e_no_solution": options.player.onError({ message: "O formato selecionado não pode ser executado." }); break; default: options.player.onError({ message: "" }); break; } }, progress: function (event) { options.player.onLoadedData(event.jPlayer.status.seekPercent); }, timeupdate: function (event) { options.player.onTimeUpdate.call(this, event.jPlayer.status.currentTime); } }); this.changeVolume = function (volumePercent) { $(options.playerEl).jPlayer("volume", volumePercent); }; this.clear = function () { $(options.playerEl).jPlayer("clearMedia"); }; this.destroy = function () { $(options.playerEl).jPlayer("destroy"); }; this.isPlaying = function () { return !$(options.playerEl).data('jPlayer').status.paused; }; this.pause = function (position) { $(options.playerEl).jPlayer("pause", position); }; this.play = function (position) { $(options.playerEl).jPlayer("play", position); }; this.seek = function (position) { $(options.playerEl).jPlayer("playHead", position); }; this.setMedia = function (mediainfo) { var media = {}; if (options.playerType == "video" && mediainfo.mimetype.extension == "octet-stream") { var indexType = mediainfo.uri.split(".").slice(-1)[0]; if (indexType.toLowerCase() in matriz.utils.media.MimeType.formats.video.map) { mediainfo.mimetype.extension = matriz.utils.media.MimeType.formats.video.map[indexType]; } } if (mediainfo.mimetype.extension) { media[mediainfo.mimetype.extension] = mediainfo.uri; } else { var extensionList = matriz.utils.media.MimeType.formats[options.playerType].list; var len = extensionList.length; for (var i = 0; i < len; i++) { media[extensionList[i]] = mediainfo.uri; } } $(options.playerEl).jPlayer("setMedia", media); }; }, GenericPlayer: function (options) { var typelist = { "audio": ["wma"], "video": ["wmv", "mov", "avi", "swf"] }; var size = undefined; if ($(options.playerEl).hasClass("matriz-player-media-container")) { size = { "width": "100%", "height": "auto" }; } this.changeVolume = function (volumePercent) { }; this.clear = function () { }; this.destroy = function () { }; this.isPlaying = function () { }; this.pause = function (position) { }; this.play = function (position) { }; this.seek = function (position) { }; this.setMedia = function (mediainfo) { var media = {}; if (mediainfo.mimetype.extension) { media[mediainfo.mimetype.extension] = mediainfo.uri; } else { var extensionList = matriz.utils.media.MimeType.formats[options.playerType].list; var len = extensionList.length; for (var i = 0; i < len; i++) { media[extensionList[i]] = mediainfo.uri; } } $(options.playerEl).jPlayer("setMedia", media); }; $(options.playerEl).media(); }, YTPlayer: function (options) { var player; var size = undefined; if ($(options.playerEl).hasClass("matriz-player-media-container")) { size = { "width": "100%", "height": "auto" }; } this.newPlayerInstance = function () { var playerId = 'youtubeplayer-'.concat(Math.floor(Math.random() * 1000)); $(options.playerEl).attr('id', playerId); if (options.player.getDefaultDuration() > 0) { options.player.onDurationChange(options.player.getDefaultDuration() - 1); } player = new YT.Player(playerId, { height: size.height, width: size.width, playerVars: { controls: 0, modestbranding: 1, autoplay: 0, disablekb: 0, fs: 1, iv_load_policy: 3, origin: location.origin, rel: 0, showinfo: 0 }, events: { onReady: function () { options.player.onReady(); options.player.onDurationChange(options.player.getDefaultDuration()); }, onError: function () { options.player.onError({ message: "" }); }, onStateChange: function () { if (player.getDuration() === 0) { options.player.onDurationChange(options.player.getDefaultDuration()); } else { options.player.onDurationChange(player.getDuration()); } updateSeeker(); switch (player.getPlayerState()) { case YT.PlayerState.PLAYING: options.player.onPlay(); break; case YT.PlayerState.PAUSED: options.player.onPause(); break; case YT.PlayerState.ENDED: options.player.onEnd(); break; } } } }); }; var seekerTimeOut = null; function updateSeeker() { if (player !== undefined && player !== null) { if ([YT.PlayerState.PLAYING, YT.PlayerState.BUFFERING].indexOf(player.getPlayerState()) !== -1) { options.player.onLoadedData(player.getVideoLoadedFraction() * 100); options.player.onTimeUpdate.call(this, player.getCurrentTime()); if (seekerTimeOut !== null) { clearTimeout(seekerTimeOut); } seekerTimeOut = setTimeout(updateSeeker, 500); } } } this.changeVolume = function (volumePercent) { player.setVolume(volumePercent * 100); }; this.clear = function () { player.clearVideo(); }; this.destroy = function () { if (player !== undefined) { player.destroy(); player = undefined; } }; this.isPlaying = function () { return (player.getPlayerState() === YT.PlayerState.PLAYING); }; this.pause = function (position) { if (position !== undefined) { player.seekTo(position, true); } player.pauseVideo(); }; this.play = function (position) { if (position !== undefined) { player.seekTo(position, true); } player.playVideo(); }; this.seek = function (position) { player.seekTo(position, true); }; this.setMedia = function (mediainfo) { url = mediainfo.uri; var videoid = url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/); if (videoid !== null) { player.cueVideoById(videoid[1]); } else { options.player.onError({ message: "A URL do arquivo de vídeo é inválida." }); } }; if (typeof YT !== "undefined") { this.newPlayerInstance(); } else { $(window).on("YouTubeIframeAPIReady", (function () { this.newPlayerInstance(); }).bind(this)); if (!window.iframeApi) { window.iframeApi = true; initializePlayerAPI("https://www.youtube.com/player_api", function () { YT.ready(function () { $(window).trigger("YouTubeIframeAPIReady"); }); }); } } }, VimeoPlayer: function (options) { var player = undefined; var $playerFrame = undefined; var vimeoId = undefined; var size = undefined; var url = undefined; if ($(options.playerEl).hasClass("matriz-player-media-container")) { size = { "width": "100%", "height": "auto" }; } this.initPlayer = function (videoid) { vimeoId = videoid; var playerId = 'vimeoplayer-'.concat(Math.floor(Math.random() * 1000)); var url = 'https://player.vimeo.com/video/' + videoid + '?api=1&player_id=' + playerId; $(options.playerEl).html(''); $playerFrame = $('#'.concat(playerId)); player = Froogaloop($playerFrame[0]); player.addEvent('ready', (function () { // pre ready bug })); $playerFrame.load(function () { player.addEvent('ready', (function () { options.player.onReady(); options.player.onDurationChange(options.player.getDefaultDuration()); })); player.addEvent('loadProgress', function (data) { options.player.onDurationChange(data.duration); options.player.onLoadedData(data.percent * 100); }); player.addEvent('playProgress', function (data) { options.player.onTimeUpdate.call(this, data.seconds); }); player.addEvent('play', function () { options.player.onPlay(); }); player.addEvent('pause', function () { options.player.onPause(); }); }); }; this.changeVolume = function (volumePercent) { player.api('setVolume', volumePercent); }; this.clear = function () { }; this.destroy = function () { if (typeof player !== "undefined") { player = undefined; } }; this.isPlaying = function () { return (player.api('paused') === false); }; this.pause = function (position) { if (position !== undefined) { player.api('seekTo', position); } player.api('pause'); }; this.play = function (position) { if (position !== undefined) { player.api('seekTo', position); } player.api('play'); }; this.seek = function (position) { player.api('seekTo', position); }; this.getVimeoId = function () { var urlVideo = $(options.playerEl).parents("[data-matriz-player-uri]").attr('data-matriz-player-uri'); var m = urlVideo.match(/^.+vimeo.com\/(.*\/)?([^#\?]*)/); var videoid = m ? m[2] || m[1] : null; return videoid; } this.setMedia = function (mediainfo) { url = mediainfo.uri; var m = url.match(/^.+vimeo.com\/(.*\/)?([^#\?]*)/); var videoid = m ? m[2] || m[1] : null; if (videoid !== null) { if (videoid !== vimeoId) { this.initPlayer(videoid); } } else { options.player.onError({ message: "A URL do arquivo de vídeo é inválida." }); } }; this.initPlayer(this.getVimeoId()); }, SoundCloudPlayer: function(options) { var plugin = this; var mediainfo = options.player.getMediaInfo(); var clientid = "a3e059563d7fd3372b49b37f00a00bcf"; this.isPlaying = function () { return false; }; this.resolve = function(url) { $.ajax({ url: "https://api.soundcloud.com/resolve?client_id=" + clientid + "&url=" + url }).done(function(track) { mediainfo.uri = track.uri + "/stream?client_id=" + clientid; mediainfo.mimetype = new matriz.utils.media.MimeType("audio/mp3"); matriz.utils.media.plugins.JPlayer.call(plugin, { "playerEl": options.playerEl, "playerType": options.playerType, "player": options.player }); }).fail(function(error, textStatus, errorThrown) { matriz.ajax.messages.fail.default(error, textStatus, errorThrown); }); }; this.resolve(mediainfo.uri); }, create: function (options) { var urlMidi = $(options.playerEl).parents("[data-matriz-player-uri]").attr('data-matriz-player-uri'); if (urlMidi) { var m = urlMidi.match(/^.+vimeo.com\/(.*\/)?([^#\?]*)/); var videoid = m ? m[2] || m[1] : null; if (videoid !== null) { return new matriz.utils.media.plugins.VimeoPlayer({ "playerEl": options.playerEl, "playerType": options.playerType, "player": options.player }); } var videoid = urlMidi.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/); if (videoid !== null) { return new matriz.utils.media.plugins.YTPlayer({ "playerEl": options.playerEl, "playerType": options.playerType, "player": options.player }); } var isSoundCloud = urlMidi.match(/^.+soundcloud.com\/(.*)\/(.*)/); if (isSoundCloud !== null) { return new matriz.utils.media.plugins.SoundCloudPlayer({ "playerEl": options.playerEl, "playerType": options.playerType, "player": options.player }); } } return new matriz.utils.media.plugins.JPlayer({ "playerEl": options.playerEl, "playerType": options.playerType, "player": options.player }); } } }; matriz.utils.media.MimeType.formats = { "audio": { "map": { "mpeg": "m4a", "mp3": "mp3", "m4a": "m4a", "mp4": "m4a", "ogg": "oga", "oga": "oga", "vnd.wave": "wav", "wma": "wma" }, "list": ["mp3", "m4a", "ogg", "oga", "wav"] }, "video": { "map": { "mp4": "m4v", "ogg": "ogv", "ogv": "ogv", "webm": "webmv", "wmv": "wmv", "mov": "mov", "avi": "avi", "swf": "swf" }, "list": ["m4v", "ogv", "webm", "wmv", "mov", "avi", "swf"] }, "application": { "map": { "octet-stream": "octet-stream" }, "list": ["octet-stream"] } }; function parseArguments(args, playerType) { var parsedArguments = { "command": "", "options": undefined }; if (args.length > 0 && args.length < 3) { if (typeof args[0] === "string") { parsedArguments.command = args[0]; if (args.length > 1) { parsedArguments.options = args[1]; } return parsedArguments; } else if (typeof args[0] === "object") { parsedArguments.options = args[0]; return parsedArguments; } } else if (args.length === 0) { return parsedArguments; } throw new Error("matrizMediaPlayer: Parâmetros desconhecidos;"); } function startPlayer(args, player, playerType) { var parsedArguments = parseArguments(args, playerType); var len = this.length; for (var i = 0; i < len; i++) { var newInstance = false; if (this.get(i).instance === undefined) { newInstance = true; if (parsedArguments.command === "load") { parsedArguments.options = { mediainfo: parsedArguments.options }; } this.get(i).instance = new matriz.utils.media[player](this, parsedArguments.options); } if (parsedArguments.command.length > 0) { if (newInstance !== true || parsedArguments.command !== "load") { this.get(i).instance[parsedArguments.command](parsedArguments.options); if (parsedArguments.command === "destroy") { this.get(i).instance = undefined; } } } } return this; } $.fn.matrizMediaPlayer = function () { if ($(this).length > 0) { var type = $(this).attr("data-matriz-player-type"); var className = "".concat(type[0].toUpperCase(), type.substr(1).toLowerCase()).concat("Player"); return startPlayer.call(this, arguments, className); } else { return this; } }; $.fn.matrizMediaPlaylist = function () { new matriz.utils.media.Playlist($(this)); }; });