function createXMLHTTP(){
	var ajax;
	try {
		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}catch(e) {
		try {
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
			alert(ajax);
		}catch(ex) {
			try {
				ajax = new XMLHttpRequest();
			}catch(exc) {
				alert("Esse browser não tem recursos para uso do Ajax");
				ajax = null;
			}
		} 
		return ajax;
	}
	
	var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
	for (var i=0; i < arrSignatures.length; i++) {
		try	{
			var oRequest = new ActiveXObject(arrSignatures[i]);
			return oRequest;
		} catch (oError) {
		}
	}
	
	throw new Error("MSXML is not installed on your system.");
}


function Requisicao(consulta,destino){

	destino.innerHTML = '<span align=left class="texto_endereco">Carregando...<img src="../img/remembermilk_orange.gif"></span>';
	var requisicao = createXMLHTTP();
	requisicao.open("get", consulta, true);
	requisicao.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=ISO-8859-1");
	requisicao.setRequestHeader("encoding", "iso-8859-1");
	requisicao.onreadystatechange=function(){
	   if (requisicao.readyState==4){
			destino.innerHTML = requisicao.responseText;
		 }
	}
	requisicao.send(null);
}


// Função responsável de conectar a uma página externa e retornar os resultados, no nosso caso a busca_nome.php
function ajax(url){
	req = null;
	// Procura por um objeto nativo (Mozilla/Safari)
	if (window.XMLHttpRequest){
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET",url,true);
		req.send(null);
	}
// * Procura por uma versão ActiveX (IE)	
	else if (window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req){
			req.onreadystatechange = processReqChange;
			req.open("GET",url,true);
			req.send();
		}
	}
}

function processReqChange(){
	if (req.readyState == 4){// * apenas quando o estado for "completado"
		if (req.status ==200){// * apenas se o servidor retornar "OK"
			//alert(div);
			document.getElementById(div).innerHTML = req.responseText;
		}
		else{
			alert("Houve um problema ao obter os dados:n" + req.statusText);
		}
	}
}

/*************************************************************************
* FUNÇÃO: Object obj(elemento)
* AUTOR: Anselmo
* DESCRICAO: forma abreviada de document.getElementById(elemento)
* UTILIDADE: retorna o objeto DOM manipulável do elemento com id="elemento"
* DEPENDÊNCIAS: não possui
* EX.USO:
*	     <input type="text" id="preco" value="50">
*        obj("preco") retorna o objeto id="preco" e todas suas propriedades 
**************************************************************************/
function obj(elemento)
{	
	return document.getElementById(elemento); 
}

/*************************************************************************
* FUNÇÃO: String valor(elemento)
* AUTOR: Anselmo
* DESCRICAO: é uma forma abreviada de document.getElementById(elemento).value, 
* UTILIDADE: retorna o valor de um campo de formulário com id="elemento"
* DEPENDÊNCIAS: não possui
* EX.USO:
*	     <input type="text" id="preco" value="50">
*        valor("preco") retorna 50
**************************************************************************/
function valor(elemento)
{	
	return document.getElementById(elemento).value; 
}



/*************************************************************************
* FUNÇÃO: Bool isEmail(elemento)
* DESCRICAO: identifica se um e-mail é válido; 
* se o e-mail for válido retorna true, senão, false
* DEPENDÊNCIAS: nenhuma;
**************************************************************************/
function isEmail(pVal)
{
	var reTipo = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	return reTipo.test(pVal);
}

function checaVazios(form){
	switch(form){
		case 'frmLoginTopo':
			login = document.getElementById('sis_login').value.length;
			senha = document.getElementById('sis_senha').value.length;
			erros = '';
			if(!login > 0) erros += 'Digite seu login\n';
			if(!senha > 0) erros += 'Digite sua senha\n';
			if(erros.length > 0){
				alert('Atenção: \n\n'+erros);
				return false;
			}else
				return true;
		break;
	}
}


/*************************************************************************
* FUNÇÃO: Void abrirPopUp(pagina,largura,altura)
* DESCRICAO: abre a página "pagina" em um popup centralizado na tela com largura "largura" e altura "altura"
* se o e-mail for válido retorna true, senão, false
* DEPENDÊNCIAS: nenhuma;
**************************************************************************/
function abrirPopUp(pagina,largura,altura)
{

	w = screen.width;
	h = screen.height;
	meio_w = w/2;
	meio_h = h/2;
	altura2 = altura/2;
	largura2 = largura/2;
	meio1 = meio_h-altura2;
	meio2 = meio_w-largura2;
	window.open(pagina,'','height=' + altura + ', width=' + largura + ', top='+meio1+', left='+meio2+'');
}




/* *********************************************************************************************************
 * FUNÇÃO: verificaForca(campo)
 * UTILIDADE: verifica a força da senha de forma interativa
 * DEPENDÊNCIAS: nenhuma; mas exige a existencia de um campo com id="resultForca", 
 * onde a alteração de força será exibida.
********************************************************************************************************* */
function verificaForca(campo) { var valor = campo.value; var contemNumeros = /[0-9]/; var contemLetras = /[a-z]/i; var contemEspecial = /[@#$%&amp;amp;*]/; var contagem = 0; var mensagem = ""; if ( valor.length > 0 ) { if ( contemNumeros.test( valor ) ) contagem++; if ( contemLetras.test( valor ) ) contagem++; if ( contemEspecial.test( valor ) ) contagem++; 
switch ( contagem ) 
{ 
	case 1: mensagem = " <b><font color=red>Senha fraca.</font></b>."; 
	break; 
	case 2: mensagem = " <b><font color=#F89207>Senha média.</font></b>"; 
	break; 
	case 3: 
	mensagem = " <b><font color=green>Senha forte!</font></b>";
	break; 
	default: mensagem = "Erro..."; 
} 
document.getElementById('resultForca').innerHTML = mensagem; } }



/* *********************************************************************************************************
 * DEPENDÊNCIAS:  A função mascara_global(mascara, valor) depende de removeEspacos(valor)
********************************************************************************************************* */
function removeEspacos(valor){
var valorSemEspacos="";

var tamanho = valor.length;
	for (i = 0; i<30;i++){
		if(valor.substr(i,1)==" "){
		}else{
		valorSemEspacos = valorSemEspacos + valor.substr(i,1);
		}
	}
return valorSemEspacos;
}


/* *********************************************************************************************************
 * FUNÇÃO: String mascara_global(mascara, valor)
 * FROMA DE USO PARA FORMATAR DINHEIRO: onkeyup="this.value = mascara_global('[###.]###,##', this.value)
 * DEPENDÊNCIAS:  A função mascara_global(mascara, valor) depende de removeEspacos(valor)
********************************************************************************************************* */
function mascara_global(mascara, valor){
	
	
	if(mascara == '###.###.###-##|##.###.###/####-##'){
		if(valor.length>14){
			return mascara_global('##.###.###/####-##', valor);
		}else{
			return mascara_global('###.###.###-##', valor);
		}
	}
	
	tvalor = "";
	ret = "";
	caracter = "#";
	separador = "|";
	mascara_utilizar = "";
	valor = removeEspacos(valor);
	if (valor == "")return valor;
	temp = mascara.split(separador);
	dif = 1000;
	
	valorm = valor;
	//tirando mascara do valor já existente
	for (i=0;i<valor.length;i++){
		if (!isNaN(valor.substr(i,1))){
			tvalor = tvalor + valor.substr(i,1);
		}
	}
	
	valor = tvalor;
	
	//formatar mascara dinamica
	for (i = 0; i<temp.length;i++){
		mult = "";
		validar = 0;
		for (j=0;j<temp[i].length;j++){
			if (temp[i].substr(j,1) == "]"){
				temp[i] = temp[i].substr(j+1);
				break;
			}
			if (validar == 1)mult = mult + temp[i].substr(j,1);
			if (temp[i].substr(j,1) == "[")validar = 1;
		}
		for (j=0;j<valor.length;j++){
			temp[i] = mult + temp[i];
		}
	}
	
	//verificar qual mascara utilizar
	if (temp.length == 1){
		mascara_utilizar = temp[0];
		mascara_limpa = "";
		for (j=0;j<mascara_utilizar.length;j++){
			if (mascara_utilizar.substr(j,1) == caracter){
				mascara_limpa = mascara_limpa + caracter;
			}
		}
		tam = mascara_limpa.length;
	}else{
		//limpar caracteres diferente do caracter da máscara
		for (i=0;i<temp.length;i++){
			mascara_limpa = "";
			for (j=0;j<temp[i].length;j++){
				if (temp[i].substr(j,1) == caracter){
					mascara_limpa = mascara_limpa + caracter;
				}
			}
			if (valor.length > mascara_limpa.length){
				if (dif > (valor.length - mascara_limpa.length)){
					dif = valor.length - mascara_limpa.length;
					mascara_utilizar = temp[i];
					tam = mascara_limpa.length;
				}
			}else if (valor.length < mascara_limpa.length){
				if (dif > (mascara_limpa.length - valor.length)){
					dif = mascara_limpa.length - valor.length;
					mascara_utilizar = temp[i];
					tam = mascara_limpa.length;
				}
			}else{
				mascara_utilizar = temp[i];
				tam = mascara_limpa.length;
				break;
			}
		}
	}
	
	//validar tamanho da mascara de acordo com o tamanho do valor
	if (valor.length > tam){
		valor = valor.substr(0,tam);
	}else if (valor.length < tam){
		masct = "";
		j = valor.length;
		for (i = mascara_utilizar.length-1;i>=0;i--){
			if (j == 0) break;
			if (mascara_utilizar.substr(i,1) == caracter){
				j--;
			}
			masct = mascara_utilizar.substr(i,1) + masct;
		}
		mascara_utilizar = masct;
	}
	
	//mascarar
	j = mascara_utilizar.length -1;
	for (i = valor.length - 1;i>=0;i--){
		if (mascara_utilizar.substr(j,1) != caracter){
			ret = mascara_utilizar.substr(j,1) + ret;
			j--;
		}
		ret = valor.substr(i,1) + ret;
		j--;
	}
	return ret;
}