/**
 * Конструктор класса Map()
 */

function Map(text, id)
{
	this.map = null;
	this.markerList = null;
	this.lat = null;
	this.lng = null;
	this.id = id;
	
	//alert(text);
	if (typeof text === 'string')
	{
		this.search(text);
	}
	this.bild();
}

Map.prototype.bild = function()
{
	this.map = new GMap2(document.getElementById(this.id));
	this.map.setCenter(new GLatLng(37.4419, -122.1419), 1);
	this.map.addControl(new GSmallMapControl());
	this.map.addControl(new GMapTypeControl());
	
	if (this.markerList)
	{
		for (var i = 0; i < this.markerList.length; i++)
		{
			this.map.addOverlay(this.markerList[i]);
			this.map.setCenter(new GLatLng(this.lat, this.lng), 15);
		}
	}
}

Map.prototype.search = function(text)
{
	if (text)
	{
		var searchControl = new google.search.SearchControl();
		searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
		//searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
		
		var localSearch = new google.search.LocalSearch();
		localSearch.setAddressLookupMode(google.search.LocalSearch.ADDRESS_LOOKUP_ENABLED);
		localSearch.setCenterPoint("CH");
		
		var options = new google.search.SearcherOptions();
		options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
		
		searchControl.addSearcher(localSearch, options);
		
		var drawOptions = new google.search.DrawOptions();
		drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_LINEAR);
		
		searchControl.draw(null/*document.getElementById("search")*/, drawOptions);
		searchControl.setSearchCompleteCallback(this, function()
				{
					if (localSearch.results.length > 0)
					{
						this.markerList = new Array();
						for(var i=0; i < localSearch.results.length; i++)
						{
							var result = localSearch.results[i];
							this.markerList.push(this.createMarker(result));
						}
						this.bild();
					}
				});
		searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING); 
		searchControl.execute(text);
	}
}

Map.prototype.createMarker = function(markerObject)
{
	/*
	for (i in markerObject)
	{
		console.log(i +' = '+markerObject[i]);
	}
	console.log('-----------------------------');*/
	
	var tinyIcon = new GIcon();
	tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	tinyIcon.iconSize = new GSize(12, 20);
	tinyIcon.shadowSize = new GSize(22, 20);
	tinyIcon.iconAnchor = new GPoint(6, 20);
	tinyIcon.infoWindowAnchor = new GPoint(5, 1);
	
	markerOptions = { icon:tinyIcon };
	this.lat = parseFloat(markerObject.lat);
	this.lng = parseFloat(markerObject.lng);
	
	var point = new GLatLng(parseFloat(markerObject.lat), parseFloat(markerObject.lng));
	var marker = new GMarker(point, markerOptions);
	
	var htmlNode = markerObject.html.cloneNode(true);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindow(htmlNode)
		//marker.openInfoWindowHtml("Marker <b>Что-то пишем своё )))</b>");
	  });
	
	return marker;
}





























