Featured Video Plus - Version 2.1.1

Version Description

= 2.1.0 = Only upgrade when using WordPress 3.7 or higher! Check your media settings after upgrading.

= 2.0.3 = Only upgrade when using WordPress 3.7 or higher!

Download this release

Release Info

Developer a.hoereth
Plugin Icon 128x128 Featured Video Plus
Version 2.1.1
Comparing to
See all releases

Code changes from version 2.1.0 to 2.1.1

CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
  # Changelog #
2
 
 
 
 
 
3
  ## 2.1.0: 2015-06-11 ##
4
  * Display options are now chained using OR - if one of them holds, the replace mode is used.
5
  * Added `always use replace mode when viewing single posts and pages` option, was implicitly true since 2.0.0. ([*](https://wordpress.org/support/topic/featured-video-overrides-featured-image)).
1
  # Changelog #
2
 
3
+ ## 2.1.1: 2015-06-xx ##
4
+ * Fix play and loading featured image overlay for some themes ([*](https://wordpress.org/support/topic/play-icon-missing)).
5
+ * Fix broken `remove featured image` link. ([*](https://wordpress.org/support/topic/cant-remove-featured-image-2), [*](https://wordpress.org/support/topic/version-210-conflict-with-wp-featured-image), [*](https://wordpress.org/support/topic/fvp-not-working-after-210-update))
6
+
7
  ## 2.1.0: 2015-06-11 ##
8
  * Display options are now chained using OR - if one of them holds, the replace mode is used.
9
  * Added `always use replace mode when viewing single posts and pages` option, was implicitly true since 2.0.0. ([*](https://wordpress.org/support/topic/featured-video-overrides-featured-image)).
featured-video-plus.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Featured Video Plus
4
  Plugin URI: http://yrnxt.com/wordpress/featured-video-plus/
5
  Description: Add Featured Videos to your posts and pages.
6
- Version: 2.1.0
7
  Author: Alexander Höreth
8
  Author URI: http://yrnxt.com
9
  Text Domain: featured-video-plus
@@ -32,7 +32,7 @@ License: GPL2
32
  // ********************
33
  // CONSTANTS
34
  if ( ! defined( 'FVP_VERSION' ) ) {
35
- define( 'FVP_VERSION', '2.1.0' );
36
  }
37
 
38
  $pathinfo = pathinfo( dirname( plugin_basename( __FILE__ ) ) );
3
  Plugin Name: Featured Video Plus
4
  Plugin URI: http://yrnxt.com/wordpress/featured-video-plus/
5
  Description: Add Featured Videos to your posts and pages.
6
+ Version: 2.1.1
7
  Author: Alexander Höreth
8
  Author URI: http://yrnxt.com
9
  Text Domain: featured-video-plus
32
  // ********************
33
  // CONSTANTS
34
  if ( ! defined( 'FVP_VERSION' ) ) {
35
+ define( 'FVP_VERSION', '2.1.1' );
36
  }
37
 
38
  $pathinfo = pathinfo( dirname( plugin_basename( __FILE__ ) ) );
js/frontend.js CHANGED
@@ -25,6 +25,9 @@
25
  // Remove wrapped .post-thumbnail-classes
26
  $('.has-post-video .post-thumbnail>.post-thumbnail')
27
  .removeClass('post-thumbnail');
 
 
 
28
  }
29
 
30
 
@@ -77,22 +80,19 @@
77
  * Handle mouseover and mouseout events.
78
  */
79
  function hover(event) {
80
- var $elem = $(event.currentTarget);
81
- var $img = $elem.children('img');
82
-
83
- if (0 === $elem.find('.fvp-loader').length) {
84
- $img.animate({ opacity: fvpdata.opacity });
85
- $elem
86
- .css({ position: 'relative' })
87
- .prepend(
88
- $loader
89
- .css({
90
- height : $img.height(),
91
- width : $img.width(),
92
- marginTop : -$img.height()/2,
93
- marginLeft: -$img.width()/2
94
- })
95
- );
96
  } else if (bgState !== loadBg) {
97
  $img.animate({ opacity: 1 });
98
  $loader.remove();
25
  // Remove wrapped .post-thumbnail-classes
26
  $('.has-post-video .post-thumbnail>.post-thumbnail')
27
  .removeClass('post-thumbnail');
28
+
29
+ // There might still be some empty .post-thumbnail links to be removed.
30
+ $('a.post-thumbnail').not('.fvp-dynamic, .fvp-overlay').remove();
31
  }
32
 
33
 
80
  * Handle mouseover and mouseout events.
81
  */
82
  function hover(event) {
83
+ var $img = $(event.currentTarget).children('img');
84
+
85
+ // Is the overlay displayed currently?
86
+ if (0 === $img.siblings('.fvp-loader').length) {
87
+ // Copy classes and css styles onto the play icon overlay.
88
+ $loader.addClass($img.attr('class')).css({
89
+ height: $img.height(),
90
+ width: $img.width(),
91
+ margin: $img.css('margin')
92
+ });
93
+
94
+ // Fade out image and insert overlay.
95
+ $img.animate({ opacity: fvpdata.opacity }).before($loader);
 
 
 
96
  } else if (bgState !== loadBg) {
97
  $img.animate({ opacity: 1 });
98
  $loader.remove();
js/frontend.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){"use strict";function a(){t(".has-post-video a>.featured-video-plus,.has-post-video a>.fvp-dynamic,.has-post-video a>.fvp-overlay,.has-post-video a>.wp-video,.has-post-video a>.wp-video-shortcode").unwrap(),t(".has-post-video .post-thumbnail>.post-thumbnail").removeClass("post-thumbnail")}function e(){fvpdata.fitvids&&t(".featured-video-plus.fvp-responsive").fitVids({customSelector:["iframe","object","embed"]})}function i(){if(fvpdata.width&&!fvpdata.fitvids){t(".fvp-local .wp-video").css({width:fvpdata.width,height:"auto"});var a=t(".fvp-local .wp-video .wp-video-shortcode");a.attr({width:fvpdata.width,height:fvpdata.width/a.attr("width")*a.attr("heigth")})}}function o(){void 0===r&&[fvpdata.playicon,fvpdata.loadicon].forEach(function(a){t("body").append(t("<img/>",{src:a}).hide())}),r=r===c?s:c,v.css({backgroundImage:r})}function d(a){var e=t(a.currentTarget),i=e.children("img");0===e.find(".fvp-loader").length?(i.animate({opacity:fvpdata.opacity}),e.css({position:"relative"}).prepend(v.css({height:i.height(),width:i.width(),marginTop:-i.height()/2,marginLeft:-i.width()/2}))):r!==s&&(i.animate({opacity:1}),v.remove())}function n(i){i.preventDefault();var d=t(i.currentTarget),n=parseInt(d.attr("data-id"),10);o(),t.post(fvpdata.ajaxurl,{action:"fvp_get_embed",fvp_nonce:fvpdata.nonce,id:n},function(t){if(t.success){var i=d.parent();d.replaceWith(t.data),i.find(".wp-audio-shortcode, .wp-video-shortcode").mediaelementplayer(),e(),a()}o()})}function p(a){a.preventDefault();var e=t(a.currentTarget),o=parseInt(e.attr("data-id"),10);e.openDOMWindow({eventType:null,windowPadding:0,borderSize:0,windowBGColor:"transparent",overlayOpacity:100*fvpdata.opacity,width:"100%",height:"100%"}),t("#DOMWindow").css({backgroundImage:s});var d=t("#fvp-cache-"+o);0===d.html().length?t.post(fvpdata.ajaxurl,{action:"fvp_get_embed",fvp_nonce:fvpdata.nonce,id:o},function(a){a.success&&(d.html(a.data),t("#DOMWindow").html(a.data),i(),t(window).trigger("scroll"))}):(t("#DOMWindow").html(d.html()),t(window).trigger("scroll"))}var r,v=t("<div />").addClass("fvp-loader"),c="url('"+fvpdata.playicon+"')",s="url('"+fvpdata.loadicon+"')";t(document).ready(function(){a(),setTimeout(a,1e3),e(),i(),t(".fvp-overlay, .fvp-dynamic").hover(d,d),o(),t(".fvp-dynamic").click(n),t(".fvp-overlay").click(p)})}(jQuery);
1
+ !function(a){"use strict";function t(){a(".has-post-video a>.featured-video-plus,.has-post-video a>.fvp-dynamic,.has-post-video a>.fvp-overlay,.has-post-video a>.wp-video,.has-post-video a>.wp-video-shortcode").unwrap(),a(".has-post-video .post-thumbnail>.post-thumbnail").removeClass("post-thumbnail"),a("a.post-thumbnail").not(".fvp-dynamic, .fvp-overlay").remove()}function e(){fvpdata.fitvids&&a(".featured-video-plus.fvp-responsive").fitVids({customSelector:["iframe","object","embed"]})}function i(){if(fvpdata.width&&!fvpdata.fitvids){a(".fvp-local .wp-video").css({width:fvpdata.width,height:"auto"});var t=a(".fvp-local .wp-video .wp-video-shortcode");t.attr({width:fvpdata.width,height:fvpdata.width/t.attr("width")*t.attr("heigth")})}}function o(){void 0===r&&[fvpdata.playicon,fvpdata.loadicon].forEach(function(t){a("body").append(a("<img/>",{src:t}).hide())}),r=r===c?s:c,v.css({backgroundImage:r})}function d(t){var e=a(t.currentTarget).children("img");0===e.siblings(".fvp-loader").length?(v.addClass(e.attr("class")).css({height:e.height(),width:e.width(),margin:e.css("margin")}),e.animate({opacity:fvpdata.opacity}).before(v)):r!==s&&(e.animate({opacity:1}),v.remove())}function n(i){i.preventDefault();var d=a(i.currentTarget),n=parseInt(d.attr("data-id"),10);o(),a.post(fvpdata.ajaxurl,{action:"fvp_get_embed",fvp_nonce:fvpdata.nonce,id:n},function(a){if(a.success){var i=d.parent();d.replaceWith(a.data),i.find(".wp-audio-shortcode, .wp-video-shortcode").mediaelementplayer(),e(),t()}o()})}function p(t){t.preventDefault();var e=a(t.currentTarget),o=parseInt(e.attr("data-id"),10);e.openDOMWindow({eventType:null,windowPadding:0,borderSize:0,windowBGColor:"transparent",overlayOpacity:100*fvpdata.opacity,width:"100%",height:"100%"}),a("#DOMWindow").css({backgroundImage:s});var d=a("#fvp-cache-"+o);0===d.html().length?a.post(fvpdata.ajaxurl,{action:"fvp_get_embed",fvp_nonce:fvpdata.nonce,id:o},function(t){t.success&&(d.html(t.data),a("#DOMWindow").html(t.data),i(),a(window).trigger("scroll"))}):(a("#DOMWindow").html(d.html()),a(window).trigger("scroll"))}var r,v=a("<div />").addClass("fvp-loader"),c="url('"+fvpdata.playicon+"')",s="url('"+fvpdata.loadicon+"')";a(document).ready(function(){t(),setTimeout(t,1e3),e(),i(),a(".fvp-overlay, .fvp-dynamic").hover(d,d),o(),a(".fvp-dynamic").click(n),a(".fvp-overlay").click(p)})}(jQuery);
js/post.js CHANGED
@@ -10,6 +10,24 @@
10
  var loadingicon = 'url(' + context.loading_gif + ')';
11
 
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Set the featured video with 'setfeatimg' parameter in order to force set
15
  * the featured image to the video thumbnail if possible.
@@ -38,7 +56,7 @@
38
  'fvp_nonce' : $('#fvp_nonce').val()
39
  }, function(response) {
40
  if (response.success) {
41
- $('#postimagediv .inside').html(response.data);
42
  $media.css({ backgroundImage: mediaicon }); // Hide loading gif.
43
  }
44
  }, 'json' );
@@ -91,12 +109,12 @@
91
  // new video data
92
  } else {
93
  $container
94
- .css({height: 'auto'})
95
  .html(data.video);
96
  }
97
 
98
  // update featured image
99
- $('#postimagediv .inside').html(data.img);
100
  }, 'json' );
101
  }
102
 
@@ -133,6 +151,7 @@
133
  $('#postimagediv')
134
  .on('click', '.fvp-set-image', setFeatimg)
135
  .on('click', '.fvp-remove-image', removeFeatimg);
 
136
 
137
  // WordPress 3.5 Media Manager
138
  // @see http://www.blazersix.com/blog/wordpress-image-widget/
10
  var loadingicon = 'url(' + context.loading_gif + ')';
11
 
12
 
13
+ /**
14
+ * Update the featured image box content with fresh html and show/hide the
15
+ * required remove post thumbnail links accordingly.
16
+ *
17
+ * @param {string} html
18
+ */
19
+ function updateImageDiv(html) {
20
+ var $container = $('#postimagediv .inside');
21
+ html = html || $container.html();
22
+ $container.html(html);
23
+
24
+ if (0 < $container.find('.fvp-remove-image').length) {
25
+ $container.find('#remove-post-thumbnail').parent('p').hide();
26
+ $container.find('.fvp-remove-image').parent('p').show();
27
+ }
28
+ }
29
+
30
+
31
  /**
32
  * Set the featured video with 'setfeatimg' parameter in order to force set
33
  * the featured image to the video thumbnail if possible.
56
  'fvp_nonce' : $('#fvp_nonce').val()
57
  }, function(response) {
58
  if (response.success) {
59
+ updateImageDiv(response.data);
60
  $media.css({ backgroundImage: mediaicon }); // Hide loading gif.
61
  }
62
  }, 'json' );
109
  // new video data
110
  } else {
111
  $container
112
+ .css({height: ''})
113
  .html(data.video);
114
  }
115
 
116
  // update featured image
117
+ updateImageDiv(data.img);
118
  }, 'json' );
119
  }
120
 
151
  $('#postimagediv')
152
  .on('click', '.fvp-set-image', setFeatimg)
153
  .on('click', '.fvp-remove-image', removeFeatimg);
154
+ updateImageDiv();
155
 
156
  // WordPress 3.5 Media Manager
157
  // @see http://www.blazersix.com/blog/wordpress-image-widget/
js/post.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){"use strict";function t(e){a(e,!0)}function i(t){t.preventDefault(),o.css({backgroundImage:v}),e.post(ajaxurl,{action:"fvp_remove_img",id:e("#post_ID").val(),fvp_nonce:e("#fvp_nonce").val()},function(t){t.success&&(e("#postimagediv .inside").html(t.data),o.css({backgroundImage:r}))},"json")}function a(t,i){if(t.preventDefault(),i=i||!1,n.val(e.trim(n.val())).trigger("autosize"),s!==n.val()||i){o.css({backgroundImage:v}),s=n.val();var a={action:"fvp_save",id:e("#post_ID").val(),fvp_nonce:e("#fvp_nonce").val(),fvp_video:n.val(),fvp_set_featimg:i};e.post(ajaxurl,a,function(t){if(!t.success)return!1;var i=t.data,a=e(".fvp-current-video");o.css({backgroundImage:r}),"remove"===i.task?a.css({height:a.height()}).html("").animate({height:0}):a.css({height:"auto"}).html(i.video),e("#postimagediv .inside").html(i.img)},"json")}}var n,o,s,r,c=fvpPost,v="url("+c.loading_gif+")";e(document).ready(function(){n=e(".fvp-video"),o=n.siblings(".fvp-video-choose").children(".fvp-media-icon"),s=n.val(),r=o.css("backgroundImage"),n.blur(a),n.autosize().trigger("blur").keypress(function(t){13===t.keyCode&&(t.preventDefault(),e(this).trigger("blur"))}).click(function(){e(this).select()}),e("#postimagediv").on("click",".fvp-set-image",t).on("click",".fvp-remove-image",i);var c,v={frame:function(){return this._frame?this._frame:(this._frame=wp.media({title:c.data("title"),library:{type:"video"},button:{text:c.data("button")},multiple:!1}),this._frame.on("open",this.updateFrame).state("library").on("select",this.select),this._frame)},select:function(){var t=this.get("selection"),i="url",a=c.data("target");e(a).val(t.pluck(i)).change().trigger("blur")},updateFrame:function(){},init:function(){e("#wpbody").on("click",".fvp-video-choose",function(t){t.preventDefault(),c=e(this).closest(".fvp-input-wrapper"),v.frame().open()})}};v.init()})}(jQuery);
1
+ !function(e){"use strict";function t(t){var i=e("#postimagediv .inside");t=t||i.html(),i.html(t),0<i.find(".fvp-remove-image").length&&(i.find("#remove-post-thumbnail").parent("p").hide(),i.find(".fvp-remove-image").parent("p").show())}function i(e){n(e,!0)}function a(i){i.preventDefault(),r.css({backgroundImage:f}),e.post(ajaxurl,{action:"fvp_remove_img",id:e("#post_ID").val(),fvp_nonce:e("#fvp_nonce").val()},function(e){e.success&&(t(e.data),r.css({backgroundImage:c}))},"json")}function n(i,a){if(i.preventDefault(),a=a||!1,o.val(e.trim(o.val())).trigger("autosize"),s!==o.val()||a){r.css({backgroundImage:f}),s=o.val();var n={action:"fvp_save",id:e("#post_ID").val(),fvp_nonce:e("#fvp_nonce").val(),fvp_video:o.val(),fvp_set_featimg:a};e.post(ajaxurl,n,function(i){if(!i.success)return!1;var a=i.data,n=e(".fvp-current-video");r.css({backgroundImage:c}),"remove"===a.task?n.css({height:n.height()}).html("").animate({height:0}):n.css({height:""}).html(a.video),t(a.img)},"json")}}var o,r,s,c,v=fvpPost,f="url("+v.loading_gif+")";e(document).ready(function(){o=e(".fvp-video"),r=o.siblings(".fvp-video-choose").children(".fvp-media-icon"),s=o.val(),c=r.css("backgroundImage"),o.blur(n),o.autosize().trigger("blur").keypress(function(t){13===t.keyCode&&(t.preventDefault(),e(this).trigger("blur"))}).click(function(){e(this).select()}),e("#postimagediv").on("click",".fvp-set-image",i).on("click",".fvp-remove-image",a),t();var v,f={frame:function(){return this._frame?this._frame:(this._frame=wp.media({title:v.data("title"),library:{type:"video"},button:{text:v.data("button")},multiple:!1}),this._frame.on("open",this.updateFrame).state("library").on("select",this.select),this._frame)},select:function(){var t=this.get("selection"),i="url",a=v.data("target");e(a).val(t.pluck(i)).change().trigger("blur")},updateFrame:function(){},init:function(){e("#wpbody").on("click",".fvp-video-choose",function(t){t.preventDefault(),v=e(this).closest(".fvp-input-wrapper"),f.frame().open()})}};f.init()})}(jQuery);
php/class-backend.php CHANGED
@@ -656,27 +656,28 @@ class FVP_Backend extends Featured_Video_Plus {
656
  * @return {string}
657
  */
658
  public function featured_image_box( $content, $post_id ) {
 
 
 
 
 
659
  if ( has_post_thumbnail( $post_id ) ) {
660
- $link = sprintf(
661
- '<p class="hide-if-no-js"><a href="#" class="fvp-remove-image">%s</a></p>',
 
662
  esc_html__( 'Remove featured image' )
663
  );
664
-
665
- return $content . $link;
666
- } elseif ( has_post_video( $post_id ) ) {
667
- $notice = sprintf(
668
- '<p class="fvp-notice">%s <a href="#" class="fvp-set-image hide-if-no-js">%s</a></p>',
669
- esc_html__(
670
- 'Featured Videos require a Featured Image for automatic replacement.',
671
- 'featured-video-plus'
672
- ),
673
- esc_html__( 'Auto set', 'featured-video-plus' )
674
- );
675
-
676
- return $notice . $content;
677
  }
678
 
679
- return $content;
 
 
 
 
 
 
 
 
680
  }
681
 
682
 
656
  * @return {string}
657
  */
658
  public function featured_image_box( $content, $post_id ) {
659
+ if ( ! has_post_video( $post_id ) ) {
660
+ // Has no featured video so the plugin does not interfere.
661
+ return $content;
662
+ }
663
+
664
  if ( has_post_thumbnail( $post_id ) ) {
665
+ // Has featured video and featured image.
666
+ return $content . sprintf(
667
+ '<p class="hidden"><a href="#" class="fvp-remove-image">%s</a></p>',
668
  esc_html__( 'Remove featured image' )
669
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
670
  }
671
 
672
+ // Has featured video but not featured image.
673
+ return sprintf(
674
+ '<p class="fvp-notice">%s <a href="#" class="fvp-set-image hide-if-no-js">%s</a></p>',
675
+ esc_html__(
676
+ 'Featured Videos require a Featured Image for automatic replacement.',
677
+ 'featured-video-plus'
678
+ ),
679
+ esc_html__( 'Auto set', 'featured-video-plus' )
680
+ ) . $content;
681
  }
682
 
683
 
readme.txt CHANGED
@@ -10,7 +10,7 @@ License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Requires at least: 3.7
12
  Tested up to: 4.2.2
13
- Stable tag: 2.1.0
14
 
15
  Add Featured Videos to your posts and pages. Works like magic with most themes which use Featured Images. Local Media, YouTube, Vimeo and many more.
16
 
@@ -115,6 +115,10 @@ Only upgrade when using WordPress 3.7 or higher!
115
 
116
  == Changelog ==
117
 
 
 
 
 
118
  = 2.1.0: 2015-06-11 =
119
  * Display options are now chained using OR - if one of them holds, the replace mode is used.
120
  * Added `always use replace mode when viewing single posts and pages` option, was implicitly true since 2.0.0. ([*](https://wordpress.org/support/topic/featured-video-overrides-featured-image)).
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Requires at least: 3.7
12
  Tested up to: 4.2.2
13
+ Stable tag: 2.1.1
14
 
15
  Add Featured Videos to your posts and pages. Works like magic with most themes which use Featured Images. Local Media, YouTube, Vimeo and many more.
16
 
115
 
116
  == Changelog ==
117
 
118
+ = 2.1.1: 2015-06-xx =
119
+ * Fix play and loading featured image overlay for some themes ([*](https://wordpress.org/support/topic/play-icon-missing)).
120
+ * Fix broken `remove featured image` link. ([*](https://wordpress.org/support/topic/cant-remove-featured-image-2), [*](https://wordpress.org/support/topic/version-210-conflict-with-wp-featured-image), [*](https://wordpress.org/support/topic/fvp-not-working-after-210-update))
121
+
122
  = 2.1.0: 2015-06-11 =
123
  * Display options are now chained using OR - if one of them holds, the replace mode is used.
124
  * Added `always use replace mode when viewing single posts and pages` option, was implicitly true since 2.0.0. ([*](https://wordpress.org/support/topic/featured-video-overrides-featured-image)).
styles/backend.css CHANGED
@@ -2,7 +2,8 @@
2
  background: transparent fixed no-repeat center center;
3
  }
4
  #featured-video-plus-box .fvp-current-video,
5
- #featured-video-plus-box iframe {
 
6
  width: 256px;
7
  height: auto;
8
  margin-bottom: 5px;
@@ -53,6 +54,3 @@
53
  top: 4px;
54
  right: 4px;
55
  }
56
- #postimagediv #remove-post-thumbnail {
57
- display: none !important;
58
- }
2
  background: transparent fixed no-repeat center center;
3
  }
4
  #featured-video-plus-box .fvp-current-video,
5
+ #featured-video-plus-box .fvp-current-video iframe,
6
+ #featured-video-plus-box .fvp-current-video video {
7
  width: 256px;
8
  height: auto;
9
  margin-bottom: 5px;
54
  top: 4px;
55
  right: 4px;
56
  }
 
 
 
styles/frontend.css CHANGED
@@ -45,6 +45,7 @@
45
  .fvp-overlay,
46
  .fvp-dynamic {
47
  position: relative;
 
48
  height: auto;
49
  width: auto;
50
  }
@@ -52,9 +53,9 @@
52
  .fvp-dynamic .fvp-loader {
53
  background: transparent no-repeat scroll center center;
54
  position: absolute;
55
- left: 50%;
56
- top: 50%;
57
- z-index: 10;
58
  pointer-events: none;
59
  }
60
  #DOMWindow {
45
  .fvp-overlay,
46
  .fvp-dynamic {
47
  position: relative;
48
+ display: block;
49
  height: auto;
50
  width: auto;
51
  }
53
  .fvp-dynamic .fvp-loader {
54
  background: transparent no-repeat scroll center center;
55
  position: absolute;
56
+ top: 0;
57
+ left: 0;
58
+ z-index: 999;
59
  pointer-events: none;
60
  }
61
  #DOMWindow {