/******************************************************************
'	Include: Generic.js
'	Author: (Fabrica Web CPM)	
'	Descrição: Funcoes genericas em JavaScript
'******************************************************************/
//'Inicializacao de Variaveis 

//bMenu = 0;
//bCalendarResources = 0;
var bExplorer = (document.all) ? 1: 0;


	/******************************************************************
	'	funcao: IsNumeric
	'	Author: (Fabrica Web CPM)	
	'	Descrição: Verifica se valor enviado como parametro 
	'   possui valor numerico
	'******************************************************************/
	function IsNumeric(Valor)
	{
	    return !isNaN(Valor);
	}

	/******************************************************************
	'	funcao: isBissexto
	'	Descrição: Verifica se valor enviado e um ano bissexto
	'******************************************************************/
	function isBissexto(iAno)
	{
		var bRet;
		bRet = false;
		if (iAno % 4 == 0 && (iAno % 100 !=0 || iAno % 400 ==0 ))
			bRet = true;
		return bRet;
	}

	/******************************************************************
	'	funcao: isDate
	'	Descrição: Verifica se valor enviado e uma data valida
	'******************************************************************/
	function isDate(sData)
	{
		var bRet;
		var i;
		bRet = true;

		if (sData.length != 10)
		    bRet = false;
		
		if (bRet)
		{
			i = 0;
			while (i < sData.length && bRet)
			{
				if (i == 2 || i == 5)
				{
					if (sData.charAt(i) != "/")
						bRet = false;
				}
				else
				{
					if (!IsNumeric(sData.charAt(i), 0))
						bRet = false;
				}
				i++
			}
			}
		if (bRet)
		{
			iDia = parseInt(sData.substring(0, 2), 10);
			iMes = parseInt(sData.substring(3, 5), 10);
			iAno = parseInt(sData.substring(6, 10), 10); 
			
			if (iMes < 1 || iMes > 12)
				bRet = false;
			if (iAno < 1)
				bRet = false;
		}
		if (bRet)
		{
			if (iMes == 1 || iMes == 3 || iMes == 5 || iMes == 7 || iMes == 8 || iMes == 10 || iMes == 12)
			{
				if (iDia < 1 || iDia > 31)
					bRet = false;
			}
			if (iMes == 2)
			{
				if (isBissexto(iAno))
				{
					if (iDia < 1 || iDia > 29)
						bRet = false;
				}
				else
				{
					if (iDia < 1 || iDia > 28)
						bRet = false;
				}
			}
			if (iMes == 4 || iMes == 6 || iMes == 9 || iMes == 11)
			{
				if (iDia < 1 || iDia > 30)
					bRet = false;
			}
		}

		return bRet;
	}

	/******************************************************************
	'	funcao: ComparaDatas
	'	Descrição: Compara datas no formato dd/mm/aaaa -
		Tipos de Retorno -1  = Uma das datas esta com o formato invalido
					      0  = As duas datas são iguais
						  1  = A 1ª data é a mais recente
						  2  = A 2ª data é a mais recente
	'******************************************************************/
	function ComparaDatas(sData1, sData2)
	{
		if ( (!isDate(sData1)) || (!isDate(sData2)) )
			return (-1);
		else if (sData1 == sData2)
			return (0);
		else
		{
			var lData1 = parseFloat(sData1.substring(6, 10) + sData1.substring(3, 5) + sData1.substring(0, 2))
			var lData2 = parseFloat(sData2.substring(6, 10) + sData2.substring(3, 5) + sData2.substring(0, 2))
			if (lData1>lData2)
				return(1);
			else
				return(2);
		}
	}

	/******************************************************************
	'	funcao: IsTime
	'	Descrição: valida hora no formato hh:mm:ss
	'******************************************************************/
	function IsTime(sTime)
	{
	   var i;

	   for (i = 0; i < sTime.length; i++)
	   {
	      if ((sTime.charAt(i) < "0" || sTime.charAt(i) > "9") && sTime.charAt(i) != ":")
	      {
	         return (false);
	      }
	   }
	   
	   if (parseFloat(sTime.substring(0,2)) > 23)
	      return (false);

	   if (sTime.substring(2,3) != ":")
	      return (false);
	      
	   if (parseFloat(sTime.substring(3,5)) > 59)
	      return (false);

	   if (sTime.substring(5,6) != ":")
	      return (false);

	   if (parseFloat(sTime.substring(6,8)) > 59)
	      return (false);
	         
	   return (true);
	}


	/******************************************************************
	'	funcao: ValidaValor
	'	Author: Fabrica Web CPM
	'	Descrição: Verifica se Expressao contem um valor numerico valido
	'******************************************************************/
	function ValidaValor(Expressao)
	{
		var sExpressao = Expressao;
		var sSepDecimal = sExpressao.substring(sExpressao.length-3,sExpressao.length-2);
		var sInteiro    = sExpressao.substring(0,sExpressao.length-3);
		var sDecimal    = sExpressao.substring(sExpressao.length-2,sExpressao.length);
		if ((sSepDecimal=="." || sSepDecimal==",") && (IsNumeric(sInteiro) && IsNumeric(sDecimal)) && sDecimal.length==2 && sInteiro.length>0)
			return true;
		else
			return false;
	}

	/******************************************************************
	'	funcao: CriaArray
	'	Author: Fabrica Web CPM
	'	Descrição: Retorna um Array com a quantidade informada
	'              pelo parametro vQuantidade
	'******************************************************************/
	function CriaArray(vQuantidade)
	{
	   this.length = vQuantidade
	   for (vCounter = 1; vCounter <= vQuantidade; vCounter++)
	   {
	      this[vCounter] = ""
	   }
	}

	/******************************************************************
	'	funcao: Replace
	'	Author: Fabrica Web CPM
	'	Descrição: Retorna um string com a troca solicitada atraves 
	'			   dos parametros StringProcurada, NovaString
	'******************************************************************/
	function Replace(Expressao, StringProcurada, NovaString)
	{
		return (Expressao.replace(StringProcurada,NovaString))
	}

	/******************************************************************
	'	funcao: LTrim
	'	Author: Fabrica Web CPM
	'	Descrição: Retorna um string sem espacos no lado esquerdo
	'******************************************************************/
	function LTrim(Expressao)
	{
		var sExpressao = Expressao
		var i = 0
		if (sExpressao!="")
		{
			iTamanho = sExpressao.length
			for (i==0;i<iTamanho;i++)
			{
				if (sExpressao.charAt(i)==" ")
				{
					sExpressao = sExpressao.substring(i+1,iTamanho)
				}
				else
				{
					break
				}
			}
		}

		return sExpressao
	}


	/******************************************************************
	'	funcao: RTrim
	'	Author: Fabrica Web CPM
	'	Descrição: Retorna um string sem espacos no lado direito
	'******************************************************************/
	function RTrim(Expressao)
	{
		var sExpressao = Expressao
		if (sExpressao!="")
		{  
			iTamanho = sExpressao.length
			for (i=iTamanho-1;i<0;i--)
			{
				if (sExpressao.charAt(i)==" ")
					sExpressao = sExpressao.substring(0,i)
				else
					break
			}
		}
		return sExpressao
	}

	/******************************************************************
	'	funcao: Trim
	'	Author: Fabrica Web CPM
	'	Descrição: Retorna um string sem espacos nos 
	'			   lados direito e esquerdo
	'******************************************************************/
	function Trim(Expressao)
	{
		var sExpressao = Expressao
		sExpressao = LTrim(sExpressao)
		sExpressao = RTrim(sExpressao)
		return sExpressao
	}

	/******************************************************************
	'	funcao: StringToNumber
	'	Descrição: Retorna o valor numerico do string informado atraves 
	'			   do parametro sValor
	'******************************************************************/
	function StringToNumber(sValor)
	{	var sExpressao = '', iTamanho, i;
		if (sValor.length > 0)
		{  
			iTamanho = sValor.length
			for (i=0;i<iTamanho;i++)
			{
				if (isNaN(sValor.charAt(i))!=true)
					sExpressao += sValor.charAt(i);
			
			}
		}
		return sExpressao;
	}

	/******************************************************************
	'	funcao: FormataNumero
	'	Descrição: Retorna string formatada para valor 
	'         onde Expressao: String contendo o valor
	'			   SepMilhar: Separador de milhar
	'			  SepDecimal: Separador Decimal
	'		NumCasasDecimais: Numero de casas decimais
	'	ex: Variavel_Valor_Formatada = FormataNumero (Variavel_Valor,".",",",2)
	'******************************************************************/
	function FormataNumero(Expressao , SepMilhar, SepDecimal, NumCasasDecimais)
	{
		var sStringRet = "";
		var sExpressao = Expressao;
		var sSepMilhar = SepMilhar;
		var sSepDecimal = SepDecimal;
		var iNumCasasDecimais = parseFloat(NumCasasDecimais);
		var iTamExpressao = 0;
		var sInteiro;
		var sDecimais;
		var bNumNegativo = false;
		var iPosUltimoSepString = 0;
		var iPosPenultimoSepString = 0;
		var iPosUltimoPtoString = 0;
		var iPosPenultimoPtoString = 0;
		var iPosUltimoVirgString = 0;
		var iPosPenultimoVirgString = 0;
		var iPosCorretaSepDecimal = 0;
		var bMsgTrace = false


		var sMsg = "Argumentos de entrada:\n"
		sMsg = sMsg + "\nsExpressao = ["+ sExpressao +"]" 
		sMsg = sMsg + "\nsSepMilhar = ["+ sSepMilhar +"]" 
		sMsg = sMsg + "\nsSepDecimal = ["+ sSepDecimal +"]" 
		sMsg = sMsg + "\niNumCasasDecimais = ["+ iNumCasasDecimais +"]" 
		if (bMsgTrace) alert(sMsg)
		//Verifica se a expressao informada representa um numero negativo.
		if (sExpressao.indexOf("-") != -1)
		{
			bNumNegativo = true
			sExpressao = Replace(sExpressao,"-","")
		}
		if (bMsgTrace) alert("bNumNegativo = " + bNumNegativo + " sExpressao = " + sExpressao)
		//Consistencias para tornar coerente os argumentos de entrada.
		if (sSepDecimal=="" || iNumCasasDecimais==0)
		{
			sSepDecimal=""
			iNumCasasDecimais=0
		}
		if (sSepDecimal==sSepMilhar && sSepDecimal==".")
			sSepMilhar = ","
		else if (sSepDecimal==sSepMilhar && sSepDecimal==",")
			sSepMilhar = "."

		if (sExpressao!="") iTamExpressao = sExpressao.length
		if (bMsgTrace) alert("iTamExpressao = " + iTamExpressao)

		//Verifica o possivel separador decimal da string passada como argumento.
		iPosUltimoPtoString = sExpressao.lastIndexOf(".")
		iPosPenultimoPtoString = sExpressao.lastIndexOf(".", iPosUltimoPtoString - 1)
		iPosUltimoVirgString = sExpressao.lastIndexOf(",")
		iPosPenultimoVirgString = sExpressao.lastIndexOf(",", iPosUltimoVirgString - 1)
		if (bMsgTrace) alert("iPosUltimoPtoString pto= " + iPosUltimoPtoString)
		if (bMsgTrace) alert("iPosPenultimoPtoString pto= " + iPosPenultimoPtoString)
		if (bMsgTrace) alert("iPosUltimoVirgString pto= " + iPosUltimoVirgString)
		if (bMsgTrace) alert("iPosPenultimoVirgString pto= " + iPosPenultimoVirgString)
		if (iPosUltimoPtoString>=iPosUltimoVirgString)
		{
			iPosUltimoSepString = iPosUltimoPtoString
			iPosPenultimoSepString = iPosPenultimoPtoString
		}
		else
		{
			iPosUltimoSepString = iPosUltimoVirgString
			iPosPenultimoSepString = iPosPenultimoVirgString
		}
		iPosCorretaSepDecimal = iTamExpressao - (iNumCasasDecimais + 1)
		if (bMsgTrace) alert("iPosUltimoSepString pto= " + iPosUltimoSepString)
		if (bMsgTrace) alert("iPosPenultimoSepString pto= " + iPosPenultimoSepString)
		if (bMsgTrace) alert("iPosCorretaSepDecimal = " + iPosCorretaSepDecimal)
		if (iPosUltimoSepString==-1 && iPosPenultimoSepString== -1)
		{
		if (bMsgTrace) alert("ajuste 0")
			sExpressao = sExpressao + String(iNumCasasDecimais,"0")
		}
		else if (iPosUltimoSepString>=iPosCorretaSepDecimal && iPosPenultimoSepString== -1)
		{
		if (bMsgTrace) alert("ajuste 1")
			sExpressao = sExpressao + String(iPosUltimoSepString-iPosCorretaSepDecimal,"0")
		}
		else if(iPosUltimoSepString<iPosCorretaSepDecimal && iPosPenultimoSepString== -1)
		{
		if (bMsgTrace) alert("ajuste 2")
			sExpressao = sExpressao.substring(0,iPosUltimoSepString + iNumCasasDecimais + 1)
		}
		else
		{
		if (bMsgTrace) alert("ajuste 3")
			sExpressao = sExpressao + String(iNumCasasDecimais,"0")
		}

		if (bMsgTrace) alert("sExpressao apos ajuste dos decimais = " + sExpressao)

		//Retira qualquer tipo de formatacao da string passada como argumento.
		sExpressao = Replace(sExpressao,".","")
		sExpressao = Replace(sExpressao,",","")
		iTamExpressao = sExpressao.length
		if (bMsgTrace) alert("sExpressao apos retirada da formatacao = " + sExpressao + " iTamExpressao = " + iTamExpressao)
		sInteiro = sExpressao.substring(0,iTamExpressao-iNumCasasDecimais)
		if (bMsgTrace) alert("sInteiro = " + sInteiro)
		sDecimais = sExpressao.substring(iTamExpressao-iNumCasasDecimais,iTamExpressao)
		if (bMsgTrace) alert("sDecimais = " + sDecimais)

		//Formata a parte inteira com o separador de milhar selecionado.
		sInteiroFormatado = '';
		j = 0;
		for (i = sInteiro.length; i > 0; i--)
		{
			j = j + 1;
			if (j == 4)
			{
				sInteiroFormatado = sInteiro.substring(i,i-1) + sSepMilhar + sInteiroFormatado;
				j = 1;
			}
			else
			{
				sInteiroFormatado = sInteiro.substring(i,i-1) + sInteiroFormatado;
			}
		}

		if (bMsgTrace) alert("sInteiroFormatado = " + sInteiroFormatado)
		//Formatacao da string de retorno
		if (bNumNegativo)
			sStringRet = "-" + sInteiroFormatado + sSepDecimal + sDecimais
		else
			sStringRet = sInteiroFormatado + sSepDecimal + sDecimais

		return(sStringRet)
	}


	/******************************************************************
	'	funcao: ObtemParameter
	'	Descrição: Obtem um parametro dentro de uma string no padrão de 
	'			   uma QueryString
	'         onde sExpressao: String no formato QueryString 
	'				     Item: Sequencia
	'******************************************************************/
	function ObtemParameter(sExpressao, sItem)
	{
	   var PosIni, PosFim, Result;
	   PosIni = sExpressao.indexOf(sItem,0);
	   if (PosIni > -1)
	   {
	      PosIni += sItem.length + 1;
	      PosFim = sExpressao.indexOf("&",PosIni);
	      if (PosFim == -1 )
	         PosFim = sExpressao.length;
	      Result = sExpressao.substring(PosIni,PosFim);
	   }
	   else
	      Result = "";
	   return (Result);      
	}

	function ConcatenaLista(Lista)
	{
	var Result="";
	var i;
	
	for (i=0; i<Lista.options.length; i++)
		{
		if (Result != "") Result = Result + "||";
		Result = Result + Lista.options[i].value;
		}
	return Result;
	}
	
	/******************************************************************
	'	funcao: AlinhaColunaHTML
	'	Descrição: Retorna campo com alinhamento conforme o parametro 
	'         onde Alinhamento: 'E' - Alinha a esquerda
	'						    'D' - Alinha a Direita
	'						    'C' - Centraliza
	'******************************************************************/
	function AlinhaColunaHTML(ConteudoColuna,TamColuna,Alinhamento)	
	{
	   var i,spaces = "";
	   
	   //ConteudoColuna = Trim(ConteudoColuna);
	   if (TamColuna <= ConteudoColuna.length)
	   {
	      ConteudoColuna = ConteudoColuna.substring(0,TamColuna);
	   }      
	   else
	   {
	      TamColuna -= ConteudoColuna.length;
	      if (Alinhamento == "C") 
	         TamColuna /= 2;
	      for(i=0;i<TamColuna;i++)
	      {
	         spaces += " ";
	      }
	      switch (Alinhamento)
	      {
	         case ("E"):
	         {
	            ConteudoColuna = ConteudoColuna + spaces;
	            break;
	         }
	         case ("D"):
	         {
	            ConteudoColuna = spaces + ConteudoColuna;
	            break;
	         }
	         case ("C"):
	         {
	            ConteudoColuna = spaces + ConteudoColuna + spaces;
	            break;
	         }
	      }
	   }
	  return ConteudoColuna;  
	}

	/******************************************************************
	'	funcao: IsEmpty
	'	Descrição: Verifica se valor enviado possue algum valor
	'******************************************************************/
	function IsEmpty(Conteudo)
	{
	     return Trim(Conteudo).length > 0;
	}



	/******************************************************************
	'	funcao: AutoPreencher
	'	Descrição: Aciona o autopreencimento do campo de input 
	'			   posicionando no proximo campo indicado pelo 
	'			   parametro proximoControle
	'******************************************************************/
	function AutoPreencher(Controle,proximoControle){
			if (Controle.value.length == Controle.maxLength)
					proximoControle.focus();
						
	}

	/****************************************************************************
	/	function: setBarras
	/	Descrição: Formatacao de Campo de data durante o preenchimento (ativada pelo evento onKeyUp)
	*****************************************************************************/

	function setBarras(oTxtData)
	{	
		var dados=oTxtData.value;
		var size=dados.length;
		if(size==3 && dados.substring(2,3)!="/")
		{
			oTxtData.value=dados.substring(0,2)+"/"+dados.substring(2,3);
		}
		if(size==6 && dados.substring(5,6)!="/")
		{
			oTxtData.value=dados.substring(0,5)+"/"+dados.substring(5,6);
		}
		
	}

	/****************************************************************************
	/	function: DateFormat
	/	Descrição: Formatacao de Campo de data 
	/   ex: 	<input type='text' id=txtData onkeypress='setBarras(this);' onblur ='this.value = DateFormat(this);'>
	*****************************************************************************/

	function DateFormat(oTxtData)
	{	var dados= StringToNumber(oTxtData.value);
		if ((dados.length==8)&&(isDate(dados.substring(0,2) + '/' + dados.substring(2,4) + '/' +  dados.substring(4,8))))
		{
			return (dados.substring(0,2) + '/' + dados.substring(2,4) + '/' +  dados.substring(4,8));
		}
		else
		{
		if (oTxtData.value!="")
		
			return ('##/##/####');			
		else
			return ('');			
		}
		
	}


	
	/****************************************************************************
	/	funcao: CalculaDigMod11
	/	Descrição: Calcula o digito verificador (modulo 11) de um numero
	*****************************************************************************/
   function CalculaDigMod11(numero, fator)
   {
      var iTotal, iFator, iNumero, iTamanho, iResto, iDigito;
       
      iFator = 2;
      iTotal = 0;

      for (iTamanho=numero.length-1;iTamanho>=0;iTamanho--)
      {
        iNumero = parseFloat(numero.charAt(iTamanho)) * iFator;
        iTotal += iNumero;
        iFator = ((iFator == fator) ? 2 : iFator + 1);
      }
      iResto = iTotal%11;
      if (iResto == 0 || iResto == 1)
          iDigito = 0;
      else
          iDigito = 11 - iResto;
      return (iDigito+"");
   }

	
	/****************************************************************************
	/	funcao: RecuperarDV
	/	Descrição: Retorna o digito verificador do CNPJ
	*****************************************************************************/	
   function RecuperarDV(sCnpj)
   {
      var sDigitoI, sDigitoII, sZeros;
       
      sZeros = "00000000000000";
      sCnpj = LimpaNumero(sCnpj) + "00";
      sDigitoI = "";
      sDigitoII = "";
      //sCnpj = sZeros.substring (0, 14 - sCnpj.length) + sCnpj;
      sDigitoI = CalculaDigMod11 (sCnpj.substring(0,12), 9);
      sCnpj = sCnpj.substring (0,12) + sDigitoI + "0";
      sDigitoII = CalculaDigMod11 (sCnpj.substring(0,13), 9);
      return (sDigitoI + sDigitoII);
   }
	
	
	/****************************************************************************
	/	funcao: FormataCnpj
	/	Descrição: Formata um numero de CNPJ
	*****************************************************************************/
   function FormataCnpj(sCnpj)
   {
      var iCont, iAltCont=1, retorno;
      
      sCnpj = LimpaNumero(sCnpj);   
      for (iCont=sCnpj.length;iCont>0;iCont--)
      {
         switch (iAltCont)
         {
            case (3):
            {
               retorno = "-" + retorno;
               break;
            }
            case (8):
            {
               retorno = "/" + retorno;
               break;
            }
            case (12):
            {
               retorno = "." + retorno;
               break;
            }
            case (16):
            {
               retorno = "." + retorno;
               break;
            }
            default:
            {
               retorno = sCnpj.charAt(iCont) + retorno;
               iCont--;
            }
         }
         iAltCont++;
      }
   }

                    
	/****************************************************************************
	/	funcao: LimpaNumero
	/	Descrição: Retira caracteres nao numericos de um numero
	*****************************************************************************/
   function LimpaNumero(sNum)
   {
      var iCont,retorno="";
      for (iCont=0;iCont<sNum.length;iCont++)
         if (!isNaN(sNum.charAt(iCont)))
            retorno += sNum.charAt(iCont);
      return (retorno);
   }

	/**********************************************************************
	' Função: valor
	' Descrição: Formatação de valores monetários
	' Ex.: onBlur="this.value=valor(frmPrincipal.txtValorProvisoes.value);"
	'**********************************************************************/
	function valor(val1)
	{
	size = val1.length;
	pos = val1.indexOf(",");
	ponto = val1.indexOf(".");
		// retira qualquer formatação da string passada
		if (ponto!="-1")
			{
			val2 = val1.substring(0,ponto);
			val3 = val1.substring(ponto+1,size);
			ponto2 = val3.indexOf(".");
				if (ponto2 == "-1")
					{
					val1 = val2 + val3;
					}
				else
					{
					val4 = val3.substring(0,ponto2);
					val5 = val3.substring(ponto2+1,size);
					val1 = val2 + val4 + val5;
					size = val1.length;
					pos = val1.indexOf(",");
					}
			size = val1.length;
			pos = val1.indexOf(",");
			}
		//verifica ocorrência de casas decimais
		if (pos == "-1")
			{
				if (size<=3) 
					{
					if (!isNaN(val1))
						{
						return val1 + ",00";
						}
					else
						{
						return ",00"
						}
					}
				else if (size>3 && size<=6)
					{
					inteiro=val1.substring(size-3,size);
					inteiro1=val1.substring(0,size-3);
						if (!isNaN(inteiro) && !isNaN(inteiro1))
							{
							return inteiro1 + "." + inteiro + ",00"; 
							}
						else
							{
							return ",00"
							}
					}
				else
					{
					inteiro=val1.substring(size-3,size);
					inteiro1=val1.substring(size-3,size-6);
					inteiro2=val1.substring(0,size-6);
					if (!isNaN(inteiro) && !isNaN(inteiro1) && !isNaN(inteiro2))
							{
							return inteiro2 + "." + inteiro1 + "." + inteiro + ",00"; 
							}
						else
							{
							return ",00"
							}
					}
			}
		else
			{
			inteiro = val1.substring(0,pos);
			decimal = val1.substring(pos,size);
			size2 = inteiro.length;
			if (decimal.length != 3)
			{
			return ",00"
			}
			else
				{
				validaDecimal = decimal.substring(decimal.length-2,decimal.length);
					if (!isNaN(validaDecimal))
						{
							if (size2<=3) 
								{
									if (!isNaN(inteiro))
										{
										return inteiro + decimal;
										}
									else
										{
										return ",00"
										}
								}
							else if (size2>3 && size2<=6)
								{
								inteiro=val1.substring(size2-3,size2);
								inteiro1=val1.substring(0,size2-3);
									if (!isNaN(inteiro) && !isNaN(inteiro1))
										{
										return inteiro1 + "." + inteiro + decimal; 
										}
									else
										{
										return ",00"
										}
								}
							else
								{
								inteiro=val1.substring(size2-3,size2);
								inteiro1=val1.substring(size2-3,size2-6);
								inteiro2=val1.substring(0,size2-6);
									if (!isNaN(inteiro) && !isNaN(inteiro1) && !isNaN(inteiro2))
										{
										return inteiro2 + "." + inteiro1 + "." + inteiro + decimal;
										}
									else
										{
										return ",00"
										}
								}
						}
					else
						{
						return ",00";
						}
				}
			}
	}
	
		
	/**********************************************************************
	' Função: AlterarParentStyle
	' Descrição: Altera estilos para um determinado TAG com relacionamento 
	'			 Superior ao objeto atual
	' Ex.: AlterarParentStyle(this, 'TD', 'CelulaSelecionada')
	'**********************************************************************/
	function AlterarParentStyle(oElement, ParentTag, ClassName)
	{
		if (bExplorer)
		{
			while (oElement.tagName!=ParentTag)
				{oElement=oElement.parentElement;}
		}
		else
			{
				while (oElement.tagName!=ParentTag)
					{oElement=oElement.parentNode;}
			}
		oElement.className = ClassName;
		 
	}

	/****************************************************************************
	/	funcao: upperCase
	/	Descrição: Converte os caracteres de um campo p/ maiusculo
	*****************************************************************************/
   function upperCase(campo)
   {
      campo.value = campo.value.toUpperCase();
   }

	/****************************************************************************
	/	funcao: browserDetection
	/	Descrição: Detecta o Browser Utulizado
	/	Retorno: IE para Internet Explorer, Netscape para Netscape e NA para outros
	*****************************************************************************/
function browserDetection()
{
	var browserName=navigator.appName; 	
	if (browserName=="Netscape")
	{ 
		return "Netscape";  	
	}
	else 
	{ 
 		if (browserName=="Microsoft Internet Explorer")
 		{
			return "IE";  	
		}
 		else
  		{
			return "NA";
   		}
   	}
}

	/****************************************************************************
	/	funcao: valida_email
	/	Descrição: Valida um email, retornando true ou false
	/	Retorno: true ou false
	/	Versão: Beta 1
	*****************************************************************************/

function valida_email(email)
{
	var bMail, ind_at, tam_mail, str_esp, i, j;
	bMail = true;
	str_esp = "~!`;:#@$%^&*()+=\|,'áÄÁäàÀËëéèÈíÍìÌóÖÓÒòúÜÚùÙ[]{}";
	email = Trim(email);
	tam_mail = email.length;
	if(tam_mail  < 5)
		bMail = false;
	else
	{
		ind = email.indexOf("@");
		if(ind == -1 || ind < 1 || ind > tam_mail-4)
			bMail = false;
		else
		{
			email =  email.substring(0, ind) + email.substring(ind+1, tam_mail);
			for(i = 0; i < email.length; i++) 
				for(j = 0; j < str_esp.length && bMail; j++)
				{
					if(email.charAt(i) == str_esp.charAt(j))
						bMail = false; 
				}
		}
	}	
	return bMail;
}

function JSIsDigitoCNPJ (CPFCNPJ, ipesoini, ipesofim) {
var isoma = 0, ipeso = ipesoini, ipos, iresto;
 
	while (CPFCNPJ.length < 15){
		CPFCNPJ = "0" + CPFCNPJ;
	}
	
	//faz a varredura em todos os numeros para a verificacao
	ipos = CPFCNPJ.length;
	while (ipos)
	{
		isoma+= (CPFCNPJ.substring((ipos - 1), ipos ) * ipeso);
		ipeso++;
		if (ipeso > ipesofim)
		ipeso = ipesoini;
		ipos-=1;
	}
	iresto = isoma % 11;
	iresto = 11 - iresto;
	return iresto;
} 


function JSIsCNPJ (obj){
var err=0, iaux, aformatado;
	a=obj.value;

	while (a.length < 15){
		a = "0" + a;
	}
	
	if (a.length == 15){
		aformatado = a.substring(0, 3) + '.';
		aformatado = aformatado + a.substring(3, 6) + '.';
		aformatado = aformatado + a.substring(6, 9) + '/';
		aformatado = aformatado + a.substring(9,13) + '-';
		aformatado = aformatado + a.substring(13,15);
		a = aformatado;
	}

	//separo em grupos
	if (a.length != 19) return 0; //tem de ser 19 digitos
	b = a.substring(0, 3)// 1ro grupo
	c = a.substring(3, 4)// '.'
	d = a.substring(4, 7)// 2do grupo
	e = a.substring(7, 8)// '.'
	f = a.substring(8, 11)// 3ro grupo
	h = a.substring(11,12)// '/'
	j = a.substring(12, 16)// 4ro grupo
	k = a.substring(16,17)// '/'
	dig1 = a.substring(17,18)//digito 1
	dig2 = a.substring(18,19)//digito 2

	//checagem basica de erro, se os campos sao numericos e se a pontuacao esta correta
	var i=parseInt(a.substring(0,1));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(1,2));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(2,3));
	if (isNaN(i)) return 0;
	if (c != '.') return 0;
	var i=parseInt(a.substring(4,5));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(5,6));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(6,7));
	if (isNaN(i)) return 0;
	if (e != '.') return 0;
	var i=parseInt(a.substring(8,9));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(9,10));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(10,11));
	if (isNaN(i)) return 0;
	if (h != '/') return 0;
	var i=parseInt(a.substring(13,14));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(14,15));
	if (isNaN(i)) return 0;
	var i=parseInt(a.substring(15,16));
	if (isNaN(i)) return 0;
	if (k != '-') return 0;
	var i=parseInt(dig1);
	if (isNaN(i)) return 0;
	var i=parseInt(dig2);
	if (isNaN(i)) return 0;

	//checagem do 2 digito
	CNPJ = b+d+f+j+dig1
	iaux = JSIsDigitoCNPJ(CNPJ, 2, 9);

	if (iaux > 9)
	  iaux = 0;
	if (dig2 != iaux)
	  return 0;

	//checagem do 1 digito
	CNPJ = b+d+f+j
	iaux = JSIsDigitoCNPJ (CNPJ, 2, 9);
	if (iaux > 9)
	  iaux = 0;
	if (dig1 != iaux)
	  return 0;

	return 1;
}

function CnpjFormat(ObjCnpj){
	var valor = ObjCnpj.value;

	if (valor.length == 3){
		ObjCnpj.value = valor + '.';
	}
	if (valor.length == 7){
		ObjCnpj.value = valor + '.';
	}
	if (valor.length == 11){
		ObjCnpj.value = valor + '/';
	}
	if (valor.length == 16){
		ObjCnpj.value = valor + '-';
	}
}

