// JavaScript Document

function ADSMap(container){
	var That = this;
	this.map = new GMap2(container);
	configureMap(this.map);
	
	this.markers = new Array();
	
	this.viewAll = function(){
		
		var minLat,minLng,maxLat,maxLng;
		for(var a=0; a<That.markers.length; a++){
			if(minLat != undefined){
				if(That.markers[a].getLatLng().lat() < minLat){
					minLat = That.markers[a].getLatLng().lat();
				}
			} else {minLat = That.markers[a].getLatLng().lat();}
					
			if(maxLat){
				if(That.markers[a].getLatLng().lat() > maxLat){
					maxLat = That.markers[a].getLatLng().lat();
				}
			} else {maxLat = That.markers[a].getLatLng().lat();}
			
			if(minLng){
				if(That.markers[a].getLatLng().lng() < minLng){
					minLng = That.markers[a].getLatLng().lng();
				}
			} else {minLng = That.markers[a].getLatLng().lng();}
			
			if(maxLng){
				if(That.markers[a].getLatLng().lng() > maxLng){
					maxLng = That.markers[a].getLatLng().lng();
				}
			} else {maxLng = That.markers[a].getLatLng().lng();}
			
		}
		      	
		cenLat = (maxLat+minLat)/2;
		cenLng = (maxLng+minLng)/2;
		cenglatlng = new GLatLng(cenLat,cenLng);
		That.map.setCenter(cenglatlng);
		
		var zoom = That.map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(minLat,minLng),new GLatLng(maxLat,maxLng)));
		That.map.setZoom(zoom);
		
	};
	
	this.addMarker = function(glatlng,type,label,desc,listing, country){
		var marker = new ADSMarker(glatlng,type,label,desc,listing, country);
		That.markers.push(marker);
		That.map.addOverlay(marker.getMarker());
		return marker;
	
	};
	
	function ADSMarker(glatlng,type,label,desc,listing,country){
		var that = this;
		var label = label;
		var desc = desc;
		var icon = getIcon(country);
		var type = type;
		var ZoomListener;
		var gmarker = new GMarker(glatlng, {icon : icon, title : label});
		var listing = listing;
		this.getMarker = function(){return gmarker;}
		this.getLatLng = function(){return gmarker.getLatLng()}
		this.getListing = function(){return listing;}
		this.zoomTo = function(map){
			map.setCenter(that.getLatLng());
			//partnersUI.pointToPartner(this.i);
			try{
			GEvent.removeListener(ZoomListener);
			} catch(E){}
			ZoomListener = GEvent.addListener(
				map,
				"zoomend",function(a,b){ if(b<a && a<12) map.closeExtInfoWindow()}
				);
			map.setZoom(12);
			
			gmarker.openExtInfoWindow(
			  map,
			  "map_window_"+type,
			  "<span class=\"label\">" + desc + "</span>",
			  {
			  }
			);
			//thu.openInfoWindowHtml("<span class=\"label\">" + addresses[thu.x].desc + "</span>");	
			
		}
		
		}
		
	function getIcon(country){
		if(country == 'Canada') return ADS_DISTRIBUTOR_ICON;
		if(country == 'USA') return ADS_DEALER_ICON;
		}
		
	function configureMap(map){
	
		with(map){
			setCenter(new GLatLng(37.4419, -122.1419), 13);
			enableContinuousZoom();
			disableDoubleClickZoom();
			enableScrollWheelZoom();
			disableInfoWindow();
			var control1 = new GLargeMapControl();
			addControl(control1);
		}
	}
	
}
