// 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 calcRuta(a, b, c, d, zoom, id_capa){
    directionsDisplay = new google.maps.DirectionsRenderer();
    
    var start = new google.maps.LatLng(a, b);
    var end   = new google.maps.LatLng(c, d);

    var centro = new google.maps.LatLng(c, d);
    
    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 control = document.getElementById('control');
    control.style.display = 'none';
    map.controls[google.maps.ControlPosition.TOP].push(control);
    
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById('directions-panel'));
    
    var request = {
      origin: start,
      destination: end,
      travelMode: google.maps.DirectionsTravelMode.DRIVING
    };

    directionsService.route(request, function(response, status){
        if (status == google.maps.DirectionsStatus.OK){
            directionsDisplay.setDirections(response);
        }
    });
}

