var lat;
var lon;
var popup;

g_waze_config = {
	div_id : "map",
	locale : "israel",
	center_lon : 34.7898,
	center_lat : 32.08676,
	zoom : 8,
	token : "dccab5c8-f757-4ad4-879f-7d255a802d54",
	alt_base_layer : "israel_colors",
	alt_map_servers : "http://ymap1.waze.co.il/wms-c/"
//framed_cloud_image_url:"http://www.waze.co.il/test_api/cloud.png"
};

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function find_address_first()
{
	var address = new String(document.addressbox.address.value);
	if (address.trim() == "")
	{
		alert("נא להזין כתובת");
	}
	else
	{
		g_waze_map.find(document.addressbox.address.value,'switch_to_finder',true);
	}
	return false;
}

function switch_to_finder(response)
{
	if (!response[0])
	{
		alert("הכתובת לא נמצאה");
	}
	else
	{
		var first_result = response[0];
		lat = first_result.location.lat;
		lon = first_result.location.lon;
		
	    var catid = document.getElementById('categoryId').value;
	    var keyword = document.getElementById('keyword').value;

	    if (document.addressbox.typeSelector[0].checked)
	    {
	    	var searchParam = '&type=category&categoryId=' + catid;
	    }
	    else
	    {
	    	var searchParam = '&type=search&keyword=' + encodeURI(keyword);
	    }
	    
		location.href="finder.php?address=" + encodeURI(first_result.name) + "&lat=" + lat + "&lon=" + lon + searchParam; 
	}
}


function find_address()
{
	var address = new String(document.addressbox.address.value);
	if (address.trim() == "")
	{
		alert("נא להזין כתובת");
	}
	else
	{
		g_waze_map.find(document.addressbox.address.value,'find_callback',true);
	}
	return false;
}

 
function find_callback(response) {

	if (!response[0])
	{
		alert("הכתובת לא נמצאה");
	}
	else
	{
		var first_result = response[0];
		document.addressbox.address.value=first_result.name;
		initialize_map(first_result.location.lat, first_result.location.lon);
	}
}

function initialize_map(ilat,ilon)
{
	var map = g_waze_map.map;
	
	var oldmarkerslayer = map.getLayersByName("Markers");
	if (oldmarkerslayer[0])
	{
		map.removeLayer(oldmarkerslayer[0]);
	}
	if (popup) popup.destroy();
	
	//var first_result = response[0];

	var lonlat = new OpenLayers.LonLat(ilon,ilat);
	g_waze_map.map.setCenter(lonlat);
	
	// Assign global vars lat/lon
	lat = ilat;
	lon = ilon;

	var size = new OpenLayers.Size(36, 47);
	var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
	var icon = new OpenLayers.Icon('http://www.waze.co.il/images/home.png',
			size, offset);
	
	var markers = new OpenLayers.Layer.Markers("Markers");
	map.addLayer(markers);
	
	markers.addMarker(new OpenLayers.Marker(lonlat, icon));

	
	popup = new OpenLayers.Popup.FramedCloud("test", lonlat, null,
			"<div style='font-family:Arial,sans-serif;font-size:0.8em;'>"
					+ document.addressbox.address.value + "<div>", anchor = null, true, null);
	map.addPopup(popup);
	searchLocationsNear();
}

function searchLocationsNear() {
    var catid = document.getElementById('categoryId').value;
    var keyword = document.getElementById('keyword').value;
    if (document.addressbox.typeSelector[0].checked)
    {
    var searchUrl = 'phpsqlsearch_genxml.php?lat=' + lat + '&lng=' + lon + '&type=category&categoryId=' + catid;
    }
    else
    {
    var searchUrl = 'phpsqlsearch_genxml.php?lat=' + lat + '&lng=' + lon + '&type=search&keyword=' + encodeURI(keyword);
    }
    GDownloadUrl(searchUrl, function(data) {
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName('marker');
      var sidebar = document.getElementById('sidebar');
      sidebar.innerHTML = '';
      if (markers.length == 0) {
        sidebar.innerHTML = 'אין תוצאות';
        return;
      }
  	
      var oldmarkerslayer = g_waze_map.map.getLayersByName("Markers");
	
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute('name');
        var address = '';
        if (markers[i].getAttribute('street')) 
        {
        	address = markers[i].getAttribute('street');
            if (markers[i].getAttribute('house_num') != 0) 
            {
            	address = address + ' ' + markers[i].getAttribute('house_num') + ', ';
            }
            else
            {
            	address = address + ', ';
            }
        }
        address = address + markers[i].getAttribute('city');
        var distance = parseFloat(markers[i].getAttribute('distance'));
        if (oldmarkerslayer[0])
        {
        	
        	var size = new OpenLayers.Size(24, 53);
        	var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
        	var icon = new OpenLayers.Icon('img/marker'+(i+1)+'.png',
        			size, offset);
        	var lonlat = new OpenLayers.LonLat(parseFloat(markers[i].getAttribute('lng')),
        			parseFloat(markers[i].getAttribute('lat')));

        	oldmarkerslayer[0].addMarker(new OpenLayers.Marker(lonlat, icon));
        }
        
        var phones = markers[i].getAttribute('phones');
        
        var sidebarEntry = createSidebarEntry(i+1,lonlat, name, address, distance, phones);
        sidebar.appendChild(sidebarEntry);        
      }
    });
  };
  
  function createSidebarEntry(number, lonlat, name, address, distance, phones) {
      var div = document.createElement('div');
      var html = '<table><tr><td>' + number + ')&nbsp;</td><td><b>' + name + '</b><br/>' + address + ' (' + distance.toFixed(1) + ' ק"מ)</td></tr></table>';
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px';
      
      GEvent.addDomListener(div, 'click', function() {
    	  	g_waze_map.map.removePopup(popup);
    		popup = new OpenLayers.Popup.FramedCloud("popup" + name, lonlat, null,
    				'<div style="font-family:Arial,sans-serif;font-size:0.8em;"><b>' + name + '</b><br/>' + phones + '<br/>' + address + '</div>', anchor = null, true, null);    		
    		g_waze_map.map.addPopup(popup);
    		g_waze_map.map.setCenter(lonlat);
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#AAAAAA';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#f4f4f4';
      });
      return div;
    }




