/**
 * @author juanlopez4691@gmail.com
 */
var opcionActiva = 0;
var subMnuVisible = 0;

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

function precargaMenu() {
	var lang = getUrlParam(window.location.href, 'l');
	var imgObj = new Image();
	var img;
	var imgLst = Array('01','01_1', '01_2', '02', '03', '03_1', '03_2', '03_3', '03_4', '04', '05', '06', '06_1', '06_2', '06_3', '06_4', '07', '08', '08_1', '08_2', '08_3', '08_4', '09', '10');
	
	for (img in imgLst) {
		imgObj.src = 'images/' + lang + '/menu_' + imgLst[img] + '.gif';
		imgObj.src = 'images/' + lang + '/menu_' + imgLst[img] + '_f2.gif';
		imgObj.src = 'images/' + lang + '/menu_' + imgLst[img] + '_f3.gif';
	}
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

function muestraSubMenu(idMenu) {
	if (subMnuVisible == idMenu) {
		$('#' + idMenu + '_s').hide('normal');
		subMnuVisible = 0;
	} else {
		if (subMnuVisible) $('#' + subMnuVisible + '_s').hide('normal');
		$('#' + idMenu + '_s').show('normal');
		subMnuVisible = idMenu;
	}
}

//Devuelve la posición de un elemento
jQuery.fn.extend({
	findPos : function() {
		obj = $(this).get(0);
		var curleft = obj.offsetLeft || 0;
		var curtop = obj.offsetTop || 0;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
		return {x:curleft, y:curtop};
	}
});

function lockToMouse(e) {
	var id = $(this).parent().get(0).id;
	
	$('#tooltip').css({
		width: $(this).parent().width(),
		left: ($('#' + id).parent().attr('class') == 'col3') ? $('.col3').findPos().x - $('#tooltip').width() + 'px' : $(this).findPos().x + $(this).width() + 4 + 'px',
		top: $(this).findPos().y - $('#tooltip').height() + 10 + 'px'
	})
}

function getUrlParam(url, param) {
	param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]" + param + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(url);
	
	if (results == null) {
		return '';
	}
	else {
		return results[1];
	}
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

function chgArtist(value) {
	hPos = value.indexOf('-');
	id = value.substring(0,hPos);
	type = value.substring(hPos+1,hPos+2);
	//alert(value+","+id+"-"+type);
	cargarContenidoURL('contenidos.php?m=02&p='+type+'&id='+id);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

/*
 * Envia una petición al servidor e inyecta la respuesta en el div #contenido
 */
function muestraContenido(menuId, idParam, pParam) {
	//**** CHAPUZA para deshabilitar entradas del menú que aún no tienen contenidos ****
	switch (menuId) {
		//case '03':
		//case '04':
		case '09':	return 0;
	}
	
	$.get('contenidos.php?m=' + menuId + ((idParam != '') ? '&id=' + idParam : '') + ((pParam != '') ? '&p=' + pParam : ''),
		function(data) {
			var tp = $('#tooltip');
			
			//Muestra el tooltip con información sobre el artista
			var muestraTooltip = function() {
				var id = '#' + $(this).parent().attr('id');
				
				$(tp).html($(id + ' ~ dd').html());

				$(tp).removeClass('toolTipOff');
				$(tp).addClass('toolTipOn');
				if ($(id).parent().hasClass('col3')) {
					$(tp).addClass('toolTipLeft');
				} else {
					$(tp).addClass('toolTipRight');
				}
			}
			
			//Oculta el tooltip con información sobre el artista
			var ocultaTooltip = function() {
				var id = '#' + $(this).parent().attr('id');
												
				$(tp).removeClass('toolTipOn');
				if ($(id).parent().hasClass('col3')) {
					$(tp).removeClass('toolTipLeft');
				} else {
					$(tp).removeClass('toolTipRight');
				}
				$(tp).addClass('toolTipOff');
			};
			
			$('#contenido').html(data);
			
			/*
			 * La opción de menú 02 corresponde a la lista de artistas/obras
			 * Al situar el cursor sobre el nombre de un artista aparece un tooltip informativo
			 * Al retirar el cursor o pulsar sobre el nombre del artista desaparece el tooltip
			*/
			if (menuId == '02') {
				$('dt > a').mousemove(lockToMouse);
				$('dt > a').hover(muestraTooltip, ocultaTooltip);
				$('dt > a').click(ocultaTooltip);
			}
			ajustaAlturaDivs();
		}
	)
}

//Estira los div contenedores hasta la altura del contenido más largo
function ajustaAlturaDivs() {
	var altoC = $('#contenido').height();
	var altoB = $('body').height();
	
	if (altoC >= altoB) {
		$('#pagina').css({height: altoC + 50 + 'px'});
		$('#contenedor').css({height: altoB + 'px'});
	} else {
		$('#pagina').css({height: '100%'});
		$('#contenedor').css({height: '100%'});
	}
}

//Carga el contenido a mostrar a partir del parámetro pasado en la URL
function cargarContenidoURL(url) {
	var img, opt;
	var mParam = getUrlParam(url, 'm');
	var idParam = getUrlParam(url, 'id');
	var pParam = getUrlParam(url, 'p');
	if (mParam == '') mParam = '01';
	
	muestraContenido(mParam, idParam, pParam);
	
	//Elimina a partir del segundo caracter "_"
	if(mParam.indexOf('_') > -1) {
		var lsParam = mParam.split('_');
		(lsParam.length > 1) ? mParam = lsParam[0] + '_' + lsParam[1] : mParam = lsParam[0];
	}
	
	switch (true) {
		case (mParam > '10'):			menuOp = 'm' + mParam;
										muestraSubMenu(subMnuVisible);
										subMnuVisible = 0;
										break;
		
		case (mParam == '10'):			menuOp = 'm' + mParam;
										muestraSubMenu(menuOp.substr(0, 3));
										break;
										
		case (mParam.search('_') < 0):	menuOp = 'm' + mParam.charAt(1)
										muestraSubMenu(menuOp);
										break;
										
		default:						//Si precede un 0, lo elimina
										if (mParam.charAt(0) == '0') {
											mParam = mParam.substr(1, mParam.length)
										}
										menuOp = 'm' + mParam;
										var smnu = menuOp.substr(0, 2);
										if(smnu != subMnuVisible) {
											muestraSubMenu(smnu);
										}
	}
	//Desactiva la opción de menú activa en este momento
	if (opcionActiva) {
		img = $(opcionActiva).attr('src');
		$(opcionActiva).attr({src: img.substr(0, img.indexOf('_f3.gif')) + '.gif'});
		opcionActiva = 0;
	}
	
	//Activa la opción de menú indicada
	opt = $('#' + menuOp + ' > img')[0];
	if (opt !== undefined) {
		img = $(opt).attr('src');
		if (img.indexOf('_f3') == -1) {
			$(opt).attr({
				src: img.substr(0, img.indexOf('.')) + '_f3.gif'
			});
		}
		opcionActiva = opt;
	}
	//ajustaAlturaDivs();
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//Corrige la altura de los DIV contenedores si se modifica el tamaño de la ventana
$(window).resize(ajustaAlturaDivs);

$(document).ready(function(){
	//Precarga las imágenes del menu
	precargaMenu();

	//Muestra el contenido inicial
	cargarContenidoURL(window.location.href);
	
	//Prepara las entradas de menú para recibir clics
	$('#menuIzda > li a img').click(
		function() {
			var img = $(this).attr('src');
			//Construye un identificador de la opción pulsada a partir de la imagen del botón
			var menuId = img.substring(img.indexOf('_') + 1, img.indexOf('_f'));
			
			//**** CHAPUZA para deshabilitar entradas del menú que aún no tienen contenidos ****
			switch (menuId) {
				//case '03':
				//case '04':
				case '09':	return 0;
			}
	
			//Si la opción ya es activa, no hay que cambiar la imagen
			//if (opcionActiva == this) return 0;
			if (opcionActiva != this) { // 25/6/08 *** activate menus w/o submenus
			//Prepara la imagen para mostrar como opción activa
			var imgClick = img.substr(0, img.indexOf('_f')) + '_f3.gif';
			
			//Cambiamos la imagen 'rollover' por la correspondiente a la opción activada
			$(this).attr({
				src: imgClick
			});
			if (opcionActiva) {
				var imgAct = $(opcionActiva).attr('src');
				$(opcionActiva).attr({
					src: imgAct.substr(0, imgAct.indexOf('_f3')) + '.gif'
				});
			}
			opcionActiva = this;
			} // 25/6/08 *** activate menus w/o submenus
			//Evita el rebote de un submenu si está desplegado y volvemos a pulsar sobre la opción que lo despliega
			if (subMnuVisible == $(opcionActiva).parent(0).attr('id')) {
				muestraContenido(menuId);
				return 0;
			}

			//Evitamos que el clic sobre las entradas un submenu pliegue el mismo submenú
			if ((subMnuVisible != 0) && (img.charAt(img.indexOf('_f') - 2)) != '_') {
				$('#' + subMnuVisible + '_s').hide('normal');
				subMnuVisible = 0;
			}
			
			//Muestra los contenidos correspondientes a la opción pulsada
			muestraContenido(menuId);
		}
	)
	
	//Prepara las entradas de menú para responder al rollover
	$('#menuIzda > li a img').hover(
		function() { //Cursor sobre la opción de menú
			if (opcionActiva == this) return 0;
			
			var img = $(this).attr('src');
			var imgOver = img.substr(0, img.indexOf('.')) + '_f2.gif';
			
			$(this).attr({src: imgOver});
		},
		function() { //Cursor abandona la opción de menú
			if (opcionActiva == this) return 0;
			
			var img = $(this).attr('src');
			var i = img.indexOf('_f2');
			
			if (i > -1) {
				var imgOver = img.substr(0, i) + '.gif';
			}
			
			$(this).attr({src: imgOver});
		}
	);
	
	//Estas entradas tienen submenu y al ser pulsadas lo despliegan
	$('#m1 img').click( function() {muestraSubMenu('m1');});
	$('#m3 img').click( function() {muestraSubMenu('m3');});
	$('#m6 img').click( function() {muestraSubMenu('m6');});
	$('#m8 img').click( function() {muestraSubMenu('m8');});
	// Chapuza fucking Safari
	if(subMnuVisible == 0) {
		$('#m1_s').show('normal');
		subMnuVisible = 'm1';
	}
 })