/* $Id: groupmap.js 10537 2008-11-26 20:02:34Z 08869 $ */
// Call this function when the page has been loaded
var map;

function createMarker( point, data, icons ) {
	var markerOptions = {};
	var marker;
	if ( icons[data.icon_id] ) {
		theIcon = icons[data.icon_id];
		markerOptions = { icon: theIcon, title:data.name };
		marker = new GMarker( point, markerOptions );
	}
	else {
		marker = new GMarker( point );
	}
	GEvent.addListener(marker, "click", function() {
		new Ajax.Request( 'getMarkerBody.php', {
			method: 'GET',
			parameters: {'id': data.id},
			onSuccess: function( response ) {
				marker.openInfoWindowHtml(response.responseText);
			}
		});
	});
	return marker;
}

function getMarkers( ) {
    var zipField = $('zip');
    var searchField = $('search');
    if(zipField) {
        var zip = $F(zipField);
    }
    if(searchField) {
        var search = $F(searchField);
    }
	new Ajax.Request( 'getMarkers.php', {
		method: 'GET',
		parameters: { 'zip':zip, 'search':search },
		onSuccess: function (response) {
			if ( response.responseJSON ) {
				mgr = new GMarkerManager(map);
				json = response.responseJSON;
				markers = json.markers;
				icons = json.icons;
				markericons = new Array();
				for ( var i = 0; i < icons.length; i++ ) {
					if ( !icons[i].icon ) {
						var icon = new GIcon( G_DEFAULT_ICON );
						markericons[icons[i].id] = icon;
					}
					else {
						var icon = new GIcon();
						icon.image = icons[i].icon.image;
						icon.shadow = icons[i].icon.shadow;
						icon.iconSize= icons[i].icon.iconSize;
						icon.shadowSize = icons[i].icon.shadowSize;
						icon.iconAnchor = icons[i].icon.iconAnchor;
						icon.infoWindowAnchor = icons[i].icon.infoWindowAnchor;
						markericons[icons[i].id] = icon;
					}
				}
				batch = [[],[],[]];
				map.clearOverlays();
				for ( var i = 0; i < markers.length; i++ ) {
					var point = new GLatLng( markers[i].lat, markers[i].long );
					batch[markers[i].zoom].push(createMarker(point, markers[i], markericons));
				}
				mgr.addMarkers(batch[0],3);
				mgr.addMarkers(batch[1],5);
				mgr.addMarkers(batch[2],8);
				mgr.refresh();
			}
		}
	});
}

function initialize() {
	map = new GMap2(document.getElementById("map"));
	GEvent.addListener(map, 'load', function() { getMarkers(); });
	//GEvent.addListener(map, 'moveend', function() { getMarkers(); });
	//GEvent.addListener(map, 'zoomend', function(oldLevel,newLevel) { getMarkers(); });
	map.setCenter(map_center, map_zoom);
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	Event.observe( window, 'unload', GUnload ); 
}

Event.observe( window, 'load', initialize );

document.observe('dom:loaded', function() {
	if ($('map_tools_form')) {
		$('map_tools_form').observe('submit', function(e) {
			Event.stop(e);
            var zip = $('zip');
            if(zip) {
                var zipValue = $F(zip);
            }
			if ( zipValue ) {
				new Ajax.Request( 'getZipLatLng.php', {
						'method':'GET',
						'parameters': { 'zip':$('zip').value},
						'onSuccess': function( response ) {
										if (response.responseJSON ) {
											json = response.responseJSON;
											map.setCenter( new GLatLng(json.lat, json.lng), 8 ); 
								 	 	}
									}
						}
					);
			} else {
				getMarkers();
			}
		});
		var zipm = new RegExp("zip=([^&]*)").exec(location.search);
		if ( zipm ) {
			$('zip').value = zipm[1];
		} 
		var searchm = new RegExp("search=([^&]*)").exec(location.search);
		if ( searchm ) {
			$('search').value = searchm[1];
		}
		
		useBSNns = true;
		var options = {
			script: "getTagNames.php?",
			varname: "name",
			json: true,
			noresults: 'No groups found',
			timeout: 5000,
			delay: 100,
			maxresults: 15,
			callback: function(tag) { 
				// Shortname for tag is in tag.id
				// totally hacky:
				window.location = "./" + tag.id;
			}
		};
		var as = new bsn.AutoSuggest('search', options);
	}
});

