﻿// JScript File

if(window.FastInit)
    FastInit.addOnLoad(initPage);
else if(window.Event && Event.observe)
    Event.observe(window, 'load', initPage);

var gmap;
    
function initPage() {
    //Make enlarge links popup in modals
    var makeClickModal = function(a) {
        if(a && window.Control && Control.Modal) {
            var options = {
				fade: true,
				fadeDuration: 0.25,
				loading: '/idx//images/LoadingAnimation_Large.gif'
			}
			new Control.Modal(a, options);
		}
    }
    
    $$('a.enlarge').each(makeClickModal);
    
    var showMap = function(evt) {
		var container = $('ListingsMap');
		if (container && GBrowserIsCompatible() && GMap2) {
			container.show();
			if(!gmap) {
				gmap = new GMap2($('ListingsGMap'));
				gmap.addControl(new GLargeMapControl());
				gmap.addControl(new GMapTypeControl());
				Event.observe(window, 'beforeunload', GUnload);
				
					
				//find all lat/lng points and add to map.
				var getPoints = function(coords) {
					var points = [];
					coords.each(function(li) {
						if(li) {
							var lat = li.down('.latitude');
							var lng = li.down('.longitude');
							
							if(lat && lng) {
								points.push(new GLatLng(parseFloat(lat.innerHTML), parseFloat(lng.innerHTML)));
							}
						}
					});
					
					return points;
				}

				var addToMap = function(point) {
					if(point) {
						var marker = new GMarker(point);
						
						
						gmap.addOverlay(marker);
					}
				}
				
				var getBounds = function(points) {
					var bounds = new GLatLngBounds()
					
					points.each(function(p) {bounds.extend(p);})
					
					return bounds;
					
					//alert(bounds.getCenter());
				}
				var points = getPoints($$('#Listings li.geo')).compact()
				var bounds = getBounds(points);
				
				
				//alert([bounds.getSouthWest(), bounds.getNorthEast(), bounds.getCenter(), gmap.getBoundsZoomLevel(bounds)]);
				
				gmap.setCenter(bounds.getCenter(), gmap.getBoundsZoomLevel(bounds))
				points.each(addToMap)
			}
		}
    }
    
    var mapLink = $('MapLink');
    if(mapLink)
		mapLink.observe('click', showMap);
	
	
}
    
