/*
Ajax Sem Dor, Fácil
autor: Renato
resumo:
data de criação: 13/08/2007 02:19
prazo: 13/08/2007 10:00
modificações:
		executar
		abrirDiv
		fecharDiv
	08/09/2007
		alterado a forma de construção
	27/09/2007
		abrir
		acrescentados comportamentos padrões
	24/10/2007
		alterada a construção novamente
	27/11/2007
		alterada a construção novamente. agora é uma classe estática, todos os métodos são estáticos

pendencias:
	addFuncao
	executarFuncao
*/

Asdf = {
	carregar: function(url, alvo, metodo, informacoes) {
		var ret = false;
		if (metodo == null) {
			metodo = "get";
		}
		new Ajax.Request(url, {
			method: metodo,			// vários comentários, inseridos tal dia na linha tal coluna tal
			parameters: informacoes,
			onSuccess: function(req) {
				$(alvo).innerHTML = req.responseText; //talvez precise de uma referência do documento
				ret = true;
			},
			onFailure: function() {
				alert("URL não encontrada!");
				ret = false;
			}
		});
		
		return ret;
	},	
	executar: function(url, metodo, informacoes) {
		var ret;// = null;
		if (metodo == null) {
			metodo = "get";
		}
		new Ajax.Request(url, {
			method: metodo,
			parameters: informacoes,
			asynchronous: false,
			onComplete: function(req) {
				ret = req.responseText;
			}
		});
		return ret;
	},
	executarJS: function (comando, objeto) {
/*/
		var s = this.add("script");
		s.innerHTML = "try{\n " + comando + "\n } catch(e) {\n alert(e);\n }";
		this.del(s);
/**/
		if (objeto == null) {
			objeto = this;
		}
    	return eval(comando, objeto);
/**/
	},
	addJS: function(url, dom) {
		if (!dom) {
			dom = document;
		}
//		var e = $(id);
		/* if (!e) */ {
			e = dom.createElement("script");
			e.src = url;
			dom.getElementsByTagName("head")[0].appendChild(e);
		}
		return e;
	},
	add: function(tipo, nome, alvo, propriedades, objetoSeguinte, dom) {
		if (dom == null) {
			dom = document;
		}
		var o = $(nome);
		if (alvo == null) {
			alvo = dom.body;
		}
		if (o == null) {
			o = dom.createElement(tipo);
			if (nome != null) {
				o.id = nome;
			}
			if (propriedades != null) {
				for (var p in propriedades) {
					if (p == 'innerHTML') {
						o.innerHTML = propriedades[p];
					}
					else {
						o.setAttribute(p, propriedades[p]);
					}
				}
			}
			if (!objetoSeguinte) {
				alvo.appendChild(o);
			}
			else {
				alvo.insertBefore(o, objetoSeguinte);
			}
		}
		return o;
	},
	mover: function(o, alvo, objetoSeguinte) {
		if (!objetoSeguinte) {
			alvo.appendChild(o);
		}
		else {
			alvo.insertBefore(o, objetoSeguinte);
		}
	},
	del: function(nome) {
		var o = nome;
		if (typeof(nome) == "string") {
			o = $(nome);
		}
		if (o != null) {
			var pai = o.parentNode;
			pai.removeChild(o);
			return true;
		}
		else {
			return false;
		}
	},	
	mostrar: function(nome) {
		var o = nome;
		if (typeof(nome) == "string") {
			o = $(nome);
		}

		if (o == null) {
			return null;
		}
		o.style.display = "";
		return true;
	},	
	esconder: function(nome) {
		var o = nome;
		if (typeof(nome) == "string") {
			o = $(nome);
		}

		if (o == null) {
			return null;
		}
		o.style.display = "none";
		return true;
	},	
	ver: function(nome) {
		var o = nome;
		if (typeof(nome) == "string") {
			o = $(nome);
		}

		if (o == null) {
			return null;
		}
		o.style.display = (o.style.display == "none")?"":"none";
		return true;
	},	
	set: function(nome, conteudo) {
		var o = nome;
		if (typeof(nome) == "string") {
			o = $(nome);
		}

		if (o == null) {
			return null;
		}
		o.innerHTML = conteudo;
		return true;
	},
	abrir: function(url, metodo, informacoes, novaJanela, nomeJanela, opcoesJanela) {
		if (metodo == null) {
			metodo = "get";
		}
		if (metodo.toLowerCase() == "get") {
			if (url.indexOf("?") == -1) {
				url += "?";
			}
			if (informacoes != null) {
				for (var i in informacoes) {
					url += "&" + i + "=" + informacoes[i];
				}
			}
			if (novaJanela) {
				return window.open(url, nomeJanela, opcoesJanela);
			}
			else {
				window.location = url;
			}
		}
		else {
			var idForm = "form-" + url; // esse é o tipo de coisa que devemos fazer!!
			var form = $(idForm);
			if (form == null) {
				form = this.add("form", idForm, document.body, {action: url, method: "post", target: (novaJanela)?"_blank":""});
			}
			if (informacoes != null) {
				for (var i in informacoes) {
					var campo = $(i);
					if (campo == null || campo.parentNode != form) {
						campo = this.add("input", i, form, {type: "hidden", name: i}, true);
					}
					campo.value = informacoes[i];
				}
			}
			form.submit();
			this.del(form); // e esse também!
		}
	}
};



