/* ----------- funciones de utilidades ------------ */

function isEmpty(cadena) { 
    return (cadena == null) || (cadena.length == 0); 
}

/* elimina espacios de la izquierda */
var whitespace = "\n\r\t ";
function ltrim(cadena){
    if(isEmpty(cadena)) return "";
    var left = 0; var i = 0;
    while((i < cadena.length) && (whitespace.indexOf(cadena.charAt(i++))!= -1))
        left++;
        
    return cadena.substring(left, cadena.length);
}

/* elimina espacios de la derecha */
function rtrim(cadena){
    if(isEmpty(cadena)) return "";
    var right = 0; var k = 0;
    k = cadena.length-1;
    while((k >= 0) && (whitespace.indexOf(cadena.charAt(k--))!= -1)) 
        right++;
        
    return cadena.substring(0, cadena.length - right);
}

/* elimina los espacios a la izquierda y la derecha */
function trim(cadena){
    return ltrim(rtrim(cadena));
}

/* muestra la capa indicando su id (deberia ser un div) */
function mostrarCapa(obj){
	if(document.getElementById(obj) != null){
	    var el = document.getElementById(obj);
	    el.style.display = "block";
	} else {
		alert("Error: no se puede mostrar la capa con id '" + obj + "' porque no existe.");
	}
}

/* oculta la capa indicando su id (deberia ser un div) */
function ocultarCapa(obj){
	if(document.getElementById(obj) != null){
	    var el = document.getElementById(obj);
	    el.style.display = "none";
	} else {
		alert("Error: no se puede ocultar la capa con id '" + obj + "' porque no existe.");
	}
}

function insertarHTML(id_obj,texto){
	if(document.getElementById(id_obj) != null){
	    var el = document.getElementById(id_obj);
	    el.innerHTML = texto;
	} else {
		alert("Error: no se puede instertar HTML en la capa con id '" + id_obj + "' porque no existe.");
	}
}

/* cambia la visibilidad de una la capa indicando su id (deberia ser un div) */
function cambiarVisibilidadCapa(obj){
	if(document.getElementById(obj) != null){
	    var el = document.getElementById(obj);
	    if(el.style.display != "block"){
	        el.style.display = "block";
		} else{
			el.style.display = "none";
		}
	} else {
		alert("Error: no se puede cambiar la visibilidad de la capa con id '" + obj + "' porque no existe.");
	}
}

/* cambia las clase css de una capa */
function cambiarClasesMenu(obj,clase1,clase1_over,clase2,clase2_over){
	if(document.getElementById(obj) != null){
	    var el = document.getElementById(obj);
	    if(el.className == clase1 || el.className == clase1_over){
	    	el.className = clase2;
	    	el.onmouseover = function() {
				this.className = clase2_over;
			}
	    	el.onmouseout = function() {
				this.className = clase2;
			}
		} else {
			el.className = clase1;
	    	el.onmouseover = function() {
				this.className = clase1_over;
			}
	    	el.onmouseout = function() {
				this.className = clase1;
			}
		}
	} else {
		alert("Error: no se puede cambiar las clases del menu con id '" + obj + "' porque no existe.");
	}
}

/* Funcion para mostrar los elementos ocultos de un contenido */
function muestra(obj){
	if(document.getElementById){
	var el = document.getElementById(obj);
	var ar = document.getElementById("contenido").getElementsByTagName("div");
		if(document.getElementById(obj) != null){
			if(el.style.display != "block"){
				for (var i=0; i<ar.length; i++){
					if (ar[i].className=="subcontenido")
						ar[i].style.display = "none";
				}
				el.style.display = "block";
			} else{
				el.style.display = "none";
			}
		} else {
			alert("Error: no se puede mostrar el contenido de la capa con id '" + obj + "' porque no existe.");
		} 
	}
}

/* manda el formulario con los datos indicados para el action */
function mandar_formulario(id_formulario,action){
	if(document.getElementById(id_formulario) != null){
		var formulario = document.getElementById(id_formulario);
		formulario.action = action;
		formulario.submit();
	} else {
			alert("Error: no se puede mandar el formulario con id '" + id_formulario + "' porque no existe.");
	} 
}

/* Abre nuevas ventanas de los enlaces de forma no intrusiba y manteniendo la accesibilidad */

window.onload = abrirEnNuevaVentana;

function abrirEnNuevaVentana() {
	
	// obtenemos todos los elementos <a> dentro del documento
	var As = document.getElementsByTagName('a');
	// generamos un bucle para asignar los eventos
	for (var i=0; i < As.length; i++) {
		var el = As[i];
		// comprobamos que posee el atributo rel y es igual a nuevaVentana
		if (el.getAttribute('rel') == 'nuevaVentana') {
			el.onclick = function() { // vamos a abrir una nueva ventana con la dirección del enlace (href) y a cancelar la llamada habitual con return false
				window.open(this.href);
				return false;
			};
		}
	};
}
