google.load("maps", "2");
var map;
var previous_centre;
var reload_diff = 0.1;
var expand_search = 2;
function initmaps() {
	map = new google.maps.Map2(document.getElementById("gMapHolder"));
	map.addControl(new GLargeMapControl());
	map.setMapType(G_SATELLITE_MAP);
    map.setCenter(new google.maps.LatLng(27.78441658821505,86.72401428222656), 12);
	previous_centre = map.getCenter();
	add_lines_to_map(map,true);
	GEvent.addListener(map, "moveend", function() {
		add_lines_to_map(map,false);
	});
}

function add_lines_to_map(mapObj,force) {
		var data = getedges(mapObj,profile_id);	
		var point;
		if (data['north'] - previous_centre['north'] > reload_diff || data['north'] - previous_centre['north'] < reload_diff*-1 || 
		    data['east'] - previous_centre['east'] > reload_diff || data['east'] - previous_centre['east'] < reload_diff*-1 || force) 
		{
			previous_centre = getedges(mapObj,'');
			$.getJSON('relay.php',data, function(json)
			{
				
				var lastpoint = false;
				mapObj.clearOverlays();
			    for (x in json) {
					if (lastpoint) {
						point = new GLatLng(json[x].lat,json[x].lon);
						var line = new GPolyline([lastpoint,point], "#ff0000", 5, 1,{'geodesic':true});
						mapObj.addOverlay(line);
						lastpoint = point;
					} else {
						lastpoint = new GLatLng(json[x].lat,json[x].lon);
					}
			  	}
				mapObj.addOverlay(new GMarker(point));
				if (force) map.setCenter(point, 12);
				return point;
			});
		} 
		else 
		{
			return false;			
		}
		
}


function getedges(mapObj,profile_id) {
	var b = mapObj.getBounds();
	var sw = b.getSouthWest();
	var ne = b.getNorthEast();
	var bounds = {
		'north':ne.lat()+expand_search,
		'south':sw.lat()-expand_search,
		'east':ne.lng()+expand_search,
		'west':sw.lng()-expand_search,
		'vspan': ne.lat()-sw.lat(),
		'hspan': ne.lng()-sw.lng(),
		'profile_id':profile_id,
		'limit':75
		};
	return bounds;
}

$(document).ready(function() {
	$.ajaxSetup({ 
		timeout: 50000 
	});
	google.setOnLoadCallback(initmaps);
});

$(window).unload( function () {
	GUnload();
});

