var map;
var points = [];
var marker;
var selectedDrag;

var adm = 0;



var icon = new GIcon();
icon.image = "http://www.madridya.es/images/map_icon_new.png";
icon.iconSize = new GSize(35, 44);
icon.iconAnchor = new GPoint(17.5, 39);
icon.infoWindowAnchor = new GPoint(5, 1);

function chngMapsize (idMap, width, height)
    {
        thisMap = document.getElementById(idMap);
        thisMap.style.width = width+'px';
        thisMap.style.height = height+'px';
    }

function mapReturn()
    {
	map.closeInfoWindow();
	map.returnToSavedPosition();
    }

var intervalId=0;

function animaZoom(center, zoom)
    {
	var thisZoom = map.getZoom();

	intervalId = setInterval(function() {
		if (map.getCenter()!=center) { map.panTo(center); }
		else if (map.getZoom()<zoom) map.setZoom(zoom);
		else {
			map.setCenter(center);
			clearInterval(intervalId);
			intervalId = 0;
		}
	}, 300);
    }

function newPoint(point, htmlMsg, center, zoom, idMap)
    {
	points.push(point);

	//var marker = new GMarker(point);
	var marker = new GMarker(point, icon);
	if (htmlMsg != '') GEvent.addListener(marker, "click", function() {
		if (map.getZoom()!=zoom) {
			intervalId = setInterval(function() {
				if (map.getCenter()!=center) { map.panTo(center); }
				else if (map.getZoom()<zoom) map.setZoom(zoom);
				else {
					map.setCenter(center);
					map.openInfoWindowHtml(point, htmlMsg);
					clearInterval(intervalId);
				}
			}, 300);
		}
		else map.openInfoWindowHtml(point, htmlMsg);
	});
	map.addOverlay(marker);
    }



var map2 = 0;

    var myPano;   
    var panoClient;
    var nextPanoId;
 



function mapLoad() { mapLoad2Int(); }

function mapLoad2Int()
    {
	if (map2==0) setTimeout("mapLoad2()", 300);
    }

var marker;

function mapLoad2()
    {
		var mapLoc2 = document.getElementById("__map_map");
		mapLoc2.className='mapa';

		if(GBrowserIsCompatible()) {
			panoClient = new GStreetviewClient();


			map = new GMap2(mapLoc2);
			map.setCenter(new GLatLng(40.419115, -3.69322), 13);


		//	map.setMapType(G_PHYSICAL_MAP);
			map.addControl(new GScaleControl());
			map.enableContinuousZoom();
		//	map.addControl(new GMapTypeControl());
			map.enableScrollWheelZoom();
		//	map.addControl(new GOverviewMapControl());

			var customUI = map.getDefaultUI();
			map.setUI(customUI);

		//	newPoint(new GLatLng(<br />
<b>Notice</b>:  Undefined variable: filaEmp in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
, <br />
<b>Notice</b>:  Undefined variable: filaEmp in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
), '<br />
<b>Notice</b>:  Undefined variable: htmlPoint in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
', new GLatLng(<br />
<b>Notice</b>:  Undefined variable: filaEmp in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
, <br />
<b>Notice</b>:  Undefined variable: filaEmp in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
), <br />
<b>Notice</b>:  Undefined variable: filaEmp in <b>/var/www/vhosts/madridya.es/httpdocs/_includes/js/map_llegar2.js.php</b> on line <b>150</b><br />
, 'map2');

			gdir = new GDirections(map, document.getElementById("directions"));
			//Listener para los errores que se produzcan cuando procese la petición
			GEvent.addListener(gdir, "error", handleErrors);

			geocoder = new GClientGeocoder();

			map.savePosition();

			var divRutas1 = document.getElementById('msg_ruta_1');
			//divRutas1.style.display='block';
			var divRutas2 = document.getElementById('msg_ruta_2');
			//divRutas2.style.display='block';
	
			map2 = 1;

			var fenwayPark = new GLatLng(40.419115, -3.69322);
			var fenwayPOV = {yaw:50,pitch:0};



			marker = new GMarker(fenwayPark, {draggable: true});

			GEvent.addListener(marker, "dragstart", function() {
			  map.closeInfoWindow();
			  });

			GEvent.addListener(marker, "dragend", function(latlng) {
				if (latlng) {
					panoClient.getNearestPanorama(latlng, showPanoData);
				}
			});

			map.addOverlay(marker);




			GEvent.addListener(map, "click", function(overlay, latlng) {
				// latlng will be null if the info window has been clicked.
					if (latlng) {
						panoClient.getNearestPanorama(latlng, showPanoData);
					}
			});
      
			myPano = new GStreetviewPanorama(document.getElementById("pano"));
			myPano.setLocationAndPOV(fenwayPark, fenwayPOV);
			GEvent.addListener(myPano, "error", handleNoFlash);  
			panoClient.getNearestPanorama(fenwayPark, showPanoData);



		}
    }




    function showPanoData(panoData) {
	if (panoData.code != 200) {
		return;
	}
	nextPanoId = panoData.links[0].panoId;
	var displayString = [
		panoData.location.description
	].join("<br/>");
	map.openInfoWindowHtml(panoData.location.latlng, displayString);

	var point = panoData.location.latlng;
	points.push(point);

	marker.setLatLng(point);
	myPano.setLocationAndPOV(panoData.location.latlng);
    }


    function next() {
      // Get the next panoId
      // Note that this is not sophisticated. At the end of the block, it will get stuck
      panoClient.getPanoramaById(nextPanoId, showPanoData);
    }
    
    function handleNoFlash(errorCode) {
      if (errorCode == 603) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
      }
    }  






    var gdir;
    var geocoder = null;
    var addressMarker;


    //Función encargada de calcular la ruta con el API de Maps
    function setDirections(fromAddress, toAddress) {
	document.getElementById("msg_ruta_1").className = 'msg_ruta2 clearfix';
	document.getElementById("msg_ruta_2").className = 'msg_ruta2 clearfix';
	var i;
	var tipo;
	for (i=0;i<document.form_ruta.tipo.length;i++){
		if (document.form_ruta.tipo[i].checked){
			break;
		}
	}

	tipo = document.form_ruta.tipo[i].value;
	if(tipo==1){
		//a pie
		gdir.load("from: " + fromAddress + " to: " + toAddress,
			{ "locale": "es", "travelMode" : G_TRAVEL_MODE_WALKING });
	}else if (tipo==2){
		//conduccion
		gdir.load("from: " + fromAddress + " to: " + toAddress,
			{ "locale": "es", "travelMode" : G_TRAVEL_MODE_DRIVING });
	}else if (tipo==3){
		//conduccion
		gdir.load("from: " + fromAddress + " to: " + toAddress,
			{ "locale": "es", "travelMode" : G_TRAVEL_MODE_BICYLING });
	}


    }

    //Manejo de errores
    function handleErrors(){
       if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
         alert("No se puede calcular la ruta desde la dirección indicada, compruebe que está bien escrita o esta no sa ambigua");
       else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
         alert("Error desconocido");

       else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
         alert("No se ha introducido una dirección de inicio");

       else if (gdir.getStatus().code == G_GEO_BAD_KEY)
         alert("Clave usada por el mapa no valida o no corresponde con el dominio desde el que se usa.");

       else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
         alert("La dirección no puede ser parseada.");

       else alert("Se ha producido un error :(.");

    }

    function onGDirectionsLoad(){ 
    }

function activeSug(numId) {
	for (i=0; i<60;i++) {
		if (document.getElementById('linkSug_'+i)) {
			document.getElementById('linkSug_'+i).className = '';
		}
	}
	if(document.getElementById('linkSug_'+numId)) document.getElementById('linkSug_'+numId).className = 'active';
}

function chngFrom(newValue) {
	var inputFrom = document.getElementById('fromAddress');
	inputFrom.value = newValue;
	buscaDir(1);
}
function chngTo(newValue) {
	var inputTo = document.getElementById('toAddress');
	inputTo.value = newValue;
	buscaDir(1);
}

function buscaDir(numm) {
	var fromOk = '';
	var toOk = '';
	var inputFrom = document.getElementById('fromAddress');
	var addressIni = inputFrom.value;
	var inputTo = document.getElementById('toAddress');
	var addressFin = inputTo.value;
	mapLoad2();
	document.getElementById("directions").innerHTML = '';

	if (geocoder) {
		if (addressIni=='' && addressIni=='Introduzca una dirección o ciudad de origen') alert('Introduzca una direccion de origen');
		else if (addressFin=='' && addressFin=='Introduzca una dirección o ciudad de origen') alert('Introduzca una direccion de origen');
		else {
			document.getElementById("msg_ruta_1").style.display='none';
			document.getElementById("msg_ruta_1").innerHTML = '';
			document.getElementById("msg_ruta_2").style.display='none';
			document.getElementById("msg_ruta_2").innerHTML = '';

			address=addressIni+', spain';
			geocoder.getLocations(address, function (result) {
				if (result.Status.code == G_GEO_SUCCESS) {

					if (result.Placemark.length > 1) { 
						document.getElementById("msg_ruta_1").style.display='block';
						document.getElementById("msg_ruta_1").innerHTML += '<p><b>Seleccione</b> una de las siguientes direcciones posibles :</p><ul>';
						for (var i=0; i<result.Placemark.length; i++) {
							var p = result.Placemark[i].Point.coordinates;

						//	if ((result.Placemark[i].address.search('Spain')>0) || (result.Placemark[i].address.search('España')>0)) {
								var addrLimpia = result.Placemark[i].address;
								while (addrLimpia.indexOf("'")!=-1) addrLimpia = addrLimpia.replace("'", "***");
								while (addrLimpia.indexOf("***")!=-1) addrLimpia = addrLimpia.replace("***", "\\'");
								document.getElementById("msg_ruta_1").innerHTML += '<li id="linkSug_'+i+'"><a href="javascript:chngFrom(\''+addrLimpia+'\');activeSug('+i+');">'+result.Placemark[i].address.replace(', Spain', '')+"</a></li>";
						//	}
						}
						document.getElementById("msg_ruta_1").innerHTML += '</ul>';
					}
					else {
						var p = result.Placemark[0].Point.coordinates;
						var addrLimpia = result.Placemark[0].address;
						while (addrLimpia.indexOf("'")!=-1) addrLimpia = addrLimpia.replace("'", "***");
						while (addrLimpia.indexOf("***")!=-1) addrLimpia = addrLimpia.replace("***", "\\'");
						fromOk = addrLimpia;
					}
				}
				else {
					// no encontrado
					alert('No se pudo encontrar la dirección "'+addressIni+'"');
				}
			});



			address=addressFin+', spain';
			geocoder.getLocations(address, function (result) {
				if (result.Status.code == G_GEO_SUCCESS) {

					if (result.Placemark.length > 1) { 
						document.getElementById("msg_ruta_2").style.display='block';
						document.getElementById("msg_ruta_2").innerHTML += '<p><b>Seleccione</b> una de las siguientes direcciones posibles :</p><ul>';
						for (var i=0; i<result.Placemark.length; i++) {
							var p = result.Placemark[i].Point.coordinates;

						//	if ((result.Placemark[i].address.search('Spain')>0) || (result.Placemark[i].address.search('España')>0)) {
								var addrLimpia = result.Placemark[i].address;
								while (addrLimpia.indexOf("'")!=-1) addrLimpia = addrLimpia.replace("'", "***");
								while (addrLimpia.indexOf("***")!=-1) addrLimpia = addrLimpia.replace("***", "\\'");
								document.getElementById("msg_ruta_2").innerHTML += '<li id="linkSug_'+i+'"><a href="javascript:chngTo(\''+addrLimpia+'\');activeSug('+i+');">'+result.Placemark[i].address.replace(', Spain', '')+"</a></li>";
						//	}
						}
						document.getElementById("msg_ruta_2").innerHTML += '</ul>';
					}
					else {
						var p = result.Placemark[0].Point.coordinates;
						var addrLimpia = result.Placemark[0].address;
						while (addrLimpia.indexOf("'")!=-1) addrLimpia = addrLimpia.replace("'", "***");
						while (addrLimpia.indexOf("***")!=-1) addrLimpia = addrLimpia.replace("***", "\\'");
						//document.getElementById("msg_ruta_2").innerHTML += '<li><a href="javascript:setDirections(\''+addrLimpia+'\')">'+result.Placemark[0].address.replace(', Spain', '')+"</a></li>";
						toOk = addrLimpia;
					}
				}
				else {
					// no encontrado
					alert('No se pudo encontrar la dirección "'+addressFin+'"');
				}

				if (fromOk != '' && toOk !='') 
				    {
					setDirections(fromOk, toOk);
				    }
			});


		}
	}
}
