<!--

// ------------------------------------------------------------------------------------------ //
// Acrescenta algumas propriedades aos controles:
// .Indice          : indica o índice na tela para o controle
// .IndiceAnterior  : indica o índice do controle anterior
// .IndicePosterior : indica o índice para o controle posterior
// .Tam             : tamanho máximo para digitação
// .AutoSkip        : indica se pula para o próximo campo após completar o tamanho do campo
// .Tipo            : indica o tipo de dado
//                      'N' -> só dígitos de 0(zero) a 9(nove)
//                      'V' -> dígitos de 0(zero) a 9(nove), "."(ponto) e ","(vírgula)
//                      'C' -> caracteres de 'a' até 'z' e de 'A' até 'Z'
//                      'D' -> dígitos de 0(zero) a 9(nove), "/" (Separador de data)
//                      'A' -> caracteres de 'a' até 'z' e de 'A' até 'Z' e dígitos de 0(zero) a 9(nove)
//                      'X' -> qualquer caracter entre ascii 32 e ascii 127
//                      'M' -> Mascarado
// .Saltar          : (reservado) indica o momento de saltar de campo
// .Valor           : Valor usado pelos camps mascarados
// ------------------------------------------------------------------------------------------ //

// Carrega índices para o próximo controle e controle anterior
function InicializarIndices()
{
    if (document.CargaInicial==null)
    {
        document.CargaInicial=false;        // Seta para só fazer uma vez por documento
        var ctrlAnterior=null;
        var IndAnt=0;
        for ( var i=0; i<document.forms[0].elements.length;i++)
        {
            var e=document.forms[0].elements[i];
            if ( e.type!="hidden" && e.type!="image" )
            {
                if ( ctrlAnterior != null )
                    ctrlAnterior.IndicePosterior=i;
                ctrlAnterior=e;
                e.Indice=i;
                e.IndiceAnterior=IndAnt;
            }
        }
    }
}

// Colocar o foco em determinado campo
function SetarFoco ( ind )
    {
    InicializarIndices();
    if ( isNaN(ind) && document.forms[0].elements[ind].type!="hidden" )
        document.forms[0].elements[ind].focus();
    else
        for (;ind<document.forms[0].elements.length;ind++)
            if ( document.forms[0].elements[ind].type!="hidden" )
                break;
        if ( ind<=document.forms[0].elements.length )
            document.forms[0].elements[ind].focus();
    }

// Limpar o conteúdo do(s) campo(s)
function LimparCampo ( ind )
    // Para -1, limpa todos os elementos
    {
    if (isNaN(ind)) {        // Limpa pelo nome
        document.forms[0].elements[ind].value="";
        document.forms[0].elements[ind].Valor="";
    } else if (ind != -1 )    // Limpa o elemento "ind" ( só considera "text" e "password" )
    {
        for ( var i=ind; i < document.forms[0].elements.length;i++ )
            if ( document.forms[0].elements[i].type=="text" || document.forms[0].elements[i].type=="password")      // Só limpa campo "text"
                {
                document.forms[0].elements[i].value="";
                document.forms[0].elements[i].Valor="";
                break;
                }
    }
    else                    // Limpa todos os elementos "text" e "password"
    {
       for ( var i=0; i < document.forms[0].elements.length; i++ )
            if ( document.forms[0].elements[i].type=="text" || document.forms[0].elements[i].type=="password" )
                {
                document.forms[0].elements[i].value="";
                document.forms[0].elements[i].Valor="";
                }
    }
    }

// Verificar qual navegador
function QualNavegador()
{
    var s = navigator.appName;
      if ( s.indexOf("Microsoft") >= 0 )
        return "IE";
      else
      if ( s.indexOf("Netscape") >= 0 )
        return "NE";
    else
        return "";
}

// Verificar qual a versão do navegador
function QualVersao()
{
    var s = navigator.appVersion;
    if ( QualNavegador() == "IE" )
    {
        var i = s.search("MSIE");
        s=s.substring(i+5);
        i=s.search(".");
      return parseInt(s.substring(0,i+1), 10);
    }
    else if ( QualNavegador() == "NE" )
      return parseInt(s.substring(0,1), 10);
    else
        return 0;
}


// Setar o evento
function SetarEvento(ctrl, Tam, Tipo, AutoSkip, Mascara, ValorInicial )
{
   // Filtra navegadores conhecidos
   var s = QualNavegador();
   if ( s.length==0 )
      return;


   if (ctrl.onkeypress==null)
   {
      if (AutoSkip==null)
         AutoSkip=true;
      if (Tipo!=null)
         Tipo.toUpperCase();
      if((Tipo=="M") && (Mascara!=null) && (Mascara.length >2)) {
         Alinhamento=Mascara.substring(0,1);
         MascaraTipo=Mascara.substring(1,2);
         Mascara=Mascara.substring(2);
         Tam = Mascara.length;

		//TODO : validacao inicial de mascara
        ctrl.Valor="";
      } else {
         Mascara="";
         Alinhamento=null;
         MascaraTipo=null;
      }
      if(ValorInicial==null) {
         ValorInicial="";
      }

      ctrl.Tam=Tam;
      ctrl.maxLength=Tam;
      ctrl.Tipo=Tipo;
      ctrl.AutoSkip=AutoSkip;
      ctrl.Mascara=Mascara;
      ctrl.Alinhamento=Alinhamento;
      ctrl.MascaraTipo=MascaraTipo;
      ctrl.ValorInicial = ValorInicial;
      ctrl.Saltar=false;
      InicializarIndices();
      ctrl.onkeypress=ValidarTecla;

      if (QualNavegador()=="IE" && QualVersao()>=5)
         ctrl.onkeyup=SaltarCampo;
   }
}

function desabilitarTeclas() {
   if(event.srcElement.Alinhamento!=null) {
      if((event.keyCode==8) || (event.keyCode==46)){
         removerCaracter(event.srcElement);
         event.keyCode=0;
		 event.returnValue = false; 
         return;
      }
   } 

   event.returnValue = true; 
}

function removerCaracter(ctrl) {
   len = ctrl.Valor.length;
   if(len>1) {
      if(ctrl.Alinhamento=="D") {
         ctrl.Valor=ctrl.Valor.substring(0, len-1);
         aplicarMascaraEsquerda(ctrl);
      } else if(ctrl.Alinhamento=="E") {
         ctrl.Valor=ctrl.Valor.substring(0, len-1);
         aplicarMascaraDireita(ctrl);
      }
   } else {
      ctrl.Valor="";
      ctrl.value="";
   }
}


function SaltarCampo(ctrl)
{
    if (ctrl==null)
        ctrl=this;
    ctrl.Saltar=(ctrl.value.length==ctrl.Tam);
    if ( ctrl.AutoSkip && ctrl.Saltar)
        if (ctrl.Saltar)
        {
            ctrl.Saltar=false;
            if ( ctrl.IndicePosterior != null )
                SetarFoco(ctrl.IndicePosterior);
        }
}

// Fazer o salto de campo
function ValidarTecla (evnt)
{
    var tk;
    var c;
    var Tam;

    tk = ( (QualNavegador()=="IE") ? event.keyCode : evnt.which);

    c=String.fromCharCode(tk);
    c=c.toUpperCase();

    switch ( this.Tipo )
    {
    case "V":
        if ( (c<"0" || c>"9") && (c!="," && tk != "8") )
            return false;
        if ( (c==",") && ((this.value.search(",")>-1) || (this.value.length==0)) ) {
            return false;
        }
        break;
    case "D":
            if ( (c<"0" || c>"9") && (c!="/" && tk != "8") )
                return false;
        break;
    case "M":
         if (! validarMascara(this, c, tk))
              return false;
        break;
    default:
         if ( ! validarCaracter(c, tk, this.Tipo) )
            return false;
        break;
    }

   Tam = this.Tam-1;
   if ((QualNavegador()=="NE") && (QualVersao()==5))
      Tam = this.Tam;

   this.Saltar=(this.value.length==Tam);

    if ( ((QualNavegador()=="IE") && QualVersao()<5) || (QualNavegador()!="IE") ) {
        SaltarCampo(this);
    }

    return true;
}

function validarCaracter(c, tk, Tipo) {
    switch ( Tipo )
    {
    case "N":
         if ( (c<"0" || c>"9") && (tk != "8") )
            return false;
        break;
    case "C":
         if ( (c<"A" || c>"Z") && (tk != "8") )
            return false;
        break;
    case "A":
         if ( ( c<"A" || c>"Z" ) && ( c<"0" || c>"9" ) && (tk != "8") )
           return false;
         break;
    case "X":
         if ( (c<32 ) && ( c>127 ) )
              return false;
        break;
    default:
        return false;
        break;
    }
    return true;
}

function validarMascara(ctrl, c, tk) {
   Tam = ctrl.Tam;
   if ((QualNavegador()=="NE") && (QualVersao()==5))
      Tam = ctrl.Tam;

   if(ctrl.value.length>=Tam) {
      return false;
   }
   
   if(ctrl.Alinhamento=='D') {
      if(validarCaracter(c, tk, ctrl.MascaraTipo)) {
         ctrl.Valor = ctrl.Valor+c;
         aplicarMascaraEsquerda(ctrl);
      }
      return false;
   } else if(ctrl.Alinhamento=='E') {
      if(validarCaracter(c, tk, ctrl.MascaraTipo)) {
         ctrl.Valor = ctrl.Valor+c;
         aplicarMascaraDireita(ctrl);
      }
      return false;
   }

   return true;	
}

function aplicarMascaraEsquerda(ctrl) {
   max = ctrl.Mascara.length - 1;
   
   Valor = ctrl.Valor;
   dif = ctrl.ValorInicial.length - ctrl.Valor.length;
   if(dif > 0) {
        Valor = ctrl.ValorInicial.substring(0, dif)+Valor;
   }
   
   pos = Valor.length - 1;
   ctrl.value="";
   for(i=max; i>=0; i--) {
      m = ctrl.Mascara.substring(i, i+1);
      if(m==" ") {
         ctrl.value = Valor.substring(pos, pos+1)+ctrl.value;
         if(pos==0) {
            break;
         }
         pos = pos - 1;
      } else {
         ctrl.value = m+ctrl.value;
      }
   }
}

function aplicarMascaraDireita(ctrl) {
   max = ctrl.Mascara.length;
   
   Valor = ctrl.Valor;
   
   pos = 0;
   fim = ctrl.Valor.length - 1;
   ctrl.value="";
   for(i=0; i<max; i++) {
      m = ctrl.Mascara.substring(i, i+1);
      if(m==" ") {
         ctrl.value = ctrl.value+Valor.substring(pos, pos+1);
         if(pos==fim) {
            break;
         }
         pos = pos + 1;
      } else {
         ctrl.value = ctrl.value+m;
      }
   }
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function isValidDate (myDate,sep) {
// checks if date passed is in valid dd/mm/yyyy format

    if (myDate.length == 10) {
        if (myDate.substring(2,3) == sep && myDate.substring(5,6) == sep) {
            var date  = myDate.substring(0,2);
            var month = myDate.substring(3,5);
            var year  = myDate.substring(6,10);

            var test = new Date(year,month-1,date);

            if (year == y2k(test.getYear()) && (month-1 == test.getMonth()) && (date == test.getDate())) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }
    }
    else {
        return false;
    }
}

function isValidRange (initialDate,finalDate, sep) {
// checks if date passed is in valid dd/mm/yyyy format
	if(! isValidDate(initialDate, sep)) {
		return false;
	}
	if(! isValidDate(finalDate, sep)) {
		return false;
	}
	
   date  = initialDate.substring(0,2);
   month = initialDate.substring(3,5);
   year  = initialDate.substring(6,10);

   iniTest = new Date(year,month-1,date);

   date  = finalDate.substring(0,2);
   month = finalDate.substring(3,5);
   year  = finalDate.substring(6,10);

   finTest = new Date(year,month-1,date);
   
   if(iniTest > finTest) {
		return false;
	}
	
	return true
}

// Verifica se o CPF é válido, retornando true se sim e false se não.
function tstCpf (cpf) {

  strcpf = cpf;
  str_aux = "";
  
  for (i = 0; i <= strcpf.length - 1; i++)
    if ((strcpf.charAt(i)).match(/\d/)) 
      str_aux += strcpf.charAt(i);
    else if (!(strcpf.charAt(i)).match(/[\.\-]/)) {
      return false;
    }
  
  if (str_aux.length != 11) {
    return false;
  }

  if (str_aux == "00000000000") {
    return false;
  }

  if (str_aux == "11111111111") {
    return false;
  }

  if (str_aux == "22222222222") {
    return false;
  }

  if (str_aux == "33333333333") {
    return false;
  }

  if (str_aux == "44444444444") {
    return false;
  }

  if (str_aux == "55555555555") {
    return false;
  }

  if (str_aux == "66666666666") {
    return false;
  }

  if (str_aux == "77777777777") {
    return false;
  }

  if (str_aux == "88888888888") {
    return false;
  }

  if (str_aux == "99999999999") {
    return false;
  }
  
  soma1 = soma2 = 0;
  for (i = 0; i <= 8; i++) {
    soma1 += str_aux.charAt(i) * (10-i);
    soma2 += str_aux.charAt(i) * (11-i);
  }
  d1 = ((soma1 * 10) % 11) % 10;
  d2 = (((soma2 + (d1 * 2)) * 10) % 11) % 10;
  if ((d1 != str_aux.charAt(9)) || (d2 != str_aux.charAt(10))) {
    return false;
  }

  return true;
}

function tstCNPJ(s)
{
 var i;
 var c;
 x = 2;
 soma = 0;
 dig1 = 0;
 dig2 = 0;
 numcgc1="";
 numcgc = "";

  for (i = 0; i <= s.length - 1; i++)
    if ((s.charAt(i)).match(/\d/)) 
      numcgc += s.charAt(i);
    else if (!(s.charAt(i)).match(/[\.\-\/]/)) {
      return false;
    }
  
  if (numcgc.length != 14) {
    return false;
  }

 len = numcgc.length;
 for (var i = len - 3; i >= 0; i--) {
  y = numcgc.substring(i,i+1);
  soma = soma + ( y * x);
   if (x == 9) 
      x = 2;
   else
     x = x + 1;
 }
 dig1 = 11 - (soma % 11);
 if (dig1 == 10) dig1=0 ;
 if (dig1 == 11) dig1=0 ;
 numcgc1 = numcgc.substring(0,len - 2) + dig1 ;
 x = 2; soma=0;
 for (var i=len - 2; i >= 0; i--) {
  soma = soma + (numcgc1.substring(i,i+1) * x);
   if (x == 9) 
      x = 2;
   else
     x = x + 1;
 }
 dig2= 11 - (soma % 11);
 if (dig2 == 10) dig2=0;
 if (dig2 == 11) dig2=0;
  if ((dig1 + "" + dig2) == numcgc.substring(len,len-2)) {
  return true;
 }
 return false;
}

function tstData(data)
{
   var aux=data;
   if(aux.length!=10)return "";
   if(aux.charAt(2)!='/' || aux.charAt(5)!='/')return "";
   if(aux.charAt(0)<'0' || aux.charAt(0)>'9' || aux.charAt(1)<'0' || aux.charAt(1)>'9' ||
   aux.charAt(3)<'0' || aux.charAt(3)>'9' || aux.charAt(4)<'0' || aux.charAt(4)>'9' ||
   aux.charAt(6)<'1' || aux.charAt(6)>'2' || aux.charAt(7)<'0' || aux.charAt(7)>'9' ||
   aux.charAt(8)<'0' || aux.charAt(8)>'9' || aux.charAt(9)<'0' || aux.charAt(9)>'9' )return "";
   var ano=parseInt(aux.slice(6),10);
   var mes=parseInt(aux.slice(3,5),10);
   var dia=parseInt(aux.slice(0,2),10);
   if(ano<1900 || mes<1 || mes>12 || dia<1 || dia>31)return "";
   if(dia>30 && (mes==4 || mes==6 || mes==9 || mes==11))return "";
   if((ano % 4)==0){if(mes==2 && dia>29)return "";}
   else{if(mes==2 && dia>28)return "";}
   return data;
}
   
function tstNull(str){
 var straux=str;
 if (straux == null) return false
  for (i=0; i < straux.length; i++)
    if (straux.charAt(i) != " ") return true;
return false;
}



//-->
