
// Inicialización de variables.

if (lugar=='usa'){
  var lat_ini   = 40.756054;
  var lon_ini   = -73.986951;
  var dir       = 'Direction:';
  var elevacion = 'Pitch:';
  var azimut    = 'Orientation:';
  var latitud   = 'Coordinates:';
  var longitud  = 'Longitude:';
  var idi       ='en';
}

if (lugar=='mundo'){
  var lat_ini   = 42.880447;
  var lon_ini   = -8.546303;
  var dir       = 'Dirección:';
  var elevacion = 'Elevación:';
  var azimut    = 'Orientación:';
  var latitud   = 'Coordenadas:';
  var longitud  = 'Longitud:';
  var idi       ='sp';
  

}  


var myPano;
var overlayInstance = null;
var panoClient;
var nextPanoId;
var map      	= null;
var geocoder 	= null;
var lati     	= null;
var long     	= null;
var direccion   = null;
var direccion2  = null;
var semaforo 	= 0;
var migeocoder 	= 0;
var marker;

var milatitud=0;
var milongitud=0;
var miazimut=0;
var mialtura=0;
var mizoom=0;
var midireccion;
var midireccion2;
var latitud_sin_calle=0;
var contador=0;

var habitantes='94.092';
var hombres='44.320';
var mujeres='50.772';
var mun='Santiago de Compostela';
var top_pob_esp    = 67;
var top_pob_prov   = 2;

					 var top_muj_esp    = 62;
					 var top_muj_prov   = 2;
					 
           var top_hom_esp    = 71;
					 var top_hom_prov   = 2;
					 
					 var top_porc_muj_pos_esp    = 135;
					 var top_porc_muj_pos_prov   = 2;
					 
					 var top_porc_muj_esp    = '53,39';
					 var top_porc_muj_prov   = '53,39';
					 
					 var top_porc_hom_pos_esp    = 7977;
					 var top_porc_hom_pos_prov   = 73;
					 
					 var top_porc_hom_esp    = '46,61';
					 var top_porc_hom_prov   = '46,61';

           var top_alt_esp    = 6527;
					 var top_alt_prov   = 28;
           var altitud='250,55';		

  

function initialize() {
  
  geocoder = new GClientGeocoder();
  
  var fenwayPark = new GLatLng(lat_ini,lon_ini); 
  var fenwayPOV = {yaw:120,pitch:-8};
 
  panoClient = new GStreetviewClient();      
     
  map = new GMap2(document.getElementById("map_canvas"));
  map.setCenter(fenwayPark, 15);
 // map.addControl(new GSmallMapControl());


  	   	              var customUI = map.getDefaultUI();
        // Remove MapType.G_HYBRID_MAP
      //  customUI.maptypes.hybrid = false;
        map.setUI(customUI);
        
      //   oculta_div('poblacion', 'ocultar');      
 


  var guyIcon = new GIcon(G_DEFAULT_ICON);
  guyIcon.image = "http://maps.gstatic.com/mapfiles/cb/man_arrow-0.png";
  guyIcon.transparent = "http://maps.gstatic.com/mapfiles/cb/man-pick.png";
  guyIcon.imageMap = [
         26,13, 30,14, 32,28, 27,28, 28,36, 18,35, 18,27, 16,26,
         16,20, 16,14, 19,13, 22,8
      ];
  guyIcon.iconSize = new GSize(49, 52);
  guyIcon.iconAnchor = new GPoint(25, 35);  // near base of guy's feet
  guyIcon.infoWindowAnchor = new GPoint(25, 5);  // top of guy's head
 
  marker = new GMarker(fenwayPark, {icon: guyIcon, draggable: true});
  map.addOverlay(marker);
  lastMarkerLocation = fenwayPark;
  
  generaCodigo_top();
  
     if (!overlayInstance) {
     overlayInstance = new GStreetviewOverlay();
     map.addOverlay(overlayInstance);
   }

  
  
  GEvent.addListener(marker, "dragend", onDragEnd);
  
  GEvent.addListener(map, "click", function(overlay,latlng) {
      generaCodigo();
      panoClient.getNearestPanorama(latlng, showPanoData);
      myPano.setLocationAndPOV(latlng);
      semaforo=1;
  });
      
  myPano = new GStreetviewPanorama(document.getElementById("pano"));
  myPano.setLocationAndPOV(fenwayPark, fenwayPOV);
  GEvent.addListener(myPano, "error", handleNoFlash);  
  panoClient.getNearestPanorama(fenwayPark, showPanoData);
  GEvent.addListener(myPano, "yawchanged", onYawChange); 

  GEvent.addListener(myPano, "initialized", function(pano) {
    milatitud=pano.latlng.lat();
    milongitud=pano.latlng.lng()
    generaCodigo();
    panoClient.getNearestPanorama(pano.latlng, showPanoData);
  });

  GEvent.addListener(myPano, 'pitchchanged', function(newpitch) {
    mialtura=newpitch;
    generaCodigo();
  });

  GEvent.addListener(myPano, 'zoomchanged', function(newzoom) {
    mizoom=newzoom;
    generaCodigo();
  });

}


function toggleOverlay() {
   if (!overlayInstance) {
     overlayInstance = new GStreetviewOverlay();
     map.addOverlay(overlayInstance);
   } else {
     map.removeOverlay(overlayInstance);
     overlayInstance = null;
   }
}
 

function onYawChange(newYaw) {
     var GUY_NUM_ICONS = 16;
     var GUY_ANGULAR_RES = 360/GUY_NUM_ICONS;
     if (newYaw < 0) {
       newYaw += 360;
     }
     guyImageNum = Math.round(newYaw/GUY_ANGULAR_RES) % GUY_NUM_ICONS;
     guyImageUrl = "http://maps.gstatic.com/mapfiles/cb/man_arrow-" + guyImageNum + ".png";
     marker.setImage(guyImageUrl);

    miazimut=newYaw;
     generaCodigo();
}
   

function onNewLocation(lat, lng) {
     var latlng = new GLatLng(lat, lng);
     marker.setLatLng(latlng);
     generaCodigo();
}
   

function onDragEnd() {
     var latlng = marker.getLatLng();
     panoClient.getNearestPanorama(latlng, showPanoData);
     myPano.setLocationAndPOV(latlng); 
     semaforo=1;
     generaCodigo();
}


function generaCodigo() {

     document.getElementById("direccion").innerHTML="<b><font size='2' face='Arial' color='green'>"+ midireccion+"</font></b><br>";
     document.getElementById("latitud").innerHTML   ="<font size='2' face='Arial'>"+latitud+" <font color='blue'>(" + milatitud + ", " + milongitud +" ) </font>";
     document.getElementById("azimut").innerHTML= "<font size='2' face='Arial'>"+azimut +" <font color='red'>(" + miazimut +", " + mialtura +" ) </font>&nbsp;&nbsp; Zoom: <font size='2' face='Arial' color='red'>" + mizoom+"<br></font>";



     document.form1.Username.value ='http://www.mundivideo.com/vc.htm?id='+idi+'&lat='+milatitud+'&lng='+milongitud+'&yaw='+miazimut+'&pitch='+mialtura+'&zoom='+mizoom+'&dir='+midireccion;
     document.form1.Browser.value ='<iframe width="100%" height="100%" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://www.mundivideo.com/vc.htm?id='+idi+'&lat='+milatitud+'&lng='+milongitud+'&yaw='+miazimut+'&pitch='+mialtura+'&zoom='+mizoom+'&dir='+midireccion+'"></iframe>';

    
}      

function generaCodigo_top() {

//     document.getElementById("poblacion").innerHTML= "<font size='4' face='Arial' color='red'>" + mun +"  </font>&nbsp;&nbsp;<br><font size='3'>Habitantes: <font size='3' face='Arial' color='blue'>" + habitantes+"<br></font><font size='2' face='Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hombres:<font color='red'>"+hombres+"<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mujeres  :<font size='2' face='Arial' color='red'>"+mujeres+"</font>";
     document.getElementById("poblacion").innerHTML= "<font size='4' face='Arial' color='red'>" + mun +"</font><br><font size='3'>Habitantes  : </font><font size='3' face='Arial' color='blue'>" + habitantes+"<br></font><font size='3' face='Arial'>Altitud </font><font size='1'>(msnm)</font>:<font color='blue'>"+altitud+"<br></font>";

     document.getElementById("capa0").innerHTML="<b><font size='4' face='Verdana, Arial' color='green'>"+ mun +" RANKING.</font></b> <br>  Este cuadro muestra los datos de población de esta localidad y la posición que ocupa tanto a nivel provincial como nacional.<br>";

     document.getElementById("top_poblacion").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ habitantes+"</font></b><br>";
     document.getElementById("top_pob_prov").innerHTML   ="<font size='2' face='Arial'>"+top_pob_prov+" º </font>";
     document.getElementById("top_pob_esp").innerHTML= "<font size='2' face='Arial'>"+top_pob_esp +" º </font>";

     document.getElementById("mujeres").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ mujeres+"</font></b><br>";
     document.getElementById("top_muj_prov").innerHTML   ="<font size='2' face='Arial'>"+top_muj_prov+" º </font>";
     document.getElementById("top_muj_esp").innerHTML= "<font size='2' face='Arial'>"+top_muj_esp +" º </font>";

     document.getElementById("hombres").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ hombres+"</font></b><br>";
     document.getElementById("top_hom_prov").innerHTML   ="<font size='2' face='Arial'>"+top_hom_prov+" º </font>";
     document.getElementById("top_hom_esp").innerHTML= "<font size='2' face='Arial'>"+top_hom_esp +" º </font>";

     document.getElementById("porc_mujeres").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ top_porc_muj_prov+"</font></b><br>";
     document.getElementById("top_porc_muj_prov").innerHTML   ="<font size='2' face='Arial'>"+top_porc_muj_pos_prov+" º </font>";
     document.getElementById("top_porc_muj_esp").innerHTML= "<font size='2' face='Arial'>"+top_porc_muj_pos_esp +" º </font>";

     document.getElementById("porc_hombres").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ top_porc_hom_prov+"</font></b><br>";
     document.getElementById("top_porc_hom_prov").innerHTML   ="<font size='2' face='Arial'>"+top_porc_hom_pos_prov+" º </font>";
     document.getElementById("top_porc_hom_esp").innerHTML= "<font size='2' face='Arial'>"+top_porc_hom_pos_esp +" º </font>";

  //   document.getElementById("altitud").innerHTML="<b><font size='2' face='Verdana, Arial' color='green'>"+ altitud+"</font></b><br>";
  //   document.getElementById("top_alt_prov").innerHTML   ="<font size='2' face='Arial'>"+top_alt_prov+" º </font>";
  //   document.getElementById("top_alt_esp").innerHTML= "<font size='2' face='Arial'>"+top_alt_esp +" º </font>";

}   
 
function showPanoData(panoData) {
   if (panoData.code != 200) {
	      /*    GLog.write('showPanoData: Server rejected with code: ' + panoData.code);*/	     
	   if (migeocoder==1){
	      sinCalle();
	    }
	    else
	    {
	      alert ('Sin cobertura de Street View');
	       return;
	    }
	     
	  }
	  else {
	     migeocoder=0;
	     contador=0;
	     latitud_sin_calle=0;
	      /*  nextPanoId = panoData.links[0].panoId;*/
	      
	  	  geocoder.getLocations(panoData.location.latlng, function(addresses) {
	          if(addresses.Status.code != 200) {
	                /*  alert("reverse geocoder failed to find an address for " + latlng.toUrlValue());*/
	  	              alert ("no");
	                	}
	                else 
	                	{
	     			
	     			var latlng = new GLatLng(panoData.Location.lat, panoData.Location.lng);
	  			  marker.setLatLng(latlng);
	      		lastMarkerLocation = latlng;
	  
	      		address = addresses.Placemark[0];
	          var myHtml = address.address;

	          var direccion ='<font size="3" face="Arial" color="blue"><br>'+ myHtml+'</font>';
	          var direccion2 ='<font size="3" face="Arial" color="green">'+ myHtml+'</font>';
	  
	      		marker.openInfoWindowHtml(direccion);
	      			
	      		midireccion=myHtml;
	      		midireccion2=direccion2;
	      			
	      		milatitud=latlng.lat();
	          milongitud=latlng.lng();
	      		generaCodigo();
	  			    
	      		 }
	  
	            });
	      
    }
  } 
  
  
function sinCalle(){

          if (contador==20){
           migeocoder=0;
          contador=0;
          latitud_sin_calle=0;
          alert ('Sin cobertura de Street View');   
     //     return;
          }
          else
          {
          

      if (contador==0){ latitud_sin_calle=latitud_sin_calle +lati - 0.009;} 
      else{       
              
   latitud_sin_calle=latitud_sin_calle + 0.0009;
                   }
      contador=contador+1;
      
          //    alert(latitud_sin_calle)

    var punto = new GLatLng(latitud_sin_calle, long); 

      marker.setLatLng(punto);

            panoClient.getNearestPanorama(punto, showPanoData);
            myPano.setLocationAndPOV(punto); 
            }
      
}
  


function handleNoFlash(errorCode) {
      if (errorCode == 603) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
      }
}  



//---------------------------------------------------------------------------------------//
// Calcula la latitud en grados, minutos y segundos.
//---------------------------------------------------------------------------------------//
function roundNumber(rnum, rlength){
  var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
  return newnumber; 
}

function conv_grados(radianes, coord){
			
			if (radianes < 0){
			    radianes=radianes*(-1);
				if (coord=="latitud"){
						letra =" S";
					} else {
						letra =" W";
					}	
			}
			else
			{
				if (coord=="latitud"){
						letra =" N";
					} else {
						letra =" E";
					}	
			}
			

			grados	= Math.abs(Math.floor(radianes));
			minutos_d	= (radianes-Math.floor(radianes))*60;	
			minutos		= Math.floor((radianes-Math.floor(radianes))*60);		
			segundos	= roundNumber(((minutos_d - Math.floor(minutos_d))*60),2);
			
			valor_g		= grados+"º "+minutos+"' "+segundos+'" '+letra;

			return (valor_g);
			
		}


//---------------------------------//
//           GEOCODER
//---------------------------------//
function showAddress(address, zoom) {
    
    			words = address.split(",") //split using blank space as delimiter

					for (i=0; i<words.length; i++)
					
					 mun				= words[0];
						var address			= words[0]+','+words[1]+','+words[2];
					 habitantes				= formatNumber(words[3]);
					 hombres				= formatNumber(words[4]);
					 mujeres				= formatNumber(words[5]);
					 
					 top_pob_esp    = words[6];
					 top_pob_prov   = words[7];
					 
					 top_muj_esp    = words[8];
					 top_muj_prov   = words[9];
					 
           top_hom_esp    = words[10];
					 top_hom_prov   = words[11];
					 
					 top_porc_muj_pos_esp    = words[12];
					 top_porc_muj_pos_prov   = words[13];
					 
					 top_porc_muj_esp    = formatNumber(words[14]);
					 top_porc_muj_prov   = formatNumber(words[15]);
					 
					 top_porc_hom_pos_esp    = words[16];
					 top_porc_hom_pos_prov   = words[17];
					 
					 top_porc_hom_esp    = formatNumber(words[18]);
					 top_porc_hom_prov   = formatNumber(words[19]);

           top_alt_esp    = words[20];
					 top_alt_prov   = words[21];		
           altitud         =formatNumber(words[22]);			 
					 
					 top_porc_muj_prov = top_porc_muj_prov.replace(".",",");
					 top_porc_hom_prov = top_porc_hom_prov.replace(".",",");
           altitud = altitud.replace(".",",");
					 
               generaCodigo_top();
			//		 alert ('esp='+top_alt_esp+'prov='+top_alt_prov);
						

    		if (geocoder) {
        		geocoder.getLatLng(address,
          			
          			function(point) {
            			
            			if (!point) {
            				alert(address + " no se ha encontrado");
            			} else {
                    
            				map.setCenter(point, zoom);
            				
            				
            		

					lati	= point.y;
					long	= point.x;

 					semaforo=1;
 					migeocoder=1;
 					
 			
 					
 					panoClient.getNearestPanorama(point, showPanoData);
 					myPano.setLocationAndPOV(point); //////

           //     oculta_div('poblacion','mostrar');
 	       
                 		}
 		              	}
 		       	);      	
  	    	}           
}    
//---------------------------------//
//     FIN DE GEOCODER
//---------------------------------//   

function oculta_div(a, b)
{

if (b=='mostrar') {
a = document.getElementById(a);
a.style.display = "block";
}
if (b=='ocultar') {
a = document.getElementById(a);
a.style.display = "none";
}
}


function formatNumber(num,prefix){

prefix = prefix || '';
num += '';
var splitStr = num.split(',');
var splitLeft = splitStr[0];
var splitRight = splitStr.length > 1 ? ',' + splitStr[1] : '';
var regx = /(\d+)(\d{3})/;
while (regx.test(splitLeft)) {
splitLeft = splitLeft.replace(regx, '$1' + '.' + '$2');
}
return prefix + splitLeft + splitRight;
}

