/*	Javascript Evaluación.js
 *	Este javascript es necesario para el manejo de los textbox dentro de la página.
 *
 *	Contiene las siguientes funciones:
 *		-text_vacio(text,a)
 *			Función que indica si un textbox está vacío. Se debe de pasar como parámetro su valor "name"
 *			dentro del formulario y su nombre para que en el mensaje aparezca éste.
 *		-evalua_float(text,a)
 *			Función que indica si los valores de un textbox son flotantes. En caso de no serlo se manda una
 *			alerta. Tiene como parámetros el valor "name" del textbox y su "nombre".
 *		-evalua_entero(text,a)
 *			Función que indica si los valores de un textbox son enteros. En caso de no serlo se manda una
 *			alerta. Tiene como parámetros el valor "name" del textbox y su "nombre".
 *		-evalua_fecha(text,a)
 *			Función que indica si los valores de un textbox es una fecha valida para MySQL. En caso de no serlo se 
 *			manda una alerta. Tiene como parámetros el valor "name" del textbox y su "nombre".
 */


//Está función realiza una evaluacion para saber si el valor de un cuadro de texto en un formulario está vacío
function text_vacio(text,a){
	var valor;
	valor = text.value;	//valor de la variable pasada como parámetro
	if(valor=="")	//Si el valor de la variable no no existe se manda el mensaje de alerta
	{
		alert("No puedes dejar el campo \""+a+"\" vacio");
		text.focus();
		return 1;
	}
	return 0;
}

//Está función realiza una evaluación para saber si dos select tienen datos seleccionados diferentes de ""
function dos_selected(select1,select2,texta,textb){
	var valor1,valor2;
	valor1 = select1.value;	//valor de la variable pasada como parámetro
	valor2 = select2.value;	//valor de la variable pasada como parámetro
	if(valor1!=""&&valor2!="")	//Si el valor de la variable no no existe se manda el mensaje de alerta
	{
		alert("No puedes seleccionar el campo \""+texta+"\" y el campo \""+textb+"\" al mismo tiempo");
		return 1;
	}
	return 0;
}

//Esta función evalua si el cuadro de texto en un formulario es un número flotante
function evalua_float(text,a){
	var valor;
	var val;
	var i;
	var count=0;	//Contador de puntos
	valor=text.value;
	//El for recorre todos los elementos de una cadena
	for(i=0;i<valor.length;i++)
	{
		//Si el elemento iésimo es diferente de (.) se convierte este elemento en un entero
		if(valor.charAt(i)!=".")
			val = parseInt(valor.charAt(i));
		//Si no es diferente se aumenta un contador. Este contador indica la cantidad de puntos encontrados
		else
			count++;
		/*Si el valor convertido a entero ne es un entero o el contador de puntos es mayor a 1 se manda el mensaje de alerta y se
		 *rompe el ciclo for*/
		if(isNaN(val)||count>1)
		{
			alert("Debes de escribir solo números en el campo \""+a+"\"");
			return 1;
		}
	}
	return 0;
}

//Esta función evalua si el cuadro de texto en un formulario es un número entero
function evalua_entero(text,a){
	var valor;
	var val;
	var i;
	valor=text.value;
	//El for recorre todos los elementos de una cadena
	for(i=0;i<valor.length;i++)
	{
		val = parseInt(valor.charAt(i));	//Convierte el caracter iésimo de la cadena en un entero
		//Si el valor convertido no es un entero, manda un mensaje de alerta
		if(isNaN(val))
		{
			alert("Debes de escribir solo números enteros en el campo \""+a+"\"");
			return 1;
		}
	}
	return 0;
}

//Esta función evalua si los cuadros de texto pasados son iguales para la confirmación de un password
function evalua_password(password,confirma){
	var valor_password, valor_confirma;
	valor_password=password.value;
	valor_confirma=confirma.value;
	if(valor_password!=valor_confirma)
	{
		alert('El password debe ser igual');
		return 1;
	}
	return 0;
}

//Esta función evalua si en los cuadros de texto no existen carácteres de salto de línea
function text_linea(text, a){
	var valor, i;
	valor= text.value;
	for(i=0;i<valor.length;i++)
	{
		if(valor_password!=valor_confirma)
		{
			alert('El password debe ser igual');
			return 1;
		}
		return 0;
	}
}

//Esta función evalua si el cuadro de texto en un formulario es una fecha válida para MySQL
function evalua_fecha(text,a){
	var valor;
	valor=text.value;
	//Evalua si el tamaño del textbox es 10. Si lo es hace lo siguiente
	if(valor.length==10)
	{
		//Si el valor de la primera posición no es número o es mayor a 2 o valor es menor a 1 manda la alerta
		if ((isNaN(parseInt(valor.charAt(0))))||((parseInt(valor.charAt(0))>2)||(parseInt(valor.charAt(0))<1)))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(1))))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(2))))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(3))))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número o es mayor a 1
		else if ((isNaN(parseInt(valor.charAt(5))))||(parseInt(valor.charAt(5))>1))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número o (el valor anterior es igual a 1 y el valor actual mayor a 2)
		else if ((isNaN(parseInt(valor.charAt(6))))||((parseInt(valor.charAt(5))==1)&&(parseInt(valor.charAt(6))>2)))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número o es mayor a 3
		else if ((isNaN(parseInt(valor.charAt(8))))||(parseInt(valor.charAt(8))>3))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número o (el valor anterior es igual a 3 y el valor actual es mayor que 1)
		else if ((isNaN(parseInt(valor.charAt(9))))||((parseInt(valor.charAt(8))==3)&&(parseInt(valor.charAt(9))>1)))
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el caracter de la cuarta posición es diferente de una diagonal (/)
		else if(valor.charAt(4)!="/")
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
		//Si el caracter de la séptima posición es diferente de una diagonal (/)
		else if(valor.charAt(7)!="/")
		{
			alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
			return 1;
		}
	}
	//Si es diferente de 10 la longitud, manda un mensaje si la longitud es diferente de 0
	else if(valor.length!=0)
	{
		alert("Debes de escribir solo fechas del f\u00f3rmato aaaa/mm/dd en el campo \""+a+"\"");
		return 1;
	}
	return 0;
}

//Esta función evalua si el cuadro de texto en un formulario es una hora valida para MySQL
function evalua_hora(text,a){
	var valor;
	valor=text.value;
	//Evalua si el tamaño del textbox es 10. Si lo es hace lo siguiente
	if(valor.length==5)
	{
		//Si el valor de la primera posición no es número o es mayor a 2 o valor es menor a 1 manda la alerta
		if (isNaN(parseInt(valor.charAt(0)))||parseInt(valor.charAt(0))>2)
		{
			alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(1)))||((parseInt(valor.charAt(0))==2)&&(parseInt(valor.charAt(1))>3)))
		{
			alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número o es mayor a 5.
		else if (isNaN(parseInt(valor.charAt(3)))||parseInt(valor.charAt(3))>5)
		{
			alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
			return 1;
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(4))))
		{
			alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
			return 1;
		}
		//Si el caracter de la segunda posición es diferente de dos puntos (:)
		else if(valor.charAt(2)!=":")
		{
			alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
			return 1;
		}
	}
	//Si es diferente de 10 la longitud, manda un mensaje si la longitud es diferente de 0
	else if(valor.length!=0)
	{
		alert("Debes de escribir solo horas del formato hh:mm en el campo \""+a+"\"");
		return 1;
	}
	return 0;
}

//Esta función evalua si el cuadro de texto en un formulario es una fecha válida para MySQL
function evalua_fecha_not_null(text,a){
	var valor;
	valor=text.value;
	//Evalua si el tamaño del textbox es 10. Si lo es hace lo siguiente
	if(valor.length==10)
	{
		//Si el valor de la primera posición no es número o es mayor a 2 o valor es menor a 1 manda la alerta
		if ((isNaN(parseInt(valor.charAt(0))))||((parseInt(valor.charAt(0))>2)||(parseInt(valor.charAt(0))<1)))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(1))))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(2))))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número.
		else if (isNaN(parseInt(valor.charAt(3))))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número o es mayor a 1
		else if ((isNaN(parseInt(valor.charAt(5))))||(parseInt(valor.charAt(5))>1))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número o (el valor anterior es igual a 1 y el valor actual mayor a 2)
		else if ((isNaN(parseInt(valor.charAt(6))))||((parseInt(valor.charAt(5))==1)&&(parseInt(valor.charAt(6))>2)))
		{
				alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número o es mayor a 3
		else if ((isNaN(parseInt(valor.charAt(8))))||(parseInt(valor.charAt(8))>3))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el valor no es un número o (el valor anterior es igual a 3 y el valor actual es mayor que 1)
		else if ((isNaN(parseInt(valor.charAt(9))))||((parseInt(valor.charAt(8))==3)&&(parseInt(valor.charAt(9))>1)))
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el caracter de la cuarta posición es diferente de una diagonal (/)
		else if(valor.charAt(4)!="/")
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
		//Si el caracter de la séptima posición es diferente de una diagonal (/)
		else if(valor.charAt(7)!="/")
		{
			alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
		}
	}
	//Si es diferente de 10 la longitud, manda un mensaje si la longitud es diferente de 0
	else
	{
		alert("Debes de escribir solo fechas del fórmato aaaa/mm/dd en el campo \""+a+"\"");
	}
}

//Funcion que evalua si el mail pasado es correcto
function evalua_mail(texto)
{
	var mailres = true;
	var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-";
	
	var arroba = texto.indexOf("@",0);
	if ((texto.lastIndexOf("@")) != arroba) arroba = -1;
	
	var punto = texto.lastIndexOf(".");
	
	for (var contador = 0 ; contador < texto.length ; contador++)
	{
		if (cadena.indexOf(texto.substr(contador, 1),0) == -1)
		{
			mailres = false;
			break;
		}
	}
	
	if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (mailres == true) && (texto.indexOf("..",0) == -1))
		mailres = true;
	else
		mailres = false;
	
	if(!mailres)
	{
		alert("El email no tiene un formato v\u00e1lido");
		return 1;
	}
	else
		return 0;
} 
