
// display "Downloading Map Data...."
// start ajax download of the map JSON.
// when finished, display "Processing Map Data..."


$(document).ready(function() { 		
				  
				  $.blockUI({ message:'<div id="blockUIMessage">Downloading Map Data...</div>', css: { 
							border: 'none', 
							padding: '15px', 
							backgroundColor: '#000', 
							'-webkit-border-radius': '10px', 
							'-moz-border-radius': '10px', 
							opacity: .5, 
							color: '#fff' 
							} }); 
				  
				  $.getJSON('user_dojo_map.json', function(data) {
							mapData = data;
							$.unblockUI();
							loadMap();
							});
				  
				  
				  });


if (typeof(change_lang) == "undefined") {
	var change_lang = "";
}


if (typeof(userLatLng) != "undefined") {
	var userLat = userLatLng.lat();
	var userLng = userLatLng.lng();
}


var mapData;


var map;
var markerClusterer = null;
var markers = [];

//icon arrays must be global...
var proIcons = [];
var danIcons = [];
var kyuIcons = [];




var type = 1;


var users, dojos, locations;


var orig_owih;

var savCSSdefaults = { 
padding:        0, 
margin:         0, 
width:          '30%', 
top:            '40%', 
left:           '35%', 
textAlign:      'center', 
color:          '#000', 
border:         '3px solid #aaa', 
backgroundColor:'#fff', 
cursor:         'wait' 
};


function loadMap() {
	
	$.blockUI({ message:'<div id="blockUIMessage">Processing Map Data...</div>', css: { 
			  border: 'none', 
			  padding: '15px', 
			  backgroundColor: '#000', 
			  '-webkit-border-radius': '10px', 
			  '-moz-border-radius': '10px', 
			  opacity: .5, 
			  color: '#fff' 
			  } }); 
	
	
	users = mapData.users;
	dojos = mapData.dojos;
	locations = mapData.locations;
	
	/*
	 if (typeof(userLatLng) != "undefined") {
	 userLat = userLatLng.lat();
	 userLng = userLatLng.lng();
	 }
	 */
	
	if (GBrowserIsCompatible()) {
		
		
		map = new GMap2(document.getElementById("map"));
		//map.setMapType(G_HYBRID_MAP);
		
		map.setMapType(G_NORMAL_MAP);
		
		if (typeof(userLatLng) != "undefined") {
			map.setCenter(userLatLng, 13);
		}
		else {
			map.setCenter(new GLatLng(20,-60), 2);
		}
		
		//map.addControl(new GLargeMapControl());
		map.addControl(new GLargeMapControl3D());
		map.addControl(new GScaleControl());
		map.addControl(new GMenuMapTypeControl());
		map.enableScrollWheelZoom();
		
		hideEventList();
		
		
		
		/* WE DON'T HAVE LOCATIONS ON THIS MAP, YET....
		
		// done with users.  now deal with locations.
		var icon = new GIcon();
		icon.image = "mapextras/icons/location-reduced.png";
		icon.shadow = "mapextras/icons/roundshadow-reduced.png";
		icon.iconSize = new GSize(22.0, 22.0);
		icon.shadowSize = new GSize(40.0, 22.0);
		icon.iconAnchor = new GPoint(16.0, 18.0);
		icon.infoWindowAnchor = new GPoint(16.0, 18.0);
		
		for (var i = 0; i < locations.length; i++) {
			
			var latlng = new GLatLng(locations[ i ].latitude, locations[ i ].longitude);
			
			var iconOptionsmarker0 = {};
			
			iconOptionsmarker0.primaryColor = "#cadceb";
			iconOptionsmarker0.labelColor = "#ffffff";
			var iconmarker0 = MapIconMaker.createLabeledMarkerIcon(iconOptionsmarker0);
			
			//	marker = new GMarker(latlng, iconmarker0);
			marker = new GMarker(latlng, icon);
		//	marker.isUser = 0;
			var fn = locationClickFn(locations[i].location_id, latlng);
			GEvent.addListener(marker, "click", fn);
			if (typeof(external_map) == "undefined") {
				markers.push(marker);
			}
		}
		*/
		
		
		// done locations..  Now deal with dojos.
		
		if (mapType == 'all' || mapType == 'dojos') {
			
		/* let's use the cool karate icon... */
		var icon = new GIcon();
		icon.image = "mapextras/icons/karate.png";
		icon.shadow = "mapextras/icons/shadow.png";
		icon.iconSize = new GSize(32.0, 37.0);
		icon.shadowSize = new GSize(51.0, 37.0);
		//    icon.shadowSize = new GSize(32.0, 37.0);
		icon.iconAnchor = new GPoint(16.0, 18.0);
		icon.infoWindowAnchor = new GPoint(16.0, 18.0);
		
		for (var i = 0; i < dojos.length; i++) {
			
			var latlng = new GLatLng(dojos[ i ].latitude, dojos[ i ].longitude);
			
			/* custom icon code */
			var iconOptionsmarker0 = {};
			
			var ranklabel = "k";
			//iconOptionsmarker0.strokeColor = "#000000";
			iconOptionsmarker0.labelColor = "#000000";
			
			
			iconOptionsmarker0.primaryColor = "#fc0000";
			iconOptionsmarker0.labelColor = "#ffffff";
			iconOptionsmarker0.label = dojos[i].members;
			
			
			var iconmarker0 = MapIconMaker.createLabeledMarkerIcon(iconOptionsmarker0);
			
			
			marker = new GMarker(latlng, icon);
		//	marker.isUser = 0;
			
			var fn = dojoClickFn(dojos[i].dojo_id, latlng);
			//var fn = markerClickFn(pics[i], latlng);
			GEvent.addListener(marker, "click", fn);
			
			markers.push(marker);
		}
		
		}
		
		
		// done pushing dojo markers.  time to cluster these bad boys.
		
		
		
		if (mapType == 'all' || mapType == 'users') {

	    // create 47 markers - 31 for the kyus, plus 7 for the amateur dans plus 9 for the pros.
		
		var ranklabel;

		//pros come first ;)
		ranklabel = "p";
		var iconOptionsmarker0 = {};
		proIcons.push(iconOptionsmarker0);  // 0  index is empty because there are no 0 ranks.		
		for (var i = 0; i < 10; i++) {
			var iconOptionsmarker0 = {};
			iconOptionsmarker0.primaryColor = "#451865";
			iconOptionsmarker0.labelColor = "#ffffff";
			iconOptionsmarker0.width = 32;			
			iconOptionsmarker0.label = (i + 1) + ranklabel;	
			var iconmarker0 = MapIconMaker.createFlatIcon(iconOptionsmarker0);	
			proIcons.push(iconmarker0);
		}

		//amadans
		ranklabel = "d";
		var iconOptionsmarker0 = {};
		danIcons.push(iconOptionsmarker0);  // 0  index is empty because there are no 0 ranks.		
		for (var i = 0; i < 10; i++) {
			var iconOptionsmarker0 = {};
			iconOptionsmarker0.primaryColor = "#fc0000";
			iconOptionsmarker0.labelColor = "#ffffff";
			iconOptionsmarker0.width = 25;			
			iconOptionsmarker0.label = (i + 1) + ranklabel;	
			var iconmarker0 = MapIconMaker.createFlatIcon(iconOptionsmarker0);	
			danIcons.push(iconmarker0);
		}

		//kyus
		ranklabel = "k";
		var iconOptionsmarker0 = {};
		kyuIcons.push(iconOptionsmarker0);  // 0  index is empty because there are no 0 ranks.		
		for (var i = 0; i < 32; i++) {
			var iconOptionsmarker0 = {};
			if  (i < 10) {
				iconOptionsmarker0.primaryColor = "#0f000";
				iconOptionsmarker0.strokeColor = "#ffffff";
				//iconOptionsmarker0.labelColor = "#ffffff";				
			}
			//ddk
			else {
				iconOptionsmarker0.primaryColor = "#00f000";
				//iconOptionsmarker0.labelColor = "#ffffff";
				iconOptionsmarker0.strokeColor = "#ffffff";
			}
			iconOptionsmarker0.width = 25;			
			iconOptionsmarker0.label = (i + 1) + ranklabel;	
			var iconmarker0 = MapIconMaker.createFlatIcon(iconOptionsmarker0);	
			kyuIcons.push(iconmarker0);
		}
		
	
		
		for (var i = 0; i < users.length; i++) {
			
			
			var latlng = new GLatLng(users[ i ].latitude, users[ i ].longitude);
			var marker;
			var	fn = userClickFn(users[i].user_id, latlng);
			//var	fn = userClickFn(users[i].user_id, latlng);
			
			//check to see if this is the user.  If so, replace with custom icon.
			if (userLat == users[ i ].latitude && userLng == users[ i ].longitude) {
				
				var icon = new GIcon();
				icon.image = "mapextras/icons/home-reduced.png";
				icon.shadow = "mapextras/icons/roundshadow-reduced.png";
				icon.iconSize = new GSize(22.0, 22.0);
				icon.shadowSize = new GSize(40.0, 22.0);
				icon.iconAnchor = new GPoint(16.0, 18.0);
				icon.infoWindowAnchor = new GPoint(16.0, 18.0);
				
				marker = new GMarker(latlng, 
									 icon);
				
				//	marker.isUser = 1;
				
			} 
			
			else {
	
				/*
				var iconOptionsmarker0 = {};
				
				iconOptionsmarker0.width = 25;
				
				var ranklabel = "k";
				iconOptionsmarker0.labelColor = "#000000";
				*/
				
				
				// NEWLY PLACED!!!!!!
			//	fn = userClickFn(users[i].user_id, latlng);
				
				
				//dan player
				if (users[i].rank < -7) {
					
				
					
					//GEvent.addListener(proIcons[Math.abs((Number(users[i].rank))+7)], "click", fn);
					marker = new GMarker(latlng, proIcons[Math.abs((Number(users[i].rank))+7)]);
				//	markers.push(marker);
					
					/*
					users[i].rank = Math.abs((Number(users[i].rank))+7);
					iconOptionsmarker0.primaryColor = "#451865";
					iconOptionsmarker0.labelColor = "#ffffff";
					iconOptionsmarker0.addStar = true;
					iconOptionsmarker0.width = 32;
					ranklabel = "p";		
					 */
				} 				
				else if (users[i].rank < 1) {
				
					//GEvent.addListener(danIcons[Math.abs(users[i].rank)], "click", fn);
					marker = new GMarker(latlng, danIcons[Math.abs(users[i].rank)]);
				//	markers.push(marker);
					
					
					/*
					users[i].rank = Math.abs(users[i].rank);
					iconOptionsmarker0.primaryColor = "#fc0000";
					iconOptionsmarker0.labelColor = "#ffffff";
				
					ranklabel = "d";			
					 */
				} 
				//sdk
				else if (users[i].rank < 32) {
				
					
				//	GEvent.addListener(kyuIcons[users[i].rank], "click", fn);
					marker = new GMarker(latlng, kyuIcons[users[i].rank]);
					//markers.push(marker);
					
					
					/*
					iconOptionsmarker0.primaryColor = "#0f000";
					iconOptionsmarker0.strokeColor = "#ffffff";
								
				}
				//ddk
				else {
					iconOptionsmarker0.primaryColor = "#00f000";
					
					iconOptionsmarker0.strokeColor = "#ffffff";
					 */
				}
				
				
							/*
				iconOptionsmarker0.label = users[i].rank + ranklabel;
				var iconmarker0 = MapIconMaker.createFlatIcon(iconOptionsmarker0);				

				marker = new GMarker(latlng, 
									 iconmarker0);
				*/
			
			}
			
			GEvent.addListener(marker, "click", fn);
			markers.push(marker);
			
			/*
			var fn = userClickFn(users[i].user_id, latlng);
			
			GEvent.addListener(marker, "click", fn);
			
			markers.push(marker);
			 */
			
		}
		
		}
		
		
		
		
		
		
		if(markerClusterer != null) {
			markerClusterer.clearMarkers();
		}
		
		//var mcOptions = {gridSize: 40, maxZoom: 7};
		//{gridSize: 25, maxZoom: 13};
		var mcOptions = {gridSize: 35, maxZoom: 12};
		
		
		markerClusterer = new MarkerClusterer(map, markers, mcOptions);
		
		//DONE!  Now, preload if we have a preload.
		if (typeof(preloadType) != "undefined") {
			
			switch (preloadType) {
				case 'user':
					if(typeof(user_id) != "undefined"){
						preloadUser(user_id, preloadLatLng);
					}
					break;
				case 'dojo':
					if ( typeof( dojo_id) != "undefined" ) {
						preloadDojo(dojo_id, preloadLatLng);
					}
					break;
				case 'game':
					if ( typeof( game_id) != "undefined" ) {
						preloadGame(game_id, preloadLatLng);
					}
					break;
				case 'eventList':
					showEventList();
					break;
				case 'mySchedule':
					if(typeof(user_id) != "undefined"){
						userTabScheduleFn(user_id, preloadLatLng);
					}
					break;
				case 'myHistory':
					if(typeof(user_id) != "undefined"){
						userTabHistoryFn(user_id, preloadLatLng);
					}
					break;
				case 'showLegend':
					showLegend();
					break;				
			}
			
		}
		
		
	}
	
	$.unblockUI();
}



