var blanks = " \t\n\r";  // caracteres com espaço em branco

// Retorna verdadeiro se a string está vazia

function isEmpty(s)
  {
  return ((s == null) || (s.length == 0));


  }

// Retorna verdadeiro se a string está vazia ou se todos os caracteres
//são espaços em branco

function isBlank(s) {
  var i;

  // Verifica se a string 's' está vazia
  if (isEmpty(s))
    return true;
  for (i=0; i<s.length; i++) {
    // Verifica se o caracter não está em branco
    var c = s.charAt(i);
    if (blanks.indexOf(c) == -1)
      return false;
  }
  // Todos os caracteres estão em branco
  return true;
}
  
// Retorna verdadeiro se o caracter 'c' é um dígito (0 .. 9)

function isDigit(c)
  {
  return ((c >= "0") && (c <= "9"));


  }

  // Retorna verdadeiro se a string 's' possui algum algarismo (0, 1,... ou 9)
  function temAlgarismo(s)
  {
  var i;

  if (isBlank(s))
     return false;

  // Percorre caracteres da string procurando algarismo. Se achar retorna true.
  for (i = 0; i < s.length; i++)
  {
  var c = s.charAt(i);

  if (isDigit(c))
    return true;
  }

  // Se não encontrou algarismo retorna falso
  return false;

  }
  
  // Retorna verdadeiro se a string 's' possui alguma letra
  function temLetra(s)
  {
    var i;
  
    // Percorre caracteres da string procurando letra. Se achar retorna true.
    for (i = 0; i < s.length; i++)
    {
    var c = s.charAt(i);
  
    if (isLetter(c))
      return true;
    }
  
    // Se não encontrou letra retorna falso
    return false;

  }
  
  // Retorna verdadeiro se for um telefone válido
  function ehTelefone(s)
  {
    var i;
    
    var a = s.charAt(0);
    var b = s.charAt(3);
    var c = s.charAt(8);
    
    if (!isBlank(s) && (a == '(' && b == ')' && c == '-'))
      return true;
  
    return false;

  }


// Retorna o índice do RadioButton marcado,
// ou -1 se nenhum foi marcado

function RadioButtonMarcado(opcao)
  {
  for (var i=0; i<opcao.length; i++)
    if (opcao[i].checked)
      return i;
  return -1;


  }


meses = new Array(12);
meses = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

//Verifica se o ano é bissexto. Essa função é necessária pois se o ano for bissexto,
//o mês fevereiro tem que ter 29 dias

function eh_bissexto(ano){
  if ( ((ano - 1996) % 4) == 0) return true;
    return false;
}

//função para validar a data

function validaData(data) {
	// Recebe a data no formato dd/mm/aaaa
	var	aux = data;
	var	barras = 0;
	var	erro = 0;
	var	dia = 0;
	var	mes = 0;
	var	ano = 0;
	var	eh_barra = 1;
	if (data=="" || data.length !=10)
		erro = 1
	else {
		for (var i=0; (i<aux.length) && (erro==0); i++) {
			if (aux.charAt(i)=='/') {
				if (eh_barra==0) {
					barras++;
					eh_barra = 1;
				}
				else erro = 1;
			}
			else {
				a = parseInt(aux.charAt(i), 10);
				if (isNaN(a)) erro = 1;
				eh_barra = 0;
			}
		}
		if (barras != 2) erro = 1;

		if (erro==0) {
			pos = aux.indexOf("/");
			pos2 = aux.indexOf("/", pos+1);
			dia = parseInt(aux.substring(0, pos), 10);
			mes = parseInt(aux.substring(pos+1, pos2), 10);
			ano = parseInt(aux.substring(pos2+1, aux.length), 10);
			if (eh_bissexto(ano)) meses[1] = 29;
              else meses[1] = 28;
			  if (mes<1 || mes>12) erro = 1;
			    else if (dia<1 || dia>meses[mes-1]) erro = 1;
		}
		if (erro==1)
			return false;
		else return true;
	}
}

    // Função de auto-tabulação
    // Parâmetros:
    // input - o elemento de formulário que está sendo utilizado
    // len - o tamanho do campo antes do tab automático (normalmente o maxlength)
    // e - ? Sempre passar event
    //
    // Forma de utilização no HTML:
    // <input onKeyUp="return autoTab(this, 3, event);">
    var isNN = (navigator.appName.indexOf("Netscape")!=-1);

    function autoTab(input,len, e) {
      var keyCode = (isNN) ? e.which : e.keyCode;
      var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

        if(input.value.length >= len && !containsElement(filter,keyCode)) {
          input.value = input.value.slice(0, len);
		  input.form[(getIndex(input)+1) % input.form.length].focus();
	    }

	  function containsElement(arr, ele) {
		var found = false, index = 0;
		while(!found && index < arr.length)
	  	  if(arr[index] == ele)
			found = true;
	      else
			index++;
		return found;
	  }

	  function getIndex(input) {
		var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
		  if (input.form[i] == input)index = i;
		  else i++;
		return index;
	  }
	  return true;
    }
    
    //////////MÁSCARA
    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;}
      }
      
      // cpf
      if (formato=='cpf'){
      separador1 = '.'; 
      separador2 = '-'; 
      conjunto1 = 3;
      conjunto2 = 7;
      conjunto3 = 11;
      if (campo.value.length == conjunto1)
        {
        campo.value = campo.value + separador1;
        }
      if (campo.value.length == conjunto2)
        {
        campo.value = campo.value + separador1;
        }
      if (campo.value.length == conjunto3)
        {
        campo.value = campo.value + separador2;
        }
      }
      
      // 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'){
          separador1 = '(';
          separador2 = ')';
          separador3 = '-';
          conjunto1 = 0;
          conjunto2 = 3;
          conjunto3 = 8;
          if (campo.value.length == conjunto1){
              campo.value = campo.value + separador1;
          }
          if (campo.value.length == conjunto2){
              campo.value = campo.value + separador2;
          }
          if (campo.value.length == conjunto3){
              campo.value = campo.value + separador3;
          }
      }
    }

    function comprova_extensao(formulario, arquivo, extensoes_permitidas) { 
//       extensoes_permitidas = new Array(".gif", ".jpg", ".jpeg", ".png", ".bmp"); 
       erro = ""; 
//       if (!arquivo) { 
//          //Se não tenho arquivo, é porque não se selecionou um arquivo no formulário. 
//           erro = "Não foi selecionado nenhum arquivo"; 
//       }else{
        
       //recupera a extensão deste nome de arquivo 
       extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase(); 

       //comprova se a extensão está entre as permitidas 
       permitida = false; 
       for (var i = 0; i < extensoes_permitidas.length; i++) { 
          if (extensoes_permitidas[i] == extensao) { 
          permitida = true; 
          break; 
          } 
       }
       //se o arquivo foi informado mas a extensão não está entre as permitidas
       if (arquivo && (!permitida)) { 
          //erro = "O arquivo selecionado não possui uma extensão válida.\nAs extensões permitidas são: " + extensoes_permitidas.join();
          return false; 
       }else{ 
          //formulario.submit();
          return true;
       }
        
       //alert (erro);
       //return false; 
    } 
