﻿ 
 
 function EndRequestHandler(sender, args) {
   if (args.get_error() == undefined)
       alert("OK");
   else
       alert("ERROR");
}
 
 function load() {
   Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
 
function pintaRuta(points)
{
     var pts = new Array();
     var width  = 4;
     
     var Or;
     var De;
     var j;
     var xx = points.length - 1;

    // for (var i = 0; i < points.length; i++) 
     //{
     //   pts[i] = new GLatLng(points[i][0],points[i][1]);
     //}
     //map.addOverlay(new GPolyline(pts, "#6600FF",width));  
     
      for (var i = 0; i < xx; i++) 
    {
       j = i + 1;
       Or = new GLatLng(points[i][0],points[i][1]);
       De = new GLatLng(points[j][0],points[j][1]);
       
       pts[0] = Or;
       pts[1] = De;
       
       //es pinta segons la següent coordenada
       
       if (i > 0)
       {
             var k = i - 1;
            if ((points[j][2] == "CarrilBici" & points[i][2] == "CarrilBici") || (points[j][2] == "CarrilBici" &  points[k][2] == "CarrilBici"))
            {
                map.addOverlay(new GPolyline(pts, "#ff0000",width)); 
            }
            else
           {
            map.addOverlay(new GPolyline(pts, "#006000",width)); 
          }
       }
       else
       {       
           if (points[j][2] == "CarrilBici" & points[i][2] == "CarrilBici") 
          {
                map.addOverlay(new GPolyline(pts, "#ff0000",width)); 
           }
           else
           {
            map.addOverlay(new GPolyline(pts, "#006000",width)); 
          }
       }
   }
     
} 

function treureInfo(map,mapname,directions,div,tipus,nombre) {   

   var intro = '';
               
        for (var i=0; i<directions.getNumRoutes(); i++) {
         
          var route1 = directions.getRoute(i);
          var geocode1 = route1.getStartGeocode();   
          
          var distancia = route1.getDistance().html;
          var temps = route1.getDuration().html;  
          
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              
              if (document.getElementById("Idioma").innerHTML == "Castellano")
              {
                      if (tipus == 'origen')
                      {
                            intro += ' <b> El recorregut a peu fins a l\'estació origen (' + nombre + ') és: <br>' + distancia + ' / ' + temps + '   </b>';
                      }
                      else
                      {
                            intro += ' <b> El recorregut a peu des de l\'estació destí  (' + nombre + ') és: <br>' + distancia + ' / ' + temps + '   </b>';
                      }             
              }
              else
              {
                      if (tipus == 'origen')
                      {
                            intro += ' <b> El recorrido a pie hasta la estación origen (' + nombre + ') es: <br> ' + distancia + ' / ' + temps + '   </b>';

                      }
                      else
                      {
                            intro += ' <b> El recorrido a pie desde la estación destino (' + nombre + ') es: <br>' + distancia + ' / ' + temps + '   </b>';
                      }   
                      
              }
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';    
              
               // Posem la linia vermella per separar
               // Solament si es origen, perque el destí ja queda al final del quadre
              if (tipus == 'origen')
              {
                    intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
                    intro += '  <tr>';
                    intro += '    <td style="text-align: left; width: 100%;">';
                    intro += '      <img alt="" src="imatges/red-line.png" /> ';
                    intro += '    </td>';
                    intro += '  </tr>';
                    intro += '</table>';
              }
              
              
              div.innerHTML += intro;
  
        }     
        
                   
              
        
        //div.innerHTML = '<div style="text-align: right; padding-bottom: 0.3em;"> El recorregut a peu fins a lestació ' + tipus + ' és: ' + distancia + ' / ' + temps + '<\/div>';
       

      } // ============ end of customPanel function ===========      

function pintaRutaAPeuO(origen,desti)
{
       
        
        var tipoEst;
        var directionsAPeuO = new GDirections(null,document.getElementById("DOcultas")); 
        directionsAPeuO.load("from: " + origen.y + "," + origen.x + " to:" + desti.y + "," + desti.x, {travelMode:G_TRAVEL_MODE_WALKING,getPolyline:true});
        
                  
              GEvent.addListener(directionsAPeuO,"load", function() {  
              
                   var a = String(desti.x);                   
                    var e = a.replace(".","");
                    var c = String(desti.y);                  
                    var f = c.replace(".","");

                     
                     var info = document.getElementById(e + f).value;
                     
                     var g = new Array();
                     g = info.split('$');
                     //var nombre = g[0];
                    NombreEstacionO = g[0];
                    
                    
                    var intro;
             
              intro = '';
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '  <td style="text-align: left; width: 100%;">';
              
              if (document.getElementById("Idioma").innerHTML == "Castellano")
              {
                intro += ' <b>Ruta Bicing: ' + tiempo + ' minuts  </b>';
              }
              else
              {
                intro += ' <b>Ruta Bicing: ' + tiempo + ' minutos  </b>';
              }

              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';  
              
              // Posem la linia vermella per separar
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              intro += '      <img alt="" src="imatges/red-line.png" /> ';
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';
              
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += ' <tr>';
              intro += ' <td style="text-align: left; width: 100%;">';
              
              if (document.getElementById("Idioma").innerHTML == "Castellano")
              {
                intro += ' <b>Sortida: ' + NombreEstacionO +' </b>';

              }
              else
              {
                intro +=  ' <b>Salida: ' + NombreEstacionO +' </b>';
              }
              
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';  
              

              // Posem la linia vermella per separar
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              intro += '      <img alt="" src="imatges/red-line.png" /> ';
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';
                                  
              treureInfo(map,"map",directionsAPeuO,document.getElementById("DirAPeuO"),'origen', NombreEstacionO);            
              var poly = directionsAPeuO.getPolyline();
              map.addOverlay(poly); 
                  
              //lo hemos cambiado por DirAPeuO en lugar de direcciones
              if (intro != undefined)
              {              
                document.getElementById("DirAPeuO").innerHTML += intro;                
              }                
                });
}   

function pintaRutaAPeuD(origen,desti)
{

    var tipoEst;
    var intro;
    var auxi;
    
             var directionsAPeuD = new GDirections(null,document.getElementById("DOcultas")); 
            directionsAPeuD.load("from: " + origen.y + "," + origen.x + " to:" + desti.y + "," + desti.x, {travelMode:G_TRAVEL_MODE_WALKING,getPolyline:true});
            
             if (document.getElementById("Idioma").innerHTML == "Castellano")
              {
                tipoEst = 'destí';
              }
              else
              {
                 tipoEst = 'destino';
              }
                      
                  GEvent.addListener(directionsAPeuD,"load", function() { 
                  
                       var a = String(origen.x);                   
                        var e = a.replace(".","");
                        var c = String(origen.y);                  
                        var f = c.replace(".","");

                         
                         var info = document.getElementById(e + f).value;
                         
                         var g = new Array();
                         g = info.split('$');
                         //var nombre = g[0];
                         
                         NombreEstacionD = g[0];
                                               
                         
              // Posem la linia vermella per separar
              intro = '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              intro += '      <img alt="" src="imatges/red-line.png" /> ';
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';
              
              
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              
              if (document.getElementById("Idioma").innerHTML == "Castellano")
              {
                intro += ' <b>Arribada: ' + NombreEstacionD +' </b>';

              }
              else
              {
                intro +=  ' <b>Llegada: ' + NombreEstacionD +' </b>';
              }
            
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';  
                         
              // Posem la linia vermella per separar
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              intro += '      <img alt="" src="imatges/red-line.png" /> ';
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';
                         
              //lo agregamos en DirAPeuD para que no se solape con las calles
              document.getElementById("DirAPeuD").innerHTML += intro;  
             
             
              treureInfo(map,"map",directionsAPeuD,document.getElementById("DirAPeuD"),tipoEst,NombreEstacionD);                  
              var poly = directionsAPeuD.getPolyline();
              map.addOverlay(poly);               
                    });  
   
}    

function pintaRutaAPeuUnica(origen,desti)
{

            var intro;

            var directionsAPeuTotal = new GDirections(null,document.getElementById("DOcultas")); 
            directionsAPeuTotal.load("from: " + origen.y + "," + origen.x + " to:" + desti.y + "," + desti.x, {travelMode:G_TRAVEL_MODE_WALKING,getPolyline:true});
            
            
           GEvent.addListener(directionsAPeuTotal,"load", function() { 
                  
              intro = '';   
              intro += '<table style="margin: 0px 5px; color: rgb(0, 0, 0);">';
              intro += '  <tr>';
              intro += '    <td style="text-align: left; width: 100%;">';
              
              if (document.getElementById("Idioma").innerHTML == "Castellano")
              {  
                intro += ' <b> No cal agafar el servei Bicing per anar del punt origen al punt destí   </b>';                  
              }
              else
              {
                intro += ' <b> No hace falta utilizar el servicio Bicing para ir del punto origen al punto destino  </b>';
              }
                            
              intro += '    </td>';
              intro += '  </tr>';
              intro += '</table>';   
              
               if (intro != 'undefined')
                {              
                    document.getElementById("DirAPeuO").innerHTML = intro;                
                }
                                  
                  var poly = directionsAPeuTotal.getPolyline();
                  map.addOverlay(poly);                 
                });           
            
}    
     

var paradas = new Array();

function pintaParadasCercanas(points,OptimaO,OptimaD,modificando)
{
        var point;
        var marker;
        
         
                  
        markerOptions = { icon:StopIcon };
        markerOptionsOpt = { icon:StopOptimaIcon };
          
        for (var i = 0; i < points.length; i++) 
        {
       
        if (((points[i][2] == OptimaO) || (points[i][2] == OptimaD)) && (modificando != 'true') )
        {
         point = new GLatLng(points[i][0],points[i][1]);
                 marker = new GMarker(point,markerOptionsOpt);
                 paradas[i]=marker;  
                 map.addOverlay(marker);
        }
        else
        {
                 point = new GLatLng(points[i][0],points[i][1]);
                 marker = new GMarker(point,markerOptions);
                 paradas[i]=marker;  
                 map.addOverlay(marker);
                 }
         }         
                 
         updateMarkers(); 
}  

function updateMarkers() {
 for (var i = 0; i < paradas.length; i++) {
 updateMarker(paradas[i]);
}
}


function updateMarker(marker) {

 GEvent.addListener(marker, "mouseover", function() {
 var point = marker.getPoint();
 
 var a = String(point.x);
//var b = a.substring(0,5);
var e = a.replace(".","");
var c = String(point.y);
//var d = c.substring(0,6);
var f = c.replace(".","");

 
 var info = document.getElementById(e + f).value;
 
 var g = new Array();
 g = info.split('$');
 var nombre = g[0];
 var buides = g[1];
 var plenes = g[2];
 
 var html;
 if (document.getElementById("Idioma").innerHTML == "Castellano")
 {
      html  ="<div style='margin:10px'><div style='font:bold 11px verdana;color:#cf152c;margin-bottom:10px'>" + nombre + "</div><div style='text-align:right;color:black;float:left;font:bold 11px verdana'>Bicicletes<br />Espais buits</div><div style='margin-left:5px;float:left;color:black;font:bold 11px verdana;color:green'>" + plenes +"<br />" + buides +"<br /></div></div>";
 }
 else
 {
          html  ="<div style='margin:10px'><div style='font:bold 11px verdana;color:#cf152c;margin-bottom:10px'>" + nombre + "</div><div style='text-align:right;color:black;float:left;font:bold 11px verdana'>Bicicletas<br />Espacios vacíos</div><div style='margin-left:5px;float:left;color:black;font:bold 11px verdana;color:green'>" + plenes +"<br />" + buides +"<br /></div></div>";

 }
 
 
 
 //var msg = "A lestació hi ha " + plenes + " bicicletes i " + buides + " llocs buids";
 
    marker.openInfoWindowHtml(html);
 });
 
  GEvent.addListener(marker, "click", function() {
  
  if (state == 3)
  {
        var point = marker.getPoint();
     
        var a = String(point.x);
        //var b = a.substring(0,5);
        var e = a.replace(".","");
        var c = String(point.y);
        //var d = c.substring(0,6);
        var f = c.replace(".","");
     
        var info = document.getElementById(e + f).value;
         
        var g = new Array();
        g = info.split('$');
        var tipo = g[3];
          
        if(tipo == 0)
        {
          //borramos el marker anterior
          
            if (EstacionsOD[0])
            {
                EstacionsOD[0].setImage("http://www.bicing.cat/pfw_files/tpl/icono_mark_green_2.png");              

                //map.removeOverlay(EstacionsOD[0]); 
            }
            //setOrigen(marker.getPoint());  
                marker.setImage("http://www.bicing.cat/pfw_files/tpl/icono_mark_blue_2.png");
                document.getElementById('latO').value = point.y;
                document.getElementById('longO').value = point.x;    
                document.getElementById('EsNueva').value = 1; 
                EstacionsOD[0] = marker;     
            
        }
        else
        {
             if (tipo == 1)
             {
                if (EstacionsOD[1])
                {
                    EstacionsOD[1].setImage("http://www.bicing.cat/pfw_files/tpl/icono_mark_green_2.png");    
                    //map.removeOverlay(EstacionsOD[1]); 
                }
                    //setDesti(marker.getPoint());
                    marker.setImage("http://www.bicing.cat/pfw_files/tpl/icono_mark_blue_2.png");
                   document.getElementById('latD').value = point.y;
                    document.getElementById('longD').value = point.x;
                    document.getElementById('EsNueva').value = 1;  
                    EstacionsOD[1] = marker;     
              }
        }
    }
 });
 
 } 
 
  function setOrigen(point) {
        createMarkerRutaO(point,0,StopOptimaIcon);
       // state = 3;
        document.getElementById('latO').value = point.y;
        document.getElementById('longO').value = point.x;    
        document.getElementById('EsNueva').value = 1;     
      }

      function setDesti(point) {
       createMarkerRutaD(point,4,StopOptimaIcon);
        //state = 2;
        document.getElementById('latD').value = point.y;
        document.getElementById('longD').value = point.x;
        document.getElementById('EsNueva').value = 1;  
      }    
      
            function showAddressO(response) 
      {
        var place;
        if (!response || response.Status.code != 200) 
        {
        }
        else 
        {
            place = response.Placemark[0];
            var adreca = place.address;
             var g = new Array();
             g = adreca.split(',');
             var carrer = g[0];
             var numero = g[1];
            document.getElementById('dirOrigen').value = carrer + ',' + numero;
        }
     }
     
     function showAddressD(response) 
      {
        var place;
        if (!response || response.Status.code != 200) 
        {
        }
        else 
        {
            place = response.Placemark[0];
             var adreca = place.address;
             var g = new Array();
             g = adreca.split(',');
             var carrer = g[0];
             var numero = g[1];
            
            document.getElementById('dirDestino').value = carrer + ',' + numero;
           
        }
     }

        
   
    function doStart(point) {
        var LatLong;
    
        if (point.y > 41.45512676696008 || point.y < 41.3570813848463 || point.x > 2.229623794555664 || point.x < 2.1084094047546387)
        {
            RecargarLimitesO();                                                                          
        }
        else
        {
            geocoder = new GClientGeocoder();

            LatLong = new GLatLng(point.y, point.x);
            geocoder.getLocations(LatLong, showAddressO);

            createMarker(point,0,icon1);
            state = 1;
            document.getElementById('LatPuntO').value = point.y;
            document.getElementById('LonPuntO').value = point.x;    
            document.getElementById('direcciones').innerHTML = "";
            
        }        
      }

      function doEnd(point) 
      {
      
        var LatLong;
        var latOr = document.getElementById('LatPuntO').value;
        var lonDe = document.getElementById('LonPuntO').value;
        
        if (point.y > 41.45512676696008 || point.y < 41.3570813848463 || point.x > 2.229623794555664 || point.x < 2.1084094047546387)
        {
            RecargarLimitesD();                                                                          
        }
        else
        {              
            
            if (point.y == latOr & point.x == lonDe)
            {
                PuntosOrigenDestinoIguales();                                                                          
            }        
            
            else
            {
                
                geocoder = new GClientGeocoder();

                LatLong = new GLatLng(point.y, point.x);
                geocoder.getLocations(LatLong, showAddressD);
            
                createMarker(point,4,icon3);        
               
                document.getElementById('LatPuntD').value = point.y;
                document.getElementById('LonPuntD').value = point.x;
                
                document.getElementById('EsNueva').value = 0;   
                
                    if (document.getElementById("btnCrearRuta").disabled==true)
                   {
                    document.getElementById("btnCrearRuta").disabled=false;
                   }              
                
                state = 2;
            }
         }
      } 
      
   
             function getDirections(ruta) {
           
            
            //dividir en llamadas de como max. 25 puntos
            var indice = 0;
            var ruta1 = new Array(); 
            var limite = ruta.length;     
            var counter = 0;
            

           //prueba!!!
             var IndiceGrupoPuntos = 1;
             
            while (counter < limite)
            {                   
                if (((counter % 24) != 0) || (counter == 0))
                {             
                    ruta1[indice] = ruta[counter];  
                    indice = indice + 1;                    
                }
                else
                {       
                    ruta1[indice] = ruta[counter]; 
                    
                    HandleDirections(ruta1,IndiceGrupoPuntos);    
                    
                    IndiceGrupoPuntos = IndiceGrupoPuntos + 1;
                                    
                    ruta1 = new Array();
                    indice = 0;
                }          
                 counter = counter + 1;                     
            }     
                                      
             HandleDirections(ruta1,IndiceGrupoPuntos);                          
                       
             
        }    
        
        
       
        
        function HandleDirections(points,iGrupoPuntos) 
        {
      
              var directions = new GDirections(null,document.getElementById("DOcultas"));
              index = 1;          
              
              
              GEvent.addListener(directions,"load", function() {  
              
                                                  
                   //customPanel(map,"map",directions,document.getElementById("direcciones"));
                   customPanel(map,"map",directions,document.getElementById("direcciones"),iGrupoPuntos);
                 
                  var poly = directions.getPolyline();
                  map.addOverlay(poly);  
                   
                });
       
        
                // === catch Directions errors ===
                GEvent.addListener(directions, "error", function() {
                    var code = directions.getStatus().code;
                    var reason="Code "+code;
                    if (reasons[code]) {
                      reason = reasons[code]
                } 
                //alert(reason);
                });     
                
              //directions.loadFromWaypoints(points,{getSteps:true,travelMode:G_TRAVEL_MODE_WALKING,getPolyline:true});
              //directions.loadFromWaypoints(points,{getSteps:true});
              
          
             
             directions.loadFromWaypoints(points,{getSteps:true,travelMode:G_TRAVEL_MODE_WALKING});
        }    
        
      function createMarker(point,i,icon) {
        var marker = new GMarker(point, {draggable:false,icon:icon});          
        map.addOverlay(marker);      
      }
      
      function createMarkerRutaO(point,i,icon) {
        var marker = new GMarker(point, {draggable:false,icon:icon});          
        map.addOverlay(marker); 
        EstacionsOD[0] = marker;
         GEvent.addListener(marker, "mouseover", function() {
               //marker.openInfoWindowHtml("Aquí sortirà la info de l'estat de l'estació");
         });     
      }
      
      function createMarkerRutaD(point,i,icon) {
        var marker = new GMarker(point, {draggable:false,icon:icon});          
        map.addOverlay(marker); 
        EstacionsOD[1] = marker;
         GEvent.addListener(marker, "mouseover", function() {
               //marker.openInfoWindowHtml("Aquí sortirà la info de l'estat de l'estació");
         });     
      }
      
      
      //preba!!!
      
      var arrayDescr = new Array();
      
      function customPanel(map,mapname,directions,div,iGrupoP) 
      {    
        var html = '';  
        
        for (var i=0; i<directions.getNumRoutes(); i++) {
         
          var route1 = directions.getRoute(i);
          var geocode1 = route1.getStartGeocode();    
        
          for (var j=0; j<route1.getNumSteps(); j++) 
          {
                var step = route1.getStep(j);
                var aux = step.getDescriptionHtml();
                distancia = step.getDistance().meters;      
                var ColCalles = new Array();
                ColCalles = aux.split('<b>');
                var calleB1;
                var calleB2;
                var bool;
                var calle1;
                var numDescr;
                
                if (ColCalles.length > 3)
                {   
                    calleB1 = ColCalles[2];
                    calleB2 = ColCalles[3];                   
                    
                    var h = new Array();
                    h = calleB1.split('</b>');
                     var m = new Array();
                    m = calleB2.split('</b>');
                     calle1 = h[0];
                    var calle2 = m[0]; 
                   
      
                    
                     numDescr = calles.length;
                    
                    if (numDescr > 0)
                    {                                
                        //if (calles[numDescr - 1][0] != calle1 & calles[numDescr - 1][1] != calle2 & calles[numDescr - 1][0] != calle2 & calles[numDescr - 1][1] != calle1  & distancia >= 8) 
                        if (calles[numDescr - 1][0] != calle1 & distancia >= 20)     
                        {           
                            //Comprobamos que sea una calle
                            var inicial=calle1.charAt(0);
	                        var inicialMays=inicial.toUpperCase();
	           
                            if (calles[numDescr - 1][0] != calle1 & inicial==inicialMays)
                            {
                                calles[numDescr] = new Array();
                                calles[numDescr][0] = calle1;
                                calles[numDescr][1] = calle2;
                                html += calle1 + '<br>';  
                            }     
                        }            
                    }
                    else
                    {
                        calles[numDescr] = new Array();
                        calles[numDescr][0] = calle1;
                        calles[numDescr][1] = calle2;
                        html += calle1 + '<br>';  
                    }
                 } 
                 else
                 {
                 
                         if (ColCalles.length > 2)
                        {   
                            calleB1 = ColCalles[2];
                                         
                            
                            var h = new Array();
                            h = calleB1.split('</b>');
                            calle1 = h[0];
                            
                             numDescr = calles.length;
                            
                            if (numDescr > 0)
                            {                                
                                if (calles[numDescr - 1][0] != calle1 & distancia >= 40)      
                                {           
                                    //Comprobamos que sea una calle
                                    var inicial=calle1.charAt(0);
	                                var inicialMays=inicial.toUpperCase();
        	           
                                    if (inicial==inicialMays)
                                    {
                                        calles[numDescr] = new Array();
                                        calles[numDescr][0] = calle1;
                                        calles[numDescr][1] = calle2;
                                        html += calle1 + '<br>';  
                                    }     
                                }            
                            }
                            else
                            {
                                calles[numDescr] = new Array();
                                calles[numDescr][0] = calle1;
                                calles[numDescr][1] = calle2;
                                html += calle1 + '<br>';  
                            }
                 } 
                 }               
          } 
       }                  
        
       //div.innerHTML += html;
       
            
            //PRUEBA!!!!!
            arrayDescr[iGrupoP] = html;
             
         div.innerHTML = '';
        //añadimos calles xq suponemos que ya ha acabado
                  
                      for (var i = 0; i < arrayDescr.length; i++) 
                      {
                            if (arrayDescr[i] != undefined)
                            {     
                                document.getElementById("direcciones").innerHTML += arrayDescr[i];
                            }
                     }

      } // ============ end of customPanel function ===========  
      
      
      
      //== Adreces google
       function customPanel2(map,mapname,directions,div) 
      {    
        var html = '';  
        
        for (var i=0; i<directions.getNumRoutes(); i++) 
        {
         
          var route1 = directions.getRoute(i);
          var geocode1 = route1.getStartGeocode();    
        
          for (var j=0; j<route1.getNumSteps(); j++) 
          {
                var step = route1.getStep(j);
                var aux = step.getDescriptionHtml();
               var dist =step.getDistance().html;  
                                html += aux +  ' dist: ' + dist +'<br>';  
                               
          } 
       }                  
        
       div.innerHTML += html;

      } // ============ end of customPanel function ===========  
      
             function PrintMapa()
       {
            var ventana_secunadaria = window.open('PrintMap.html');
            return false;
       }
       
        function PrintRuta()
       {
            var ventana_secunadaria =  window.open('PrintRuta.html');
            return false;
       }

     

        
        function ActValDesacCreaRuta()
        {        
            if (state == 0)
            {
                if (document.getElementById("btnValidarDir").disabled==true)
                {
                        document.getElementById("btnValidarDir").disabled=false;
                                          
                }                   
            }
        }
        
         function ActCreaRutaDesacVal()
        {             
                if (document.getElementById("btnValidarDir").disabled==false)
                {
                        document.getElementById("btnValidarDir").disabled=true;  
                } 
               if (document.getElementById("btnCrearRuta").disabled==true)
               {
                        document.getElementById("btnCrearRuta").disabled=false;      
               }
        }  
        
         function ActDesacModif()
        {             
                if (document.getElementById("btnModifEstacions").disabled==false)
                {
                        document.getElementById("btnModifEstacions").disabled=true;
                }
               else
               {
                        document.getElementById("btnModifEstacions").disabled=false; 
                        
                        document.getElementById("RutaRecomanada").style.display = "block";
                        document.getElementById("cont_left_med_ext").style.display = "block";
                        document.getElementById("InfoViaBicing").style.display = "none";
               }                
        }  
        
        function RedirectFAQ()
        {
                if (document.getElementById("Idioma").innerHTML == "Castellano")
                {
                         window.location = 'faq_cat.aspx';
                }
                else
                {
                         window.location = 'faq_es.aspx';
                }           
        }
        
        function RedirectCatFAQ()
        {
            window.location = 'faq_cat.aspx';
        }
        
        function RedirectEsFAQ()
        {
            window.location = 'faq_es.aspx';
        }
        
        function RedirectInici()
        {
            window.location = 'http://www.bicing.cat';
        } 
        
        function RedirectSuggeriments()
        {
            window.location = 'http://www.bicing.cat/contacto/contacto.php?TU5fQ09OVEFDVE8%3D&NQ%3D%3D';
        }  
        
        
        function RedirectAvisLegal()
        {
            if (document.getElementById("Idioma").innerHTML == "Castellano")
                {
                         //window.location = 'AvisLegal_cat.html';
                        var ventana_secunadaria = window.open('AvisLegal_cat.html','','width=520,height=600,scrollbars=1');
                        ventana_secunadaria.moveTo(screen.width/3,screen.height/5);
                            return false;
                }
                else
                {
                         //window.location = 'AvisLegal_es.html';
                         var ventana_secunadaria2 = window.open('AvisLegal_es.html','','width=520,height=600,scrollbars=1');
                         ventana_secunadaria2.moveTo(screen.width/3,screen.height/5);
                        return false;
                }  
        }
        
        function RedirectAvisLegal_ES()
        { 
            //window.location = 'AvisLegal_es.html';
            var ventana_secunadaria2 = window.open('AvisLegal_es.html','','width=520,height=600,scrollbars=1');
            ventana_secunadaria2.moveTo(screen.width/3,screen.height/5);
            return false;
        }
        
        function RedirectAvisLegal_CAT()
        {
            //window.location = 'AvisLegal_cat.html';
            var ventana_secunadaria = window.open('AvisLegal_cat.html','','width=520,height=600,scrollbars=1');
            ventana_secunadaria.moveTo(screen.width/3,screen.height/5);
            return false;
        }
        
        function reload()
        {
            location.reload();
        }
        
        
        //function Reset()
       //{        
            //window.location.reload(false);
        //}   
        
        function PuntosOrigenDestinoIguales()
        {
            //alert("Els punts origen i desté són els mateixos");
           document.getElementById("AvisODIguals").style.display = "block";  
           setTimeout( 'document.getElementById("AvisODIguals").style.display = "none"; state = 0;map.clearOverlays();',5000);
        
            //map.clearOverlays();
            //state = 0;
        }    
        
        
        function RecargarLimitesO()
        {
            //alert("L'adreça orígen no es troba dins de l'àrea del Bicing");           
           document.getElementById("AvisLimits").style.display = "block";  
           setTimeout( 'document.getElementById("AvisLimits").style.display = "none";  state = 0;map.clearOverlays();',5000);
            //map.clearOverlays();
            //state = 0;
        } 
        
        function RecargarLimitesD()
        {
            //alert("L'adreça destí no es troba dins de l'àrea del Bicing");
            document.getElementById("AvisLimits").style.display = "block";  
            setTimeout( 'document.getElementById("AvisLimits").style.display = "none"; state = 0;map.clearOverlays();',5000);
         
            //map.clearOverlays();
            //state = 0;
        }  
        
        function AvisoFaltanDatos()
        {
           //alert("Cal introduir l'origen i el destí per al càlcul de la ruta");   
            document.getElementById("AvisFaltenDades").style.display = "block";  
            setTimeout( 'document.getElementById("AvisFaltenDades").style.display = "none"; state = 0;map.clearOverlays();',5000);
         
          // map.clearOverlays();
           //state = 0;        
        }   
        
        function AvisoFaltanDatosEstaciones()
        {
           //alert("Cal introduir l'origen i el destí per al càlcul de la ruta");   
            document.getElementById("AvisFaltenDades").style.display = "block";  
            setTimeout( 'document.getElementById("AvisFaltenDades").style.display = "none"; ',5000);
         
          // map.clearOverlays();
           //state = 0;        
        }   
       
        function RutaNoTrobada()
        {
           //alert("No s'ha trobat cap ruta. Intenti-ho amb uns altres punts origens i destí ");           
            document.getElementById("AvisNoRuta").style.display = "block";  
            setTimeout( 'document.getElementById("AvisNoRuta").style.display = "none"',5000);
         
        }   
      
      function GeoCoding() 
      {
            var search;
            var aux;           
            var index;
           
            map.clearOverlays();
        
            search = document.getElementById("dirOrigen").value; 
            
            aux = String(search);
            
            index = aux.length;
            
            if (index > 0)
            {
          
               //comprobamos si hace falta añadir ", Barcelona"            
                var IndexBcn = search.indexOf("Barcelona");
                
                if (IndexBcn < 0)
                {
                    search = search + ", Barcelona";
                }
                
                geo.getLocations(search, function (result)
                { 
                // If that was successful
                    if (result.Status.code == G_GEO_SUCCESS) 
                    {
                            var i=0; 
                            var place = result.Placemark[i];
                            var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
                            
                            if (point.y > 41.45512676696008 || point.y < 41.3570813848463 || point.x > 2.229623794555664 || point.x < 2.1084094047546387)
                            {
                                       
                                      RecargarLimitesO();                                                                          
                            } 
                            
                                else
                                {                          
                                    createMarker(point,0,icon1);
                                    path[0] = point;
                                    state = 1;
                                    
                                    document.getElementById('LatPuntO').value = point.y;
                                    document.getElementById('LonPuntO').value = point.x;  
                                    
                                } 
                            
                                    
                           
                    }
                    // ====== Decode the error status ======
                    else 
                    {
                        map.clearOverlays();
                           RecargarLimitesO();                       
                    }  
                });
                
            }
             else 
             {
                map.clearOverlays();
                 AvisoFaltanDatos();                       
              }  
            
            
            search = document.getElementById("dirDestino").value;
            
            aux = String(search);           
            
            index = aux.length;
            
           
            
                if (index > 0) 
                {
                
                    //comprobamos si hace falta añadir ", Barcelona"            
                    IndexBcn = search.indexOf("Barcelona");
                    
                    if (IndexBcn < 0)
                    {
                        search = search + ", Barcelona";
                    }
              
                    geo.getLocations(search, function (result)
                    { 
                        // If that was successful
                        if (result.Status.code == G_GEO_SUCCESS) 
                        {
                          
                            var i=0; 
                            var place = result.Placemark[i];
                            var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
                          
                           if (point.y > 41.45512676696008 || point.y < 41.3570813848463 || point.x > 2.229623794555664 || point.x < 2.1084094047546387)
                           {
                               RecargarLimitesD();                                                                        
                            }  
                            else
                            {
                                     var latOr = document.getElementById('LatPuntO').value;
                                     var lonDe = document.getElementById('LonPuntO').value;
            
                                    if (point.y == latOr & point.x == lonDe)
                                    {
                                        PuntosOrigenDestinoIguales();                                                                          
                                    }
                                    else
                                    { 
                                        createMarker(point,4,icon3);
                                        path[4] = point;
                                        state = 2;
                                        
                                        document.getElementById('EsNueva').value = 0;     

                                        document.getElementById('LatPuntD').value = point.y;
                                        document.getElementById('LonPuntD').value = point.x; 
                                        
                                        ActCreaRutaDesacVal();
                                    } 
                           }                                 
                                      
                        }
                        // ====== Decode the error status ======
                        else 
                        {
                            map.clearOverlays();
                             RecargarLimitesD();                       
                        }
                    }); 
                 }
                   
                 else 
                 {
                    map.clearOverlays();
                     AvisoFaltanDatos(); 
                 }     
           
      } 
      
      function OnSucceeded() {
   // Dispaly "thank you." 
  
}

function OnFailed(error) {
   // Alert user to the error.
   alert(error.get_message());
}
 
 
 function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// Called when async postback begins
             function prm_InitializeRequest(sender, args) {
             var aux = args.get_postBackElement().id;
                 if (aux == 'btnCrearRuta')
                 {
                    if (document.getElementById('EsNueva').value == 1)
                    {
                        //Estamos creando la ruta y ya tenemos estaciones pintadas
                        var updateProgressDiv = $get('AvisRutaAdient2'); 
                        updateProgressDiv.style.display = 'block';   
                    }
                    else
                    {
                         var updateProgressDiv = $get('AvisRutaAdient'); 
                         updateProgressDiv.style.display = 'block';   
                    }
                
                 }
                 var updateProgressDiv2 = $get('contenidor'); 
                 
                      
                 
                 
                 updateProgressDiv2.style.opacity = '.5';
                // updateProgressDiv2.style.filter= 'alpha(opacity=50)';
                 
                   var updateProgressDiv3 = $get('AvisProcessant'); 
                 updateProgressDiv3.style.display = 'block'; 
             }
             
             function prm_EndRequest(sender, args) {                
                  var updateProgressDiv = $get('AvisRutaAdient'); 
                updateProgressDiv.style.display = 'none';
                var updateProgressDiv = $get('AvisRutaAdient2'); 
                updateProgressDiv.style.display = 'none';
                 var updateProgressDiv2 = $get('contenidor'); 
                 
                  
                 updateProgressDiv2.style.opacity = '1';
                 //updateProgressDiv2.style.filter= 'alpha(opacity=100)';
                   var updateProgressDiv3 = $get('AvisProcessant'); 
                 updateProgressDiv3.style.display = 'none'; 
               
             } 
             
            




