﻿// JScript File

//<![CDATA[
//function Map () {


function initialize() {


    if (GBrowserIsCompatible()) {

      map = new google.maps.Map2(document.getElementById("map_g"));
      map.addControl(new GLargeMapControl3D());
      map.addControl(new GMapTypeControl());
      map.setCenter(new google.maps.LatLng(65, 25), 5);
      geocoder = new GClientGeocoder();
      map.getContainer().style.overflow="hidden";
      // arrays to hold copies of the markers and html used by the side_bar
      // because the function closure trick doesnt work there
      var gmarkers = [];
      var htmls = [];
      i = 0;
      j = 0;
             
            
      
        

      // A function to create the marker and set up the event window
      function createMarker(point,name,html, seoIcon) {
        var marker = new GMarker(point, seoIcon);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
          document.getElementById("gm_info").innerHTML = html;
        });
        // save the info we need to use later for the side_bar
//        gmarkers[i] = marker;
//        htmls[i] = html;

//        i++;
        return marker;
      }
      
      // This function picks up the click and opens the corresponding info window
//      function myclick(i) {
//        gmarkers[i].openInfoWindowHtml(htmls[i]);
//      }
      
      // Create our "tiny" marker icon
        //var seoIcon = new GIcon(G_DEFAULT_ICON);
        //seoIcon = new GIcon(G_DEFAULT_ICON, "../layout/icon_test.png");
        //tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        //seoIcon.iconSize = new GSize(20, 20);
        //tinyIcon.shadowSize = new GSize(22, 20);
        //seoIcon.iconAnchor = new GPoint(6, 20);
        //seoIcon.infoWindowAnchor = new GPoint(5, 1);

        // Set up our GMarkerOptions object literal
        //markerOptions = { icon:seoIcon };

      
      // create the map
      
       
      
      places=[];
      var bounds = new GLatLngBounds();
      distance=[];
      //var marker=[];


      // Read the data from asemat.xml
      var request = GXmlHttp.create();
      request.open("GET", "../xml/asemat.xml", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          var xmlDoc = GXml.parse(request.responseText);
          // obtain the array of markers and loop through it
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
          for (var i = 0; i < markers.length; i++) {
            // obtain the attribues of each marker
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var city = markers[i].getAttribute("city");
            var html = "<div class='gm_info_window'"
            html += "onmouseover=this.style.cursor='pointer';heat("+i+");  "
            html += "onmouseout='cool("+i+")'>"

            html += "<b>" + markers[i].getAttribute("name") + "</b><br/>" + markers[i].getAttribute("addr") + "<br/>" + markers[i].getAttribute("city");
            if (markers[i].getAttribute("phone") != "") {
                html += "<br/>" + markers[i].getAttribute("phone");
            }
            if (markers[i].getAttribute("cellphone") != "") {
                html += "<br/>" + markers[i].getAttribute("cellphone");
            } 
            if (markers[i].getAttribute("email") != "") {
                html += "<br/>" + markers[i].getAttribute("email");
            } 
            if (markers[i].getAttribute("www") != "") {
                html += "<br/><a target='_blank' href='" + markers[i].getAttribute("www") + "'>" + markers[i].getAttribute("www") + "</a>";
            } 
            html += "<br/>" + markers[i].getAttribute("info") + "</div>";
            html = html.replace(/\[br]/ig, "<br />");
            var label = markers[i].getAttribute("label");
//            var town = markers[i].getAttribute("city");
            
            var seoIcon = new GIcon(G_DEFAULT_ICON, "../layout/seo_icon_ball.png");
            seoIcon.shadow = "../layout/seo_icon_ball_shadow.png"
            seoIcon.iconSize = new GSize(20, 20);
            seoIcon.iconAnchor = new GPoint(10, 10);
            seoIcon.shadowSize = new GSize(31.0, 20.0);
            seoIcon.infoWindowAnchor = new GPoint(10.0, 10.0);

//            var seoIcon = new GIcon(G_DEFAULT_ICON, "../layout/seo_icon.png");
//            seoIcon.shadow = "../layout/seo_icon_shadow.png"
//            seoIcon.iconSize = new GSize(30, 14);
//            seoIcon.iconAnchor = new GPoint(15, 7);
//            seoIcon.shadowSize = new GSize(38.0, 14.0);
//            seoIcon.infoWindowAnchor = new GPoint(15.0, 7.0);
            
            places.push({point:point,label:label,html:html,seoIcon:seoIcon,city:city}); 
            // create the marker
//            var marker = createMarker(places[i].point,places[i].label,places[i].html, places[i].seoIcon);
//            map.addOverlay(marker);
            
          }
          if (google.loader.ClientLocation) {
            latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
            searchNear(latlng,'');
          } else {
            latlng = new google.maps.LatLng(60, 25);
            searchNear(latlng,'');
          }
          //alert(places[3].label);
        }
      }
      request.send(null);
    }

    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
  }  
  
//  if (google.loader.ClientLocation) {
//  
//              //zoom = 8;
//              
//              }
//              else
//              {
//              latlng = new google.maps.LatLng(65, 25);
//              zoom = 13;
//              }

  function addClick(marker,n) {
                 
                 GEvent.addListener(marker, "click", function() {
                
                  marker.openInfoWindowHtml(places[n].html);
                  document.getElementById("gm_info").innerHTML = places[n].html;
                  
                });
  }
  
  function searchNear(point,address) {
            map.clearOverlays();
            document.getElementById("gm_info").innerHTML = "";
            map.setCenter(point,7);
            //alert(point.distanceFrom(places[8].point));

            for(i=0;i<places.length;i++) {
            
                distance[i] = point.distanceFrom(places[i].point);
                
                if (distance[i] < 50000) {

                    if (places[i].city.toLowerCase() == address.toLowerCase()) {
                    
                        var seoIcon2 = new GIcon(G_DEFAULT_ICON, "../layout/seo_icon_ball2.png");
                        seoIcon2.shadow = "../layout/seo_icon_ball_shadow.png"
                        seoIcon2.iconSize = new GSize(20, 20);
                        seoIcon2.iconAnchor = new GPoint(10, 10);
                        seoIcon2.shadowSize = new GSize(31.0, 20.0);
                        seoIcon2.infoWindowAnchor = new GPoint(10.0, 10.0);
                        
                        var marker = new GMarker(places[i].point, seoIcon2);
                        map.addOverlay(marker);
                        document.getElementById("gm_info").innerHTML += places[i].html;
                        document.getElementById("gm_info").innerHTML += "<br/>";
                        addClick(marker,i);
                    }
                } 
            }
            
            for(n=0;n<places.length;n++) {
            
                distance[n] = point.distanceFrom(places[n].point);
                
                if (distance[n] < 50000) {
                    
                    if (places[n].city.toLowerCase() != address.toLowerCase()) {
                        var marker = new GMarker(places[n].point, places[n].seoIcon);//createMarker(places[i].point,places[i].label,places[i].html, places[i].seoIcon);
                        map.addOverlay(marker);
                        document.getElementById("gm_info").innerHTML += places[n].html;
                        document.getElementById("gm_info").innerHTML += "<br/>";
                        addClick(marker,n);
                    }
                } 
            }
              
              
  }
  
  //listauksen funktiot
//  function go(num){
//    map.setZoom(7);
//    GEvent.trigger(marker[num],"click");
//    }

    var attract;

    function heat(num){
    attract = new GMarker(places[num].point);
    map.addOverlay(attract);
    //map.closeInfoWindow();
    }

    function cool(num){
    map.removeOverlay(attract);
    }

  
  
  //function to show the location of the searched address
    function showAddress(address) {
      //var map = new google.maps.Map2(document.getElementById("map"));
      if (geocoder) {
        geocoder.getLatLng(
          address + ',finland',
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
            searchNear(point,address);

              
            }
          }
        );
      }
    }
//}
    //]]>