    //============================================================
	// Completa preenchimento de uma caixa de entrada data
	// inputData -> (objeto input que contém/conterá data)
	//============================================================
	function ajustarData(inputData)
	{
		var aux,auxI,arrData,objHoje,strDia="",strMes="",strAno="";			
		objHoje = new Date();
		//procura um separador
		if(isNaN(parseInt(inputData.value,10))) {
			aux = inputData.value.indexOf("/");
			if(aux==-1) {
				aux = inputData.value.indexOf("-");
				if(aux==-1) {
					aux = inputData.value.indexOf(".");
				}
			}
		}
		else aux = -1;
		//caso a data digitada no campo esteja com separador
		if(aux>-1) {									
			arrData = inputData.value.split(inputData.value.charAt(aux));			
			if(arrData.length<3) {
				if(arrData.length==1) {
					strDia = caracteres(arrData[0],2,"0");
					auxI = parseInt(strDia,10);
					if(isNaN(auxI)) {
						strDia = objHoje.getDay();
						auxI = strDia;							
					}						
					if((auxI>31)||(auxI<0)) {
						strDia = "01";
					}
					else strDia = caracteres(auxI.toString(10),2,"0");
					strMes = new String(objHoje.getMonth()+1);
					strMes = caracteres(strMes,2,"0");
					strAno = objHoje.getFullYear();
				}
				if(arrData.length==2) {
					strDia = caracteres(arrData[0],2,"0");
					auxI = parseInt(strDia,10);
					if(isNaN(auxI)) {
						strDia = objHoje.getDay();
						auxI = strDia;							
					}												
					if((auxI>31)||(auxI<0)) {
						strDia = "01";
					}
					else strDia = caracteres(auxI.toString(10),2,"0");
					strMes = caracteres(arrData[1],2,"0");
					auxI = parseInt(strMes,10);
					if(isNaN(auxI)) {
						strMes = objHoje.getMonth()+1;
						auxI = strMes;							
					}										
					if((auxI>12)||(auxI<1)) {
						strMes = "01";
					}
					else strMes = caracteres(auxI.toString(10),2,"0");
					strAno = objHoje.getFullYear();
				}
			}
			else {
				strDia = caracteres(arrData[0],2,"0");
				auxI = parseInt(strDia,10);
				if(isNaN(auxI)) {
					strDia = objHoje.getDay();
					auxI = strDia;							
				}						
				if((auxI>31)||(auxI<0)) {
					strDia = "01";
				}
				else strDia = caracteres(auxI.toString(10),2,"0");
				strMes = caracteres(arrData[1],2,"0");
				auxI = parseInt(strMes,10);
				if(isNaN(auxI)) {
					strMes = objHoje.getMonth()+1;
					auxI = strMes;							
				}												
				if((auxI>12)||(auxI<1)) {
					strMes = "01";
				}
				else strMes = caracteres(auxI.toString(10),2,"0");
				strAno = ajustaAno(arrData[2]);				
				auxI = parseInt(strAno,10);
				if(isNaN(auxI)) {
					strAno = objHoje.getFullYear();
					auxI = strAno;
				}
						
				strAno = ajustaAno(strAno);

			}	
			inputData.value = strDia + "/" + strMes + "/" + strAno;
			return;		
		}
		//caso não tenha sido digitado um separador
		else {
			switch(inputData.value.length)
			{
				case 1:;
				case 2: objHoje = new Date();
						strDia = inputData.value.substring(0,2);
						if(strDia.length==1) strDia = "0" + strDia;
						aux = parseInt(strDia,10);
						if(isNaN(aux)) {							
							break;
						}					
						
						if((aux>31)||(aux<0)) {
							strDia = "01";
						}
						else strDia = caracteres(aux.toString(10),2,"0");
												
						strMes = objHoje.getMonth()+1;				
						if(strMes<=9) strMes = "0" + strMes;					
						strAno = objHoje.getFullYear();
						if(strAno<=9) strAno = "0" + strAno;
						inputData.value = (strDia+"/"+strMes+"/"+strAno);
						break;
					
				case 4:	strDia = inputData.value.substring(0,2);
						aux = parseInt(strDia,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>31)||(aux<0)) {
							strDia = "01";
						}
						else strDia = caracteres(aux.toString(10),2,"0");
						
						strMes = inputData.value.substring(2,4);
						aux = parseInt(strMes,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>12)||(aux<0)) {
							strMes = "01";
						}
						else strMes = caracteres(aux.toString(10),2,"0");
						
						objHoje = new Date();
						strAno = objHoje.getFullYear();
						inputData.value = (strDia+"/"+strMes+"/"+strAno);
						break;
						
				case 6:	strDia = inputData.value.substring(0,2);
						aux = parseInt(strDia,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>31)||(aux<0)) {
							strDia = "01";
						}
						else strDia = caracteres(aux.toString(10),2,"0");
						
						strMes = inputData.value.substring(2,4);
						aux = parseInt(strMes,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>12)||(aux<0)) {
							strMes = "01";
						}
						else strMes = caracteres(aux.toString(10),2,"0");
						
						strAno = inputData.value.substring(4,6);
						aux = parseInt(strAno,10);
						if(isNaN(aux)) {
							break;
						}
						
						strAno = ajustaAno(strAno);
						
						inputData.value = (strDia+"/"+strMes+"/"+strAno);
						break;
															
				case 8:	strDia = inputData.value.substring(0,2);
						aux = parseInt(strDia,10);
						if(isNaN(aux)) {
							break;
						}

						if((aux>31)||(aux<0)) {
							strDia = "01";							
						}
						else strDia = caracteres(aux.toString(10),2,"0");
						
						strMes = inputData.value.substring(2,4);
						aux = parseInt(strMes,10);
						if(isNaN(aux)) {
							break;
						}

						if((aux>12)||(aux<0)) {
							strMes = "01";
						}
						else strMes = caracteres(aux.toString(10),2,"0");

						strAno = inputData.value.substring(4,8);
						aux = parseInt(strAno,10);
						if(isNaN(aux)) {
							break;
						}
						
						strAno = ajustaAno(strAno);
						
						inputData.value = (strDia+"/"+strMes+"/"+strAno);
						break;
				case 10:strDia = inputData.value.substring(0,2);
						aux = parseInt(strDia,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>31)||(aux<0)) {
							strDia = "01";
						}
						else strDia = caracteres(aux.toString(10),2,"0");
						
						strMes = inputData.value.substring(3,5);
						aux = parseInt(strMes,10);
						if(isNaN(aux)) {
							break;
						}
						
						if((aux>12)||(aux<0)) {
							strMes = "01";
						}
						else strMes = caracteres(aux.toString(10),2,"0");
						
						strAno = inputData.value.substring(6,10);
						aux = parseInt(strAno,10);
						if(isNaN(aux)) {
							break;
						}
						
						strAno = ajustaAno(strAno);
						
						inputData.value = (strDia+"/"+strMes+"/"+strAno);
						break;		
			}//switch		
		}//else(separador?)
	}//function
	
			
	//============================================================
	// Verifica a consistência de DATA para strData
	//============================================================
	function verificarData(strData)
	{		
		var boolOK=true;
		//verica a presença de caracteres não numéricos	
		for(i=0;i<2;i++)		
			if(isNaN(parseInt(strData.charAt(i),10))) {			
				boolOK = boolOK && false;				
				break;
			}	
		
		for(i=3;i<5;i++)
			if(isNaN(parseInt(strData.charAt(i),10))) {			
				boolOK = boolOK && false;				
				break;
			}	
				
		for(i=6;i<10;i++)
			if(isNaN(parseInt(strData.charAt(i),10))) {			
				boolOK = boolOK && false;				
				break;
			}	
			
		if((strData.charAt(5)!="/")||(strData.charAt(2)!="/"))
			boolOK = boolOK && false;		
		
		//se não existem caracteres alfabéticos/especiais: testar faixas
		if(boolOK)	
		{
			var dia,mes,ano;
			//monta o dia e o mes para manipulação
			dia = caracteres(strData.substring(0,2),2,"0");							
			mes = caracteres(strData.substring(3,5),2,"0");
			//verifica se esta na faixa válida para mês
			if((parseInt(mes,10)>12)
			  ||(parseInt(mes,10)<1)) {			  
			     boolOK = boolOK && false;		
			}
			else {											 
				//verifica se esta na faixa válida para dia
				if((parseInt(dia,10)>31)
				  ||(parseInt(dia,10)<1)) {
				     boolOK = boolOK && false;			 	
				}
				else {		
					//verifica se a data é válida (anos bissextos,etc..)
					var objData,strObjData;
					//monta o objeto data (o dia já foi montado ACIMA..)					
					mes = new String(mes-1);
					mes = caracteres(mes,2,"0");
					ano = strData.substring(6,10);						
					objData = new Date(ano,mes,dia);												
					//monta o objeto data		
					dia = new String(objData.getDate());
					dia = caracteres(dia,2,"0");
					mes = new String((objData.getMonth()+1));
					mes = caracteres(mes,2,"0");
					ano = new String(objData.getFullYear());		
					strObjData = dia+"/"+mes+"/"+ano;				
					//verifica se a data verificada é válida
					if(strData!=strObjData) {
						boolOK = boolOK && false;						
					}
				}
			}
		}			
		return boolOK;	
	}	
	
	
	//==========================================
	//verifica se o periodo de datas é valido
	function verificarPeriodo(strInicio,strFim,bIgual)
	{		
		//monta a data inicial do período
		var dia,mes,ano,dataFinal,dataInicial,boolOK;
		//monta data inicial do período
		ano = strInicio.substring(6,10);
		mes = strInicio.substring(3,5)-1;
		dia = strInicio.substring(0,2);
		dataInicial = new Date(ano,mes,dia);
		//monta a data final do período
		ano = strFim.substring(6,10);
		mes = strFim.substring(3,5)-1;
		dia = strFim.substring(0,2);
		dataFinal = new Date(ano,mes,dia);
		//verifica se o período está consistente
		if(bIgual)
			boolOK = (dataInicial<=dataFinal);		
		else
			boolOK = (dataInicial<dataFinal);		
		//retorna o resultado da verificação
		return boolOK;					
	}
	
		
	//ajusta o ano
	function ajustaAno(strAno) 
	{
		var objHoje,iAno;
		objHoje = new Date();
		iAno = parseInt(strAno,10);
		//verifica se o ano é numérico
		if(!isNaN(iAno)) {
			//verifica o tamanho da string de ano	
			switch(strAno.length)
			{
				case 2:	if((iAno>50)&&(iAno<100)) {
							strAno = "19" + strAno; 
						}
						else {
							strAno = "20" + strAno; 
						}
						break;				
				case 4:	if(iAno<1900){
							strAno = "1900";	
						}
						else strAno = iAno;				
						break;
				default:strAno=strAno;
						break;
			}
		}
		else strAno = "";
		return strAno;
	}
	
	function caracteres(str,tam,strVazio)
	{		
		if(str.length<tam){
			for(i=str.length+1;i<=tam;i++) {
				str = "0" + str ;				
			}
			return str;
		}		
		return str;
	}

	function campoDataStartup(obj)
	{
		obj.value = '__/__/____'
	}

	function verificaAno(obj)
	{
		var tam = obj.value.length
		var data, ano
		
		if (tam == 5)
		{
			// ano nao foi informado
			data = new Date()
			ano = data.getFullYear()
			obj.value += '/' + ano
		}
		else
		{
			if (tam == 8)
			{
				// ano foi informado com 2 digitos
				obj.value = obj.value.substring(0, 6) + '20' + obj.value.substring(6, 8)
			}
			if (tam == 9)
			{
				// ano foi informado com 3 digitos
				obj.value = obj.value.substring(0, 6) + '20' + obj.value.substring(7, 9)
			}
		}
	}

