 	var map;
 	var center;
    var clusterer;
    var mgr;
	var marker;
	var win_url = [];
	var markersArray = [];
	var titleArray = [];
//	var marker_out = [];
    var len = 0;
    var ctrl = 0;
    var count_marker;
    var pos_x;
    var pos_y;
    var glob;
    var zoom;
    var markeredition;
    var maintype = 0;
    function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        if(zoom>0){
        map.setCenter(new GLatLng(pos_x, pos_y), zoom);
        }else{        map.setCenter(new GLatLng(32, 19), 2);        }
        geocoder = new GClientGeocoder();
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
		doLoadIn('"'+map.getBounds()+'"',map.getZoom());
//moveend zoomend

GEvent.addListener(map, "moveend", function() {			size = '"'+map.getBounds()+'"';
			zoom = map.getZoom();
			doLoad(size,zoom);
});
GEvent.addListener(map, "zoomend", function() {
			size = '"'+map.getBounds()+'"';
			zoom = map.getZoom();
			doLoad(size,zoom);
});

      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " не найден");
            } else {
              map.setCenter(point, 13);
            }
          }
        );
      }
    }

	function AddMarker(x,y,i,type){
		var name = win_name[i];
		var desc = win_desc[i];
		var tags = win_tags[i];
		var url = win_url[i];
				var blueIcon = new GIcon(G_DEFAULT_ICON);
		        blueIcon.image = "http://ww-video.ru/Videos-icon-32x32.png";
		        if(type==1){
		        	blueIcon.image = "http://ww-video.ru/foto-icon-32x32.png";
			        blueIcon.shadow = false;
				    blueIcon.infoWindowAnchor = new GPoint(15, 5);
				    blueIcon.iconSize = new GSize(32, 32);
				    blueIcon.iconAnchor = new GPoint(15,30);
		        }else{
          		    blueIcon.image = "http://ww-video.ru/Videos-icon-32x32.png";			        blueIcon.shadow = false;
				    blueIcon.infoWindowAnchor = new GPoint(15, 5);
				    blueIcon.iconSize = new GSize(32, 32);
				    blueIcon.iconAnchor = new GPoint(15,30);
		        }


				marker = new GMarker(new GLatLng(x,y), {draggable: false, icon:blueIcon, title:'<a href="'+url+'">'+name+'</a>'});
			GEvent.addListener(marker, "click", function() {
				if(glob==1){
				text = '<div style="width: 300px;height:100px; overflow:auto">';				}else{				text = '<div style="width: 220px;height:100px; overflow:auto">';				}
				//	text = '<div style="width: 220px;height:100px; overflow:auto">';
			        if(name.length >0){
					text +=  '<a href="'+url+'">'+name+'</a><br>';
					}

					if(desc.length >0){
					desc = desc.replace(/[\r]/g, '<br>');
					text +=  desc+'<br>';
					}
					if(tags.length >0){
					text +=  '<b>Тэги:</b> '+tags;
					}
					text += '</div>';
			        this.openInfoWindowHtml(text);
			});
	}

function control_marker(url){	ctrl = 1;
    for(j=0;j<win_url.length;j++){
       if(win_url[j] == url){ ctrl = 0; }
    }
}
function AddMainMarker(x,y,zoom){
		var name = win_name[i];
		var desc = win_desc[i];
		var tags = win_tags[i];

			var marker = new GMarker(new GLatLng(x,y), {draggable: false, icon:blueIcon});
			GEvent.addListener(marker, "click", function() {
				infoMarker();
			});
			function infoMarker(){
					text = '<div style="width: 220px;height:100px; overflow:auto">';
			        if(name.length >0){
					text +=  '<font>'+name+'</font><br>';
					}
					if(desc.length >0){
					desc = desc.replace(/[\r]/g, '<br>');
					text +=  desc+'<br>';
					}
					if(tags.length >0){
					text +=  '<b>Тэги:</b> '+tags;
					}
					text += '</div>';
			        marker.openInfoWindowHtml(text);
			}

			map.addOverlay(marker);
			infoMarker();
}
function doLoad(size,zoom){
    var req = new JsHttpRequest();
    // Code automatically called on load finishing.
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
        var markersArrayTwo = [];
            // Write result to page element (_RESULT become responseJS).
            var marker_out = req.responseJS.marker_out;
            var marker_cnt = req.responseJS.count;
           if((marker_cnt>0)&&(marker_out!=null)){
             count_marker = len;
             if(count_marker<1)count_marker=0;
             for(i=0;i<marker_out.length;i++){
               control_marker(marker_out[i].url);
	           if(ctrl>0){	                if(marker_out[i]!=null){			 			marker_x[count_marker] = marker_out[i].x;
						marker_y[count_marker] = marker_out[i].y;
						win_name[count_marker] = marker_out[i].name;
						win_desc[count_marker] = marker_out[i].desc;
						win_tags[count_marker] = marker_out[i].tags;
						win_url[count_marker] = marker_out[i].url;

						AddMarker(marker_x[count_marker],marker_y[count_marker],count_marker,marker_out[i].type);
						len = len+1;

						markersArrayTwo.push(marker);
						count_marker = count_marker+1;
					}
				ctrl=0;
	             }
             }

		}
                    if(markersArrayTwo.length>0){
						cluster.addMarkers(markersArrayTwo);
						cluster.fitMapToMarkers();
					}
		////...Error control panel.../////
		//document.getElementById("control").innerHTML = 'marker.length='+marker.length+' | marker_out.length='+marker_out.length+' | markersArrayTwo.length='+markersArrayTwo.length;
        //END...Error control panel...///
			cntr = req.responseJS.control;
           }
        }
    // Prepare request object (automatically choose GET or POST).
    req.open(null, 'ajax_maps.php', true);
    // Send data to backend.
    req.send( { size: size, zoom: zoom } );
}

function doLoadIn(size,zoom){
    var req = new JsHttpRequest();
    // Code automatically called on load finishing.
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            // Write result to page element (_RESULT become responseJS).
            var marker_out = req.responseJS.marker_out;
            var marker_cnt = req.responseJS.count;
           if((marker_cnt>0)&&(marker_out!=null)){
             count_marker = len;
             if(count_marker<1)count_marker=0;
             for(i=0;i<marker_out.length;i++){
               control_marker(marker_out[i].url);
	           if(ctrl>0){
	                if(marker_out[i]!=null){
			 			marker_x[count_marker] = marker_out[i].x;
						marker_y[count_marker] = marker_out[i].y;
						win_name[count_marker] = marker_out[i].name;
						win_desc[count_marker] = marker_out[i].desc;
						win_tags[count_marker] = marker_out[i].tags;
						win_url[count_marker] = marker_out[i].url;
						AddMarker(marker_x[count_marker],marker_y[count_marker],count_marker,marker_out[i].type);
             			len = len+1;
						markersArray.push(marker);
						count_marker = count_marker+1;
					}
				ctrl=0;
	             }
             }
		}
			if(markersArray.length>0){
		cluster=new ClusterMarker(map, { markers:markersArray } );
		cluster.fitMapToMarkers();
			}else{		cluster=new ClusterMarker(map, { } );
		cluster.fitMapToMarkers();
			}
		cntr = req.responseJS.control;
    	}

    }
    // Prepare request object (automatically choose GET or POST).
    req.open(null, 'ajax_maps.php', true);
    // Send data to backend.
    req.send( { size: size, zoom: zoom } );

}
/////
	function AddOneMarker() {
		if(markeredition==null){
			var location = map.getCenter();
				var blueIcon = new GIcon(G_DEFAULT_ICON);
				if((document.getElementById('type_id')!=null)&&(document.getElementById('type_id').value==1)){
			        blueIcon.image = "http://ww-video.ru/foto-icon-32x32.png";
			 		blueIcon.shadow = false;
				    blueIcon.infoWindowAnchor = new GPoint(15, 5);
				    blueIcon.iconSize = new GSize(32, 32);
				    blueIcon.iconAnchor = new GPoint(15,30);
		        }else{
			        blueIcon.image = "http://ww-video.ru/Videos-icon-32x32.png";
			        blueIcon.shadow = false;
				    blueIcon.infoWindowAnchor = new GPoint(15, 5);
				    blueIcon.iconSize = new GSize(32, 32);
				    blueIcon.iconAnchor = new GPoint(15,30);
                }
			markeredition = new GMarker(location, {draggable: true, icon:blueIcon});

			GEvent.addListener(markeredition, "dragstart", function() {
	          window.map.closeInfoWindow();
	          UpdateValue();
	        });
	        GEvent.addListener(markeredition, "dragstart", function() {
	          map.closeInfoWindow();
	          UpdateValue();
	        });
			GEvent.addListener(markeredition, "click", function() {
			  UpdateInfo();
			  UpdateValue();
			});
	        GEvent.addListener(markeredition, "dragend", function() {
			  var loc = markeredition.getLatLng();
	          UpdateInfo();
	          UpdateValue();
	        });
	        map.addOverlay(markeredition);

		UpdateInfo();
		UpdateValue();
		document.getElementById('add').disabled = true;
		document.getElementById('del').disabled = false;

		}else{
			return false;
        }
	}
	function DelMarker() {
		if(markeredition==null){
		}else{
		markeredition.remove();
		markeredition=null;
		}
		document.getElementById('marker_id').value = '';
		document.getElementById('add').disabled = false;
		document.getElementById('del').disabled = true;
	}
	function UpdateInfo(){
		if(markeredition==null){
		}else{
			text = '<div style="width: 220px;height:100px; overflow:auto">';
			if(document.getElementById('upload_media_title_id')!=null){
			var name = document.getElementById('upload_media_title_id').value;
			var desc = document.getElementById('upload_media_description_id').value;
			var tags = document.getElementById('upload_media_tags_id').value;
            }else{
			var name = document.getElementById('media_title_id').value;
			var desc = document.getElementById('media_desc_id').value;
			var tags = document.getElementById('media_tags_id').value;
            }
			if(name.length >0){
			text +=  '<font>'+name+'</font><br>';
			}
			if(desc.length >0){
		     desc = desc.replace(/[\r]/g, '<br>');
			 text +=  desc+'<br>';
			}
			if(tags.length >0){
			text +=  '<b>Тэги:</b> '+tags;
			}
			text += '</div>';
	        markeredition.openInfoWindowHtml(text);
		}
	}
	function UpdateValue(){
		var location = map.getCenter();
		document.getElementById('center_id').value = location;
		if(markeredition==null){
		}else{
		var loc = markeredition.getLatLng();
		document.getElementById('marker_id').value = loc.toString();
		}
	}