﻿	var map;
	var geocoder;
	var geocoder2;
   	var xml;
   	var markers;
   	var address;
	var id;
	var nome;
	
	var icon1 = new GIcon();
      	icon1.image = '_widgets/gmap-xml/_images/icon_twn.png';
	  	icon1.iconSize = new GSize(30, 30);
      	icon1.iconAnchor = new GPoint(9, 34);
      	icon1.infoWindowAnchor = new GPoint(9, 0);
      	icon1.infoShadowAnchor = new GPoint(18, 25);
	  
	var icon2 = new GIcon();
      	icon2.image = '_widgets/gmap-xml/_images/icon_ngh.png';
	   	icon2.iconSize = new GSize(20, 20);
        icon2.iconAnchor = new GPoint(9, 34);
        icon2.infoWindowAnchor = new GPoint(9, 0);
        icon2.infoShadowAnchor = new GPoint(18, 25);
 	
	

	
   // On page load, call this function
    function load_mapsearch_set(lat_client,lng_client,zoom_client,client_Address)
   {
      // Create new map object
      map = new GMap2(document.getElementById("gmap_search"));  
 
	   // Create new geocoding object
      geocoder2 = new GClientGeocoder();
	  
	  
	  
	  function find_zoom(client_Address)
      {
        if (geocoder2) 
        {
          geocoder2.getLatLng(client_Address, function(aPoint) 
          {
            if (!aPoint) 
            {
              //alert("can't locate [" + client_Address + "]");
            } 
            else 
            {
				 //alert(aPoint);
				 map.setCenter(aPoint, zoom_client);
            }
          });
        }
      }
	  
	  
	  
 
	   // Set map center location	
	  if(lat_client == '0.0000000000' && lng_client == '0.0000000000'){
		  //alert(client_Address);
	 	  find_zoom(client_Address);
	  }else{
		  //alert(lat_client+" , "+lng_client);
		  map.setCenter(new GLatLng(lat_client,lng_client), zoom_client);
	  }
	  
	   // Add Map Controls
      		//map.addControl(new GSmallMapControl());
       		//map.addControl(new GMapTypeControl());
			var customUI = map.getDefaultUI();
        	customUI.controls.scalecontrol = false;
        	map.setUI(customUI);
	   
      // Create new geocoding object
      geocoder = new GClientGeocoder();
	  
  	  // Download the data in data.xml and load it on the map.
	   GDownloadUrl("_widgets/gmap-xml/_xml/list_twn.spk?ord=2", function(data) {
          xml = GXml.parse(data);
          markers = xml.documentElement.getElementsByTagName("marker");
		  
          for (var i = 0; i < markers.length; i++) {
            address = markers[i].getAttribute("address");
			id = markers[i].getAttribute("id");
			nome = markers[i].getAttribute("nome");
			twn_lat = markers[i].getAttribute("lat");
			twn_lng = markers[i].getAttribute("lng");
			
			if (!twn_lat && !twn_lng) {
				//alert("geocoding:"+address);
        		findAddress_twn(address,id,nome);
     		}  else if (twn_lat == "0.000000000000" && twn_lng == "0.000000000000") {
				//alert("geocoding:"+address);
				findAddress_twn(address,id,nome);
			} else {
			  marker = createMarker_twn(new GLatLng(twn_lat, twn_lng), nome, id);
			  map.addOverlay(marker);
			}
			
			}
        });   
   }
   // CONCELHOS 
   
	  function createMarker_twn(point,nome,id) {

        var marker = new GMarker(point,icon1);
        // The new marker "click" listener        
        GEvent.addListener(marker,"click", function() {
         map.setCenter(point, 11); 
		 //alert(id);
				
				 load_ngh(id,nome);
				 var tabs = [new GInfoWindowTab('tab1','<span class="infowindow">'+trans_search_twn+' <strong>'+nome+'</strong><br><a id="gmap_search_btn" href="listagem.spk?twn='+id+'">'+trans_search_list+'</a></span>')];
				marker.openInfoWindowTabsHtml(tabs,{maxWidth:180});
        });        
        
        return marker;
      }
	  
	  function findAddress_twn(anAddress,id,nome)
      {
        if (geocoder) 
        {
          geocoder.getLatLng(anAddress, function(aPoint) 
          {
            if (!aPoint) 
            {
              //alert("can't locate [" + anAddress + "]");
            } 
            else 
            {

			  point = aPoint;
			  //alert(anAddress);
			  
			  marker = createMarker_twn(point, nome,id);
			  map.addOverlay(marker);

            }
          });
        }
      }
	  
	  // FREGUESIAS 
	  
	  function createMarker_ngh(point,nome,id,twn_nome) {

        var marker = new GMarker(point,icon2);
        // The new marker "click" listener        
        GEvent.addListener(marker,"click", function() {
         map.setCenter(point, 11); 
				 
				 var tabs = [new GInfoWindowTab('tab1','<span class="infowindow">'+trans_search_twn+' <strong>'+twn_nome+'</strong> '+trans_search_ngh+' <strong>'+nome+'</strong><br><a id="gmap_search_btn" href="listagem.spk?ngh='+id+'">'+trans_search_list+'</a></span>')];
				 
				 marker.openInfoWindowTabsHtml(tabs,{maxWidth:180});
        });        
        
        return marker;
      }
	  
	  function findAddress_ngh(anAddress,id,nome,twn_nome)
      {
        if (geocoder) 
        {
          geocoder.getLatLng(anAddress, function(aPoint) 
          {
            if (!aPoint) 
            {
              //alert("can't locate [" + anAddress + "]");
            } 
            else 
            {
              
			  point = aPoint;
			  
			  marker = createMarker_ngh(point, nome, id, twn_nome);
			  map.addOverlay(marker);
			  
            }
          });
        }
      }

// This function adds the point to the map
	  
	  function load_ngh(id,twn_nome){
	  
  	  // Download the data in data.xml and load it on the map.
	   GDownloadUrl("_widgets/gmap-xml/_xml/list_ngh.spk?twn="+id+'&ord=1', function(data) {
          xml = GXml.parse(data);
          markers = xml.documentElement.getElementsByTagName("marker");
		  
          for (var i = 0; i < markers.length; i++) {
            address = markers[i].getAttribute("address");
			id = markers[i].getAttribute("id");
			nome = markers[i].getAttribute("nome");
			ngh_lat = markers[i].getAttribute("lat");
			ngh_lng = markers[i].getAttribute("lng");
			
			if (!ngh_lat && !ngh_lng) {
        		findAddress_ngh(address,id,nome,twn_nome);
     		} else if (ngh_lat == "0.000000000000" && ngh_lng == "0.000000000000") {  
				findAddress_ngh(address,id,nome,twn_nome);
			} else {
			  marker = createMarker_ngh(new GLatLng(ngh_lat, ngh_lng), nome, id, twn_nome);
			  map.addOverlay(marker);
			}
			
			
			}
        });   
		  
		  }

	  
	 
      
  
