// JavaScript Document

// Erro no carregamento Ajax
function reportError(request) {
	window.alert("O sistema gerou um erro inesperado!");
}

// Evento de carregamento da página
window.onload = function () {
	acao = gup("acao");
	if (acao == "cancelaContato") {
		idContato = gup("idContato");
		if (idContato != "") {
			getFrmCancelaContato(idContato);
		}
	}
	else {
		centro = gup("centro");
		conteudo = gup("conteudo");
		crumb = gup("crumb");
		if (centro != "") {
			getCentro(centro, conteudo, url_decode(crumb));
		}
		else {
			getCentro("inicial", "", "");
		}
	}

	Event.observe($("divBannerTopo"), "mouseover", function(){$("divBannerTopo").style.clip = 'rect(0px, 468px, 300px, 0px)'});
	Event.observe($("divBannerTopo"), "mouseout", function(){$("divBannerTopo").style.clip = 'rect(0px, 468px, 60px, 0px)'});
}
/*
if (document.all) {
	if (navigator.appVersion.indexOf("MSIE 5")<0) {
		document.onmousedown=iecapture;
		document.onmouseup=iecapture;
		document.onclick=iecapture;
		document.ondblclick=iecapture;
	}
}else if (document.layers) {
	window.captureEvents(Event.MOUSEDOWN)
	window.onmousedown=nscapture
}
function iecapture() {
	var el=event.srcElement;
	if (event.button==2){
		if ((el.tagName!="input") && (el.tagName!="TEXTAREA") && (el.tagName!="SELECT") && (el.tagName!="OBJECT") && (el.tagName!="EMBED")) {
			alert(''www.asparena.eti.br '');
		}
	}
}
function nscapture(ev) {
	if (ev.which!=1){
		alert(''www.asparena.eti.br '');
		return false;
	}
}*/
function iecapture() {
	var el=event.srcElement;
	if (event.button==2){
		if ((el.tagName!="input") && (el.tagName!="TEXTAREA") && (el.tagName!="SELECT") && (el.tagName!="OBJECT") && (el.tagName!="EMBED")) {
			alert("O botão direito não é permitido!");
		}
	}
}
function nscapture(ev) {
	if (ev.which!=1){
		alert("O botão direito não é permitido!");
		return false;
	}
}
	
if (document.all) {
	if (navigator.appVersion.indexOf("MSIE 5")<0) {
		document.onmousedown=iecapture;
		document.onmouseup=iecapture;
		document.ondblclick=iecapture;
	}
}
else if (document.layers) {
	window.captureEvents(Event.MOUSEDOWN);
	window.onmousedown=nscapture;
}

// Evento click do mouse
window.document.onclick = function (event){
	
	var e = null;
	
	// Capturação de evento multiplataforma
	try { // I.E.
		e = window.event.srcElement;
	}
	catch(error) {
		try { // Firefox
			e = event.target;
		}
		catch(ex) {
			window.alert("O navegador não possui suporte ao Ajax!");
			window.alert("Atualize seu navegador.");
			return null;
		}
	}
	
	var tipo = e.getAttribute('tipo');
	// obs.: objElem.setAttribute('atributo', 'valor');
	
	// Atribuição de procedimentos aos eventos
	switch (tipo) {
		
	/*** Início Operações Básicas ***/
		case "menu":
			getCentro(e.getAttribute("centro"), e.getAttribute("conteudo"), e.getAttribute("crumb"));
			break;
		case "menuInterno":
			getConteudo(e.getAttribute("valor"), e.innerHTML);
			break;
		case "loginAdm":
			getAutenticacaoAdm(e.getAttribute("form"));
			break;
		case "loginEditor":
			getAutenticacaoEditor(e.getAttribute("form"));
			break;
		case "loginDoador":
			getAutenticacaoDoador(e.getAttribute("form"));
			break;
		case "enviaVoluntario":
			enviaVoluntario(e.getAttribute("form"));
			break;
		case "enviaMensagem":
			enviaMensagem(e.getAttribute("form"));
			break;
		case "enviaParceiro":
			enviaParceiro(e.getAttribute("form"));
			break;
	/*** Fim Operações Básicas ***/
			
	/*** Início Álbum ***/
		case "mostraAlbum":
			mostraAlbum(e.getAttribute("valor"), e.innerHTML);
			break;
		case "mostraFoto":
			mostraFoto(e.getAttribute("valor"));
			break;
		case "mostraSlideShow":
			mostraSlideShow(e.getAttribute("valor"));
			break;
		case "voltaAlbum":
			mostraAlbum(e.getAttribute("valor"), e.getAttribute("crumb"));
			break;
	/*** Fim Álbum ***/
			
	/*** Início Agenda de Eventos ***/
		case "mostraEvento":
			mostraEvento(e.getAttribute("valor"));
			break;
	/*** Fim Agenda de Eventos ***/
			
	/*** Início Notícias ***/
		case "mostraNoticia":
			mostraNoticia(e.getAttribute("valor"), e.innerHTML);
			break;
	/*** Fim Notícias ***/
			
	/*** Início Atividade ***/
		case "mostraAlbumAtividade":
			mostraAlbumAtividade(e.getAttribute("valor"));
			break;
		case "mostraSlideShowAtividade":
			mostraSlideShowAtividade(e.getAttribute("valor"));
			break;
	/*** Fim Atividade ***/
			
	/*** Início Newsletter ***/
		case "salvaContato":
			salvaContato(e.getAttribute("form"));
			break;
		case "cancelaContato":
			cancelaContato(e.getAttribute("form"));
			break;
	/*** Fim Newsletter ***/
			
	}
	
}

// Carrega o centro do site solicitado no menu
function getCentro(idCentro, idConteudo, crumb) {
	
	var pars   = 'idCentro=' + idCentro + '&idConteudo=' + idConteudo + '&crumb=' + crumb;
	var url    = 'paginas/getConteudo.php';
	var myAjax = new Ajax.Updater( {success: 'divCentro'}, url, {method: 'post', parameters: pars, onFailure: reportError});
	
}

// Carrega o conteúdo solicitado no menu e atualiza o breadcrumb
function getConteudo(idConteudo, pagina) {
	
	$('spaPaginaAtual').innerHTML = pagina;
	var pars   = 'idConteudo=' + idConteudo;
	var url    = 'paginas/getConteudo.php';
	var myAjax = new Ajax.Updater( {success: 'divConteudo'}, url, {method: 'post', parameters: pars, onFailure: reportError});
	
}

// Carrega a página de autenticação administrativa
function getAutenticacaoAdm(idForm) {
	
	var valid = new Validation(idForm, {immediate : true});
	if (valid.validate()) {
		var pars   = getParamsForm(idForm);
		var url    = 'paginas/getAutenticacaoAdm.php';
		var myAjax = new Ajax.Request( url, {method: 'post', parameters: pars, onComplete: confirmaAutenticacaoAdm, onFailure: reportError});
	}
	
}

// Confirma a autenticação administrativa
function confirmaAutenticacaoAdm(req) {
	acesso = req.responseXML.getElementsByTagName("acesso")[0].firstChild.data;
	if (acesso == "permitido") {
		window.location.replace("indexAdm.php");
	}
	else {
		login = req.responseXML.getElementsByTagName("login")[0].firstChild.data;
		getBlocoAcessoNegadoAdm(login == url_encode(" ") ? "" : login);
	}
}

// Carrega o bloco de acesso administrativo negado
function getBlocoAcessoNegadoAdm(login) {
	
	var pars   = 'login=' + login;
	var url    = 'paginas/blocoAcessoNegadoAdm.php';
	var myAjax = new Ajax.Updater( {success: 'divAcesso'}, url, {method: 'post', parameters: pars, onFailure: reportError});
	
}

// Carrega a página de autenticação de editor
function getAutenticacaoEditor(idForm) {
	
	var valid = new Validation(idForm, {immediate : true});
	if (valid.validate()) {
		var pars   = getParamsForm(idForm);
		var url    = 'paginas/getAutenticacaoEditor.php';
		var myAjax = new Ajax.Request( url, {method: 'post', parameters: pars, onComplete: confirmaAutenticacaoEditor, onFailure: reportError});
	}
	
}

// Confirma a autenticação de editor
function confirmaAutenticacaoEditor(req) {
	acesso = req.responseXML.getElementsByTagName("acesso")[0].firstChild.data;
	if (acesso == "permitido") {
		window.location.replace("indexEditor.php");
	}
	else {
		login = req.responseXML.getElementsByTagName("login")[0].firstChild.data;
		getBlocoAcessoNegadoEditor(login == url_encode(" ") ? "" : login);
	}
}

// Carrega o bloco de acesso de editor negado
function getBlocoAcessoNegadoEditor(login) {
	
	var pars   = 'login=' + login;
	var url    = 'paginas/blocoAcessoNegadoEditor.php';
	var myAjax = new Ajax.Updater( {success: 'divAcesso'}, url, {method: 'post', parameters: pars, onFailure: reportError});
	
}

// Carrega a página de autenticação de doador
function getAutenticacaoDoador(idForm) {
	
	var valid = new Validation(idForm, {immediate : true});
	if (valid.validate()) {
		var pars   = getParamsForm(idForm);
		var url    = 'paginas/getAutenticacaoDoador.php';
		var myAjax = new Ajax.Request( url, {method: 'post', parameters: pars, onComplete: confirmaAutenticacaoDoador, onFailure: reportError});
	}
	
}

// Confirma a autenticação de doador
function confirmaAutenticacaoDoador(req) {
	acesso = req.responseXML.getElementsByTagName("acesso")[0].firstChild.data;
	if (acesso == "permitido") {
		window.location.replace("indexDoador.php");
	}
	else {
		login = req.responseXML.getElementsByTagName("login")[0].firstChild.data;
		getBlocoAcessoNegadoDoador(login == url_encode(" ") ? "" : login);
	}
}

// Carrega o bloco de acesso de doador negado
function getBlocoAcessoNegadoDoador(login) {
	
	var pars   = 'login=' + login;
	var url    = 'paginas/blocoAcessoNegadoDoador.php';
	var myAjax = new Ajax.Updater( {success: 'divAcesso'}, url, {method: 'post', parameters: pars, onFailure: reportError});
	
}

// Retorna uma string com todos os parâmetros de um formulário
function getParamsForm(idForm) {

	var pars = "";
	var campo = null;
	for (var i = 0; i < $(idForm).elements.length; ++i) {
		campo = $(idForm).elements[i];
		if (campo.type == "checkbox") {
			if (campo.checked) {
				pars += campo.name + '=' + url_encode(campo.value) + '&';
			}
		}
		else {
			pars += campo.name + '=' + url_encode(campo.value) + '&';
		}
	}
	if (pars != "") pars = pars.substring(0, pars.length - 1);
	
	return pars;
	
}

// url_encode version 1.0  
function url_encode(str) {  
	var hex_chars = "0123456789ABCDEF";  
	var noEncode = /^([a-zA-Z0-9\_\-\.])$/;  
	var n, strCode, hex1, hex2, strEncode = "";  

	for(n = 0; n < str.length; n++) {  
		if (noEncode.test(str.charAt(n))) {  
			strEncode += str.charAt(n);  
		} else {  
			strCode = str.charCodeAt(n);  
			hex1 = hex_chars.charAt(Math.floor(strCode / 16));  
			hex2 = hex_chars.charAt(strCode % 16);  
			strEncode += "%" + (hex1 + hex2);  
		}  
	}  
	return strEncode;  
}

// url_decode version 1.0  
function url_decode(str) {  
	var n, strCode, strDecode = "";  

	for (n = 0; n < str.length; n++) {  
		if (str.charAt(n) == "%") {  
			strCode = str.charAt(n + 1) + str.charAt(n + 2);  
			strDecode += String.fromCharCode(parseInt(strCode, 16));  
			n += 2;  
		} else {  
			strDecode += str.charAt(n);  
		}  
	}  

	return strDecode;  
}

// retorna determinado parâmetro da url
function gup(name) {
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null )
    return "";
  else
    return results[1];
}
