
var Lib = {

	mostraArray: function(arr){
		var tmp = '';
		if(arr){
			for(var i in arr){
				tmp += i + " = " + arr[i] + "\n";
			}
		}
		alert(tmp);
	},

	getElem: function (elem) {
		if (document.getElementById) {
			if (typeof elem == "string") {
				elem = document.getElementById(elem);
				if (elem===null) throw 'Impossivel capturar elemento: Elemento não existe';
			} else if (typeof elem != "object") {
				throw 'Impossivel capturar elemento: Tipo de dados inválido';
			}
		} else throw 'cannot get element: unsupported DOM';
		return elem;
	},

	hasClass: function (elem, className) {
		return getElem(elem).className.split(' ').has(className);
	},

	getElementsByClass: function (className, tagName, parentNode) {
		parentNode = !isUndefined(parentNode)? getElem(parentNode) : document;
		if (isUndefined(tagName)) tagName = '*';
		return filter(parentNode.getElementsByTagName(tagName),function(elem) { return hasClass(elem, className) });
	},

	jsVars: function (id){
		if (id != undefined) {
			var myScript = this.getElem(id);
		} else {
			var scripts = document.getElementsByTagName('script');
			var myScript = scripts[ scripts.length - 1 ];
		}
		qs = this.parseQuery( myScript.src );
		return qs;
	},

	parseQuery: function ( qs ) {
		var Params = new Object ();
		if(!(qs = qs || location.href)) return null;
		qs = qs.replace(/^[^\?]+\??/,'');
		var Pairs = qs.split(/[;&]/);
		for ( var i = 0; i < Pairs.length; i++ ) {
			if (Pairs[i].indexOf('=') == -1){
				var KeyVal = new Array(Pairs[i],'');
			} else {
				var KeyVal = Pairs[i].split('=');
			}
			if ( ! KeyVal || KeyVal.length != 2 ) continue;
			var key = unescape( KeyVal[0] );
			var val = unescape( KeyVal[1] );
			val = val.replace(/\+/g, ' ');
			Params[key] = val;
		}
		return Params;
	},
	
	include: function (arquivo){
		var novo = document.createElement('script');
		novo.setAttribute('language', 'javascript');
		novo.setAttribute('type', 'text/javascript');
		novo.setAttribute('src', arquivo);
		document.getElementsByTagName('head').item(0).appendChild(novo);
	}

}

Lib.include('externos/event_listener.js');