var map;
var zoom = 10;
var cMapSize;
var zoomToPlace = 13;
var cMarker;

function initialize() {
	if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("gmap"));
        switchMapSize(false);
		map.setCenter(new GLatLng(parseFloat(loadPoint['lat']) , parseFloat(loadPoint['lng'])), parseInt(loadPoint['zoom']));
        map.addControl(new GLargeMapControl());
		parsePlaces();
		switchView("map");
	}else{
		alert("Sorry, Google Maps is not compatible with your browser");
	}
    
}




function switchView(s){
	//var about = document.getElementById("aboutHolder");
	var mapInfo = document.getElementById("mapInfo");
	var nav = document.getElementById("sideNav");
	
	//about.style.display = s == "about" ? "block" : "none";
	mapInfo.style.display = s == "map" ? "block" : "none";
	
	//nav.className = s == "about" ? "left" : "right"; 
	
	switchMapSize(false);
}

function switchMapSize(b){
	// true = large
	if(cMapSize === b){
		return;
	}
	
	cMapSize = b;
	document.getElementById("gmap").style.width = b ? "950px" : "510px";
	document.getElementById("tabs").style.right = b ? "-440px" : "0px";
	map.checkResize();
}



function parsePlaces(){
	var lat;
	var lng;
	var point;
	var html;
	var label;
	var marker;
	var addr;
	var pCode;
	var tel;
	var icon;

	
	var count = 0;

	for(var i in  places){
		
		lat = parseFloat(places[i]['latitude']);
		lng = parseFloat(places[i]['longitude']);
		
		point = new GLatLng(lat , lng);
		
		icon = new GIcon(G_DEFAULT_ICON );
		icon.image =  "http://labs.google.com/ridefinder/images/mm_20_" + (places[i]['type'] == "event" ? "red" : "green") + ".png";
		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		icon.iconSize = new GSize(12, 20);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
	
		marker = createMarker(point , "" , html , icon);
		
		places[i]['mapMarker'] = marker;
		
		count++;
	}
	

}
	 
 
 function createMarker(point , name , html , icon) {
	   var marker = new GMarker(point , icon);
       return marker;
 }


 function clickTitle(eventID , placeID){
	selectEvent(eventID , placeID);
	selectPlace(placeID , eventID);
 }
 
 
 
// This function picks up the click and opens the corresponding info window
function selectPlace(i , event) {
   var place = places["place_" + i];
   var event = events["event_" + event];
   
   var marker;
   
   if(!place || !event){ return; }
   
   if(cMarker){
	cMarker.remove();
	}
   
   marker = place.mapMarker; 
   map.addOverlay(marker);
   cMarker = marker;
   if(!marker){ return; }
   
   addr = place['address1'] == "" &&  place['address2'] == "" ? "" : place['address1'] + " " +  place['address2'] + "<br />";
   pCode = place['postalCode'] == "" ? "" : place['postalCode'] + "<br />";
   tel = place['telephone'] == "" ? "" : place['telephone'];
   web = event['web'] == "" ? "" : "<br /><br /><a href='" + event['web'] + "' target='_blank' class='stdLink'>Visit website</a>";
 
   
   html = "<p class='std'><strong>" + place['venueName'] + ", " + place['city'] + "</strong><br />" + addr + pCode +  tel + web + "</p>";
		
   
   
   GEvent.addListener(marker, "click", function() {
       marker.openInfoWindowHtml(html);
   });
  
   GEvent.trigger(marker, "click");

	
   map.setCenter(marker.getLatLng() , zoomToPlace); 
   
}

function selectEvent(i , place){
	var event = events["event_" + i];
	var place = places["place_" + place];
	var info = document.getElementById("mapInfoL");
	var times;
	
	if(!event || !place){ return; }
	
	times = event['times'] ? "<br />" + event['times'] : "";
	city = place['city'] ? ", " + place['city'] : "";
	
	var htmlText = "<h1>" + event['eventName'] + "<span>" + place['venueName'] + city + times + "</span></h1>";
	htmlText += "<p>" + event['description'] + "</p>";
	
	info.innerHTML = htmlText;


}


