/****************************************************************************************
* 
* @desc Javascript onde estão as funções responsáveis em validar os campos dos formulários
* 		e funções auxiliares para o sistema.
*
* @author       Cláudia	Santos  <claudia@compos.com.br>
*				Joel Tadeu 		<joel@compos.com.br>
*				      
* @copyright    Compos 26/01/2005
* @version		1.0
* @access		public 
*
****************************************************************************************/

/**
* @desc Função que retira os espaços em brando de uma string
* @param String inputString	- texto de entrada.	
* @return String - String de Saída sem espaços
*/
function trim(inputString) {

   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; 
}

/**
* @desc Função responsável em formatar e validar a string 
*       passada de acordo com o formato desejado.
*
* @param String  caractere	- texto de entrada.	
* @param Integer charFormat	- tipo de formatação.	
* @return boolean - Verdadeiro caso todos os caracteres sejam válidos
*					Falso caso exista algum caracter inválido				
*/
function isNum( caractere,charFormat )
{
  var charlib="";
  if (charFormat==0)  // Moeda
    { charlib=","; }
  else if (charFormat==1)  // CEP/Telefone
    { charlib="-"; }
  else if (charFormat==2)  // Hora
    { charlib=":"; }
  else if (charFormat==3)  // Data
    { charlib="/"; }
  if (charFormat==4)  // Número entre 0 e 9
    { charlib=""; }
  if (charFormat==5)  // Quant
    { charlib=","; }
  if (charFormat.length>1)  // Definiu a limitação
    { charlib=charFormat; }

  var strValidos = charlib+"0123456789"
  if ( strValidos.indexOf( caractere ) == -1 ) return false;
  return true;
}

/**
* @desc Função responsável em verificar se a string passada contêm 
*		apenas os caracteres validos informados.
*
* @param String  nome	- texto de entrada.	
* @return boolean - Verdadeiro caso todos os caracteres digitados sejam válidos
*					Falso caso exista algum caracter digitado inválido	
*
* @example  caracteres válidos			
* 			qazwsxedcrfvtgbyhnujmikolp1234567890_-
*/
function validarNome(nome) 
{

	validos = 'qazwsxedcrfvtgbyhnujmikolp1234567890_-';
	pos = 0;
	
	nome = nome.toLowerCase();                         
	if (trim(nome) == '') 
	{
		return false;
	}
	
	for (var indice = 0; indice < nome.length; indice++) 
	{
		pos = 0;
		for (var indiceI = 0; indiceI < validos.length; indiceI++) 
		{
			if (nome.charAt(indice) == validos.charAt(indiceI)) 
			{
				pos++;
			}
		}
		if (pos == 0) 
		{
		  return false;
		}
	}
	return true;
}

/**
Compara 2 datas e determina quem é a maior (mais no futuro)
Retorna -1 caso a primeira data seja a mais nova, 1 caso
seja a segunda e 2 caso ambas sejam a mesma data. Um resultado
FALSE (ou 0) significa que as datas são inválidas.
*/
function comparaData(dataIni,dataFim)
{
	if (!validarData(dataIni))
		return false;
		
	if (!validarData(dataFim))
		return false;
	
	data1 = dataIni.split('/');
	data2 = dataFim.split('/');
	
	//Comparar anos
	if (data1[2] > data2[2])
		return -1;

	if (data1[2] < data2[2])
		return 1;

	//Comparar meses
	if (data1[1] > data2[1])
		return -1;

	if (data1[1] < data2[1])
		return 1;

	//Comparar dias
	if (data1[0] > data2[0])
		return -1;
		
	if (data1[0] < data2[0])
		return 1;
		
	//As datas são idênticas
	return 2;
}

/**
* @desc Função responsável em validar campo do tipo data 
*		no formato 'dd/mm/yyyy' 
*
* @param String  data	- Data de entrada.	
* @return boolean - Verdadeiro caso a Data seja válida
*					Falso caso a data seja inválida
*
*/
function validarData(Data)
{
	var err = 0;
	var string = Data;
	var valid = "0123456789/";
	var ok = "yes";

	for (var i=0; i<string.length; i++)
	{
		var temp = "" + string.substring(i, i+1);

		if (valid.indexOf(temp) == "-1")
			err = 1;
	}

	if (string.length != 10)
		err = 1;

	dia = string.substring(0, 2);
	barra1 = string.substring(2, 3);
	mes = string.substring(3, 5);
	barra2 = string.substring(5, 6);
	ano = string.substring(6, 10);
	
	if ((dia < 1) || (dia > 31))
		err = 1;
	if (barra1 != '/')
		err = 1;
	
	if ((mes < 1) || (mes > 12))
		err = 1;
	
	if (barra2 != '/')
		err = 1;
	
	if (ano < 0)
		err = 1;
	
	if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
	{
		if (dia == 31)
			err = 1;
	}
	
	if (mes == 2)
	{
		var g = parseInt(ano/4);

		if (isNaN(g))
			err = 1;

		if (dia > 29)
			err = 1;

		if ((dia == 29) && (((ano/4) != parseInt(ano/4))))
			err = 1;
	}

	if (err == 1)
		return(false);
	else
		return(true);
}

/**
* @desc Função responsável em validar campo do tipo Hora 
*		no formato (0-23) 
*
* @param String  campo	- Hora de entrada.	
* @return boolean - Verdadeiro caso a Hora seja válida
*					Falso caso a Hora seja inválida
*
*/
function validarHora(campo) {

	if (validarNumero(campo)) {
		
		if (campo<0 || campo>23) {
			return false;
		} 
		
	} else {
		return false;
	}
	
	return true;

}

/**
* @desc Função responsável em validar campo do tipo Minuto 
*		no formato (0-59) 
*
* @param String  campo	- Minuto de entrada.	
* @return boolean - Verdadeiro caso o Minuto seja válido
*					Falso caso o Minuto seja inválido
*
*/
function validarMinuto(campo) {

	if (validarNumero(campo)) {
		
		if (campo<0 || campo>59) {
			return false;
		} 
		
	} else {
		return false;
	}
	return true;
}

/**
* @desc Função responsável em validar campo do tipo Horário 
*		no formato 'hh:mm' 
*
* @param String  CHora	- Horário de entrada.	
* @return boolean - Verdadeiro caso o Horário seja válido
*					Falso caso o Horário seja inválido
*
*/
function validarHorario(CHora)
{

	hr = (CHora.value.substring(0,2));
	min = (CHora.value.substring(3,5));
	//seg = (CHora.value.substring(6,10));
	
	situacao = 1;
	// verifica se a hora é válida
	if (hr < 00 || hr > 23)
	  { situacao = 0; }

	// verifica se o min e válido
	if (min < 00 || min > 59 )
	  { situacao = 0; }

	// verifica se e o segundo é válido
	//if (seg< 00 || seg > 59)
	//  { situacao = 0; }
	
	if (CHora.value == "")  { 
		situacao = 0; 
	}

	if (situacao == 0)
	{
		return false;
		
	} else {
		
		return true;	
	}
	
}

/**
* @desc Função responsável em validar campo do tipo CPF 
*		e CNPJ no formato 881.331.981-21 / 77.777.777/0001-78
		apenas os números. 
*
* @param String  CThis	- CPF/CNPJ de entrada.	
* @return boolean - Verdadeiro caso o CPF/CNPJ seja válido
*					Falso caso o CPF/CNPJ seja inválido
*
*/
function ValidaCpfCnpj(CThis)
{
  var soma=0
  var Resto=0
  var x=0
  var st=CThis.value
  if (st.length==0)       // Vazio
    { return (true); }
  else if (st.length==11) // CPF
    {
    for (x = 1 ; x < 10 ; x++)
      { soma=soma+parseInt(st.substring(x-1,x)) * (11 - x) }
    Resto = 11 - (soma - (parseInt(soma / 11) * 11))
    if (Resto==10 || Resto==11) {Resto=0}
    if (parseInt(Resto)!=parseInt(st.substring(9, 10)))
    {
      alert("Formato inválido para \"CPF\". ");
      CThis.value=""
      CThis.focus();
      return (false);
    }
    soma = 0
    for (x = 1 ; x < 11 ; x++)
      { soma=soma+parseInt(st.substring(x-1,x)) * (12 - x) }
    Resto = 11 - (soma - (parseInt(soma / 11) * 11))
    if (Resto == 10 || Resto == 11) {Resto = 0}
    if (parseInt(Resto)!= parseInt(st.substring(10,11)))
    {
      alert("Formato inválido para \"CPF\". ");
      CThis.value=""
      CThis.focus();
      return (false);
    }
    return (true);
  }

  else if (st.length==14) // CNPJ
  {
    var Retorno=0
    var A=0
    var j=5
    var i=0
    var d1=0
    var d2=0
		
   for (x = 1; x < 13 ; x++)
   {
     A = A + (parseInt(st.substring(x-1,x)) * j)
     if (j>2) {j = j - 1} else {j= 9}
   }
   A = A%11

   if (A>1) {d1 = 11 - A} else {d1 = 0}
   A = 0
   i = 0
   j = 6
    for (x = 1; x < 14 ; x++)
      {
      A = A + (parseInt(st.substring(x-1,x)) * j)
      if (j>2) {j = j - 1} else  {j= 9}
      }
    A = A % 11

    if(A >1 ) 
		{ d2=11-A; }
		else
		{ d2=0; }
		
    if (d1 == parseInt(st.substring(12, 13)) && d2 == parseInt(st.substring(13, 14)))
    { 
    	return (true); 
    } else {
    	
    	alert("Formato inválido para \"CNPJ\". ");
      	CThis.value=""
      	CThis.focus();
      	return (false);
	}
	}

  	alert("Número de caracteres inválidos para \"CPF-CNPJ\". ");
  	CThis.focus();
	return (false);
}

/**
* @desc Função responsável em validar numero IP
*
* @param String  IPvalue	- Número IP de entrada.	
* @return boolean - Verdadeiro caso o Número IP seja válido
*					Falso caso o Número IP seja inválido
*
*/
function validarIP(IPvalue) {
	errorString = ""; 
	theName = "IPaddress"; 

	var ipArray=IPvalue.split(".");

	if (IPvalue == "0.0.0.0") 
  		
  		return true;
		
	else if (IPvalue == "255.255.255.255") 
  		//errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.(5)'; 
		return false;
	if (!ipArray||!ipArray[0]||!ipArray[1]||!ipArray[2]||!ipArray[3]||ipArray.length>4) 
  		//errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.(1)'; 
		return false;
	else { 
		for (i = 0; i < 4; i++) { 
    		thisSegment = ipArray[i]; 
    		if (thisSegment > 255) { 
      			//errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.(2)'; 
				return false;
      			i = 4; 
    		} 
    		if ((i == 0) && (thisSegment > 255)) { 
      			//errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.(3)'; 
				return false;
      			i = 4; 
    		} 
  		} 
	} 
	extensionLength = 3; 

  	return true; 
} 

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|co|uk|es)$/;

/**
* @desc Função responsável em validar campo do tipo Domínio
*
* @param String  FormField
* @param String  NoWWW
* @param String  CheckTLD
* @return boolean - Verdadeiro caso o Domínio seja válido
*					Falso caso o Domínio seja inválido
*
*/
function validarDominio(FormField,NoWWW,CheckTLD) {
	// NoWWW y CheckTLD son opcionales, ambos aceptan los valores true, false, y null.
	// NoWWW se utiliza para verificar que un nombre de dominio no comience con 'www.', ejem. para WHOIS.
	DomainName=FormField.value.toLowerCase();
	if (CheckTLD==null) {CheckTLD=true}
	var specialChars="/\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=DomainName.split(".");
	var len=domArr.length;
	if (len==1) { FormField.focus(); return false}
	for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) { FormField.focus(); return false}}
	if ((CheckTLD) && (domArr[domArr.length-1].length!=2) && (domArr[domArr.length-1].search(knownDomsPat)==-1)) { FormField.focus(); return false}
	if ((NoWWW) && (DomainName.substring(0,4).toLowerCase()=="www.")) { FormField.focus(); return false}
	return true;
}

/**
* @desc Função responsável em validar campo do tipo Email
*
* @param String  FormField
* @param String  CheckTLD
* @return boolean - Verdadeiro caso o E-mail seja válido
*					Falso caso o E-mail seja inválido
*
*/
function validarEmail(FormField,CheckTLD) {
	// CheckTLD es opcionalis optional, acepta los valores true, false, y null.
	nome = FormField.id.split(":");
	nomeCampo = nome[0];
	if (FormField.value)
	{
		emailStr = FormField.value.toLowerCase();
	}
	else
	{
		emailStr = "";
	}
	if (CheckTLD==null) {CheckTLD=true}
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	//if (nomeCampo == null) nomeCampo = nomeCampo;
	if (matchArray==null) {alert(nomeCampo + " parece estar incorreto. O formato do email é: usuario@dominio[.com[.xx]]"); FormField.focus(); FormField.focus(); return false}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {if (user.charCodeAt(i)>127) {alert(nomeCampo + ": nome do usuário contém caracteres inválidos."); return false}}
	for (i=0; i<domain.length; i++) {if (domain.charCodeAt(i)>127) {alert(nomeCampo + ": nome do domínio contém caracteres inválidos."); FormField.focus(); return false}}
	if (user.match(userPat)==null) {alert(nomeCampo + ": nome de usuário inválido."); FormField.focus(); return false}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {for (var i=1;i<=4;i++) {if (IPArray[i]>255) {alert(nomeCampo + ": número IP não é válido."); FormField.focus(); return false}}; return true}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) {alert(nomeCampo + ": nome de domínio não é válido."); FormField.focus(); return false}}
	if ((CheckTLD) && (domArr[domArr.length-1].length!=2) && (domArr[domArr.length-1].search(knownDomsPat)==-1)) {alert(nomeCampo + ": O nome do domínio deve terminar com apenas 2 letras para indicação de país."); FormField.focus(); return false}
	if (len<2) {alert(nomeCampo + ": falta o nome do anfitrião."); FormField.focus(); return false}
	return true;
}

/**
* @desc Função responsável em retornar a extensao do arquivo
*		passado como parametro.
*
* @param String arquivo 	- Nome do arquivo de entrada
* @return String extensao	- Extensao do arquivo passado
*
*/
function retornaExtensao(arquivo) 
{
	tam = arquivo.length;
	arquivo = arquivo.toLowerCase();
	extensao = arquivo.substring(tam-3,tam);
	
	return extensao;   
}

/**
* @desc Função responsável em validar se o arquivo passado
*		como parametro é do tipo PDF.
*
* @param String arquivo	- Nome do arquivo de entrada
* @return Boolean 		- Verdadeiro caso o arquivo seja do tipo PDF.
*						  Falso caso o arquivo não seja do tipo PDF.
*/
function validarPDF(arquivo) {
	varExt = new Array();
	varExt [0] = "pdf";
	
	extensao = retornaExtensao(arquivo);
	
	for (k=0; k < 1; k++) {
	   if (extensao == varExt[k]) {
		  return true;
	   }
	}
	return false;	
}

/**
* @desc Função responsável em validar se o tipo de arquivo passado
*		como parametro é do tipo imagem. (JPG)
*
* @param String arquivo	- Nome do arquivo de entrada
* @return Boolean 		- Verdadeiro caso o arquivo seja do tipo imagem jpg.
*						  Falso caso o arquivo não seja do tipo imagem jpg.
*/
function validarImagem(imagem) 
{

	varExt = new Array();
	varExt [0] = "jpg";
	//varExt [1] = "gif";
	//varExt [2] = "png";
	//varExt [3] = "jpeg";
	
	extensao = retornaExtensao(imagem);
	
	for (k=0; k < 1; k++) {
	   if (extensao == varExt[k]) {
		  return true;
	   }
	}
	return false;
}

/**
* @desc Função responsável em marcar todos os itens do objeto passado
*		como parametro.
*
* @param Object objeto	- Objeto do formulario HTML
* @return void
*
*/
function marcarLista(objeto) {

	srcLen = objeto.options.length;
	if (srcLen != 0) {
		for (var x=0; x<srcLen; x++) 
		{
			objeto.options[x].selected="true";
		}
	}
}

/**
* @desc Função responsável em desmarcar todos os itens do objeto passado
*		como parametro.
*
* @param Object objeto	- Objeto do formulario HTML
* @return void
*
*/
function desmarcarLista(objeto) {

	srcLen = objeto.options.length;
	if (srcLen != 0) {
		for (var x=0; x<srcLen; x++) 
		{
			objeto.options[x].selected="false";
		}
	}
}

/**
* @desc Função responsável em definir um tamanho máximo de caracteres
*		para o campo do tipo TextArea.
*
* @param Object field		- Objeto do formulario HTML
* @param Integer maxlimit	- Tamanho máximo de caracteresque o campo 
*							  poderá ter.
* @return void
*
*/
function textCounter(field,maxlimit)
{
  if (field.value.length > maxlimit) // if too long...trim it! 
  { field.value = field.value.substring(0, maxlimit); }
}

/**
* @desc Função responsável em validar campo do tipo numérico
*
* @param Object campo		- Objeto do formulario HTML
* @param Event evento		- Evento do formulário
* @param Integer charFormat	- Tipo de caracter
* @return Boolean			- Verdadeiro caso o campo seja válido
*							  Falso caso o campo seja inválido	
*
*/
function validaNum(campo, event,charFormat)
{
  var BACKSPACE= 8;
  var key;
  var tecla;

  CheckTAB=true;
  if(navigator.appName.indexOf("Netscape")!= -1)
    tecla= event.which;
  else
    tecla= event.keyCode;
  if ( tecla == 46 && charFormat==5 )
  {
    if(navigator.appName.indexOf("Netscape")!= -1)
      event.which=44;
    else
      event.keyCode=44;
    tecla=44;
  }
  key = String.fromCharCode( tecla);
  if ( tecla == 13 ) { return false; }
  if ( tecla == BACKSPACE ) return true;
  return ( isNum(key,charFormat));
}

var AgntUsr=navigator.userAgent.toLowerCase();

/**
* @desc Função responsável em carregar um iframe com uma consulta 
		e passar para o iframe a responsabilidade de 
*
* @param Object campo		- Objeto do formulario HTML
* @param Event evento		- Evento do formulário
* @param Integer charFormat	- Tipo de caracter
* @return Boolean			- Verdadeiro caso o campo seja válido
*							  Falso caso o campo seja inválido	
*
*/
function CarregaCombo(campo,consulta,combo,consulta2) 
{
	remove_tudo(combo);
	var NavYes=AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1?1:0;
	c_iframe=NavYes? document.getElementById("sframe") : document.all.sframe
	c_iframe.src="utcombo.php?nomecampo="+campo.name+"&id="+campo.value+"&consulta="+consulta+"&combo="+combo+"&cons2="+consulta2;
}

/**
* @desc Função responsável em criar um item dentro de um select 
*
*
* @param String  texto	- Texto do Select.	
* @param String  valor	- Valor do value do Select
* @param Object  objeto	- Objeto do formulario HTML
* @return void
*
*/
function adiciona(texto,valor,objeto) 
{
	linha = document.createElement("OPTION");
	linha.text = texto;
	linha.value = valor; 
	document.forms[0].elements[objeto].options.add(linha);
}

/**
* @desc Função responsável em apagar todos os itens de
*	    um objeto Select
*
* @param Object  objeto	- Objeto do formulario HTML
* @return void
*
*/
function remove_tudo(objeto) //Limpa a combo
{
	var tam = document.forms[0].elements[objeto].length;
	while( tam > 0 ) { document.forms[0].elements[objeto].remove(tam-1); 	tam--;	}
}

/**
* @desc Função responsável em converter um numero com mascara
* 		para um numero padrao MySQL
*
* @param String  numero	- Numero com mascara do tipo String (11.348,00)
* @return Double numero - Variavel no formato monetário MySQL
* @example 1.348,00 -> 1348.00
*
*/
function ConverteVal(numero)
{
  if ((numero==null) || (numero=='')) { numero = "0.00";  return numero;  }
  string_ponto = numero.toString()
  numero = numero.toString();
  var CTam=string_ponto.length;
  posicao_ponto = string_ponto.indexOf(",")
  if (posicao_ponto!= -1)
  {
    numero = numero.replace("." , "");
    numero = numero.replace("," , ".");
  }
  return numero;
}

/**
* @desc Função responsável em formatar o objeto passado como parametro
*		para o padrao desejado (Mascara para o campos).
*
* @param Object  objeto		- Objeto do formulario HTML
* @param Integer tipo		- Tipo de Formatação desejada
* @param Char  teclapres	- tecla pressionada
* @return void
* @example 					0 - Formata campo para Data Completa  	(dd/mm/yyyy)
*							1 - Formata campo para Telefone 		(xx)3674738
*							2 - Formata campo para horário  		(hh:mm)
*							3 - Formata campo para Data simples		(mm/yyyy)
*
*/
function FormataDado(objeto,tipo,teclapres){
	var tecla = teclapres.keyCode;
	vr = objeto.value;
	tam = vr.length;
	if (tipo==0){
		if (tam!=3) vr = vr.replace( "/", "" );
		tam = vr.length;
		if (tecla!=8){	
			 if (tam==2) {
				objeto.value = objeto.value+ '/';
			 }
			else if (tam==4) {
				objeto.value = objeto.value+ '/';
			}
		}
	}
	else if (tipo==1){
		if (tam!=3) vr = vr.replace( ")", "" );
		tam = vr.length;
		if (tecla!=8){	
			 if (tam==2) {
				objeto.value="("+objeto.value+")";
			 }
		}
	} else if (tipo==2) {
		if (tam!=3) vr = vr.replace( ":", "" );
		tam = vr.length;
		if (tecla!=8){	
			 if (tam==2) {
				objeto.value = objeto.value+ ':';
			 }
		}
	}else if (tipo==3){
		if (tam!=3) vr = vr.replace( "/", "" );
		tam = vr.length;
		if (tecla!=8){	
			 if (tam==2) {
				objeto.value = objeto.value+ '/';
			 }
		}
	} 
}

/**
* @desc Função responsável em formatar valores monetários (1.456,92)
*
* @param Object  objeto		- Objeto do formulario HTML
* @param Integer tammax		- Tamanho máximo do campo
* @param Char  teclapres	- tecla pressionada
* @return void
*
*/
function FormataValor(objeto,tammax,teclapres) {
	var tecla = teclapres.keyCode;
	vr = objeto.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;

	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 <= 2 ){ 
	 		objeto.value = vr ; }
	 	if ( (tam > 2) && (tam <= 5) ){
	 		objeto.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		objeto.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		objeto.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 12) && (tam <= 14) ){
	 		objeto.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 15) && (tam <= 17) ){
	 		objeto.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 ) ;}
	}
}

/**
* @desc Função responsável em comparar duas datas passadas como parametro
*
* @param Date  data1		- Primeira Data do parâmetro
* @param Date data2			- Segunda Data do parâmetro
* @return Boolean			- Verdadeiro caso a primeira data seja maior do que a segunda
*							- Falso caso a segunda data seja maior que a primeira					
*
*/
function comparaDatas(data1,data2) 
{

	if(data2.substring(2,3)!="/" || data2.substring(5,6)!="/") {
		alert("Formato deve ser dd/mm/aaaa."); 
		return false;
	}

	dataA= new Date(data1.substring(6),(data1.substring(3,5)-1),data1.substring(0,2));
	dataB= new Date(data2.substring(6),(data2.substring(3,5)-1),data2.substring(0,2));
	dataA= dataA.getTime();
	dataB= dataB.getTime();
	
	if (dataB < dataA) {
		return false;	
	}
	
	return true;

//if (dataB > dataA) { alert("Data não deve ser posterior à data atual."); return; } 
//diferencaDias = Math.abs((dataB-dataA)/1000/60/60/24);
//alert("Diferença = "+Math.abs((dataB-dataA)/1000/60/60/24) +" dia(s).");
//if (((dataB-dataA)/1000/60/60/24) < 5) alert("ERRO!\nPeríodo menor que 5 dias.");
}
