var iconHome = new GIcon(); 
iconHome.image = 'http://maps.google.com/mapfiles/kml/pal2/icon10.png';
iconHome.shadow = 'http://maps.google.com/mapfiles/kml/pal2/icon10s.png';
iconHome.iconSize=new GSize(32,32);
iconHome.shadowSize=new GSize(56,32);
iconHome.iconAnchor=new GPoint(16,32);
iconHome.infoWindowAnchor=new GPoint(16,0);

var customIcons = [];
customIcons[1] = iconHome;
var m_arr =[];
var progress = '<img src="/i/loader.gif" alt="обработка">';

var before_drag_lat = "";
var before_drag_lng = "";

function createMarker(marker) {
  var point = new GLatLng(parseFloat(marker.lat), parseFloat(marker.lng));
  var g_marker = new GMarker(point, {icon: customIcons[1], title: marker.title , draggable : (marker.drag==1?true:false)});
  if (marker.drag==1){
      GEvent.addListener(g_marker,"dragstart",function(){
          var latlng = g_marker.getLatLng();          
          before_drag_lat = latlng.y;
          before_drag_lng = latlng.x;
      });  
      GEvent.addListener(g_marker,"dragend",function(){
          var latlng = g_marker.getLatLng(); 
          $.facebox('<div><h1>Изменить положение точки на карте?</h1><div id ="m_event"><input class="btn" type="button" value="Да" onclick="dragMarker('+ marker.id +',' + latlng.y + ',' + latlng.x + ',true);"> <input class="btn" type="button" value="Нет" onclick="dragMarker('+ marker.id +',' + latlng.y + ',' + latlng.x + ',false);"></div></div>');
      });      
  } 
  
  GEvent.addListener(g_marker, 'click', function() {
   	 showPointInfo(marker.id);
  });
	return g_marker;
}



function searchUser()
{
	username = $('#username_id').val();
	$('#search_user_results').html();
	if(username=='')
	{
		$('#search_user_results').html('Укажите имя пользователя<br>');
		return;
	}
	$.getJSON(site_url + '/ajax/map/search/', {username:username}, 
		function(data) {
        if(data.status=='nouser')	{
					$('#search_user_results').html('Пользователь <b>'+username+'</b> не найден<br>');
					return;
				}
	      if(data.status=='nomap')	{
					$('#search_user_results').html('Пользователь <b>'+username+'</b> ещё не указал свой дом на карте<br>');
					return;
				}
				if(data.status=='ok')	{
					$('#search_user_results').html('');
					addMarkers(data.new_markers);
					zoomTo(data.id, 13);
					m_arr[data.id]['marker'].openInfoWindowHtml(data.about);
				}
  	});	  
}


function loadMarkers(){
		bounds = map.getBounds();
		sw = bounds.getSouthWest();
		ne = bounds.getNorthEast();
		url = '/ajax/map/getmarkers?';
		url += 'left='+sw.x;
		url += '&bottom='+sw.y;
		url += '&top='+ne.y;
		url += '&right='+ne.x;
		url += '&zoom='+map.getZoom();
		url += '&rnd='+maps_rnd;
    $.getJSON(url, function(data) {
		
//				m_arr = [];
//				map.clearOverlays();
				
        addMarkers(data['markers']);
				if(show_point_after_load!=0)
				{
					showPointInfo(show_point_after_load);
					show_point_after_load=0;
				}
    });
}

function addMarkers(markers){
      for (var i = 0; i < markers.length; i++) {
				if(!m_arr[markers[i].id])
				{
	        var marker = createMarker(markers[i]);
	        var arr = [];
	        arr["marker"] = marker;
	        arr["marker_"] = markers[i];
	        m_arr[markers[i].id] = arr;
	        map.addOverlay(marker);
				}
      }    
}

function delMarkers(markers){
      for (var j = 0; j < markers.length; j++) {
          map.removeOverlay(m_arr[markers[j].id]);
          m_arr[markers[j].id]["marker"].closeInfoWindow();
          m_arr[markers[j].id]["marker"].remove();
					delete m_arr[markers[j].id];
      }    
}


function deleteForm(id){
    $.facebox('<div><h1>Удалить точку с карты?</h1><div id ="m_event"><input type="button" value="Да" onclick="deleteMarker('+ id +',true);"> <input class="btn" type="button" value="Нет" onclick="deleteMarker('+ id +',false);"></div></div>'); 
    return false;   
}


function setMapUrl(){
    var latlng = map.getCenter();          
    var url = site_url + "/map/" + "?c_lat=" + latlng.y + "&c_lng=" + latlng.x + "&c_zoom=" + map.getZoom();
    $("#map_url").val(url);
		
		loadMarkers();
}

function showPointInfo(id)
{
	g_marker = m_arr[id]["marker"];
	$.get('/ajax/map/getinfo/'+id, function(data) {
        g_marker.openInfoWindowHtml(data);
    });	  
}

function toPoint(id,lat,lng,zoom){
		show_point_after_load=id;
		if(m_arr[id])
		{
			map.setCenter(m_arr[id]["marker"].getLatLng(), zoom);
		}
		else
		{
    	map.setCenter(new GLatLng(lat,lng),zoom);
		}
    return false;
}

function zoomTo(id,new_zoom)
{
	if(new_zoom==undefined)
	{
		new_zoom = map.getZoom() + 5;
		if(new_zoom>17) new_zoom=17;
	}
	
	marker = m_arr[id]["marker"];
	marker.closeInfoWindow();
	map.setCenter(marker.getLatLng(), new_zoom);
  return false;
}

function deleteInit(id)
{
	$.facebox('<div><h1>Удалить точку с карты?</h1><div id ="m_event"><input class="btn" type="button" value="Да" onclick="deleteMarker('+ id +',true);"> <input class="btn" type="button" value="Нет" onclick="dragMarker('+ id +',false);"></div></div>');
}

function deleteMarker(id,m_event){
    if (m_event){        
			$("#m_event").html(progress);
      $.getJSON(site_url + "/ajax/map/delete/" + id + "/", function(data) {
                $("#m_event").html(data.text);
                if (data.del_markers!="") delMarkers(data.del_markers);
      });
    }else{
        $.facebox.close();
    }
}

function dragMarker(id,lat_,lng_,drag){
    if (drag){
		    $("#m_event").html(progress);
        $.post(site_url + "/ajax/map/move/",{drag_id : id, lng : lng_, lat : lat_, zoom: map.getZoom()},function(data){
            $("#m_event").html(data);
        });
    }else{
        var point = new GLatLng(parseFloat(before_drag_lat), parseFloat(before_drag_lng));
        m_arr[id]["marker"].closeInfoWindow();
        m_arr[id]["marker"].setPoint(point);
        $.facebox.close();        
    }
    return false;   
}

