function is_int(Variavel) 
{ 
  if (typeof Variavel !== 'number') 
    return false; 
  else if (parseFloat(Variavel) != parseInt(Variavel, 10)) 
    return false; 
  else 
    return true; 
}

function str_replace(search, replace, subject, count) 
{
  var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
      f = [].concat(search),
      r = [].concat(replace),
      s = subject,
      ra = r instanceof Array, sa = s instanceof Array;
  s = [].concat(s);
  if (count) this.window[count] = 0;

  for (i=0, sl=s.length; i < sl; i++) 
  {
    if (s[i] === '') continue;
    for (j=0, fl=f.length; j < fl; j++) 
    {
      temp = s[i]+'';
      repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
      s[i] = (temp).split(f[j]).join(repl);
      if (count && s[i] !== temp) this.window[count] += (temp.length-s[i].length)/f[j].length;
    }
  }
  return sa ? s : s[0];
}


function GetElementoID(ElementoID)
{
  var Elemento = document.getElementById(ElementoID);
  if(!Elemento) 
    return false;
  else
    return Elemento;
}

function is_null(Variavel)
{
  if(Variavel === null || typeof Variavel === 'undefined')
    return true;
  else
    return false;
}

function AdicionaPropriedade(Elemento, NomePropriedade, ValorPropriedade)
{
  Elemento[NomePropriedade] = ValorPropriedade;
}

// Função que adiciona uma nova função como event-handler de um elemento.
// Notar que quando o mesmo elemento recebe mais de um evento, eles são chamados sequencialmente, na ordem
// inversa à qual foram associados ao elemento.
function AdicionaEvento(Elemento, NomeEvento, Funcao)
{
  if(Elemento.addEventListener)
    Elemento.addEventListener(NomeEvento, Funcao, false);
  else if (Elemento.attachEvent)
    Elemento.attachEvent('on'+NomeEvento, Funcao);
}

function AdicionaElementoApos(ElementoNovo, ElementoReferencia)
{
  ElementoReferencia.parentNode.insertBefore(ElementoNovo, ElementoReferencia.nextSibling);
}

// Obtém o elemento que disparou um determinado evento, a partir do evento.
function GetElementoEvento(Evento)
{
  if(Evento.target)
    Resultado = Evento.target;
	else if(Evento.srcElement)
    Resultado = Evento.srcElement;
	if (Resultado.nodeType == 3) // Resolve bug no Safari
		Resultado = targ.parentNode;
  return Resultado;
}

// Função que preenche um campo do formulário com o valor informado. Ela facilita a tarefa de atribuir dados
// aos diversos tipos de campos, e também faz a checagem de valores nulos/inexistentes.
function CampoForm(Campo, Valor)
{
  // Primeiro, vamos obter o elemento pelo ID passado.
  Elemento = GetElementoID('C_'+Campo);
  // Se ele existir, seu valor é preenchido.
  if(Elemento) GetElementoID('C_'+Campo).value = Valor;
}

function FocoCampo(IDCampo)
{
  GetElementoID('C_'+IDCampo).focus();
}

function ExibeElemento(Elemento)
{
  Elemento.style.display = 'block';
}

function OcultaElemento(Elemento)
{
  Elemento.style.display = 'none';
}

// Alterna a exibição de um elemento.
function AlternaExibicaoElemento(Elemento)
{
  if(Elemento.style.display == 'block') Elemento.style.display = 'none'; else Elemento.style.display = 'block';
}

// Cria um elemento HTML e o posiciona no final do documento. O elemento SEMPRE vai iniciar como invisível, não importa
// o que está definido em seu estilo. Se quisermos que ele fique visível assim que criado, devemos usar
// AlternaExibicaoElemento logo após sua criação.
function CriaElemento(IDElemento, Estilo, Conteudo)
{
  // Prosseguimos apenas se não existe elemento com este ID no documento.
  if(!GetElementoID(IDElemento))
  {
    // O código HTML do novo layer é criado.
    var NovoLayer = '<div id="'+IDElemento+'" class="'+Estilo+'">'+Conteudo+'</div>';
    // Testamos o browser.
    if(document.body.insertAdjacentHTML)
      // Verificamos se existe insertAdjacentHTML (IE).
      document.body.insertAdjacentHTML("BeforeEnd", NovoLayer);
    else if(document.createRange && document.appendChild)
      // Se não, verificamos se existe createRange e appendChild (Mozilla).
      document.body.appendChild(document.createRange().createContextualFragment(NovoLayer));
    // Para não termos problemas na hora de ocultar ou exibir o elemento, inicializamos o elemento como invisível.
    NovoElemento = GetElementoID(IDElemento);
    OcultaElemento(NovoElemento);
    Resultado = NovoElemento;
  }
  else 
    Resultado = GetElementoID(IDElemento);

  return Resultado;
}



function GetPosicao(Elemento)
{
  var Esquerda = 0, Topo = 0;
  var ElementoLoop = Elemento;
  while (ElementoLoop != null)
  {
    Esquerda += ElementoLoop.offsetLeft - ElementoLoop.scrollLeft;
    Topo += ElementoLoop.offsetTop - ElementoLoop.scrollTop;
    ElementoLoop = ElementoLoop.offsetParent;
  }
  return {Esquerda:Esquerda, Topo:Topo, Largura:Elemento.offsetWidth, Altura:Elemento.offsetHeight};
}









