﻿   var map;
   var geocoder;
   var myMarker="";
   var wayPoints= new Array(2);
   var gDirections="";  
   var fromIsSet=false;
   var toIsSet=false;
   var latLngPoint;
   var http1 = getXMLHTTPRequest1();
   var currentDestMarker="";   
   var selected="";

   function load() {
    if (GBrowserIsCompatible()) {
      geocoder = new GClientGeocoder();
      map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(40.633407,22.941706), 15);
      map.addControl(new GSmallZoomControl());
      map.addControl(new GMapTypeControl());
      wayPoints[0]="";
      wayPoints[1]="";
      GEvent.addListener(map,'click',
        function(overlay, point) {
          if(point) {          
             if(myMarker!=""){                             
                map.removeOverlay(myMarker);
                map.removeOverlay(currentDestMarker);
                fromIsSet=false;
                selected="";                
                if(gDirections!=""){
                  gDirections.clear();                
                }                              
             }  
             createOrdinaryMarker(point);
          }
        });
     }
   }
  
   function myLatLng(){
     var myLatLng;
     if (document.from.checkboxfrom.checked == true){         
      myLatLng=myMarker.getLatLng();
      wayPoints[0]=myLatLng;
      fromIsSet=true;
      selected="checked";
     } else {      
      fromIsSet=false;
      selected="";
     }    
   }
   
   function displayDirections() {   
    gDirections=new GDirections(map);
    gDirections.loadFromWaypoints(wayPoints);   
   }
       
   function destLatLng(lat,lng){
     var destLatLng;     
     if(fromIsSet) {     
      destLatLng= new GLatLng(lat,lng);    
      wayPoints[1]=destLatLng;      
      toIsSet=true;
     } else {
      alert("Πρέπει να εισάγετε πρώτα την αφετηρία σας!");
     }                  
   } 
   
   function createOrdinaryMarker(point){        
    var marker = new GMarker(point);
    myMarker=marker;
    map.addOverlay(marker);  
    GEvent.addListener(marker, "click", function(){      
      var html1 = "<b>Η αφετηρία μου είναι εδώ!</b><br><form name=\"from\"><input id=\"checkboxfrom\" type=\"checkbox\" " +selected + " name=\"checkboxfrom\" onclick=\"myLatLng();\"/>Από Εδώ..</form>";    
      //alert(html1);
      currentPoint = marker.getPoint();
      map.setCenter(currentPoint,15);      
      marker.openInfoWindowHtml(html1);                 
    });    
    return marker;
   }  

    
   function getXMLHTTPRequest1() {
      try {
        req1 = new XMLHttpRequest(); 
      }
      catch(e) {
        try {
          req1=new ActiveXObject("Msxml2.XMLHTTP.5.0");
        }
        catch(e) {
         try {
            req1=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch(e) {        
           try	{
            req1=new ActiveXObject("Microsoft.XMLHTTP");            
           }
           catch(e){
             req1=false;
           }
         }
       }
      }    
      return req1;     
   }
            
   function searchStoresByType() {       
      var type = document.getElementById('typeSelect').value;                    
      url="google_stores.php?type="+encodeURI(type);    	     
      myRand=parseInt(Math.random()*999999999999999);
      var modurl= url+"&rand="+myRand;	
      http1.open("GET",modurl,true);
      http1.onreadystatechange=function () { 
        useHttpResponse1();
        }                                   
        http1.send(null);    
   }
   
        
   function useHttpResponse1(){
    if (http1.readyState==4) {				
		 if(http1.status==200) {														         
       var markers = http1.responseText;      
       map.clearOverlays();
       if(myMarker!=""){
          map.addOverlay(myMarker);              
       }
       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '<b>ΑΠΟΤΕΛΕΣΜΑΤΑ</b><br><br>';
       if (markers == 0) {       
         sidebar.innerHTML = '<b>ΔΕΝ ΒΡΕΘΗΚΑΝ ΑΠΟΤΕΛΕΣΜΑΤΑ!</b>';
         map.setCenter(new GLatLng(40.633407,22.941706), 15);        
         return;
       }      
       var bounds = new GLatLngBounds();
       var mySplitResult = markers.split("^");
       var splitNames= mySplitResult[0];
       var splitAddresses = mySplitResult[1];
       var splitLat = mySplitResult[2];
       var splitLng = mySplitResult[3];
       var splitNames = splitNames.split("*");
       var splitAddresses = splitAddresses.split("*");     
       var splitLat = splitLat.split("*");
       var splitLng = splitLng.split("*");
       for (var i = 0; i < splitNames.length-1; i++) {                          
         var title = splitNames[i];       
         var address = splitAddresses[i];         
         var lat = splitLat[i];       
         var lng = splitLng[i];                               
         var marker = createMarker(new GLatLng(lat, lng), title, address);                          
         var sidebarEntry = createSidebarEntry(marker, title, address);
         sidebar.appendChild(sidebarEntry);         
         //bounds.extend(new GLatLng(lat, lng));        
       }
       //map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));       
    }
   }
  }

  function createMarker(point, title, address) {
     var marker = new GMarker(point);     
     var destMLatLng=marker.getLatLng();
     var destLat=destMLatLng.lat();
     var destLng=destMLatLng.lng();
     var html = '<b>' + title + '</b><br/>' + address+'<form name=\"to\"><input type=\"checkbox\" name=\"checkboxTo\" onclick=\"destLatLng('+destLat+', '+destLng+');\"/>Ο Προορισμός μου!</form>';
     GEvent.addListener(marker, 'click', function() {
       marker.openInfoWindowHtml(html);
     });
     GEvent.addListener(marker, 'infowindowclose', function() {
       if(toIsSet) {
        displayDirections();
       }        
     });
     return marker;
    }

    function createSidebarEntry(marker, name, address) {
      var div = document.createElement('div');
      var html = '<b>' + name + '</b>, ' + address;
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px'; 
      GEvent.addDomListener(div, 'click', function() {
        if(currentDestMarker!=""){
          map.removeOverlay(currentDestMarker);
          toIsSet=false;
        }  
        if(gDirections!=""){
           gDirections.clear();                
        }        
        currentDestMarker=marker;  
        map.addOverlay(marker);
        GEvent.trigger(marker, 'click');
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.color = 'red';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.color = '#333333';
      });
      return div;
    }
    
   
