// JavaScript Document
/*/////////////////////////////////////////////////////////////////////////////////////////*/
/* FUNCIÓN redimensionar_img()

Sirve para redimensionar PROPORCIONALMENTE una o varias imágenes de una página web ajustándolas a una medida 
máxima determinada de ancho, alto ó el mayor de los dos.

Para funcionar el "name" y el "id" de la imagen o imágenes (etiqueta "img") ha de ser: "img_ficha". Y CADA
UNA de esas imagenes deben de estar contenidas dentro de un layer (etiqueta "div") cuyo "id" y "name"
han de ser "contenedor_fotografia". Es decir, todas las etiquetas de imágenes se han de llamar igual
("img_ficha") y CADA UNA debe de estar dentro de un layer de nombre "contenedor_fotografia". Es decir,
un layer una imagen y una imagen un layer.

El layer debe de estar oculto. Ejemplo:
		<div id="contenedor_fotografia" style="visibility:hidden">


PARÁMETROS:
Puede recibir 3 parámetros:
	1- medida_max: un entero que representa el número de pixels máximo de medida (ancho o alto).
	2- siempre: puede tener 2 valores: 0 y 1. 
		-0 ó no significa que si el tipo de medida (el ancho o el alto) es ya menor que la 
		medida máxima dada no se ha de modificar el tipo de medida.
		-1 ó si significa que siempre se ha de modificar el tipo de medida.
	3- tipo_medida: 3 valores: "", "ancho" y "alto".
		-"" ó el mayor de los dos, significa que primero se calcula si el ancho es mayor que el alto
		o viceversa. Y se aplica la medida máxima sobre el ue sea mayor.
		-"ancho", significa que la medida máxima se debe de aplicar sobre el ancho de la imagen.
		-"alto", significa que la medida máxima se debe de aplicar sobre el alto de la imagen.

IMPORTANTE:
Si la medida máxima se aplica sobre el ancho de la imagen la altura también se modificará proporcionalmente
al cambio realizado en la anchura para que la imagen no resulte deformada. Y viceversa.

Para llamar a la función se puede realizar desde el evento onLoad del body.
Ejemplo 1:
	<body onLoad="redimensionar_img(140, 1);" >
Ejemplo 2:
	<body onLoad="redimensionar_img(200, 1, 'ancho');" >
Ejemplo 3:
	<body onLoad="redimensionar_img(140, 0, 'ancho');" >
Ejemplo 4:
	<body onLoad="redimensionar_img(140, 0, 'alto');" >
Ejemplo 5: consigues lo mismo que con el ejemplo 1
	<body onLoad="redimensionar_img(140, 1, '');" >
*/
/*/////////////////////////////////////////////////////////////////////////////////////////*/
function redimensionar_img()
{
	
	/* ARGUMENTOS RECIBIDOS//////////////////////////////////////////////////////*/
	/* DEBUG */
	//for(i=0;i<arguments.length;i++) alert(arguments[i]);
	
	/*Medida máxima de ancho y alto:*/
	var medida_max=140; //una medida por defecto
	if(arguments[0]!=null){ medida_max=parseInt(arguments[0]);	}
	//alert(medida_max);
	/*//////////////////////////////*/
	/*Si es obligatorio el que la imagen se redimensione aunque el 
	tamaño de la imagen sea menor que la medida máxima dada: 
	(valor booleano: 0=no; 1=Si) */
	var siempre=0;
	if(arguments[1]!=null)
	{
		if(arguments[1]!=0){siempre=1;}
	}
	//alert(siempre);
	/*//////////////////////////////*/
	/*Tipo de medida: (3 valores: el mayor de los dos, "ancho" y "alto").*/
	var tipo_medida=""; //vacío significa: el mayor de los dos.
	if(arguments[2]!=null)
	{
		if(arguments[2]=="ancho"){tipo_medida="ancho";}
		if(arguments[2]=="alto"){tipo_medida="alto";}
	}
	//alert(tipo_medida);
	/* ///////////////////////////////////////////////////////////////////////////*/
	
	var altura, anchura;
	
	/* Primero compruebo que los objetos existan: */
	if ((document.all['img_ficha']!=null)&&(document.all['contenedor_fotografia']!=null))
	{
		/*DEBUG: */
		//alert(document.all['img_ficha'].length);
		//alert(document.all['img_ficha'][0].src);
		//alert(document.all['contenedor_fotografia'].length);
		
		
		/* Compruebo si es una colección o no */
		/* Como tiene que haber una capa "contenedor_fotografia" por cada imagen "img_ficha", si 
		"img_ficha" es una colección significa que también lo es "contenedor_fotografia".*/
		var longitud= document.all['img_ficha'].length;
		if(longitud!=null)
		{
			/* Se trata de una colección: */
			for (i=0;i<longitud;i++)
			{
				//debug:
				//alert(document.all['img_ficha'][i].src);
				
				altura= document.all['img_ficha'][i].height;
				anchura= document.all['img_ficha'][i].width;
				//debug:
				/* alert(altura+' x '+anchura); */
				
				//Discrimino por la variable tipo_medida:
				switch(tipo_medida)
				{
					case "ancho":					
						//Siempre?
						if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
						{
							if(medida_max < anchura)
							{
								altura=parseInt((medida_max*altura)/anchura);
								anchura=medida_max;
							}//si no es menor la imagen se deja con el mismo tamaño original.
						}
						else //siempre.
						{
							altura=parseInt((medida_max*altura)/anchura);
							anchura=medida_max;
						}
						break;
					case "alto":
						//Siempre?
						if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
						{
							if(medida_max < altura)
							{
								anchura=parseInt((medida_max*anchura)/altura);
								altura=medida_max;
							}//si no es menor la imagen se deja con el mismo tamaño original.
						}
						else //siempre.
						{
							anchura=parseInt((medida_max*anchura)/altura);
							altura=medida_max;
						}
						break;
					default:
						//El mayor de los dos:
						if(altura>anchura)
						{
							//Siempre?
							if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
							{
								if(medida_max < altura)
								{
									anchura=parseInt((medida_max*anchura)/altura);
									altura=medida_max;
								}//si no es menor la imagen se deja con el mismo tamaño original.
							}
							else //siempre.
							{
								anchura=parseInt((medida_max*anchura)/altura);
								altura=medida_max;
							}
						}
						else //la anchura es mayor, o bien, son iguales.
						{
							//Siempre?
							if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
							{
								if(medida_max < anchura)
								{
									altura=parseInt((medida_max*altura)/anchura);
									anchura=medida_max;
								}//si no es menor la imagen se deja con el mismo tamaño original.
							}
							else //siempre.
							{
								altura=parseInt((medida_max*altura)/anchura);
								anchura=medida_max;
							}
						}
				}//fin del switch
				
				/* Asigno los valores: */
				document.all['img_ficha'][i].height=altura;
				document.all['img_ficha'][i].width=anchura;
				//debug:
				/*  alert(altura+' x '+anchura); */ 
				
				/* Hacemos la capa visible:*/
				document.all['contenedor_fotografia'][i].style.visibility='visible';
			
			}
		}
		else
		{
			/* NO es una colección: */
			//alert("no es una coleccion");

			altura= document.all['img_ficha'].height;
			anchura= document.all['img_ficha'].width;
			//debug:
			/* alert(altura+' x '+anchura); */
			
			//Discrimino por la variable tipo_medida:
			switch(tipo_medida)
			{
				case "ancho":					
					//Siempre?
					if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
					{
						if(medida_max < anchura)
						{
							altura=parseInt((medida_max*altura)/anchura);
							anchura=medida_max;
						}//si no es menor la imagen se deja con el mismo tamaño original.
					}
					else //siempre.
					{
						altura=parseInt((medida_max*altura)/anchura);
						anchura=medida_max;
					}
					break;
				case "alto":
					//Siempre?
					if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
					{
						if(medida_max < altura)
						{
							anchura=parseInt((medida_max*anchura)/altura);
							altura=medida_max;
						}//si no es menor la imagen se deja con el mismo tamaño original.
					}
					else //siempre.
					{
						anchura=parseInt((medida_max*anchura)/altura);
						altura=medida_max;
					}
					break;
				default:
					//El mayor de los dos:
					if(altura>anchura)
					{
						//Siempre?
						if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
						{
							if(medida_max < altura)
							{
								anchura=parseInt((medida_max*anchura)/altura);
								altura=medida_max;
							}//si no es menor la imagen se deja con el mismo tamaño original.
						}
						else //siempre.
						{
							anchura=parseInt((medida_max*anchura)/altura);
							altura=medida_max;
						}
					}
					else //la anchura es mayor, o bien, son iguales.
					{
						//Siempre?
						if(siempre==0) //NO siempre. sólo si es mayor que la medida máxima
						{
							if(medida_max < anchura)
							{
								altura=parseInt((medida_max*altura)/anchura);
								anchura=medida_max;
							}//si no es menor la imagen se deja con el mismo tamaño original.
						}
						else //siempre.
						{
							altura=parseInt((medida_max*altura)/anchura);
							anchura=medida_max;
						}
					}
			}//fin del switch
			
			/* Asigno los valores: */
			document.all['img_ficha'].height=altura;
			document.all['img_ficha'].width=anchura;
			//debug:
			/*  alert(altura+' x '+anchura); */ 
			
			/* Hacemos la capa visible:*/
			document.all['contenedor_fotografia'].style.visibility='visible';
			
		}
	}
}
/*/////////////////////////////////////////////////////////////////////////////////////////*/
