/*******************************************************************************************
 * postcodePreLookup
 * Written by Craig Francis
 * Allow the
 *******************************************************************************************/

	var postcodePreLookup = new function() {

		//--------------------------------------------------
		// Do not allow older browsers to run this script

			if (!document.getElementById || !document.getElementsByTagName) {
				return;
			}

		//--------------------------------------------------
		// Initialisation

			this.init = function() {

				//--------------------------------------------------
				// Debug

					console.log('postcodePreLookup.js: Initialisation');

				//--------------------------------------------------
				// Support

					if (!GBrowserIsCompatible()) {
						console.log('postcodePreLookup.js: Google maps does not support browser');
						return;
					}

				//--------------------------------------------------
				// Local search

					postcodePreLookup.localSearch = new GlocalSearch();

				//--------------------------------------------------
				// Get the references

					var inputs = document.getElementsByTagName('input');
					for (var k = (inputs.length - 1); k >= 0; k--) {
						if (cssjs('check', inputs[k], 'jsPostcodePreLookup')) {
							postcodePreLookup.setup(inputs[k]);
						}
					}

			}

		//--------------------------------------------------
		// Setup

			this.setup = function(postcode) {

				//--------------------------------------------------
				// Debug

					console.log('postcodePreLookup.js: Found postcode (' + postcode.id + ')');

				//--------------------------------------------------
				// Parent form

					var form = getParent(postcode, 'form');
					if (!form) {
						console.log('postcodePreLookup.js: Failed finding parent form');
						return;
					}

				//--------------------------------------------------
				// On load

					form.postcodePreLookup = postcode;

					form.onsubmit = function() {

						//--------------------------------------------------
						// Remember current form

							postcodePreLookup.currentForm = form;

						//--------------------------------------------------
						// Build request

							console.log('postcodePreLookup.js: Prepare request');

							postcodePreLookup.localSearch.setSearchCompleteCallback(null,
								function() {

									//--------------------------------------------------
									// Got a response

										if (postcodePreLookup.localSearch.results[0]) {

											//--------------------------------------------------
											// Get values

												var resultLat = postcodePreLookup.localSearch.results[0].lat;
												var resultLng = postcodePreLookup.localSearch.results[0].lng;

												console.log('postcodePreLookup.js: Response "' + resultLat + ', ' + resultLng + '"');

											//--------------------------------------------------
											// Add hidden input fields

												var lat = createElement('input');
												lat.type = 'hidden';
												lat.name = 'latitude';
												lat.value = resultLat;
												form.appendChild(lat);

												var lng = createElement('input');
												lng.type = 'hidden';
												lng.name = 'longitude';
												lng.value = resultLng;
												form.appendChild(lng);

										} else {

											//--------------------------------------------------
											// Debug

												console.log('postcodePreLookup.js: Response "none"');

										}

									//--------------------------------------------------
									// Submit the form

										postcodePreLookup.currentForm.onsubmit = null;
										postcodePreLookup.currentForm.submit();

								});

						//--------------------------------------------------
						// Value

							var value = this.postcodePreLookup.value;

							if (value == '') {
								console.log('postcodePreLookup.js: No value');
								return true;
							}

						//--------------------------------------------------
						// Send request

							console.log('postcodePreLookup.js: Query "' + value + '"');

							postcodePreLookup.localSearch.execute(value);

						//--------------------------------------------------
						// Don't submit the form yet

							return false;

					}

			}

		//--------------------------------------------------
		// When the page has loaded, run the init function

			addLoadEvent (function() {
				postcodePreLookup.init();
			});

	}

