function esFecha(d,m,a,mensaje)
{
	var swd=0;
	var swm=0;
	var swa=0;
	var filter;
	var x;
	var anno = 0;
	
	if (parseInt(d.length,10))
	{
		swd=1;
		//el dia tiene valor
	}
	
	if (parseInt(m.length,10))
	{
		swm=1;
		//el mes tiene valor
	}
	
	if (parseInt(a.length,10)) 
	{
		swa=1;
		//el año tiene valor
	}
	//si son todos nulos
	if(swd==0 && swm==0 && swa==0)
	{
		return (true);
	}
	else
	{
		//si la fecha esta completa
		if(swd==1 && swm==1 && swa==1)
		{
			filter  = /^\d\d\d\d$/
			//si el año es un valor numerico
			if (filter.test(a)) 
			{
				x = filter.exec(a);
				//si el año es mayor o igual que 1900
				if (parseInt(x[0],10) >= 1900) 
				{
					anno = parseInt(a/4);
					anno = anno * 4;
					
					filter  = /^\d(\d)?$/
					//si el mes es un valor numerico
					if (filter.test(m)) 
					{
						x = filter.exec(m);
						//si el mes esta entre 1 a 12
						if (parseInt(x[0],10) > 0 && parseInt(x[0],10) < 13) 
						{
							filter  = /^\d(\d)?$/
							//si el dia es un valor numerico
							if (filter.test(d)) 
							{
								x = filter.exec(d);
								// si el dia esta entre 1 a 31
								if (parseInt(x[0],10) > 0 && parseInt(x[0],10) < 32) 
								{
									//si los meses son de 31 dias
									if(parseInt(m)==1 || parseInt(m)==3 || parseInt(m)==5 || parseInt(m)==7 || parseInt(m)==8 || parseInt(m)==10 || parseInt(m)==12)
									{
										if(parseInt(d)<=31)
										{
											return(true);
										}
									}
									else
									{
										//si el mes 2 es de 28 0 29 días
										if(parseInt(m)==2)
										{
											if (anno == parseInt(a))
											{
												if(parseInt(d)<=29)
												{
													return (true);
												}
											}
											else
											{
												if(parseInt(d)<=28)
												{
													return (true);
												}
											}
										}
										else
										{
											//si los meses son de 30 días
											if(parseInt(m)==4 || parseInt(m)==6 || parseInt(m)==9 || parseInt(m)==11)
											{
												if(parseInt(d)<=30)
												{
													return (true);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	alert(mensaje);
	return(false);
}