var result = "";var points = [];var tabs = [];var where_reverse = "";var action_ajax = "/index.php?action_ajax=";function setControlToMap(type, extra) {	if(type == "small") { map.addControl(new GSmallMapControl()); }	else { map.addControl(new GLargeMapControl()); }	if(extra == 1) {		map.addControl(new ExtMapTypeControl({showTraffic: true, showTrafficKey: true}));		map.addMapType(G_PHYSICAL_MAP);		map.addMapType(G_SATELLITE_3D_MAP); 	}	map.addControl(new GScaleControl());	map.addControl(new GHierarchicalMapTypeControl(1));	new GKeyboardHandler(map);	map.enableScrollWheelZoom();	map.enableDoubleClickZoom();	map.enableContinuousZoom();	$("#google_preloader").hide();}//show and center addressfunction showAddress(address, zoom) {	geocoder.getLatLng( address,		function(point) {			if (!point) {				alert(address + " " + notFoundOnMapInfo);			} else {				map.setCenter(point, zoom);			}		}	);}//get all point in actual viewfunction getPointView() {	var bl = bounds.getSouthWest();	var tr = bounds.getNorthEast();		var br = new GLatLng(bl.lat(),tr.lng());  	var tl = new GLatLng(tr.lat(),bl.lng());		//var poly = new GPolygon([tl,tr,br,bl,tl],'#ff0f00',0,0.3,'#ff0f00',0.4);  	//map.addOverlay(poly); }//show marker without center, for center use showAddress()function showMarker(address, text, minZoom, maxZoom, listener) {	geocoder.getLatLng(address, function(point) {		if (!point) {			alert(address + " " + notFoundOnMapInfo);		} else {			var marker = new GMarker(point, {icon: icon});			markerManager.addMarker(marker, minZoom, maxZoom);			markerManager.refresh();			marker.bindInfoWindowHtml(text);			bounds.extend(point);			if(listener != "") {				GEvent.addListener(marker, "click", listener)			}		}	});}//show marker from latlngwithout center, for center use showAddress()function showMarkerLatLng(lat, lng, minZoom, maxZoom, toAjaxID) {	var latpoint = new GLatLng(lat, lng);	var marker = new GMarker(latpoint, {icon: icon});	markerManager.addMarker(marker, minZoom, maxZoom);	marker.bindInfoWindowHtml('<div id="isry_e'+toAjaxID+'">'+loadingElement+'</div>');	bounds.extend(latpoint);	GEvent.addListener(marker, "click", function() {		$("#google_preloader").css({opacity:0.85}).fadeIn("slow").html(loadingElement);		$.post(public_root_path+action_ajax+"loadMarker", { id: toAjaxID}, function(data){			$("#isry_e"+toAjaxID).hide().fadeIn("normal").html(data);			$("#google_preloader").fadeOut("slow");			map.updateInfoWindow(0);		});	});}//refresh markerfunction showMarkerNow() {	markerManager.refresh();}//center and zoom map to all pointfunction centerToAllPoint() {	var newzoom = map.getBoundsZoomLevel(bounds);	var newcenter = bounds.getCenter();	map.setCenter(newcenter, newzoom);}//get user locatefunction getUserLocate() {	if (google.loader.ClientLocation) {		map.setCenter(new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude ), 14);	}}//choice marker with drag and drop, where is for geo resultsfunction showMarkerInEvents(address, text, minZoom, maxZoom, where, clear) {	if(clear == 1) { deleteAllMarker(); }	geocoder.getLatLng(address, function(point) {		if (!point) {			alert(address + " " + notFoundOnMapInfo);		} else {			var marker = new GMarker(point, {draggable: true, bouncy:true, icon: icon});						/*2 hide input to get latitude and position but position from google geocoding reverse			  <input type="text" name="where" id="where" />			  <input type="text" name="where_geo" id="where_geo" />*/			where_reverse = where;			getAdressReverse(marker.getLatLng());						GEvent.addListener(marker, "dragend", function() { 				where_reverse = where;				getAdressReverse(marker.getLatLng());			});			if(clear == 1) {				map.addOverlay(marker);				marker.bindInfoWindowHtml(text);			} else {				markerManager.addMarker(marker, minZoom, maxZoom);				markerManager.refresh();				marker.bindInfoWindowHtml(text);			}		}	});}//create marker with tabsfunction createTabsMarker(marker, labels, htmls) {	var tabs = [];	for (var k=0; k<htmls.length; k++) {		tabs.push(new GInfoWindowTab(labels[k], htmls[k]));	}	marker.bindInfoWindowTabs(tabs);}//download data from XMLfunction downloadDataToMap(from, minZoom, maxZoom) {	GDownloadUrl(from, function(data, responseCode) {		var xml = GXml.parse(data);		var markers = xml.documentElement.getElementsByTagName("marker");		for (var i = 0; i < markers.length; i++) {			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));			var marker = new GMarker(point, {icon: icon});			markerManager.addMarker(marker, minZoom, maxZoom);		}		markerManager.refresh();	});}//delete all listener and overlaysfunction deleteAllMarker() {	map.clearOverlays();}//reverse geocoding to inputfunction getAdressReverse(latlng) { 	if (latlng != null) {		$("#"+where_reverse).val(latlng);		address = latlng; 		geocoder.getLocations(latlng, getDataGeoReverseInfo); 	}}function getDataGeoReverseInfo(response) {	if (!response || response.Status.code != 200) {		$("#"+where_reverse+"_geo").val("");	} else {		place = response.Placemark[0];		$("#"+where_reverse+"_geo").val(place.address);		//alert(<b>orig latlng:</b>' + response.name + '<br/>' + '<b>latlng:</b>' + place.Point.coordinates[0] + "," + place.Point.coordinates[1] + '<br>' + '<b>Status Code:</b>' + response.Status.code + '<br>' + '<b>Status Request:</b>' + response.Status.request + '<br>' + '<b>Address:</b>' + place.address + '<br>' + '<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' + '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);	}}//animate do other adress in mapfunction animateTo(address, shortwait) {	var time = tim;	if (shortwait == 1) { tim += 500; }	else { tim += 3000; }	geocoder.getLatLng(address, function(point) { window.setTimeout(function() { map.panTo(point)},time) });}//draw circle on pointfunction drawCircle(distance){	var point = map.getCenter();	var radiusLat = getRadiusInLat(distance);	var radiusLng = getRadiusInLng(distance);	var circlePoints = [];	with(Math) {		for(var a = 0 ; a < 361 ; a += 10 ) {			var rad = a*(PI/180);			lat = point.lat() + radiusLat * sin(rad) * cos(rad);			circlePoints.push(new GLatLng(lat,lng));		}	}	circleLine = new GPolygon(circlePoints,'#FD942D',4,1,'#FFFF00',0.2);	map.addOverlay(circleLine);}function getRadiusInLat(distance) {	var point = map.getCenter();	var pointTmp = new GLatLng(point.lat()+1,point.lng());	var distanceTmp = point.distanceFrom(pointTmp);	return distance * 1 / distanceTmp;}function getRadiusInLng(distance) {	var point = map.getCenter();	var pointTmp = new GLatLng(point.lat(),point.lng() + 1);	var distanceTmp = point.distanceFrom(pointTmp);	return distance * 1 / distanceTmp;}//create polygon line in mapfunction createPolygon() {	map.addOverlay(new GPolygon(points, '#FD942D', 4, 1, "#FFFF00", 0.2));}//add points to polygonfunction addPoint(address) {	geocoder.getLatLng(address,function (point) {points.push(point)});}//call directions by : makeRoute(Array('pos1', 'pos2', 'pos3'))function makeRoute(waypoints, whereShowResults) {	directions = new Gdirections(map, document.getElementById(whereShowResults));	//GEvent.addListener(directions, "load", onGDirectionsLoad);	GEvent.addListener(directions, "error", onGDirectionsError);	directions.loadFromWaypoints(waypoints);}function onGDirectionsLoad(){	startPoint = directions.getRoute(0).getStep(0).getLatLng();	alert(startPoint);}function onGDirectionsError() {	if(directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {		alert(notFoundOnMapInfo);	} else if(directions.getStatus().code ==G_GEO_SERVER_ERROR) {		alert(serverError);	} else {		alert(unknownError);	}}