
/* Caracters permitidos para o Login do usuario */
var FORMATO_LOGIN = /^[a-zA-Z]{1}[0-9a-zA-Z_\.\-]+[0-9a-zA-Z_\-\.]{1}$/g;

/*
******************************************************************************
Criado para validar os campos nulos do formulário por emquanto so campos que
não pode ser sem preenchimento

Autor: Walmir Luciano da Rocha.

******************************************************************************
*/
//Funcao de validacao de campos obrigatorios
validar = function(fr) {
   var a;
   var s = new String;
   var campos = new String;
   var resp;
   var contarCampos;
   contarCampos = 0;
   a=0;
   resp=true;
   campo = "";
    //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"){
            //Verifca se a caixa em questão é um INPUT ou uma COMBO
            if(fr.elements[a].tagName != "SELECT"){
                //Se for um INPUT faz a validação para INPUTs que consistem em    ...
                s=fr.elements[a].value;
                if (s.length==0 || Trim(fr.elements[a].value) == '') {
                    if (contarCampos == 0)
                        campo += fr.elements[a].descricao;
                    else
                        campo += ", "+fr.elements[a].descricao;
                    //erro.innerHTML="O campo "+erro.innerHTML + fr.elements[a].Descricao + " é de preenchimento obrigatório.";
                    contarCampos += contarCampos+1;
                    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].selectedIndex<=0){
                    s=(fr.elements[a].item(fr.elements[a].selectedIndex).value);
                    if (s.length==0) {
                        if (contarCampos == 0)
                            campo += fr.elements[a].descricao;
                        else
                            campo += ", "+fr.elements[a].descricao;
                        contarCampos += contarCampos+1;
                        resp=false;
                    }
                }
            }
        }
   }

   if (contarCampos == 1){
        campo = "O campo "+campo+ " é de preenchimento obrigatório.";
        alert (campo);
   }else{
        if(contarCampos > 1){
        campo = "Os campos "+campo+ " são de preenchimento obrigatório.";
        alert (campo);
        }

   }
    // Se algum cmpo nulo, resp contém false e o formulário não    será enviado
    return(resp);
}

comparaData = function(data1,data2, nome1, nome2,comparacao)
{
	var d1 = data1;
	var d2 = data2;

	if(d1 != "" && d2 != "")
	{
		var dia1 = d1.substring(0,2);
		var mes1 = d1.substring(3,5);
		var ano1 = d1.substring(6,10);

		d1 = new Date(ano1,mes1-1,dia1);

		var dia2 = d2.substring(0,2);
		var mes2 = d2.substring(3,5);
		var ano2 = d2.substring(6,10);

		d2 = new Date(ano2,mes2-1,dia2);

		d1 = d1.getTime();
		d2 = d2.getTime();


		if(d1 < d2 && (comparacao == "MENOR" || comparacao == "MENOR_IGUAL"))
		        return true;
		else if (d1 > d2 && (comparacao == "MAIOR" || comparacao == "MAIOR_IGUAL"))
		{
			return true;
		}
		else if (d1 == d2 && (comparacao == "IGUAL" || comparacao == "MENOR_IGUAL" || comparacao == "MAIOR_IGUAL"))
		{
			return true;
		}
		else
			return false;
	}
	else
		return true;
}

/*
******************************************************************************
Criado para validar as inclusões e as exclusões nas tabelas de referencias

Autor: Walmir Luciano da Rocha.

******************************************************************************
*/

excluir = function(valorClicado,valorExcluir,valorArmazenado,valorcategoriaSiteEstudo,returnExcluir){
   var contador = 0;
   for (A=0; A < valorArmazenado.length; A++) {
      if (valorClicado==valorArmazenado[A].value){
          if(valorExcluir[A].value!="")
             valorExcluir[A].value = "";
          else
             valorExcluir[A].value =valorClicado;
      }
   }

   for (A=0; A < valorExcluir.length; A++){
       if(valorExcluir[A].value!=""){
           returnExcluir[contador] = valorExcluir[A].value;
           contador++;
       }

   }

   if ((valorClicado==valorArmazenado.value)&&(valorExcluir.value=="")){
   returnExcluir[0] = valorClicado;
   valorExcluir.value = valorClicado;
   }else{
         if ((valorClicado==valorArmazenado.value)&&(valorExcluir.value!="")){
              returnExcluir[0] = "";
              valorExcluir.value = "";
         }
    }

   return returnExcluir;
}

incluir = function(valorClicado,valorIncluir,valorArmazenado,valorcategoriaSiteEstudo,returnIncluir){
   var contador = 0;
   for (A=0; A < valorIncluir.length; A++) {
         if (valorClicado!=valorArmazenado[A].value)
         if ((valorClicado==valorcategoriaSiteEstudo[A].value)&&
             (valorIncluir[A].value=="")){
            valorIncluir[A].value =valorClicado;
         }else{
         if ((valorClicado==valorcategoriaSiteEstudo[A].value)&&
             (valorIncluir[A].value==valorClicado))
            valorIncluir[A].value ="";
         }

   }


   for (A=0; A < valorIncluir.length; A++){
      if(valorIncluir[A].value!=""){
          returnIncluir[contador] = valorIncluir[A].value;
          contador++;
      }
   }

   if ((valorClicado!=valorArmazenado.value)&&(valorClicado != valorIncluir.value)&&(valorIncluir.value =="")){
   returnIncluir[0] = valorClicado;
   valorIncluir.value = valorClicado;
   }else{
         if ((valorClicado!=valorArmazenado.value)&&(valorClicado==valorIncluir.value)&&(valorIncluir.value!="")){
              returnIncluir[0] = "";
              valorIncluir.value = "";
         }
    }

   return returnIncluir;
}

Trim = function(str) {
	while (str.charAt(0) == " ")
		str = str.substr(1,str.length -1);

	while (str.charAt(str.length-1) == " ")
		str = str.substr(0,str.length-1);

	return str;
}

/* Script Tab automatico para formularios */
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

autoTab = function(input,len, e) {
	if(len==-1)
		len=100000;
	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);
		if(e.keyCode != 16)
			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;
}
// end Script Tab automatico para formularios//

//deve ser colocado no onkeypress (mozilla) E onkeydown (IE)
//Esta função encontra-se repetida no arquivo validForm.js
validNumber = function(event) {
	if (navigator.appName.indexOf("Netscape")!= -1) {
        tecla = event.which;
        tab_key = 0;
        del_key = 0;
        ins_key = 0;
    } else {
        tecla = event.keyCode;
        tab_key = 9;
        del_key = 0;
        ins_key = 0;
    }

    var valido = "0123456789";

	/** Correção - Caracteres inválidos
     *  if (tecla >= 35 && tecla <=  40) || //end, home e setas
     *  TABELA ASCII
     *  # 35
     *  $ 36
     *  % 37
     *  & 38
     *  ' 39
     *  ( 40
     */

    if ((tecla == ins_key && !String.fromCharCode(tecla) != "-") ||
        (tecla == del_key && !String.fromCharCode(tecla) != ".") ||
        (tecla == 8) )
        return true;
    else if (tecla == tab_key)
        return true;
    else if (valido.indexOf(String.fromCharCode(tecla)) != -1)
        return true;
    else
        return false;
}

validarCPF = function(cpf){

    if (cpf.length != 11 || isNaN(cpf)) {
  		return false;
 	}
 	var i;
 	var c = cpf.substr(0,9);
 	var dv = cpf.substr(9,2);
 	var d1 = 0;

    for (i = 0; i < 9; i++) {
  		d1 += c.charAt(i)*(10-i);
 	}

    if (d1 == 0){
  		return false;
 	}

	d1 = 11 - (d1 % 11);

    if (d1 > 9) d1 = 0;
 	if (dv.charAt(0) != d1) {
  		return false;
 	}

    d1 *= 2;
 	for (i = 0; i < 9; i++) {
  		d1 += c.charAt(i)*(11-i);
 	}
 	d1 = 11 - (d1 % 11);

	if (d1 > 9) d1 = 0;
 	if (dv.charAt(1) != d1) {
		return false;
    }

    return true;
}

RegErr = function(rRGX,campo)
{
  try{
    rRGX.lastIndex=0;
    return (rRGX.test(campo.value))?false:true;
  }catch(e)
  {
    return false;
  }
}

verificarTecla = function(event, tecla) {
    return ((event.which && event.which == tecla) || (event.keyCode && event.keyCode == tecla));
}

validarRf = function(rf) {
	var FORMATO = /^[0-9]+[X]{0,1}$/gi;
	
	return !RegErr(FORMATO, rf);
}

validarMatriculaCargo = function(matriculaCargo) {
	return validarRf(matriculaCargo);
}

function chkSelecionarTodos(chkall, chkClass) {
	var actVar = $(chkall).checked;
	var elementos = $$('.' + chkClass);
	for(i=0; i<elementos.length; i++) {
		elementos[i].checked = actVar;       	
	}
}

function chkDesselecionarTodos(chkall, chkClass) {
    var status = true;
	var elementos = $$('.' + chkClass);
	for(i=0; i<elementos.length; i++) {
		if (elementos[i].checked == false) {
            status = false;
            break;
        }
	}

	$(chkall).checked = status;
}

chkDesmarcarOutros = function(obj, chkClass) {
	var atual = obj.value;
	var elementos = $$('.' + chkClass);
	for(i=0; i<elementos.length; i++) {
		if (atual != elementos[i].value)
			elementos[i].checked = false;       	
	}
}

getElementoSelecionado = function(chkClass) {
	var valor = "";
	var elementos = $$('.' + chkClass);
	for(i=0; i<elementos.length; i++) {
		if (elementos[i].checked) {
			valor = elementos[i].value;
			break;
		}
	}
	return valor;
}

function validarNumeroMatriculaCn(campoMatricula) {
	var FORMATO = /^[0-9]+$/;
		
	//Deve possuir 32 dígitos
	if (campoMatricula.value.length != 32)
		return false;

	var numeroMatricula = campoMatricula.value.substr(0, 30);
	var digito = campoMatricula.value.substr(30, 2);

	//Verifica caracteres inválidos
	if (RegErr(FORMATO, campoMatricula))
		return false;
	
	if (isNaN(digito) && digito.toUpperCase() != "XX")
		return false;
			
	//O 7º e 8º dígitos devem ter valor 01 ou 02
	if (numeroMatricula.substr(6, 2) != "01" && numeroMatricula.substr(6, 2) != "02")
		return false;
	
	//O 9º e 10º dígitos devem ter valor 55
	if (numeroMatricula.substr(8, 2) != "55")
		return false;
	
	//TODO: Do 11º ao 14º dígitos identificam o ano e deve estar compreendido entre 1905 e o ano corrente (inclusive)
		
	//O 15º dígito é numérico e deve ser diferente de 4, 5 ou 6;
	if (numeroMatricula.substr(14, 1) == "4" || numeroMatricula.substr(14, 1) == "5" || numeroMatricula.substr(14, 1) == "6")
		return false;
		
	//TODO: O 31º e 32º dígitos são verificadores e calculados com módulo 11.
	
	return true;
}

function isMaxLength(obj){
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxLength")) : 0;
	if (obj.getAttribute && obj.value.length>mlength)
	obj.value=obj.value.substring(0,mlength);
}

