MediaWiki: Common.js
From ShareRice Wiki (AFN)
(Created page with "→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 ...") |
|||
| (20 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
| − | |||
var _asianfuse = { | var _asianfuse = { | ||
| − | + | maxWidth: 425, | |
| − | + | maxHeight: 350, | |
| − | + | cache: {}, | |
| − | + | flowplayers: {}, | |
| − | + | restores: [], | |
| − | + | container: function(id){ return(jQuery('#af-media-embed-container_' + id)); }, | |
| − | + | embed: function(id){ return(jQuery('#af-media-href_' + id).length ? jQuery('#af-media-href_' + id) : jQuery('#af-media-embed_' + id)); }, | |
| + | restore: function(id){ return(jQuery('#af-media-restore_' + id)); }, | ||
| + | ratio: function(id) { return(_asianfuse.container(id_num).height() / _asianfuse.embed(id_num).height()); }, | ||
| + | is_maximized: function(id) { | ||
| + | return parseInt(this.container(id).height()) == parseInt(this.maxHeight * this.ratio(id)) && parseInt(this.container(id).width()) == parseInt(_asianfuse.maxWidth); | ||
| + | } | ||
| + | } | ||
| − | + | function setDefaults() { | |
| − | + | jQuery('.afv').each(function(i, el) { | |
| + | id_num = this.id.split('_', 2)[1] | ||
| − | + | _asianfuse.cache[id_num] = { | |
| − | + | container_height: _asianfuse.container(id_num).height(), | |
| + | container_width: _asianfuse.container(id_num).width(), | ||
| + | container_ratio: _asianfuse.ratio(id_num), | ||
| + | embed_height: _asianfuse.embed(id_num).height(), | ||
| + | embed_width: _asianfuse.embed(id_num).width() | ||
| + | } | ||
| + | }); | ||
} | } | ||
| − | function | + | function setMouseDownEvents() { |
| − | + | jQuery('.afv').mousedown(function(e) { | |
| + | id_num = this.id.split('_', 2)[1]; | ||
| − | + | if( e.which != 1 || _asianfuse.is_maximized(id_num) ) { return; } | |
| − | _asianfuse. | + | _asianfuse.container(id_num).width(_asianfuse.maxWidth + 'px'); |
| + | _asianfuse.container(id_num).height((_asianfuse.maxHeight * _asianfuse.cache[id_num].container_ratio) + 'px'); | ||
| − | + | _asianfuse.embed(id_num).width(_asianfuse.maxWidth + 'px'); | |
| − | + | _asianfuse.embed(id_num).height(_asianfuse.maxHeight + 'px'); | |
// Reset the width relative to the width of the embedded video, | // 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 | // because we cannot count on it's parent element's calculated width to cause this to display as expected | ||
| − | + | _asianfuse.restore(id_num).width((_asianfuse.maxWidth * 0.98) + 'px'); | |
| − | + | _asianfuse.restore(id_num).show(); | |
| + | if ( _asianfuse.flowplayers[id_num] != undefined ) { | ||
| + | _asianfuse.flowplayers[id_num].load(); | ||
| + | } | ||
| + | }); | ||
| + | } | ||
| − | + | function setRestoreEvents() { | |
| − | + | jQuery('div.restore').click(function(e) { | |
| − | + | id_num = this.id.split('_', 2)[1] | |
| − | |||
| − | + | if( _asianfuse.is_maximized(id_num) ) { | |
| + | if ( _asianfuse.flowplayers[id_num] != undefined ) { | ||
| + | _asianfuse.flowplayers[id_num].stop(); | ||
| + | } | ||
| + | _asianfuse.restore(id_num).hide(); | ||
| + | _asianfuse.embed(id_num).width(_asianfuse.cache[id_num].embed_width + 'px'); | ||
| + | _asianfuse.embed(id_num).height(_asianfuse.cache[id_num].embed_height + 'px'); | ||
| − | + | _asianfuse.container(id_num).width(_asianfuse.cache[id_num].container_width + 'px'); | |
| − | + | _asianfuse.container(id_num).height(_asianfuse.cache[id_num].container_height + 'px'); | |
} | } | ||
| − | } | + | }); |
| + | } | ||
| + | |||
| + | function initAsianFuseVideoPanels() { | ||
| + | setDefaults(); | ||
| + | setMouseDownEvents(); | ||
| + | setRestoreEvents(); | ||
} | } | ||
| + | |||
| + | |||
| + | addOnloadHook( initAsianFuseVideoPanels ); | ||
Latest revision as of 23:06, 21 September 2011
/* Any JavaScript here will be loaded for all users on every page load. */
var _asianfuse = {
maxWidth: 425,
maxHeight: 350,
cache: {},
flowplayers: {},
restores: [],
container: function(id){ return(jQuery('#af-media-embed-container_' + id)); },
embed: function(id){ return(jQuery('#af-media-href_' + id).length ? jQuery('#af-media-href_' + id) : jQuery('#af-media-embed_' + id)); },
restore: function(id){ return(jQuery('#af-media-restore_' + id)); },
ratio: function(id) { return(_asianfuse.container(id_num).height() / _asianfuse.embed(id_num).height()); },
is_maximized: function(id) {
return parseInt(this.container(id).height()) == parseInt(this.maxHeight * this.ratio(id)) && parseInt(this.container(id).width()) == parseInt(_asianfuse.maxWidth);
}
}
function setDefaults() {
jQuery('.afv').each(function(i, el) {
id_num = this.id.split('_', 2)[1]
_asianfuse.cache[id_num] = {
container_height: _asianfuse.container(id_num).height(),
container_width: _asianfuse.container(id_num).width(),
container_ratio: _asianfuse.ratio(id_num),
embed_height: _asianfuse.embed(id_num).height(),
embed_width: _asianfuse.embed(id_num).width()
}
});
}
function setMouseDownEvents() {
jQuery('.afv').mousedown(function(e) {
id_num = this.id.split('_', 2)[1];
if( e.which != 1 || _asianfuse.is_maximized(id_num) ) { return; }
_asianfuse.container(id_num).width(_asianfuse.maxWidth + 'px');
_asianfuse.container(id_num).height((_asianfuse.maxHeight * _asianfuse.cache[id_num].container_ratio) + 'px');
_asianfuse.embed(id_num).width(_asianfuse.maxWidth + 'px');
_asianfuse.embed(id_num).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
_asianfuse.restore(id_num).width((_asianfuse.maxWidth * 0.98) + 'px');
_asianfuse.restore(id_num).show();
if ( _asianfuse.flowplayers[id_num] != undefined ) {
_asianfuse.flowplayers[id_num].load();
}
});
}
function setRestoreEvents() {
jQuery('div.restore').click(function(e) {
id_num = this.id.split('_', 2)[1]
if( _asianfuse.is_maximized(id_num) ) {
if ( _asianfuse.flowplayers[id_num] != undefined ) {
_asianfuse.flowplayers[id_num].stop();
}
_asianfuse.restore(id_num).hide();
_asianfuse.embed(id_num).width(_asianfuse.cache[id_num].embed_width + 'px');
_asianfuse.embed(id_num).height(_asianfuse.cache[id_num].embed_height + 'px');
_asianfuse.container(id_num).width(_asianfuse.cache[id_num].container_width + 'px');
_asianfuse.container(id_num).height(_asianfuse.cache[id_num].container_height + 'px');
}
});
}
function initAsianFuseVideoPanels() {
setDefaults();
setMouseDownEvents();
setRestoreEvents();
}
addOnloadHook( initAsianFuseVideoPanels );