﻿var NgatiPorou = function() {
	var self = $(this);
	var webservice = "/WebService/Service.svc/";

	self.HapuClusterForMarae = function(maraeId, callback) {
		$.getJSON(webservice + "HapuClusterForMarae",
			{ maraeId: maraeId, random: Math.random() }, callback);
	};

	self.RoheForMarae = function(maraeId, callback) {
		$.getJSON(webservice + "RoheForMarae",
			{ maraeId: maraeId, random: Math.random() }, callback);
	};

	self.AllMarae = function(callback) {
		$.getJSON(webservice + "AllMarae",
			{ random: Math.random() }, callback);
	};

	self.SearchPostcode = function(postcodeStart, callback) {
		$.getJSON(webservice + "SearchPostcode",
		{ postcodeStart: postcodeStart }, callback);
	};

	 return self;
} ();

$(function() {
	// only run this setup if the page we are viewing contains manual address details
	if ($('#manualaddressdetails').is('*')) {

		var manual = $('#manualaddressdetails');


		var geocode = $('<table cellpadding="5" cellspacing="0" border="0" />');
		var controlsrow = $('<tr />').appendTo(geocode);

		controlsrow.append('<td valign="top">Address:</td>')
		var geocodeaddress = $('<textarea class="textbox"></textarea>')
			.appendTo(controlsrow)
			.wrap('<td valign="top" />');
		var geocodesearch = $('<a href="#" class="button"><span>Search</span></a>')
			.appendTo(controlsrow)
			.wrap('<td valign="top" />');

		var informationrow = $('<tr />').appendTo(geocode);
		var manualoption = $('<a href="#">My address isn\'t available, or my address is incorrect, or I would like to enter my address manually</a>')
			.appendTo(informationrow)
			.wrap('<td colspan="3" valign="top" />');

		//manual.before(geocode);
		//manual.hide();

		// http://code.google.com/apis/maps/documentation/javascript/services.html#GeocodingResults
		geocodesearch.click(function() {
			var geocoder = new google.maps.Geocoder();

			if (!geocoder) {
				alert('failed');
				return;
			}

			geocoder.geocode({
				address: geocodeaddress.val(),
				region: 'nz'
			},
		function(results, status) {
			if (status != google.maps.GeocoderStatus.OK) {
				alert('failed: ' + status);
				return;
			}

			var message = '';
			$.each(results, function(key, value) {
				// ignore results that don't have a street address
				if ($.inArray('street_address', value.types) === -1)
					return;
				message += value.formatted_address;
				message += '\n'
			});
			geocodeaddress.val(message);
		});

			return false;
		});

		manualoption.click(function() {
			manual.show();
			geocode.hide();
			return false;
		});
	}
});
