// JavaScript Document
//Variables globales

//Variables principales para trabajar con múltiples navegadores
var _jslib_isIE = document.all?true:false;
var _jslib_isNS = document.layers?true:false;
var _jslib_isNS6 = document.getElementById&&!document.all?true:false;
//respuesta será una cadena que contendrá la cadena de aviso que se dará al usuario si el formulario no se puede validar
var respuesta = "";
//iae_activo será la variable que nos dirá si mostramos o no el formulario de IAE
var iae_activo = false;
//Variable que se carga con los eventos de la ventana
var nav4 = window.Event ? true : false;

/**************************
	FUNCIONES COMUNES
***************************/

	//Función para obtener el objeto de la forma o del documento
	function GetObject(name) {
		if(_jslib_isIE) {
			return document.all[name];
		} else if(_jslib_isNS) {
			return document.layers[name];
		} else if (_jslib_isNS6) {
			return document.getElementById(name);
		}
		return null;
	}
	
	/*Función para abrir un popup en el centro disponible de la pantalla
		Se le pasan como argumentos la url del fichero a cargar y el ancho y el alto del popUp a mostrar*/
	function abrir(url, ancho, alto) {
		var derecha, arriba;
		derecha = (screen.availWidth / 2) - (ancho / 2);
		arriba	= (screen.availHeight / 2) - (alto / 2);
		window.open(url, "nueva", "dependent=yes,resizable=yes,width="+ancho+",height="+alto+",left="+derecha+",top="+arriba);
	}
	
	//Función para pedir al usuario si está seguro de eliminar el registro
	//	Si acepta se irá hacia la url que se le pasa como argumento y si NO acepta devolverá el valor false y no continuará a la url
	function eliminar(ruta) {
		pregunta = confirm("Si acepta se eliminará el registro\n¿Desea continuar?")
		if (pregunta == true)
		{		
			//return true;
			location.href = ruta;
		}
		return false;	
	}
	
	//función que le da al objeto mandado una clase CSS, que se contiene en el parámetro pasado
	function dameEstaClase(obj, clase) {
		obj.className = clase;
	}
	
	//Función con la que conseguimos que solamente se escriban números en la caja de texto
	// Hace falta esta variable: 
	//				var nav4 = window.Event ? true : false; //Variable que se carga con los eventos de la ventana (para netscape)
	function acceptNum(evt) {
		if(_jslib_isIE) { 		//Si el explorador es IE
			var key=window.event.keyCode;
			if( (key <= 13) || (key < 48) || (key > 57) )
				window.event.keyCode=0; //anula la entrada de texto.
		} else { 				//Si el explorador es otro
			var key = nav4 ? evt.which : evt.keyCode;
			return ( key <= 13 || (key >= 48 && key <= 57) );
		}
	}
	
	function escribeMensaje() {
		if (respuesta != "") {
			alert(respuesta);
			respuesta = "";
			return false;
		}
		return true;
	}

	function IsNumeric(strString)
	//  check for valid numeric strings	
	{
		var strValidChars = "0123456789.-";
		var strChar;
		var blnResult = true;
		
		if (strString.length == 0) return false;
		
		//  test strString consists of valid characters listed above
		for (i = 0; i < strString.length && blnResult == true; i++) {
			strChar = strString.charAt(i);
			if (strValidChars.indexOf(strChar) == -1) {
				blnResult = false;
			}
		}
		return blnResult;
	}
/*****************************
	FIN FUNCIONES COMUNES
******************************/



/******************************************
	FUNCIONES PARA VALIDAR FORMULARIOS
*******************************************/

//Comprueba si los valores de dos campos son iguales
function iguales(obj1, obj2, clase) {
	if (obj1.value != obj2.value) {
		respuesta = respuesta + "El campo '" + obj1.title + "' no es igual al campo " + obj2.title + ". Deben ser iguales.";
		obj1.className = clase;
		obj2.className = clase;
		return false;
	}
	return true;
}

//Comprueba si un campo está vacío
function vacio(obj, clase) {
	if (obj.value == "") {
		respuesta = respuesta + "El campo '" + obj.title + "' no puede estar vacío, es obligatorio.\n";
		obj.className = clase;
		return false;
	}
	return true;
}

//Comprueba si un campo está vacío
function selectVacio(obj, clase) {
	if (obj.value == 0) {
		respuesta = respuesta + "El campo '" + obj.title + "'debe tener otra opción.\n";
		obj.className = clase;
		return false;
	}
	return true;
}

//Comprueba si el campo pasado es menor al número de caracteres requerido
function menorQue(obj, num, clase) {
	if (obj.value.length < parseInt(num, 10)) {
		respuesta = respuesta + "El campo '" + obj.title + "' no puede tener menos de " + num + " caracteres.\n";
		obj.className = clase;
		return false;
	}
	return true;
}

//Comprueba si el campo pasado tiene formato de email y no lleva caracteres prohibidos
function comprobarEMAIL(obj, clase) {
	campo = obj.value;
	if (	campo.indexOf('@',0) <= 0  || campo.indexOf(';',0) != -1 || campo.indexOf(' ',0) != -1 || campo.indexOf('/',0) != -1 
			|| campo.indexOf(';',0) != -1 || campo.indexOf('<',0) != -1 || campo.indexOf('>',0) != -1 || campo.indexOf('*',0) != -1 
			|| campo.indexOf('|',0) != -1 || campo.indexOf('`',0) != -1 || campo.indexOf('&',0) != -1 || campo.indexOf('$',0) != -1 
			|| campo.indexOf('!',0) != -1 || campo.indexOf('"',0) != -1 || campo.indexOf(':',0) != -1 || campo.indexOf('.',0) <= 0 ) {     
		
		respuesta = respuesta + "El campo '" + obj.title + "' no tiene la estructura de un email.\n\nEjemplo: \"su_nombre@su_dominio.com\"";
		obj.className = clase;
		return false;
	}
	return true;
}

//Comprueba si el campo pasado es numérico
function Numero(obj, clase) {
	var valor = parseFloat(obj.value, 10);		//convierte cadenas de texto a números en el sistema numérico que le digamos
	if (isNaN(valor)) {
		respuesta = respuesta + "El campo '" + obj.title + "' tiene que ser numérico\n";
		obj.className = clase;	  					//el método "isNaN" comprueba si el valor No es un número
		return false;
	}
	obj.value = valor;
	return true;
}

/****************************************************************
*  Cargar dinámicamente datos en un select
*  Ezequiel Villarreal G.  2005, Todos los derechos reservados.
*****************************************************************/

//Función principal para trabajar con AJAX
function MyAjax() {
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	
	return xmlhttp;
}

//Función para cargar los datos dinámicamente dentro del select (utilizando AJAX)
function cargarContenido() {
	var ajax = MyAjax();
	var familia = "buscador_familias";
	var subfamilia = "buscador_subfamilias";
	ajax.open("GET", "proceso.asp?familia=" + GetObject(familia).value, true);
	ajax.onreadystatechange = function() {
		if (ajax.readyState == 4) {				
			if (ajax.status == 200) {
				var resultado = ajax.responseText;
				var result_data = "";
				
				clearTopicList(subfamilia);
				GetObject("Cargador").innerHTML = "";
				appendToSelect(GetObject(subfamilia), "", "Seleccione una familia");
				
				GetObject(subfamilia).style.display = "inline";
				GetObject("Cargador").style.display = "none";
				
				var resultado_split = resultado.split("|");
				for (i=0; i < resultado_split.length; i++) {
					result_data = resultado_split[i].split(",");
					appendToSelect(GetObject(subfamilia), result_data[0], result_data[1]);
				}					
			} else {
				alert("Error Número: " + ajax.status + "\nDescripción: " + ajax.statusText);	
			}
		} else {
			GetObject(subfamilia).style.display = "none";
			GetObject("Cargador").style.display = "inline";
			GetObject("Cargador").innerHTML = "<img src='img/progress_FFF.gif' width='15' /> Cargando, por favor espere...";
		}
	}	
	ajax.send(null);
}

//Función para crear las opciones del select
function appendToSelect(obj, value, content) {
	var opt = document.createElement("option");
	opt.value = value;
	opt.appendChild(document.createTextNode(content));
	obj.appendChild(opt);
}


//Función para eliminar las opciones del select
function clearTopicList(nombre_objeto) {
	var Select = GetObject(nombre_objeto);
	while (Select.length > 0) {
		Select.remove(0);
	}
}
