/**
* @fileoverview Libreria con funciones de utilidad
*
* @author dapda.com
* @version 0.1
*/




/**
* Realiza una precarga de las imágenes almacenadas en el vector pasado como parámetro
* @param {Array} imagenesACargar array con las url de las imágenes de las cuales queremos hacer la precarga
*/
function PrecargaImagenes(imagenesACargar) {
    
	imagenesCargadas = new Array();
	
	for (i in imagenesACargar) {
		imagenesCargadas[i] = new Image();
		imagenesCargadas[i].src = imagenesACargar[i];
	}
}




/**
* Cambiar la imagen de la celda de una tabla
* @param {String} identificadorCelda identificador de la celda en el documento
* @param {String} rutaNuevaImagen ruta de la imagen que queremos poner como nuevo fondo
*/
function CambiaFondoCelda(identificadorCelda, rutaNuevaImagen) {
	document.getElementById(identificadorCelda).style.backgroundImage="url("+rutaNuevaImagen+")";
}


/**
* Cambiar el color de fondo de la fila de una tabla
* @param {String} idFila identificador de fila
* @param {String} color a aplicar a la fila de la tabla
*/
function CambiaBackgroundColorFilaTabla(idFila, color) {
	document.getElementById(idFila).style.backgroundColor = color;
}




/**
* Función que simula un enlace (nos lleva a la página indicada como parámetro
* @param {String} destino url a la que queremos ir
*/
function IrAURL(destino) {
	location.href = destino;
}



/**
* Función que simula un enlace (abre en otra ventana la página indicada como parámetro
* @param {String} destino url a la que queremos ir
*/
function IrAURLBlank(destino) {
	window.open(destino);
}



/**
* Función que envía el un formulario al destino indicado
* @param {String} formulario nombre del formulario que queremos enviar
* @param {String} destino url al que enviaremos el formulario
*/
function enviaFormulario(formulario, destino) {
    document.getElementById(formulario).action = destino;
    document.getElementById(formulario).submit();
}





/**
* Función activa o desactiva un botón mediante la activación o desactivación de un checkbox respectivamente.
* @param {String} idCheckbox identificador del checkbox que activa o desactiva el botón
* @param {String} idBoton identificador del botón que será activado o desactivado por la pulsación en el checkbox
*/
function ActivaDesactivaBotonPorCheckbox(idCheckbox, idBoton) {
	if (idCheckbox.checked)
		idBoton.disabled = false;
	else
		idBoton.disabled = true;
}



/**
* Realiza el cambio de las diapositivas del contenedor por defecto 'slideshow' (Jquery)
*/
function RelizaCambioDiapositivaPublicidad() {
	
    	var $active = $('#slideshow DIV.active');

    	if ( $active.length == 0 ) 
		$active = $('#slideshow DIV:last');

    	var $next =  $active.next().length ? $active.next()
        	: $('#slideshow DIV:first');

    	$active.addClass('last-active');

    	$next.css({opacity: 0.0})
        	.addClass('active')
        	.animate({opacity: 1.0}, 1000, function() {
            		$active.removeClass('active last-active');
        	});
}



/**
* Realiza el cambio de las diapositivas del contenedor pasado como parámetro (Jquery) Ej: RelizaCambioDiapositivaPublicidadId('slideshow2')
* @param {String} identificador identificador del contenedor de las diapositivas a la que vamos a realizar el cambio
*/
function RelizaCambioDiapositivaPublicidadId(identificador) {
	
    	var $active = $('#' + identificador + ' DIV.active');

    	if ( $active.length == 0 )
		$active = $('#' + identificador + ' DIV:last');

    	var $next =  $active.next().length ? $active.next()
        	: $('#' + identificador + ' DIV:first');

    	$active.addClass('last-active');

    	$next.css({opacity: 0.0})
        	.addClass('active')
        	.animate({opacity: 1.0}, 1000, function() {
            		$active.removeClass('active last-active');
        	});
}






/**
* Funciones para el intercambio de imágenes
*/
/**
* Funcion que restaura una imagen cambiada por su original
*/
function IntercabioImagenRestaura() { 
  	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
/**
* Funcion que realiza la precarga de las imagenes a intercambiar
*/
function IntercambioImagenPrecarga() {
  	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    	var i,j=d.MM_p.length,a=IntercambioImagenPrecarga.arguments; for(i=0; i<a.length; i++)
    	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
/**
* Funcion que busca el objeto (imagen a intercambiar)
*/
function IntercambioImagenEncuentraObjeto(n, d) { //v4.01
  	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=IntercambioImagenEncuentraObjeto(n,d.layers[i].document);
  	if(!x && d.getElementById) x=d.getElementById(n); return x;
}
/**
* Funcion que intercambia una imagen por otra
*/
function IntercambioImagenCambia() { //v3.0
  	var i,j=0,x,a=IntercambioImagenCambia.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   	if ((x=IntercambioImagenEncuentraObjeto(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}




/**
* Cambia el tamaño de una imagen
* @param {String} identificador identificador de la imagen a la que vamos a cambiar el tamaño
* @param {String} ancho ancho que se le va a asignar a la imagen
* @param {String} alto alto que se le va a asignar a la imagen
*/
function CambiaTamanioImagen(identificador, ancho, alto) {
  	imagen = document.getElementById(identificador);
  	imagen.width = ancho;
  	imagen.height = alto;
}


/**
* Cambia el texto que hay en un div
* @param {String} identificador identificador del div del cual vamos a cambiar el tamaño
* @param {String} texto nuevo texto que tendrá el div
*/
function CambiaTextoDiv(identificador, texto) {
	document.getElementById(identificador).innerHTML = texto;
  	imagen = document.getElementById(identificador);
}



/**
* Muestra (en caso de estar oculta) y oculta (en caso de estar visible) una fila de una tabla, dependiendo del estado actual de la misma
* @param {String} identificador identificador de la fila de la tabla
*/
function MuestraOcultaFilaTabla(identificador) {

  	fila = document.getElementById(identificador);
  	if (fila.style.display != "none")	
    		fila.style.display = "none"; //ocultar fila 
  	else
    		fila.style.display = ""; //mostrar fila 
}


/**
* Muestra una fila de una tabla
* @param {String} identificador identificador de la fila de la tabla
*/
function MuestraFilaTabla(identificador) {

  	fila = document.getElementById(identificador);
  	if (fila.style.display != "")
    		fila.style.display = ""; //mostrar fila  
}


/**
* Oculta una fila de una tabla
* @param {String} identificador identificador de la fila de la tabla
*/
function OcultaFilaTabla(identificador) {

  	fila = document.getElementById(identificador);
  	if (fila.style.display != "none")
    		fila.style.display = "none"; //ocultar fila
}


/**
* Oculta el elemento cuyo identificador es id
* @param {String} id identificador del elemento a ocultar
*/
function OcultaElemento(id) {
	document.getElementById(id).style.visibility="hidden"; 
}

/**
* Muestra el elemento cuyo identificador es id
* @param {String} id identificador del elemento a mostrar
*/
function MuestraElemento(id) {
	document.getElementById(id).style.visibility="visible"; 
}



/**
* Muestra un conjuntos de elementos
* @param {Vector de String} elementos vector que contiene los identificadores de los elementos a ocultar
*/
function OcultaElementos(elementos) {
	for (i in elementos)
		document.getElementById(elementos[i]).style.visibility="hidden";
}


/**
* Cambia el title de un elemento
* @param {String} id identificador del elemento al que se le quiere cambiar el title
* @param {String} nuevoTitle es el nuevo title que se le asignará al elemento
*/
function CambiaTitleElemento(id, nuevoTitle) {
	document.getElementById(id).setAttribute('title', nuevoTitle); 
}


/**
* Cambia el color de fondo de una caja de texto
* @param {String} id identificador de la caja de texto al que se le quiere cambiar el color de fondo
* @param {String} color es el color de fondo que se le asignará a la caja de texto
*/
function CambiaColorCajaTexto(id, color) {
	document.getElementById(id).style.backgroundColor = color; 
}


/**
* Indica si un valor es o no un número
* @param {String} valor valor a testear
* @return {Boolean} devuelve true en caso de que el valor sea un número y false en caso contrario
*/
function EsUnNumero(valor) {
	if (isNaN(valor))
  		return false;
	else
		return true;
}

/**
* Indica si un valor es o no un email
* @param {String} valor valor a testear
* @return {Boolean} devuelve true en caso de que el valor sea un email y false en caso contrario
*/
function EsUnEmail(valor){
    	re = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/
    	if (!re.exec(valor))
        	return false;
	else
        	return true;
}


/**
* Indica si un valor es o no un número de teléfono de 9 dígitos (todos seguidos)
* @param {String} valor valor a testear
* @return {Boolean} devuelve true en caso de que el valor sea un número de teléfono de 9 dítigos (todos seguidos) y false en caso contrario
*/
function EsUnTelefono(valor) {
	if (!(/^\d{9}$/.test(valor)))
  		return false;
	else
		return true;
}



/**
* Indica un checkbox está o no activado
* @param {String} idCheckbox identificador del checkbox
* @return {Boolean} devuelve true en caso de que el checkbox esté activado y false en caso contrario
*/
function EstaActivadoCheckbox(idCheckbox) {
	if (idCheckbox.checked)
		return true;
	else
		return false;
}

/**
* Activa un botón
* @param {String} idBoton identificador del botón a activar
*/
function ActivaBoton(idBoton) {
	idBoton.disabled = false;
}



/**
* Desactiva un botón
* @param {String} idBoton identificador del botón a desactivar
*/
function DesactivaBoton(idBoton) {
	idBoton.disabled = true;
}









