// JavaScript Document

function changeImage(objeto,source){
	var imagen = new Image();
	imagen.src = source;

	objeto.setAttribute('src', imagen.src);
}


function hideObject(object){
	if (object.push){
		for (var i=0; i<object.length; i++){
			if(typeof object[i] =='string'){
				document.getElementById(object[i]).style.display = 'none';
			}else{
				object[i].style.display = 'none';
			}
		}
	}else{
		if(typeof object =='string'){
			document.getElementById(object).style.display = 'none';
		}else{
			object.style.display = 'none';
		}
	}	
}


function getImageState(imageName){
	var imageNameData = new Array(2);
	
	if (imageName.indexOf('_over')!=-1){
		imageNameData[0] = imageName.slice(0,imageName.lastIndexOf('_over'));
		imageNameData[1] = '_over';
	}else if (imageName.indexOf('_inactive')!=-1){
		imageNameData[0] = imageName.slice(0,imageName.lastIndexOf('_inactive'));
		imageNameData[1] = '_inactive';	
	}else if (imageName.indexOf('_active')!=-1){
		imageNameData[0] = imageName.slice(0,imageName.lastIndexOf('_active'));
		imageNameData[1] = '_active';	
	}else if (imageName.indexOf('_off')!=-1){
		imageNameData[0] = imageName.slice(0,imageName.lastIndexOf('_off'));
		imageNameData[1] = '_off';	
	}else if (imageName.indexOf('_on')!=-1){
		imageNameData[0] = imageName.slice(0,imageName.lastIndexOf('_on'));
		imageNameData[1] = '_on';	
	}else {
		imageNameData[0] = imageName;
		imageNameData[1] = '';	
	}
	return imageNameData;
}


function getNewStateIdentifier(stateIdentifier){
	switch(stateIdentifier){
			case '':
				newStateIdentifier = '_over';
				break
			case '_over':
				newStateIdentifier = '';
				break
			case '_active':
				newStateIdentifier = '_inactive';		
				break
			case '_inactive':
				newStateIdentifier = '_active';
				break
			case '_off':
				newStateIdentifier = '_on';
				break
			case '_on':
				newStateIdentifier = '_off';
				break
			default:
				newStateIdentifier = '';	
		}
	return newStateIdentifier;
}
	
/****************************************************************************************************************/
/****************************************************************************************************************/
/* Acepta:                                                                                                      */
/*           - imageObject (object) -----> Un elemento/objeto tipo imagen.                                      */
/*           - stateIdentifier (string) -----> Una cadena que identificará el 'ESTADO' en el que se encuentra la*/
/*                                             imagen. Existen varias posibilidades de estado:                  */
/*           											                                                        */
/*                                                          - '_normal' Estado normal de la imagen              */
/*                                                          - '_over' Estado OVER de la imagen                  */
/*                                                          - '_active' Estado ACTIVO (i.e. después de haber    */
/*																		hecho alguna acción con ella) de la		*/
/*																		imagen   					            */
/*           														                                            */
/****************************************************************************************************************/
/* Necesita:                                                                                                    */
/*            - getNewStateIdentifier                                                                                                  */
/*           														                                            */
/****************************************************************************************************************/
/* Devuelve:                                                                                                    */
/*           El SRC 'contrario' al estado en el que se encontraba el elemento proporcionado (i.e. si es         */																							 
/*           '_active' u '_over' será '_normal' y viceversa.    			                                    */
/*           														                                            */
/****************************************************************************************************************/
/* Notas:                                                                                                       */
/*                          				     					                                            */
/*           														                                            */
/****************************************************************************************************************/
/****************************************************************************************************************/

function getOtherStateSource(imageObject){
	var path; var imageName; var imageExtension; var otherStateSource; var newStateIdentifier; var stateIdentifier = new Array;
	
	path = imageObject.src.slice(0,imageObject.src.lastIndexOf('/')+1);
	imageName = imageObject.src.slice(imageObject.src.lastIndexOf('/')+1,imageObject.src.lastIndexOf('.'));
	imageExtension = imageObject.src.slice(imageObject.src.lastIndexOf('.')+1,imageObject.src.length);
	stateIdentifier = getImageState(imageName);
	newStateIdentifier = getNewStateIdentifier(stateIdentifier[1]);
	imageName = stateIdentifier[0];
	
	//alert('0. getOtherStateSource\n--------------------------------\npath: '+path+'\nimageName: '+imageName+'\nimageExtension: '+imageExtension+'\nstateIdentifier: '+stateIdentifier+'\nnewStateIdentifier: '+newStateIdentifier);
	
	otherStateSource = path+imageName+newStateIdentifier+'.'+imageExtension;
	return otherStateSource;
}


function showObject(object){
	if (object.push){
		for (var i=0; i<object.length; i++){
			if(typeof object[i] =='string'){
				document.getElementById(object[i]).style.display = 'block';
			}else{
				object[i].style.display = 'block';
			}
		}
	}else{
		if(typeof object =='string'){
			document.getElementById(object).style.display = 'block';
		}else{
			object.style.display = 'block';
		}
	}
}

function switchDisplayStyle(object){
	if (object.style.display == 'block'){
		hideObject(object);
	} else if (object.style.display == 'none'){
		showObject(object);
	}
}


/***********************************************************************************************************************************************************/

function composeOverName(img, clase){
//	alert ('0. IMG al principio del metodo: '+img + ' className: '+clase);
	var state = ""; var languaje = ""; var extension = "";
//	alert('1. activa= '+activa);
	var ruta = img.slice(0,img.lastIndexOf('/')+1);
	var imagenName = img.slice((img.lastIndexOf('/')+1))
//	alert('2. imagenName after the slice: '+imagenName + '\n ruta: '+ ruta);	
	var extension = imagenName.slice(imagenName.lastIndexOf('.'),imagenName.length);
	var languaje = imagenName.slice((imagenName.length - (extension.length + 3)),(imagenName.length - extension.length));
	imagenName = imagenName.slice(0,(imagenName.length - (extension.length + languaje.length)));
//	alert('3. imagenName after the extension y el languaje: '+imagenName + '\n *************extension: ' + extension + '\n **********languaje: ' +languaje);	

	var imagenNormal = 	imagenName.search('_normal')
	if (imagenNormal != -1){
		imagenName = imagenName.slice(0,imagenNormal);
		state = '_over';		
	} else{
		var imagenActiva = 	imagenName.search('_act')
		if (imagenActiva != -1){
			imagenName = imagenName.slice(0,imagenActiva);
			state = '_over';
		} else{
			imagenName =  imagenName.slice(0,imagenName.length-5);
			if (clase){
				var activa = clase.search('activa');
				if (activa != -1){
					state = '_act';
				}else{
					state = '_normal';
				}
			}
		}
	}

	imagenName = ruta + imagenName + state + languaje + extension;

//	alert('4. imagenName returned: '+imagenName);
	return imagenName;
}

function checkRollOverState(image){
	var nombreImgNormal = image.search('_normal')
	var nombreImgActive = image.search('_act')	

	if (nombreImgNormal != -1 || nombreImgActive != -1){
//		alert('Existe!');
		return true;
	}else{
//		alert('****NO**** Existe!');	
		return false;	
	}
}

function readyPageRollOvers(){
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;		
	var pageLinks = document.getElementsByTagName('a');

	for (var i=0; i<pageLinks.length; i++){
		if (pageLinks[i].firstChild.nodeName == 'IMG'){
			var rollOverState = checkRollOverState(pageLinks[i].firstChild.src);
			if (rollOverState){
				var linkToModify = pageLinks[i];
				linkToModify.onmouseover = function() {
					changeImage(this.firstChild, composeOverName(this.firstChild.src));
					return false;
				}
				linkToModify.onmouseout = function() {
					changeImage(this.firstChild, composeOverName(this.firstChild.src, this.className));
					return false;
				}				
			}
		}
	}
}

function readyPageThumbnails(){
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;		
	var pageLinks = document.getElementsByTagName('a');
	
	for (var i=0; i<pageLinks.length; i++){
		if (pageLinks[i].className == 'thumbnail'){
			var linkToModify = pageLinks[i];
			linkToModify.onclick = function() {
//				alert(this.firstChild.src.slice(this.firstChild.src.lastIndexOf('/')+1));
				loadDetail(this.firstChild.src.slice(this.firstChild.src.lastIndexOf('/')+1));
				return false;
			}
		}		
	}
}