	// ADDRESS		var address = {					init: function(fieldsetclass) {					var fsc = $('fieldset.address.' + fieldsetclass);					// Setup billing address			if($('input.billingmatchdelivery').is(":checked")) {				$('div.billingaddress').hide();			}			$('input.billingmatchdelivery').live('click', function() {				if($(this).is(":checked")) {					$('.billingaddress').hide();				} else {					$('.billingaddress').show();				}			});			// add address finder if addressstge is manual			if ($('input.addressstage', fsc).val() == 'manual') {				// add postcode finders				$('div.manualentry', fsc).hide();				$('div.postcodefinder', fsc).show();				$('input.addressstage', fsc).val('auto1');			}						if ($('input.addressudprn', fsc).val()) {				$('div.manualentry', fsc).hide();			}						// bind to address search buttons			$('input.postcodelookup', fsc).live('click', function() {				var postcode = $('input[name*="postcodefinder"]', fsc).val();				if (postcode.length > 4) {					// Hide postcode box					$('div.postcodefinder', fsc).hide();					address.find(postcode, fieldsetclass);				} else {					alert('Please enter your full postcode.');				}				return false;			});						// display the selected address			$('input.addressselector', fsc).live('click', function() {				var addressudprn = $(this).val();				address.showaddress($(this).val(), $('label', $(this).parent()).html(), fieldsetclass);			});						// reset address finder			$('a.editpostcode', fsc).live('click', function() {				$(this).parent().remove();				$('a.manualentry.notlisted', fsc).parent().remove();				$('div.addresslist', fsc).hide();				$('div.manualentry', fsc).hide();					$('div.postcodefinder', fsc).show();					$('input.addressstage', fsc).val('auto1');				return false;			});						// choose manual entry			$('fieldset.address.' + fieldsetclass + ' a.manualentry').live('click', function() {				$(this).parent().remove();				$('div.postcodefinder', fsc).hide();				$('p.information.notlisted', fsc).remove();				$('p.information.changeaddress', fsc).remove();				$('div.addresslist', fsc).hide();				$('div.manualentry', fsc).show();				$('input.addressstage', fsc).val('manual');				fsc.prepend($('<p class="information changeaddress"><a href="#" class="editpostcode">Change address</a></p>'));				return false;			});						// prevent pressing enter on postcode field from submitting form			$('input.postcodefinder', fsc).live('keypress', function(e) {				if (e.keyCode == 13) {					$('input.postcodelookup', fsc).click();					return false;				}			});					},				find: function(postcode, fieldsetclass) {						var fsc = $('fieldset.address.' + fieldsetclass);						// Send request for addresses			$('p.addressmessage', fsc).remove();			fsc.addClass('ajaxtrigger');			$.ajax({				url: '/ajax/address.php',				data: 'mode=find&postcode=' + postcode,				success: function(xml) {					switch ($("status", xml).text()) {						case '0':							// Addresses not found							// Show message							$('div.postcodefinder', fsc).prepend($('<p class="information addressmessage">No addresses found.</p>'));							// Show postcode box							$('div.postcodefinder', fsc).show();							// Display link to enter address manually							break;						case '1':							// Addresses found							// Remove old address items							$('div.addresslist', fsc).remove();							// Dislay Addresses							var addresslistcontainer = $('<div class="addresslist"></div>');							var addresslist = $('<ul class="addresslist"></ul>');							addresslistcontainer.append(addresslist);							addresslistcontainer.css('display', 'none');							fsc.append(addresslistcontainer);							fsc.append($('<p class="information"><a href="#" class="manualentry notlisted">My address is not listed</a></p>'));;							addresslistcontainer.show();							var i = 1;							$("address", xml).each(function() {								var addresslistitem = $('<li class="addresschoice"><input type="radio" name="' + fieldsetclass + 'addressudprn" value="' + $('id', this).text() + '" id="' + fieldsetclass + 'address' + i + '" class="addressselector"><label for="' + fieldsetclass + 'address' + i + '">' + $('streetaddress', this).text() + '<span class="area">, ' + $('place', this).text() + '</span></label></li>');								addresslist.append(addresslistitem);								addresslistcontainer.scrollTop(0);								i++;							});							// Display link to edit postcode							fsc.prepend($('<p class="information changeaddress"><a href="#" class="editpostcode">Change address</a></p>'));							$('input.addressstage', fsc).val('auto2');							break;						default:							alert('Unexpected Response: ' + $("message", xml).text(), 'Message');							break;					}				},				error: function(xml, type) {					alert('Error - unable to load address list.');					// Lookup error					// Display form to enter address manually									}			});		},				showaddress: function(addressudprn, addresslabel, fieldsetclass) {						var fsc = $('fieldset.address.' + fieldsetclass);						// Cleanup address fieldset			$('div.postcodefinder', fsc).hide();			$('div.addresslist', fsc).remove();			$('a.manualentry', fsc).parent().remove();			$('a.editpostcode', fsc).parent().remove();			$('p.information.notlisted', fsc).remove();			// Show address			var addressradiocontainer = $('<div class="addressselection"></div>');			var addressradio = $('<p class="address"><input id="' + fieldsetclass + 'address" type="hidden" name="' + fieldsetclass + 'addressudprn" value="' + addressudprn + '">' + addresslabel + '. <a href="#" class="editpostcode">Change</a></p>')			addressradiocontainer.append(addressradio);			fsc.append(addressradiocontainer);			$('input.addressstage', fsc).val('auto3');		}			}//	address.init('delivery');//	address.init('billing');	//	When disabled...//	Setup billing address	if($('input.billingmatchdelivery').is(":checked")) {		$('div.billingaddress').hide();	}	$('div.manualentry').show();	$('input.billingmatchdelivery').live('click', function() {		if($(this).is(":checked")) {			$('div.billingaddress').hide();		} else {			$('div.billingaddress').show();		}	});	
