GoogleMaps = { 'maps'   : {} };

GoogleMaps.init = function (apiKey){
	Event.observe(document, "dom:loaded", function (){
		Element.getElementsBySelector(document, '.google_map').each( function (element){
			GoogleMaps.addMap(element);
		} );
	} );
}

GoogleMaps.addMap = function (element){
	var entry = {
		'lat'      : parseFloat(element.readAttribute('poslat')),
		'lng'      : parseFloat(element.readAttribute('poslng')),
		'scale'    : parseFloat(element.readAttribute('scale')),
		'html'     : element.innerHTML,
		'element'  : element,
		'closeBtn' : null
	}
	if (entry.lat != 0 && entry.lng != 0 && entry.scale != 0){
		var id = element.id;
		var CB = document.createElement('A');
		CB.href = "javascript:GoogleMaps.showMap('"+id+"')";
		CB.innerHTML = "Close";
		CB.style.color = '#000000';
		CB.style.backgroundColor = '#FFFFFF';
		CB.style.padding = '3px';
		CB.style.zIndex = '99999';
		CB.style.position = 'absolute';
		CB.style.right = '10px';
		CB.style.bottom = '10px';
		entry.closeBtn = CB;

		entry.pos = new GLatLng(entry.lat, entry.lng);
		entry.marker = new GMarker(entry.pos);
		entry.marker.openInfoWindowHtml(entry.html);

		this.maps[id] = entry;
		this.showMap(id);
	}
}

GoogleMaps.showMap = function (id){
	var map = new GMap2(this.maps[id].element);
	map.setCenter(this.maps[id].pos, this.maps[id].scale);
	map.addControl(new GSmallMapControl());
	map.addOverlay(this.maps[id].marker);
}

GoogleMaps.showStreet = function (id){
	new GStreetviewPanorama(this.maps[id].element, { 'latlng' : new GLatLng(this.maps[id].lat, this.maps[id].lng) });
	this.maps[id].element.appendChild(this.maps[id].closeBtn);
}