
var map = null;
var geocoder = null;
var locationsLat = new Array();
var locationsLng = new Array();
var $control;
function initializeGoogleMap() {

  if (GBrowserIsCompatible()) {
	map = new GMap2(document.getElementById("googleMap"));
	map.setCenter(new GLatLng(52.31, 13.25), 3);
	geocoder = new GClientGeocoder();
	//map.enableScrollWheelZoom();
	$control = new GSmallMapControl();
	map.addControl($control);
	//map.addControl(new GMapTypeControl());
  }
}

function setMapControl(switcher) {
	if(switcher == 1) {
		map.addControl($control);
	} else {
		map.removeControl($control);
	}
}


function showGoogleMapAddress(address, size, marker1, contact1) {
	
  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) {
		if (!point) {
		  //alert(address + " not found");
		  //map.setCenter((0,0),2);
		} else {
			map.setCenter(point, size);
			if(marker1) {
				var marker = new GMarker(point);
				if(contact1) {
					map.openInfoWindowHtml(map.getCenter(),
	                   contact1);
					GEvent.addListener(marker, "click", function()
 {marker.openInfoWindowHtml(contact1)});
					
				}
				map.addOverlay(marker);
			}
			//map.setZoom(14);
			
		  //marker.openInfoWindowHtml(address);
		}
	  }
	);
  }
}

function showGoogleMapAddress2(gmlat, gmlng, size, marker1, contact1) {
	var point = new GLatLng(gmlat, gmlng);
  
	map.setCenter(point, size);
	if(marker1) {
		var marker = new GMarker(point);
		if(contact1) {
			map.openInfoWindowHtml(map.getCenter(),
			   contact1);
			GEvent.addListener(marker, "click", function()
{marker.openInfoWindowHtml(contact1)});
			
		}
		map.addOverlay(marker);
	}
}




function gmapsAddMarker(address, clickAddress) {
	geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {

			} else {
				var marker = new GMarker(point);
				if(clickAddress) {
					GEvent.addListener(marker, "click", function() { 
						window.location.href = clickAddress;
					});
				}
				map.addOverlay(marker);
			}
		}
	);
}






function gmapsAddMarker2(clickAddress, gmlat, gmlng, markerStyle) {
	var point = new GLatLng(gmlat, gmlng);
	
	locationsLat.push(gmlat);
	locationsLng.push(gmlng);
		
	if (point) {
		
		//map.setCenter(point,20);
		
		if(markerStyle) {
			var theIcon = new GIcon(G_DEFAULT_ICON);
			if(markerStyle == 'num1') {
				theIcon.image = "/static/img/gmaps/marker_1.png";
				theIcon.iconSize = new GSize(30, 37);
			} else if (markerStyle == 'num2') {
				theIcon.image = "/static/img/gmaps/marker_2.png";
				theIcon.iconSize = new GSize(30, 37);
			} else if (markerStyle == 'num3') {
				theIcon.image = "/static/img/gmaps/marker_3.png";
				theIcon.iconSize = new GSize(30, 37);
			} else if (markerStyle) {
				theIcon.image = "/static/img/pushpin.png";     
			}
			markerOptions = { icon:theIcon };
			var marker = new GMarker(point, markerOptions);
		} else {
			var marker = new GMarker(point);
		}
		
		if(clickAddress) {
			GEvent.addListener(marker, "click", function() { 
				window.location.href = clickAddress;
			});
		}
		
		map.addOverlay(marker);
	}
}



function gmapsAddMarker3(clickAddress, gmlat, gmlng, htmlsrc) {
	var point = new GLatLng(gmlat, gmlng);
	
	locationsLat.push(gmlat);
	locationsLng.push(gmlng);
		
	if (point) {
		
		var marker = new GMarker(point);
		
		if(clickAddress) {
			GEvent.addListener(marker, "click", function() { 
				window.location.href = clickAddress;
			});			
		}
		
		var tooltip = new Tooltip(marker, htmlsrc, 4); 
		marker.tooltip = tooltip; 
		
		map.addOverlay(marker);
		map.addOverlay(tooltip); 
		
		GEvent.addListener(marker,'mouseover',function(){ this.tooltip.show(); }); GEvent.addListener(marker,'mouseout',function(){ this.tooltip.hide(); });
		
		
		
	}
}




/**

 * @param {Object} e A JSON Object literal representing a DOM node and optionally,

 * its children

 * @return {HTMLElement}

 */

function jsonToDom(e){

	if(null != e.txt) return document.createTextNode(e.txt);

	if(null == e.el) return null;

	var node = document.createElement(e.el.toUpperCase());

	if(null != e.att){

		for(var i in e.att){

			if(IS_IE){		

				node = applyAttribute(node,i,e.att[i]);

			}else{

				applyAttribute(node,i,e.att[i]);

			}

		}

	}

	if(null != e.ch){

		for(var j in e.ch){

			var childNode = jsonToDom(e.ch[j]);

			if(null !== childNode) node.appendChild(childNode);

		}

	}

	return node;

}





function zoomShowAll(minZoom, maxZoom) {
	
    bounds = new GLatLngBounds();
    //map.setCenter(new GLatLng(50,20),1);
   
	for(i=0; i<locationsLat.length; i++) {
        bounds.extend(new GLatLng(locationsLat[i], locationsLng[i]));
    };
	
	$zoom = map.getBoundsZoomLevel(bounds);
	if(minZoom > 0 || maxZoom > 0) {
		$zoom = Math.min($zoom, maxZoom);
	}
	
	map.setZoom($zoom);
	
    var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
    var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
    map.setCenter(new GLatLng(clat,clng));
}

