function changeZoom(zoom)
{
//	map.setZoom(zoom);
//	так как задокументированный map.setZoom(zoom) НЕ РАБОТАЕТ сделаем через ...

	while ( map.getZoom() < zoom )
		map.zoomIn();
	while ( map.getZoom() > zoom )
		map.zoomOut();
	mode['zoom'] = zoom;
}

/**
	change mode['type']
	select needed option
	show needed control-moveto
	refresh overlays from var objects
*/
function changeModeType(type)
{
	if ($('#show-list a#control-show-'+type).attr('disabled') != true)
	{
		$('#show-list a').removeClass();
		$('#show-list a#control-show-'+type).addClass('current');
		
		window.document.getElementById('control-moveto-' + (mode['type'] == 0 ? 1 : mode['type']) ).style.display = "none";
		mode['type'] = type;
		window.document.getElementById('control-moveto-' + (mode['type'] == 0 ? 1 : mode['type']) ).style.display = "";
		
		map.clearOverlays();
		map.addOverlays(objects);	
	}
}

function controlAdd(type)
{
	switch (type)
	{
		// участок
		case 0:
		case 1:
		case 2:
		case 4:
		
			changeModeType(type);
			$('#show-list a').attr('disabled', 'true');
			
			generatePoly();
			
			//$('#add-panel-field').css('display', 'block'); 
			$('#editmodeControl').css('display', 'block'); 
		
			break;
		// место
		case 3:
		
			changeModeType(type);
			generateMarker();
			
			$('#show-list a').attr('disabled', 'true');
			//$('#add-panel-field').css('display', 'block'); 
			$('#editmodeControl').css('display', 'block'); 
		
			break;
	}
	
	switch (type)
	{
		case 0:
			$('#add-title').html("официальный особоопасный участок");
			break;
		case 1:
			$('#add-title').html("официальный опасный участок");
			break;
		case 2:
			$('#add-title').html("опасный участок");
			break;
		case 3:
			$('#add-title').html("место аварии");
			break;
		case 4:
			$('#add-title').html("участок плохой дороги");
			break;
	}
	$('#add-list').css('display', 'none');
	
}

function controlAddCancel()
{
	removePoly(); 
	removeMarker(); 
	$('#show-list a').removeAttr('disabled');
	
	//$('#add-panel-field').css('display', 'none'); 
	$('#editmodeControl').css('display', 'none'); 
	$('#add-title').html("");
	$('#add-list').css('display', '');
}

function controlAddSave()
{
	if ($('#add-panel-field').css('display')!='block')
	{
		if (mode['type']==3)
		{
			newMarker.openInfoWindowHtml('<div id="add-panel-field"><form name="add">Название объекта / Адрес:<br /><input type="text" name="title" value="" style="width:100%" /><br />Описание: <br /><textarea rows="5" name="html" style="width:100%"></textarea><br />Ваше имя:<br /><input type="text" name="author" value="" maxlength="64" style="width:100%" /><br /><button style="display: block" onclick="controlAddSave(); return false;">Сохранить пометку</button><br /></form></div>', {maxWidth:300, noCloseOnClick:true});
		}
		else
		{
			var vertex = undefined;
			var mid_lat = 0;
			var mid_lng = 0;
		
			for (var i=1; i<user_poly.getVertexCount(); i++)
			{
				vertex = user_poly.getVertex(i);
				mid_lat+= vertex.lat()
				mid_lng+= vertex.lng()
			}
			mid_lat = mid_lat / (user_poly.getVertexCount() - 1);
			mid_lng = mid_lng / (user_poly.getVertexCount() - 1);
			
			midMarker = new GMarker(new GLatLng(mid_lat, mid_lng), {icon:icon[mode['type']]});
			map.addOverlay( midMarker );
			midMarker.openInfoWindowHtml('<div id="add-panel-field"><form name="add">Название объекта / Адрес:<br /><input type="text" name="title" value="" style="width:100%" /><br />Описание: <br /><textarea rows="5" name="html" style="width:100%"></textarea><br />Ваше имя:<br /><input type="text" name="author" value="" maxlength="64" style="width:100%" /><br /><button style="display: block" onclick="controlAddSave(); return false;">Сохранить пометку</button><br /></form></div>', {maxWidth:300, noCloseOnClick:true});
		    GEvent.addListener(midMarker, "infowindowclose", function() {
				map.removeOverlay(midMarker);
				midMarker = undefined;
		    });
		}
	}
	else
	{
		savePoly();
		saveMarker(); 
		controlRegenerateMoveto();
		//update layout on map
		changeModeType(mode['type']);
		
		$('#show-list a').removeAttr('disabled');
		//$('#add-panel-field').css('display', 'none');
		$('#editmodeControl').css('display', 'none');
		$('#add-title').html("");
		$('#add-list').css('display', '');
	}
}

function controlRegenerateMoveto()
{
	var moveto = "";

	for(var j=1; j<5; j++)
	{
		moveto = moveto + "<ul id=\"control-moveto-"+j+"\" style=\"display: none\">";
		for(i=0; i<objects.length; i++) {
			if (objects[i].type == j)
				moveto = moveto + '<li><a href="javascript:void(0);" onclick=\"showObject('+i+'); return false;\">'+objects[i].title+'</a></li>';
		}
		moveto = moveto + "</ul>";
	}
	
	$("#control-moveto").html(moveto);
}

function controlUpdateData()
{
	$.getScript("http://www.forpo.ru/maps/ajax.php?ajax=get_all_objects", function(){
		map.addOverlays(objects);
		controlRegenerateMoveto();
		changeModeType(mode['type']);
	});
}



function updateCounters(c1, c2, c3, c4)
{
	$('#count_objects_1').html('('+c1+')');
	$('#count_objects_2').html('('+c2+')');
	$('#count_objects_3').html('('+c3+')');
	$('#count_objects_4').html('('+c4+')');
}

