/*
 * ----------------------------------------
Máscaras
	onkeypress="mascara(this,editaFone);"
	onkeypress="mascara(this,editaFoneSemDDD);"
	onkeypress="mascara(this,editaCEP);"
	onkeypress="mascara(this,mdata);"
	onkeypress="mascara(this,integer);"
	onkeypress="mascara(this,editaCPF);"
	onkeypress="mascara(this,editaCNPJ);"
 *------------------------------------------
*/
// Máscaras
function mascara(objeto,funcao){
	v_obj=objeto;
	v_fun=funcao;
	setTimeout("execmascara()",1);
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value);
}
// Edição de telefone
function editaFone(fone){
	fone=fone.replace(/\D/g,"");
	fone=fone.replace(/^(\d\d)(\d)/g,"($1) $2");
	fone=fone.replace(/(\d{4})(\d)/,"$1-$2");
	fone=fone.substring(0,14);
	return fone;
}
// Edição de telefone sem DDD
function editaFoneSemDDD(v){
	fone=fone.replace(/\D/g,"");
	fone=fone.replace(/(\d{4})(\d)/,"$1-$2");
	fone=fone.substring(0,9);
	return fone;
}
// Edição de CEP
function editaCEP(CEP){
	CEP=CEP.replace(/\D/g,"");
	CEP=CEP.replace(/^(\d{5})(\d)/,"$1-$2"); 
	CEP=CEP.substring(0,9);
	return CEP;
}
// Edição de data
function mdata(data){
	data=data.replace(/\D/g,"") ;
	data=data.replace(/(\d{2})(\d)/,"$1/$2") ;
	data=data.replace(/(\d{2})(\d)/,"$1/$2") ;
	data=data.substring(0,10);
	return data;
}
// Validação de número inteiro
function integer(numero){
	return numero.replace(/\D/g,"");
}
// Edição do CPF
function editaCPF(CPF) {
	CPF=CPF.replace(/\D/g,"") ;
	CPF=CPF.replace(/(\d{3})(\d)/,"$1.$2") ;
	CPF=CPF.replace(/(\d{3})(\d)/,"$1.$2") ;
	CPF=CPF.replace(/(\d{3})(\d)/,"$1-$2") ;
	CPF=CPF.substring(0,14);
	return CPF;
}
//Edição do CNPJ
function editaCNPJ(CNPJ) {
	CNPJ=CNPJ.replace(/\D/g,"") ;
	CNPJ=CNPJ.replace(/(\d{2})(\d)/,"$1.$2") ;
	CNPJ=CNPJ.replace(/(\d{3})(\d)/,"$1.$2") ;
	CNPJ=CNPJ.replace(/(\d{3})(\d)/,"$1/$2") ;
	CNPJ=CNPJ.replace(/(\d{4})(\d)/,"$1-$2") ;
	CNPJ=CNPJ.substring(0,18);
	return CNPJ;
}

/*
 * ----------------------------------------
Validações
	title="*email"
	title="*telefone"
	title="*telefonesemddd"
	title="*data"
	title="*cep"
	title="*cpf"
	title="*confirmasenha"
	title="*seguranca"
 *------------------------------------------
*/

// Validação da data
function validaData(campo) {
	var valido=true;
	if (campo.value!="") { 
		hoje = new Date(); 
		anoAtual = hoje.getFullYear(); 
		barras = campo.value.split("/"); 
		if (barras.length == 3) {
			dia = barras[0]; 
			mes = barras[1]; 
			ano = barras[2]; 
			datares = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= anoAtual && ano >= 1900)); 
			if (!datares) { 
				valido= false; 
			}
			// Verifica se é mes de 30 dias
			if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) {
				valido=false;
			}
			// Verifica se é ano bisexto
			if (mes == 2) { 
				var isleap = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
				if (dia > 29 || (dia==29 && !isleap)) {
					valido=false;
				}
			}
		}else {
			valido= false; 
		}
	} 
	return valido;
}

// Validação do email
function validaEmail(email){ 
	var expreg = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if(expreg.test(email.value)){  
		return true;
	}else{
		return false;
	}
}

// Validação do CPF
function validaCPF(CPF) {
	// Verifica se veio com tamanho certo
	if(CPF.value.length<14){
		return false;
	}
	// Inicializa as variáveis
	var posicao, digitos, numero, peso, soma;
	var numeros = new Array(10);
	// Retira os caracteres
	numero = CPF.value.replace(/\D/g,"");
	// Guarda os dois últimos dígitos do CPF informado
	digitos = numero.substr(9, 2);
	// Desmembra o número do CPF no array numeros
	for (posicao=0; posicao<=8; posicao++) {
		numeros[posicao] = numero.substr( posicao, 1);
	}
	// Calcula o valor do 10º dígito
	soma = 0;
	peso = 10;
	for (posicao=0; posicao<=8; posicao++) {
		soma = soma + numeros[posicao] * peso;
		peso = peso - 1;
	}
	numeros[9] = soma % 11;
	if (numeros[9] < 2) {
		numeros[9] = 0;
	}else{
		numeros[9] = 11 - numeros[9];
	}
	// Calcula o valor do 11º dígito
	soma = 0;
	peso = 11;
	for (posicao=0; posicao<=9; posicao++) {
		soma = soma + numeros[posicao] * peso;
		peso = peso - 1;
	}
	numeros[10] = soma % 11;
	if (numeros[10] < 2) {
		numeros[10] = 0;
	}else {
		numeros[10] = 11 - numeros[10];
	}
	// Verifica se os valores dos dígitos verificadores conferem
	if ((numeros[9] * 10 + numeros[10]) != digitos) {
		return false;
	}else{
		return true;
	}
}

// Validação - percorre o form e valida os campos marcados com '*' --------------------------------------------------------
var valida = function(formulario){
	for (var indice=0; indice < formulario.elements.length; indice++){
		var elemento=formulario.elements[indice];
		// Campos obrigatórios
		if ((elemento.title.substr(0,1)) == "*" ){
			if (elemento.value == "" || (elemento.type=="checkbox" && elemento.checked==false)){
				alert("O campo '" + elemento.title.substr(1,(elemento.title.length)) + "' deve ser preenchido!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}else{
				elemento.style.backgroundColor = "#efefef";
			}
		}
		// Data
		if (elemento.title=="*data" || elemento.title=="data"){
			if (validaData(elemento)==false){
				alert("O campo " + elemento.name + " deve ser preenchido com um valor válido!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
		// CPF
		if (elemento.title=="*cpf"){
			if (validaCPF(elemento)==false){
				alert("O campo " + elemento.name + " deve ser preenchido com um valor válido!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
		// E-Mail
		if (elemento.title=="*email"){
			if (validaEmail(elemento)==false){
				alert("O campo " + elemento.name + " deve ser preenchido com um valor válido!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
		// Telefone
		if (elemento.title=="*telefone"){
			if(elemento.value.length<14){
				alert("O campo " + elemento.name + " deve ser preenchido com um valor válido!");
				formulario.telefone.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
		// Telefone sem DDD
		if (elemento.title=="*telefonesemddd"){
			if(formulario.telefone.value.length<9){
				alert("O campo " + formulario.telefone.name + " deve ser preenchido com um valor válido!");
				formulario.telefone.style.backgroundColor = "#ffffcc";
				formulario.telefone.focus();
				return false;
				break;
			}
		}
		// CEP
		if (elemento.title=="*cep"){
			if(elemento.value.length<9){
				alert("O campo " + formulario.cep.name + " deve ser preenchido com um valor válido!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
		// Senha
		if (elemento.title=="*confirmasenha"){
			if(formulario.senha.value!=formulario.confirmasenha.value){
				alert("Você deve confirmar a senha corretamente!");
				elemento.style.backgroundColor = "#ffffcc";
				elemento.focus();
				return false;
				break;
			}
		}
	}
	// Devolve o resultado
	return true;
};

var validaRadio = function(formulario){
	var controle = 0;
	for (var indice=0; indice < formulario.elements.length; indice++){
		if (formulario.elements[indice].type == "radio"){
			if (formulario.elements[indice].checked == true){
				controle++;
			}
		}
	}

	if (controle <= 0){
		alert("Selecione uma das opções");
		return false;
	}else{
		return true;
	}
};
