/***************************************************************
 Programa ...: funcoes.js
 Uso ........: funcoes globais em JavaScript
 Programador : Claudio Monteoliva
***************************************************************/
// seta variaveis global
var xIE     = (!document.all) ? 0 : 1;
var swidth  = parseInt(window.screen.width );
var sheight = parseInt(window.screen.height);

//**************************************************************
// Parametros da funcao:
// evento : evento onKeyPress
//**************************************************************
function isNumber(evento)
{
  // seta variaveis
  var key;
  var keychar;

  // verifica
  if     (window.event) { key = window.event.keyCode; }
  else if(evento)       { key = evento.which; }
  else                  { return false; }

  // tecla ENTER pressionada
  if (key == 13 || key == 8 || key == 0) { return true; }

  // pega o codigo da tecla
  keychar = String.fromCharCode(key);

  // verifica o keychar
  if ((("0123456789").indexOf(keychar) > -1)) { return true;  }
  else                                        { return false; }
}

//**************************************************************
// Parametros da funcao:
// evento : evento onKeyPress
//**************************************************************
function isEnter(evento)
{
  // seta variavel
  var key;

  // verifica
  if     (window.event) { key = window.event.keyCode; }
  else if(evento)       { key = evento.which; }
  else                  { return false; }

  // tecla ENTER pressionada
  if (key == 13) { return true; } else { return false; }
}

//**************************************************************
// Parametros da funcao:
// evento : evento onKeyPress
//**************************************************************
function isCaracter(evento)
{
  // seta variaveis
  var key;
  var keychar;

  // verifica
  if     (window.event) { key = window.event.keyCode; }
  else if(evento)       { key = evento.which;         }
  else                  { return false;               }

  // tecla ENTER pressionada
  if (key == 13 || key == 8 || key == 0) { return true; }

  // pega o codigo da tecla
  keychar = String.fromCharCode(key);

  // verifica o keychar
  if      ((("abcdefghijklmnopqrstuvxyz ").indexOf(keychar) > -1)) { return true;  }
  else if ((("ABCDEFGHIJKLMNOPQRSTUVXYZ ").indexOf(keychar) > -1)) { return true;  }
  else                                                             { return false; }
}

function sData(){var zeit=new Date();var ms=(zeit.getHours() * 24 * 60 * 1000) + (zeit.getMinutes() * 60 * 1000) + (zeit.getSeconds() * 1000) + zeit.getMilliseconds();return ms;}

//**************************************************************
// formata uma mascara
//**************************************************************
// exemplo de uso:
//
// onKeyPress="return setMASCARA(this, '999.999.999-99',event)" (CPF)
// onKeyPress="return setMASCARA(this, '###-9999',event)"       (Placa)
//
// tipos de mascara:
// 9 = (numerico)
// # = (string)
//**************************************************************
// teclas:
// 0  = (TAB)
// 8  = (BACKSPACE)
// 13 = (ENTER)
//**************************************************************
function setMASCARA(este, mask, evento)
{
  // seta variaveis
  var key;

  // verifica
  if     (window.event) { key = window.event.keyCode; }
  else if(evento)       { key = evento.which; }
  else                  { return false; }

  // tecla ENTER pressionada
  if (key == 13 || key == 8 || key == 0) { return true; }

  // pega o codigo da tecla
  var keychar = String.fromCharCode(key);

  // pega os totais
  var i = este.value.length;
  var m = mask.length - 1;

  // verifica o total de mascara com o total do campo
  if (i > m) { return false; }
  else
  {
    // pega a mascara
    var texto = mask.substring(i);
    var saida = texto.substring(0,1);

    // verifica
    if      (saida == "9") { if (("0123456789").indexOf(keychar) > -1) { return true; }}
    else if (saida == "#")
    {
        if      ((("abcdefghijklmnopqrstuvwxyz ").indexOf(keychar) > -1)) { return true; }
        else if ((("ABCDEFGHIJKLMNOPQRSTUVWXYZ ").indexOf(keychar) > -1)) { return true; }
    }
    else
    {
      // coloca a separacao no campo texto
      este.value += saida;

      // pega o proximo da mascara
      var texto1 = mask.substring(i+1);
      var saida1 = texto1.substring(0,1);

      // realiza uma nova validacao
      if      (saida1 == "9") { if (("0123456789").indexOf(keychar) > -1) { return true; }}
      else if (saida1 == "#")
      {
        if      ((("abcdefghijklmnopqrstuvwxyz ").indexOf(keychar) > -1)) { return true; }
        else if ((("ABCDEFGHIJKLMNOPQRSTUVWXYZ ").indexOf(keychar) > -1)) { return true; }
      }
    }

    // retorna
    return false;
  }
}

//**************************************************************
// verifica se eh data
//**************************************************************
String.prototype.isDate = function()
{
    var bissexto = 0;
    var data     = this;
    var tam      = data.length;
    if (tam == 10)
    {
        var dia = data.substr(0,2)
        var mes = data.substr(3,2)
        var ano = data.substr(6,4)
        if ((ano > 1900)||(ano < 2100))
        {
            switch (mes)
            {
                case '01':
                case '03':
                case '05':
                case '07':
                case '08':
                case '10':
                case '12': if  (dia <= 31) { return true; } break;
                case '04':
                case '06':
                case '09':
                case '11': if  (dia <= 30) { return true; } break;
                case '02':
                    /* Validando ano Bissexto / fevereiro / dia */
                    if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))  { bissexto = 1; }
                    if ((bissexto == 1) && (dia <= 29))                          { return true;  }
                    if ((bissexto != 1) && (dia <= 28))                          { return true;  }
                    break;
            }
        }
    }
    return false;
}

//********************************************************
// funcao que valida um e-mail
//********************************************************
function isEmail(email)
{
  if(/^[a-zA-Z0-9][a-zA-Z0-9\._-]+@([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/.exec(email)) { return true; }
  else { return false; }
}

//********************************************************
// funcao que valida CPF
//********************************************************
String.prototype.isCPF = function()
{
  if      ( this == "" ) { return false; }
  else if ( this != "" )
  {
			var cpf = this.replace(/[.-]/gi,"");
			if (cpf.length < 11) { return false; }

			var nonNumbers = /\D/;
			if (nonNumbers.test(cpf)) { return false; }

			if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" ||
				cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" ||
				cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" ||
				cpf == "99999999999")
			{
				return false;
			}
			if ( cpf.length > 11 ) { return false; }

			var a = [];
			var b = new Number;
			var c = 11;
			for (i=0; i<11; i++){
				a[i] = cpf.charAt(i);
				if (i < 9) b += (a[i] * --c);
			}
			if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
			b = 0;
			c = 11;
			for (y=0; y<10; y++) b += (a[y] * c--);
			if ((x = b % 11) < 2)
				a[10] = 0;
			else
				a[10] = 11-x;

			if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])) { return false; }

    // retorna OK
    return true;
  }
};

//********************************************************
// funcao que valida CNPJ
//********************************************************
String.prototype.isCNPJ = function()
{
  var b = [6,5,4,3,2,9,8,7,6,5,4,3,2]
  var c = this.replace(/[.-/]/gi,"");
  if((c = c.replace(/[^\d]/g,"").split("")).length != 14) { return false; }
  for(var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
  if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) { return false; }
  for(var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
  if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) { return false; }

  // retorna OK
  return true;
};

//**************************************************************
// Funcao que retorna a tecla pressionada
//**************************************************************
function getKey(evento)
{
  // seta variaveis
  var key;

  // verifica
  if     (window.event) { key = window.event.keyCode; }
  else if(evento)       { key = evento.which; }
  else                  { return false; }

  // retorna
  return key;
}

//********************************************************
// funcao que retorna um OBJETO
//********************************************************
function dg(id) { return document.getElementById(id); }

//**************************************************************
// carrega uma URL em um iFrame
//**************************************************************
function loadFrame(url,objeto) { dg(objeto).src = url; }

//**************************************************************
// Funcao que mostra o Loading
//**************************************************************
function setLoading(act,txt)
{
  // seta o TOP
  var xTop = (document.body.scrollTop == 0) ? 1 : document.body.scrollTop + 1;

  // verifica
  if (txt) { dg("spanLoad").innerHTML = txt; }

  // posiciona
  dg("divLoading").style.top   = xTop + "px";
  dg("divLoading").style.right = "2px";

  // posiciona e mostra
  dg("divLoading").style.display = (act == 0) ? "none" : "block";
}

/**
 * funcao que posiciona o Nome e dados da Modelo
 * no Display de Portifolio
 *
 * @author   Luis Claudio Monteoliva
 * @version  1.0 - 02/03/2010
 */
function posicionaTitulo()
{
  var objNome = document.getElementById("titulo" );
  var objeto  = document.getElementById("MooFlow");
  var xTop    = objeto.offsetTop + 370;
  var xLeft   = objeto.offsetLeft;
  var xWidth  = objeto.offsetWidth - 8;

  // posiciona o titulo
  objNome.style.top     = xTop  +"px";
  objNome.style.left    = xLeft +"px";
  objNome.style.width   = xWidth+"px";
  objNome.style.display = "block";
}

//**************************************************************
// Funcoes que mostra ou inibe o fundo PRETO
//**************************************************************
function hiddenFUNDO() { dg("divHidden").style.display = "none"; } //document.body.style.overflow = "auto"; }
function showFUNDO()
{
  // seta o TOP
  //var xTop = (document.body.scrollTop == 0) ? 0 : document.body.scrollTop;

  // inibe o overflow do BODY
  //document.body.style.overflow = "hidden";

  // posiciona e mostra
  //dg("divHidden").style.top     = xTop + "px";
  //dg("divHidden").style.left    = "0px";
  dg("divHidden").style.display = "block";
}

//**************************************************************
// Funcao para carregar uma URL numa caixa com fundo
//**************************************************************
// Parametros:
// pUrl ...: URL que vai ser carregada na caixa
// pWidth .: largura da caixa
// pHeight : altura da caixa
//**************************************************************
function carregaView(pUrl,pWidth,pHeight)
{
  // verifica o parametro (pWidth) (coloca um valor default)
  if (!pWidth) { pWidth = 700; }

  // verifica o parametro (pHeight) (coloca um valor default)
  if (!pHeight) { pHeight = 500; }

  // seta o TOP
  var xTop = (document.body.scrollTop == 0) ? 10 : document.body.scrollTop + 10;

  // mostra o fundo
  showFUNDO();

  // mostra o Loading
  setLoading(1);

  // mostra o iFrame
  dg("ifView").style.top     = xTop    + "px";
  dg("ifView").style.width   = pWidth  + "px";
  dg("ifView").style.height  = pHeight + "px";
  dg("ifView").style.left    = (Math.ceil( (swidth  - pWidth ) / 2 )) + "px";
  dg("ifView").style.display = "block";

  // carrega a integracao
  loadFrame(pUrl,"ifView");
}

//**************************************************************
// Funcao para fechar uma janela Aberta
//**************************************************************
function fechaView()
{
  // null
  dg("ifView").style.display = "none";

  // fecha o fundo
  hiddenFUNDO();

  // zera o Loading
  setLoading(0);
}

//**************************************************************
// Funcao para alterrar o tamanho da janela
//**************************************************************
function alteraTamanho(pwidth,pheight)
{
  // pega os tamanhos atuais
  var aWidth  = dg("ifView").style.width;
  var aHeight = dg("ifView").style.height;

  // seta a altura real
  var real = pheight + 34;

  // corrige o tamanho
  dg("ifView").style.width  = pwidth + "px";
  dg("ifView").style.height = real   + "px";
}

//**************************************************************
// carrega o mouse
//**************************************************************
//document.oncontextmenu = function(e) { alert("Ação inválida!!!"); return false; }
