function calcularIdade(data){

    //calculo a data de hoje
    hoje=new Date()
    //alert(hoje)
	
	
    //calculo a data que recebo
    //descomponho a data em um array
    var array_data = data.split("/")
    //se o array nao tem tres partes, a data eh incorreta
    if (array_data.length!=3)
       return false

    //comprovo que o ano, mes, dia são corretos
    var ano
    ano = parseInt(array_data[2]);
    if (isNaN(ano))
       return false

    var mes
    mes = parseInt(array_data[1]);
    if (isNaN(mes))
       return false

    var dia
    dia = parseInt(array_data[0]);
    if (isNaN(dia))
       return false

    //se o ano da data que recebo so tem 2 cifras temos que muda-lo a 4
    if (ano<=99)
       ano +=1900

	
    //subtraio os anos das duas datas
    idade=hoje.getFullYear() - ano - 1; //-1 porque ainda nao fez anos durante este ano

    //se subtraio os meses e for menor que 0 entao nao cumpriu anos. Se for maior sim ja cumpriu
    if (hoje.getMonth() + 1 - mes < 0) //+ 1 porque os meses comecam em 0
       return idade
    if (hoje.getMonth() + 1 - mes > 0)
       return idade+1
	   

    //entao eh porque sao iguais. Vejo os dias
    //se subtraio os dias e der menor que 0 entao nao cumpriu anos. Se der maior ou igual sim que já cumpriu
    if (hoje.getUTCDate() - dia >= 0)
       return idade + 1

    return idade
} 

function validDate(obj){
	 date=obj.value
	if (/[^\d/]|(\/\/)/g.test(date))  {obj.value=obj.value.replace(/[^\d/]/g,'');obj.value=obj.value.replace(/\/{2}/g,'/'); return }
	if (/^\d{2}$/.test(date)){obj.value=obj.value+'/'; return }
	if (/^\d{2}\/\d{2}$/.test(date)){obj.value=obj.value+'/'; return }
	if (!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(date)) return
	
	 test1=(/^\d{1,2}\/?\d{1,2}\/\d{4}$/.test(date))
	 date=date.split('/')
	 d=new Date(date[2],date[1]-1,date[0])
	 test2=(1*date[0]==d.getDate() && 1*date[1]==(d.getMonth()+1) && 1*date[2]==d.getFullYear())
	 if (test1 && test2) return true
	 obj.select();
	 obj.focus()
	 return false
}











var arrAtributos = new Array();

function alterarAtributo(pStrID,pStrAtributo,pStrValorPadrao,pStrNovoValor,pBooForcarAlteracao) {
	if ($("#" + pStrID) && pStrAtributo) {		
		if (!arrAtributos[pStrID]) arrAtributos[pStrID] = new Array();
		if (!arrAtributos[pStrID][pStrAtributo]) arrAtributos[pStrID][pStrAtributo] = new Array();
		
		if (!arrAtributos[pStrID][pStrAtributo][2] || pBooForcarAlteracao) {
			arrAtributos[pStrID][pStrAtributo][0]	= $("#" + pStrID).attr(pStrAtributo);
			
			if (pStrValorPadrao) arrAtributos[pStrID][pStrAtributo][0] = pStrValorPadrao;
					
			arrAtributos[pStrID][pStrAtributo][1]	= pStrNovoValor;
			arrAtributos[pStrID][pStrAtributo][2]	= true;
			
			if ($("#" + pStrID).attr(pStrAtributo) == pStrValorPadrao) $("#" + pStrID).attr(pStrAtributo,pStrNovoValor);
		}
	}
}

function restaurarAtributo(pStrID,pStrAtributo,pBooForcarRestauracao,pBooAceitarNull) {	
	if ($("#" + pStrID) && pStrAtributo) {
		if (arrAtributos[pStrID]) {
			if (arrAtributos[pStrID][pStrAtributo]) {
				var strValor = $("#" + pStrID).attr(pStrAtributo);
				
				if ((arrAtributos[pStrID][pStrAtributo][2] && ((!strValor && !pBooAceitarNull) || strValor == arrAtributos[pStrID][pStrAtributo][1])) || pBooForcarRestauracao) {
					$("#" + pStrID).attr(pStrAtributo,arrAtributos[pStrID][pStrAtributo][0]);
					
					arrAtributos[pStrID][pStrAtributo][0]	= "";
					arrAtributos[pStrID][pStrAtributo][1]	= "";
					arrAtributos[pStrID][pStrAtributo][2]	= false;
				}
			}
		}
	}
}
