// usar o param do perl em javascript para método get em html tipo tmp.html?x=1&y=2
function param(name)
{
if (location.href.indexOf(name+"=")==-1)
  {
  return "";
  }

var stringao=location.href.substring(location.href.indexOf('?')+1, location.href.length);
stringao=stringao.substring(stringao.indexOf(name+"=")+name.length+1, stringao.length );

var value="";
for (i=0; i<stringao.length; i++)
  {
  if (stringao.charAt(i)=="&")
    {
    return value;
    }
  value=value+stringao.charAt(i);
  }

var objRegExp = /\%20/g
value = value.replace(objRegExp," ");

return unescape(value);
}


// recebe dd/mm/yyyy e/ou hora hh:mi:ss retorna tipo date para comparação
// usage: if ( to_date(dia1, hora1) > to_date(dia2, hora2) )
// usage: to_date(dia1) - to_date(dia2) -> vai retornar resultado em milisegundos
// usage: if ( to_date("", hora1) > to_date("", hora2) )
// usage: to_date("", hora1) - to_date("", hora2)
function to_date(data, hora)
{
var arr = new Array();
var myDate=new Date();
if (data)
    {
    arr=data.split("/");
    myDate.setFullYear(arr[2],parseFloat(arr[1])-1,arr[0]);
    }
if (hora)
    {
    arr=hora.split(":");
    if (arr.length==1) { arr[1]="0"; }
    if (arr.length==2) { arr[2]="0"; }
    if (arr.length==3) { arr[3]="0"; }
    myDate.setHours(arr[0],arr[1],arr[2],arr[3])
    }
return myDate;
}


function getCookie(nome_do_cookie)
{
    if (document.cookie.length > 0) 
{ begin = document.cookie.indexOf(nome_do_cookie +"="); 
if (begin != -1) 
{
begin += nome_do_cookie.length+1; 
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end)); } 
}
return null; 
} 

function setCookie(nome_do_cookie, value, expiredays) 
{ var ExpireDate = new Date ();
ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
document.cookie = nome_do_cookie + "=" + escape(value) + 
((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}



// SE VOCÊ RECEBEU UMA PÁGINA WEB VIA HTTP.OPEN / AJAX / XMLHTTP
// UTILIZE ESTA FUNÇÃO PARA EXECUTAR O JAVASCRIPT QUE ESTIVER EMBUTIDO NELA
// LIMITAÇÃO: OS COMANDOS DE JAVASCRIPT NÃO PODEM CONTER A PALAVRA VBSCRIPT
function evaljavascript(html)
{
var regexp = /<script/ig;
if (!regexp.test(html))
    {
    return 0;
    }
html = html.replace(regexp,"<SCRIPT");

regexp = /<\/script>/ig;

var tmp='<' + '/' + 'SCRIPT>'; // se colocar </scr ipt> de uma vez só, sem concatenar, o navegador não vai executar o código que vier em seguida
html = html.replace(regexp,tmp);

while (true)
    {
    var js=html.substring(html.indexOf('<SCRIPT')+5, html.indexOf('</SCRIPT'+'>') );
    while (js.charAt(0)!='>')
        {
        js=js.substring(1,js.length);
        }
    js=js.substring(1,js.length);

    regexp = /VBScript/ig; // é vb ou js?
    if (!regexp.test(html))
        {
        eval(js);
        }


    html=html.substr(html.indexOf('</SCRIPT')+5, html.length);
    if (html.indexOf('<SCRIPT')==-1)
        {
        return 1;
        }
    }
}



function isNumeric(v)
{
var i,j,retorna;
for (i=0;i<v.length;i++)
	{
	retorna=false;
	for (j=0;j<=9;j++)
		{
		if (v.charAt(i).indexOf(j)!=-1)
			{
			retorna=true;
			break;
			}
		}
	if (retorna==false)
		{
		return false;
		}
	}
return true;
}


// RECEBE OBJETO DE FORMULÁRIO (this), ALTERA O VALOR DELE, PERMITINDO SOMENTE ALGARISMOS
// CHAMAR ESSA FUNÇÃO NOS EVENTOS ONKEYUP, ONCHANGE E ONSUBMIT
// exemplo: onKeyUp=camponumerico(this)  onkeyup=camponumerico(this)
function camponumerico(o)
{
var s="";
for (i=0;i<o.value.length;i++)
   {
   var c=o.value.charAt(i);
   if (c=='0' || c=='1' || c=='2' || c=='3' || c=='4' || c=='5' || c=='6' || c=='7' || c=='8' || c=='9')
      {
      s+=c;
      }
   }
o.value=s;
}



function sintaxedata(maiadata)
{
retorna = 1;

// VERIFICO SE ESTÁ NO FORMATO XX/XX/XXXX
if ( ((maiadata.substring(2,3)) != '/') ||  ((maiadata.substring(5,6)) != '/') )  { retorna=0; }

// VERIFICO O LENGTH
if (maiadata.length != 10) { retorna = 0; }

// VERIFICO OS VALORES NUMÉRICOS PARA DIA, MES, ANO
dia = parseFloat (maiadata.substring(0,3));
if ( (isNaN(dia)) || (dia < 1) || (dia > 31) ) { retorna=0; }

mes=parseFloat (maiadata.substring(3,5));
if ( (isNaN(mes)) || (mes < 1) || (mes > 12) ) { retorna=0; }

ano=parseFloat (maiadata.substring(6,12));
if ( (isNaN(ano)) || (ano < 1908) || (ano > 2068) ) { retorna=0; }

if ((dia==31 && (mes==4 || mes==6 || mes==9 || mes==11)) || (dia>29 && mes==2) || (dia==29 && mes==2 && (ano%4)!=0)) { retorna = 0; }

// PRECISO TAMBÉM CHECAR CARACTER POR CARACTER NUMÉRICO,  POIS O JAVASCRIPT TEM UM BUG NA FUNCAO
// PARSEINT, QUE CONVERTE "1A" PARA "1", "3X" PARA "3" E ETC. ISSO DARIA ERRO NO BANCO DE DADOS
for (i=0; i<maiadata.length; i++)
   {
   if (  ((maiadata.substring(i,i+1) < '0') || (maiadata.substring(i,i+1) > '9'))  &&  (maiadata.substring(i,i+1) != '/') )
      {
      retorna=0;
      }
   }

return retorna;
}



// RECEBE UM REAL, RETORNA INTEIRO TRUNCADO
//There must be a danger with Math.trunc() / Math.ceil(), in cases where the argument should ideally be an exact integer, that rounding errors may have placed it on the "wrong side" of the exact value, after which trunc / ceil will give a result differing by one from what it should ideally be.
// Math.trunc às vezes funciona, às vezes não. Pior que parseInt que não funciona nunca
function trunc(real_param)
{
var str_tmp=real_param.toString();
var strarr_tmp=str_tmp.split(".");
return strarr_tmp[0];
}


function dinheiro2string(valor_real1)
{
var valor_string1=valor_real1.toString();
var strarr_tmp1=valor_string1.split(".");
var decimal_str1="0";

if (!strarr_tmp1[1])
	{
	var decimal_str1="00";
	}
else
	{
	decimal_str1=strarr_tmp1[1];
	if (decimal_str1.length == 1)
		{
		decimal_str1+="0";
		}
	}

if (decimal_str1.substring(3,4)=="9")
   {
   casa1=parseFloat(decimal_str1.substring(0,1))+1;
   casa2=decimal_str1.substring(1,2);
   casa2=0;
   decimal_str1=casa1.toString() + casa2.toString();
   }

decimal_str1=decimal_str1.substring(0,2);

return strarr_tmp1[0] + "." + decimal_str1;
}





// deprecada, não é aceita em Netscape / Mozilla
function sohNumeros()
{
   if ( (event.keyCode < 48) ||(event.keyCode > 57) )
   {event.returnValue = false;}
}


// em substituição à função sohNumeros
function sohAlgarismos(o) // o = obj de form (input type=text)
{
var alga=new Array (0,1,2,3,4,5,6,7,8,9);

for (i=0;i<=o.value.length;i++)
   {
   var flag=0;
   //alert(o.value.charAt(i));
   for (j=0;j<=alga.length;j++)
      {
      if (o.value.charAt(i)==alga[j])
         {
         flag=1;
         }
      }
   if (!flag)
      {
      o.value=o.value.substring(0,o.value.length-1);
      return false;
      }
   }
return true;
}


function sohReal(v)
{
   if ( ( (event.keyCode < 48) ||(event.keyCode > 57) ) && (event.keyCode!=46))
   {event.returnValue = false;}

if ( (v.indexOf('.')!=-1) && (event.keyCode==46) )
{event.returnValue = false;}
}


//USAGE: alert(extensaoArquivo("C:\Windows\arquivo.pdf","zip"));
function extensaoArquivo(value,extensao)
{
var extensoes=new Array();
extensoes=value.split(".");
if ( (extensoes[extensoes.length-1].toUpperCase()) != extensao.toUpperCase() )
	{
	return false;
	}
return true;
}

function realround(x)
{
x=x.toString();
var intdec=x.split(".");
if (intdec.length==1)
   {
   return intdec[0] + ".00";
   }
if (intdec[1].charAt(2)=="9")
   {
   intdec[1]=intdec[1].substring(0,2);
   intdec[1]=parseFloat(intdec[1]) + 1;
   intdec[1]=intdec[1].toString();
   if (intdec[1]=="100")
      {
      intdec[1]="00";
      intdec[0]=parseFloat(intdec[0])+1;
      }
   }
intdec[1]=intdec[1].toString();
if (intdec.length==1)
   {
   intdec[1]="00";
   }
if (intdec[1].length==1)
   {
   intdec[1]=intdec[1]+"0";
   }
if (intdec[1].length>2)
   {
   intdec[1]=intdec[1].toString();
   intdec[1]=intdec[1].substring(0,2);
   }
return intdec[0] + "." + intdec[1];
}


function sohLetrasNumeros(obj)
{
var retorna="";
var teveerro=0;
if (obj)
   {
   var pode="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
   for (i=0;i<obj.value.length;i++)
      {
      if (pode.indexOf(obj.value.charAt(i))==-1)
         {
         teveerro=1;
         }
      else
         {
         retorna=retorna+obj.value.charAt(i);
         }
      }
   if (teveerro)
      {
      alert("Escreva somente letras e algarismos neste campo.\nNão escreva caracteres como traços, espaços, cedilhas ou acentos.");
      obj.value=retorna;
      }
   }
else
   {
   if ( (event.keyCode < 48) || ( (event.keyCode > 57) && (event.keyCode <= 64) )  || ((event.keyCode >= 91) && (event.keyCode < 97))  || (event.keyCode >= 123) )
      {
      event.returnValue = false;
      }
   }
}


// para comparação de datas
function to_date(data)
{
var d=new Array();
d=data.split("/");
return d[2]+"/"+d[1]+"/"+d[0];
}