/* ************************************************************************** **
**		$()								                                      **
**		Extension of getElementById method                                    **
** ************************************************************************** */
function $() {
	var elems = [];
	for (var i=0; i<arguments.length; i++) {
		var elem = arguments[i];
		if (typeof elem == 'string') elem = document.getElementById(elem);
		if (arguments.length == 1) return elem;
		elems.push(elem);
  	}
	return elems;
}

/* ************************************************************************** **
**		addClass(class_name)			                                      **
**		Adds a class name to an object	                                      **
** ************************************************************************** */
function addClass(class_name) {
	if (this.className != '') this.className += ' ' + class_name;
	else this.className = class_name;
}
Object.prototype.addClass = addClass;

/* ************************************************************************** **
**		addEventToObject(obj, evt, func)                                      **
**		Binds events to objects			                                      **
** ************************************************************************** */

function addEventToObject(obj, evt, func) {
	var oldhandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(){oldhandler();func();};
}

/* ************************************************************************** **
**		Array.push()                                                          **
**		Adds method  for older unsupported browsers                           **
** ************************************************************************** */

if (!Array.prototype.push) {
	Array.prototype.push = function(elem) {
		this[this.length] = elem;
		return this.length;
	}
}

/* ************************************************************************** **
**		Array.shift()                                                         **
**		Adds method  for older unsupported browsers                           **
** ************************************************************************** */

if (!Array.prototype.shift) {
	Array.prototype.shift = function() {
		var response = this[0];
		for (var i=0; i < this.length-1; i++) {
		this[i] = this[i + 1];
	}
	this.length--;
	return response;
	}
}

/* ************************************************************************** **
**		removeClass(class_name)			                                      **
**		Removes a class name from an object	                                  **
** ************************************************************************** */
function removeClass(class_name) {
	var oldClass = this.className;
	var re = new RegExp('\\s?'+class_name+'\\b');
	if (oldClass.indexOf(class_name) != -1) this.className = oldClass.replace(re,'');
}
Object.prototype.removeClass = removeClass;
