function formataData(data,req){
	var objData = data;
	data = data.value;
	var tamData = data.length;
	var simbData = "/.- ";
	var subData = new Array();
	var aux = "";
	var numero = "0123456789";
	var ret = "";
	var j = 0;
	var i = 0;
	var dataAtual = new Date();
	var ano = ""+dataAtual.getYear();
	var erro = 'é inválido. Formas de datas possíveis:\n\n- dd/mm/aaaa\n- dd/mm/aa\n\n símbolo / pode ser substituido por (-) (.) ou espaço.';
	while (i < tamData) {
		aux = data.charAt(i);
		if (numero.indexOf(aux) != -1) {
			if (subData[j]) {
				subData[j] += aux;
			}else {
			 subData[j] = aux;
			}
		}else {
			j++;
		}
		i++;
	}
//	alert(subData.length);
	if ((tamData > 2)) {
		if ((subData.length > 1) && (subData.length < 4)){
			var x;
			j = true;
			switch (subData.length) {
				case 3:{
					x = subData[2].length;
					if ((x > 0) && (x < 4)) {
						subData[2] = ano.substr(0, (4-x)) + subData[2];
					}else {
						if (x != 4) {
							j = false;
							break;
						}
					}
				}
				case 2:{
					if (subData[1]){
						x = subData[1].length;
						if ((x < 1) || (x > 2)){
							j = false;
							break;
						}
						x = parseInt(subData[1],10);
						if (x < 10) subData[1] = '0'+x;
					}else j = false;
				}
				case 1:{
					if (subData[0]) {
						x = subData[0].length;
						if ((x < 1) || (x > 2)){
							j = false;
							break;
						}
						x = parseInt(subData[0],10);
						if (x < 10) subData[0] = '0'+x;
					}else j =false;
				}
			}
			if (j){
				if (!subData[2]) subData[2] = ano;
				aux = subData[0];
				for (i = 1; i < subData.length ; i++){
					aux += "/"+subData[i];
				}
	//			alert(aux);
				ret = validadata(aux,null,null,false);
	//			alert(ret);
				if (ret == 'valido') {
					objData.value = aux;
					ret = '';
				}
			}else ret = erro;
		}else ret = erro;
	}else if (tamData > 0) ret = erro;
	return ret;
}
function validadata(data,anoInf,anoSup,req){
	data = tiraSimb(data);
	var tamData = data.length; 
	var dia = 0;
	var mes = 0;
	var ano = 0;
	var maxDia = 0;
	var mensagem = false;
	if ((tamData == 0) && (req)){
		mensagem = 'obrigatorio';
	}else if (tamData == 8){
		dia = parseInt(data.substr(0,2),10);
		mes = parseInt(data.substr(2,2),10);
		ano = parseInt(data.substr(4,4),10);
		if (!anoInf) anoInf = 0;
		if (!anoSup) anoSup = 3000;
		if ((ano >= anoInf) && (ano <= anoSup)){
			if ((mes >= 1) && (mes <= 12)){
				switch (mes) {
					case 1:
					case 3:
					case 5:
					case 7:
					case 8:
					case 10:
					case 12:
						maxDia = 31;
						break;
					case 2:{
						var x = (ano % 4);
						if (x==0) maxDia = 29
						else maxDia = 28;
					}
						break;
					default:
						maxDia = 30;
				}
				if ((dia > 0) && (dia <= maxDia)) {
					mensagem = 'valido';
				}
				else mensagem = 'inválido: Dia ' + dia;
			}else mensagem = 'inválido: Mês ' + mes;
		}else mensagem = 'inválido: Ano ' + ano;
	}else if ((tamData > 0) && (tamData <8)) mensagem = 'inválido';
	return mensagem; 
}