var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
var geocoder;
var startLat;
var startLon;
var endLat;
var endLon;
var viaLat;
var viaLon;
var listContainer = $("#suggest_list");

var fromMultiple = false;
var toMultiple = false;
var viaMultiple = false;

function strpos (haystack, needle, offset) {
	var i = (haystack + '').indexOf(needle, (offset || 0));
	return i === -1 ? false : i;
}

function initialize() {
	//alert('test');

	var rendererOptions = {
		draggable: true
	};

	directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
	geocoder = new google.maps.Geocoder();

	var london = new google.maps.LatLng(51.500152,-0.126236);

	var myOptions = {
		zoom: 12,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		center: london,
		streetViewControl: false,
		mapTypeControl: false
	}

	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	directionsDisplay.setMap(map);

	google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
		//alert(fromMultiple + ' - ' + toMultiple + ' - ' + viaMultiple);

		//Reverse Geocoding Update
		if ( directionsDisplay.directions.status == 'OK' ) {
			//Multiple stops
			if ( directionsDisplay.directions.routes[0].legs.length == 2 ) {
				var start_address = directionsDisplay.directions.routes[0].legs[0].start_address;
				var via_address = directionsDisplay.directions.routes[0].legs[0].end_address;
				var end_address = directionsDisplay.directions.routes[0].legs[1].end_address;
			} else {
				var start_address = directionsDisplay.directions.routes[0].legs[0].start_address;
				var end_address = directionsDisplay.directions.routes[0].legs[0].end_address;
			}

			//console.log(directionsDisplay);

			if ( fromMultiple === true ) { $('#frm_from_address').val(start_address); }
			if ( toMultiple === true ) { $('#frm_to_address').val(end_address); }
			if ( viaMultiple === true ) {
				if ( directionsDisplay.directions.routes[0].legs.length == 2 ) {
					$('#frm_via_address').val(via_address);
				}
			}

			var fromMultiple = false;
			var toMultiple = false;
			var viaMultiple = false;
		}

		computeTotalDistance(directionsDisplay.directions);
	});
}

function fn_search_address(searchField) {
   // clear out the default values in the address
   fn_clear_field(searchField);
   // check the address is set before searching..
	if ( searchField == 'from' ) {
		if ($("#frm_from_address").val() == ''){
			address = 'EMPTY:';
			$('#fromNOK').show(); $('#fromOK').hide();
		} else {
			if ($("#frm_from_address").val().length <= 5 ){
				$('#fromNOK').show(); $('#fromOK').hide();
				address = 'EMPTY:';
				$('#errorDIV').html('Please enter more address details');
				$('#errorDIV').show();
				$('#errorDIV').delay(3000).fadeOut(7000);
			} else if ($('#fromSearch').val() == 'YES') {
				var address = $("#frm_from_address").val() + ', London, UK';
			} else {address = 'EMPTY:';}

		}
	}
	if ( searchField == 'to' ) {
		if ($("#frm_to_address").val() == ''){
			address = 'EMPTY:';
			$('#toNOK').show(); $('#toOK').hide();
		} else {
			if ($("#frm_to_address").val().length <= 5){
				address = 'EMPTY';
				$('#toNOK').show(); $('#toOK').hide();
				$('#errorDIV').html('Please enter more address details');
				$('#errorDIV').show();
				$('#errorDIV').delay(3000).fadeOut(7000);
			} else if ($('#toSearch').val() == 'YES'){
				var address = $("#frm_to_address").val() + ', London, UK';
				} else {address = 'EMPTY:';}

		}
	}
	if ( searchField == 'via' ) {
		if ($("#frm_via_address").val() == ''){
			address = 'EMPTY:';
			$('#viaNOK').show(); $('#viaOK').hide();
		} else {
			if ($("#frm_via_address").val().length <= 5){
				$('#viaNOK').show(); $('#viaOK').hide();
				$('#errorDIV').html('Please enter more address details');
				$('#errorDIV').show();
				$('#errorDIV').delay(3000).fadeOut(7000);
			} else if ($('#toSearch').val() == 'YES'){
				var address = $("#frm_via_address").val() + ', London, UK';
				} else {address = 'EMPTY:';}

		}
	}


	if (address != 'EMPTY:'){
	geocoder.geocode({
			'address' : address,
			'region': 'uk'
		},
		function(results, status) {
			if ( status != 'ZERO_RESULTS' ) {
				if ( results.length > 1 ) {
					if ( searchField == 'from' ) { fromMultiple = true; }
					if ( searchField == 'to' ) { toMultiple = true; }
					if ( searchField == 'via' ) { viaMultiple = true; }

					if ( status == google.maps.GeocoderStatus.OK && results[0] ) {
						geocoder.firstItem = results[0];
						clearListItems();

						var len = results.length;

						for( var i=0; i<len; i++ ) {
							addListItem(results[i], searchField);
						}
						if ( searchField == 'from' ) {
							$('#fromOK').hide(); $('#fromNOK').show();
						}
						if ( searchField == 'to' ) {
							$('#toOK').hide(); $('#toNOK').show();
						}
						if ( searchField == 'via' ) {
							$('#viaOK').hide(); $('#viaNOK').show();
						}
					} // end of if status = google
				} else {
					var est   = '';
					var pc    = '';
					var sn    = '';
					var addr1 = '';
					var addr2 = '';
					var sub   = '';
					var local = '';
					var faddr = results[0].formatted_address;
					$.each(results[0].address_components, function (i, address_component) {
						if (address_component.types[0] == "establishment") { est=address_component.long_name; }
						if (address_component.types[0] == "postal_code_prefix") { pc=address_component.long_name; }
						if (address_component.types[0] == "postal_code") { pc=address_component.long_name; }
						if (address_component.types[0] == "street_number") { sn=address_component.long_name; }
						if (address_component.types[0] == "route") { addr1=address_component.long_name; }
						if (address_component.types[0] == "sublocality") { sub =address_component.long_name; }
						if (address_component.types[0] == "administrative_area_level_3") { addr2=address_component.long_name; }
						if (address_component.types[0] == "locality") { local = address_component.long_name; }
					});
					clearListItems();
					// why not put the address in the boxes now.. Rather than do it in the calcroute stuff?
					if ( $("#frm_from_address").val() != 'Type address or select airport or train station from quick links' ) {
						if (searchField == 'from'){
							$('#frm_from_venue').val(est);
							$('#frm_from_postcode').val(pc);
							if (addr1 == ''){
									if (!(sub == '')){
										$('#frm_from_address1').val(sub);
									}
								} else {
									if (!(sn=='')){
										$('#frm_from_address1').val(sn + ',' + addr1);
									} else {$('#frm_from_address1').val(addr1);}
								}
							if (!(addr2=='')){
								$('#frm_from_address2').val(addr2);
							} else if (!(local=='')){
								$('#frm_from_address2').val(local);
							}
							if ($('#frm_from_address1').val() == ''){
								$('#fromOK').hide(); $('#fromNOK').show();
								$('#errorDIV').html('Please enter more address details');
								$('#errorDIV').show();
								$('#errorDIV').delay(3000).fadeOut(7000);
							} else {
								$('#fromChecker').val('ok');
								$('#fromOK').show(); $('#fromNOK').hide();
							}
							$('#frm_from_address').val($('#frm_from_venue').val() + ' ' + $('#frm_from_address1').val()  + ' ' + $('#frm_from_address2').val()   + ' ' + $('#frm_from_postcode').val());
						}
					}

					if ( $("#frm_to_address").val() != 'Example: 10 downing street, London SW1A 2AA' ) {
						if (searchField=='to'){
							$('#frm_to_venue').val(est);
							$('#frm_to_postcode').val(pc);
							if (addr1 == ''){
									if (!(sub == '')){
										$('#frm_to_address1').val(sub);
									}
								} else {
									if (!(sn=='')){
										$('#frm_to_address1').val(sn + ',' + addr1);
									} else {$('#frm_to_address1').val(addr1);}
								}
							if (!(addr2=='')){
								$('#frm_to_address2').val(addr2);
							} else if (!(local=='')){
								$('#frm_to_address2').val(local);
							}
							if ($('#frm_to_address1').val() == ''){
								$('#toOK').hide(); $('#toNOK').show();
								$('#errorDIV').html('Please enter more address details');
								$('#errorDIV').show();
								$('#errorDIV').delay(3000).fadeOut(7000);
							} else {
								$('#toChecker').val('ok');
								$('#toOK').show(); $('#toNOK').hide();
							}
							$('#frm_to_address').val($('#frm_to_venue').val() + ' ' + $('#frm_to_address1').val()  + ' ' + $('#frm_to_address2').val()   + ' ' + $('#frm_to_postcode').val());
						}

					}

					p = strpos( $("#frm_via_address").val(), 'Example' );
					if ( p === false ) {

						if ( $("#frm_via_address").val() != '' && $("#frm_triptype").val() == 'dropvia' ) {
								if (searchField == 'via'){
									$('#frm_via_venue').val(est);
									$('#frm_via_postcode').val(pc);
									if (addr1 == ''){
											if (!(sub == '')){
												$('#frm_via_address1').val(sub);
											}
										} else {
											if (!(sn=='')){
												$('#frm_via_address1').val(sn + ',' + addr1);
											} else {$('#frm_via_address1').val(addr1);}
										}
									if (!(addr2=='')){
										$('#frm_via_address2').val(addr2);
									} else if (!(local=='')){
										$('#frm_via_address2').val(local);
									}
								fn_getPAFAddress(address,searchField);
								$('#frm_via_address').val($('#frm_via_venue').val() + ' ' + $('#frm_via_address1').val()  + ' ' + $('#frm_via_address2').val()   + ' ' + $('#frm_via_postcode').val());
								$('#viaOK').show(); $('#viaNOK').hide();
								$('#viaChecker').val('ok');
								}

						}// end of if via addr
					}// end of if check3

					fn_calcRoute(searchField);

				}
			} else {
				// zero results
				if ( searchField == 'from' ) {
					$('#fromOK').hide(); $('#fromNOK').show();
				}
				if ( searchField == 'to' ) {
					$('#toOK').hide(); $('#toNOK').show();
				}
				if ( searchField == 'via' ) {
					$('#viaOK').hide(); $('#viaNOK').show();
				}
			}
		}
	);

	}

}
function fn_getPAFAddress(addr,searchField) {
	// Lets set it up to call the php soap stuff on the server
		var request = $.ajax({
			url:'pafaddr.php',
			type: 'POST',
			data: "addr=" + addr ,
			success: function (data) {
				$('input[type="submit"]').attr('disabled','disabled');
				var count = 0;
				if (data.success){
					if (data.numberOfResults === 1){
						venue = data.address.premise.formattedPremise;
						if (venue=='undefined'){venue='';}
						addr1 = data.address.street;
						if (addr1=='undefined'){addr1='';}
						addr2 = data.address.postTown;
						if (addr2=='undefined'){addr2='';}
						pcode = data.address.postcode;
						if (pcode=='undefined'){pcode='';}
						/// Now change the form to match
						// And turn off any errors we are showing...
						if ( searchField == 'from' ) {
							if (!(venue =='')){
								$('#frm_from_venue').val(venue);
								full = venue;
							}
							if (!(addr1 =='')){
								$('#frm_from_address1').val(addr1);
								full += ', ' + addr1;
							}
							if (!(addr2 =='')){
								$('#frm_from_address2').val(addr2);
								full += ', ' + addr2;
							}
							if (!(pcode =='')){
								$('#frm_from_postcode').val(pcode);
								full += ', ' + pcode;
							}
							$('#frm_from_address').val(full);
							// check if we have any undefined stuff
							if (full.indexOf('undefined') == -1){
								$('#fromOK').show(); $('#fromNOK').hide();
							} else {
								$('#fromOK').hide(); $('#fromNOK').hide();
							}



						}
						if ( searchField == 'to' ) {
							if (!(venue =='')){
								$('#frm_to_venue').val(venue);
								full = venue;
							}
							if (!(addr1 =='')){
								$('#frm_to_address1').val(addr1);
								full += ', ' + addr1;
							}
							if (!(addr2 =='')){
								$('#frm_to_address2').val(addr2);
								full += ', ' + addr2;
							}
							if (!(pcode =='')){
								$('#frm_to_postcode').val(pcode);
								full += ', ' + pcode;
							}
							$('#frm_to_address').val(full);
							if (full.indexOf('undefined') == -1){
								$('#toOK').show(); $('#toNOK').hide();
							} else {
								$('#toOK').hide(); $('#toNOK').hide();
							}
						}
						if ( searchField == 'via' ) {
							if (!(venue =='')){
								$('#frm_via_venue').val(venue);
								full = venue;
							}
							if (!(addr1 =='')){
								$('#frm_via_address1').val(addr1);
								full += ', ' + addr1;
							}
							if (!(addr2 =='')){
								$('#frm_via_address2').val(addr2);
								full += ', ' + addr2;
							}
							if (!(pcode =='')){
								$('#frm_via_postcode').val(pcode);
								full += ', ' + pcode;
							}
							$('#frm_via_address').val(full);
							if (full.indexOf('undefined') == -1){
								$('#viaOK').show(); $('#viaNOK').hide();
							} else {
								$('#viaOK').hide(); $('#viaNOK').hide();
							}
						}
					} else {
						// Lets count the results before we do anythine else..
						// add them to the list of possible addresses
						for( var i=0; i<data.numberOfResults; i++ ) {
							if ((data.address[i].premise instanceof Array) &&
							   (data.address[i].matchValue > 85 )){
								count += data.address[i].premise.length;
							} else if (data.address[i].matchValue > 85 )
								 {count += 1;}
						}
						// if we have more than 30 then tell them to sod off
						if (count > 30){
							$('#errorDIV').html(count + ' address details found');

							$('#errorDIV').show();
							$('#errorDIV').delay(3000).fadeOut(7000);

						} else {
							for( var i=0; i<data.numberOfResults; i++ ) {
								if (data.address[i].matchValue > 75){
									// if it is over 98% lets just use it...
									if (data.address[i].matchValue > 98) {
										addr1 = data.address[i].street;
										if (addr1=='undefined'){addr1='';}
										addr2 = data.address[i].postTown;
										if (addr2=='undefined'){addr2='';}
										pcode = data.address[i].postcode;
										if (pcode=='undefined'){pcode='';}
										if ( searchField == 'from' ) {
											if (!(addr1 =='')){
												$('#frm_from_address1').val(addr1);
											}
											if (!(addr2 =='')){
												$('#frm_from_address2').val(addr2);
											}
											if (!(pcode =='')){
												$('#frm_from_postcode').val(pcode);
											}
											$('#frm_from_address').val($('#frm_from_venue').val() + ' ' + $('#frm_from_address1').val()  + ' ' + $('#frm_from_address2').val()   + ' ' + $('#frm_from_postcode').val());
										}
										if ( searchField == 'to' ) {
											if (!(addr1 =='')){
												$('#frm_to_address1').val(addr1);
											}
											if (!(addr2 =='')){
												$('#frm_to_address2').val(addr2);
											}
											if (!(pcode =='')){
												$('#frm_to_postcode').val(pcode);
											}
											$('#frm_to_address').val($('#frm_to_venue').val() + ' ' + $('#frm_to_address1').val()  + ' ' + $('#frm_to_address2').val()   + ' ' + $('#frm_to_postcode').val());
										}
										if ( searchField == 'via' ) {
											if (!(addr1 =='')){
												$('#frm_via_address1').val(addr1);
											}
											if (!(addr2 =='')){
												$('#frm_via_address2').val(addr2);
											}
											if (!(pcode =='')){
												$('#frm_via_postcode').val(pcode);
											}
											$('#frm_via_address').val($('#frm_via_venue').val() + ' ' + $('#frm_via_address1').val()  + ' ' + $('#frm_via_address2').val()   + ' ' + $('#frm_via_postcode').val());
										}
									break;
									}
									addr1 = data.address[i].street;
									if (addr1=='undefined'){addr1='';}
									addr2 = data.address[i].postTown;
									if (addr2=='undefined'){addr2='';}
									pcode = data.address[i].postcode;
									if (pcode=='undefined'){pcode='';}
									if (data.address[i].premise instanceof Array){
										for ( var j=0;j< data.address[i].premise.length;j++) {
											venue = data.address[i].premise[j].formattedPremise;
											if (venue=='undefined'){venue='';}
											if (!(venue =='')){	full = venue;}
											if (!(addr1 =='')){	full += ', ' + addr1;}
											if (!(addr2 =='')){ full += ', ' + addr2;}
											if (!(pcode =='')){ full += ', ' + pcode;}
											var row = document.createElement("li");
											row.innerHTML = '<a href="javascript:" onClick="fn_set_address(\'' + full + '\',\'' + venue + '\',\'' + addr1  + '\',\'' + addr2 +  '\',\'' + pcode + '\',\'' + searchField + '\');">' + full + '</a>';
											row.className = "list_item";
											$("#suggest_list").append(row);
										}
									} else {
										venue = data.address[i].premise.formattedPremise;
										if (venue=='undefined'){venue='';}
										if (!(venue =='')){	full = venue;}
										if (!(addr1 =='')){	full += ', ' + addr1;}
										if (!(addr2 =='')){ full += ', ' + addr2;}
										if (!(pcode =='')){ full += ', ' + pcode;}
										var row = document.createElement("li");
										row.innerHTML = '<a href="javascript:" onClick="fn_set_address(\'' + full + '\',\'' + venue + '\',\'' + addr1  + '\',\'' + addr2 +  '\',\'' + pcode + '\',\'' + searchField + '\');">' + full + '</a>';
										row.className = "list_item";
										$("#suggest_list").append(row);
									}

								}
							}
								$("#suggest_list").show();
						} // end of else > 25
					   } // end of else results > 1
					} else	{
						// Display an update on page??? - NOt a success SOAP call
				}
				$('input[type="submit"]').removeAttr('disabled');

			}
			});
}

function fn_calcRoute(searchField) {
		var showMapChanges = '';

		var start = $("#frm_from_address").val() + ', London, UK';
		var end = $("#frm_to_address").val() + ', London, UK';
		var waypoint = $("#frm_via_address").val() + ', London, UK';
		geocoder.geocode({'address': start}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				$('#frm_start_lat').val( results[0].geometry.location.lat() );
				$('#frm_start_long').val( results[0].geometry.location.lng() );
				fn_plot_map();
			}
		});

		geocoder.geocode({'address': end}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {

				$('#frm_end_lat').val( results[0].geometry.location.lat() );
				$('#frm_end_long').val( results[0].geometry.location.lng() );
				fn_plot_map();
			}
		});
		geocoder.geocode({'address': waypoint}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {

				$('#frm_via_lat').val( results[0].geometry.location.lat() );
				$('#frm_via_long').val( results[0].geometry.location.lng() );
				fn_plot_map();
			}
		});


}

function fn_plot_map() {
	var showMapChanges = 'ok';
	var start = $("#frm_from_address").val() + ', London, UK';
	var waypoint = $("#frm_via_address").val() + ', London, UK';
	var end = $("#frm_to_address").val();
	if (end === ''){
		showMapChanges = 'NO';
	} else {
		end += ', London, UK';
	if ( $("#frm_triptype").val() != 'dropvia' ) {
		if ( $('#fromChecker').val() != '' && $('#toChecker').val() != '' ) {
			showMapChanges = 'ok';
		}
	} else {
		if ( $('#fromChecker').val() != '' && $('#toChecker').val() != '' && $('#viaChecker').val() != '' ) {
			showMapChanges = 'ok';
		}
	}
	}


//	if ( showMapChanges == 'ok' ) {
		if ( $("#frm_triptype").val() != 'dropvia' ) {
			var request = {
				origin: start,
				destination: end,
				travelMode: google.maps.DirectionsTravelMode.DRIVING, //We do drive the taxis ...
				unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL //Show units in Miles
			};
		} else {
			var request = {
				origin: start,
				destination: end,
				waypoints: [{location: waypoint}],
				travelMode: google.maps.DirectionsTravelMode.DRIVING, //We do drive the taxis ...
				unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL //Show units in Miles
			};
		}
		directionsService.route(request, function(result, status) {
			if (status == google.maps.DirectionsStatus.OK) {
				distanceInMiles = result.routes[0].legs[0].distance.text; //Get the distance
				$('#distanceDIV').html(distanceInMiles);
				directionsDisplay.setDirections(result); //Show result
				computeTotalDistance(result);
			}
		});
//	}
}

function fn_calcRoute_home() {
	if ( $("#frm_from_address").val() != '' && $("#frm_to_address").val() != '' ) {
		var start = $("#frm_from_address").val();
		var end = $("#frm_to_address").val();
		if ( $("#frm_via_address").val() != '' && $("#frm_triptype").val() == 'dropvia' ) {
			var waypoint = $("#frm_via_address").val();
		} else {
			var waypoint = '';
		}

		if ( waypoint == '' ) {
			var request = {
				origin: start,
				destination: end,
				travelMode: google.maps.DirectionsTravelMode.DRIVING, //We do drive the taxis ...
				unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL //Show units in Miles
			};
		} else {
			var request = {
				origin: start,
				destination: end,
				waypoints: [{location: waypoint}],
				travelMode: google.maps.DirectionsTravelMode.DRIVING, //We do drive the taxis ...
				unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL //Show units in Miles
			};
		}

		directionsService.route(request, function(result, status) {
			//console.log(result);
			if (status == google.maps.DirectionsStatus.OK) {
				distanceInMiles = result.routes[0].legs[0].distance.text; //Get the distance
				$('#distanceDIV').html(distanceInMiles);
				directionsDisplay.setDirections(result); //Show result
			}
		});
	}
}

function computeTotalDistance(result) {
	var total = 0;
	var myroute = result.routes[0];

	//console.log(result.routes[0]);

	for (i = 0; i < myroute.legs.length; i++) {
		total += myroute.legs[i].distance.value;
	}

	total = total / 1609.344;
	total = total.toFixed(2);

	//console.log(total);

	$("#frm_distance").val(total);
	$("#distanceText").html('Distance: ' + total + ' miles');
	$("#distanceText").show();
}

function addListItem(resp, searchField){
	var loc = resp || {};

//	if ( loc.geometry.location_type != 'APPROXIMATE' ) {
		var formatted_address = loc.formatted_address;
		var est   = '';
		var pc    = '';
		var sn    = '';
		var addr1 = '';
		var addr2 = '';
		var sub   = '';
		var local = '';
		var subway = '';
		var bus = '';
		for (var i =0; i<loc.address_components.length;i++){
        	addr = loc.address_components[i].long_name;
        	type = loc.address_components[i].types[0];
			if (type == "establishment") { est=addr; }
			if (type == "postal_code_prefix") { pc=addr; }
			if (type == "postal_code") { pc=addr; }
			if (type == "street_number") { sn=addr; }
			if (type == "route") { addr1=addr; }
			if (type == "sublocality") { sub =addr; }
			if (type == "administrative_area_level_3") { addr2=addr; }
			if (type == "locality") { local = addr; }
			if (type == "subway_station") {subway = addr;}
			if (type == "bus_station") {bus = addr;}
        }
		venue = est;
		if (subway != ''){
			if (venue == '')
				venue = subway + ' Subway';
		}
		if (bus != ''){
			if (venue == '')
				venue = bus;
		}
		if (sn != '')
			addr1 = sn + ',' + addr1;
		if (sub != '')
			addr2 = sub + ',' + addr2;
		if (local != '')
			addr2 = addr2 + ',' + local;


		var row = document.createElement("li");
		row.innerHTML = '<a href="javascript:" onClick="fn_set_address(\'' + formatted_address + '\',\'' + venue + '\',\'' + addr1 + '\',\'' + addr2 + '\',\'' + pc + '\',\'' + searchField + '\');">' + formatted_address + '</a>';
//		alert(row.innerHTML);
		row.className = "list_item";

		$("#suggest_list").append(row);
//	}
	$("#suggest_list").show();
}

// clear list
function clearListItems() {
	$("#suggest_list").hide();
	$("#suggest_list").html('');
}

function fn_set_address( address, venue, addr1,addr2,postal_code, searchField ) {
	if ( searchField == 'from' ) {
		$('#frm_from_address').val(address);
		$('#frm_from_venue').val(venue);
		$('#frm_from_address1').val(addr1);
		$('#frm_from_address2').val(addr2);
		$('#frm_from_postcode').val(postal_code);
		$('#fromOK').show(); $('#fromNOK').hide();
		$('#fromSearch').val('NOT');
		$('#fromSearchButton').hide();
		$('#fromQuickLinks').show();
	}
	if ( searchField == 'to' ) {
		$('#frm_to_address').val(address);
		$('#frm_to_venue').val(venue);
		$('#frm_to_address1').val(addr1);
		$('#frm_to_address2').val(addr2);
		$('#frm_to_postcode').val(postal_code);
		$('#toOK').show(); $('#toNOK').hide();
		$('#toSearch').val('NOT');
		$('#toSearchButton').hide();
		$('#toQuickLinks').show();
	}
	if ( searchField == 'via' ) {
		$('#frm_via_address').val(address);
		$('#frm_via_venue').val(venue);
		$('#frm_via_address1').val(addr1);
		$('#frm_via_address2').val(addr2);
		$('#frm_via_postcode').val(postal_code);
		$('#viaOK').show(); $('#viaNOK').hide();
		$('#viaSearch').val('NOT');
		$('#viaSearchButton').hide();
		$('#viaQuickLinks').show();
	}

	fn_calcRoute(searchField);
//	fn_getPAFAddress(searchField);
	clearListItems();
}

function fn_clear_field(whatField) {
	if ( whatField == 'from' ) {
		fn_clear_fromAddress();
		if ( $('#frm_from_address').val() == 'Type address or select airport or train station from quick links' ) {
			$('#frm_from_address').removeClass('dummyText');
			$('#frm_from_address').val('');
		}
	}
	if ( whatField == 'to' ) {
		fn_clear_toAddress();
		if ( $('#frm_to_address').val() == 'Example: 10 downing street, London SW1A 2AA' ) {
			$('#frm_to_address').removeClass('dummyText');
			$('#frm_to_address').val('');
		}
	}
	if ( whatField == 'via' ) {
		fn_clear_viaAddress();
		if ( $('#frm_via_address').val() == 'Example: Kings Cross' ) {
			$('#frm_via_address').removeClass('dummyText');
			$('#frm_via_address').val('');
		}
	}
}

function fn_clear_fromAddress(){
	$('#fromSearch').val('YES');
	$('#fromSearchButton').show();
	$('#fromOK').hide();
	$('#fromNOK').hide();
	$('#frm_from_venue').val('');
	$('#frm_from_address_number').val('');
	$('#frm_from_address1').val('');
	$('#frm_from_address2').val('');
	$('#frm_from_postcode').val('');
}
function fn_clear_toAddress(){
	$('#toSearch').val('YES');
	$('#toSearchButton').show();
	$('#toOK').hide();
	$('#toNOK').hide();
	$('#frm_to_venue').val('');
	$('#frm_to_address_number').val('');
	$('#frm_to_address1').val('');
	$('#frm_to_address2').val('');
	$('#frm_to_postcode').val('');
}
function fn_clear_viaAddress(){
	$('#viaSearch').val('YES');
	$('#viaSearchButton').show();
	$('#viaOK').hide();
	$('#viaNOK').hide();
	$('#frm_via_venue').val('');
	$('#frm_via_address_number').val('');
	$('#frm_via_address1').val('');
	$('#frm_via_address2').val('');
	$('#frm_via_postcode').val('');
}


function fn_set_field(whatField) {
//alert('Leaving:' + whatField);
	if ( whatField == 'from' ) {
		if ( $('#frm_from_address').val() == '' ) {
			$('#frm_from_address').addClass('dummyText');
			$('#frm_from_address').val('Type address or select airport or train station from quick links');
			fn_clear_fromAddress();
		} else {
			fn_search_address(whatField);
		}
	}

	if ( whatField == 'to' ) {
		if ( $('#frm_to_address').val() == '' ) {
			$('#frm_to_address').addClass('dummyText');
			$('#frm_to_address').val('Example: 10 downing street, London SW1A 2AA');
			fn_clear_toAddress();
		} else {
			// what would heppen if we swopped thise around?
			fn_search_address(whatField);
		}
	}

	if ( whatField == 'via' ) {
		if ( $('#frm_via_address').val() == '' ) {
			$('#frm_via_address').addClass('dummyText');
			$('#frm_via_address').val('Example: Kings Cross');
			fn_clear_viaAddress();
		} else {
			fn_search_address(whatField);
		}
	}
}

