    var iconBlue = new GIcon(); 
    iconBlue.image = 'http://maps.google.com/mapfiles/kml/pal2/icon10.png';
    iconBlue.shadow = 'http://maps.google.com/mapfiles/kml/pal2/icon10s.png';
   iconBlue.iconSize=new GSize(32,32);
   iconBlue.shadowSize=new GSize(56,32);
   iconBlue.iconAnchor=new GPoint(16,32);
   iconBlue.infoWindowAnchor=new GPoint(16,0);

    var iconRed = new GIcon(); 
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconRed.iconSize = new GSize(12, 20);
    iconRed.shadowSize = new GSize(22, 20);
    iconRed.iconAnchor = new GPoint(6, 20);
    iconRed.infoWindowAnchor = new GPoint(5, 1);

    var customIcons = [];
    customIcons[1] = iconBlue;
    customIcons[2] = iconRed;
    var m_arr =[];

var before_drag_lat = "";
var before_drag_lng = "";
var load_types = [];
var pre_overlay = [];

function createMarker(marker) {
  var point = new GLatLng(parseFloat(marker.lat), parseFloat(marker.lng));
  var g_marker = new GMarker(point, {icon: customIcons[marker.type], title: marker.title , draggable : marker.draggable});
  if (marker.draggable){
      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 type="button" value="Да" onclick="dragMarker('+ marker.id +',' + latlng.y + ',' + latlng.x + ',true);"> <input type="button" value="Нет" onclick="dragMarker('+ marker.id +',' + latlng.y + ',' + latlng.x + ',false);"></div></div>');
          //dragMarker(marker.id, g_marker);
      });      
  } 
  var html = "<strong>" + marker.name + "</strong> <br/>" + marker.about;
  GEvent.addListener(g_marker, 'click', function() {
    g_marker.openInfoWindowHtml(html);
  });
  return g_marker;
}

function addMarkers(markers){
      for (var i = 0; i < markers.marker.length; i++) {
        var marker = createMarker(markers.marker[i]);
        var arr = [];
        arr["marker"] = marker;
        arr["marker_"] = markers.marker[i];
        m_arr[markers.marker[i].id] = arr;
        //map.addOverlay(marker);
        pre_overlay[pre_overlay.length] = markers.marker[i].id;
      }    
}

function overlayMarkers(){
    //return;
      for (var i = 0; i < pre_overlay.length; i++) {
        map.addOverlay(m_arr[pre_overlay[i]]["marker"]);
      }
      pre_overlay = [];     
}

function addTypes(types){
      for (var i = 0; i < types.length; i++) {
        load_types[types[i].id] = true;
      }        
}


function delMarkers(markers){
      for (var j = 0; j < markers.marker.length; j++) {
                map.removeOverlay(m_arr[markers.marker[j].id]);
                m_arr[markers.marker[j].id]["marker"].closeInfoWindow();
                m_arr[markers.marker[j].id]["marker"].remove();
      }    
}

function deleteForm(id){
    $.facebox('<div><h1>Удалить точку с карты?</h1><div id ="m_event"><input type="button" value="Да" onclick="deleteMarker('+ id +',true);"> <input type="button" value="Нет" onclick="deleteMarker('+ id +',false);"></div></div>'); 
    return false;   
}


function  showType(type,check){
      if (load_types[type]!=undefined){
          $.each(m_arr, function (i, n){
             if (n != undefined){
                 if (n["marker_"].type == type){
                     if (check.checked){
                        n["marker"].show(); 
                     }else{
                        n["marker"].hide();
                     }   
                 }
             }
          });
      }else{
          loadMarkers(site_url + "/maps/getMarkers/?type=" + type);
      }
}

function setSize(check){
     if (check.checked ){
        $("#map").css("width","600").css("height","500");
        $.cookie('size', 1,365); 
     }else{
        $("#map").css("width","400").css("height","300");
        $.cookie('size', 0,365);  
     }
     map.checkResize();      
}

function setMapUrl(){
    var latlng = map.getCenter();          

    var url = site_url + "/maps/" + "?c_lat=" + latlng.y + "&c_lng=" + latlng.x + "&c_zoom=" + map.getZoom();

    $("#map_url").val(url);
}

function saveMap(){
    var latlng = map.getCenter();     
    $.cookie('lng',latlng.x,365);
    $.cookie('lat',latlng.y,365);
    $.cookie('zoom',map.getZoom(),365);
    $("#save_map_modify").html('<a href="/maps/?c_lat='+$.cookie("lat")+'&c_lng='+$.cookie("lng")+'&c_zoom='+$.cookie("zoom")+'" onclick="return toPoint('+$.cookie("lat")+','+$.cookie("lng")+','+$.cookie("zoom")+');" class="ajax">[сохранено]</a> <a href="" onclick="return unsaveMap();" title="удалить из памяти"><img src="/images/close.gif" alt="удалить из памяти" /></a>');    
    return false;
}

function unsaveMap(){
    $.cookie('lng',null);
    $.cookie('lng',null);
    $.cookie('zoom',null);
    $("#save_map_modify").html('');
    return false;
}

function toPoint(lat,lng,zoom){
    map.setCenter(new GLatLng(lat,lng),zoom);
    return false;
}

function searchUser(name){
    if (name!=""){
      $("#search_result").html(progress);
      name = name.toLocaleLowerCase();
      var title;
      var search;
      var new_search = "";
      for (var j = 0; j <  m_arr.length; j++) {
        if (m_arr[j]!=undefined){
            title = m_arr[j]["marker_"].title;
            search = title.toLocaleLowerCase();
            if (search.indexOf(name)!=-1){
                new_search += '<div style="padding-top:3px;"><a href="/maps/?c_lat=' + m_arr[j]["marker_"].lat + '&c_lng=' + m_arr[j]["marker_"].lng + '&c_zoom='+ m_arr[j]["marker_"].zoom +'" class="ajax" onclick="return toPoint('+ m_arr[j]["marker_"].lat +',' + m_arr[j]["marker_"].lng +',' + m_arr[j]["marker_"].zoom +');">' + title +'</a></div>';
            }
        }
      }
      $("#search_result").html(new_search!="" ? new_search : "По вашему запросу ничего не найдено");          
    }
}

//=======================

function loadMarkers(url){
    $.getJSON(url, function(data) {
        if (data.markers!="") addMarkers(data.markers);
        overlayMarkers();
        if (data.load_types!="") addTypes(data.load_types);
    });
}

function deleteMarker(id,m_event){
    $("#m_event").html(progress);
    if (m_event){        
        $.getJSON(site_url + "/maps/deleteMarker/" + 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){
    $("#m_event").html(progress);
    if (drag){
        $.post(site_url + "/maps/dragMarker/",{drag_id : id, lng : lng_, lat : lat_, zoom: map.getZoom()},function(data){
            if (data!="cool"){
                $("#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;   
}

