// JavaScript Document

// JavaScript Document

var OrdZero = '0'.charCodeAt(0);

function CharToInt(ch) {  
	return ch.charCodeAt(0) - OrdZero;
}


function IntToChar(intt) {
return String.fromCharCode(intt + OrdZero);
}


function CheckIEAC(ie){
if (ie.length != 13)
return false;
var b = 4, soma = 0;

for (var i = 0; i <= 10; i++)
{
soma += CharToInt(ie.charAt(i)) * b;
--b;
if (b == 1) { b = 9; }
}
dig = 11 - (soma % 11);
if (dig >= 10) { dig = 0; }
resultado = (IntToChar(dig) == ie.charAt(11));
if (!resultado) { return false; }

b = 5;
soma = 0;
for (var i = 0; i <= 11; i++)
{
soma += CharToInt(ie.charAt(i)) * b;
--b;
if (b == 1) { b = 9; }
}
dig = 11 - (soma % 11);
if (dig >= 10) { dig = 0; }
if (IntToChar(dig) == ie.charAt(12)) { return true; } else { return false; }
} //AC


function CheckIEAL(ie)
{
if (ie.length != 9)
  return false;
var b = 9, soma = 0;
for (var i = 0; i <= 7; i++)
{
   soma += CharToInt(ie.charAt(i)) * b;
   --b;
}
soma *= 10;
dig = soma - Math.floor(soma / 11) * 11;
if (dig == 10) { dig = 0; }
return (IntToChar(dig) == ie.charAt(8));
} //AL


function CheckIEAM(ie)
{
if (ie.length != 9)
  return false;
var b = 9, soma = 0;
for (var i = 0; i <= 7; i++)
{
  soma += CharToInt(ie.charAt(i)) * b;
  b--;
}
if (soma < 11) { dig = 11 - soma; }
else {
   i = soma % 11;
   if (i <= 1) { dig = 0; } else { dig = 11 - i; }
}
return (IntToChar(dig) == ie.charAt(8));
} //am


function CheckIEAP(ie)
{
if (ie.length != 9)
  return false;
var p = 0, d = 0, i = ie.substring(1, 8);
if ((i >= 3000001) && (i <= 3017000))
{
  p =5;
  d = 0;
}
else if ((i >= 3017001) && (i <= 3019022))
{
  p = 9;
  d = 1;
}
b = 9;
soma = p;
for (var i = 0; i <= 7; i++)
{
  soma += CharToInt(ie.charAt(i)) * b;
  b--;
}
dig = 11 - (soma % 11);
if (dig == 10)
{
   dig = 0;
}
else if (dig == 11)
{
   dig = d;
}
return (IntToChar(dig) == ie.charAt(8));
} //ap


function CheckIEBA(ie)
{
if (ie.length != 8)
  return false;
die = ie.substring(0, 8);
var nro = new Array(8);
var dig = -1;
for (var i = 0; i <= 7; i++)
{
  nro[i] = CharToInt(die.charAt(i));
}
var NumMod = 0;
if (String(nro[0]).match(/[0123458]/))
   NumMod = 10;
else
   NumMod = 11;
b = 7;
soma = 0;
for (i = 0; i <= 5; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % NumMod;
if (NumMod == 10)
{
  if (i == 0) { dig = 0; } else { dig = NumMod - i; }
}
else
{
  if (i <= 1) { dig = 0; } else { dig = NumMod - i; }
}
resultado = (dig == nro[7]);
if (!resultado) { return false; }
b = 8;
soma = 0;
for (i = 0; i <= 5; i++)
{
  soma += nro[i] * b;
  b--;
}
soma += nro[7] * 2;
i = soma % NumMod;
if (NumMod == 10)
{
  if (i == 0) { dig = 0; } else { dig = NumMod - i; }
}
else
{
  if (i <= 1) { dig = 0; } else { dig = NumMod - i; }
}
return (dig == nro[6]);
} //ba


function CheckIECE(ie)
{
if (ie.length > 9)
  return false;
die = ie;
if (ie.length < 9)
{
  while (die.length <= 8)
   die = '0' + die;
}
var nro = Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(die[i]);
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
dig = 11 - (soma % 11);
if (dig >= 10)
  dig = 0;
return (dig == nro[8]);
} //ce


function CheckIEDF(ie)
{
if (ie.length != 13)
  return false;
var nro = new Array(13);
for (var i = 0; i <= 12; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 4;
soma = 0;
for (i = 0; i <= 10; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 1)
   b = 9;
}
dig = 11 - (soma % 11);
if (dig >= 10)
  dig = 0;
resultado = (dig == nro[11]);
if (!resultado)
  return false;  
b = 5;
soma = 0;
for (i = 0; i <= 11; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 1)
   b = 9;
}
dig = 11 - (soma % 11);
if (dig >= 10)
  dig = 0;
return (dig == nro[12]);
}


// CHRISTOPHE T. C. <wG @ codingz.info>
function CheckIEES(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i < 2)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
}


function CheckIEGO(ie)
{
if (ie.length != 9)
  return false;
s = ie.substring(0, 2);
if ((s == '10') || (s == '11') || (s == '15'))
{
  var nro = new Array(9);
  for (var i = 0; i <= 8; i++)
   nro[i] = CharToInt(ie.charAt(i));
  n = Math.floor(ie / 10);
  if (n = 11094402)
  {
   if ((nro[8] == 0) || (nro[8] == 1))
return true;
  }
  b = 9;
  soma = 0;
  for (i = 0; i <= 7; i++)
  {
   soma += nro[i] * b;
   b--;
  }
  i = soma % 11;
  if (i == 0)
   dig = 0;
  else
  {
   if (i == 1)
   {
if ((n >= 10103105) && (n <= 10119997))
  dig = 1;
else
  dig = 0;
   }
   else
dig = 11 - i;
  }
  return (dig == nro[8]);
}
}


function CheckIEMA(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
}


function CheckIEMT(ie)
{
if (ie.length < 9)
  return false;
die = ie;
if (die.length < 11)
{
  while (die.length <= 10)
   die = '0' + die;
  var nro = new Array(11);
  for (var i = 0; i <= 10; i++)
   nro[i] = CharToInt(die[i]);
  b = 3;
  soma = 0;
  for (i = 0; i <= 9; i++)
  {
   soma += nro[i] * b;
   b--;
   if (b == 1)
b = 9;
  }
  i = soma % 11;
  if (i <= 1)
   dig = 0;
  else
   dig = 11 - i;
  return (dig == nro[10]);
}
} //muito


function CheckIEMS(ie)
{
if (ie.length != 9)
  return false;
if (ie.substring(0,2) != '28')
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
} //ms


function CheckIEPA(ie)
{
if (ie.length != 9)
  return false;
if (ie.substring(0, 2) != '15')
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
} //pra


function CheckIEPB(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;  
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
} //pb


function CheckIEPR(ie)
{
if (ie.length != 10)
  return false;
var nro = new Array(10);
for (var i = 0; i <= 9; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 3;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 1)
   b = 7;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
resultado = (dig == nro[8]);
if (!resultado)
  return false;
b = 4;
soma = 0;
for (i = 0; i <= 8; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 1)
   b = 7;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[9]);
} //pr


function CheckIEPE(ie)
{
if (ie.length != 14)
  return false;
var nro = new Array(14);
for (var i = 0; i <= 13; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 5;
soma = 0;
for (i = 0; i <= 12; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 0)
   b = 9;
}
dig = 11 - (soma % 11);
if (dig > 9)
  dig = dig - 10;
return (dig == nro[13]);
} //pe


function CheckIEPI(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
} //pi


function CheckIERJ(ie)
{
if (ie.length != 8)
  return false;
var nro = new Array(8);
for (var i = 0; i <= 7; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 2;
soma = 0;
for (i = 0; i <= 6; i++)
{
  soma += nro[i] * b;
  b--;
  if (b == 1)
   b = 7;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[7]);
} //rj


// CHRISTOPHE T. C. <wG @ codingz.info>
function CheckIERN(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
soma *= 10;
dig = soma % 11;
if (dig == 10)
  dig = 0;
return (dig == nro[8]);
} //rn


function CheckIERS(ie)
{
if (ie.length != 10)
  return false;
i = ie.substring(0, 3);
if ((i >= 1) && (i <= 467))
{
  var nro = new Array(10);
  for (var i = 0; i <= 9; i++)
   nro[i] = CharToInt(ie.charAt(i));
  b = 2;
  soma = 0;
  for (i = 0; i <= 8; i++)
  {
   soma += nro[i] * b;
   b--;
   if (b == 1)
b = 9;
  }
  dig = 11 - (soma % 11);
  if (dig >= 10)
   dig = 0;
  return (dig == nro[9]);
} //if i&&i
} //rs


function CheckIEROantigo(ie)
{
if (ie.length != 9) {
return false;
}

var nro = new Array(9);
b=6;
soma =0;

for( var i = 3; i <= 8; i++) {

    nro[i] = CharToInt(ie.charAt(i));

        if( i != 8 ) {
            soma = soma + ( nro[i] * b );
            b--;
        }

}

dig = 11 - (soma % 11);
if (dig >= 10)
  dig = dig - 10;

return (dig == nro[8]);

} //ro-antiga


function CheckIERO(ie)
{

if (ie.length != 14) {
return false;
}

var nro = new Array(14);
b=6;
soma=0;

        for(var i=0; i <= 4; i++) {
    
            nro[i] = CharToInt(ie.charAt(i));

        
                soma = soma + ( nro[i] * b );
                b--;

        }

        b=9;
        for(var i=5; i <= 13; i++) {
    
            nro[i] = CharToInt(ie.charAt(i));

                if ( i != 13 ) {        
                soma = soma + ( nro[i] * b );
                b--;
                }

        }

                        dig = 11 - ( soma % 11);
                            
                            if (dig >= 10)
                                  dig = dig - 10;

                                    return(dig == nro[13]);
                        
} //ro nova


function CheckIERR(ie)
{
if (ie.length != 9)
  return false;
if (ie.substring(0,2) != '24')
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
var soma = 0;
var n = 0;
for (i = 0; i <= 7; i++)
  soma += nro[i] * ++n;
dig = soma % 9;
return (dig == nro[8]);
} //rr


function CheckIESC(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
i = soma % 11;
if (i <= 1)
  dig = 0;
else
  dig = 11 - i;
return (dig == nro[8]);
} //sc


// CHRISTOPHE T. C. <wG @ codingz.info>
function CheckIESP(ie)
{
if (((ie.substring(0,1)).toUpperCase()) == 'P')
{
  s = ie.substring(1, 9);
  var nro = new Array(12);
  for (var i = 0; i <= 7; i++)
   nro[i] = CharToInt(s[i]);
  soma = (nro[0] * 1) + (nro[1] * 3) + (nro[2] * 4) + (nro[3] * 5) +
   (nro[4] * 6) + (nro[5] * 7) + (nro[6] * 8) + (nro[7] * 10);
  dig = soma % 11;
  if (dig >= 10)
   dig = 0;
  resultado = (dig == nro[8]);
  if (!resultado)
   return false;
}
else
{
  if (ie.length < 12)
   return false;
  var nro = new Array(12);
  for (var i = 0; i <= 11; i++)
   nro[i] = CharToInt(ie.charAt(i));
  soma = (nro[0] * 1) + (nro[1] * 3) + (nro[2] * 4) + (nro[3] * 5) +
   (nro[4] * 6) + (nro[5] * 7) + (nro[6] * 8) + (nro[7] * 10);
  dig = soma % 11;
  if (dig >= 10)
   dig = 0;
  resultado = (dig == nro[8]);
  if (!resultado)
   return false;
  soma = (nro[0] * 3) + (nro[1] * 2) + (nro[2] * 10) + (nro[3] * 9) +
   (nro[4] * 8) + (nro[5] * 7) + (nro[6] * 6)  + (nro[7] * 5) +
   (nro[8] * 4) + (nro[9] * 3) + (nro[10] * 2);
  dig = soma % 11;
  if (dig >= 10)
   dig = 0;
  return (dig == nro[11]);
}
} //sp


function CheckIESE(ie)
{
if (ie.length != 9)
  return false;
var nro = new Array(9);
for (var i = 0; i <= 8; i++)
  nro[i] = CharToInt(ie.charAt(i));
b = 9;
soma = 0;
for (i = 0; i <= 7; i++)
{
  soma += nro[i] * b;
  b--;
}
dig = 11 - (soma % 11);
if (dig >= 10)
  dig = 0;
return (dig == nro[8]);
} //se


function CheckIETO(ie)
{
if (ie.length != 9) {
return false;
}

var nro = new Array(9);
b=9;
soma=0;

for (var i=0; i <= 8; i++ ) {

nro[i] = CharToInt(ie.charAt(i));

if(i != 8) {
soma = soma + ( nro[i] * b );
b--;
}


}

ver = soma % 11;

if ( ver < 2 )

dig=0;

if ( ver >= 2 )
dig = 11 - ver;

return(dig == nro[8]);
} //to


//inscrição estadual antiga
function CheckIETOantigo(ie)
{

if ( ie.length != 11 ) {
    return false;

}


var nro = new Array(11);
b=9;
soma=0;

s = ie.substring(2, 4);

    if( s != '01' || s != '02' || s != '03' || s != '99' ) {


        for ( var i=0; i <= 10; i++)
        {

            nro[i] = CharToInt(ie.charAt(i));    

            if( i != 3 || i != 4) {

            soma = soma + ( nro[i] * b );
            b--;
            
            } // if ( i != 3 || i != 4 )

        } //fecha for


            resto = soma % 11;        
            
                if( resto < 2 ) {    

                    dig = 0;

                }


                if ( resto >= 2 ) {

                    dig = 11 - resto;

                }            

                return (dig == nro[10]);

    } // fecha if


}//fecha função CheckIETOantiga


function CheckIEMG(ie)
{
if (ie.substring(0,2) == 'PR')
  return true;
if (ie.substring(0,5) == 'ISENT')
  return true;
if (ie.length != 13)
  return false;
dig1 = ie.substring(11, 12);
dig2 = ie.substring(12, 13);
inscC = ie.substring(0, 3) + '0' + ie.substring(3, 11);
insc=inscC.split('');
npos = 11;
i = 1;
ptotal = 0;
psoma = 0;
while (npos >= 0)
{
  i++;
  psoma = CharToInt(insc[npos]) * i;  
  if (psoma >= 10)
   psoma -= 9;
  ptotal += psoma;
  if (i == 2)
   i = 0;
  npos--;
}
nresto = ptotal % 10;
if (nresto == 0)
  nresto = 10;
nresto = 10 - nresto;
if (nresto != CharToInt(dig1))
  return false;
npos = 11;
i = 1;
ptotal = 0;
is=ie.split('');
while (npos >= 0)
{
  i++;
  if (i == 12)
   i = 2;
  ptotal += CharToInt(is[npos]) * i;
  npos--;
}
nresto = ptotal % 11;
if ((nresto == 0) || (nresto == 1))
  nresto = 11;
nresto = 11 - nresto;  
return (nresto == CharToInt(dig2));
}


function CheckIE(ie, estado) {
ie = ie.replace(/\./g, '');
ie = ie.replace(/\\/g, '');
ie = ie.replace(/\-/g, '');
ie = ie.replace(/\//g, '');
if ( ie == 'ISENTO')
  return true;
	switch (estado)
	{
		case 'MG': return CheckIEMG(ie); break;
		case 'AC': return CheckIEAC(ie); break;
		case 'AL': return CheckIEAL(ie); break;
		case 'AM': return CheckIEAM(ie); break;
		case 'AP': return CheckIEAP(ie); break;
		case 'BA': return CheckIEBA(ie); break;
		case 'CE': return CheckIECE(ie); break;
		case 'DF': return CheckIEDF(ie); break;
		case 'ES': return CheckIEES(ie); break;
		case 'GO': return CheckIEGO(ie); break;
		case 'MA': return CheckIEMA(ie); break;
		case 'MT': return CheckIEMT(ie); break;
		case 'MS': return CheckIEMS(ie); break;
		case 'pra': return CheckIEPA(ie); break;
		case 'PB': return CheckIEPB(ie); break;
		case 'PR': return CheckIEPR(ie); break;
		case 'PE': return CheckIEPE(ie); break;
		case 'PI': return CheckIEPI(ie); break;
		case 'RJ': return CheckIERJ(ie); break;
		case 'RN': return CheckIERN(ie); break;
		case 'RS': return CheckIERS(ie); break;
		case 'RO': return ((CheckIERO(ie)) || (CheckIEROantigo(ie))); break;
		case 'RR': return CheckIERR(ie); break;
		case 'SC': return CheckIESC(ie); break;
		case 'SP': return CheckIESP(ie); break;
		case 'SE': return CheckIESE(ie); break;
		case 'TO': return ((CheckIETO(ie)) || (CheckIETOantigo(ie))); break;//return CheckIETO(ie); break;        
	}
}

function strtrim(str) {
   //Match spaces at beginning and end of text and replace
   //with null strings
   return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

/** 
 * Função fg_bln_validar_obrigatorio
 *
 * Checa se um campo obrigatorio possui algum valor. Caso não possua, avisa o usuário e seta o foco naquele campo.
 * Os parâmetros passados são:
 * vl_obj_campo_formulario               => Campo do formulario para checagem. Ex.: form1.field1
 * vtitulo_campo                          => Nome do campo na interface para o retorno da função. Ex.: "Nome"
 *
 * @access public
 * @author Gianfranco Zucoloto <zucoloto@casetecnologia.com.br>
 * @copyright Copyright&copy; 2003, CASE Tecnologia
 * @param object vl_obj_campo_formulario Campo do formulario html a ser checado. Ex.: form1.field1
 * @param string vtitulo_campo Título do campo na interface para o retorno da função. Ex.: "Nome"
 * @version 0.1
 * @return boolean Retorna true caso o campo esteja preenchido. Senão, um popup o avisará.
 * @todo
 */
function fg_bln_validar_obrigatorio(vl_obj_campo_formulario,vtitulo_campo)
{
  var vg_bln_resultado = true;

  if (strtrim(vl_obj_campo_formulario.value) == "")
  {
    alert('Por favor informe um valor para o campo "' + vtitulo_campo +'".');
    vl_obj_campo_formulario.focus();
    vg_bln_resultado = false;
  }
  
  return vg_bln_resultado;
}

/*
 * funcao fecharAviso
 
 * verifica se ha alguma id com o valor e oculta a mesma
 * autor: Renato Medina
 * data: 11/01/2006
*/
// fecha o alerta da execucao
function fecharAviso()
{
	if(null != $id("alertas"))
		$id("alertas").style.display = 'none';
}

/*
 * funcao fg_bln_validar_campos_iguais
 
 * verifica se os campos estao preenchidos e, caso sim, se sao iguais
 * autor: Renato Medina
 * data: 13/01/2006
*/
function fg_bln_validar_campos_iguais(vl_obj_campo_1,vl_obj_campo_2,vl_obj_titulo_campo_1, vl_obj_titulo_campo_2)
{
	var vg_bln_resultado = true;
	
	// verifica antes se os campos estao preenchidos
	if(!fg_bln_validar_obrigatorio(vl_obj_campo_1, vl_obj_titulo_campo_1))
		return false;
	else if(!fg_bln_validar_obrigatorio(vl_obj_campo_2, vl_obj_titulo_campo_2))
		return false;
		
	else {
		if(vl_obj_campo_1.value != vl_obj_campo_2.value) {
			alert('Os valores dos campos "'+vl_obj_titulo_campo_1+'" e "'+vl_obj_titulo_campo_2+'" não correspondem');
			vl_obj_campo_1.value = ""; // limpa o campo 1
			vl_obj_campo_2.value = ""; // limpa o campo 2
			vl_obj_campo_1.focus(); // coloca em foco
			
			vg_bln_resultado = false;
		}
	}
	return vg_bln_resultado; // retorna o resultado
}

/*
 *	Eu num vo explicar nada naum.. se vc num entender isso ai de baixo vai 
 * estudar js q vc num sabe nada.... seu burro
 * POR RENATO MEDINA 09/2006
*/
function fg_bln_validar_acao(e)
{
	if(confirm("Tem certeza que deseja executar essa ação?"))
		return true;
	else
		return cancelEvent(e);
}

/**
 * function mask(_mask, val)
 *
 * _mask = Mascara Exemplo: ##/##/#### ou ###.###.###-##
 * val   = Valor a ser formatado.
 *
 * Formata um valor  para a mascara definida.
 *
 */
function mask(_mask, val, maximo) {
	var i, mki;
	var aux="";
	for(i=mki=0; i<val.length; i++, mki++) {
                        if(_mask.charAt(mki)=='' || _mask.charAt(mki)=='#' || _mask.charAt(i)==val.charAt(i)) {
                                aux+=val.charAt(i);
                        } else {
                                aux+=_mask.charAt(mki)+val.charAt(i);
                                mki++;
                        }
                }
	return aux;
}

/**
 * function fg_bln_format(field, _mask, event)
 *
 * field = Objeto que esta enviando o evendo onKeyPress()
 * _mask = Mascara Exemplo: ##/##/#### ou ###.###.###-##
 * event = Evento a ser observado.
 *
 * Formata um valor para a mascara definida conforma o valor vai sendo digitado.
 *
 */
function fg_bln_formata(e) {
	var field = getSource(e); // campo
	var _mask = field.title; // mascara
	var maximo = parseInt(field.title.length); // tamanho maximo para exibicao 
	var strCheck = '0123456789';
	var rcode = getKeyCode(e);
	var aux = '';

	if(rcode < 20)
		return true;
	
	if(rcode == 9)
		field.form[(getIndex(field)+1) % field.form.length].focus();

	key=String.fromCharCode(rcode);

	if(strCheck.indexOf(key)==-1)
		return cancelEvent(e);

	if(field.value.length < maximo)
		aux = field.value+key;
	else
		return cancelEvent(e);

	aux = mask(_mask,aux,maximo);
	field.value = aux;

	return cancelEvent(e);
}

/**
 * Função fg_bln_validar_data
 *
 * Checa se o valor de um campo é uma data escrita no formato DD/MM/AAAA. Caso não seja, avisa o usuário e seta o foco naquele campo.
 * Como opcional, também pode checar se o campo é obrigatório. Verifica dias de acordo com meses e se o ano é bissexto para o dia mes.
 * Os parâmetros passados são:
 * vl_obj_campo_formulario 	=> Campo do formulario para checagem. Ex.: form1.field1
 * vtitulo_campo 		=> Nome do campo na interface para o retorno da função. Ex.: "Data"
 * vl_bln_obrigatorio 		=> Diz se o campo também é obrigatório ou não.
 * bissexto			 		=> Variavel do bissexto, determina o dia de fevereiro. 
 *
 * @access public
 * @author Gianfranco Zucoloto <zucoloto@casetecnologia.com.br>
 * @copyright Copyright&copy; 2003, CASE Tecnologia
 * @param object vl_obj_campo_formulario Campo do formulario html a ser checado. Ex.: form1.field1
 * @param string vtitulo_campo Título do campo na interface para o retorno da função. Ex.: "Data"
 * @param boolean vl_bln_obrigatorio True para campo obrigatorio e False para opcional
 * @param string vg_str_resultado Caso haja erro ele é preenchido e cria mensagem de retorno.
 * @version 0.1
 * @uses function fg_bln_validar_obrigatorio
 * @return boolean Retorna true caso o campo esteja preenchido e válido. Senão, um popup o avisará.
 * @todo
 */
function fg_bln_validar_data(vl_obj_campo_formulario,vtitulo_campo,vl_bln_obrigatorio)
{
	var vg_bln_resultado = true;
	var vg_str_resultado = false;
	var bissexto;
	
	if (vl_bln_obrigatorio)
	{
		if (!fg_bln_validar_obrigatorio(vl_obj_campo_formulario,vtitulo_campo))
			vg_bln_resultado = false;
	}
	
	if (vl_bln_obrigatorio==true && vg_bln_resultado==true)
	{
		var elems = vl_obj_campo_formulario.value;
	
		if (elems.length == 10)
		{
			elems = elems.split('/');
			
			var day = parseInt(elems[0],10);
			var month = parseInt(elems[1],10);
			var year = parseInt(elems[2],10);
			bissexto=(((year%4)==0&&(year%100)!=0)||(year%400)==0)?29:28; // data fevereiro
	
			if(month==4 || month==6 || month==9 || month==11)
			{
				if(day>30)
					vg_str_resultado = 'Data inválida. Verifique os valores digitados.';
			}
			// caso fevereiro
			if(month==02 && day>bissexto)
				vg_str_resultado = 'Data inválida para o mes de fevereiro, digite até 28.';
			
			// caso uma data inválida
			if(month>12 || day>31 || month<1 || day<1)
				vg_str_resultado = 'Data inválida. Verifique os valores digitados.';	
		}
		else
		{
			vg_str_resultado = 'Data inválida. Preencha no formato dd/mm/aaaa.';
		}	  
		
		if (!vl_bln_obrigatorio && vl_obj_campo_formulario.value == "") 
		{ 
			vg_bln_resultado = true;
		}
	
		if (vg_str_resultado)
		{
			alert(vg_str_resultado);
			vl_obj_campo_formulario.focus();
			vg_bln_resultado = false;
		}
		else
			vg_bln_resultado = true;
	}
	
	return vg_bln_resultado;
}

// function soNumsInt
// Função que permite apenas teclas numéricas
// Se o código for menor que 20 é porque deve ser caracteres de controle
// ex.: <ENTER>, <TAB>, <BACKSPACE> portanto devemos permitir
// as teclas numéricas vão de 48 a 57
function soNumsInt(e)
{       
	var field = getSource(e); // campo
	var aux = '';
	
	var rcode = getKeyCode(e);
	key=String.fromCharCode(rcode);

	if (rcode <20 || (rcode >47 && rcode<58))
		aux = field.value+key;
	else
		return cancelEvent(e);
} 

// function soNumsInt
// Função que permite apenas teclas numéricas e 
// todos os caracteres que estiverem na lista
// de argumentos.
// Se o código for menor que 20 é porque deve ser caracteres de controle
// ex.: <ENTER>, <TAB>, <BACKSPACE> portanto devemos permitir
// as teclas numéricas vão de 48 a 57
function soNumsFlt(e)
{       
	var field = getSource(e); // campo
	var args = ',.';
	var aux = '';
	
	var rcode = getKeyCode(e);
	key=String.fromCharCode(rcode);

	if (rcode <20 || (rcode >47 && rcode<58) || (args.indexOf(key)>-1 ) )
		aux = field.value+key;
	else
		return cancelEvent(e);
} 

function replace(argvalue, x, y) {

  if ((x == y) || (parseInt(y.indexOf(x)) > -1)) {
    errmessage = "replace function error: \n";
    errmessage += "Second argument and third argument could be the same ";
    errmessage += "or third argument contains second argument.\n";
    errmessage += "This will create an infinite loop as it's replaced globally.";
    alert(errmessage);
    return false;
  }

  while (argvalue.indexOf(x) != -1) {
    var leading = argvalue.substring(0, argvalue.indexOf(x));
    var trailing = argvalue.substring(argvalue.indexOf(x) + x.length,
	argvalue.length);
    argvalue = leading + y + trailing;
  }

  return argvalue;
}

/**
 * Checa o(s) dígito(s) verificador(es) de um número passado como parâmero.
 *
 * A função checa os dígitos verificadores através do algorítmo de módulo de 11.
 * Funciona para CPF, CNPJ, e outros.
 * O primeiro parâmetro deve ser uma string contendo o número, um traço, e o(s) dígito(s) verificador(es).
 * O segundo parâmetro indica o tipo de multiplicador utilizado no algorítmo (cíclico ou linear). Utilizar cíclico para CNPJ e linear para CPF.
 * Exemplo: "1234-39"
 *
 * @access private
 * @author Felipe Martino Gagno Ceotto <felipe@casetecnologia.com.br>
 * @copyright Copyright&copy; 2003, CASE Tecnologia
 * @version 0.1
 * @param string vvalor Número contendo o(s) dígito(s) verificador(es) separados do próprio por um traço. Exemplo: "1234-39".
 * @param boolean vl_bln_ciclico Indica se o algorítmo utilizado deve usar multiplicadores cíclicos (CNPJ) ou não (CPF).
 * @return boolean Retorna true se os dígitos verificadores estiverem corretos, ou false se estiverem incorretos.
 * @todo
 */
function fl_bln_checa_dv(vvalor, vl_bln_ciclico)
{
	var vl_bln_resultado = true;

	// Separa os dígitos verificadores do número propriamente dito.
	// var elems_inicio = vvalor.split("/");
	var vla_str_valor = vvalor.split("-");

	if (vla_str_valor[1].length != 2)
	{
		vl_bln_resultado = false;
	}
	else
	{
		vl_bln_resultado = true;
		var vnum_dvs = vla_str_valor[1].length;
		var vdigitos;
		var vnum_digitos;
		var vmultiplicador;
		var vsoma;
		var vi2;
		for (var vi1 = 0; vi1 < vnum_dvs; vi1++)
		{
			vdigitos = vla_str_valor[0] + vla_str_valor[1].substring(0, vi1);
			vnum_digitos = vdigitos.length;
			vmultiplicador = vnum_digitos + 1;
			// Checa se é necessário acertar o multiplicador, no caso de números com mais de 8 dígitos no algorítmo cíclico.
			if ((vl_bln_ciclico) && (vmultiplicador > 9))
			{
				vmultiplicador = (vmultiplicador % 10) + 2;
			}
			vsoma = 0;
			for (vi2 = 0; vi2 < vnum_digitos; vi2++)
			{
				vsoma += (vdigitos.substring(vi2, (vi2 + 1)) * vmultiplicador);
				vmultiplicador--;
				// Checa se é necessário acertar o multiplicador, no caso de números com mais de 8 dígitos.
				if ((vl_bln_ciclico) && (vmultiplicador < 2))
				{
					vmultiplicador = 9;
				}
			}
			vdv = 11 - (vsoma % 11);
			if (vdv > 9)
			{
				vdv = 0;
			}
			if (vdv != vla_str_valor[1].substring(vi1, (vi1 + 1)))
			{
				vl_bln_resultado = false;
			}
		}
	}
	return vl_bln_resultado;
}

/**
 * Função fg_bln_seleciona_checkboxs
 *
 * (Des)Marca os campos checkbox, de uma lista
 * O parâmetro a ser passado é:
 * vl_obj_campo_formulario => Caminho do campo a ser marcado
 *
 * O if serve para quando apenas existe uma opção no length e o js considera como um único arquivo
 * caso contrário, execulta o loop no array de arquivos
 * @access public
 * @author Renato Medina <medinadato@hotmail.com>
 * @version 0.1
 * @marca como selecionado ou nao os campos (busca por id).
 * @todo
 */

function fg_bln_seleciona_checkboxs(nome_campo) {

	var vl_obj_campo_formulario = $name(nome_campo);
	
	if(vl_obj_campo_formulario.length==null)
	{	
		if(vl_obj_campo_formulario.checked==true)
			vl_obj_campo_formulario.checked=false;
		else
			vl_obj_campo_formulario.checked=true;
	}
	
	for(var i=0; i<vl_obj_campo_formulario.length; i++)
	{
		if(vl_obj_campo_formulario[i].checked==true)
			vl_obj_campo_formulario[i].checked=false;
		else
			vl_obj_campo_formulario[i].checked=true;
	} 
}


/*
* catado na net por Renato Medina 09/11/2006
* FormatoMoeda(d)
* d - valor a ser convertido
*/
function FormatoMoeda(d) {
	if(typeof(d) == "string" && d == "")
		return "";

	if(d == null)
		return "";
		
    if(typeof(d) == "string" && d.indexOf(',') > 0)
		return d;

    var neg = d < 0.00;
    d = d < 0.0 ? -d : d;
    var c = d + "";
    
    var index = c.indexOf('.');
    var cInt = index >  0 ? c.substring(0, index)  : c; 
    var cDec = index >= 0 ? c.substring(index + 1) : "00";

    var cInt2 = "";
    var count = 0;
    for(i = cInt.length - 1; i >= 0; i--) {
        count++;
        if(count == 4) {
            count = 1;
            cInt2 = cInt.charAt(i) + (i != cInt.length ? "." : "") + cInt2;
        }
        else
            cInt2 = cInt.charAt(i) + cInt2;
    }
    
    if(cDec.length == 1)
        cDec += "0";
    if(cDec.length > 2)
        cDec = cDec.substring(0, 2);

    return (neg ? "-" : "") + cInt2 + "," + cDec;
}

// ABRE UMA POPUP CENTRALIZADA - IE 4+, NS 4+
// openPopup(event, 'about:mozilla', 'POP_NAME', 400, 300, 1, 0 );
function abrePopup(e) {
	
	var key = getSource(e);
	
	// conf padrao para centralizar janela
	iLeft = ( screen.width - 500 ) / 2;
	iTop = ( screen.height - 550 ) / 2;
	
	window.open(key.href, 
	'ajuda', 
	'location=no, toolbar=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=450,height=550,top='+iTop+',left='+iLeft);

	return cancelEvent(e);
}

// gera impressao da pg atal
function fg_bln_imprimir(e) {
	window.print();
	return cancelEvent(e);
}

function fnValidarCampo(campos,avisos) {
	// variaveis
	var retorno = ""; var temp = "";

	// loop para montar retorno
	for(var i=0; i<campos.length; i++) {
		temp = '<li id="erro"><strong>Campo '+$id(campos[i]).alt+':</strong> '+avisos[i];
		// coloca apenas um fechamento
		if(i == 0) temp = temp+'<img src="../imagens/icon_fechar.gif" alt="fechar" id="fechar"></li>';	else temp = temp+'</li>'; 
		retorno = retorno+temp;
	}
	$id('alertas').innerHTML = retorno;
}

/*
 * funcao g_bln_valida_acao_sobre_checkbox
 * pega o nome do campo em questao (checkbox) e verifica se algum esta selecionado
 * caso haja algum selecionado retorna true
 * caso contrario retorna false
 * @access public
 * @author Renato Medina <medinadato@hotmail.com>
 * @data 10/04/2007
*/
function g_bln_valida_acao_sobre_checkbox(nome_campo) {

	var vl_obj_campo_formulario = $name(nome_campo);
	var checado = false;
 
	if(vl_obj_campo_formulario.length==null) {	
		if(vl_obj_campo_formulario.checked==true)
			checado = true;
	}
	else {
		for(var i=0; i<vl_obj_campo_formulario.length; i++) {
			if(vl_obj_campo_formulario[i].checked==true)
				checado = true;
		} 
	}
	if(checado == true)
		return true;
	else
		return false;
}

/**
 * Função fg_bln_seleciona_cleckboxs
 *
 * (Des)Marca os campos checkbox, de uma lista
 * O parâmetro a ser passado é:
 * vl_obj_campo_formulario => Caminho do campo a ser marcado
 *
 * O if serve para quando apenas existe uma opção no length e o js considera como um único arquivo
 * caso contrário, execulta o loop no array de arquivos
 * @access public
 * @author Renato Medina <medinadato@hotmail.com>
 * @version 0.1
 * @marca como selecionado ou nao os campos (busca por id).
 * @todo
 */

function fg_bln_seleciona_cleckboxs(vl_obj_campo_formulario)
{
	if(vl_obj_campo_formulario.length==null)
	{	
		if(vl_obj_campo_formulario.checked==true)
			vl_obj_campo_formulario.checked=false;
		else
			vl_obj_campo_formulario.checked=true;
	}
	
	for(var i=0; i<vl_obj_campo_formulario.length; i++)
	{
		if(vl_obj_campo_formulario[i].checked==true)
			vl_obj_campo_formulario[i].checked=false;
		else
			vl_obj_campo_formulario[i].checked=true;
	} 
}

/** 
 * Função fg_bln_verifica_vazio
 *
 * Checa se um campo possui algum valor. Caso não possua, apenas retorna false.
 * Os parâmetros passados são:
 * vl_obj_campo_formulario               => Campo do formulario para checagem. Ex.: form1.field1
 *
 * @access public
 * @author Gianfranco Zucoloto <zucoloto@casetecnologia.com.br>
 * @copyright Copyright&copy; 2003, CASE Tecnologia
 * @param object vl_obj_campo_formulario Campo do formulario html a ser checado. Ex.: form1.field1
 * @version 0.1
 * @return boolean Retorna true caso o campo esteja preenchido. Senão, retorna false
 * @todo
 */

function fg_bln_verifica_vazio(vl_obj_campo_formulario)
{
	var vg_bln_resultado = true;
	
		if (strtrim(vl_obj_campo_formulario.value) == "")
			vg_bln_resultado = false;

	return vg_bln_resultado;
}

/**
 * Função fg_bln_valida_checkbox
 *
 * Verifica se determinados checkbox possuem ao menos um de seus campos selecionados.
 * O parâmetro a ser passado é:
 * vl_obj_campo_formulario => Caminho do campo a ser marcado
 * vtitulo_campo     => Nome do campo na interface para o retorno da função. Ex.: "Nome"
 * @access public
 * @author Renato Medina <medinadato@hotmail.com>
 * @version 0.1
 * @marca como selecionado ou nao os campos (busca por id).
 * @todo
 */
function fg_bln_valida_checkbox(vl_obj_campo_formulario,vtitulo_campo)
{
	if(vl_obj_campo_formulario.length==null)
	{	
		if(vl_obj_campo_formulario.checked==false)
		{
			alert('Selecione ao menos um(a) '+vtitulo_campo+'!');
			return false;
		}
		else
			return true;
	}
	else
	{
		var novo = 0;
		for(var i=0; i<vl_obj_campo_formulario.length; i++)
		{
			if(vl_obj_campo_formulario[i].checked==true)
				novo+=1;
			else
				continue;
		} 
		if(novo==0)
		{	
			alert('Selecione ao menos um(a) '+vtitulo_campo+'!');
			return false;
		}
		else
			return true;
	}
}

/**
 * Função fg_bln_validar_cpf
 *
 * Checa se o valor de um campo é um CPF válido, no formato ###.###.###-##.
 * É verificado o formato e se os dígitos verificadores são válidos.
 * Caso não seja, avisa o usuário e seta o foco naquele campo.
 * Como opcional, também pode checar se o campo é obrigatório.<br>
 * Os parâmetros passados são:<br>
 * vl_obj_campo_formulario 	=> Campo do formulario para checagem. Ex.: form1.field1<br>
 * vtitulo_campo 		=> Nome do campo na interface para o retorno da função. Ex.: "Data"<br>
 * vl_bln_obrigatorio 		=> Diz se o campo também é obrigatório ou não.
 *
 * @access public
 * @author Felipe Martino Gagno Ceotto <felipe@casetecnologia.com.br>
 * @copyright Copyright&copy; 2003, CASE Tecnologia
 * @param object vl_obj_campo_formulario Campo do formulario html a ser checado. Ex.: form1.field1
 * @param string vtitulo_campo Título do campo na interface para o retorno da função. Ex.: "Data"
 * @param boolean vl_bln_obrigatorio True para campo obrigatorio e False para opcional
 * @version 0.1
 * @uses function fl_bln_checa_dv
 * @uses function fg_bln_validar_obrigatorio
 * @return boolean Retorna true caso o campo esteja preenchido e válido. Senão, um popup o avisará.
 * @todo
 */
function fg_bln_validar_cpf(vl_obj_campo_formulario, vtitulo_campo, vl_bln_obrigatorio)
{
	var vg_bln_resultado = true;

	if (vl_bln_obrigatorio)
	{
		if (!fg_bln_validar_obrigatorio(vl_obj_campo_formulario,vtitulo_campo))
			vg_bln_resultado = false;
	}

	if (vg_bln_resultado)
	{
		// PAREI AQUI.
		var numscpf = replace(vl_obj_campo_formulario.value,".", "");
		numscpf = replace(numscpf,"-", "");
		vg_bln_resultado = (numscpf.length == 11);

		// var elems = vl_obj_campo_formulario.value.split(".");
		// vg_bln_resultado = (elems.length == 3); // should be three components
		if (vg_bln_resultado)
		{
			// var elems2 = elems[2].split("-");
			// vg_bln_resultado = (elems2.length == 2); // should be two components
			if (vg_bln_resultado)
			{
				// var cpf = elems[0] + elems[1] + elems2[0];
				var cpf = numscpf.substring(0, 9);
				// var dvs = elems2[1];
				var dvs = numscpf.substring(9, 11);
				vg_bln_resultado = ((cpf.length == 9) && (dvs.length == 2) && (!isNaN(cpf)) && (!isNaN(dvs)));
				if (vg_bln_resultado)
				{
					vg_bln_resultado = fl_bln_checa_dv(cpf + '-' + dvs, false);
				}
			}
		}

		if (!vl_bln_obrigatorio && vl_obj_campo_formulario.value == "") { vg_bln_resultado = true; }

		if (!vg_bln_resultado)
		{
			alert('Por favor digite um CPF válido para o campo "' + vtitulo_campo +'".');
			vl_obj_campo_formulario.focus();
		}
	}

	return vg_bln_resultado;
}

function fg_bln_valida_cnpj(vl_obj_campo_formulario, vtitulo_campo, vl_bln_obrigatorio)
{
	var vg_bln_resultado = true;
	
	if (vl_bln_obrigatorio)
	{
		if (!fg_bln_validar_obrigatorio(vl_obj_campo_formulario,vtitulo_campo))
			vg_bln_resultado = false;
	}
	var cnpj = replace(vl_obj_campo_formulario.value,".", "");
	cnpj = replace(cnpj,"-", ""); cnpj = replace(cnpj,"/", "");

  var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
      digitos_iguais = 1;
      if (cnpj.length < 14 && cnpj.length < 15)
            vg_bln_resultado = false;
      for (i = 0; i < cnpj.length - 1; i++)
            if (cnpj.charAt(i) != cnpj.charAt(i + 1))
                  {
                  digitos_iguais = 0;
                  break;
                  }
      if (!digitos_iguais)
            {
            tamanho = cnpj.length - 2
            numeros = cnpj.substring(0,tamanho);
            digitos = cnpj.substring(tamanho);
            soma = 0;
            pos = tamanho - 7;
            for (i = tamanho; i >= 1; i--)
                  {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2)
                        pos = 9;
                  }
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(0))
                  vg_bln_resultado = false;
            tamanho = tamanho + 1;
            numeros = cnpj.substring(0,tamanho);
            soma = 0;
            pos = tamanho - 7;
            for (i = tamanho; i >= 1; i--)
                  {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2)
                        pos = 9;
                  }
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(1))
                  vg_bln_resultado = false;
							g_bln_resultado = true;
            }
      else
            vg_bln_resultado = false;

	if (!vl_bln_obrigatorio && vl_obj_campo_formulario.value == "") { vg_bln_resultado = true; }

	if (!vg_bln_resultado)
	{
		alert('Por favor digite um CNPJ válido para o campo "' + vtitulo_campo +'".');
		vl_obj_campo_formulario.focus();
	}
	return vg_bln_resultado;
}

/*
	function bloqueia_acoes_tags_submeter
	cancela todo tipo de click sobre a tag em questao
	author: Renato Medina
	date: 30/05/2007
*/
function bloqueia_acoes_tags_submeter() {
	var tags = $tags('input');
	for(var i=0; i<tags.length; i++) {
		if(tags[i].type == 'submit')
			addEvent(tags[i], "click", tb_show_block);
	}
	
	var tags = $tags('a');
	for(var i=0; i<tags.length; i++) {
		if(tags[i].alt == 'submit')
			addEvent(tags[i], "click", tb_show_block);
	}
}

/***********************************************
* Cool DHTML tooltip script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
var offsetxpoint=-60 //Customize x offset of tooltip
var offsetypoint=20 //Customize y offset of tooltip
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false

function ietruebody(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function ddrivetip(e){
	var key = getSource(e);
	var tipobj = key.childNodes[1];
	
	try { 
		tipobj.style.visibility='visible';
		tipobj.style.display='block';
	}
	catch(i) { }
	enabletip=true
	return false
}

function positiontip(e){	
	var key = getSource(e);
	
	if(document.all) {
		x = e.clientX;
		y = e.clientY;
	} else {
		x = e.pageX;
		y = e.pageY;
	}
	
	if (enabletip) {		
		var divs = $tags('span');
		for(var i=0; i<divs.length; i++) {
			if(divs[i].className == 'comentarios') {
				var tipobj = divs[i].childNodes[1];
				tipobj.style.left = x;	tipobj.style.top = y;
				
				var curX=x;	var curY=y;
				
				//Find out how close the mouse is to the corner of the window
				var rightedge=ie&&!window.opera? ietruebody().clientWidth-x-offsetxpoint : window.innerWidth-x-offsetxpoint-20;
				var bottomedge=ie&&!window.opera? ietruebody().clientHeight-y-offsetypoint : window.innerHeight-y-offsetypoint-20;
				
				var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000;
				
				//if the horizontal distance isn't enough to accomodate the width of the context menu
				if (rightedge<tipobj.offsetWidth) //move the horizontal position of the menu to the left by it's width
					tipobj.style.left=ie? ietruebody().scrollLeft+x-tipobj.offsetWidth+"px" : window.pageXOffset+x-tipobj.offsetWidth+"px"
				else if (curX<leftedge)
					tipobj.style.left="5px";
				else //position the horizontal position of the menu where the mouse is positioned
					tipobj.style.left=curX+offsetxpoint+"px";
/*
//	tem q corrigir esse trecho para que a caixa suba ao estar colado na tela em baixo
				//same concept with the vertical position
				if (bottomedge<tipobj.offsetHeight)
					tipobj.style.top=ie? ietruebody().scrollTop+y-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+y-tipobj.offsetHeight-offsetypoint+"px"
				else
					tipobj.style.top=curY+offsetypoint+"px";
*/
			}
		}
	}
}

function hideddrivetip(e){
	var key = getSource(e);
	var tipobj = key.childNodes[1];
	
	enabletip=false
	tipobj.style.visibility="hidden";
}

// adaptacao de Renato Medina
function fg_bln_inicia_tooltip(e) {
	var divs = $tags('span');
	for(var i=0; i<divs.length; i++) {
		if(divs[i].className == 'comentarios') {
			addEvent(divs[i], "mouseover", ddrivetip);
			addEvent(divs[i], "mouseout", hideddrivetip);
		}
	}
	addEvent(window.document, "mousemove", positiontip);
}

/***********************************************
* End Cool DHTML tooltip script
***********************************************/

// inicializacao padrao para todas as pgs
function inicializar_padrao()
{
	// botao fechar
	if(null != $id("fechar"))	addEvent($id("fechar"), "click", fecharAviso);

	// array com botoes excluir/imprimir
	$links = $tags('a');
	for(var i=0; i<$links.length ; i++)
	{
		if($links[i].title == 'excluir')
			addEvent($links[i], "click", fg_bln_validar_acao); // ao clicar excluir pede confirmacao
			
		else if($links[i].title == 'Imprimir')	// array com botoes imprimir
			addEvent($links[i], "click", fg_bln_imprimir); // ao clicar print
	}
	
	// array com botoes excluir/imprimir
	$tags = $tags('input');
	for(var i=0; i<$tags.length ; i++)
	{
		if($tags[i].title == 'excluir')
			addEvent($tags[i], "click", fg_bln_validar_acao); // ao clicar excluir pede confirmacao
	}
	
	// botao ajuda
	if(null != $id("ajuda")) {
		addEvent($id("ajuda"), "click", abrePopup);
	}
	
	// trava acoes apos submissoes e clicks em urls
	bloqueia_acoes_tags_submeter();
	
	// inicia tooltip
	fg_bln_inicia_tooltip();
}
addEvent(window, "load", inicializar_padrao); // inicializa os eventos da pag ao ser carregada
