function addLoadEvent(func){
	var oldOnload = window.onload;
	if (typeof window.onload != 'function') {
		//window.onload = func;
	}else{
		window.onload = function() {
			oldOnload();
			func();
		}
	}
}

/****** common.js ******/

function $(){
	var elements=new Array();
	for(var i=0;i<arguments.length;i++){
		var element=arguments[i];
		if(typeof element=='string'){
			element=document.getElementById(element);
		}

		if(arguments.length==1){
			return element;
		}
		elements.push(element);
	}
	return elements;
}

//==============================================================================
Function.prototype.bind=function(object){
	var method=this;
	return function(){
		return method.apply(object, arguments);
	}
}

function returnFalse(){
	return false;
}

//==============================================================================
var Event={
	KEY_BACKSPACE: 8,
	KEY_TAB:       9, 
	KEY_RETURN:    13,
	KEY_ESC:       27,
	KEY_LEFT:      37,
	KEY_UP:        38,
	KEY_RIGHT:     39,
	KEY_DOWN:      40,
	KEY_DELETE:    46,
	stop: function(event){
		if(event.preventDefault){
			event.preventDefault();
			event.stopPropagation();
		}else{
			event.returnValue=false;
			event.cancelBubble=true;
		}
	}
};

//==============================================================================
function addEvent(obj, type, fn){
	if(type.substring(0, 2).toLowerCase()=='on') throw 'You must not use "on" prefix in event names!';

	if(obj===window && type=='load'){
		if(!window.load){
			window.load=[];
		}
		window.load[window.load.length]=fn;
		return;
	}

	if(obj.addEventListener){
		obj.addEventListener(type, fn, false);
	}else if(obj.attachEvent){
		if(fn instanceof Function){
			fn=fn.bind(obj);
		}
		obj.attachEvent("on" + type, fn);
	}
}

function removeEvent(obj, type, fn){
	if(obj.removeEventListener){
		obj.removeEventListener(type, fn, false);
	}else if(obj.detachEvent){
		obj.detachEvent("on" + type, fn);
	}
}
