// Google Maps Code
google.load("maps", "2.x");
var map, marker, address;

function initialize() {
if (GBrowserIsCompatible()) {
	map = new google.maps.Map2(document.getElementById("map"));
	geoXml = new GGeoXml("http://spreadsheets.google.com/pub?key=pS2jdfEjU9xRfZMmpXmlHTA&output=txt&gid=0&range=kml_output&time1=3957331");
	map.addControl(new GLargeMapControl());
	var mapControl = new GMapTypeControl();
	map.addControl(mapControl);
	map.enableScrollWheelZoom();
	map.setCenter(new GLatLng(35.26, -80.84), 10);
	map.addOverlay(geoXml);	
}
}

function createMarker(longitude, latitude, msg) {
	var point = new GLatLng(latitude, longitude);
	if (marker) map.removeOverlay(marker);
	marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<b>" + msg + "</b><br />This is the address you have selected.");
	});
	 map.addOverlay(marker);
	map.setCenter(point, 11);
}

google.setOnLoadCallback(initialize);


// Page code (jQuery, geocode, etc.)
var wsbase = "http://maps.co.mecklenburg.nc.us/rest/";
var pager_index = 1;
var pager_max = 0;


function urlencode(str) {
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
}
function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

/* Table pager function */
function page(page) {
	if (page=="previous") {
		if (pager_index > 1) {
			pager_index = pager_index - 1;
			max_page = pager_index * 5 - 1;
			min_page = max_page - 4;
			$('#page > tbody > tr').show();
			$('#page > tbody > tr:gt(' + max_page + ')').hide();
			$('#page > tbody > tr:lt(' + min_page + ')').hide();
		}
	}
	else if (page=="next") {
		if (pager_index < pager_max) {
			pager_index = pager_index + 1;
			max_page = pager_index * 5 - 1;
			min_page = max_page - 4;
			$('#page > tbody > tr').show();
			$('#page > tbody > tr:gt(' + max_page + ')').hide();
			$('#page > tbody > tr:lt(' + min_page + ')').hide();
		}
	}
}

// Street name autocomplete
$(window).load(function () {				
	setAutoComplete("streetname", "results", "http://maps.co.mecklenburg.nc.us/rest/v1/ws_mat_streetname.php?format=json&jsonp=?&callback=ws_autosuggest&streetname=");				
	setClickable();
});

// Geocode
function setClickable() {
	$('#geocodebtn').click(function() {
		url = wsbase + "v1/ws_mat_geocode.php?format=json&callback=ws_geocode&jsonp=?";
		args = "&housenum=" + urlencode($('#housenum').val()) + "&streetname=" + urlencode($('#streetname').val());
		url = url + args + "&roadtype=&suffix=&zipcode=&city=&unit=&prefix=";
		$.getJSON(url);
	})
}
function ws_geocode(data) {
	if (data.total_rows > 0 ) {
	  html = '<table class="datatable" id="page" style="width: 100%;"><thead><tr><th>&nbsp;</th><th>SEARCH RESULTS</th></tr><thead><tbody>';
	  $.each(data.rows, function(i, item){
		if (item.row.x_coordinate > 0) {				    
			address = item.row.house_number + ' ' + item.row.prefix + ' ' + item.row.street_name + ' ' + item.row.road_type + ' ' + item.row.suffix + ' ' + item.row.unit + ', ' + item.row.postal_city;			    		   				
			selectclick = item.row.longitude + "," + item.row.latitude + "," + "'You Are Here!'"; 
			radio = '<input type="radio" name="selectresult" value="' + item.row.objectid + '" onClick="createMarker(' + selectclick + ');" />';
			html += '<tr><td width="10px">' + radio + '</td><td>' + address + '</td></tr>';
		}
	  });
	  html += '<tfoot><td colspan="2"><a href="#" onclick="page(\'previous\'); return false;">&lt;&lt; Previous</a> <a href="#" onclick="page(\'next\'); return false;">Next &gt;&gt;</a></td></tfoot></tbody></table>';
	  $('#searchresults').html(html);
	  $('#page > tbody > tr:gt(4)').hide();
	  pager_max = Math.ceil(data.total_rows / 5);
	  pager_index = 1;
	  $('#page > tbody > tr:eq(0) > td:eq(0) > input:eq(0)').click();
	}
	else if (data.total_rows == 0 ) {
			$('#searchresults').html("<p>No records found.</p>");
	}
	else {
			$('#searchresults').html("<p>The search returned an error.</p>");
	}
}