var map = null;
var barcas = {
	iniciar: function(){
		barcas.atualizar();
	},
	atualizar: function(){
		$.getJSON('getjson.php', function(data){
			map.clearOverlays();

			$.each(data, function(){
				var barca = this;
				var imo = 'imo' + barca.Nr_IMO;
				var latlng = new GLatLng('-'+ barca.Original_LatidGDG, '-' + barca.Original_LongGDG, true);
				if(!barcas[imo]){
					barcas[imo] = {
						'barca': barca,
						'points': []
					};
				}
				if(barcas[imo].points.length > 0){
					var lastpoint = barcas[imo].points[barcas[imo].points.length - 1];
					if(lastpoint.lat() != latlng.lat() || lastpoint.lng() != latlng.lng()){
						barcas[imo].points.push(latlng);
					}
				}else{
					barcas[imo].points.push(latlng);
				}
				if(barcas[imo].points.length > 60){
					barcas[imo].points.shift();
				}
				barcas[imo].barca = barca;

				if(barcas[imo].points.length > 1){
					//map.addOverlay(new GPolyline(barcas[imo].points, '#CC0000'));
				}
				
				var tamanhoIcone = new GSize(20, 20);
				var posIcone = new GPoint(0, 20);
				
				var icone = new GIcon(G_DEFAULT_ICON, 'http://www.pvms.com.br/images/map_icon.gif');
				icone.iconSize = tamanhoIcone;
				icone.iconAnchor = posIcone
				icone.shadow = null;	
				
				var marker = new GMarker(latlng,icone,true);
				map.addOverlay(marker);
				
				//var latLongLabel = new GLatLng('-'+ barca.Original_LatidGDG, '-' + barca.Original_LongGDG + 0.5, true);
				
				var label = new ELabel(latlng, $(barcas[imo].barca).attr('Nm_Ship'), "barcaLabel", new GSize(20,0), 50, true);				
				map.addOverlay(label)
				
				
				GEvent.addListener(marker, "click", function() {
					var html = '<strong>' + $(barcas[imo].barca).attr('Nm_Ship') + '</strong>'; 
						//'IMO:' + $(barcas[imo].barca).attr('Nr_IMO') + '<br />' + 
						//'Destino:' + $(barcas[imo].barca).attr('Nm_Destination') + '<br />' + 
						//'Velocidade:' + $(barcas[imo].barca).attr('Nr_SOG') + '<br />' + 
						//'Inclinação:' + $(barcas[imo].barca).attr('Nr_HDG') + '<br />' + 
						//'Longitude:' + $(barcas[imo].barca).attr('Nr_LongGMS') + '<br />' + 
						//'Latitude:' + $(barcas[imo].barca).attr('Nr_LatidGMS') + '<br />' + 
						//'Status:' + $(barcas[imo].barca).attr('Dc_NavStat') + '<br />' + 
						//'Sinal:' + $(barcas[imo].barca).attr('Cd_CallSign') + '<br />';
					marker.openInfoWindowHtml(html);
				});
			});
			//setTimeout(barcas.atualizar, 10000);
		});
/*		$.get('xml.php', function(data){
			var doc = $(document.createElement('div')).html(data);

			map.clearOverlays();
			
			$(data).find('/barca').each(function(){
				var barca = this;
				var imo = 'imo' + $(barca).attr('Nr_IMO');
				var latlng = new GLatLng('-'+ $(barca).attr('Original_LatidGDG'), '-' + $(barca).attr('Original_LongGDG'), true);
				if(!barcas[imo]){
					barcas[imo] = {
						'barca': barca,
						'points': []
					};
				}
				if(barcas[imo].points.length > 0 && !barcas[imo].points[barcas[imo].points.length - 1].equals(latlng)){
					barcas[imo].points.push(latlng);
				}
				barcas[imo].barca = barca;

				map.addOverlay(new GPolyline(barcas[imo].points, '#CC0000'));

				var marker = new GMarker(latlng);
				map.addOverlay(marker);
				
				GEvent.addListener(marker, "click", function() {
					var html = '<strong>' + $(barcas[imo].barca).attr('Nm_Ship') + '</strong><br />' + 
						'IMO:' + $(barcas[imo].barca).attr('Nr_IMO') + '<br />' + 
						'Destino:' + $(barcas[imo].barca).attr('Nm_Destination') + '<br />' + 
						'Velocidade:' + $(barcas[imo].barca).attr('Nr_SOG') + '<br />' + 
						'Inclinação:' + $(barcas[imo].barca).attr('Nr_HDG') + '<br />' + 
						'Longitude:' + $(barcas[imo].barca).attr('Nr_LongGMS') + '<br />' + 
						'Latitude:' + $(barcas[imo].barca).attr('Nr_LatidGMS') + '<br />' + 
						'Status:' + $(barcas[imo].barca).attr('Dc_NavStat') + '<br />' + 
						'Sinal:' + $(barcas[imo].barca).attr('Cd_CallSign') + '<br />';
					marker.openInfoWindowHtml(html);
				});
			});
//			setTimeout(barcas.atualizar, 1000);
		});*/
	}
};

$(document).ready(function(){
	if (GBrowserIsCompatible()) {
		map = new GMap2($('#map').get(0));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		var geocoder = new GClientGeocoder();
		
		
		var pointPo = new GLatLng(-24.791722, -47.175293);
		
		geocoder.getLatLng('santos, brazil', function(point) {
				if (!point) {
					alert("Local não encontrado");
				} else {
					map.setCenter(pointPo, 7);
					//map.setCenter(point, 12);
				}
		});
		GEvent.addListener(map, "load", barcas.iniciar);
	}

	$('#atualiza').click(function(e){
		barcas.atualizar();
		e.preventDefault();
	});
});


