/*
15/05/2009
Correções na validação da data para o mes de fevereiro

26-12-2007
Permite numeros negativos na função FormataDinheiroOnKeyUp
*/

//------------------------------------------------------------------------------
//Armazenamento de Dados
//------------------------------------------------------------------------------

function SetCookie(cookieName,cookieValue,nDays)
{
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}

//------------------------------------------------------------------------------
//Submissão de Formulário
//------------------------------------------------------------------------------

function ResetFormControle()
{
/*
'pagina' ,$this->pagina);
'ORDEM' ,$this->m_OrderOrd);
'COL' ,$this->m_OrderCol);
'id' ,'');
'acao' ,$this->m_acao);
'FILTRO' ,addslashes($this->m_Filtro) );
'ITEM_PESQUISA'    ,$this->ItemPesquisa);
'COL_PESQUISA'     ,$this->ColPesquisa);
'SINAL_PESQUISA'   ,$this->SinalPesquisa);
$this->m_ParametroPersistente["parametro"],$this->m_ParametroPersistente["valor"]);
'dbform_lista_id_selecao'
'IMPRESSAO_NUM_REG_TOT'
'IMPRESSAO_NUM_REG_PAG'
*/
    var FrmCtrl = document.FRM_ORDEM;
	FrmCtrl.target	    = "";
	FrmCtrl.id.value 	= 0;
    //FrmCtrl.reset();

	if ( ( FrmCtrl.acao.value != "L" ) || ( FrmCtrl.acao.value != "E" ) )
	{
		FrmCtrl.acao.value = "E";
	}
    return FrmCtrl;
}
//------------------------------------------------------------------------------

function MudaPg(pagina)
{
    FrmCtrl = ResetFormControle();
	FrmCtrl.pagina.value= pagina;
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------

function ExecApagar(id_reg)
{
	if ( confirm("Deseja excluir o registro " + id_reg + " ?") )
	{
        FrmCtrl = ResetFormControle();
		FrmCtrl.acao.value 	= "D";
		FrmCtrl.id.value 	= id_reg;
		FrmCtrl.submit();
	}
}
//------------------------------------------------------------------------------

function OrdAsc(coluna)
{
    FrmCtrl = ResetFormControle();
    FrmCtrl.COL.value   = coluna;
	FrmCtrl.ORDEM.value = 'ASC';
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------

function OrdDsc(coluna)
{
    FrmCtrl = ResetFormControle();
	FrmCtrl.COL.value   = coluna;
	FrmCtrl.ORDEM.value = 'DESC';
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------

function ExecOrdem(coluna,ordem)
{
    FrmCtrl = ResetFormControle();
	FrmCtrl.COL.value   = coluna;
	FrmCtrl.ORDEM.value = ordem;
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------

function ExecAcao(acao,id)
{
    FrmCtrl = ResetFormControle();
	FrmCtrl.id.value 	= id;
	FrmCtrl.acao.value 	= acao;
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------

function ConfirmaExecAcao(acao,id,msg)
{
	if ( confirm(msg) )
	{
        FrmCtrl = ResetFormControle();
    	FrmCtrl.id.value 	= id;
	    FrmCtrl.acao.value 	= acao;
    	FrmCtrl.submit();
        return true;
    }
    return false;
}
//------------------------------------------------------------------------------

function Imprimir()
{
    FrmCtrl = ResetFormControle();
	FrmCtrl.acao.value 	= "IMPRIMIR";
	FrmCtrl.target	    = "_blank";

var pElmNumRegPag = document.getElementById('IMPRESSAO_NUM_REG_PAG');
var pElmNumRegTot = document.getElementById('IMPRESSAO_NUM_REG_TOT');

	FrmCtrl.IMPRESSAO_NUM_REG_PAG.value = pElmNumRegPag.value;
	FrmCtrl.IMPRESSAO_NUM_REG_TOT.value = pElmNumRegTot.value;
	FrmCtrl.submit();
}
//------------------------------------------------------------------------------




function ConfirmaAcao(msg,endereco_ok,endereco_cancela)
{
	if ( confirm(msg) )
	{
		window.open(endereco_ok,"_top","");
		return;
	}

	if (endereco_cancela)
	window.open(endereco_cancela,"_top","");
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//Validação de valores
//------------------------------------------------------------------------------
function isNUMB(c)
{
	if((cx=c.indexOf(","))!=-1)
	{
  		c = c.substring(0,cx)+"."+c.substring(cx+1);
  	}

	if((parseFloat(c) / c != 1))
  	{
  		if(parseFloat(c) * c == 0)
   		{
   			return(1);
   		}
  		else
   		{
   			return(0);
		}
	}
	else
	{
	 return(1);
	}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//Validação de Campos de Formulários
//------------------------------------------------------------------------------

function DestacaControle(idCtrl,ctrlOK)
{
var pCtrl = document.getElementById(idCtrl);
	if ( !pCtrl )
	{
		return false;
 	}

    //controle normal
    //remove o destaque
    if ( ctrlOK == true )
    {
        if ( (pCtrl.CorFundoOriginal != undefined) && (pCtrl.CorFundoOriginal != null) )
        {
            pCtrl.style.backgroundColor = pCtrl.CorFundoOriginal;
        }
        return;
    }

    //controle destacado
    pCtrl.focus();
    if ( pCtrl.style.backgroundColor != "#faa" )
    {   //salva a cor original
        pCtrl.CorFundoOriginal = pCtrl.style.backgroundColor;
    }
    pCtrl.style.backgroundColor = "#faa";
}
//------------------------------------------------------------------------------

//verifica se o campo está em branco
function VerificaBranco(idCtrl,lblCtrl,bPermiteBranco)
{
var pCtrl = document.getElementById(idCtrl);
	if ( !pCtrl )
	{
		return false;
 	}
	
	pStr = pCtrl.value;

	if (pStr == null || pStr == "")
	{
		if (bPermiteBranco==true)
		{
			return false;//não está preenchido 
		}	
	
		alert("O campo '" + lblCtrl + "' não pode estar em branco!");
		DestacaControle(idCtrl);
		return false;
	}

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

//verifica se o campo ultrapassaou os caracteres permitidos
function VerificaLimiteString(idCtrl,lblCtrl,varTamMax)
{
var pCtrl = document.getElementById(idCtrl);
	if ( !pCtrl )
	{
		return false;
 	}

	pStr = pCtrl.value;

	if ( (varTamMax == undefined) && (varTamMax == null) )
	{
        return true;
    }

    //alert(pStr.length + " > " + varTamMax);
    if( pStr == null )
    {
        return true;
    }

	if ( varTamMax > 0 )
	{
        if ( pStr.length > varTamMax)
        {
            if ( pCtrl.tagName == "SELECT" )
            {
                alert("A opção selecionada de '" + lblCtrl + "' é inválida.#" + varTamMax);
            }
            else
            {
                alert("O campo '" + lblCtrl + "' execedeu o limite máximo de " + varTamMax + " caracteres." );
            }

        	DestacaControle(idCtrl);
        	return false;
        }
    }

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

//verifica se um determinado item do combo foi selecionado
function VerificaItemSel(idCtrl,lblCtrl,itemSel)
{
var pCtrl = document.getElementById(idCtrl);
	if ( !pCtrl )
	{
		return false;
 	}
    pStr = pCtrl.selectedIndex;

	if (pStr == itemSel)
	{
		alert("O campo '" + lblCtrl + "' não permite esta opção!");
		DestacaControle(idCtrl);
		return false;
	}

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

function ValidacaoGenerica(idCtrl,lblCtrl,bPermiteBranco,varTamMax)
{
    if ( !VerificaBranco(idCtrl,lblCtrl,bPermiteBranco) )
    {
        return false;
    }


    if ( !VerificaLimiteString(idCtrl,lblCtrl,varTamMax) )
    {
        return false;
    }

return true;
}
//------------------------------------------------------------------------------

function ConvDataDDMMAAAA_AAAAMMDD(dtStr)
{
var dtCh = "/";
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strDay	=dtStr.substring(0,pos1)
var strMonth=dtStr.substring(pos1+1,pos2)
var strYear	=dtStr.substring(pos2+1)
return strYear + dtCh +  strMonth + dtCh + strDay; 	
}
//------------------------------------------------------------------------------

function GetObjDataDDMMAAAA(dtStr)
{
var dtCh = "/";
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strDay	=dtStr.substring(0,pos1)
var strMonth=dtStr.substring(pos1+1,pos2)
var strYear	=dtStr.substring(pos2+1)

var Data = new Object();
 Data.Dia = parseInt(strDay);
 Data.Mes = parseInt(strMonth);
 Data.Ano = parseInt(strYear);

return Data;
}
//------------------------------------------------------------------------------


function ValidaDatas(idCtrl,lblCtrl,dtFutura,dtAntiga,bPermiteBranco,varFormato)
{
//teste
//return true;

	//false=não está preenchido
	//true=está preenchido
//alert( idCtrl +","+ lblCtrl+","+dtFutura+","+dtAntiga+","+bPermiteBranco+","+varFormato);
	if ( !VerificaBranco(idCtrl,lblCtrl,bPermiteBranco) )
	{
		return (bPermiteBranco == true);
	}

	var pCtrl = document.getElementById(idCtrl);
	var pStr  = pCtrl.value;

	var reDate	= "";
	var strDt 	= "";
	var strDtFut= "";
	var strDtAnt= "";
    var bErro = false;

    switch(varFormato)
    {
//var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
//var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
//var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
//var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;

        case "DDMMAAAA":
            //valida bissexto??? reDate = /(((0[13578]|10|12)([-./])(0[1-9]|[12][0-9]|3[01])([-./])(\d{4}))|((0[469]|11)([-./])([0][1-9]|[12][0-9]|30)([-./])(\d{4}))|((2)([-./])(0[1-9]|1[0-9]|2[0-8])([-./])(\d{4}))|((2)(\.|-|\/)(29)([-./])([02468][048]00))|((2)([-./])(29)([-./])([13579][26]00))|((2)([-./])(29)([-./])([0-9][0-9][0][48]))|((2)([-./])(29)([-./])([0-9][0-9][2468][048]))|((2)([-./])(29)([-./])([0-9][0-9][13579][26])))/
            reDate = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
			strDt    = ConvDataDDMMAAAA_AAAAMMDD(pStr);
			strDtFut = ConvDataDDMMAAAA_AAAAMMDD(dtFutura);
			strDtAnt = ConvDataDDMMAAAA_AAAAMMDD(dtAntiga);
			//alert("strDt="+strDt + " ,strDtFut="+strDtFut + "strDtAnt="+strDtAnt);
	        //Fevereiro
/*
O código abaixo não funciona porque ao criar o objeto com datas erradas, ele calcula uma nova data válida
            dtTst = new Date(strDt);
            Ano = dtTst.getFullYear();
            Mes = dtTst.getMonth()+1;
            Dia = dtTst.getDate();
*/
            var Data = GetObjDataDDMMAAAA(pStr);
            Ano = Data.Ano;
            Mes = Data.Mes;
            Dia = Data.Dia;

			//alert("strDt" + strDt + ",Ano="+Ano + " ,Mes="+Mes + ",Dia="+Dia);
            if ( Mes == 2 )
            {
                bBissexto = ( ( (Ano%400 == 0) || ( (Ano%100 != 0) && (Ano%4 == 0) ) ) ? 1 : 0 );
                if ( bBissexto )
                {
                    // bErro = (Dia>29);
                }
                else 
                {
                     //bErro = (Dia>28);
                }
            }

        break;

        case "MMAAAA":
            reDate = /(((0[123456789]|10|11|12)([/])(([1][9][0-9][0-9])|([2][0-9][0-9][0-9]))))/;
        break;
        
        case "DDMM":
            reDate = "^([0-9]|[0,1,2][0-9]|3[0,1])/([\d]|1[0,1,2])$";
        break;
        
    }
    
	if ( !reDate.test(pStr)  || bErro )
	{
		alert(pStr + " NÃO é uma data válida para o campo '" + lblCtrl + "'");
		DestacaControle(idCtrl);
		return false;
	}
	
	if ( strDt == "" )
	{	//não existe como testar
		return true;
	}


var dtTst = new Date(strDt);

	//data futura
	if ( (dtFutura != undefined) && (dtFutura!=null) && (dtFutura!="") )
	{
		var dtFut = new Date(strDtFut);

		if(dtTst.getTime() > dtFut.getTime())
		{
			alert("A data '" + pStr + "' do campo '" + lblCtrl + "' está acima do permitido de '" + dtFutura + "'");
			DestacaControle(idCtrl);
			return false;
		}	  
	}
	
	//data antiga
	if ( (dtAntiga != undefined) && (dtAntiga!=null) && (dtAntiga!="") )
	{
		var dtAnt = new Date(strDtAnt);

		if(dtTst.getTime() < dtAnt.getTime())
		{
			alert("A data '" + pStr + "' do campo '" + lblCtrl + "' está abaixo do permitido de '" + dtAntiga + "'");
			DestacaControle(idCtrl);
			return false;
		}	  
	}

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

function ValidaData(pCtrDia,pCtrMes,pCtrAno)
{
ctrDia=null;
ctrMes=null;
ctrAno=null;

	if ( pCtrDia )
	{
		ctrDia = document.getElementById(pCtrDia);
		if ( ( ctrDia.value>31 ) || (ctrDia.value==0) )
		{
			alert("Dia inválido!\nFavor digitar novamente.");
			DestacaControle(pCtrDia);
			return false;
		}
	}

	if ( pCtrMes )
	{
		ctrMes = document.getElementById(pCtrMes);
		if ( ( ctrMes.value>12 ) || (ctrMes.value==0) )
		{
			alert("Mês inválido!\nFavor digitar novamente.");
			DestacaControle(pCtrMes);
			return false;
		}
	}

	if ( pCtrAno )
	{
		ctrAno = document.getElementById(pCtrAno);
		if ( ( ctrAno.value>2100 ) || (ctrAno.value<1990) )
		{
			alert("Ano inválido!\nFavor digitar novamente.");
			DestacaControle(pCtrAno);
			return false;
		}
	}

	return true;
}
//------------------------------------------------------------------------------
function ValidaEmail(idCtrl, lblCtrl ,varBranco, varMaxTam)
{
	var pCtrl = document.getElementById(idCtrl);
	var pStr  = pCtrl.value;

    pStr = pCtrl.value;
    if ( pStr == null || pStr == "" )
    {//string vazia
        if ( varBranco )
        {
            return true;
        }
    }

    if ( !VerificaLimiteString(idCtrl,lblCtrl,varTamMax) )
    {
        return false;
    }

//var reEmail1 = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
//var reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
var reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
var reEmail = reEmail3;

	//eval("reEmail = reEmail" + pFmt);
	if ( !reEmail.test(pStr))
	{
	   alert("'" + pStr + "' NÃO é um endereço de email válido para o campo '" + lblCtrl + "'");
	   DestacaControle(idCtrl);
       return false;
	}

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

//Enforce max # of characters script- by javascriptkit.com
//Visit JavaScript Kit (http://www.javascriptkit.com) for script
//Credit must stay intact for use
//limit should be an integer representing max # of characters form element accepts
function ForcaQtdChar(what,limit)
{
	if (what.value.length > limit)
	{	
		what.value = what.value.substring(0,limit);	
		alert("A quantidade máxima de "+ limit +" caracteres para este campo foi atingida!");
	}
	window.status = what.value.length + " caracteres digitados.";
return true;		
}
//------------------------------------------------------------------------------
//varBranco=true : permite vazio
function ValidaNumero(idCtrl,lblCtrl,nMin,nMax,varBranco,varTamMax)
{
var pCtrl = document.getElementById(idCtrl);
	if ( !pCtrl)
	{
  		return false;
	}

    pStr = pCtrl.value;
    if ( pStr == null || pStr == "" )
    {//string vazia
        if ( varBranco )
        {
            return true;
        }
    }

	//alert(pCtrl);
	if ( lblCtrl == undefined )
	{
		lblCtrl = "com valor=" + pCtrl.value; 		
	}

	//existem somente numeros ou sinais  - , .
	var strNum = pCtrl.value;

    if ( !VerificaLimiteString(idCtrl,lblCtrl,varTamMax) )
    {
        return false;
    }


var reTeste = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/;//Márcio d'Ávila, 21 de outubro de 2003. Revisão 5, 23 de junho de 2007.
	if ( !reTeste.test(strNum) )
	{
		alert("'" + strNum + "' é um número inválido para o campo '" + lblCtrl + "'");
		DestacaControle(idCtrl);
		return false;	
	}

    //elimina os pontos
	strNumOrg = strNum; 
	strNum = strNum.replace("." , "");
    //troca as virgulas por pontos
    strNum = strNum.replace("," , ".");


	var nNum =  parseFloat(strNum);

	if ( (nMax != undefined) && (nMax!=null) )
	{
        //alert("nNum:" + nNum + ">" + "nMax:" + nMax)
		if(nNum > nMax)
		{
			alert("O valor '" + strNumOrg + "' do campo '" + lblCtrl + "' está acima do permitido de '" + nMax + "'");
			DestacaControle(idCtrl);
			return false;
		}	  
	}

	if ( (nMin != undefined) && (nMin!=null) )
	{
		if(nNum < nMin)
		{
			alert("O valor '" + strNumOrg + "' do campo '" + lblCtrl + "' está abaixo do permitido de '" + nMin + "'");
			DestacaControle(idCtrl);
			return false;
		}	  
	}

DestacaControle(idCtrl,true);
return true;
}		
//------------------------------------------------------------------------------

function ValidaString(idCtrl,lblCtrl,varBranco,varAlpha, varTamMax)
{
	var pCtrl = document.getElementById(idCtrl);
	var pStr  = pCtrl.value;

    pStr = pCtrl.value;
    if ( pStr == null || pStr == "" )
    {//string vazia
        if ( varBranco )
        {
            return true;
        }

		alert("O campo '" + lblCtrl + "' não pode estar em branco!");
		DestacaControle(idCtrl);
        return false;
    }

    if ( !VerificaLimiteString(idCtrl,lblCtrl,varTamMax) )
    {
        return false;
    }

    //verificar somente caracteres
    if ( varAlpha == true )
    {
        var reString = /^[a-zA-Z .]+$/;
	    if( !reString.test(pStr) )
	    {
		   alert("O campo '" + lblCtrl + "' somente permite letras.");
		   DestacaControle(idCtrl);
           return false;
        }
    }

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------

function ValidaNomeArquivo(idCtrl,lblCtrl,varBranco,varExtensao, varTamMax)
{
	var pCtrl = document.getElementById(idCtrl);
	var pStr  = pCtrl.value;

    pStr = pCtrl.value;
    if ( pStr == null || pStr == "" )
    {//string vazia
        if ( varBranco )
        {
            return true;
        }

		alert("O campo '" + lblCtrl + "' não pode estar em branco!");
		DestacaControle(idCtrl);
        return false;
    }

    if ( !VerificaLimiteString(idCtrl,lblCtrl,varTamMax) )
    {
        return false;
    }

    var reArquivo = /^[a-zA-Z0-9-_\.]/;//sem extensão
    if ( varExtensao != "" )
    {
        reArquivo = /^[a-zA-Z0-9-_\.]+\./; //sem extensão
        reArquivo += varExtensao;
    }

    if( !reArquivo.test(pStr) )
    {
	   alert("O campo '" + lblCtrl + "' possue caracteres inválidos.Use letras sem acentos, números , '-' , '.' ou '_'");
	   DestacaControle(idCtrl);
       return false;
    }

DestacaControle(idCtrl,true);
return true;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//Formataçao de Campos
//------------------------------------------------------------------------------
//uso : <input type='text' name='hora' OnKeyUp="FormataCampo(this,'##/##/#### ##:##',event);">
function FormataCampo(obj,mascara,evento)
{
var tecla = evento.keyCode;//Event.keyCode;
var campo = obj.value;
var tam_mascara = mascara.length;

	obj.maxlength = tam_mascara;

	//limpa o campo dos caracteres de formatação
    tam   = campo.length;
	//limpa o texto
	for (i=0; i<tam; i++)
	{
		for (j=0; j<tam_mascara; j++)
		{
			car_mask = mascara.charAt(j);
			if ( car_mask != "#" )
			{
				campo = campo.replace(car_mask, "");
			}
		}
	}

	tam   = campo.length;

	if ( tam > tam_mascara )
	{
		obj.value = obj.value.substring(0,mascara.length);
	  	return;
	}

	novo_valor = "";
    if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105)
    {
 		idx_car = 0;
		for (i=0; i<tam_mascara; i++)
		{
			car 	 = campo.charAt(idx_car);
			car_mask = mascara.charAt(i);

			if ( idx_car < tam )
			{
				if ( car_mask=="#" )
				{
					novo_valor += car;
					idx_car++;
					window.status = novo_valor;
				}
				else
				{
					novo_valor += car_mask;
				}
			}
		}

		obj.value = novo_valor;
	}
}
//------------------------------------------------------------------------------

function Limpar(valor, validos) {
  // retira caracteres invalidos da string
  var result = "";
  var aux;
  for (var i=0; i < valor.length; i++)
  {
	aux = validos.indexOf(valor.substring(i, i+1));
	
   	if (aux>=0)
	{
		aux = valor.substring(i, i+1);
		
    	result += aux;
	}
 }

  //alert(valor.length + ":or" + valor + " - nv:" + result);


 return result;
}
// ------------------------------------------------------------------------------------------ //

function FormataDinheiroOnKeyUp(campo,tammax,teclapres,decimal)
{
  var tecla = teclapres.keyCode;
  strvr 	    = Limpar(campo.value,"0123456789-");
  campo.value  = strvr;
  
  var vrFl = 0;	
  vr = "";  
		
 if (strvr.length)
 {    
  vrFl = parseFloat(strvr);
  vr 	= new String(Math.abs(strvr));
 }

  tam	    = vr.length;
  dec	    = decimal

  
  
if(tam < tammax && tecla != 8){
  tam = vr.length + 1;
}

if(tecla == 8 ) {
  tam = tam - 1 ;
}

if( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{
 if ( tam <= dec )
 {
   campo.value = vr;
 }

 if( (tam > dec) && (tam <= 5) )
 {
   campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam );
 }

 if( (tam >= 6) && (tam <= 8) ){
   campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam );
 }

 if( (tam >= 9) && (tam <= 11) ){
   campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
 }

 if( (tam >= 12) && (tam <= 14) ){
    campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam );
 }

 if ( (tam >= 15) && (tam <= 17) ) {
    campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam );
 }
 
	//alert(campo.value);
	if ( vrFl < 0 && tam>0)
	{
    	campo.value = "-" + campo.value;
	} 
 
 }
 
}
//------------------------------------------------------------------------------

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/number/fmt-money [rev. #2]
function formatMoney(n, c, d, t)
{
	c = isNaN(c = Math.abs(c)) ? 2 : c;
	d = d == undefined ? "," : d;
	t = t == undefined ? "." : t;
	s = n < 0 ? "-" : "";
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "";
	j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") 
	+ i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
	+ (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
//------------------------------------------------------------------------------

function FmtNumOnKeyUp(campo,eEvento, decimal)
{
var tecla = eEvento.keyCode;

	if( (tecla < 48) || (tecla > 105) )
	{//não numero
		return;
	}

	//alert( campo.value.length + " de " + campo.maxLength )

	decimal = ( (decimal == undefined) ? 2 : decimal);
	
	//elimina separadores para obter um inteiro
	var n = Limpar(campo.value,"0123456789-,.");
	campo.value = n;
	
	n = n.replace("." , "");		
	n = n.replace("," , "");		


	if ( n.length <= decimal)
	{
		return;	  
	}
	
	//converte para float de acordo com as casas decimais especificadas
//alert( "n=" + n + "decimal="+decimal);
	n = parseFloat(n)/( Math.pow(10,decimal) );


	campo.value = formatMoney(n, decimal, ',' , '.');
    campo.focus();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//Interação com usuário
//------------------------------------------------------------------------------
function JanelaPopUp(endereco_pagina, nome_pagina, largura, altura, rolagem,extra)
{
	var pos_esquerda = (screen.width - largura) / 2;
	var pos_superior = (screen.height - altura) / 2;
	var propriedades = " scrollbars=" + rolagem ;

	if (extra)
	{
		propriedades = propriedades + "," + extra;
	}	

	if (altura)
	{
		propriedades = propriedades + ", height=" + altura;
		propriedades = propriedades + ", top=" + pos_superior;
	}	

	if (largura)
	{
		propriedades = propriedades + ", width=" + largura;
		propriedades = propriedades + ", left=" + pos_esquerda;
	}	

	window.open(endereco_pagina, nome_pagina, propriedades);
}
//------------------------------------------------------------------------------

function MostraFigura(figura)
{
	win = window.open(figura,"figura","resizable=1,scrollbars=1,width=300,height=300");
	if ( win )
	win.window.focus();
}
//------------------------------------------------------------------------------

function MostrarEsconder(obj)
{
var el = document.getElementById(obj);
	if ( el )
	{
		el.style.display = (el.style.display == "none") ? "" : "none";
	}		
}
//------------------------------------------------------------------------------

function Marcador(elemento,evento)
{
	if(evento == 2)//clicado
	{
		elemento.LinhaSelecionada = !elemento.LinhaSelecionada;
		if ( elemento.LinhaSelecionada )
		{
			elemento.style.backgroundColor = "#ffc";
		}
		else
		{
			//elemento.cor_original = 
			elemento.style.backgroundColor = elemento.cor_original;
		}	
		return;
	}

	if(evento == 0)//over = rosa
	{
		if ( elemento.LinhaSelecionada )
		{	
			elemento.style.backgroundColor = "#dfd";
		}
		else
		{
			//salva a cor original
			elemento.cor_original = elemento.style.backgroundColor;
			elemento.style.backgroundColor = "#fdd";
		}
		
		return;
	}
	
	if(evento == 1)//out = cor normal
	{
		if ( elemento.LinhaSelecionada )
		{
			elemento.style.backgroundColor = "#ffc";
			return;
		}
		
		elemento.style.backgroundColor = elemento.cor_original;
	}
}
//------------------------------------------------------------------------------

function MarcadorLinha(e)
{
	//this.value
	if(!e)
	{
		e = window.event;
	}

	if(!e)
	{
		return;
	}

	elemento = this;
	evento  = e.type;

	if(evento == "click")//clicado
	{
		Marcador(elemento,2);
	}

	if(evento == "mouseover")//over = rosa
	{
		Marcador(elemento,0);
	}
	
	if(evento == "mouseout")//out = cor normal
	{
		Marcador(elemento,1);
	}
}
//------------------------------------------------------------------------------

//Param: Modo=0 ou default
function InicializaTabela(idTabela,Modo)
{
	var tbl = document.getElementById(idTabela);
	var TotalLinhas = tbl.rows.length;
 
 	for(i=0; i<TotalLinhas; i++)
 	{
		linha = tbl.rows[i];
		linha.onclick 		= MarcadorLinha;
		linha.onmouseover	= MarcadorLinha;
		linha.onmouseout 	= MarcadorLinha;
		linha.id			= idTabela + '_L' + (i+1);
		
		//linha.setAttribute('align',AlinhamentoLinha);
	  if ( (Modo == undefined) || (Modo=null) || (Modo=0) )
	  {
		  if (i%2)
		  {
        //linha.setAttribute('bgcolor',"#eeeeee");
			  //linha.bgcolor = "#eeeeee";
			  linha.style.backgroundColor = "#eeeeee";
		  }
		  else
		  {
        //linha.setAttribute('bgcolor',"#ffffff");
			  //linha.bgcolor = "#ffffff";
			  linha.style.backgroundColor = "#ffffff";
		  }
		}
 	}
}
//------------------------------------------------------------------------------


function PesquisaNome(campo,idlista)
{
campo=campo.value;
campo=campo.toLowerCase();

 obj_lista = document.getElementById(idlista);
 
 if ( obj_lista )
 {
   
 }

 tamanho= obj_lista.length;

   for (i=0; i<tamanho; i++)
   {
        aux=eval('obj_lista.options['+i+'].text').toLowerCase();

        if ( aux.indexOf(campo) != -1 )
        {
            obj_lista.selectedIndex=i;
            i=tamanho;
        }
   }
}
//------------------------------------------------------------------------------

function LimparCampo(id_campo)
{
	el = document.getElementById(id_campo);
	if ( !el || el==undefined )
	{
		return;		
	}		

	if ( el.value != undefined )
	{
		el.value = "";
	}

	if ( el.innerHtml != undefined )
	{
		el.innerHtml = "";
	}

    el.focus();
}
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

