/*
___[ Sistema ]_____________________________________________________________
Aviso SMS Hemocentro

___[ Desenvolvedor(es) ]___________________________________________________
Procergs - Divisao 7
gustavo-jantsch@procergs.rs.gov.br
humberto-loy@procergs.rs.gov.br

___[ Descricao desde Modulo ]______________________________________________
Biblioteca de Funções JavaScript

___[ Arquivos e Caminhos ]_________________________________________________
Data     : Jun 2002
Arquivo  : funcoes.js
Local    : NT_PRO45_DADOS\PROCERGS\DesenvD7\Clientes\Hemocentro\comum
Servidor :
___________________________________________________________________________
*/

/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>

Description: função genérica para validação de dados de formulários

function boolean validarForm( int form, Array campos, Array nomescampos, int tipos, int status )

	form:
	nro que identifica o formulário no site(0 para o primeiro formulário)
	
	campos:
	nomes dos campos do formulário
	
	nomescampos:
	nomes dos campos que serão mostrados nas mensagens

	tipos:
	1 - string
	2 - DDD do telefone
	3 - telefone
    4 - senha
	5 - código de confirmação
	6 - compara senha e confirmação
	7 -	compara senha atual e nova senha
	8 - data

	status:
	0 - campo não obrigatório, 1 - campo obrigatório
*/
function validarForm(nroForm, campos, nomescampos, tipos, status){
	var erro = false;
	form = document.forms[nroForm];
	for(var i= 0; i<campos.length; i++){//percorre até achar um erro e dá o retorno se encontrá-lo
		resultado = true;
		valor = form.elements[campos[i]].value;
		switch(tipos[i]){
			case 1 :
				resultado = validaTamanho(nomescampos[i], valor, status[i]);
				break;
			case 2 :
				resultado = validaDDD(form.elements[campos[i]]);
				break;
			case 3 :
				resultado = validaTelefoneCelular(form.elements[campos[i]], form.elements[campos[i]].name);
				break;
		    case 4 :
				resultado = validaSenha(form, form.elements[campos[i]], nomescampos[i]);
				break;
			case 5 :
				resultado = validaCodConf(form, form.elements[campos[i]]);
				break;
			case 6 :
				resultado = comparaSenhaEconf(form, form.elements[campos[i]].name, form.elements[campos[i+1]].name);//compara senha que é i com confirmação que é i+1. Colocar tipo 6 para senha e tipo 1 para confirmação.
				break;
			case 7 :
				resultado = comparaAtualEnova(form, form.elements[campos[i]].name, form.elements[campos[i+1]].name);
				break;
			case 8 :
				resultado = validaData(form,form.elements[campos[i]].name,form.elements[campos[i+1]].name,form.elements[campos[i+2]].name);
				break;
			case 9 :
				resultado = validaddd_e_telefone(form,form.elements[campos[i]].name, nomescampos[i], i, form.elements[campos[i+1]].name);
				if(resultado==false) return false;
				break;
			case 10 :
				resultado = validaCombo(form, form.elements[campos[i]].name, nomescampos[i], i);
				break;
			case 11 :
				resultado = validaOperadora(form.elements[campos[i]], form.elements[campos[i]].name, form.elements[campos[i+1]].value);
				break;
			case 12 :
				resultado = validaTelefone(form.elements[campos[i]], form.elements[campos[i]].name);
				break;
		}
		if(!resultado && (status[i]==1 || (status[i]==0 && valor.length != 0) ) )
			erro = true;
		if(erro){
			return !erro;
		}
	}
	return true;
}
//-----------------------------------------------------------------------------------
/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>
Description: verifica se campo obrigatório foi preenchido
function boolean validaTamanho( String campo, String conteudo )
*/

function validaTamanho(campo, conteudo, status){
	if ( conteudo.length==0 && status==1 ){
		alert("O campo "+ campo +" deve ser preenchido.");
		return false;
	}
	return true;
}
//-----------------------------------------------------------------------------------
/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>
Description: verifica se foi selecionado um valor na combo
function boolean validaCombo( form form, String apelido )
*/

function validaCombo(form, nome, apelido, i){
   ind = form.elements[nome].selectedIndex;
   if(form.elements[nome].options[ind].value == ""){
		alert("Você deve selecionar um valor para o campo "+ apelido +".");
      return false;
   }
   return true;
}

//-----------------------------------------------------------------------------------
/*
Author: gustavo-jantsch@procergs.rs.gov.br
Description: verifica se o usuário tem entre 18 e 60 anos de idade
function boolean validaData( form f1, string parte )
*/

function validaData( f1, campoDia, campoMes, campoAno ){
	hoje = new Date();
	if( f1.elements[campoDia].value<1 || f1.elements[campoDia].value>31 ){
		alert( "Dia Inválido!\nUse um valor entre 1 e 31." );
		f1.elements[campoDia].select();
		f1.elements[campoDia].focus();
		return false;
	}else if( f1.elements[campoMes].value<1 || f1.elements[campoMes].value>12 ){
		alert( "Mês Inválido!\nUse um valor entre 1 e 12." );
		f1.elements[campoMes].select();
		f1.elements[campoMes].focus();
		return false;
	}else{

		_campoMes=eval( f1.elements[campoMes].value - 1);
		_campoDia=f1.elements[campoDia].value;
		_campoAno=f1.elements[campoAno].value;

		niver = new Date( _campoAno, _campoMes, _campoDia);
		_idade = idade( niver );
		if( _idade>60 || _idade<18 ){
			alert( "Ano Inválido!\nO usuário deve ter entre 18 e 60 anos de idade.");
			f1.elements[campoAno].select();
			f1.elements[campoAno].focus();
			return false;
		}
	}
	return true;
}

/*
Autor: Gustavo Jantsch - gustavo-jantsch@procergs.rs.gov.br
Calcula a idade apartir da data de nascimento
*/

function idade( aniversario ){
	niverAno = aniversario.getFullYear();
	niverMes = aniversario.getMonth();
	niverDia = aniversario.getDate();

	hoje = new Date;
	hojeAno = hoje.getFullYear();
	hojeMes = hoje.getMonth();
	hojeDia = hoje.getDate();

	return hojeAno - niverAno + ( (niverMes <= hojeMes && niverDia <= hojeDia ) ? 0 : 1 );

}


//-----------------------------------------------------------------------------------
/*
Author: Gustavo Jantsch <gustavo-jantsch@procergs.rs.gov.br>
Description: verifica se o  campo DDD contém caracteres não numéricos
function boolean validaDDD( strCampoASerValidado )

OBS: antes de mexer aqui verificar quais validações são feitas no submit
     do form, na funcao validaFormCadastroDoador()
*/

function validaDDD( campo ){

   var numero = campo.value;
   if( numero != "" ){
      for( i=0; i<=numero.length-1; i++ ){
         //alert( "caracter: " + numero.charAt(i) + "\n <0=" + (numero.charAt(i)<"0")+"\n>9="+(numero.charAt(i)>"9"));
         if( (numero.charAt( i )<"0") || (numero.charAt( i )>"9") ){
            alert( "Caracteres inválidos no número do DDD!" );
            campo.select();
            campo.focus();
            return false;
         }
      }
   }
   return true;

}
//-----------------------------------------------------------------------------------
/*
Author: Gustavo Jantsch <gustavo-jantsch@procergs.rs.gov.br>
Description: verifica se o  campo Celular contém caracteres não numéricos
function boolean validaTelefone( strCampoASerValidado )

OBS: antes de mexer aqui verificar quais validações são feitas no submit
     do form, na funcao validaFormCadastroDoador()
*/

function validaTelefoneCelular( campo, nome ){

   var numero = campo.value;
   if( numero != "" ){
      for( i=0; i<=numero.length-1; i++ ){
         if( numero.charAt( i )<"0" || numero.charAt( i )>"9" ){
            alert( "Caracteres inválidos no número do celular!" );
            campo.select();
            campo.focus();
            return false;
         }
      }
   	
		if(numero.length < 8){
			alert("O celular deve conter 8 dígitos");
			campo.select();
			campo.focus();
			return false;
		}
	}
   return true;
}
//-----------------------------------------------------------------------------------
/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>
Description: verifica se o  campo Telefone e Celular contém caracteres não numéricos
function boolean validaTelefone( strCampoASerValidado )

OBS: antes de mexer aqui verificar quais validações são feitas no submit
     do form, na funcao validaFormCadastroDoador()
*/

function validaOperadora( campo, nome, valueCombo ){
	Op = campo.value.substring(0,2);
	if( ( ( Op.valueOf() >= 91 && Op.valueOf() <= 93 ) || Op.valueOf() == 94  || Op.valueOf() == 95) && nome == "celular" && valueCombo=="1"){
		alert("Este telefone não é válido para a operadora VIVO-RS.");
		campo.select();
		campo.focus();
		return false;
	}
	else
		if( ( Op.valueOf() >= 96  || Op.valueOf() == 94  || Op.valueOf() == 95) && nome == "celular" && valueCombo=="2" ){
			alert("Este telefone não é válido para a operadora Claro Digital.");
			campo.select();
			campo.focus();
			return false;
		}
   return true;
}

//-----------------------------------------------------------------------------------
/*
Author: humberto-loy@procergs.rs.gov.br
Description: se o DDD do telefone for preenchido ele precisa do telefone e vice-versa
function boolean validaDDD_e_telefone( form, String str )
*/

function validaddd_e_telefone(form, nomeCampoDDD, apelidoDDD, i, nomeCampoTelefone){

	var ok = true;
   var ind = form.elements[nomeCampoDDD].selectedIndex;
	
	if( (form.elements[nomeCampoDDD].options[ind].value != ""
	     && form.elements[nomeCampoTelefone].value.length == 0 )  
		  || 
		  (form.elements[nomeCampoDDD].options[ind].value == ""
		  && form.elements[nomeCampoTelefone].value.length > 0 ) ){

   	if(form.elements[nomeCampoDDD].options[ind].value == ""){
			alert("Você deve selecionar um valor para o campo "+ apelidoDDD +".");
      	ok = false;
   	}
		else if(form.elements[nomeCampoTelefone].value.length == 0){
				alert("O telefone deve ser preenchido");
  				ok=false;
		     }
	}
	return ok;
}

//-----------------------------------------------------------------------------------

/*
Author: humberto-loy@procergs.rs.gov.br
Description: verifica se o campo senha foi preenchido corretamente
function boolean validaSenha( form f1, String str )
*/

function validaSenha(f1, campoSenha, nome){
	var ok = true;
	if ( campoSenha.value.length < 5 ){
		alert('Campo '+ nome +' deve ter pelo menos 5 dígitos.\nRecomendamos 8 dígitos para maior segurança.');
		campoSenha.select();
		campoSenha.focus();
		 ok = false;
	}
   
	if(campoSenha.value.indexOf(" ") != -1){
		alert('O campo '+ nome +' não pode conter espaços em branco.');
		campoSenha.select();
		campoSenha.focus();
		 ok = false;
	}
	return ok;
}

//-----------------------------------------------------------------------------------

/*
Author: humberto-loy@procergs.rs.gov.br
Description: verifica se o código de confirmação foi preenchido corretamente
function boolean validaSenha( form f1, String str )
*/

function validaCodConf(f1, campoCod){
	var ok = true;
	if ( campoCod.value.length < 5 ){
		alert('O código deve ter cinco dígitos.');
		campoCod.select();
		campoCod.focus();
		 ok = false;
	}
   
	if(campoCod.value.indexOf(" ") != -1){
		alert('O código não pode conter espaços em branco.');
		campoCod.select();
		campoCod.focus();
		 ok = false;
	}
	return ok;
}

//------------------------------------------------------------------------------------
/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>
Description: verifica se a senha e a confirmação são iguais
function boolean validaTamanho( String campo, String conteudo )
*/

function comparaSenhaEconf(formulario, campoSenha, CampoConfirma){
	if(formulario[campoSenha].value != formulario[CampoConfirma].value){
		alert('A  senha nova e a confirmação devem ser iguais.\n');
		formulario[campoSenha].focus();
		return false;
	}
	return true;	
}
//------------------------------------------------------------------------------------
/*
Author: Humberto Zappe Loy <humberto-loy@procergs.rs.gov.br>
Description: verifica se a senha e a confirmação são iguais
function boolean validaTamanho( String campo, String conteudo )
*/

function comparaAtualEnova(formulario, nomeCampoAtual, nomeCampoNova){
	if(formulario[nomeCampoAtual].value == formulario[nomeCampoNova].value){
		alert('A  senha atual e a nova senha devem ser diferentes.\n');
		formulario[nomeCampoNova].focus();
		return false;
	}
	return true;	
}
//-----------------------------------------------------------------------------------
/*
Author: Gustavo Jantsch <gustavo-jantsch@procergs.rs.gov.br>
Description: verifica se o  campo Celular contém caracteres não numéricos
function boolean validaTelefone( strCampoASerValidado )

OBS: antes de mexer aqui verificar quais validações são feitas no submit
     do form, na funcao validaFormCadastroDoador()
*/

function validaTelefone( campo, nome ){

   var numero = campo.value;
   if( numero != "" ){
      for( i=0; i<=numero.length-1; i++ ){
         if( numero.charAt( i )<"0" || numero.charAt( i )>"9" ){
            alert( "Caracteres inválidos no número do Telefone!" );
            campo.select();
            campo.focus();
            return false;
         }
      }
   	
		if(numero.length < 7){
			alert("O telefone deve conter 7 ou 8 dígitos");
			campo.select();
			campo.focus();
			return false;
		}
	}
   return true;
}

//-------------------------------------------------------------------------------------------------
/*
Author: humberto-loy@procergs.rs.gov.br
Description: layers
function showHide( idElement, showElement, positionTop, positionLeft)
*/

function showHide(idElement, showElement, positionTop, positionLeft){
	if(document.all){
		if(showElement == true)
			stateElement = 'visible'; 
    	else
			stateElement = 'hidden';
		document.all[idElement].style.visibility = stateElement;
	    document.all[idElement].style.top = positionTop;
	    document.all[idElement].style.left = positionLeft;
	}
	else if(document.layers){
		if(showElement == true)
			stateElement = 'show'; 
    	else
			stateElement = 'hide';
		document.layers[idElement].visibility = stateElement;
		document.layers[idElement].top = positionTop;
		document.layers[idElement].left = positionLeft;
    }
	else if (parseInt(navigator.appVersion.charAt(0)) >= 5 ) { 
		if(showElement == true)
			stateElement = 'visible'; 
    	else
			stateElement = 'hidden';
		if (navigator.appVersion.indexOf("Win") !=-1) {
			document.getElementById(idElement).style.visibility = stateElement;
			document.getElementById(idElement).style.top = positionTop;
			document.getElementById(idElement).style.left = positionLeft;		
		} 
		else {
			document.getElementById(idElement).style.visibility = stateElement;
			document.getElementById(idElement).style.top = positionTop;
			document.getElementById(idElement).style.left = positionLeft;
		}
   }

}
//------------------------------------------------------------------------------------------------

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try {
var pageTracker = _gat._getTracker("UA-5470617-5");
pageTracker._trackPageview();
} catch(err) {}

