//google.load("maps", "2.x");

var map;
var mapCentered = false;

function initialize() 
{	
	if(document.getElementById("map_canvas")){
		map = new google.maps.Map2(document.getElementById("map_canvas"));	
	
		var latitude = document.getElementById("dynamicMapLatitude");
		var longitude = document.getElementById("dynamicMapLongitude");
	
		if(latitude && longitude && latitude.value.length > 0 && longitude.value.length > 0){
			var point = new GLatLng(parseFloat(latitude.value), parseFloat(longitude.value));
			var bounds = new GLatLngBounds;
			bounds.extend(point);
			
			map.clearOverlays();
			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 2);
			var marker = new GMarker(point, { draggable: true });		
			map.addOverlay(marker);
			
			GEvent.addListener(marker, "dragend", 
				function() 
				{				
					document.getElementById("dynamicMapLatitude").value = marker.getPoint().lat();
					document.getElementById("dynamicMapLongitude").value = marker.getPoint().lng();
				}
			);
		}else{
			map.setCenter(new GLatLng(56.848972,-92.900391), 3);	
		}
		
		
		map.addControl(new GLargeMapControl());
		map.enableScrollWheelZoom()
		
		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);		
	}else if(document.getElementById("map_canvas_master")){		
		map = new google.maps.Map2(document.getElementById("map_canvas_master"));	
		map.setCenter(new GLatLng(56.848972,-92.900391), 3);	
		
		map.addControl(new GSmallMapControl());
		map.enableScrollWheelZoom()
		
		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);		
			
		populateMaster();
	}
	
}

function getBrowseMasterList()
{	
	
}

function populateMaster()
{
	var bounds;
	var foundPoint = false;
	
	categories = global_categories;
	regions = global_regions;
	areas = global_areas;
	
	var categoryValues = "";
	var regionValues = "";
	var areaValues = "";
	var pageNumberValue = 1;
	
		
	if(categories){		
		for(var i = 0; i < categories.length; i++){
			categoryValues += categories[i] + ", ";							
		}
		categoryValues = categoryValues.substr(0, categoryValues.length - 2);		
	}
	
	if(regions){
		for(var i = 0; i < regions.length; i++){			
			regionValues += regions[i] + ", ";				
		}
		regionValues = regionValues.substr(0, regionValues.length - 2);
	}
	
	if(areas){
		for(var i = 0; i < areas.length; i++){			
			areaValues += areas[i] + ", ";			
		}		
		areaValues = areaValues.substr(0, areaValues.length - 2);		
	}

	pageNumberValue = global_current_browse_page;

	$.getJSON
		(
			"/lib/service/advertisementBrowse.php?jsoncallback=?", { 
				categoryList: categoryValues, 
				regionList: regionValues, 
				areaList: areaValues, 
				limit: global_browse_limit, 
				pageNumber: pageNumberValue,
				searchString: global_search_string }, 
	  	function (data) 
	  	{
	  		map.clearOverlays();
	  		bounds = new GLatLngBounds;
				$.each(data.advertisements, function(i, advertisementItem){					
					if(advertisementItem.Package.DynamicMap == 1 && advertisementItem.DynamicMapLatitude && advertisementItem.DynamicMapLongitude){
						foundPoint = true;
						var point = new GLatLng(parseFloat(advertisementItem.DynamicMapLatitude), parseFloat(advertisementItem.DynamicMapLongitude));				
						bounds.extend(point);
						
						var marker = new GMarker(point);		
						
						GEvent.addListener(marker,"click", function() {				
							
										
							
							output = "<ul class=\"googleInfoMarker\">";							
							
							output += "<li><h1>" + advertisementItem.Title + "</h1></li>";
																				
							output += "<li>" + advertisementItem.LocationOutput + "</li>";
							
							if(advertisementItem.Package.TelephoneLocal && advertisementItem.TelephoneLocal){
								output += "<li>Local: " + advertisementItem.TelephoneLocal + "</li>";
							}
							
							if(advertisementItem.Package.TelephoneTollFree && advertisementItem.TelephoneTollFree){
								output += "<li>Toll Free: " +  advertisementItem.TelephoneTollFree + "</li>";
							}
							
							if(advertisementItem.Package.TelephoneFax && advertisementItem.TelephoneFax){
								output += "<li>Fax: " +  advertisementItem.TelephoneFax + "</li>";
							}	
							output += "</ul>";
												  	
					  	this.openInfoWindowHtml(output);
						});										
						
						map.addOverlay(marker);	
					}
				});	 
				
				if(foundPoint){
					map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 2); 			
				}else{
					map.setCenter(new GLatLng(56.848972,-92.900391), 3);
				}
							
	  	}
	  );	
	
	/*
	var dynamicMapLatLonContainer = document.getElementsByClass("dynamicMapLatLonContainer");	
	
	
	
	if(dynamicMapLatLonContainer){
		bounds = new GLatLngBounds;
		for(var i = 0; i < dynamicMapLatLonContainer.length; i++){
			var point = new GLatLng(parseFloat(dynamicMapLatLonContainer.firstChild.innerHTML), parseFloat(dynamicMapLatLonContainer.lastChild.innerHTML));
			bounds.extend(point);
			var marker = new GMarker(point);		
			map.addOverlay(marker);	
		}
		
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 2);
		
	}else{
		map.setCenter(new GLatLng(56.848972,-92.900391), 3);
	}
	
	
		map.addControl(new GLargeMapControl());
	map.enableScrollWheelZoom()
	
	var mapControl = new GMapTypeControl();
	map.addControl(mapControl);	
	*/
}

function getSmallIcon()
{
	var tinyIcon = new GIcon(G_DEFAULT_ICON);
	tinyIcon.image = "/images/echo_icon.png";
	tinyIcon.shadow = "/images/echo_icon_shadow.png";
	tinyIcon.iconSize = new GSize(44, 19);
	tinyIcon.shadowSize = new GSize(55, 19);
	tinyIcon.iconAnchor = new GPoint(8, 18);
	tinyIcon.infoWindowAnchor = new GPoint(5, 1);
	return tinyIcon;
}

function getAdvertisement(draggable)
{
	GDownloadUrl("/lib/service/markers.php?advertisement=", 
		function(data, responseCode)
		{
			var xml = GXml.parse(data);
			map.clearOverlays();
			var markers = xml.documentElement.getElementsByTagName("marker");
			var bounds = new GLatLngBounds;
			var points = new Array();
			
			for(var i = 0; i < markers.length; i++){
				var latitude = markers[i].getAttribute("lat");
				var longitude = markers[i].getAttribute("lng");
				
				var point = new GLatLng(parseFloat(latitude), parseFloat(longitude));
				
				var marker;
				
				bounds.extend(point);
				
				if(draggable){
					marker = new GMarker(point, {draggable: true});
					GEvent.addListener(marker, "dragend", 
						function() 
						{
							document.getElementById("dynamicMapLatitude").value = marker.getPoint().lat();
							document.getElementById("dynamicMapLongitude").value = marker.getPoint().lng();
						}
					);
				}else{
					marker = new GMarker(point);
				}
			}
			
			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 1);
			map.addControl(new GLargeMapControl());
			map.enableScrollWheelZoom()
			
			var mapControl = new GMapTypeControl();
			map.addControl(mapControl);	
					
			map.addOverlay(marker);				
		}
	);
}
	
function findLatLngFromAddress()
{
	var googleSearchString;	
	googleSearchString = document.getElementById("companyAddress").value + ", " + document.getElementById("cityTown").value + ", Ontario, Canada";
	
	var geocoder = new GClientGeocoder();				
	showAddress(geocoder, googleSearchString);			
}

function showAddress(geocoder, address) 
{	
	if(geocoder){
		geocoder.getLatLng(address, 
			function(point)
			{ 
				if(!point){
										
					//TODO: Make something nice to show up. Not a alert box....
				}else{					
					var bounds = new GLatLngBounds;
					bounds.extend(point);
					
					map.clearOverlays();
					map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 4);
					var marker = new GMarker(point, { draggable: true });
					map.addOverlay(marker);					
					
					document.getElementById("dynamicMapLatitude").value = point.lat();  				      				
          document.getElementById("dynamicMapLongitude").value = point.lng(); 
          
					GEvent.addListener(marker, "dragend", 
						function() 
						{
							document.getElementById("dynamicMapLatitude").value = marker.getPoint().lat();
							document.getElementById("dynamicMapLongitude").value = marker.getPoint().lng();
						}
					);
				}
			}
		);
	}	
}

function resetMarker()
{
	var latitude = document.getElementById("txtLatitude").value;
	var longitude = document.getElementById("txtLongitude").value;
	
	if(latitude && longitude){
		map.clearOverlays();
        
		var latLng = new GLatLng(latitude, longitude);
		var marker = new GMarker(latLng, { icon: getSmallIcon(), draggable: true });
		map.setCenter(latLng, map.getZoom());
		map.addOverlay(marker);
		GEvent.addListener(marker, "dragend", function() {
			document.getElementById("txtLatitude").value = marker.getPoint().lat();
			document.getElementById("txtLongitude").value = marker.getPoint().lng();
		});
	}
}
/*

function makeGoogleMaster()
{		
	//attachEvent(document, 'load', getBrowseMasterList)
	//google.setOnLoadCallback(getBrowseMasterList);	
	google.setOnLoadCallback(initialize);
}

function makeGoogle()
{	
	google.setOnLoadCallback(initialize);
}
*/

