function ValidarFormulario(Formulario)
	{var ListaDeErrores='';
	for (i=0;i<Formulario.elements.length;i++)
		{switch (Formulario.elements[i].type)
			{case 'select-one':
				if ((Formulario.elements[i].title!='')&&(Formulario.elements[i].value==0))
					ListaDeErrores+=' - '+Formulario.elements[i].title+'\n';
				break;
			case 'password':
				if ((Formulario.elements[i].title!='')&&(Formulario.elements[i].value==''))
					ListaDeErrores+=' - '+Formulario.elements[i].title+'\n';
				break;
			case 'text':
				if (Formulario.elements[i].alt.toLowerCase()=='email')
					{if ((Formulario.elements[i].accept!='')&&(Formulario.elements[i].value==''))
						ListaDeErrores+=' - '+Formulario.elements[i].accept+'\n';
					var Mensaje=CheckEmailFormat(Formulario.elements[i],true);
					if (Mensaje!='')
						ListaDeErrores+=' - '+Formulario.elements[i].title+'\n';}
				else
					{var LongitudMinima=(Formulario.elements[i].alt==''?0:parseInt(Formulario.elements[i].alt,10));
					if ((Formulario.elements[i].title!='')&&((Formulario.elements[i].value=='')||(Formulario.elements[i].value.length<=LongitudMinima)))
						ListaDeErrores+=' - '+Formulario.elements[i].title+'\n';};
				break;};}
	if (ListaDeErrores!='')
		{alert('Los siguientes errores han ocurrido:\n'+ListaDeErrores);
		return false;}
	return true;}
function FOE_NumberCheck(TurboEvento)
	{var CodigoDeTecla=(window.event)?event.keyCode:TurboEvento.which;
	if ((CodigoDeTecla<48||CodigoDeTecla>57)&&(CodigoDeTecla!=8)&&(CodigoDeTecla!=0)) return false;
	return true;}
function FOE_DecimalNumberCheck(TurboEvento)
	{var CodigoDeTecla=(window.event)?event.keyCode:TurboEvento.which;
	if (CodigoDeTecla<48||CodigoDeTecla>57)
		if (CodigoDeTecla!=46)
			return false;
	return true;}
function CheckEmailFormat(TextControl,CouldBeEmpty)
	{var Message='';
	if ((TextControl.value=='')&&(CouldBeEmpty==true))
		return '';
	else
		{if ((TextControl.value!='')||(CouldBeEmpty==true))
			{var AtPosition=TextControl.value.indexOf('@');
			if (AtPosition>0)
				{var DotPosition=TextControl.value.indexOf('.',AtPosition);
				if (DotPosition>AtPosition+1)
					{if (DotPosition==TextControl.value.length-1) Message='Omite la parte despues del simbolo de punto';}
				else Message=(DotPosition==AtPosition+1?'Omite la parte entre el simbolo @ y el simbolo punto':'Omite el simbolo punto despues del simbolo @');}
			else Message=(AtPosition==0?'Omite la parte antes del simbolo @':'Omite el simbolo @');}
		else Message='Debe especificar un correo electornico';
		if (Message=='')
			{var i;
			var EmailPattern=/^(.+)@(.+)$/;
			var EmailStructure=TextControl.value.match(EmailPattern);
			var EmailUser=EmailStructure[1];
			var EmailDomain=EmailStructure[2];
			var InvalidCharactersFound='';
			var ActualChar;
//43	+
//45	-
//46	.
//95	_
//65	A		90	Z
//97	a		122	z
//48	0		57	9
			for (i=0;i<EmailUser.length;i++)
				{ActualChar=EmailUser.charCodeAt(i);
				if ((ActualChar!=43)&&(ActualChar!=45)&&(ActualChar!=46)&&(ActualChar!=95)&&((ActualChar<65)||(ActualChar>90))&&((ActualChar<97)||(ActualChar>122))&&((ActualChar<48)||(ActualChar>57)))
					InvalidCharactersFound+=EmailUser.charAt(i)+', ';}
			if (InvalidCharactersFound=='')
				{for (i=0;i<EmailDomain.length;i++)
					{ActualChar=EmailDomain.charCodeAt(i);
					if ((ActualChar!=43)&&(ActualChar!=45)&&(ActualChar!=46)&&(ActualChar!=95)&&((ActualChar<65)||(ActualChar>90))&&((ActualChar<97)||(ActualChar>122))&&((ActualChar<48)||(ActualChar>57)))
						InvalidCharactersFound+=EmailDomain.charAt(i)+', ';}
					if (InvalidCharactersFound!='')
						Message='Los caracteres invalidos '+InvalidCharactersFound+'han sido encontrados en el dominio del correo electronico';}
			else Message='Los caracteres invalidos '+InvalidCharactersFound+'han sido encontrados en el usuario del correo elecontrico';};}
	return Message;}
function CheckNumberFormat(TextControl,SkipWhites)
	{if (isNaN(TextControl.value))
		{TextControl.focus();}
	if (SkipWhites==true) return;
	if (TextControl.value=='')
		TextControl.value='0';}
/* DATE RELATED FUNCTIONS */
var DateSeparator='/';
function IsInteger(String2Analyze)
	{var i;
	for (i=0; i<String2Analyze.length; i++)
		{var CurrentCharacter=String2Analyze.charAt(i);// Check that current character is number.
		if ((CurrentCharacter<"0") || (CurrentCharacter>"9")) return false;}
	// All characters are numbers.
	return true;}
function DateWithoutSeparator(String2Analyze, Separator)
	{var i;
	var returnString='';// Search through string's characters one by one. If character is not in Separator, append to returnString.
	for (i=0; i<String2Analyze.length; i++)
		{var CurrentCharacter=String2Analyze.charAt(i);
		if (Separator.indexOf(CurrentCharacter)==-1) returnString+=CurrentCharacter;}
	return returnString;}
function DaysInMonth(Month,Year)
	{switch (Month)
		{case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			return 31;
			break;
		case 2:// February has 29 days in any year evenly divisible by four, EXCEPT for centurial years which are not also divisible by 400.
			return (((Year%4==0) && (!(Year%100==0) || (Year%400==0)))?29:28);
			break;
		case 4: case 6: case 9: case 11:
			return 30;
			break;};}
function IsRealDate(DateString)
	{var pos1=DateString.indexOf(DateSeparator);
	var pos2=DateString.indexOf(DateSeparator,pos1+1);
	var DayString=DateString.substring(0,pos1);
	var MonthString=DateString.substring(pos1+1,pos2);
	var YearString=DateString.substring(pos2+1);
	MonthValue=parseInt(MonthString,10);
	DayValue=parseInt(DayString,10);
	YearValue=parseInt(YearString,10);
	if (pos1==-1 || pos2==-1)
		{alert("The date format must be: dd/mm/yyyy");
		return false;}
	if (DateString.indexOf(DateSeparator,pos2+1)!=-1 || IsInteger(DateWithoutSeparator(DateString, DateSeparator))==false)
		{alert('Por favor ingrese una fecha valida');
		return false;}
	if (YearString.length!=4 || YearValue<MinYear || YearValue>MaxYear)
		{alert('Por favor ingrese un aņo valido con duatro digitos entre '+MinYear+' y '+MaxYear);
		return false;}
	if (MonthString.length!=2 || MonthValue<1 || MonthValue>12)
		{alert('Por favor, ingrese un mes valido');
		return false;}
	if (DayString.length!=2 || DayValue<1 || DayValue>DaysInMonth(MonthValue,YearValue))
		{alert('Por favor ingrese un dia valido');
		return false;}
	return true;}