/*
Verifica se tem algum radio marcado em 
uma coleção de botões radio com o mesmo nome
http://www.somacon.com/p143.php
*/
function valor_radio_marcado(radioObj, descricao) {
	if(!radioObj)
		return false;
	var radioLength = radioObj.length;
		
	
	if(radioLength == undefined) {
		if(radioObj.checked)
			return radioObj.value;
		else {
			if(descricao!="")		
			  alert("O campo " + descricao + " deve ser preenchido.");
			return false;
		}
	}
	for(i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) 
			return radioObj[i].value;
	}

  if(descricao!="")		
	  alert("O campo " + descricao + " deve ser preenchido.");
	return false;
}

/*
Retorna o valor de um radio marcado em 
uma coleção de botões radio com o mesmo nome
*/
function valor_radio(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	
	if(radioLength == undefined) {
		if(radioObj.checked)
			return radioObj.value;
		else return "";
	}

	for(i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) 
			return radioObj[i].value;
	}

	return "";
}


/* Função usado na página de inscrição, quando esta tiver um 
questionário sócio-econômico, para  verificar se o usuário
respondeu todas as perguntas do questionário. */
function respostas_questionario_selecionadas(total_perguntas) {
  var name_radio, radio, j;
  
  for(var i=0;i<total_perguntas;i++) { 
    j=i+1;
    nome_campo="pergunta" + j;
    campo=document.forms[0].elements[nome_campo];
		//Se não existe um item com o nome do campo, seguido de uma letra "a",
		//então não existem alternativas para a pergunta, logo,
		//a mesma é subjetiva, não existindo radio buttons,
		//e sim, apenas um text field.
    if(document.forms[0].elements[nome_campo+"a"]==undefined) {
				if(campo.value == "") {
					 campo.focus();
					 alert("A pergunta número " + j + " deve ser respondida.");
					 return false;
				}
    } else {
			if(!valor_radio_marcado(campo, "")) {
				 document.getElementById(nome_campo + "a").focus();
				 alert("A pergunta número " + j + " deve ser respondida.");
		     return false;
		  }    
    }
  }	
  return true;
}

//----------------------------------------------------------------------------------------

function set_focus() {
  if (document.forms.length && document.forms[0].length)
    document.forms[0].elements[0].focus();
}

function popup(url, height, width, opcoes)
{
  if(opcoes != "")	  
     opcoes = ", " + opcoes;
  window.open(url, "janela", "height = "+ height+", width = " + width + opcoes);
}

function is_date(campo_data){
	// http://www.superpro.com.br

	campo_data.value=campo_data.value.replace(/\s+$|^\s+/g,"");
	data=campo_data.value;
	if(campo_data.value!="") {
	        if(campo_data.value.length!=10)
	        {

	        campo_data.value="";
	        alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	        campo_data.focus();
	        return false;
	    }
	    var ano = '' + campo_data.value.substring(6,10);
	    var mes = '' + campo_data.value.substring(3,5);
	    var dia = '' + campo_data.value.substring(0,2);
	    
	    if(ano<'1900'){
	                campo_data.value="";
	                alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	                campo_data.focus();
	        return false;
	     }
	     if(ano>'2050'){
	                campo_data.value="";
	                alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	                campo_data.focus();
	        return false;
	     }
	    if(dia>'31'){
	                campo_data.value="";
	                alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	                campo_data.focus();
	        return false;
	    }

	    if(mes>'12'){

	                campo_data.value="";
	                alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	                campo_data.focus();
	        return false;
	    }

	    if(mes=='02'){
	        if(ano%4!=0 && dia>'28'){

	            campo_data.value="";
	            alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	            campo_data.focus();
	            return false;
	        }
	        else{
	            if(dia>'29'){

	               campo_data.value="";
	               alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	               campo_data.focus();
	               return false;
	            }
	        }
	    }

	    if(mes<='07'){
	        if(mes%2==0 && dia>'30'){
	            campo_data.value="";
	            alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	            campo_data.focus();
	            return false;
	        }
	    }
	    else{
	        if(mes>'09'){
	            if(mes%2!=0 && dia>'30'){
	                campo_data.value="";
	                alert('Data '+data+' é inválida\nInforme a data no formato dd/mm/aaaa');
	                campo_data.focus();
	                return false;
	            }
	        }
	    }
	}
    return true;
}

function conferir_senha(campo_senha1, campo_senha2)
{
  if (campo_senha1.value.length<5)
  {
    alert("A senha deve ter no mínimo 5 dígitos");
    campo_senha1.focus();
    return false;
  }
  
  if(campo_senha1.value != campo_senha2.value)
  {
    alert("A Senha e a Confirmação da Senha não conferem.");
    campo_senha1.value="";
    campo_senha2.value="";
    campo_senha1.focus();
    return false;
  }
  return true;
}

function email_valido(campo_email)
{
  var parte1, parte2, parte3  

  if(campo_email.value != "")
  {
    //valida email usando expressões regulares
    if(campo_email.value.search(/^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/) == -1) 
    {
       alert("E-mail inválido.");
       campo_email.focus();
       return false;
    }


    parte1 = campo_email.value.indexOf("@");
    parte2 = campo_email.value.indexOf(".");
    parte3 = campo_email.value.length;
    if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) 
    {
       alert("E-mail inválido.");
       campo_email.focus();
       return false;
    }
  }
  return true; 
}

function cpf_valido(campo_cpf)
{
  controle_2=0;
  cpf=campo_cpf.value;
  cpf=cpf.replace("-","");
  cpf=cpf.replace(".","");
  cpf=cpf.replace(".","");
  
  dig_1=cpf.substring(0, 1);
  iguais=0;
  for (controle_1=0; controle_1 <= 10; controle_1++)
  {
    if(dig_1 == cpf.substring(controle_1, controle_1+1))
       iguais++;
    else break;
  }
  dig_1 = 0;
  dig_2 = 0;
  controle_1 = 10;
  controle_2 = 11;
  lsucesso = 1;

  /*Descomentar esta linha para permitir CPF com todos os dígitos iguais, apenas para realização de inscrições de teste*/
  iguais=0;
  
  if(cpf=="")
    return true;
  else if ( (iguais == 11) || (cpf.length != 11))
  {
    if (iguais != 11)
       alert("CPF inválido.\nInforme-o no formato 999.999.999-99");
    else alert("CPF inválido.\nOs digitos não podem ser todos iguais");
    campo_cpf.focus();
    return false;
  }
  else
  {
    for (i=0 ; i < 9 ; i++)
    {
      dig_1 = dig_1 + parseInt(cpf.substring(i, i+1) * controle_1);
      controle_1 = controle_1 - 1;
    }

    resto = dig_1 % 11;
    dig_1 = 11 - resto;

    if ((resto == 0) || (resto == 1))
       dig_1 = 0;

    for ( i=0 ; i < 9 ; i++)
    {
      dig_2 = dig_2 + parseInt(cpf.substring(i, i + 1) * controle_2);
      controle_2 = controle_2 - 1;
    }

    dig_2 = dig_2 + 2 * dig_1;
    resto = dig_2 % 11;
    dig_2 = 11 - resto;

    if ((resto == 0) || (resto == 1))
       dig_2 = 0;

    dig_ver = (dig_1 * 10) + dig_2;

    if (dig_ver != parseFloat(cpf.substring(cpf.length-2, cpf.length)))
    {
      alert("CPF inválido!");
      campo_cpf.focus();
      return false;
    }
  }
  return true;
}

//funções de validação de campos **************************************************************

//Funcao de validacao de campos obrigatorios num form
 function validar(fr)
 {

   //Define as variáveis que serão utilizadas nesta função
   var a, i;
   var s=new String;
   var resp, radios_checados, radio_name;
   a=0;
   //Limpa a região de mensagens de erro
   erro.innerHTML="";

   resp=true;
   //Faz um laço através dos Inputs contidos no FORM. (coleção    Elements) 
   for(a=0;a<fr.elements.length;a++)
   { 
     //Verifica se o INPUT é obrigatório. Observe o acesso a um parâmetro    criado por nós
     if ((fr.elements[a].obrigatorio=="1" && fr.elements[a].obrigatorio!="undefined") 
    && (fr.elements[a].style.display == "block" || fr.elements[a].style.display == ""))
     {
       //Verifca se a caixa em questão é um INPUT ou uma COMBO
       if((fr.elements[a].type=="RADIO") || (fr.elements[a].type=="radio"))
       {
         radios_checados=0;
         radio_name=fr.elements[i].name;
         for(i=0;i<fr.elements.length;i++)
         {
           if((fr.elements[i].type=="RADIO") || (fr.elements[i].type=="radio")
           && (fr.elements[i].obrigatorio=="1") &&
           fr.elements[i].checked && (fr.elements[i].name == radio_name))
           {
               radios_checados++;
               //alert(fr.elements[i].name + " - "  + radios_checados);
           }
         }

         //if (!fr.elements[a].checked)
         alert(radios_checados);
         if(radios_checados==0)
         {
           erro.innerHTML=erro.innerHTML + "O campo <b>" +  
		     fr.elements[a].descricao + "</b> deve ter uma opção selecionada<br>"
           resp=false;
         }
       }
       else if(fr.elements[a].tagName!="SELECT")
       {
         //Se for um INPUT faz a validação para INPUTs que consistem em    ... 
         s=fr.elements[a].value;
         //Limpar a string e verificar se seu tamanho (depois de limpa) é 0. Se    for, ela só tinha espaços em branco
         //s=trim(s);

         if (s.length==0)
         {
            //No caso da falta de campo obrigatório, exibe a mensagem de erro
           //Observe a concatenação constante no objeto erro (garantindo    a exibição da mensagem para várias caixas
           // e a utilização do parâmetro Descricao, definido por nós.
           if(fr.elements[a].descricao == "pesquisou")
           {
             erro.innerHTML=erro.innerHTML +
			  "Para escolher um dependente é necessário escrever o nome no campo <b>Nome Completo</b>, " +
			  "clicar em <b>Pesquisar</b> e selecionar a pessoa que você quer colocar como dependente."+
			  " Este procedimento é obrigatório!<br><br>"
             resp=false;
           }
           else
            {
             if(fr.elements[a].name=="cmdPesquisar" && fr.elements[a].value=='Pesquisar')
              {
                erro.innerHTML=erro.innerHTML + "O campo <b>" +  
				  fr.elements[a].descricao + "</b> deve ser preenchido<br>"
                resp=false;
              }
             else //se o campo é um input
              {
                erro.innerHTML=erro.innerHTML + "O campo <b>" +  
				  fr.elements[a].descricao + "</b> deve ser preenchido<br>"
                resp=false;
              }
            }
         }
       }
       else
       { 
         //Caso a caixa seja uma COMBO seu valor é comparado a -99 para saber    se está ou não preenchida
         // A exibição da mensagem de erro é igual
         //if (fr.elements[a].item(fr.elements[a].selectedIndex).value<=-99)
         if((fr.elements[a].selectedIndex == -1) || (fr.elements[a].selectedIndex == "undefined"))
         {
           erro.innerHTML=erro.innerHTML + "O campo <b>" +  
		     fr.elements[a].descricao + "</b> deve ser preenchido<br>"
           resp=false;
         }
       }
     }
   }
   // Se algum erro ocorreu, resp contém false e o formulário não será enviado
   return resp;
}


//http://www.imasters.com.br/forum/index.php?showtopic=139028
//usar no evento onkeypress
function somente_numero(e) {
	key=undefined;
	if(window.event) {
	// for IE, e.keyCode or window.event.keyCode can be used
	key = e.keyCode;
	}
	else if(e.which) {
	// netscape
	key = e.which;
	}

	if(key==undefined)
	  return true;

	/*
	No JavaScript os caracteres "A" e "a" tem código 65 do A maíuscula,
	não há diferença no código das maiúsculas e minúsculas.
	Os números do teclado numérico começam com código 96 (representando
	o zero) e termina em 105 (representando o 9)
	*/
	if ((key==8) || (key==9) || (key==13) ||
	(key >= 48 && key <= 57) || (key >= 96 && key <= 105))
	   return true;
	return false;
}

//usar no evento onkeypress
function somente_numero_real(campo, e) {
	key=undefined;
	if(window.event) {
	  // for IE, e.keyCode or window.event.keyCode can be used
	  key = e.keyCode;
	}
	else if(e.which) {
	  // netscape
	  key = e.which;
	}

	if(key==undefined)
	  return true;

	//#188 = ,  #110 = , no teclado numérico
	if((key==188 || key==110) && (campo.value==""))
	  return false;
	for(i=0; i< campo.value.length; i++)
		if((key==188 || key==110) && (campo.value.charAt(i)==","))
		  return false;

	/*
	No JavaScript os caracteres "A" e "a" tem código 65 do A maíuscula,
	não há diferença no código das maiúsculas e minúsculas.
	Os números do teclado numérico começam com código 96 (representando
	o zero) e termina em 105 (representando o 9)
	*/
	//#188 = ,  #110 = , no teclado numérico
	if ((key==8) || (key==188) || (key==110) || (key==9) || (key==13) ||
	(key >= 48 && key <= 57) || (key >= 96 && key <= 105)) 
	   return true;
	return false;
}

//usar no evento onkeypress
function valida_telefone(e) {
	key=undefined;	
	if(window.event) {
	// for IE, e.keyCode or window.event.keyCode can be used
	key = e.keyCode;
	}
	else if(e.which) {
	// netscape
	key = e.which;
	}

	if(key==undefined)
	  return true;

	/*
	No JavaScript os caracteres "A" e "a" tem código 65 do A maíuscula,
	não há diferença no código das maiúsculas e minúsculas.
	Os números do teclado numérico começam com código 96 (representando
	o zero) e termina em 105 (representando o 9)
	*/
	//#45 = -
	if ((key==8) || (key==9) || (key==13) || 
	(key >= 48 && key <= 57) || (key==45) || (key >= 96 && key <= 105)) 
	   return true;
	return false;
}

//usar no evento onkeypress
function somente_letra(e)
{
	key=undefined;	
	if(window.event) {
	// for IE, e.keyCode or window.event.keyCode can be used
	key = e.keyCode;
	}
	else if(e.which) {
	// netscape
	key = e.which;
	}

	//#65=A, #90=Z, #97 = a, #122=z, #8 = backspace
	if(key==undefined)
	   return true;

	/*
	No JavaScript os caracteres "A" e "a" tem código 65 do A maíuscula,
	não há diferença no código das maiúsculas e minúsculas.
	Os números do teclado numérico começam com código 96 (representando
	o zero) e termina em 105 (representando o 9)
	*/
	if ((key==8) || (key==9) || (key==13) || (key==32) ||
	(key >= 65 && key <= 90))
	    return true;
	return false;
}

/***
 Descrição.: formata um campo do formulário de
 acordo com a máscara informada...
 Parâmetros: - objForm (o Objeto Form)
 - strField (string contendo o nome do textbox)
 - sMask (mascara que define o
 formato que o dado será apresentado,
 usando o algarismo "9" para
 definir números e o símbolo "!" para
 qualquer caracter...
 - evtKeyPress (evento)
 Uso.......: <input type="textbox" 
 name="xxx"..... 
 onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);"> 
 Observação: As máscaras podem ser representadas como os exemplos abaixo: 
 CEP -> 99.999-999 
 CPF -> 999.999.999-99 
 CNPJ -> 99.999.999/9999-99 
 Data -> 99/99/9999 
 Tel Resid -> (99) 999-9999 
 Tel Cel -> (99) 9999-9999 
 Processo -> 99.999999999/999-99 
 C/C -> 999999-! 
* E por aí vai... 
***/

//usar no evento onkeypress
function formata_campo(Field, sMask, evtKeyPress)
{  
  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla=undefined;
  //se for backspace, só retorn true saindo da função

  if(window.event) {
    // for IE, e.keyCode or window.event.keyCode can be used
    nTecla = evtKeyPress.keyCode;
  }
  else if(evtKeyPress.which) {
    // netscape
    nTecla = evtKeyPress.which;
  }

  if(nTecla==undefined)
	return true;
	
  //backspace(8), enter(13), tab(9) undefined==teclas especiais
  if ((nTecla==8) || (nTecla==13) || (nTecla==9))
     return true;

  sValue = Field.value;

  /* Limpa todos os caracteres de formatação que
   já estiverem no campo. */
  sValue = sValue.toString().replace( "-", "" );
  sValue = sValue.toString().replace( "-", "" );
  sValue = sValue.toString().replace( ".", "" );
  sValue = sValue.toString().replace( ".", "" );
  sValue = sValue.toString().replace( "/", "" );
  sValue = sValue.toString().replace( "/", "" );
  sValue = sValue.toString().replace( "(", "" );
  sValue = sValue.toString().replace( "(", "" );
  sValue = sValue.toString().replace( ")", "" );
  sValue = sValue.toString().replace( ")", "" );
  sValue = sValue.toString().replace( " ", "" );
  sValue = sValue.toString().replace( " ", "" );
  fldLen = sValue.length;
  mskLen = sMask.length;

  i = 0;
  nCount = 0;
  sCod = "";
  mskLen = fldLen;

  while (i <= mskLen) 
  {
    bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".")
	          || (sMask.charAt(i) == "/"))
    bolMask = bolMask || ((sMask.charAt(i) == "(") || 
	          (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

    if (bolMask)
    {
      sCod += sMask.charAt(i);
      mskLen++;  
    }
    else
    {
      sCod += sValue.charAt(nCount);
      nCount++;
    }
    i++;
  }

  Field.value = sCod;

/*
No JavaScript os caracteres "A" e "a" tem código 65 do A maíuscula,
não há diferença no código das maiúsculas e minúsculas.
Os números do teclado numérico começam com código 96 (representando
o zero) e termina em 105 (representando o 9)
*/
  if (sMask.charAt(i-1) == "9")
  { // apenas números...
     return (nTecla >= 48 && nTecla <= 57) || (nTecla >= 96 && nTecla <= 105);
  } 
  else
  { // qualquer outro caracter...
     caractere=String.fromCharCode(nTecla);
     if(sMask.charAt(i-1) == caractere)
        return true;
     else return false;
  }
}

//*********************************************************************************************

function Mid(campo,x,y){
// http://www.superpro.com.br
    var res;
    if(x>0)
        x = x-1;
    if(x+y > campo.length)
        y = campo.length
    else
        y = x + y;
    res = campo.substring(x,y);
    return res;
}

function Left(campo,x){
// http://www.superpro.com.br
    var res;
    if(x > campo.length)
        x = campo.length;
    res = campo.substring(0,x);
    return res;
}

function Right(campo,x){
// http://www.superpro.com.br
    var res;
    if(x > campo.length){
        res = campo;
        return res;
    }
    res = campo.substring(campo.length-x,campo.length);
    return res;
}

