
if($('#map').length>0){
	// Init Map
	var map = new GMap2(document.getElementById('map'));
	var bounds = new GLatLngBounds();
	var geo = new GClientGeocoder();
	// Create our "tiny" marker icon
	var tinyIcon = new GIcon();
	tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	tinyIcon.iconSize = new GSize(12, 20);
	tinyIcon.shadowSize = new GSize(22, 20);
	tinyIcon.iconAnchor = new GPoint(6, 20);
	tinyIcon.infoWindowAnchor = new GPoint(5, 1);
	// Set up our GMarkerOptions object literal
	markerOptions = { icon:tinyIcon };
	var markers = [];
	// Set zoom variance, not actual value
	var zoomLevel = ($('#location_id').attr('rel')) ? 2 : 1;
	// Init Places
	update_places(); 
};

function update_locations(cats,areas,tags){
	// Hide All Locations
	$('h1 b').append(' <img src="/public/assets/images/places_loading.gif"/>');
	//$('#message').hide();
	// Hide All Markers
	/*
	for ( var i in markers ){
	     markers[i].hide();
	} 
	*/
	if(!cats&&!areas&&!tags){
		// If nothing selected, show all
		$('ul.locations li.l').show();
		$('h1 b').html(" / "+$('ul.locations').attr('rel')+" Results");
		//update_places();
	}else{
		// Else retrieve JSON of selected locations
		$.getJSON("/places/narrow/c"+cats+"/a"+areas+"/t"+tags, function(json) {
			$('ul.locations li.l').hide();
			if (json.Locations.length > 0) {
				$('h1 b').html(" / "+json.Locations.length+" Results");
				for (i=0; i<json.Locations.length; i++) {
					var location = json.Locations[i];
					$('#l'+location.location_ID).show();
					//markers[location.location_ID].show();
				}
				//zoomToBounds();
			}else{
				$('h1 b').html(" / No Results");
				$('ul.locations').html('<li><h5>Found no matching locations.</h5></li>');	
			}
		});
	}	
	return false;
};
		
function update_places(){
	// used for initial map load only
	var location_id = ($('#location_id').attr('rel')) ? $('#location_id').attr('rel') : false;
	var lookup = 'places';
	if(!location_id){
		var location_id = ($('#location_id').attr('lang')) ? $('#location_id').attr('lang') : '0';
		lookup = 'events';
	}
	$.getJSON("/"+lookup+"/map/"+location_id, function(json) {
		if (json.Locations.length > 0) {
			for (i=0; i<json.Locations.length; i++) {
				var location = json.Locations[i];
				addLocation(location);
			}
			zoomToBounds();
		}
	});
}

function addLocation(location) {
	var point = new GLatLng(location.lat, location.lng);		
	var marker = new GMarker(point,markerOptions);
	markers[location.location_ID] = marker;
	map.addOverlay(marker);
	bounds.extend(marker.getPoint());
	GEvent.addListener(marker, "click", function(){
		showMessage(this, location.name, location.location_ID);
	});
}

function zoomToBounds() {
	map.setCenter(bounds.getCenter());
	map.setZoom(map.getBoundsZoomLevel(bounds)-zoomLevel);
}

function showMessage(marker, text, id){
	var markerOffset = map.fromLatLngToDivPixel(marker.getPoint());
	$("#message").hide().fadeIn()
		.css({ top:markerOffset.y, left:markerOffset.x })
		.html('<a href="/places/'+id+'">'+text+'</a>');
}
				
function displayPoint(marker, text){
	$("#message").hide();
	var moveEnd = GEvent.addListener(map, "moveend", function(){
	    var markerOffset = map.fromLatLngToDivPixel(markers[marker].getLatLng());
	    $("#message")
	        .fadeIn()
	        .css({ top:markerOffset.y, left:markerOffset.x })
	        .html(text);
	    GEvent.removeListener(moveEnd);
	});
	map.panTo(markers[marker].getLatLng());
}				

//$("#message").appendTo( map.getPane(G_MAP_FLOAT_SHADOW_PANE) );
				
function savePoint(geocode) {
	var data = $("#add-point :input").serializeArray();
	data[data.length] = { name: "lng", value: geocode[0] };
	data[data.length] = { name: "lat", value: geocode[1] };
	$.post($("#add-point").attr('action'), data, function(json){
		$("#add-point .error").fadeOut();
		if (json.status == "fail") {
			$("#add-point .error").html(json.message).fadeIn();
		}
		if (json.status == "success") {
			$("#add-point :input[name!=action]").val("");
			var location = json.data;
			addLocation(location);
			zoomToBounds();
		}
	}, "json");
}

function geoEncode() {
	var address = $("#add-point input[name=address]").val();
	geo.getLocations(address, function (result){
		if (result.Status.code == G_GEO_SUCCESS) {
			geocode = result.Placemark[0].Point.coordinates;
			savePoint(geocode);
		} else {
			var reason="Code "+result.Status.code;
			if (reasons[result.Status.code]) {
				reason = reasons[result.Status.code]
			} 
			$("#add-point .error").html(reason).fadeIn();
			geocode = false;
		}
	});
}


		// Manipulate Map by Narrowing Marker Selection
		$('a.jl').click(function(){
			var criteria = $(this).attr('rel').substr(0,1);
			if($(this).hasClass('on')){
				$('#js_'+criteria).removeClass($(this).attr('rel'));
				$("a[rel='"+$(this).attr('rel')+"']").removeClass('on');
			}else{
				$('#js_'+criteria).addClass($(this).attr('rel'));
				$("a[rel='"+$(this).attr('rel')+"']").addClass('on');
			}
			update_locations(escape($('#js_c').attr('class')),escape($('#js_a').attr('class')),escape($('#js_t').attr('class')));
			return false;
		});	
		
		
		// Show Info Bubble on LI:hover
		/*
		$('ul.locations li.l').hover(function(){
			displayPoint($(this).attr('id').substr(1),$(this).attr('title'));
		})
		*/
		
		// Map Toggler
		$('a.mt').click(function(){
			if($(this).html()=='Hide Map'){
				$('div.map_holder').slideToggle();
				$(this).html("Show Map");
				set_cookie('show_map','0','2019','1','1','','','');		
			}else{
				$('div.map_holder').slideToggle();
				$(this).html("Hide Map");
				set_cookie('show_map','1','2019','1','1','','','');		
			}
		});
	
		// Toggle Driving Directions Form
		$('a.dd_link').click(function(){
			$(this).fadeOut('fast',function(){
				$('#dd').fadeIn('fast');
			});
			return false;
		});
	
		$('ul.daily_events li a').click(function(){
			if($(this).hasClass('on')){
				//alert('hasclass');
				return false;
			}else{
				$('#wevents li').hide();
				$('ul.daily_events li.on').removeClass('on');
				$(this).parent().addClass('on');
				var lid = $(this).attr('rel');
				$('#we'+lid).show();
			}
			return false;
		});		



