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

function abrePop(cual, nombre, alto, ancho, ajustable, scroll) {
	if (ie) {    
		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=0, left=0');
	} else if (ns) {
		window.open(cual, nombre,'width=740,height=500,location=no,toolbar=no,directories=no,menubar=no,resizable='+ajustable+',scrollbars=yes, status=no');		
	} else {
		window.open(cual, nombre, 'left=0,top=0,width='+ancho+',height='+(alto+5)+',location=no,toolbar=no,directories=no,menubar=no,resizable='+ajustable+',scrollbars='+scroll+', status=no');
	}
}

// función GENÉRICA para cualquier formulario
//------------------------------------------------------------------------------------------------
function chekea(cual) {
	var i, tipo, valor;
	if (cual.elements) {
		for (i=0; i<cual.elements.length; i++) {
			if (cual.elements[i].name.substr(0,4) == "chk|") {
				tipo = cual.elements[i].name.split("|");
				valor = cual.elements[i].value;
				//if (valor != null) alert(valor);
				switch (tipo[2]) {
					case "editor":
						valor = tinyMCE.getContent();
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert("O campo \""+tipo[6]+"\" é obrigatorio");
							tinyMCE.execCommand("mceFocus", cual.elements[i].name);// ERROR: no sitúa el cursor
							return false;
						}
						// Después veo si es menor que el mínimo
						if (tipo[5] == "true" && valor.length < parseInt(tipo[3],10)) {
							alert("O campo \""+tipo[6]+"\" non puede ser menor de "+tipo[3]+" caracteres");				
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (valor.length > parseInt(tipo[4],10)) {
							alert("O campo \""+tipo[6]+"\" non pode ser meirande que "+tipo[4]+" caracteres");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "str":
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert("O campo \""+tipo[6]+"\" é obrigatorio");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (tipo[5] == "true" && valor.length < parseInt(tipo[3],10)) {
							alert("O campo \""+tipo[6]+"\" non pode ser menor de "+tipo[3]+" caracteres");				
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (valor.length > parseInt(tipo[4],10)) {
							alert("O campo \""+tipo[6]+"\" non puede ser meirande que "+tipo[4]+" caracteres");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "int":
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert("O campo \""+tipo[6]+"\" é obrigatorio");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea NUMÉRICO
						if (!(esnumerico(valor))) {
							alert("O campo \""+tipo[6]+"\" debe ser un número");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (parseInt(valor,10) < parseInt(tipo[3],10)) {
							alert("O campo \""+tipo[6]+"\" non pode ser menor de "+tipo[3]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (parseInt(valor,10) > parseInt(tipo[4],10)) {
							alert("O campo \""+tipo[6]+"\" non pode ser meirande de "+tipo[4]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						break;
					case "date":
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert("O campo \""+tipo[6]+"\" é obrigatorio");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea FECHA
						if (esfecha(valor) != "si" && valor != "") {
							alert("O campo \""+tipo[6]+"\" debe ser de tipo data: DD.MM.AAAA\n"+esfecha(valor));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (convierteFecha(valor) < convierteFecha(tipo[3])) {
							alert("O campo \""+tipo[6]+"\" non pode ser menor de "+tipo[3]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es mayor que el máximo
						if (convierteFecha(valor) > convierteFecha(tipo[4])) {
							alert("O campo \""+tipo[6]+"\" non pode ser meirande de "+tipo[4]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "eml":	//E-mail
						// Primero veo si es obligatorio RELLENARLO
						if ((tipo[5] == "true") && (valor.length == 0)) {
							alert("O campo \""+tipo[6]+"\" é obrigatorio");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea EMAIL válido
						if ((esMail(valor)!=true) && (valor!="")){
							alert("O campo \""+tipo[6]+"\" debe ser unha dirección de correo válida");
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					default:
						alert("Non existen restriccións de tipo \""+tipo[2]+"\"");
						return false;
						break;
				}
			}
		}
	}
	return true;
}

//COMPRUEBA que el campo sea fecha
//------------------------------------------------------------------------------------------------
function esfecha(dato) {
	var fecha_split;
	var i;
	var tdia, tmes, tano;

	fecha_split = dato.split('.');

	if(fecha_split.length != 3) {return "Debe tener DD.MM.AAAA";}
	
	tdia = parseInt(fecha_split[0],10);
	tmes = parseInt(fecha_split[1],10);
	tano = parseInt(fecha_split[2],10);

	if ((fecha_split[0].length!=2) || (!esNumeroEstricto(fecha_split[0])) ) {return "El día no es correcto. Formato: DD.MM.AAAA";}
	if ((fecha_split[1].length!=2) || (!esNumeroEstricto(fecha_split[1])) ) {return "El mes no es correcto. Formato: DD.MM.AAAA";}
	if ((fecha_split[2].length!=4) || (!esNumeroEstricto(fecha_split[2])) ) {return "el año no es correcto. Formato: DD.MM.AAAA";}

	// Comprobamos que sean 3 elementos
		// Comprobamos que no sean ceros
		for (i=0; i<fecha_split.length; i++) {
			if (parseInt(fecha_split[i],10) == 0) return "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) return "El día no es correcto";
		if(f.getMonth() != (tmes-1)) return "El mes no es correcto";
		if(f.getFullYear() != tano) return "El año no es correcto";

	return "si";
}


//DEVUELVE 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);
}

//COMPRUEBA que el dato sea un número
//------------------------------------------------------------------------------------------------
function esNumeroEstricto(dato){
	var i;
	for(i=0;i<dato.length;i++){
		if (dato.charAt(i)>'9' || dato.charAt(i)<'0') { return false;}
	}
	return true;
}

// Recarga la página añadiendo una variable al querystring
// -----------------------------------------------------------------------------------------------
function recargaPagina(todo, varQuery, varQueryValor) {
	window.location = ""+todo+"&"+varQuery+"="+varQueryValor;
}

// MUESTRA o no una capa mediante la propiedad display
// ------------------------------------------------------------------------------------------------
function abrirCerrarCapa(capa){
	if(document.getElementById(capa).style.display=='none'){
		document.getElementById(capa).style.display='block';
		if(document.getElementById("btnAbrirCerrar")){
			document.getElementById("btnAbrirCerrar").src="img/btnFlechaAr.gif";
		}
	}else{
		document.getElementById(capa).style.display='none';
		if(document.getElementById("btnAbrirCerrar")){
			document.getElementById("btnAbrirCerrar").src="img/btnFlechaAb.gif";
		}
	}
}

// REDIRIGE un banner
//------------------------------------------------------------------------------------------------
function abreBanner(enlace){
	window.location = enlace;
}
