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();			$('div.addresslist', fsc).hide();			$('div.manualentry', fsc).show();			$('input.addressstage', fsc).val('manual');			fsc.prepend($('<p class="information"><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"><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');	}	}$(function() {	//	address.init('delivery');//	address.init('billing');	// Instead of above		// 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();		}	});	});
