//==============================================================
//                     Mascara Versão 1.0
//==============================================================
// Autor: Fábio Henrique Dias de Abreu
// Data:  25/04/2003
//==============================================================
// Tipos Suportados: 
//      A = Alfa maiúsculo
//      a = Alfa minúsculo
//  0...9 = Somente até o número informado: 
//          Ex: Se informado "25" a primeira casa permitirá 
//              no máximo até o número 2 e a segunda casa
//              permitirá no máximo até o número 5.
//      X = Permite qualquer caracter, maiúsculo ou minúsculo.
//
//    Qualquer outro caracter informado será considerado como 
// separador.
//    Ex: 99/99/9999 - As barras serão consideradas caracteres
//                     de separação.
//
//==============================================================

addEvent(window, 'load', addListeners, false);

function addEvent(elemento, tipoEvento, func, useCapture){

   if(elemento.addEventListener){
      elemento.addEventListener(tipoEvento, func, useCapture);
      return true;
   }
   else if (elemento.attachEvent){
      var r = elemento.attachEvent('on' + tipoEvento, func);
      return r;
   }
   else { elemento['on' + tipoEvento] = func;  }
}

function addListeners(){

var objCampos = document.getElementsByTagName("input")

    /* Adiciona a mascara para os campos. So funciona no IE. */
	for (i=0; i < objCampos.length; i++){
	
    	if (objCampos[i].type.toUpperCase() == "TEXT"){
			if (typeof(objCampos[i].Mascara) != "undefined"){
               addEvent(objCampos[i], 'keypress', Mascarar, false);
			}
			
			/*if(objCampos[i].name == "userCPF")
				addEvent(objCampos[i], 'blur', validaCPF, false);
			
			if(objCampos[i].name == "userEmail")
				addEvent(objCampos[i], 'blur', validaEmail, false);
			// */
				
		}
	}
}

function validaForm(formulario){
	
	if(formulario.donatorName.value == ""){
		alert('Preencha o campo Nome.');
		formulario.donatorName.focus();
		return false;
	}
	else if(formulario.sexo.value == 0){
		alert('Selecione um valor para o campo Sexo.');
		formulario.sexo.focus();		
		return false;
	}
	else if(formulario.address1.value == ""){
		alert('Preencha o campo Endereço.');
		formulario.address1.focus();
		return false;
	}
	else if(formulario.address2.value == ""){
		alert('Preencha o campo Número.');
		formulario.address2.focus();
		return false;
	}
	else if(formulario.address4.value == ""){
		alert('Preencha o campo Bairro.');
		formulario.address4.focus();
		return false;
	}
	else if(formulario.cidade.value == ""){
		alert('Preencha o campo Cidade.');
		formulario.cidade.focus();		
		return false;
	}
	else if(formulario.estado.value == 0){
		alert('Selecione um valor para o campo Estado.');
		formulario.estado.focus();		
		return false;
	}
	else if(formulario.pais.value == 0){
		alert('Selecione um valor para o campo País.');
		formulario.pais.focus();		
		return false;
	}
	else if(formulario.banco.value == 0){
		alert('Selecione um valor para o campo Banco.');
		formulario.banco.focus();		
		return false;
	}
	else if(formulario.diaDebito.value == 0){
		alert('Selecione um valor para o campo Dia para Débito.');
		formulario.diaDebito.focus();		
		return false;
	}
	else if(formulario.diaAltDebito.value == 0){
		alert('Selecione um valor para o campo Dia alternativo para Débito.');
		formulario.diaAltDebito.focus();		
		return false;
	}
	else if(formulario.agenciaNumero.value == ""){
		alert('Preencha o campo Número da Agência.');
		formulario.agenciaNumero.focus();		
		return false;
	}
	else if(formulario.agenciaDigito.value == ""){
		alert('Preencha o campo Dígito da Agência.');
		formulario.agenciaDigito.focus();		
		return false;
	}
	else if(formulario.numeroConta.value == ""){
		alert('Preencha o campo Número da Conta.');
		formulario.numeroConta.focus();		
		return false;
	}
	else if(formulario.numeroContaDigito.value == ""){
		alert('Preencha o campo Dígito da Conta.');
		formulario.numeroContaDigito.focus();		
		return false;
	}
	
	


	cpf_valido = validadorCPF(document.getElementById('donatorCPF'));
	if(cpf_valido){
		email_valido = validadorEmail(document.getElementById('donatorEmail'));
	}

	return(cpf_valido && email_valido);

}

function validadorEmail(campoEmail){
	
	email_ereg = '\\b^[a-z\\d._-]+@([a-z\\d]+\\.)+[a-z]{2,4}$\\b';
	
	if(!ValidaRegex(campoEmail.value, email_ereg))
		return lancaErro(campoEmail, "E-mail");
	else {
		return apagaAviso(campoEmail);	
	}

}

function validaEmail(e){
	
   	var el;
   	if (window.event && window.event.srcElement)
    	el = window.event.srcElement;
   	if (e && e.target)
      	el = e.target;
   	if (!el)   return;
	
	return validadorEmail(el)
}




function validadorCPF(campoCPF){
	
	var CPF = '';

	if(campoCPF.value.length == 0){
		return lancaErro(campoCPF, 'CPF');
	}
	
   	for(i = 0 ; i < campoCPF.value.length; i++){	   
		if(campoCPF.value.charAt(i) >= '0' && campoCPF.value.charAt(i) <= '9')
			CPF += campoCPF.value.charAt(i);		
	}
	
	/* Trata zero inicial omitido: */
	if(CPF.length == 10)  CPF = '0' + CPF;	
	
	/* Validacao de CPF de http://www2.fundao.pro.br/articles.asp?cod=23 */
	var soma = 0;
	for(i = 10; i >= 2; i--) soma += parseInt(CPF.charAt(10-i))*i;
	var resultado = soma % 11;
	
	if(resultado == 1 || resultado == 0) digito1 = 0;
	else digito1 = 11 - resultado;
	
	soma = 0;
	for(i = 11; i >= 3; i--) soma += parseInt(CPF.charAt(11-i))*i;
	soma += digito1 * 2;
	var resultado = soma % 11;
	
	if(resultado == 1 || resultado == 0) digito2 = 0;
	else digito2 = 11 - resultado;

	if(	digito1 == parseInt(CPF.charAt( 9)) && 
		digito2 == parseInt(CPF.charAt(10))    ){
		apagaAviso(campoCPF);
		return true;
	}
	else
	{		
		return lancaErro(campoCPF, 'CPF');
	}

}

function validaCPF(e){
	
   	var el;
   	if (window.event && window.event.srcElement)
    	el = window.event.srcElement;
   	if (e && e.target)
      	el = e.target;
   	if (!el)   return;

	return validadorCPF(el);

}


function ValidaRegex(texto,regex){
    var re = new RegExp(regex);
    return (texto.match(re));
}

function apagaAviso(obj){
	if(span_aviso = obj.parentNode.getElementsByTagName('span')[0])
		span_aviso.style.visibility = '';	
}

function lancaErro(obj, nome){
	alert('O campo de ' + nome + ' deve ser preenchido corretamente.');
	if(span_aviso = obj.parentNode.getElementsByTagName('span')[0])
		span_aviso.style.visibility = 'visible';
	obj.setAttribute('autocomplete','off'); 
	obj.focus()
	obj.select();
	return false;
}

function Mascarar(e)
{

   var pobjCampo;
   if (window.event && window.event.srcElement)
      pobjCampo = window.event.srcElement;
   if (e && e.target)
      pobjCampo = e.target;
   if (!pobjCampo)   return;

	var Mascara = pobjCampo.Mascara
	var Tecla = event.keyCode
	var Caracter = String.fromCharCode(Tecla)
	var MascaraAtual = Mascara.charAt(pobjCampo.value.length)
	var bolSeparador = false
	var strRetorno = ""
	var ProxMascara = Mascara.charAt(pobjCampo.value.length + 1)
	var TamanhoMax = Mascara.length
	var arrMascara
	var bolInformouTamanho = false

	if (Tecla == 8){
		strRetorno = pobjCampo.value.substr(0, pobjCampo.value.length - 1)
	}
	else{
	
		if (Mascara.substr(0, 2) == "@A" || Mascara.substr(0, 2) == "@a"){
			if (Mascara.indexOf(":") >= 0){
				bolInformouTamanho = true
				arrMascara = Mascara.split(":")
				TamanhoMax = parseInt(arrMascara[1])
			}
			if (Mascara.substr(0, 2) == "@A"){
				if (event.keyCode >= 97 && event.keyCode <= 122){
					strRetorno = event.keyCode - 32
				}
				else if ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode == 32){
					strRetorno = event.keyCode
				}
				else{
					strRetorno = 0
				}
				event.keyCode = strRetorno
				if (pobjCampo.value.length > TamanhoMax - 1 && bolInformouTamanho){
					return false
				}
				return true
			}
			else if (Mascara.substr(0, 2) == "@a"){
				if (event.keyCode >= 65 && event.keyCode <= 90){
					strRetorno = event.keyCode + 32
				}
				else if ((event.keyCode >= 97 && event.keyCode <= 122) || event.keyCode == 32){
					strRetorno = event.keyCode
				}
				event.keyCode = strRetorno
				if (pobjCampo.value.length > TamanhoMax - 1 && bolInformouTamanho){
					return false
				}
				return true
			}
		}
		
		if (pobjCampo.value.length > TamanhoMax - 1){
			return false
		}

		if ((MascaraAtual != 'X' && (isNaN(MascaraAtual)) && MascaraAtual != "a" && MascaraAtual != "A") || MascaraAtual == " "){
			bolSeparador = true
		}
	
		if (!isNaN(MascaraAtual) || (bolSeparador && (!isNaN(ProxMascara)))){
			if (Tecla >= 48 && Tecla <= 57){
				if (parseInt(Caracter) > parseInt(MascaraAtual) || (bolSeparador && (parseInt(Caracter) > parseInt(ProxMascara)))){
					event.keyCode = 0
					return false
				}
			}
			else{
				event.keyCode = 0
				return false
			}
		}
		else if (MascaraAtual == "A" || MascaraAtual == "a" || (bolSeparador && (ProxMascara == "a" || ProxMascara == "A"))){
			if (Tecla < 65 || Tecla > 122 || Tecla == 91 || Tecla == 92 || Tecla == 93 || Tecla == 94 || Tecla == 95 || Tecla == 95){
				event.keyCode = 0
				return false
			}
		}
		
		if (bolSeparador){
			strRetorno = MascaraAtual + CaseCaracter(Caracter, ProxMascara)
		}
		else{
			strRetorno = CaseCaracter(Caracter, MascaraAtual)
		}
	}
	pobjCampo.value += strRetorno
	event.keyCode = 0
	return false
}

function CaseCaracter(pCaracter, pMascara)
{
	if (pMascara == "A"){
		return pCaracter.toUpperCase()
	}
	else if (pMascara == "a"){
		return pCaracter.toLowerCase()
	}
	else{
		return pCaracter
	}
}

function IsNumTel(obj,event)
{
    var str = obj.value;
    var Tecla = event.which;
    if(Tecla == null)
        Tecla = event.keyCode;

    //se nao for número nem parentesis ou espaço
    if ( Tecla < 48 || Tecla > 59 ){
        event.returnValue = false;
	alert("Só devem ser digitados números!")
        return false;
    }
    event.returnValue = true;
    return true;
}

function Mascara (formato, keypress, objeto){
	campo = eval (objeto);
	
	// CEP
	if (formato=='CEP'){
		separador = '-'; 
		conjunto1 = 5;
		if (campo.value.length == conjunto1){
			campo.value = campo.value + separador;
		}
	}

	// DATA
	if (formato=='DATA'){
		separador = '/'; 
		conjunto1 = 2;
		conjunto2 = 5;
		if (campo.value.length == conjunto1){
			campo.value = campo.value + separador;
		}
		if (campo.value.length == conjunto2){
			campo.value = campo.value + separador;
		}
	}

	// TELEFONE
	if (formato=='TELEFONE'){
		separador = '-';
		conjunto1 = 4;
		if (campo.value.length == conjunto1){
			campo.value = campo.value + separador;
		}
	}
}



