MediaWiki: Common.js

From ShareRice Wiki (AFN)
Jump to: navigation, search
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. */
  
// 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) {
 
video_panel = function(id, cfg) {
Line 86: Line 41:
 
}
 
}
  
 +
// Provide easy access to default values, neatly hidden in a "namespace" that SHOULDN'T conflict with any other environmental variables.
 
var _asianfuse2 = {
 
var _asianfuse2 = {
 
maxWidth: 425,
 
maxWidth: 425,
Line 94: Line 50:
 
}
 
}
 
}
 
}
 
  
 
function initAsianFuseVideoPanels() {
 
function initAsianFuseVideoPanels() {

Revision as of 20:12, 24 July 2011

/* Any JavaScript here will be loaded for all users on every page load. */


video_panel = function(id, cfg) {
	this.config       = cfg
	this.container    = jQuery('#af-media-embed-container_' + id)
	this.embedded     = jQuery('#af-media-embed_' + id)
	this.restorer     = jQuery('#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 + 'px');
		this.container.height(this.config.maxHeight + 45 + '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() {
		if( this.is_maximized() ) {
			this.restorer.hide();
			this.embedded.width(this.widths.embedded + 'px')
			this.embedded.height(this.heights.embedded + 'px');

			this.container.width(this.widths.container + 'px')
			this.container.height(this.heights.container + 'px')
		}
	}

	this.is_maximized = function() {
		o = (this.container.length > 0 ? 'container' : 'embedded');
		return parseInt(this[o].height()) == parseInt(this.config.maxHeight) &&
		       parseInt(this[o].width())	== parseInt(this.config.maxWidth);
	}
}

// Provide easy access to default values, neatly hidden in a "namespace" that SHOULDN'T conflict with any other environmental variables.
var _asianfuse2 = {
	maxWidth: 425,
	maxHeight: 350,
	video_panels: [],
	add: function(id, config) {
		this.video_panels[id] = new video_panel(id, config);
	}
}

function initAsianFuseVideoPanels() {
	jQuery('.afv').each(function(i, el) {
		id = el.id.split('_', 2)
		_asianfuse2.add(id[1], _asianfuse2);
	});
}

addOnloadHook( initAsianFuseVideoPanels );