// JavaScript Validacoes dos Campos
// Autor: BlueSoft
// This is version 1.0.0, dated 2000-11-22
//

//Contantes
	var JANELA_PADRAO_RESIZE = "width=1024, height=768, top=0, left=0, resizable=true";
	var JANELA_PADRAO_NO_RESIZE = "width=1024, height=768, top=0, left=0";
	
	var JANELA_MODAL_PADRAO = "dialogWidth=600px;dialogHeight=450px;dialogTop=0;dialogLeft=0";	
	var BROWSER_TYPE_DESKTOP = 1;
	var BROWSER_TYPE_PDA = 2;
		
//Cria metodo trim no objeto String
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); }
//  Deve ser criado um script, na pagina que possui o formulario, seguindo o formato:
//  campos = new Array();
//  campos[n] = new Array("NOME_DO_CAMPO","TIPO","PREENCHIMENTO","MENSAGEM");
//
//  exemplo:
//  campos = new Array();
//  campos[0] = new Array("NOME","STR","NOT NULL","");
//  campos[1] = new Array("ENDERECO","STR","NOT NULL","");
//  campos[2] = new Array("NUMERO","NUM","NOT NULL","");
//  campos[3] = new Array("CREDITO","CUR","NULL","");
//  campos[4] = new Array("CADASTRO","DTA","NOT NULL","");
//  campos[5] = new Array("CPF","CPF","NULL","");
//  campos[6] = new Array("CGC","CGC","NULL","");
//  campos[7] = new Array("PESO","MQZ","NOT NULL","");
//
//-----------------------------
// Rotina Validacao de Campos (PRINCIPAL)
//-----------------------------

/*
 * Obtem o elemento pai com a tagName passada
 */
function getParentElementByTagName(element, tagName){
	var target = null;
	while (true) {
		element = element.parentNode;
		if (element.tagName == tagName) {
			target = element;			
			break;			
		} else if (element.tagName == 'HTML') {
			break;
		} else if (element.parentNode == null) {
			break;
		}
	}
	return target;
}

function validarCampos(form,campos){
  // 0 - Nome do Campo
  // 1 - Tipo do Campo
  // 2 - Preenchimento do Campo
  // 3 - Mensagem
  var nome = 0;
  var tipo = 1;
  var preenchimento = 2;
  var mensagem = 3;
  for(j = 0; j < campos.length; j++) {
    if(campos[j][preenchimento]=="NOT NULL" && eval('document.'+form.name+'.'+campos[j][nome]).value==""){
      if(campos[j][mensagem]==""){
        alert('O campo '+campos[j][nome]+' deve ser preenchido!');
      }else{
        alert(campos[j][mensagem]);
      }
      //se o campo for readonly nao coloca o foco
      //if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false) {
      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && 
      		eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
		  eval('document.'+form.name+'.'+campos[j][nome]).focus();
	  }    
      return false;
    }
    
    if(eval('document.'+form.name+'.'+campos[j][nome]).value!=""){
			switch(campos[j][tipo]) {
			  case "STR":
			  break;

			  case "NUM":
                            valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;
                            if(valorCampo.indexOf(",")!=-1){
                              valorCampo = valorCampo.replace(",",".");
                            }
			    if(isNaN(valorCampo)){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' deve ser numérico.');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
				  return false;
			    }
                          eval('document.'+form.name+'.'+campos[j][nome]).value = valorCampo;
			  break;

			  case "CUR":
                            msg = confereCampoValor(eval('document.'+form.name+'.'+campos[j][nome]),campos[j][nome]);
			    if(msg!=""){
			      if(campos[j][mensagem]==""){
			        alert(msg);
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
				  return false;
			    }
			  break;

			  case "DTA":
			    msg = confereCampoData(eval('document.'+form.name+'.'+campos[j][nome]),campos[j][nome]);
			    if(msg!=""){
			      if(campos[j][mensagem]==""){
			        alert(msg);
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
			  break;

			  case "CPF":
			    valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;
			    if(valorCampo.length != 14 || !CPFValido(valorCampo.substring(0,3)+valorCampo.substring(4,7)+valorCampo.substring(8,11)+valorCampo.substring(12,14))){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' não é um número de CPF válido');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
			  break;

			  case "CGC":
			    valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;
			    if(valorCampo.length != 18 || !CGCValido(valorCampo.substring(0,2)+valorCampo.substring(3,6)+valorCampo.substring(7,10)+valorCampo.substring(11,15)+valorCampo.substring(16,18))){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' não é um número de CNPJ válido');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
			  break;

                          case "CPF_CNPJ":

                           valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;

                           if(valorCampo.length==18){
			    if(valorCampo.length != 18 || !CGCValido(valorCampo.substring(0,2)+valorCampo.substring(3,6)+valorCampo.substring(7,10)+valorCampo.substring(11,15)+valorCampo.substring(16,18))){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' não é um número de CNPJ válido');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
                           }else{
                             if(valorCampo.length != 14 || !CPFValido(valorCampo.substring(0,3)+valorCampo.substring(4,7)+valorCampo.substring(8,11)+valorCampo.substring(12,14))){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' não é um número de CPF válido');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {				      
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
                           }



			  break;

			  case "EAN":
			    valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;
			    if(!EanValido(valorCampo)){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' não é um código EAN válido');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }    
			      return false;
			    }
			  break;

			  case "MQZ":
                            valorCampo = eval('document.'+form.name+'.'+campos[j][nome]).value;
                            if(valorCampo.indexOf(",")!=-1){
                              valorCampo = valorCampo.replace(",",".");
                            }
			    if(isNaN(valorCampo) || valorCampo*1<=0){
			      if(campos[j][mensagem]==""){
			        alert('O valor do Campo '+campos[j][nome]+' deve ser numérico e maior que Zero');
			      }else{
			        alert(campos[j][mensagem]);
			      }
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }
			      return false;
			    }
			  break;

			  default:
			    alert('Tipo do Campo '+campos[j][nome]+' não Foi Definido Corretamente');
			      //se o campo for readonly nao coloca o foco
			      if (eval('document.'+form.name+'.'+campos[j][nome]).readOnly == false && eval('document.'+form.name+'.'+campos[j][nome]).type != "hidden" ) {
					  eval('document.'+form.name+'.'+campos[j][nome]).focus();
				  }   
			    return false;
		  }
	  }
  }
  return true;
}


//-----------------------------
// Rotina Preenche com Zeros ( formata o numero digitado para CUR )
//-----------------------------

  function preencheComZeros(campo){
    campo.value =  campo.value.replace('.',',')
    if(campo.value.indexOf(",")==-1){
      if(campo.value*1<100){
        campo.value = "0," + "00".concat(campo.value).substring(campo.value.length);
      }else{
        inteiro = (campo.value.substring(0,campo.value.length-2));
        decimal = (campo.value.substring(campo.value.length-2));
        campo.value = inteiro + "," + decimal;
      }
    }
    while (campo.value.length<8){
      campo.value = " " + campo.value;
    }
  }



//-----------------------------
// Rotina de Verificacao da Data criada em 28/01/2003
//-----------------------------
function confereData(campo, nome)
{
  var msgErro = "";
  var tempAno, tempMes, tempDia;
  var ano, mes, dia;
  var tempData;
  var tempStr;

  if (campo.value.length != 10 || campo.value.substr(2, 1) != "/" || campo.value.substr(5, 1) != "/")
    msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
  else {
    tempStr = retNumerosStr(campo.value);

    if (tempStr.length != 8)
      msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
    else {
      tempAno = tempStr.substr(4, 4);
      tempMes = tempStr.substr(2, 2);
      tempDia = tempStr.substr(0, 2);

      if (! dataValida(tempAno, tempMes, tempDia))
        msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
    }
  }
  if (msgErro != "") {
    alert(msgErro);
    campo.value = campo.defaultValue;
  }
  return (msgErro);
}

//-----------------------------
// Rotina de Verificacao da Data
//-----------------------------
function confereCampoData(campo, nome)
{
  var msgErro = "";
  var tempAno, tempMes, tempDia;
  var ano, mes, dia;
  var tempData;
  var tempStr;

  if (campo.value.length != 10 || campo.value.substr(2, 1) != "/" || campo.value.substr(5, 1) != "/")
    msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
  else {
    tempStr = retNumerosStr(campo.value);

    if (tempStr.length != 8)
      msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
    else {
      tempAno = tempStr.substr(4, 4);
      tempMes = tempStr.substr(2, 2);
      tempDia = tempStr.substr(0, 2);

      if (! dataValida(tempAno, tempMes, tempDia))
        msgErro = "Para o campo " + nome + " utilize o formato dd/mm/aaaa";
    }
  }

  return (msgErro);
}

//-----------------------------
// Rotina Auxiliar de Verificacao da Data
//-----------------------------
function dataValida(ano, mes, dia)
{
  if (dia < 1 || dia > 31) {
    return false;
  }

  if (mes < 1 || mes > 12) {
    return false;
  }

  if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia == 31) {
    return false;
  }

  if (mes == 2) {
    var bissexto = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
    if (dia > 29 || (dia == 29 && ! bissexto)) {
      return false;
    }
  }

  if (ano < 1900) {
    return false;
  }

  return true;
}


//-----------------------------
// Rotina Auxiliar Retorna S? os Numeros da String
//-----------------------------
function retNumerosStr(texto)
{
  var tempStr;
  var tempChar;
  var iLen;
  var i;

  iLen = texto.length;
  tempStr = "";

  for (i = 0; i < iLen; i++) {
    tempChar = texto.substr(i, 1);
    if ((tempChar >= "0") && (tempChar <= "9"))
      tempStr = tempStr + tempChar;
  }

  return tempStr;
}


//-------------------------------------------------
//	Verifica CPF
//-------------------------------------------------
function CPFValido(theNumber)
{

    if(theNumber == "")
	  return true;

    var i = 0
	var tmpPos = 0;
    while (i != -1)
    {
      i = theNumber.indexOf(".", tmpPos); // i ser? a posi??o do separador.
      if (i > 0) theNumber = theNumber.substring(0,i) + theNumber.substring(i + 1, theNumber.length);
    }

    i = 0;
    while (i != -1)
    {
      i = theNumber.indexOf("-", tmpPos); // i ser? a posi??o do separador.
      if (i > 0) theNumber = theNumber.substring(0,i) + theNumber.substring(i + 1, theNumber.length);
    }

	var i = theNumber.length;
	var OrigNumber = "000000000000000000".concat(theNumber).substring(i);
	var FirstDigit = OrigNumber.charAt(16);	//- 17a e 18a. pos.
	var SecondDigit = OrigNumber.charAt(17);

	theNumber = OrigNumber.substring(0, 16);	//- 16 bytes

	var FirstCalc = CalculoCPF(theNumber, 15, 10);

	theNumber = OrigNumber.substring(0, 17);	//- 17 bytes

	var SecondCalc = CalculoCPF(theNumber, 16, 11);

	return ( (FirstCalc == FirstDigit) && (SecondCalc == SecondDigit) );

}

//-------------------------------------------------
//	Rotina auxiliar para c?lculo do d?gito do CPF.
//-------------------------------------------------
function CalculoCPF(theNumber, FirstIndex, MaxWeight)
{
	var Sum = 0;		//- soma.
	var Weight = 2;		//- peso.
	var i = 0;

	for (i = FirstIndex; i >= 0; i--)  {
		Sum += (theNumber.charAt(i) - '0') * Weight;
		if (Weight == MaxWeight)
        {
           Weight = 1;
		}
		Weight++;
	}

	i = Sum % 11;

	if ( (i == 0) || (i == 1) )
	{
       i = 11;
	}

	return String(11 - i);

}

//-------------------------------------------------
//	Verifica CCG
//-------------------------------------------------
function CGCValido(theNumber) {

    if(theNumber == "")
	  return true;

    var i = 0
	var tmpPos = 0;
    while (i != -1)
    {
      i = theNumber.indexOf(".", tmpPos); // i ser? a posi??o do separador.
      if (i > 0) theNumber = theNumber.substring(0,i) + theNumber.substring(i + 1, theNumber.length);
    }

    i = 0;
    while (i != -1)
    {
      i = theNumber.indexOf("-", tmpPos); // i ser? a posi??o do separador.
      if (i > 0) theNumber = theNumber.substring(0,i) + theNumber.substring(i + 1, theNumber.length);
    }

    i = 0;
    while (i != -1)
    {
      i = theNumber.indexOf("/", tmpPos); // i ser? a posi??o do separador.
      if (i > 0) theNumber = theNumber.substring(0,i) + theNumber.substring(i + 1, theNumber.length);
    }

	var FirstDigit = theNumber.substring(12, 13);
	var SecondDigit = theNumber.substring(13, 14);
    var FirstCalc = CalculoCPF(theNumber, 11, 9);
	var SecondCalc = CalculoCPF(theNumber, 12, 9);
	return ( (FirstCalc == FirstDigit) && (SecondCalc == SecondDigit) );
}

//-----------------------------
// Rotina de Verificacao de EAN
//-----------------------------
function EanValido(theNumber) {
  if (isNaN(theNumber))
   return false ;
  if(parseInt(theNumber) > 0 && parseInt(theNumber) < 10000000 )
    return true;
  var i = 0;
  while ( i < theNumber.length ) {
    somapar = somapar + parseInt(theNumber.substr(i,1))
    i = i + 2
  }
  i = 0;

 i = theNumber.length;

  var OrigNumber = "00000000000000000".concat(theNumber).substring(i);
  var dv          = OrigNumber.charAt(16);
  theNumber = OrigNumber.substr(0, 16);	//- 16 bytes
  var somapar   =  0 ;
  var somaimpar =  0 ;
  var subtotal  =  0 ;
  var i = 1 ;
  while (i < 17 ) {
    somapar = somapar + parseInt(theNumber.substr(i,1))
    i = i + 2
  }
  i = 0;
  while (i < 16 )  {
    somaimpar = somaimpar + parseInt(theNumber.substr(i,1))
    i = i + 2
  }
  var soma3 = ( somapar * 3 + somaimpar ) ;
  var soma4 = (Math.floor(soma3/10)*10 ) +10 ;
  var soma5 = soma4 - soma3  ;
  if ( soma5 == 10 )  soma5 = 0 ;
  if (soma5 == parseInt(dv) ) {
     return true ;
  }else {
    return false;
  }
}

//-----------------------------
// Rotina de Verificacao de Campo Monetario
//-----------------------------
function confereCampoValor(campo, nome)
{
  var msgErro = "";
  var tempStr;

  tempStr = retValorStr(campo.value);
  if (tempStr != retiraEspacos(campo.value))
    msgErro = "O campo " + nome + " não é um valor numérico válido";
  return (msgErro);
}

function confereCampoValor_1(campo, nome)
{
  var msgErro = "";
  var tempStr;

  tempStr = retValorStr(campo.value);
  if (tempStr != retiraEspacos(campo.value)){
    msgErro = "O campo " + nome + " não é um valor numérico válido";
    alert(msgErro);
    return false;
  }
  return true;
}

//-----------------------------
// Rotina Auxiliar para Retirar um Determinado Caracter da String
//-----------------------------
function retiraCaracter(texto, caracter)
{
  while (texto.indexOf(caracter) != -1)
    texto = texto.replace(caracter, "");

  return texto;
}

//-----------------------------
// Rotina Auxiliar para Retirar espacos da String
//-----------------------------
function retiraEspacos(texto)
{
  return retiraCaracter(texto, " ");
}

//-----------------------------
// Rotina Auxiliar para Retornar o valor de uma String
//-----------------------------
function retValorStr(texto)
{
  var tempStr;
  var tempChar;
  var iLen;
  var i;
  var teveVirgula = false;

  iLen = texto.length;
  tempStr = "";

  for (i = 0; i < iLen; i++) {
    tempChar = texto.substr(i, 1);
    if ((tempChar >= "0" && tempChar <= "9") || (tempChar == "," && (! teveVirgula))) {
      if (tempChar == ",")
        teveVirgula = true; // s? permite uma v?rgula

      tempStr = tempStr + tempChar;
    }
  }
  return tempStr;
}

//-----------------------------
// Rotina Auxiliar para Avancar para o Proximo Campo
//-----------------------------

function nextElement(e){
  if(e.keyCode == 13){
    e.keyCode=9;
  }
}

//-----------------------------
// Rotina Auxiliar para Formatar um valor com um certo numero de decimais
//-----------------------------

    function Decimal(numero,casas){
      numero = String(numero);
      numero = numero.replace(',','.');
      if(isNaN(numero)){
        alert('O valor do Campo deve ser numérico');
        return "";
      }
      if (numero!=null) {
        novoNumero = Math.round(numero * Math.pow(10.0,casas));
        novoNumero = novoNumero/Math.pow(10.0,casas);
      }
      resposta = String(novoNumero); 
      posPonto = resposta.indexOf(".");
      if(posPonto==-1){
        resposta = resposta + ".";
        posPonto = resposta.indexOf(".");
      }
      resposta = resposta + "000000000000000000000000000000000";
      resposta = resposta.substring(0,posPonto+casas+1);
      if (casas == 0)
      	  resposta = resposta.replace('.', '');
      return resposta;
    }
    
	function DecimalBr(numero,casas){
		return Decimal(numero,casas).replace(".","#").replace(",","@").replace("@",".").replace("#",",");
	}
	
	/*
	function DecimalBr(numero, casas) {
		var novoNumero = new String(Decimal(numero,casas).replace(".",","));
		var numeroInteiro = new String(Math.abs(parseInt(novoNumero)));
				
		var caracteres = numeroInteiro.split("");
		var resposta = "", x=new String(caracteres).length - 1;
		for (var i=0; i < caracteres.length; i++) {
			resposta +=  caracteres[i]+ ((x % 3 ==0 && i != caracteres.length -1) ? "." : "") ;
			x--;
		}		
		if (novoNumero.lastIndexOf(",") == -1)
			return resposta
		else	
			return resposta + novoNumero.substring(novoNumero.lastIndexOf(","), novoNumero.split("").length)  ;
			
	}
	*/
	
//-----------------------------
// Rotina Auxiliar para Formatar valor Para Moeda
//-----------------------------

    function moeda(campo){
      valor = String(campo.value);
      valor = valor.replace(',','.');
      if(valor.indexOf(".")==-1){
        valor = valor / 100;
      }
      valor = String(valor);
      campo.value = Decimal(valor,2);
    }

    function TruncaUmaCasa(number){
	  if(number == -Infinity)
	  	number = 0;

      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não e válido!');
        return "";

      }
      resp = Math.round(number * 10)/10;
      return arredonda(resp,1);
    }

    function TruncaDuasCasas(number){
	  if(number == -Infinity)
	  	number = 0;

      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não é válido!');
        return "";

      }
      resp = Math.round(number * 100)/100;
      return arredonda(resp,2);
    }

    function TruncaTresCasas(number){
	  if(number == -Infinity)
	  	number = 0;
	  
      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não é válido!');
        return "";

      }
      resp = Math.round(number * 1000)/1000;
      return arredonda(resp,3);
    }

    function TruncaQuatroCasas(number){
	  if(number == -Infinity)
	  	number = 0;

      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não é válido!');
        return "";

      }
      resp = Math.round(number * 10000)/10000;
      return arredonda(resp,4);
    }

	function TruncaCincoCasas(number){
	  if(number == -Infinity)
	  	number = 0;

      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não é válido!');
        return "";

      }
      resp = Math.round(number * 100000)/100000;
      return arredonda(resp,5);
    }
    
    function TruncaSeisCasas(number){
	  if(number == -Infinity)
	  	number = 0;

      number = String(number);
      number = number.replace(',','.');
      if(isNaN(number)){
        alert('O Valor não é válido!');
        return "";

      }
      resp = Math.round(number * 1000000)/1000000;
      return arredonda(resp,6);
    }

//-----------------------------
// Rotina Auxiliar para Formatar um valor com um certo numero de decimais
//-----------------------------

    function arredonda(numero,casas){
      if (isNaN(numero))
        return '' ;
      numero = String(numero);
      numero = numero.replace(',','.');
      if (numero!=null) {
        novoNumero = Math.round(numero * Math.pow(10.0,casas));
        novoNumero = novoNumero/Math.pow(10.0,casas);
      }
      if (casas == 0 )
        return novoNumero ;
      resposta = String(novoNumero);
      posPonto = resposta.indexOf(".");
      if(posPonto==-1){
        resposta = resposta + ".";
        posPonto = resposta.indexOf(".");
      }
      resposta = resposta + "000000000000000000000000000000000";
      resposta = resposta.substring(0,posPonto+casas+1);
      return resposta;
    }

//-----------------------------
// Rotina Auxiliar para Formatar um valor com um certo numero de decimais
//-----------------------------

    function verificaNumero(campo,casas){
      // Retira os espacos
      var numero1 = campo.value;
      numero = numero1.replace(',','.');
      if (numero!=null) {
        novoNumero = Math.round(numero * Math.pow(10.0,casas));
        novoNumero = novoNumero/Math.pow(10.0,casas);
      }
      resposta = String(novoNumero);
      posPonto = resposta.indexOf(".");
      if(posPonto==-1){
        if (casas.value > 0) {
          resposta = resposta + ".";
          posPonto = resposta.indexOf(".");
        }
      }
      if (casas.value > 0) {
        resposta = resposta + "000000000000000000000000000000000";
        resposta = resposta.substring(0,posPonto+casas+1);
      }
      if (!isNaN(resposta)) {
        if ( numero*1 != resposta*1 ) {
          alert("O valor digitado ( "+ campo.value + " ) " + " será convertido para "+ resposta );
        }
      } else {
        alert("O Valor digitado deve ser um número válido.");
        resposta= campo.defaultValue ? Decimal(campo.defaultValue, casas) : "0";
        campo.focus();
      }
      campo.value=arredonda(resposta,casas);
    }
    

//-----------------------------
// Rotina Auxiliar para Formatar um valor com um certo numero de decimais
//-----------------------------

    function verificaNumero2(campo,casas){
      // Retira os espacos
      var numero1 = campo.value;
      numero = numero1.replace(',','.');
      if (numero!=null) {
        novoNumero = Math.round(numero * Math.pow(10.0,casas));
        novoNumero = novoNumero/Math.pow(10.0,casas);
      }
      resposta = String(novoNumero);
      posPonto = resposta.indexOf(".");
      if(posPonto==-1){
        if (casas.value > 0) {
          resposta = resposta + ".";
          posPonto = resposta.indexOf(".");
        }
      }
      if (casas.value > 0) {
        resposta = resposta + "000000000000000000000000000000000";
        resposta = resposta.substring(0,posPonto+casas+1);
      }
      if (!isNaN(resposta)) {
        if ( numero*1 != resposta*1 ) {
        }
      } else {
        resposta= campo.defaultValue ? Decimal(campo.defaultValue, casas) : "0";
        campo.focus();
        return false;
      }
      campo.value=arredonda(resposta,casas);
      return true;
    }
    
    
//-----------------------------
// Rotina Auxiliar para Formatar um valor com um certo numero de decimais retornado um boolean
//-----------------------------
    function verificaNumero3(campo,casas){
      // Retira os espacos
      var numero1 = campo.value;
      numero = numero1.replace(',','.');
      if (numero!=null) {
        novoNumero = Math.round(numero * Math.pow(10.0,casas));
        novoNumero = novoNumero/Math.pow(10.0,casas);
      }
      resposta = String(novoNumero);
      posPonto = resposta.indexOf(".");
      if(posPonto==-1){
        if (casas.value > 0) {
          resposta = resposta + ".";
          posPonto = resposta.indexOf(".");
        }
      }
      if (casas.value > 0) {
        resposta = resposta + "000000000000000000000000000000000";
        resposta = resposta.substring(0,posPonto+casas+1);
      }
      if (!isNaN(resposta)) {
        if ( numero*1 != resposta*1 ) {
          alert("O valor digitado ( "+ campo.value + " ) " + " sera convertido para "+ resposta );
        }
      } else {
        alert("O Valor digitado deve ser um numero valido.");
        resposta="0";
        campo.value = campo.defaultValue;
        return false;
      }
      campo.value=arredonda(resposta,casas);
      return true;
    }

//-----------------------------------------------------------------
// Converte um numero no formato brasileiro (25.541,52) para Float
//-----------------------------------------------------------------
    function brNumberToFloat(number){
    	return parseFloat(number.replace('.','').replace(',','.'));
    }
    
    
//-----------------------------
// Rotina de Verificacao da Data
//-----------------------------
function campoDataValido(campo, nome)
{
  var msgErro = "";
  var tempAno, tempMes, tempDia;
  var ano, mes, dia;
  var tempData;
  var tempStr;
  var retorno = true;

  if (campo.value.length != 10 || campo.value.substr(2, 1) != "/" || campo.value.substr(5, 1) != "/") {
    alert("Para o campo " + nome + " utilize o formato dd/mm/aaaa");
    campo.value = campo.defaultValue;
    campo.focus();
    campo.select();
    retorno = false;
  } else {
    tempStr = retNumerosStr(campo.value);

    if (tempStr.length != 8) {
      alert("Para o campo " + nome + " utilize o formato dd/mm/aaaa");
      campo.value = campo.defaultValue;
      campo.focus();
      campo.select();
      retorno = false;
    } else {
      tempAno = tempStr.substr(4, 4);
      tempMes = tempStr.substr(2, 2);
      tempDia = tempStr.substr(0, 2);

      if (! dataValida(tempAno, tempMes, tempDia)) {
        alert("Para o campo " + nome + " utilize o formato dd/mm/aaaa");
        campo.value = campo.defaultValue;
        campo.focus();
        campo.select();
        retorno = false;
      }
    }
  }

  return retorno;
}

/* Fun??o para "acender" o bot?o (alpha = 100) e apagar novamente (alpha = 60) */

function makevisible(cur,which){
  try {
	if (which==0) {
    cur.filters.alpha.opacity=100;
  } else {
    cur.filters.alpha.opacity=70;
  }
  } catch(e) {
	  //Pq isso nao funciona no firefox! 
  }
}


/*   Fun??o que esconde todas as tabsheets da pagina e mostra somente a escolhida
   pelo usu?rio. Muda tamb?m a cor do link para vermelho (#DC143C). */

function trocaTabSheet(origem) {
  layers = document.getElementsByTagName('div');
  for (var i=0; i < layers.length; i++) {
    if (layers[i].id.substr(0,3) == 'tab') {
      layers[i].style.display = 'none';
    }
  }
  document.getElementById("tab"+origem).style.display = "block";

  tds = document.getElementsByTagName('a');
  for (var i=0; i < tds.length; i++) {
    if (tds[i].id.substr(0,5) == 'field') {
      tds[i].style.color = '#000080';
    }
  }
  document.getElementById("field"+origem).style.color = "#DC143C";
}

/* Verifica se a Data Inicial maior que a final */

    function confereDiferencaDatas(dataIni, dataFim){
      if (campoDataValido(dataIni, "Data Inicial") && campoDataValido(dataFim, "Data Final")) {
          var dtFim = new Date(dataFim.value.substring(6,10),dataFim.value.substring(3,5)-1,dataFim.value.substring(0,2));
          var dtIni = new Date(dataIni.value.substring(6,10),dataIni.value.substring(3,5)-1,dataIni.value.substring(0,2));
        if(dtIni > dtFim){
          alert('Periodo Invalido , A Data Inicial é maior que a Data Final !');
          dataIni.value = dataIni.defaultValue;
          return false;
        }
        return true;
      } else {
          return false;
      }
    }

    function confereDataMenorHoje(dataIni, hoje){
      if (campoDataValido(dataIni, "Data Inicial") && campoDataValido(hoje, "Hoje")) {
          var hoje = new Date(hoje.value.substring(6,10),hoje.value.substring(3,5)-1,hoje.value.substring(0,2));
          var dtIni = new Date(dataIni.value.substring(6,10),dataIni.value.substring(3,5)-1,dataIni.value.substring(0,2));
        if(dtIni < hoje){
          return false;
        }
        return true;
      } else {
          return false;
      }
    }
    
    
   /* Verifica se a Data Inicial e maior que a data  Atual */
    
    function verificaDataMaiorQueDataAtual(dataIni, hoje){
      if (campoDataValido(dataIni, "Data Inicial") && campoDataValido(hoje, "Data Final")) {
          var dtFim = new Date(hoje.value.substring(6,10),hoje.value.substring(3,5)-1,hoje.value.substring(0,2));
          var dtIni = new Date(dataIni.value.substring(6,10),dataIni.value.substring(3,5)-1,dataIni.value.substring(0,2));
        if(dtIni > dtFim){
          return false;
        }
        return true;
      } else {
          return false;
      }
    }


/* Verifica se a Data Inicial maior que a final e se o periodo maior que X dias */

    function confereFaixaData(dataIni, dataFim, periodo) {
      if (campoDataValido(dataIni, "Data Inicial") && campoDataValido(dataFim, "Data Final")) {
          var dtFim = new Date(dataFim.value.substring(6,10),dataFim.value.substring(3,5)-1,dataFim.value.substring(0,2));
          var dtIni = new Date(dataIni.value.substring(6,10),dataIni.value.substring(3,5)-1,dataIni.value.substring(0,2));
        if(dtIni > dtFim){
          alert('Período Inválido , A Data Inicial é maior que a Data Final !');
          dataIni.value = dataIni.defaultValue;
          return false;
        }
        if( dtFim - dtIni > 86400000* periodo){
          alert('Período muito grande. Selecione no máximo '+periodo+' dias !');
          dataFim.value = dataFim.defaultValue;
          return false;
        }
        return true;
      } else {
          return false;
      }
    }

/* Verifica um numero no padrao modulo 10 (dez) */

    function modulo10(campo1, campo2) {
      var divisor = 2;
      var soma = 0;
      var numero = campo1.value + campo2.value.substring(0, campo2.value.length -1);

      for(i = numero.length; i > 0; i--) {
        var digito = numero.substring(i - 1, i);
        var m = digito * divisor;
        if(m >= 10)
          m = (parseInt(m / 10,0)) + m % 10;
        soma += m;

        if(divisor == 2)
          divisor = 1;
        else
          divisor = 2;
      }

      var digito = 10 - (soma % 10);

      if(digito == 10) {
        return 0;
      } else {
          return digito;
      }
    }

/* Verifica os numero do codigo de barra no padrao modulo 11 (onze) */

    function modulo11(codigoBarra) {
      var numero = codigoBarra.substring(0,4) + codigoBarra.substring(5,44);
      var divisor = 2;
      var soma = 0;

      for(i = numero.length; i > 0; i--) {
        var digito = numero.substring(i - 1, i);
        var m = digito * divisor;
        soma += m;

        divisor += 1;
        if(divisor > 9)
          divisor = 2;
      }

      var digito = 11 - (soma % 11);
      if(digito >= 10)
        return 1;
      else
        return digito;
    }

/* Calcula o vencimento a partir dos dias do boleto - data base : 07/10/1997 */

    function calculaVencimentoPadraoBoleto(diasBoleto) {
      var base = 10142 * 24 * 60 * 60 * 1000;
      var vcto = diasBoleto * 24 * 60 * 60 * 1000;
      var soma = base + vcto;
      var dataGerada = new Date(soma);
      var dia = dataGerada.getDate();
      var mes = dataGerada.getMonth() + 1;
      var ano = dataGerada.getFullYear();
      if(dia < 10) dia = "0"+dia;
      if(mes < 10) mes = "0"+mes;
      return dia+"/"+ mes +"/"+ano;
    }

/* converte a linha digitavel digitada pelo usuario no codigo de barras */
    function converteLinhaEmBarra() {
      var tamanho = 0;
      if(document.form1.linhaDigitavel_8.value == 0) {
        document.form1.linhaDigitavel_8.value = "00000000000000";
      }

      for (a = 0; a <= document.form1.elements.length-1; a++){
        if(document.form1.elements[a].type == 'text' && document.form1.elements[a].name.substring(0,15)  == 'linhaDigitavel_') {
          tamanho += document.form1.elements[a].value.length;
        }
      }

      if(tamanho == 47) {
        if(document.form1.linhaDigitavel_2.value.substring(4,5) == modulo10(document.form1.linhaDigitavel_1, document.form1.linhaDigitavel_2) && document.form1.linhaDigitavel_4.value.substring(5,6) == modulo10(document.form1.linhaDigitavel_3, document.form1.linhaDigitavel_4) && document.form1.linhaDigitavel_6.value.substring(5,6) == modulo10(document.form1.linhaDigitavel_5, document.form1.linhaDigitavel_6)) {
          var codigoGerado = "";
          codigoGerado += document.form1.linhaDigitavel_1.value.substring(0,4);
          codigoGerado += document.form1.linhaDigitavel_7.value;
          codigoGerado += document.form1.linhaDigitavel_8.value.substring(0,4);
          codigoGerado += document.form1.linhaDigitavel_8.value.substring(4,14);
          codigoGerado += document.form1.linhaDigitavel_1.value.substring(4,5);
          codigoGerado += document.form1.linhaDigitavel_2.value.substring(0,4);
          codigoGerado += document.form1.linhaDigitavel_3.value;
          codigoGerado += document.form1.linhaDigitavel_4.value.substring(0,5);
          codigoGerado += document.form1.linhaDigitavel_5.value;
          codigoGerado += document.form1.linhaDigitavel_6.value.substring(0,5);

          if(codigoGerado.substring(4,5) == modulo11(codigoGerado)) {
            document.form1.codigoBarra.value = codigoGerado;
          } else {
              alert("O dígito de autoconferência não está correto");
              return false;
          }
        } else {
            alert("Os dígitos verificadores não estão corretos");
            return false;
        }
      } else {
          alert("Esta não é uma linha digitavel válida");
          return false;
      }
      return true;
    }
    
    
    /* converte a linha digitavel digitada pelo usuario no codigo de barras */

/* completa com caracteres a esquerda */

    function padl(str, len, c) {
      var aux = ""+str;
      var resultado = "";
      for(x=aux.length; x < len; x++) {
        resultado += c;
      }
      resultado += aux;
      return resultado;
    }

/* completa com caracteres a direita */

    function padr(str, len, c) {
      var aux = ""+str;
      var resultado = aux;
      for(x=aux.length; x < len; x++) {
        resultado += c;
      }
      return resultado;
    }
//Funcao que retorna  o valor da proprieda de uma classe no css  
//Funcao que retorna  o valor da propriedade de uma classe no css  
function cssPropertyValue(objeto, propriedade){
	if (objeto ==undefined || objeto ==null)
		return "";
		
	var objStyle, nomeDaClasse;
	nomeDaClasse = objeto.className;
	if (nomeDaClasse == '' || nomeDaClasse == null)
		return "";
			
	if (document.styleSheets[0].cssRules)
		objStyle = eval("document.styleSheets[0].cssRules");
	else if (document.styleSheets[0].rules)
		objStyle = eval("document.styleSheets[0].rules");
		
	for (i=0; i < objStyle.length; i++) {
		var selectorText = new String(objStyle[i].selectorText) ;
		if (selectorText.match(nomeDaClasse)) 
			return eval("objStyle[i].style."+propriedade);
	}		
	return "";
}

	    
function removeClassName (elem, className) {
	elem.className = elem.className.replace(className, "").trim();
}

function addCSSClass (elem, className) {
	removeClassName (elem, className);
	elem.className = (elem.className + " " + className).trim();
}

String.prototype.trim = function() {
	return this.replace( /^\s+|\s+$/, "" );
}

// this function is needed to work around 
  // a bug in IE related to element attributes
  function hasClass(obj) {
     var result = false;
     if (obj.getAttributeNode("class") != null) {
         result = obj.getAttributeNode("class").value;
     }
     return result;
  }   

 function stripe() {

    // the flag we'll use to keep track of 
    // whether the current row is odd or even
    var even = false;
  
    // if arguments are provided to specify the colours
    // of the even & odd rows, then use the them;
    // otherwise use the following defaults:
    var evenColor = arguments[1] ? arguments[1] : "#fff";
    var oddColor = arguments[2] ? arguments[2] : "#eee";
  
    // obtain a reference to the desired table
    // if no such table exists, abort
    var table = document.getElementById('tabelaZebra');
    if (! table) { return; }
    
    // by definition, tables can have more than one tbody
    // element, so we'll have to get the list of child
    // &lt;tbody&gt;s 
    var tbodies = table.getElementsByTagName("tbody");

    // and iterate through them...
    for (var h = 0; h < tbodies.length; h++) {
    
     // find all the elements... 
      var trs = tbodies[h].getElementsByTagName("tr");
      
      // ... and iterate through them
      for (var i = 0; i < trs.length; i++) {

        // avoid rows that have a class attribute
        // or backgroundColor style
        if (! hasClass(trs[i]) &&
            ! trs[i].style.backgroundColor) {
 		  
          // get all the cells in this row...
          var tds = trs[i].getElementsByTagName("td");
        
          // and iterate through them...
          for (var j = 0; j < tds.length; j++) {
        
            var mytd = tds[j];

            // avoid cells that have a class attribute
            // or backgroundColor style
            if (! hasClass(mytd) &&
                ! mytd.style.backgroundColor) {
        
              mytd.style.backgroundColor =
                even ? evenColor : oddColor;
            
            }
          }
        }
        // flip from odd to even, or vice-versa
        even =  ! even;
      }
    }
  }
  
  //Funcao para validar data(coloque no evento onchange ou onblur
  
	function validarHoras (campo) {
		var tmp_campo = "", txtCampo = campo.value; 
		var hora = "",  minuto = "", maxMin = "59", maxHora="23";

			
		if (txtCampo.length > 5 || txtCampo.length <= 2) {
			alert("Hora inválida ! Formato necessário hh:mm");
			campo.value="";
			campo.onChange=false;
			return;
		} 
		
		if (txtCampo.length < 4) {
			txtCampo = "0"+txtCampo;
		} 
		// se persistir < 4
		if (txtCampo.length < 4) {
			 txtCampo = txtCampo.substr(0,2)+"0"+txtCampo.substr(2,1);
		} 	
			if (txtCampo.length == 5) {				
					if (txtCampo.substr(0,2) <= maxHora) {
					} else {
						campo.value = "";
						alert("Formato de hora inválido(horas) !");
						return;
					}	
					if (txtCampo.substr(3,2) <= maxMin) {
						
					} else {
						campo.value = "";
						alert("Formato de hora inválido(minutos) !");
						return;							
					}
					return;					
			}
			
			for (i=0;i< txtCampo.length; i++) {																				
				if (txtCampo.substr(i,1) != ":") {						 
					tmp_campo += txtCampo.substr(i,1);
				} 
			}
			txtCampo == tmp_campo;
			hora = txtCampo.substr(0,2);			
			minuto = txtCampo.substr(2,2); 
			
		//valida as horas e minutos
		if (hora >=00 && hora <= 23 && minuto >=00 && minuto <= 59 ) {			
			hora = new String(hora);
			minuto = new String(minuto);			 
			txtCampo = hora +":"+minuto; 
			campo.value = txtCampo;
		} else {
			alert("Hora inválida ! Formato necessário hh:mm");
			campo.value = "";
			return; 
		}  
	}
/*----------------------------------------------------------------------  
  	Funcao que verifica se um numero, coloque no evento onkeypress
  ----------------------------------------------------------------------  	
*/  	
	//tipo = 1 numeros
	//tipo = 2 datas 
  	function numeroValido(e, tipo) {
  		var retorno = 0;  		 
  		var keyCode = 0;
  		if (window.event)
	  		keyCode = e.keyCode ;
	  	else
	  		keyCode = e.which;
		
  		 		
		if (tipo == 2) {
			if (keyCode >=48 && keyCode <=58) {
				retorno = keyCode;
			} else {
				if (keyCode == 59 || keyCode == 44 || keyCode == 45) {
					
					keyCode=58;
				} else {				
					keyCode=8;
				}	
			}
		} else {
			if (keyCode >=47 && keyCode <=57 || keyCode == 46 || keyCode == 44) {
				retorno = keyCode;			
			} else {					
				keyCode=8;
			}  
		}
		if (window.event)
			e.keyCode= keyCode ; 
		else	
			e.which = keyCode;
		return retorno;
	}
  
  
  window.onload = function() { stripe(); }

/* seleciona/desmarca todos os checkboxes da pagina */
	function selecao() {
		// seleciona pressionado
		if (document.form1.seleciona.valor=="Selecionar Todos") {
			for (indObject = 0; indObject <= document.form1.elements.length-1; indObject++){
				if(document.form1.elements[indObject].type=='checkbox'){
					document.form1.elements[indObject].checked = true ;
				}
			}
			document.form1.seleciona.valor="Desmarcar Todos";
			document.form1.seleciona.src="../Images/Aqua/desmarcar_todos.png";
		} else {
			// desmarca selecionado
			for (indObject = 0; indObject <= document.form1.elements.length-1; indObject++){
				if(document.form1.elements[indObject].type=='checkbox'){
					document.form1.elements[indObject].checked = false ;
				}
			}
			document.form1.seleciona.valor="Selecionar Todos";
			document.form1.seleciona.src="../Images/Aqua/selecionar_todos.png";
		}
	}
	
//Incluido em 01/11/2005 por Alex Simas
  function valida(event) {
    	var str = null;
    	var v = document.form1.comboKey;
    	str=v.value;
    		
    		if (event.keyCode >= 48 & event.keyCode <=57 ) {
    		}else{	
    			event.keyCode=8;
    		}
    }
    
    function mudaLoja() {
     var combo = document.form1.lojaKey;
     var v = document.form1.comboKey;
     var b = false;
   		       
       	for (i=0; i<combo.length;i++) {
       	   if (combo.options[i].value == v.value ) {
       	   		combo.selectedIndex = i  ;
       	   		combo.onchange();
       	   		b = true;
       	   		return;
       	   }
       	}
       if (b == false) {
       		alert("Loja não cadastrada!");
       }
    }
    
    function dealerParams(filho, pai, key){
                     this.filho = filho;
                     this.pai = pai;
                     this.key = key; 
                  }

                  function modelParams(codigo, descricao, filterString){
                     this.codigo = codigo;
                     this.descricao = descricao;
                     this.filterString = filterString;
                  }

                  function clearSelect(inSelect){
                     sLength = inSelect.length
                     if(sLength > 0)
                     {
                         for(i = (sLength -1); i >= 0 ; i--)
                         {
                             inSelect.options[i] = null;


                         }
                     }
                     if (inSelect.length > 0) {
                     	inSelect.options[0].selected=true;
                     }
                  }

                  function contains(array, value)
                  {
                      for (var i=0; i < array.length; i++)
                      {
                          if (array[i] == value)
                          {
                              return true;
                          }
                      }
                      return false;
                  }
                  
                  function filterSelect(inSelect, inFilterString, inData, inCompareAttribute, inFillAttributeCd, inFillAttributeDesc, clearList1, clearList2, clearList3) {
                      var newOptionsIndex = 0;
                  	  	                   
					  if (inSelect.length > 1) {
                          clearSelect(inSelect);
                      }					 	
                      prevValue = "";
                      for (var i = 0; i < inData.length; i++) {
                          var compare = eval("inData[i]." + inCompareAttribute).split(';');
							
                          if (contains(compare, inFilterString)) {
                                  inSelect.options[newOptionsIndex]= new Option(eval("inData[i]." + inFillAttributeDesc), eval("inData[i]." + inFillAttributeCd));
                                  newOptionsIndex++
                          
                             prevValue = eval("inData[i]." + inFillAttributeCd);
                          }
                      }
					  
                      if (clearList1 != null) {clearSelect(clearList1);}
                      if (clearList2 != null) {clearSelect(clearList2);}
                  }    
	//Mascara para CNPJ                  
	function FormataCNPJ(campo, teclapres){
	
        var tecla = teclapres.keyCode;

        var vr = new String(campo.value);
        vr = vr.replace(".", "");
        vr = vr.replace(".", "");
        vr = vr.replace("/", "");
        vr = vr.replace("-", "");

        vr = vr.replace('.', '');
        vr = vr.replace('.', '');
        vr = vr.replace('//', '');
        vr = vr.replace('-', '');

        tam = vr.length + 1 ;

        if (tecla != 9 && tecla != 8){
	        if (tam > 2 && tam < 6)
	                campo.value = vr.substr(0, 2) + '.' + vr.substr(2, tam);
	        if (tam >= 6 && tam < 9)
	                 campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,tam-5);
	          if (tam >= 9 && tam < 13)
	                  campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,tam-8);
	          if (tam >= 13 && tam < 15)
	                  campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,4)+ '-' + vr.substr(12,tam-12);
        }
	}

//Formata CPF
function formataCPF(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);
      vr = vr.replace(".", "");
      vr = vr.replace(".", "");
      vr = vr.replace("-", "");
      tam = vr.length + 1;
	if (tecla != 9 && tecla != 8){
    	if (tam > 3 && tam < 7)
	    	Campo.value = vr.substr(0, 3) + '.' + vr.substr(3, tam);
    	if (tam >= 7 && tam <10)
		    Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
        if (tam >= 10 && tam < 12)
	        Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
	}
}
//Verifica se eh pelo menos um checkbox selecionado
function existemCheckboxesSelecionados() {
	var vazios = 0;
	for (i = 0; i <= document.form1.elements.length-1; i++){
		if(document.form1.elements[i].type == 'checkbox' && document.form1.elements[i].checked)
			vazios++;
	}

	if(vazios == 0)
		return false;
	else
		return true;
}
// Verifica se eh pelo menos um checkbox selecionado
// passando o nomeDoCampo e o objeto Form
function existemCheckboxesSelecionados1(nomeDoCampo, form) {
	var cheios = 0;
	for (i = 0; i <= form.elements.length-1; i++){
		if(form.elements[i].type == 'checkbox' && form.elements[i].checked) {
			if (form.elements[i].name == nomeDoCampo) {  
				cheios++;
			}	
		}	
	}

	if(cheios == 0)
		return false;
	else
		return true;
}


//Formata CPF diretamente no Campo
function formataCPF(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);
      vr = vr.replace(".", "");
      vr = vr.replace(".", "");
      vr = vr.replace("-", "");
      tam = vr.length + 1;
	if (tecla != 9 && tecla != 8){
    	if (tam > 3 && tam < 7)
	    	Campo.value = vr.substr(0, 3) + '.' + vr.substr(3, tam);
    	if (tam >= 7 && tam <10)
		    Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
        if (tam >= 10 && tam < 12)
	        Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
	}
}



//---------------------------------------------------------------
//SELECIONA TODOS OS CHECKBOXES, PASSE A IMAGEM COMO PARAMETRO	
//---------------------------------------------------------------
	var _checado = false;
	function selecionarTodos(imagem) {
		
		// seleciona pressionado
		var sel = document.getElementsByTagName("INPUT");
		_checado = !_checado;
		if (_checado == true) {
			imagem.src='../../Images/Aqua/desmarcar_todos.png';
		}else {
			imagem.src='../../Images/Aqua/selecionar_todos.png';
		}
		for (var i = 0; i < sel.length; i++ ) {			
			if (sel[i].type == "checkbox") {				
				sel[i].checked = _checado;
			}
		}
	}
	
	function formatarInputData(event) {
		var mes, dia, ano;
		var srcElement = event.srcElement;
		dia = srcElement.value.length >=2 ? srcElement.value.substr(0,2) : '';
		mes = srcElement.value.length >=5 ? srcElement.value.substr(3,2) : '';
		ano = srcElement.value.length >=10 ? srcElement.value.substr(6,4) : '';
		if (event.keyCode >=48 && event.keyCode <=57) { 
		}else{ 
			event.keyCode = 8;
			return;
		}
		//dia
		if (srcElement.value.length ==2) {
			srcElement.value = srcElement.value+'/';
		}
		//mes
		if (srcElement.value.length ==5) {
			srcElement.value = srcElement.value+'/';
		}
	}
//----------------------------
//         LISTA
//----------------------------

//ARRAY LIST
	function ArrayList() {
		this.chave;
		this.tamanho = 0;
		this.itens = new Array();
		//m?todos
	}
	
	ArrayList.prototype.add = function (obj) {
		var idx = 0;
			if (this.itens.length == 0) {		
				this.itens[0] = obj;
			}else if (this.itens.length > 0) {
				idx = parseInt(this.itens.length);
				this.itens[idx] = obj;
			}
			this.tamanho++;
	}
		
	ArrayList.prototype.addAll = function (arrayJSON) {
		for (var i = 0 ; i < arrayJSON.length; i++) 
			this.add(arrayJSON[i]);			
	}	
	ArrayList.prototype.get = function(index) {
		if (index >= this.tamanho || parseInt(this.tamanho) == parseInt("0")) {
			return;
		}
		return  this.itens[index];
	}
		
	ArrayList.prototype.remove = function(index) {
		var newArray = new Array();
		var idx = 0;
		for (var i=0; i < this.itens.length; i++) {
			if (i != index)
				newArray[idx++] = this.itens[i];
		}
		this.itens = newArray;
	}
	
	ArrayList.prototype.size = function() {
		return this.itens.length;
	}
	//Retorna um Array(JavaScript) dos elementos
	ArrayList.prototype.toArray = function() {
		return this.itens;
	}
	
//HASH MAP
	function HashMap() {
		this.itens = new Array();
		this.chaves = new Array();
		this.tamanho = 0;
		this.object = null;
		this._hashIndex = 0;
	}
	//Adiciona no Hash uma chave e um objeto ou valor
	HashMap.prototype.put = function(chave, valor) {
		var idx =0;
		var tmpIdx = -1;
		var tmpObj = null;
		
		if (this.tamanho ==0) {
			this.itens[0] = new HashMapObject(chave, valor);;			
			this.chaves[0] = chave;
		}else {	
			tmpObj = this.get(chave);
			if (tmpObj != null)
				this.remove(chave);
				
			this.itens[this.itens.length] = new HashMapObject(chave, valor);
			this.chaves[this.itens.length] = chave;
		}
		this.tamanho = this.itens.length;
	}
	//Obtem um objeto do HashMap pela chave
	HashMap.prototype.get = function(chave) {
		var tmpObject = null;
		var retorno = null;
		for (var iter=0; iter < this.itens.length; iter++) {
			tmpObject = this.itens[iter];
			if (tmpObject != undefined)
				if (tmpObject.chave == chave) {
					retorno = tmpObject.valor;
					break;
				}
		}
		return retorno;
	}
	//Retorna a chave se a encontrar ou retorna -1 caso nao a encontre
	HashMap.prototype.containsKey = function(chave) {
		var tmpObject;
		for (iter=0; iter < this.tamanho; iter++) {
			tmpObject = this.itens[iter];
			if (tmpObject != undefined)
				if (tmpObject.chave == chave)
					return iter;
		}
		return -1;
	}
	
	//Remove um objeto do HashMap atraves de sua chave
	HashMap.prototype.remove = function(chave) {
		var tmpObject;
		var tmpValor;
		var newArray = new Array();
		var newArrayChaves = new Array();
		var idx = 0;
		for (var iter=0; iter < this.itens.length; iter++) {
			tmpObject = this.itens[iter];
			if (tmpObject.chave != chave) {				
				newArray[idx] = tmpObject;
				newArrayChaves[idx] = tmpObject.chave;
				idx++;
			}
		}
		this.itens = newArray;
		this.chaves = newArrayChaves;		
		this.tamanho = this.itens.length;		
	}
	//Limpa todos os elementos do hash
	HashMap.prototype.clear = function() {
		this.itens = [];
		this.tamanho = this.itens.length;
	}
	//Adiciona todos os itens de um hash em outro hash
	HashMap.prototype.putAll = function(otherHashMap) {
		if(otherHashMap instanceof HashMap) {
			var list = otherHashMap.keySet();
			for (var i=0; i < list.size(); i++) {
				var chave = list.get(i);
				var valor = otherHashMap.get(chave);
				this.put(chave, valor);
			}
		}
	}
	//Obtem o tamanho do HashMap
	HashMap.prototype.size = function() {
		return this.itens.length;
	}
	//Obtem uma lista das Chaves
	HashMap.prototype.keySet = function() {
		var lst = new ArrayList();
		for (idx=0; idx < this.chaves.length; idx++) {
			var obj = this.chaves[idx];
			if (obj != undefined && obj !=null)
				lst.add(obj);
		}
		return lst;
	}
	//Obtem uma lista dos Objetos
	HashMap.prototype.values = function() {
		this.collection = new ArrayList();
		for (i=0; i < this.itens.length; i++) {
			this.collection.add(this.itens[i].valor);
		}
		return this.collection;
	}	
	//Objeto to tipo HashMap, server apenas para o hashMap usa-lo
	function HashMapObject(chave, valor) {
		this.chave = chave;
		this.valor = valor;
	}
//----------------------------
//         END LISTA
//----------------------------
	function position(objPos) {
		this.posLeft = 0;
		this.posTop= 0;
		while (objPos.offsetParent) {
			this.posTop+= parseInt(objPos.offsetTop);
			this.posLeft+= parseInt(objPos.offsetLeft);
			objPos = objPos.offsetParent;
		}
		return this;
	}
	function positionOffSet(objPos) {
		this.posLeft = 0;
		this.posTop= 0;		
		var idx = 0;
		this.posTop+= parseInt(objPos.offsetTop)+parseInt(objPos.offsetParent.offsetTop) ;
		this.posLeft+= parseInt(objPos.offsetLeft)+parseInt(objPos.offsetParent.offsetLeft);
//		objPos = objPos.offsetParent;
		return this;
	}
	function addEvent(obj, evType, fn){
		if (obj.addEventListener)
		   obj.addEventListener(evType, fn, true)
		if (obj.attachEvent)
		   obj.attachEvent("on"+evType, fn)
	}

	//Funcao que retorna  o valor da propriedade de uma classe no css
	function cssPropertyValue(objeto, propriedade){
		if (objeto ==undefined || objeto ==null)
			return "";

		var objStyle, nomeDaClasse;
		nomeDaClasse = objeto.className;
		if (nomeDaClasse == '' || nomeDaClasse == null)
			return "";

		if (document.styleSheets[0].cssRules)
			objStyle = eval("document.styleSheets[0].cssRules");
		else if (document.styleSheets[0].rules)
			objStyle = eval("document.styleSheets[0].rules");

		for (i=0; i < objStyle.length; i++) {
			var selectorText = new String(objStyle[i].selectorText);
			if (selectorText.match(nomeDaClasse))
				return eval("objStyle[i].style."+propriedade);
		}
		return "";
	}

//------------------------------
// Fim dos METODOS da tabela
//------------------------------
//------------------------------
// Chame o METODO Redimensiona_Frames(<imagem>, <pastaQueContemAsImagens> ) 
// <img> : nome da figura onde se clica para redimensionar a tela;
// <caminhoDasImagens> : pasta que contem as imagens, exemplo '/tec/Images/Icons/'
//-------------------------------
		var F_MAXIMIZED = 1; F_MINIMIZED = 2;
	    var F_topVisible = true;	    
		var	F_frm = window.parent.document.getElementsByTagName("FRAMESET")[0] != undefined ? window.parent.document.getElementsByTagName("FRAMESET")[0] : null;
  		var F_rowsHeight = F_frm !=null ? F_frm.rows : null;
  		var F_windowState = F_MAXIMIZED;
		
		function RedimensionaFrames(img, caminhoDasImagens, linhasFrame) {
			if (F_topVisible) {
				F_frm.rows = "0, *";
				img.src = caminhoDasImagens+"control_eject_inverse.gif";
				img.title="Exibir Filtros(Topo)";
				F_windowState = F_MAXIMIZED;
			} else {
				if(linhasFrame != null) {
					F_frm.rows = linhasFrame;
				} else {
					F_frm.rows = F_rowsHeight;
				}
				img.src = caminhoDasImagens+"control_eject.gif";				
				img.title="Esconder Filtros";
				F_windowState = F_MINIMIZED;				
			}
			F_topVisible = !F_topVisible;			
			
			return F_windowState;//estado da janela
		}
// <idDoObjeto> : id dado para o div que deve ser redimensionado. Exemplo: 'contas';
// <minAltura> : altura em pixels do div quando o redimensionamento estiver no minimo
// <maxAltura> : altura em pixels do div quando o redimensionamento estiver no maximo
		function RedimensionaDiv(idDoObjeto, minAltura, maxAltura) {
			var dv = document.getElementById(idDoObjeto);
			if (dv ==undefined)
				return '-1';
			if (dv.tagName != 'DIV')
				return '-1';
						
			if (F_windowState == F_MINIMIZED) {
				dv.style.height = minAltura;
				return minAltura;
			}
			if (F_windowState == F_MAXIMIZED) {
				dv.style.height = maxAltura;
				return maxAltura;
			}
		}	    

//------------------------------
//METODOS JSON
//------------------------------
//Criar tabela
   function CriarTabelaJSON(array, objeto) {
   var obj;
   	   for (i=0; i < array.length; i++) {
   	   	    obj = array[i];
   	   	    alert(eval(obj));
   	   }
   }
//--------------------------------

//------------------------------
//METODOS DISPLAY MESSAGE
//------------------------------
//Metodos utilizados no displayMessage
	function hideMessages() {
		if(displayMesssageDiv.divErrorMsg != null) {
			displayMesssageDiv.divErrorMsg.style.display = 'none';
		}
		if(displayMesssageDiv.divSuccessMsg != null) {
			displayMesssageDiv.divSuccessMsg.style.display = 'none';
		}
	}

	function DisplayMesssageDiv() {
		this.divSuccessMsg = null;
		this.divErrorMsg = null;
	}

	//Cria a variavel necessaria para esconder os divs.
	var displayMesssageDiv = new DisplayMesssageDiv();
//Fim metodos displayMessage	

	// Coloca a mascara (dd/MM/yyyy) e valida os campos de data do formulario
	/* exemplo :
		window.onload = function () {
			var mascaraDatas = new MascaraData("form1", new Array("dataVencimentoInicial", "dataVencimentoFinal"));
		}
	*/
	function MascaraData(formName, array) {
		this.lista = array;
		var campo = new Array();
		for (var i=0; i < this.lista.length; i++) {
			campo[i] = eval("document."+formName+"."+ this.lista[i]);
			addEventOnKeyPress(campo[i]);
			addEventOnBlur(campo[i]);
		}
	}
	
	function addEventOnKeyPress(obj) {
		addEvent(obj, 'keypress', function(){mascaraData(obj, event);});
	}
	
	function addEventOnBlur(obj) {
		addEvent(obj, 'blur', function(){confereData(obj, 'Data');});
	}

//MASCARA PARA CAMPOS DATA dd/MM/yyyy
	function mascaraData(campo, event){
	
		var txtRange;
		
		var posCursor = doGetCaretPosition(campo);
		txtRange = document.selection.createRange();
		if (numeroValido(event, 1) !=0) {
			if (txtRange.text != "") {
				event.keyCode=event.keyCode;			
				mascaraDataValida(campo, campo.value)
				return false;
			}	
			valor = campo.value.substr(0,posCursor) + String.fromCharCode(event.keyCode)+campo.value.substr(posCursor, campo.value.length);			
			event.keyCode=8;
			mascaraDataValida(campo, valor);
		}			
	}
	
	function mascaraDataValida(campo,valor) {
		if(valor.length > 10) {
			return false;
		}	
		v = valor;
		v=v.replace(/\D/g,"");

		//dia
		if (v.length == 2) {
			if (!v.match(/^(0[1-9]|1[0-9]|2[0-9]|3[01])$/)) {
				event.keyCode=8;
				return false;
			}	
		}	
		//dia-mes
		if (v.length == 4) {
			if (!v.match(/^(0[1-9]|1[0-9]|2[0-9]|3[01])(0[1-9]|1[012])$/)) {
				event.keyCode=8;
				return false;
			}	
		}	
		//dia-mes-ano
		if (v.length == 8) {
			if (!v.match(/^((([0][1-9]|[12][0-9])02(19|20)([13579][26]|[02468][048]))|(([0][1-9]|[12][0-8])02(19|20)([02468][123567]|[13579][13579]))|((([0][1-9]|[12][0-9]|30)(0[469]|11)|([0][1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|20)[0-9][0-9])))$/)) {
				event.keyCode=8;
				return false;
			}	
		}
		v=v.replace(/^(\d{2})$/,"$1/");
		v=v.replace(/^(\d{2})(\d{1})$/,"$1/$2");
		v=v.replace(/^(\d{2})(\d{2})$/,"$1/$2/");
		v=v.replace(/^(\d{2})(\d{2})(\d{1})$/,"$1/$2/$3");
		v=v.replace(/^(\d{2})(\d{2})(\d{2})$/,"$1/$2/$3");
		v=v.replace(/^(\d{2})(\d{2})(\d{3})$/,"$1/$2/$3");
		v=v.replace(/^(\d{2})(\d{2})(\d{4})$/,"$1/$2/$3");
		campo.value=v;
//		addEvent(campo,'blur', function(){confereData(campo, 'Data de Vencimento Inicial');});
		return true;
				
	}
//Essa funçao retorna a posiçao do cursor no campo(ctrl e igual ao controle/campo)
	function doGetCaretPosition (ctrl) {
    var CaretPos = 0;
    if (document.selection) { //IE
        ctrl.focus ();
        var Sel = document.selection.createRange ();
        Sel.moveStart ('character', -ctrl.value.length);
        CaretPos = Sel.text.length;
    }
    else if (ctrl.selectionStart || ctrl.selectionStart == '0'){ // Firefox
        CaretPos = ctrl.selectionStart;
    }
    return (CaretPos);
}
 
 function teclaEnterPorTab(event) {
 	if (window.event) {
	 	if (event.keyCode ==13)
	 		event.keyCode = 9;
	 }else {
	 	 if (event.which ==13) 
		 	 event.which = 9;
	 }	
 }
 /* So deixa digitar numero no campo. Colocar no evento onkeypress */
 function validaNumero(event){
       if (event.keyCode > 47 && event.keyCode <=57) {
		  } else {
			event.keyCode=8;
		  }  
 }
 //CÓDIGO USADO COM OBJETOS

function JSObject() {
}
JSObject.prototype.finalize = function() {
//	 delete this;
}	
/*********************************
	OBJETO DateUtil(funcoes de datas)
*********************************/
function DateUtil() {

	var objDate = this;
	this.format = 'dd/MM/yyyy';
	this.data = null;
	this.dia = 0;
	this.mes = 0;
	this.ano = 0;
	
	//constantes
	this.INTERVALO_DIA = 'D';
	this.INTERVALO_MES = 'M'; 
	this.INTERVALO_ANO = 'A'; 	
	this.LONG_DIA = 86400000;
	
	this.positionArray = new Array(6,10,3,5,0,2);
	
	//Funcao que obtem uma data	
	this.getData = function(data) {
		if (this.format == 'dd/MM/yyyy') 
			this.positionArray = new Array(6,10,3,5,0,2);
		if (this.format == 'yyyy/MM/dd') 	
			this.positionArray = new Array(0,4,5,7,8,10);		
		try {
			var i = this.positionArray;	
			return new Date(data.substring(i[0],i[1]),data.substring(i[2],i[3])-1,data.substring(i[4],i[5]));
		}catch(err){
			return null;
		}	
	}
	//Funcao que valida uma data
	//Retorna true se a data for valida
	//Exemplo: obj.isValid('13/12/2006');	
	this.isValid = function(data) {
		var dt = this.getData(data);
		if (dt !=null)
			return true;
		return false;	
	}	
}
//Funcao que calcula a diferença entre datas de acordo com o intervalo(dias, meses, anos)
//Exemplo obj.diferencaEntreDatas('01/12/2006', '01/01/2007'), obj.INTERVALO_DIA);
DateUtil.prototype.diferencaEntreDatas = function(data1, data2, intervalo) {
	try {
		var data1Nova = this.getData(data1);
		var data2Nova = this.getData(data2);
		
		var faixa = parseInt(parseFloat(data2Nova.getTime() - data1Nova.getTime())/this.LONG_DIA);
		return faixa;
	}catch(err) {
		return 0;
	}
}
/*****************************
	OBJETO BROWSER
	Deteccao do Broswer
******************************/

function BrowserType() {
	this.agent = navigator.userAgent.toLowerCase();
	
    this.isWin = this.agent.indexOf( "win" ) > 0;
    this.isUNIX = this.agent.indexOf( "x11" ) > 0;
    this.isMac = this.agent.indexOf( "mac" ) > 0;
    this.isOpera = this.agent.indexOf("opera") > -1;
    this.isAOL = this.agent.indexOf( "aol" ) > 0;
    this.isIE = this.agent.indexOf( "msie" ) > 0;
    this.isNS6 = this.agent.indexOf( "netscape6" ) > 0;
    this.isGecko = this.agent.indexOf( "gecko" ) > 0;
    this.isWinCE = this.agent.indexOf( "windows ce" ) > 0;
    this.isNS4 = ( document.layers ) ? true : false;

    this.iWidth = window.screen.width;
    this.iHeight = window.screen.height;
    
/*****************************
	Funcao centralizadora do redirecionador
******************************/
    this.Redirect = function(sURL) {
		window.location.href = sURL;	
	}
	
	this.getBrowserType = function() {
		return (this.WinCE ?  BROWSER_TYPE_PDA : BROWSER_TYPE_DESKTOP);	
	}
	
}
function HTMLElement() {
//CRIA E RETORNA O INPUT COM SUAS PROPRIEDADES
	this.createInput = function(propriedades) {
		var input = document.createElement('input');
		for (prp in propriedades) {
			var obj = eval('input.'+prp);
			var prpValue =  eval('propriedades.'+prp);			
			if(obj != undefined) {				
				if (prp == 'style') {
					for(prpStyle in prpValue) {						
						var prpStyleValue =  eval('propriedades.'+prp+'.'+prpStyle);
						eval("input."+prp+"."+prpStyle +"= prpStyleValue");
					}
				}else{
					eval("input."+prp+"= prpValue") ;
				}	
			}	
		}
		return input;
	}	
	this.createTextArea = function(propriedades) {
		var input = document.createElement('textarea');
		for (prp in propriedades) {
			var obj = eval('input.'+prp);
			var prpValue =  eval('propriedades.'+prp);
			if(obj != undefined)
				eval("input."+prp+"= prpValue") ;
		}
		return input;
	}
	this.createElement = function(elementType, propriedades) {
		var input = document.createElement(elementType);
		for (prp in propriedades) {
			var obj = eval('input.'+prp);
			var prpValue =  eval('propriedades.'+prp);
			if(obj != undefined) {
				if (prp == 'style') {
					for(prpStyle in prpValue) {						
						var prpStyleValue =  eval('propriedades.'+prp+'.'+prpStyle);
						eval("input."+prp+"."+prpStyle +"= prpStyleValue");
					}
				}else {
					eval("input."+prp+"= prpValue") ;
				}	
			}	
		}
		return input;
	}
	//Retorna um campo do formulario atraves do nome do formulario e do nome do campo
	//Retorna null caso nao encontre o elemento ou nao seja um formulario valido
	this.getElementByForm = function(nomeForm, nomeCampo) {
		var frm  = eval(nomeForm);
		if (frm == undefined)
			return null;
			
		for (var i = 0; i < frm.elements.length; i++)  
			if(frm.elements[i].name == nomeCampo)
				return frm.elements[i];
		return null;		
	} 	
	
	this.getElementsByMatchName = function(textoNome) {
		var objRetorno = [];
		for (var i=0; i < document.all.length; i++) 
			if (document.all[i].name)
				if (new String(document.all[i].name).match(textoNome))
					objRetorno[objRetorno.length] = document.all[i];
		return objRetorno;
	}
	
	this.ehUltimoItemInSelect = function(objetoSelect) {
		if (objetoSelect.tagName != 'SELECT')
			return false;
		if (objetoSelect.selectedIndex == objetoSelect.options.length - 1)
			return true;
		return false;
	}	
	
	this.ehPrimeiroItemInSelect = function(objetoSelect) {
		if (objetoSelect.tagName != 'SELECT')
			return false;
		if (objetoSelect.selectedIndex == 0)
			return true;
		return false;
	}
	
	this.getIndexInSelect = function(valor, objetoSelect) {
		if (objetoSelect.tagName != 'SELECT')
			return -1;
		for (var i =0; i < objetoSelect.options.length; i++) {			
			if (valor == objetoSelect.options[i].value)
				return i;
		}		
		return -1;
	}
	//Remove todos os elementos com o nome especificado
	this.removeElementsByName = function(nomeDoElemento) {
		var elementos = document.getElementsByName(nomeDoElemento);
		alert(elementos.length);
		var elementoPai = null;
		for (var i=0; i < elementos.length; i++) {
			//elementoPai = elementos[i].parentNode;
			alert(elementos[i]);
		}
	}
}


/*****************************
	OBJETO TABLE
******************************/

/*****************************
	OBJETO TagLibrary
******************************/
function TagLibrary() {

}
  TagLibrary.prototype.tags = function() {
  	  this.tag = this;
  	  this.getPaginaton = new Pagination(this.tag);
  }
  
	function Pagination(tagLibrary) {
		this.idObjectPage = 'PAGINATION_PAGE_';
		this.targetDiv;//String
		this.rangePage;
		this.tablePages = document.getElementById(this.targetDiv).childNodes[0];
		//Array com todas os indices das paginas
		this.getPages = function(tablePages, idObjectPage) {
			var arr = new Array();
			var idx = 0;
			for (var x=0; x < tablePages.rows[0].cells.length; x++) {
				if (x > 0 && x <  tablePages.rows[0].cells.length-1) {
					arr[idx++] = new String(tablePages.rows[0].cells[x].id).replace(idObjectPage, "");
				}
			}
			return arr;
		}
		//Retorna um objeto page(o link representado pela ta 'A')
		this.getPage = function(page) {
			return document.getElementById(this.idObjectPage+page);
		}
	}  
  
  
  function validarIp(campo) { 
    
    var ip = campo.value;
    if (ip.length < 1) {
	    return false;
    }
    partes = ip.split('.'); 
    
    if (partes.length!=4) { 
		alert('Endereço Inválido');
		campo.value = '';
		campo.focus();
        return false; 
    } 
    
    for (i=0;i<4;i++) {  
        num=partes[i]; 
        if (num>255 || num<0 || num.length==0 || isNaN(num)){ 
    	    alert('Endereço Inválido');
    	    campo.value = '';
    	    campo.focus();
    	    return false; 
        } 
	} 
	
	return true;
}  

function abrirJanela(url, width, height, sName){ //Se "sName" nao for passado como parametro, sName é igual a null 
	var left = (screen.width - width) / 2;
	var top = (screen.height - height) / 2;
	var w = window.open(url, sName, "width=" + width + "px, height=" + height + "px, top=" + top + "px, left=" + left + "px, scrollbars, resizable, status=1");
	return w;
}

function abrirJanelaMaximizada(url, sName){
	var height = screen.availHeight - screen.availHeight * 0.08; //Diminui 8% da altura da tela
	var width = screen.availWidth - screen.availHeight * 0.02;  //Diminui 2% da largura da tela
	var left = (screen.width - width) / 2;
	var top = ( (screen.height - height) / 2 ) -  screen.availHeight * 0.10; //Posiciona a janela no topo a 10% (barra Iniciar)
	
	//evita maximizar quando o usuario possuir telas muito grandes		
	if (height > 768) {
		height= 768;
	}
	if (width > 1024) {
		width = 1024;
	}
	
		
    var w = window.open(url,sName,"width=" + width + "px, height=" + height + "px, top=" + top + "px, left=" + left + "px, scrollbars, resizable, status=1");
	w.moveTo(0,0);
	return w;
}

function verificaHora(campo){
	
	hora = campo.value;
	//valida as horas do campo
	if (hora >= 00 && hora <= 23) {			
		hora = new String(hora);
		campo.value = hora;
	} else {
		alert("Hora inválida ! Formato necessário de 00hs a 23hs");
		campo.value = "";
		return; 
	}  
}

function verificaMinutos(campo){
	
	min = campo.value;
	//valida os minutos do campo
	if (min >= 00 && min <= 59) {			
		min = new String(min);
		campo.value = min;
	} else {
		alert("Minutos inválidos ! Formato necessário de 00min a 59min");
		campo.value = "";
		return; 
	}  
}
  
   
