// Navegador
var ie = document.all ? 1 : 0;
var ns = document.layers ? 1 : 0;


// ABRE una ventana popup
// -----------------------------------------------------------------------------------------------
function abrePop(cual, nombre, alto, ancho, ajustable, scroll) {
	var ventana;
	var donde_x, donde_y;
	donde_x = (screen.width - ancho) / 2;
	donde_y = (screen.height - alto) / 2;
	if (ie) {
		ventana = window.open(cual, nombre, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars='+scroll+', resizable='+ajustable+', copyhistory=no, width='+ancho+', height='+alto+', top='+donde_y+', left='+donde_x+'');
	} else if (ns) {
		ventana = window.open(cual, nombre,'width=740,height=500,location=no,toolbar=no,directories=no,menubar=no,resizable='+ajustable+',scrollbars=yes,status=no');		
	} else {
		ventana = window.open(cual, nombre, 'left=0,top=0,width='+ancho+',height='+(alto+5)+',location=no,toolbar=no,directories=no,menubar=no,resizable='+ajustable+',scrollbars=no,status=no');		
	}
	ventana.focus();
}

// ABRE una ventana popup específica para el calendario
// -----------------------------------------------------------------------------------------------
function abrePopCalendario(cual) {
	var donde_x, donde_y, fecha;
	ancho=300;
	alto=270;
	if (ie) {
		donde_x = (screen.width - ancho) / 2;
		donde_y = (screen.height - alto) / 2;
	} else {
		donde_x = 0;
		donde_y = 0;
	}
	if (ie) {
		window.open(cual, 'pop_calendario', 'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,width='+ancho+', height='+alto+',top='+donde_y+',left='+donde_x+'');
	} else if (ns) {
		window.open(cual,'pop_calendario','left=0,top=0,width=740,height=500,location=no,toolbar=no,directories=no,menubar=no,resizable=no,scrollbars=yes,status=no');		
	} else {
		window.open(cual, 'pop_calendario', 'width='+ancho+',height='+(alto+5)+',location=no,toolbar=no,directories=no,menubar=no,resizable=no,scrollbars=no,status=no');		
	}
	if (window.opener == null) window.opener = self;
}

// VALIDA UNA FECHA
// -----------------------------------------------------------------------------------------------
function esFecha(dato) {
	var fecha_split;
	var i;
	var aux;
	var tdia, tmes, tano;
	aux="true";
	fecha_split = dato.split('/');
	tdia = parseInt(fecha_split[0],10);
	tmes = parseInt(fecha_split[1],10);
	tano = parseInt(fecha_split[2],10);
	// Comprobamos que sean 3 elementos
	if(fecha_split.length != 3){
		aux="Debe tener DD/MM/AAAA";
	}else{
		// Comprobamos que no sean ceros
		for (i=0; i<fecha_split.length; i++) {
		if (parseInt(fecha_split[i],10) == 0) aux="No existe la fecha: 0";
		}
		// Comprobamos que el AÑO tenga 4 dígitos
		if(fecha_split[2].length != 4) aux="El año debe tener 4 dígitos: AAAA";
		// Comprobamos que sea dia/mes/año: 28/02/1997
		var f = convierteFecha(dato);
		if(f.getDate() != tdia) aux="El día no es correcto";
		if(f.getMonth() != (tmes-1)) aux="El mes no es correcto";
		if(f.getFullYear() != tano) aux="El año no es correcto";
	}
	return aux;
}


// CONVIERTE una FECHA
// -----------------------------------------------------------------------------------------------
function convierteFecha(quien) {
	var fecha_split;	
	var tdia, tmes, tano;
	fecha_split = quien.split('/');
	tdia = parseInt(fecha_split[0],10);
	tmes = parseInt(fecha_split[1],10);
	tano = parseInt(fecha_split[2],10);
	return date = new Date(tano,tmes-1,tdia);
}


// VALIDA un email
// -----------------------------------------------------------------------------------------------
function esMail(texto){
    var valido = true;             
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-";
    var arroba = texto.indexOf("@", 0);
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1;
    var punto = texto.lastIndexOf(".");
	var i;
    for (i=0 ;i<texto.length;i++){
		if (cadena.indexOf(texto.substr(i, 1),0) == -1){
			valido = false;
			break;
    	}
    }
	if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (valido == true) && (texto.indexOf("..",0) == -1)){
    	valido = true;
	}else{
		valido = false;
	}
    return valido;
}


// VALIDA un formulario con campos del tipo chk|[str, date,...]|[true, false]|[nombre_campo]
// -----------------------------------------------------------------------------------------------
function chekea(cual){
	var i, campo, valor, seguir;
	seguir=true;
	for (i=0; i<cual.elements.length; i++) {	
		campo=cual.elements[i].name.split("|");
		valor=cual.elements[i].value;
		if(campo[0]=="chk") {
			switch (campo[1]) {
			case "str":
				if (campo[2]=="true" && valor=="" && seguir==true){
					alert("El campo '"+campo[3]+"' no puede estar vacio");
					cual.elements[i].focus();
					seguir=false;
				}
				break;
			case "date":
				if (((campo[2]=="false" && valor!="" && esFecha(valor)!="true") || (campo[2]=="true" && (valor=="" || esFecha(valor)!="true")))&& seguir==true) {
					alert("El campo '"+campo[3]+"' debe ser de tipo fecha: DD/MM/AAAA");
					cual.elements[i].focus();
					seguir=false;
				}
				break;
			case "eml":
				if (((esMail(valor)!=true && valor!="") || (campo[2]=="true" && valor=="")) && seguir==true){
					alert("El campo '"+campo[3]+"' no puede estar vacío y debe ser un email correcto");
					cual.elements[i].focus();
					seguir=false;
				}
				break;
			case "int":
				if(((isNaN(valor)==true && valor!="") || (campo[2]=="true" && valor=="")) && seguir==true){
					alert("El campo '"+campo[3]+"' no puede estar vacio y debe ser un número");
					cual.elements[i].focus();
					seguir=false;
				}
				break;
			default:
				alert("No existen restricciones de tipo \""+campo[2]+"\"");
				return false;
				break;
			}
		}
	}
	return seguir;
}


// CAMBIA la página de datos
// -----------------------------------------------------------------------------------------------
function cambiaPagina(destino){
	var nuevaPagina, documentoActDiv;
	nuevaPagina = document.getElementById("cambiarPagina").value;
	if ((isNaN(nuevaPagina)==false && nuevaPagina!="")){
		docActDiv = document.location.href.split("?");
		document.location.href=docActDiv[0]+destino+"&pag="+nuevaPagina;
	}else{
		alert("La página indicada debe ser un número");
		document.getElementById("cambiarPagina").focus();
	}
}


// PIDE confirmación para eliminar un registro
// -----------------------------------------------------------------------------------------------
function confirmaBorrar() {
	var opcion = confirm("¿Seguro que desea eliminar el registro?");
	if (opcion) return true;
	return false;
}


// PIDE confirmación para eliminar varios registros de un listado
// -----------------------------------------------------------------------------------------------
function confirma(destino){
	var seguir;
	var ids;
	ids = "";
	seguir = false;
	for(i=0;i<document.all.length;i++){
		if((document.all[i].type=="checkbox")&&(document.all[i].checked==true)){
			if(ids!=""){ ids=ids+","; }
			ids=ids+document.all[i].value;
			seguir = true;
		}
	}
	if(seguir==false){
		alert("Debe seleccionar por lo menos un registro");
	}else{
		if(confirm("¿Desea eliminar los registros seleccionados?")==true){
			document.location.href= destino +"&ids="+ ids;
		}
	}
}


// PIDE confirmación para cambiar los booleanos de varios registros de un listado
// -----------------------------------------------------------------------------------------------
function cambiaBooleano(destino){
	var seguir;
	var ids;
	ids = "";
	seguir = false;
	for(i=0;i<document.all.length;i++){
		if((document.all[i].type=="checkbox")&&(document.all[i].checked==true) && (document.all[i].name != 'marcaTodosCheckbox')){
			if(ids!=""){ ids=ids+","; }
			ids=ids+document.all[i].value;
			seguir = true;
		}
	}
	if(seguir==false){
		alert("Debe seleccionar por lo menos un registro");
	}else{
		document.location.href= destino +"&ids="+ ids;
	}
}


// REDIRIGE a cualquier dirección
// -----------------------------------------------------------------------------------------------
function redirige(donde){
	document.location.href = donde;
}


// REVISA los criterios de la barra de búsqueda
// -----------------------------------------------------------------------------------------------
function revisaBuscar(){
	if (document.frmBuscar.criterio.value.indexOf("fecha") != -1 && esFecha(document.frmBuscar.palabra.value) != "si"){
		buleano=esFecha(document.frmBuscar.palabra.value);
		if(buleano=='true'){
			return true;
		}
		alert(buleano);
		document.frmBuscar.palabra.focus();
	
		return false;
	} else {
		if (document.frmBuscar.palabra.value == ""){
			i=1;
			existeBooleano=false;
			criterioBool="criterioBool"+i;
			while((document.getElementById(criterioBool)!=null)&&!existeBooleano){
				existeBooleano=(document.getElementById(criterioBool).value!="|");
				criterioBool="criterioBool"+(++i);	
			}
			if(!existeBooleano){
				alert("El campo \"buscar\" no puede estar vacio");//El campo es obligatorio si no hay un campo booleano
				document.frmBuscar.palabra.focus();
				return false;
			}
			else{
				return true;
			}
		} else {
			return true;
		}
	}
}


// VALIDA 2 campos de claves, para ver que son iguales.
// -----------------------------------------------------------------------------------------------
function chekeaClaves(clave1, clave2) {
	var valor1,valor2; 
	valor1 = clave1.value; 
	valor2 = clave2.value;
	if (valor1 != valor2){
		alert("As chaves non coinciden.");
		return(false);
	}
	return (true);
}

// MARCA todos los check con al pulsar uno
// -----------------------------------------------------------------------------------------------
function MarcaCheckbox() {
  	for(i=0;i<document.all.length;i++){
		var e = document.all[i];
	 	if ((e.name != 'marcaTodosCheckbox') && (e.type=='checkbox') && (!e.disabled)) {
			e.checked = document.getElementById("marcaTodosCheckbox").checked;
		}
	}
}
