/** * @author Evan Winslow * * $Id: elgglib.js 76 2010-07-17 02:08:02Z evan.b.winslow $ */ /** * @namespace Namespace for elgg javascript functions */ var elgg = elgg || {}; elgg.init = function() { //if the user clicks a system message, make it disappear $('.elgg_system_message').live('click', function() { $(this).stop().fadeOut('fast'); }); }; /** * Pointer to the global context * {@see elgg.require} and {@see elgg.provide} */ elgg.global = this; /** * Throw an error if the required package isn't present * * @param {String} pkg The required package (e.g., 'elgg.package') */ elgg.require = function(pkg) { var parts = pkg.split('.'), cur = elgg.global, part; for (var i = 0; i < parts.length; i++) { part = parts[i]; cur = cur[part]; if(typeof cur == 'undefined') { throw new Error("Missing package: " + pkg); } } }; /** * Generate the skeleton for a package. * *
 * elgg.provide('elgg.package.subpackage');
 * 
 * 
 * is equivalent to
 * 
 * 
 * elgg = elgg || {};
 * elgg.package = elgg.package || {};
 * elgg.package.subpackage = elgg.package.subpackage || {};
 * 
 */
elgg.provide = function(pkg) {
	var parts = pkg.split('.'),
		cur = elgg.global,
		part;
	
	for (var i = 0; i < parts.length; i++) {
		part = parts[i];
		cur[part] = cur[part] || {};
		cur = cur[part];
	}
};
/**
 * Inherit the prototype methods from one constructor into another.
 * 
 * @example
 * 
 * function ParentClass(a, b) { }
 * 
 * ParentClass.prototype.foo = function(a) { alert(a); }
 *
 * function ChildClass(a, b, c) {
 *     //equivalent of parent::__construct(a, b); in PHP
 *     ParentClass.call(this, a, b);
 * }
 *
 * elgg.inherit(ChildClass, ParentClass);
 *
 * var child = new ChildClass('a', 'b', 'see');
 * child.foo('boo!'); // alert('boo!');
 * 
 *
 * @param {Function} childCtor Child class.
 * @param {Function} parentCtor Parent class.
 */
elgg.inherit = function(Child, Parent) {
	Child.prototype = new Parent();
	Child.prototype.constructor = Child;
};
/**
 * Prepend elgg.config.wwwroot to a url if the url doesn't already have it.
 * 
 * @param {String} url The url to extend
 * @return {String} The extended url
 * @private
 */
elgg.extendUrl = function(url) {
	url = url || '';
	if(url.indexOf(elgg.config.wwwroot) == -1) {
		url = elgg.config.wwwroot + url;
	}
	
	return url;
};
/**
 * Displays system messages via javascript rather than php.
 * 
 * @param {String} msgs The message we want to display
 * @param {Number} delay The amount of time to display the message in milliseconds. Defaults to 6 seconds.
 * @param {String} type The type of message (typically 'error' or 'message')
 * @private
 */
elgg.system_messages = function(msgs, delay, type) {
	if (msgs == undefined) {
		return;
	}
	
	//validate delay.  Must be a positive integer. 
	delay = parseInt(delay);
	if (isNaN(delay) || delay <= 0) {
		delay = 6000;
	}
	
	classes = ['elgg_system_message', 'radius8'];
	if (type == 'error') {
		classes.push('messages_error');
	}
	//Handle non-arrays
	if (msgs.constructor.toString().indexOf("Array") == -1) {
		msgs = [msgs];
	}
	
	var messages_html = [];
	
	for (var i in msgs) {
		messages_html.push('' + msgs[i] + '