function emailValid (sEmail) {
	var reEmail = /^(?:[\w-_]+\.?)*[\w-_]+@(?:[\w-_]+\.)+\w+$/;
	return sEmail == "" || reEmail.test(sEmail);
}



function diesMes(mes, any) {
	switch (mes) {
		case 0:  return 31; break;
		case 1:	 if (any % 4 == 0) {
			 		if (any % 400 == 0) {
		 				return 29;
	 				} else {
						if (any % 100 == 0) {
							return 28;
						} else {
							return 29;
						}
					}
				 } else {
					return 28;
				 };
				 break;
		case 2:  return 31; break;
		case 3:  return 30; break;
		case 4:  return 31; break;
		case 5:  return 30; break;
		case 6:  return 31; break;
		case 7:  return 31; break;
		case 8:  return 30; break;
		case 9:  return 31; break;
		case 10: return 30; break;
		case 11: return 31; break;
	}
}

function dataValida (iDia, iMes, iAny) {
	var bError =  iDia > diesMes(iMes-1);
	var dAvui = new Date();
	var dData = new Date(iAny, iMes-1, iDia);
	var bPosterior = dData >= dAvui;
	return !bError && !bPosterior;
	}
