// JavaScript Document

var FadeDurationMS = 2000;
function SetOpacity(object,opacityPct){
	// IE.
	object.style.filter = 'alpha(opacity=' + opacityPct + ')';
	// Old mozilla and firefox
	object.style.MozOpacity = opacityPct / 100;
	// Everything else.
	object.style.opacity = opacityPct / 100;
}

function ChangeOpacity(id,msDuration,msStart,fromO,toO){
	var element=document.getElementById(id);
	var msNow = (new Date()).getTime();
	var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
	if (opacity >= 100){
		SetOpacity(element, 100);
		element.timer = undefined;
	}
	else if (opacity <= 0){
		SetOpacity(element,0);
		element.timer = undefined;
	}
	else{
		SetOpacity(element,opacity);
		element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")", 20);
	}
}

function FadeInImage(foregroundID,newImage,backgroundID){
	var foreground=document.getElementById(foregroundID);
	if (foreground.timer) window.clearTimeout(foreground.timer);

	if (backgroundID){
		var background=document.getElementById(backgroundID);
		if (background){
			if (background.src){
				foreground.src = background.src;	
				SetOpacity(foreground,100);
			}

			background.src = newImage;
			background.style.backgroundImage = 'url(' + newImage + ')';
			background.style.backgroundRepeat = 'no-repeat';
			
			var startMS = (new Date()).getTime();
			foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",20);
		}
	}
	else{
		foreground.src = newImage;
	}
}

var slideCache = new Array();

function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs){
	var imageSeparator = imageFiles.indexOf(";");
	var nextImage = imageFiles.substring(0,imageSeparator);
	var imageSeparator2 = imageFiles.lastIndexOf(";") + 1;
	var actualImage = imageFiles.substring(imageFiles.length, imageSeparator2);

	//alert(imageFiles + ' - ' + nextImage + ' - ' + actualImage);
	FadeInImage(pictureID, nextImage, backgroundID);

	var futureImages = imageFiles.substring(imageSeparator + 1, imageFiles.length) + ';' + nextImage;
	//document.getElementById("id_enlace").href = new String(actualImage.replace("MINI_", "FOTO_"));

	setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")", displaySecs*1000);

	// Cache the next image to improve performance.
	imageSeparator = futureImages.indexOf(";");
	nextImage = futureImages.substring(0,imageSeparator);
	if (slideCache[nextImage] == null){
		slideCache[nextImage] = new Image;
		slideCache[nextImage].src = nextImage;
	}
}

function mostrarMapa(latitud, longitud, zoom, id_capa, contenido){
	var centro = new google.maps.LatLng(latitud, longitud);
	
	var mapOptions = {
		center: centro,
		zoom: zoom,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		streetViewControl: true
	};
	
	var map = new google.maps.Map(document.getElementById(id_capa), mapOptions);
	
	var infowindow = new google.maps.InfoWindow({
		content: contenido,
		size: new google.maps.Size(50, 50),
		position: centro
	});
	
	infowindow.open(map);
	
	new google.maps.Marker({
		position: centro, 
		map: map,
		infowindow: infowindow
	});
}

function madeAjax(ruta, lugar){

var net = new Object();

	net.READY_STATE_UNINITIALIZED	= 0;
	net.READY_STATE_LOADING			= 1;
	net.READY_STATE_LOADED			= 2;
	net.READY_STATE_INTERACTIVE		= 3;
	net.READY_STATE_COMPLETE		= 4;

	// Constructor
	net.CargadorContenidos = function(url, funcion, funcionError){
		this.url = url;
		this.req = null;
		this.onload = funcion;
		this.onerror = (funcionError) ? funcionError : this.defaultError;
		this.cargaContenidoXML(url);
	}

	net.CargadorContenidos.prototype = {
		cargaContenidoXML: function(url){
			if (window.XMLHttpRequest)
				this.req = new XMLHttpRequest();
			else
				if (window.ActiveXObject)
					this.req = new ActiveXObject("Microsoft.XMLHTTP");

			if (this.req){
				try {
					var loader = this;
					this.req.onreadystatechange = function(){ loader.onReadyState.call(loader); }
					this.req.open('GET', url, true);
					this.req.send(null);
				}
				catch(err){ this.onerror.call(this); }
			}
		},

		onReadyState: function(){
			var req = this.req;
			var ready = req.readyState;
			if (ready == net.READY_STATE_COMPLETE){
				var httpStatus = req.status;
				if (httpStatus == 200 || httpStatus == 0)
					this.onload.call(this);
				else
					this.onerror.call(this);
			}
		},

		defaultError: function(){ alert("Se ha producido un error al obtener los datos" + "\n\nreadyState:" + this.req.readyState + "\nstatus: " + this.req.status + "\nheaders: " + this.req.getAllResponseHeaders() + this.req.statusText); }
	}

	function muestraContenido(){ document.getElementById(lugar).innerHTML = this.req.responseText; }

	function cargaContenidos(){ var cargador = new net.CargadorContenidos(ruta, muestraContenido); }

	cargaContenidos();
}
