MediaWiki: Common.js
From ShareRice Wiki (AFN)
Line 46: | Line 46: | ||
addOnloadHook( do_resize ); | addOnloadHook( do_resize ); | ||
+ | |||
+ | video_panel = function(id, cfg) { | ||
+ | this.config = cfg | ||
+ | this.container = $('#af-video-embed-container_' + id) | ||
+ | this.embedded = $('#af-video-embed_' + id) | ||
+ | this.restorer = $('#af-media-restore_' + id) | ||
+ | this.widths = { container: this.container.width(), embedded: this.embedded.width() } | ||
+ | this.heights = { container: this.container.height(), embedded: this.embedded.height() } | ||
+ | |||
+ | this.maximize = function() { | ||
+ | if( this.is_maximized() ) { return; } | ||
+ | this.container.width(this.config.maxWidth + 40 + 'px'); | ||
+ | this.container.height(this.config.maxHeight + 40 + 'px'); | ||
+ | |||
+ | this.embedded.width(this.config.maxWidth + 'px'); | ||
+ | this.embedded.height(this.config.maxHeight + 'px'); | ||
+ | |||
+ | // Reset the width relative to the width of the embedded video, | ||
+ | // because we cannot count on it's parent element's calculated width to cause this to display as expected | ||
+ | this.restorer.width((this.config.maxWidth * 0.98) + 'px'); | ||
+ | this.restorer.show(); | ||
+ | } | ||
+ | this.minimize = function() { | ||
+ | this.restorer.hide(); | ||
+ | this.embedded.width(this.widths.embedded + 'px') | ||
+ | this.embedded.height(this.heights.embedded + 'px'); | ||
+ | |||
+ | this.container.width(this.widths.container) | ||
+ | this.container.height(this.heights.container) | ||
+ | } | ||
+ | |||
+ | this.is_maximized = function() { | ||
+ | return parseInt(this.container.height()) == parseInt(this.config.maxHeight) && | ||
+ | parseInt(this.container.width()) == parseInt(this.config.maxWidth); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | var _asianfuse2 = { | ||
+ | maxWidth: 425, | ||
+ | maxHeight: 350, | ||
+ | video_panels: [], | ||
+ | add: function(id, config) { | ||
+ | this.video_panels[id] = new video_panel(id, config); | ||
+ | } | ||
+ | } |
Revision as of 02:58, 22 July 2011
/* Any JavaScript here will be loaded for all users on every page load. */ // Provide easy access to default values, neatly hidden in a "namespace" that SHOULDN'T conflict with any other environmental variables. var _asianfuse = { video_panels: { add: function(key, val) { if ( this.has_key(key) || val == undefined ) { return; } this[key] = val; }, has_key: function(key) { return(this[key] != undefined); } }, maxWidth: 425, minWidth: 150, maxHeight: 350, minHeight: 124 } function do_resize (rand, dir) { key = '#af-video-restore_' + rand if ( dir == 'max') { _asianfuse.video_panels.add(key, jQuery(key).parent().height()); jQuery('.af-video-embed_' + rand).width(_asianfuse.maxWidth + 'px'); jQuery('.af-video-embed_' + rand).height(_asianfuse.maxHeight + 'px'); // Reset the width relative to the width of the embedded video, // because we cannot count on it's parent element's calculated width to cause this to display as expected jQuery('#af-video-restore_' + rand).width(_asianfuse.maxWidth * 0.98 + 'px'); jQuery('#af-video-restore_' + rand).show(); } else if ( dir == 'min' ) { jQuery('#af-video-restore_' + rand).hide(); jQuery('.af-video-embed_' + rand).width(_asianfuse.minWidth + 'px') jQuery('.af-video-embed_' + rand).height(_asianfuse.minHeight + 'px'); jQuery(key).parent().width('150px') if( _asianfuse.video_panels.has_key(key) ) { jQuery(key).parent().height(_asianfuse.video_panels[key] + 'px'); } } } addOnloadHook( do_resize ); video_panel = function(id, cfg) { this.config = cfg this.container = $('#af-video-embed-container_' + id) this.embedded = $('#af-video-embed_' + id) this.restorer = $('#af-media-restore_' + id) this.widths = { container: this.container.width(), embedded: this.embedded.width() } this.heights = { container: this.container.height(), embedded: this.embedded.height() } this.maximize = function() { if( this.is_maximized() ) { return; } this.container.width(this.config.maxWidth + 40 + 'px'); this.container.height(this.config.maxHeight + 40 + 'px'); this.embedded.width(this.config.maxWidth + 'px'); this.embedded.height(this.config.maxHeight + 'px'); // Reset the width relative to the width of the embedded video, // because we cannot count on it's parent element's calculated width to cause this to display as expected this.restorer.width((this.config.maxWidth * 0.98) + 'px'); this.restorer.show(); } this.minimize = function() { this.restorer.hide(); this.embedded.width(this.widths.embedded + 'px') this.embedded.height(this.heights.embedded + 'px'); this.container.width(this.widths.container) this.container.height(this.heights.container) } this.is_maximized = function() { return parseInt(this.container.height()) == parseInt(this.config.maxHeight) && parseInt(this.container.width()) == parseInt(this.config.maxWidth); } } var _asianfuse2 = { maxWidth: 425, maxHeight: 350, video_panels: [], add: function(id, config) { this.video_panels[id] = new video_panel(id, config); } }