$(window).load(function(){
	$.prettyLoader();
	//displayUsersTracks();
	
});

function viewLatestLocation(uid, name, email){
	$.prettyLoader.show();
	$.ajax({
	   type: "POST",
	   url: "../spotaptrackpoint.php",
	   data: "uid="+uid,
	   success: function(msg){
			var response=new Array();
			response=eval('('+msg+')'); 
			
			//initialize();
			var myLatLng = new google.maps.LatLng(response[0]["latitude"], response[0]["longitude"]);
			var myOptions = {
				zoom: 20,
				center: myLatLng,
				mapTypeId: google.maps.MapTypeId.SATELLITE 
			};

			var markerBounds = new google.maps.LatLngBounds();
			
			
			var address = "";
			var geocoder = new google.maps.Geocoder();
			geocoder.geocode({'latLng': myLatLng}, function(results, status) {
			  if (results) {
					
				  address = results[1].formatted_address;
				} else {
				  address = "No results found";
				}
				$("#apps-main-page").show().html("");
			$("#map").remove();
			$("#apps-main-page").html('<div id="map" style="display:none;"><table id="map-information"style="display:none;"> 	<tr><td><span style="font-weight:bold;">Name:</span> '+name+'</td><td><div id="latlng"></div></td></tr> 	<tr><td><span style="font-weight:bold;">Email:</span> '+email+'</td><td><div id="formatedAddress"></div></td></tr> 	<tr><td><span style="font-weight:bold;">Address:</span> '+address+'</td><td><div id="zoom_level"></div></td></tr> </table><div id="map_canvas" style="width:500px;height:380px"></div> <div id="crosshair"></div> </div>');

			$("#map").show();
			$("#map-information").show();
			var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
			var trackPoints = [];
			for(var i = 0; i < response.length; i++){
				var lat = response[i]["latitude"];
				var lon = response[i]["longitude"];
				var t = new google.maps.LatLng(lat, lon);
				trackPoints[i] = t;
				markerBounds.extend(t);
			}
			
			var infowindow = new google.maps.InfoWindow();
			var marker = new google.maps.Marker({
				position: trackPoints[trackPoints.length-1], 
				map: map, 
				title:address
			});
			infowindow.setContent(address);
			infowindow.open(map, marker);
			map.fitBounds(markerBounds);
			$.prettyLoader.hide();
			});
					
			
			
			
			
			
		},
		error: function(msg){
	   		
		}
	});
	
	return;	
}

function displayUsersTracks(){
	$("#apps-main-page").show().html("");
	$("#apps-main-page").html('<div id="spotap-display-tracks" style="border:1px transparent red;"></div>');
	$.prettyLoader.show();
	jQuery.ajax({
		type: "POST",
		url: "../spottapshowtracks.php",
		data: "",
		success: function(msg){	
			$("#spotap-display-tracks").show().html(msg);
			$.prettyLoader.hide();
		}
	});
}

function showUserTracks(uid){
	$.prettyLoader.show();
	$.ajax({
	   type: "POST",
	   url: "../showusertracks.php",
	   data: "uid="+uid,
	   success: function(msg){
			$(document).find('DIV').each(function(){
				var id = $(this).attr('id');
				if(id.indexOf('user-tracks-')>=0){
					$(this).hide();
				}
			});
			$("#user-tracks-"+uid).show().html(msg);
			$.prettyLoader.hide();
	   },
	   error: function(msg){
	   		
	   }
	});
}

function hideUserTracks(uid){
	$("#user-tracks-"+uid).hide();
}

function viewSpoTapTracks(uid, trackid){
	$.prettyLoader.show();
	$("#map").remove();
	var m = '<div id="map" style="display:none;"> <div id="map_canvas" style="width:500px;height:380px"></div> <div id="crosshair"></div> <table id="map-information"style="display:none;"> 	<tr><td>Lat/Lng:</td><td><div id="latlng"></div></td></tr> 	<tr><td>Address:</td><td><div id="formatedAddress"></div></td></tr> 	<tr><td>ZoomLevel</td><td><div id="zoom_level">2</div></td></tr> </table></div>';

	$('#user-individual-track-'+trackid).append(m);
	$("#map").show();
	$("#map-information").show();
	
	
	$.ajax({
	   type: "POST",
	   url: "../spotaptrackpoints.php",
	   data: "track_id="+trackid,
	   success: function(msg){
			var response=new Array();
			response=eval('('+msg+')'); 
			//initialize();
			var myLatLng = new google.maps.LatLng(response[0]["latitude"], response[0]["longitude"]);
			var myOptions = {
				zoom: 20,
				center: myLatLng,
				mapTypeId: google.maps.MapTypeId.SATELLITE 
			};

			var markerBounds = new google.maps.LatLngBounds();
			var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
			var trackPoints = [];
			for(var i = 0; i < response.length; i++){
				var lat = response[i]["latitude"];
				var lon = response[i]["longitude"];
				var t = new google.maps.LatLng(lat, lon);
				trackPoints[i] = t;
				markerBounds.extend(t);
			}
			
			var marker = new google.maps.Marker({
				position: trackPoints[trackPoints.length-1], 
				map: map, 
				title:"Latest location"
			});
			
			/*
			
			//alert(response.length);
			
			for(var i = 0; i < response.length; i++){
				var lat = response[i]["latitude"];
				var lon = response[i]["longitude"];
				var t = new google.maps.LatLng(lat, lon);
				trackPoints[i] = t;
				markerBounds.extend(t);
			}
	
			var flightPath = new google.maps.Polyline({
				path: trackPoints,
				strokeColor: "#FF0000",
				strokeOpacity: 1.0,
				strokeWeight: 2
			});
			flightPath.setMap(map);
			var marker = new google.maps.Marker({
				position: trackPoints[0], 
				map: map, 
				title:"Hello World!"
			});  
			var marker = new google.maps.Marker({
				position: trackPoints[trackPoints.length-1], 
				map: map, 
				title:"Hello World!"
			});
			*/
			map.fitBounds(markerBounds);
			$.prettyLoader.hide();
		},
		error: function(msg){
	   		
		}
	});
	
	return;	
}
  var map;
  var trackPath;
  var geocoder;
  var centerChangedLast;
  var reverseGeocodedLast;
  var currentReverseGeocodeResponse;
 
function initialize() {
	var myOptions = {
	  zoom: 3,
	  center: new google.maps.LatLng(0, -180),//var myLatLng = ;
	  mapTypeId: google.maps.MapTypeId.TERRAIN
	};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
	var polyOptions = {
		strokeColor: '#000000',
		strokeOpacity: 1.0,
		strokeWeight: 3
	}
	trackPath = new google.maps.Polyline(polyOptions);
	trackPath.setMap(map);
	
	
	//geocoder = new google.maps.Geocoder();
    //setupEvents();
    //centerChanged();
  }
 
  function setupEvents() {
    reverseGeocodedLast = new Date();
    centerChangedLast = new Date();
 
    setInterval(function() {
      if((new Date()).getSeconds() - centerChangedLast.getSeconds() > 1) {
        if(reverseGeocodedLast.getTime() < centerChangedLast.getTime())
          reverseGeocode();
      }
    }, 1000);
 
    google.maps.event.addListener(map, 'zoom_changed', function() {
      document.getElementById("zoom_level").innerHTML = map.getZoom();
    });
 
    google.maps.event.addListener(map, 'center_changed', centerChanged);
 
    google.maps.event.addDomListener(document.getElementById('crosshair'),'dblclick', function() {
       map.setZoom(map.getZoom() + 1);
    });
 
  }
 
  function getCenterLatLngText() {
    return '(' + map.getCenter().lat() +', '+ map.getCenter().lng() +')';
  }
 
  function centerChanged() {
    centerChangedLast = new Date();
    var latlng = getCenterLatLngText();
    document.getElementById('latlng').innerHTML = latlng;
    document.getElementById('formatedAddress').innerHTML = '';
    currentReverseGeocodeResponse = null;
  }
 
  function reverseGeocode() {
    reverseGeocodedLast = new Date();
    geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
  }
 
  function reverseGeocodeResult(results, status) {
    currentReverseGeocodeResponse = results;
    if(status == 'OK') {
      if(results.length == 0) {
        document.getElementById('formatedAddress').innerHTML = 'None';
      } else {
        document.getElementById('formatedAddress').innerHTML = results[0].formatted_address;
      }
    } else {
      document.getElementById('formatedAddress').innerHTML = 'Error';
    }
  }
 
 
  function geocode() {
    var address = buildAddress();
    geocoder.geocode({
      'address': address,
      'partialmatch': true}, geocodeResult);
  }
 
  function geocodeResult(results, status) {
    if (status == 'OK' && results.length > 0) {
		map.fitBounds(results[0].geometry.viewport);
		addMarkerAtCenter();
    } else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  }
 
  function addMarkerAtCenter() {
    var marker = new google.maps.Marker({
        position: map.getCenter(),
        map: map
    });
 
    var text = 'Lat/Lng: ' + getCenterLatLngText();
    if(currentReverseGeocodeResponse) {
      var addr = '';
      if(currentReverseGeocodeResponse.size == 0) {
        addr = 'None';
      } else {
        addr = currentReverseGeocodeResponse[0].formatted_address;
      }
      text = text + '<br>' + 'address: <br>' + addr;
    }
	}

