(function($, window, document, undefined) { var pluginName = "jqueryVideoLightning", defaults = { id: "y-dQw4w9WgXcQ", width: "640px", height: "390px", autoplay: 0, autohide: 2, controls: 1, iv_load_policy: 1, loop: 0, modestbranding: 0, playlist: "", related: 0, showinfo: 1, start_time: 0, theme: "dark", color: "", byline: 1, portrait: 1, effectIn: "fadeIn", easeIn: 300, easeOut: 0, backdrop_color: "#000", backdrop_opacity: 1, glow: 0, glow_color: "#fff" }; function JQVideoLightning ( element, options ) { this.element = element; this.settings = $.extend( {}, defaults, options ); this._defaults = defaults; this._name = pluginName; this.init(); } JQVideoLightning.prototype = { init: function () { var void_target, void_elements, target, target_class; void_elements = [ "AREA", "BASE", "BR", "COL", "COMMAND", "EMBED", "HR", "IMG", "INPUT", "KEYGEN", "LINK", "META", "PARAM", "SOURCE", "TRACK", "WBR" ]; void_target = 0; target_class = ".video-target"; $(this.element).css( "cursor", "pointer" ); if (($.inArray($(this.element).prop('tagName'), void_elements)) == -1) { target = $(this.element); target.addClass("video-target"); } else { $("body").append('
' + '
'); target = $(target_class); void_target = 1; } function callPlayer() { $(this.player(target, $(this).settings), void_target); } $(this.element).on( "click", $.proxy(callPlayer, this)); }, player: function ( target, settings, void_target ) { var id, video_autohide, video_autoplay, video_byline, video_color, video_controls, video_height, video_id, video_iv_load_policy, video_loop, video_modestbranding, video_playlist, video_portrait, video_related, video_showinfo, video_start_time, video_theme, video_vendor, video_width, vimeo_player, youtube_player, ease_in, glow, glow_color, backdrop_color, backdrop_opacity, red, green, blue; if (target.find(".video-wrapper").is(':visible')) { target.find(".video").remove(); target.find(".video-wrapper").hide(((this.settings).easeOut)); target.find(".video-wrapper").remove(); if (void_target == 1){target.remove()} return $(this).destroy; } else { id = (typeof target.data("videoId") === 'undefined') ? (this.settings).id : target.data("videoId"); video_vendor = id.split("-")[0]; if ((video_vendor === "v") || (video_vendor === "V")) { video_vendor = "Vimeo"; } else { video_vendor = "Youtube"; } video_id = id.split("-")[1]; // Youtube: "y-XbTtgr8J8uU" Vimeo: "v-32187194" video_width = target.data("videoWidth") || (this.settings).width; // Y&V: video width in px video_height = target.data("videoHeight") || (this.settings).height; // Y&V: video height in px video_autoplay = target.data("videoAutoplay") || (this.settings).autoplay; // Y&V: start playback immediately (0,1) video_autohide = target.data("videoAutohide") || (this.settings).autohide; // Y: auto hide controls after video load (0,1,2) video_controls = target.data("videoControls") || (this.settings).controls; // Y: display controls (0,1,2) video_iv_load_policy = target.data("videoIvLoadPolicy") || (this.settings).iv_load_policy; // Y: display annotations (1,3) video_loop = target.data("videoLoop") || (this.settings).loop; // Y&V: loop video playback (0,1) video_modestbranding = target.data("videoModestbranding") || (this.settings).modestbranding; // Y: hide large Youtube logo (0,1) video_playlist = target.data("videoPlaylist") || (this.settings).playlist; // Y: comma-separated list of video IDs to play video_related = target.data("videoRelated") || (this.settings).related; // Y: show related videos when playback id finished (0,1) video_showinfo = target.data("videoShowinfo") || (this.settings).showinfo; // Y: display title, uploader (0,1) V: display title (0,1) video_start_time = target.data("videoStartTime") || (this.settings).start_time; // Y: playback start position in seconds (ex. "132" starts at 2mins, 12secs) video_theme = target.data("videoTheme") || (this.settings).theme; // Y: player theme ("dark","light") if (video_vendor == "Vimeo"){ video_color = target.data("videoColor") || prepHex((this.settings).color); // V: player controls color (hex code minus the "#", default is "00adef") } else { video_color = target.data("videoColor") || (this.settings).color; // Y: player controls color ("red","white") } video_byline = target.data("videoByline") || (this.settings).byline; // V: display byline (0,1) video_portrait = target.data("videoPortrait") || (this.settings).portrait; // V: display user's portrait (0,1) youtube_player = $(""); vimeo_player = $(""); ease_in = (this.settings).ease_in; glow = (this.settings).glow; glow_color = (this.settings).glow_color; backdrop_color = (this.settings).backdrop_color; backdrop_opacity = (this.settings).backdrop_opacity; function colorConverter(hex){ red = parseInt((prepHex(hex)).substring(0,2),16); blue = parseInt((prepHex(hex)).substring(2,4),16); green = parseInt((prepHex(hex)).substring(4,6),16); return { red: red, blue: blue, green: green }; } function fullHex(hex){ hex = "#" + prepHex(hex); return hex; } function prepHex(hex){ hex = (hex.charAt(0)=="#") ? hex.split("#")[1]:hex; if (hex.length == 3){ hex = hex + hex; } return hex; } target.append('
'); target.find(".video-wrapper").css({ backgroundColor: "rgba(" + colorConverter(backdrop_color).red + "," + colorConverter(backdrop_color).blue + "," + colorConverter(backdrop_color).green + "," + backdrop_opacity + ")" }); target.find(".video-frame").css({ width: video_width, height: video_height, marginTop: '-' + ((video_height.split("p")[0])/2) + 'px', marginLeft: '-' + ((video_width.split("p")[0])/2) + 'px', boxShadow: '0px 0px ' + glow + 'px ' + (glow/5) + 'px ' + fullHex(glow_color) }); target.find(".video-wrapper").fadeIn(ease_in); if (video_vendor === "Vimeo") { return target.find(".video").append(vimeo_player); } else { return target.find(".video").append(youtube_player); } } }, destroy: function () { $(this).off(); $(this).removeData(); } }; $.fn[ pluginName ] = function ( options ) { return this.each(function() { if ( !$.data( this, "plugin_" + pluginName ) ) { $.data( this, "plugin_" + pluginName, new JQVideoLightning( this, options ) ); } }); }; return this; })( jQuery, window, document );