/* Copyright (c) 2010-2011, Diaspora Inc. This file is * licensed under the Affero General Public License version 3 or later. See * the COPYRIGHT file. */ (function() { var Embedder = function() { var self = this; this.services = {}; this.subscribe("widget/ready", function(evt, contentElement) { self.contentElement = contentElement; self.contentElement.delegate("a.video-link", "click", self.embedVideo); self.registerServices(); }); this.register = function(service, template) { self.services[service] = template; }; this.render = function(service, views) { var template = (typeof self.services[service] === "string") ? self.services[service] : self.services.undefined; return $.mustache(template, views); }; this.embedVideo = function(evt) { evt.preventDefault(); evt.stopPropagation(); var videoLink = $(this), host = videoLink.data("host"), container = $("
", { "class": "video-container" }), videoContainer = self.contentElement.children(".video-container"); if (videoContainer.length) { videoContainer.slideUp("fast", function() { $(this).detach(); }); return; } if ($("div.video-container").length) { $("div.video-container").slideUp("fast", function() { $(this).detach(); }); } container.html( self.render(host, videoLink.data()) ); container.hide() .insertAfter(videoLink.parent()) .slideDown("fast"); videoLink.click(function() { videoContainer.slideUp("fast", function() { $(this).detach(); }); }); }; this.registerServices = function() { self.register("youtube.com", '' + Diaspora.I18n.t("videos.watch", { provider: "YouTube" }) + '
' + ''); self.register("vimeo.com", '' + Diaspora.I18n.t("videos.watch", { provider: "Vimeo" }) + '
' + ''); self.register("undefined", '

' + Diaspora.I18n.t("videos.unknown") + ' - {{host}}

'); }; }; Diaspora.Widgets.Embedder = Embedder; })();