From 2225ecad3a26e4e5aad6f02084dd1d0467ca05b5 Mon Sep 17 00:00:00 2001
From: "Matthew Wire (MJW Consulting)" <mjw@mjwconsult.co.uk>
Date: Thu, 6 Jun 2019 17:43:30 +0100
Subject: [PATCH] Autoformatting and convert to short array syntax

---
 CRM/Civicrmpostcodelookup/Form/Setting.php    |   16 +-
 CRM/Civicrmpostcodelookup/Page/Afd.php        |  232 +--
 .../Page/Civipostcode.php                     |  358 ++---
 CRM/Civicrmpostcodelookup/Page/Experian.php   |  228 +--
 .../Page/PostcodeAnywhere.php                 |  248 ++--
 CRM/Civicrmpostcodelookup/Utils.php           |   18 +-
 CRM/PafUtils/Address.php                      | 1286 ++++++++---------
 civicrmpostcodelookup.php                     |   75 +-
 .../Form/Postcodelookup.tpl                   |  322 ++---
 .../Civicrmpostcodelookup/Form/Setting.tpl    |  150 +-
 .../Form/Edit/Address/street_address.tpl      |  286 ++--
 11 files changed, 1600 insertions(+), 1619 deletions(-)

diff --git a/CRM/Civicrmpostcodelookup/Form/Setting.php b/CRM/Civicrmpostcodelookup/Form/Setting.php
index 7a8b21d..2a08799 100755
--- a/CRM/Civicrmpostcodelookup/Form/Setting.php
+++ b/CRM/Civicrmpostcodelookup/Form/Setting.php
@@ -41,7 +41,7 @@ class CRM_Civicrmpostcodelookup_Form_Setting extends CRM_Core_Form {
       false
     );
 
-     // Serial Number
+    // Serial Number
     $this->addElement(
       'text',
       'serial_number',
@@ -59,7 +59,7 @@ class CRM_Civicrmpostcodelookup_Form_Setting extends CRM_Core_Form {
       false
     );
 
-     // Password
+    // Password
     $this->addElement(
       'text',
       'password',
@@ -72,7 +72,7 @@ class CRM_Civicrmpostcodelookup_Form_Setting extends CRM_Core_Form {
     $locationTypes = array_flip(CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'));
 
     $this->addCheckBox('location_type_id',
-     ts('Location Types'),
+      ts('Location Types'),
       $locationTypes,
       NULL, NULL, NULL, NULL,
       array('&nbsp;&nbsp;')
@@ -202,9 +202,9 @@ class CRM_Civicrmpostcodelookup_Form_Setting extends CRM_Core_Form {
     $settingsStr = serialize($settingsArray);
 
     CRM_Core_BAO_Setting::setItem($settingsStr,
-          'CiviCRM Postcode Lookup',
-          'api_details'
-        );
+      'CiviCRM Postcode Lookup',
+      'api_details'
+    );
 
     $message = "Settings saved.";
     CRM_Core_Session::setStatus($message, 'Postcode Lookup', 'success');
@@ -212,8 +212,8 @@ class CRM_Civicrmpostcodelookup_Form_Setting extends CRM_Core_Form {
 
   function getProviderOptions() {
     $options = array(
-      '' => ts('- select -'),
-    ) + $GLOBALS["providers"];
+        '' => ts('- select -'),
+      ) + $GLOBALS["providers"];
 
     return $options;
   }
diff --git a/CRM/Civicrmpostcodelookup/Page/Afd.php b/CRM/Civicrmpostcodelookup/Page/Afd.php
index fa007d3..edff2a9 100755
--- a/CRM/Civicrmpostcodelookup/Page/Afd.php
+++ b/CRM/Civicrmpostcodelookup/Page/Afd.php
@@ -4,135 +4,135 @@ require_once 'CRM/Core/Page.php';
 
 class CRM_Civicrmpostcodelookup_Page_Afd extends CRM_Civicrmpostcodelookup_Page_Postcode {
 
-	/*
-	 * Function to get the Server URL and login credentials
-	 */
-	public static function getAFDCredentials($action = 1) {
-		#################
-		#Server settings
-		#################
-		$settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
-  	$settingsArray = unserialize($settingsStr);
-
-		$servertarget = $settingsArray['server'];
-
-		// Action : '1' - Address List, '2' - Address Lookup
-		switch ($action) {
-			case 1:
-			  $servertarget = $servertarget . "/addresslist.pce";
-			  break;
-
-			case 2:
-			  $servertarget = $servertarget . "/addresslookup.pce";
-			  break;
-
-			default:
-			  $servertarget = $servertarget . "/addresslist.pce";
-		}
-
-		$strSerial = $settingsArray['serial_number'];
-		$strPassword = $settingsArray['password'];
-
-		$querystring = "serial=$strSerial&password=$strPassword";
-		return $servertarget ."?" . $querystring;
-	}
-
-	/*
-	 * Function to get address list based on a Post code
-	 */
-	public static function search() {
-		$postcode = self::getPostcode(TRUE); // FIXME: Check whether API requires space or not
-		$number = CRM_Utils_Request::retrieve('number', 'String');
-
-		$querystring = self::getAFDCredentials(1);
-		$querystring = $querystring . "&postcode=" . $postcode . "&property=" . $number;
-
-		###############
-		#File Handling
-		###############
-
-		##Open the XML Document##
-		$filetoparse = fopen("$querystring","r") or die("Error reading XML data.");
-		$data = stream_get_contents($filetoparse);
-		$simpleXMLData = simplexml_load_string($data);
-
-		if (!empty($simpleXMLData)) {
-			$addresslist = self::getAddressList($simpleXMLData, $postcode);
-		}
-
-		##Close the XML source##
-		fclose($filetoparse);
-
-		// Check CiviCRM version & return result as appropriate
-		$civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
-		if ($civiVersion < 4.5) {
-			foreach ($addresslist as $key => $val) {
+  /*
+   * Function to get the Server URL and login credentials
+   */
+  public static function getAFDCredentials($action = 1) {
+    #################
+    #Server settings
+    #################
+    $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
+    $settingsArray = unserialize($settingsStr);
+
+    $servertarget = $settingsArray['server'];
+
+    // Action : '1' - Address List, '2' - Address Lookup
+    switch ($action) {
+      case 1:
+        $servertarget = $servertarget . "/addresslist.pce";
+        break;
+
+      case 2:
+        $servertarget = $servertarget . "/addresslookup.pce";
+        break;
+
+      default:
+        $servertarget = $servertarget . "/addresslist.pce";
+    }
+
+    $strSerial = $settingsArray['serial_number'];
+    $strPassword = $settingsArray['password'];
+
+    $querystring = "serial=$strSerial&password=$strPassword";
+    return $servertarget ."?" . $querystring;
+  }
+
+  /*
+   * Function to get address list based on a Post code
+   */
+  public static function search() {
+    $postcode = self::getPostcode(TRUE); // FIXME: Check whether API requires space or not
+    $number = CRM_Utils_Request::retrieve('number', 'String');
+
+    $querystring = self::getAFDCredentials(1);
+    $querystring = $querystring . "&postcode=" . $postcode . "&property=" . $number;
+
+    ###############
+    #File Handling
+    ###############
+
+    ##Open the XML Document##
+    $filetoparse = fopen("$querystring","r") or die("Error reading XML data.");
+    $data = stream_get_contents($filetoparse);
+    $simpleXMLData = simplexml_load_string($data);
+
+    if (!empty($simpleXMLData)) {
+      $addresslist = self::getAddressList($simpleXMLData, $postcode);
+    }
+
+    ##Close the XML source##
+    fclose($filetoparse);
+
+    // Check CiviCRM version & return result as appropriate
+    $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
+    if ($civiVersion < 4.5) {
+      foreach ($addresslist as $key => $val) {
         echo "{$val['label']}|{$val['id']}\n";
       }
-		} else {
-			echo json_encode($addresslist);
-		}
-		exit;
-	}
-
-	private static function getAddressList($simpleXMLData, $postcode) {
-		$addressList = array();
-		$addressRow = array();
-		$AddressListItem = $simpleXMLData->AddressListItem;
-		foreach ($AddressListItem as $key => $addressItem) {
-			$addressRow["id"] = (string) $addressItem->PostKey;
-		  $addressRow["value"] = $postcode;
-		  $addressRow["label"] = (string) $addressItem->Address;
-		  array_push($addressList, $addressRow);
-			//$addressList['items'][] = array('id' => (string) $addressItem->PostKey, 'label' => (string) $addressItem->Address);
-			//$addressList[(string) $addressItem->PostKey] = (string) $addressItem->Address;
-		}
-
-		return $addressList;
-	}
-
-	/*
-	 * Function to get address details based on the AFD addressid/postkey
-	 */
-	public static function getaddress() {
+    } else {
+      echo json_encode($addresslist);
+    }
+    exit;
+  }
+
+  private static function getAddressList($simpleXMLData, $postcode) {
+    $addressList = array();
+    $addressRow = array();
+    $AddressListItem = $simpleXMLData->AddressListItem;
+    foreach ($AddressListItem as $key => $addressItem) {
+      $addressRow["id"] = (string) $addressItem->PostKey;
+      $addressRow["value"] = $postcode;
+      $addressRow["label"] = (string) $addressItem->Address;
+      array_push($addressList, $addressRow);
+      //$addressList['items'][] = array('id' => (string) $addressItem->PostKey, 'label' => (string) $addressItem->Address);
+      //$addressList[(string) $addressItem->PostKey] = (string) $addressItem->Address;
+    }
+
+    return $addressList;
+  }
+
+  /*
+   * Function to get address details based on the AFD addressid/postkey
+   */
+  public static function getaddress() {
     $moniker = CRM_Utils_Request::retrieve('id', 'String');
     if (empty($moniker)) {
       exit;
     }
 
-		$address = self::getAddressByMoniker($moniker);
-		$response = array(
-			'address' => $address
-		);
+    $address = self::getAddressByMoniker($moniker);
+    $response = array(
+      'address' => $address
+    );
 
-		echo json_encode($response);
-		exit;
-	}
+    echo json_encode($response);
+    exit;
+  }
 
-	private static function getAddressByMoniker($moniker) {
-		$querystring = self::getAFDCredentials(2);
-		$querystring = $querystring . "&postkey=" . urlencode($moniker);
+  private static function getAddressByMoniker($moniker) {
+    $querystring = self::getAFDCredentials(2);
+    $querystring = $querystring . "&postkey=" . urlencode($moniker);
 
-		###############
-		#File Handling
-		###############
+    ###############
+    #File Handling
+    ###############
 
-		##Open the XML Document##
-		$filetoparse = fopen("$querystring","r") or die("Error reading XML data.");
-		$data = stream_get_contents($filetoparse);
-		$simpleXMLData = simplexml_load_string($data);
+    ##Open the XML Document##
+    $filetoparse = fopen("$querystring","r") or die("Error reading XML data.");
+    $data = stream_get_contents($filetoparse);
+    $simpleXMLData = simplexml_load_string($data);
 
-		$address = array('id' => $moniker);
-		$addressItem = (array) $simpleXMLData->Address;
+    $address = array('id' => $moniker);
+    $addressItem = (array) $simpleXMLData->Address;
 
-		$address["street"] = empty($addressItem['Street']) ? '':$addressItem['Street'];
-		$address["locality"] = empty($addressItem['Locality']) ? '':$addressItem['Locality'];
-		$address["town"] = empty($addressItem['Town']) ? '':$addressItem['Town'];
-		$address["postcode"] = empty($addressItem['Postcode']) ? '':$addressItem['Postcode'];
+    $address["street"] = empty($addressItem['Street']) ? '':$addressItem['Street'];
+    $address["locality"] = empty($addressItem['Locality']) ? '':$addressItem['Locality'];
+    $address["town"] = empty($addressItem['Town']) ? '':$addressItem['Town'];
+    $address["postcode"] = empty($addressItem['Postcode']) ? '':$addressItem['Postcode'];
 
-		##Close the XML source##
-		fclose($filetoparse);
+    ##Close the XML source##
+    fclose($filetoparse);
 
-		return $address;
-	}
+    return $address;
+  }
 }
diff --git a/CRM/Civicrmpostcodelookup/Page/Civipostcode.php b/CRM/Civicrmpostcodelookup/Page/Civipostcode.php
index c7ca648..e47651c 100755
--- a/CRM/Civicrmpostcodelookup/Page/Civipostcode.php
+++ b/CRM/Civicrmpostcodelookup/Page/Civipostcode.php
@@ -4,190 +4,190 @@ require_once 'CRM/Core/Page.php';
 
 class CRM_Civicrmpostcodelookup_Page_Civipostcode extends CRM_Civicrmpostcodelookup_Page_Postcode {
 
-	/*
-	 * Function to get the Server URL and login credentials
-	 */
-	public static function getCivipostcodeCredentials($action = 1) {
-		#################
-		#Server settings
-		#################
-		$settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
-  	$settingsArray = unserialize($settingsStr);
-
-		$servertarget = $settingsArray['server'];
-
-		// Action : '1' - Address List, '2' - Address Lookup
-		switch ($action) {
-			case 1:
-			  $servertarget = $servertarget . "/lookup/v1";
-			  break;
-
-			case 2:
-			  $servertarget = $servertarget . "/getaddress/v1";
-			  break;
-
-			default:
-			  $servertarget = $servertarget . "/lookup/v1";
-		}
-
-		$apiKey = $settingsArray['api_key'];
-
-		$querystring = "key=$apiKey";
-		return $servertarget ."?" . $querystring;
-	}
-
-	/*
-	 * Function to get address list based on a Post code
-	 */
-	public static function search() {
-		$postcode = self::getPostcode(TRUE);
-		$number = CRM_Utils_Request::retrieve('number', 'String');
-
-		$querystring = self::getCivipostcodeCredentials(1);
-		$querystring = $querystring . "&postcode=" . urlencode($postcode) . "&property=" . $number;
-
-		###############
-		#File Handling
-		###############
-
-		##Open the JSON Document##
-		$filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
-		$data = stream_get_contents($filetoparse);
-		$simpleJSONData = json_decode($data);
-
-		if (!empty($simpleJSONData)) {
-			if ($simpleJSONData->is_error == 1) {
-				$addresslist[0]['value'] = '';
-				$addresslist[0]['label'] = $simpleJSONData->error;
-			} else {
-				$addresslist = self::getAddressList($simpleJSONData, $postcode);
-			}
-		}
-
-		// highlight search results
-		//$addresslist = CRM_Civicrmpostcodelookup_Utils::apply_highlight($addresslist, $postcode);
-
-		##Close the JSON source##
-		fclose($filetoparse);
-
-		// Check CiviCRM version & return result as appropriate
-		$civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
-		if ($civiVersion < 4.5) {
-			foreach ($addresslist as $key => $val) {
+  /*
+   * Function to get the Server URL and login credentials
+   */
+  public static function getCivipostcodeCredentials($action = 1) {
+    #################
+    #Server settings
+    #################
+    $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
+    $settingsArray = unserialize($settingsStr);
+
+    $servertarget = $settingsArray['server'];
+
+    // Action : '1' - Address List, '2' - Address Lookup
+    switch ($action) {
+      case 1:
+        $servertarget = $servertarget . "/lookup/v1";
+        break;
+
+      case 2:
+        $servertarget = $servertarget . "/getaddress/v1";
+        break;
+
+      default:
+        $servertarget = $servertarget . "/lookup/v1";
+    }
+
+    $apiKey = $settingsArray['api_key'];
+
+    $querystring = "key=$apiKey";
+    return $servertarget ."?" . $querystring;
+  }
+
+  /*
+   * Function to get address list based on a Post code
+   */
+  public static function search() {
+    $postcode = self::getPostcode(TRUE);
+    $number = CRM_Utils_Request::retrieve('number', 'String');
+
+    $querystring = self::getCivipostcodeCredentials(1);
+    $querystring = $querystring . "&postcode=" . urlencode($postcode) . "&property=" . $number;
+
+    ###############
+    #File Handling
+    ###############
+
+    ##Open the JSON Document##
+    $filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
+    $data = stream_get_contents($filetoparse);
+    $simpleJSONData = json_decode($data);
+
+    if (!empty($simpleJSONData)) {
+      if ($simpleJSONData->is_error == 1) {
+        $addresslist[0]['value'] = '';
+        $addresslist[0]['label'] = $simpleJSONData->error;
+      } else {
+        $addresslist = self::getAddressList($simpleJSONData, $postcode);
+      }
+    }
+
+    // highlight search results
+    //$addresslist = CRM_Civicrmpostcodelookup_Utils::apply_highlight($addresslist, $postcode);
+
+    ##Close the JSON source##
+    fclose($filetoparse);
+
+    // Check CiviCRM version & return result as appropriate
+    $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
+    if ($civiVersion < 4.5) {
+      foreach ($addresslist as $key => $val) {
         echo "{$val['label']}|{$val['id']}\n";
       }
-		} else {
-			echo json_encode($addresslist);
-		}
-		exit;
-	}
-
-	private static function getAddressList($simpleJSONData, $postcode) {
-		$addressList = array();
-		$addressRow = array();
-		$AddressListItem = $simpleJSONData->results;
-		foreach ($AddressListItem as $key => $addressItem) {
-			$addressLineArray = self::formatAddressLines($addressItem, TRUE);
-			$addressLineArray = array_filter($addressLineArray);
-
-			$addressRow["id"] = (string) $addressItem->id;
-		  $addressRow["value"] = $postcode;
-		  $addressRow["label"] = @implode(', ', $addressLineArray);
-		  array_push($addressList, $addressRow);
-		}
-
-		if (empty($addressList)) {
-			$addressRow["id"] = '';
-		  $addressRow["value"] = '';
-		  $addressRow["label"] = 'Postcode Not Found';
-		  array_push($addressList, $addressRow);
-		}
-
-		return $addressList;
-	}
-
-	/*
-	 * Function to get address details based on the Civipostcode address id
-	 */
-	public static function getaddress() {
+    } else {
+      echo json_encode($addresslist);
+    }
+    exit;
+  }
+
+  private static function getAddressList($simpleJSONData, $postcode) {
+    $addressList = array();
+    $addressRow = array();
+    $AddressListItem = $simpleJSONData->results;
+    foreach ($AddressListItem as $key => $addressItem) {
+      $addressLineArray = self::formatAddressLines($addressItem, TRUE);
+      $addressLineArray = array_filter($addressLineArray);
+
+      $addressRow["id"] = (string) $addressItem->id;
+      $addressRow["value"] = $postcode;
+      $addressRow["label"] = @implode(', ', $addressLineArray);
+      array_push($addressList, $addressRow);
+    }
+
+    if (empty($addressList)) {
+      $addressRow["id"] = '';
+      $addressRow["value"] = '';
+      $addressRow["label"] = 'Postcode Not Found';
+      array_push($addressList, $addressRow);
+    }
+
+    return $addressList;
+  }
+
+  /*
+   * Function to get address details based on the Civipostcode address id
+   */
+  public static function getaddress() {
     $moniker = CRM_Utils_Request::retrieve('id', 'String');
     if (empty($moniker)) {
       exit;
     }
 
-		$address = self::getAddressByMoniker($moniker);
-		$response = array(
-			'address' => $address
-		);
-
-		echo json_encode($response);
-		exit;
-	}
-
-	private static function getAddressByMoniker($moniker) {
-		$querystring = self::getCivipostcodeCredentials(2);
-		$querystring = $querystring . "&id=" . urlencode($moniker);
-
-		###############
-		#File Handling
-		###############
-
-		##Open the JSON Document##
-		$filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
-		$data = stream_get_contents($filetoparse);
-		$simpleJSONData = json_decode($data);
-		$addressObj = $simpleJSONData->results[0];
-
-		$address = self::formatAddressLines($addressObj);
-
-		##Close the JSON source##
-		fclose($filetoparse);
-
-		return $address;
-	}
-
-	private static function formatAddressLines($addressObj, $forList = FALSE) {
-		if (empty($addressObj)) {
-			return;
-		}
-
-		// Format address lines based on Royal Mail PAF address assembler (https://github.com/AllenJB/PafUtils)
-		require_once 'CRM/PafUtils/Address.php';
-		$addressLineObj = new Address();
-        $addressLineObj->setUdprn($addressObj->udprn)
-        	->setPostCode($addressObj->postcode)
-            ->setPostTown($addressObj->post_town)
-            ->setDependentLocality($addressObj->dependent_locality)
-            ->setDoubleDependentLocality($addressObj->double_dependent_locality)
-            ->setThoroughfare($addressObj->thoroughfare_descriptor)
-            ->setDependentThoroughfare($addressObj->dependent_thoroughfare_descriptor)
-            ->setBuildingNumber($addressObj->building_number)
-            ->setBuildingName($addressObj->building_name)
-            ->setSubBuildingName($addressObj->sub_building_name)
-            ->setPoBox($addressObj->po_box)
-            ->setDepartmentName($addressObj->department_name)
-            ->setOrganizationName($addressObj->organisation_name)
-            ->setPostcodeType($addressObj->postcode_type)
-            ->setSuOrganizationIndicator($addressObj->su_organisation_indicator)
-            ->setDeliveryPointSuffix($addressObj->delivery_point_suffix);
-        $addressLines = $addressLineObj->getAddressLines();
-
-        if ($forList == FALSE) {
-			$address = array('id' => $addressObj->id);
-		}
-
-		if (!empty($addressLines[0])) {
-			$address["street_address"] = $addressLines[0];
-		}
-		if (!empty($addressLines[1])) {
-			$address["supplemental_address_1"] = $addressLines[1];
-		}
-		if (!empty($addressLines[2])) {
-			$address["supplemental_address_2"] = $addressLines[2];
-		}
-		$address["town"] = (string) $addressObj->post_town;
-		$address["postcode"] = (string) $addressObj->postcode;
-
-		return $address;
-	}
+    $address = self::getAddressByMoniker($moniker);
+    $response = array(
+      'address' => $address
+    );
+
+    echo json_encode($response);
+    exit;
+  }
+
+  private static function getAddressByMoniker($moniker) {
+    $querystring = self::getCivipostcodeCredentials(2);
+    $querystring = $querystring . "&id=" . urlencode($moniker);
+
+    ###############
+    #File Handling
+    ###############
+
+    ##Open the JSON Document##
+    $filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
+    $data = stream_get_contents($filetoparse);
+    $simpleJSONData = json_decode($data);
+    $addressObj = $simpleJSONData->results[0];
+
+    $address = self::formatAddressLines($addressObj);
+
+    ##Close the JSON source##
+    fclose($filetoparse);
+
+    return $address;
+  }
+
+  private static function formatAddressLines($addressObj, $forList = FALSE) {
+    if (empty($addressObj)) {
+      return;
+    }
+
+    // Format address lines based on Royal Mail PAF address assembler (https://github.com/AllenJB/PafUtils)
+    require_once 'CRM/PafUtils/Address.php';
+    $addressLineObj = new Address();
+    $addressLineObj->setUdprn($addressObj->udprn)
+      ->setPostCode($addressObj->postcode)
+      ->setPostTown($addressObj->post_town)
+      ->setDependentLocality($addressObj->dependent_locality)
+      ->setDoubleDependentLocality($addressObj->double_dependent_locality)
+      ->setThoroughfare($addressObj->thoroughfare_descriptor)
+      ->setDependentThoroughfare($addressObj->dependent_thoroughfare_descriptor)
+      ->setBuildingNumber($addressObj->building_number)
+      ->setBuildingName($addressObj->building_name)
+      ->setSubBuildingName($addressObj->sub_building_name)
+      ->setPoBox($addressObj->po_box)
+      ->setDepartmentName($addressObj->department_name)
+      ->setOrganizationName($addressObj->organisation_name)
+      ->setPostcodeType($addressObj->postcode_type)
+      ->setSuOrganizationIndicator($addressObj->su_organisation_indicator)
+      ->setDeliveryPointSuffix($addressObj->delivery_point_suffix);
+    $addressLines = $addressLineObj->getAddressLines();
+
+    if ($forList == FALSE) {
+      $address = array('id' => $addressObj->id);
+    }
+
+    if (!empty($addressLines[0])) {
+      $address["street_address"] = $addressLines[0];
+    }
+    if (!empty($addressLines[1])) {
+      $address["supplemental_address_1"] = $addressLines[1];
+    }
+    if (!empty($addressLines[2])) {
+      $address["supplemental_address_2"] = $addressLines[2];
+    }
+    $address["town"] = (string) $addressObj->post_town;
+    $address["postcode"] = (string) $addressObj->postcode;
+
+    return $address;
+  }
 }
diff --git a/CRM/Civicrmpostcodelookup/Page/Experian.php b/CRM/Civicrmpostcodelookup/Page/Experian.php
index 05ce748..94564c2 100755
--- a/CRM/Civicrmpostcodelookup/Page/Experian.php
+++ b/CRM/Civicrmpostcodelookup/Page/Experian.php
@@ -6,134 +6,134 @@ require_once 'CRM/Core/Page.php';
 require_once '/lib/QASCapture.php';
 
 class CRM_PostcodeLookup_Page_Ajax extends CRM_Civicrmpostcodelookup_Page_Postcode {
-    static private $qacampture;
-
-    public static function getQasCredentials($account_type) {
-      $credentials = array();
-
-      $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
-      $settingsArray = unserialize($settingsStr);
+  static private $qacampture;
+
+  public static function getQasCredentials($account_type) {
+    $credentials = array();
+
+    $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
+    $settingsArray = unserialize($settingsStr);
+
+    $credentials['username'] = $settingsArray['username'];
+    $credentials['password'] = $settingsArray['password'];
+
+    /*// @todo Decide what format the value is coming in as int/hash etc
+    $map = array(
+      '0' => 'internal',
+      '1' => 'external'
+    );
+
+    switch ($map[$account_type]) {
+      case 'internal':
+        $credentials['username'] = '7aab7efc-f66';
+        $credentials['password'] = 'biscuitbase1';
+        break;
+
+      case 'external':
+        $credentials['username'] = 'e220d980-d4d';
+        $credentials['password'] = 'biscuitbase1';
+        break;
+
+      default:
+        $credentials['username'] = '';
+        $credentials['password'] = '';
+    }*/
+
+    return $credentials;
+  }
+
+  public static function search() {
+    $postcode = self::getPostcode(TRUE); // FIXME: Check whether API requires space or not
+    $number = CRM_Utils_Request::retrieve('number', 'String');
+    if (!$number) {
+      exit;
+    }
 
-      $credentials['username'] = $settingsArray['username'];
-      $credentials['password'] = $settingsArray['password'];
+    $qaCapture = self::getQACapture();
+    $ret = $qaCapture->Search("$number, $postcode", 'GBR', 'Singleline', true);//, $intensity, $promptset, $threshold, $timeout, $layout, $formattedAddressInPicklist, $requestTag, $localisation)
 
-      /*// @todo Decide what format the value is coming in as int/hash etc
-      $map = array(
-        '0' => 'internal',
-        '1' => 'external'
+    $response = array();
+    $response['items'] = array();
+    foreach($ret->Picklist->Items as $item) {
+      $response['items'][] = array(
+        'id' => $item->Moniker,
+        'label' => $item->PartialAddress,
       );
+    }
 
-      switch ($map[$account_type]) {
-        case 'internal':
-          $credentials['username'] = '7aab7efc-f66';
-          $credentials['password'] = 'biscuitbase1';
-          break;
-
-        case 'external':
-          $credentials['username'] = 'e220d980-d4d';
-          $credentials['password'] = 'biscuitbase1';
-          break;
+    //mzeman: get the address details if it's the precise one
+    if($ret->Picklist->IsAutoformatSafe && $ret->Picklist->Total == 1) {
+      $listItem = $ret->Picklist->Items[0];
 
-        default:
-          $credentials['username'] = '';
-          $credentials['password'] = '';
-      }*/
+      $address = self::getAddressByMoniker($listItem->Moniker);
+      $response['address'] = $address;
+    }
 
-        return $credentials;
+    // Check CiviCRM version & return result as appropriate
+    $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
+    if ($civiVersion < 4.5) {
+      foreach ($response as $key => $val) {
+        echo "{$val['label']}|{$val['id']}\n";
+      }
+    } else {
+      echo json_encode($response);
     }
 
-    public static function search() {
-        $postcode = self::getPostcode(TRUE); // FIXME: Check whether API requires space or not
-        $number = CRM_Utils_Request::retrieve('number', 'String');
-        if (!$number) {
-          exit;
-        }
-
-        $qaCapture = self::getQACapture();
-        $ret = $qaCapture->Search("$number, $postcode", 'GBR', 'Singleline', true);//, $intensity, $promptset, $threshold, $timeout, $layout, $formattedAddressInPicklist, $requestTag, $localisation)
-
-        $response = array();
-        $response['items'] = array();
-        foreach($ret->Picklist->Items as $item) {
-            $response['items'][] = array(
-                'id' => $item->Moniker,
-                'label' => $item->PartialAddress,
-            );
-        }
-
-        //mzeman: get the address details if it's the precise one
-        if($ret->Picklist->IsAutoformatSafe && $ret->Picklist->Total == 1) {
-            $listItem = $ret->Picklist->Items[0];
-
-            $address = self::getAddressByMoniker($listItem->Moniker);
-            $response['address'] = $address;
-        }
-
-        // Check CiviCRM version & return result as appropriate
-        $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
-        if ($civiVersion < 4.5) {
-            foreach ($response as $key => $val) {
-                echo "{$val['label']}|{$val['id']}\n";
-            }
-        } else {
-            echo json_encode($response);
-        }
-
-        exit;
+    exit;
+  }
+
+  public static function getaddress() {
+    $moniker = CRM_Utils_Request::retrieve('id', 'String');
+    if (empty($moniker)) {
+      exit;
     }
 
-    public static function getaddress() {
-      $moniker = CRM_Utils_Request::retrieve('id', 'String');
-      if (empty($moniker)) {
-        exit;
+    $address = self::getAddressByMoniker($moniker);
+    $response = array(
+      'address' => $address
+    );
+
+    echo json_encode($response);
+    exit;
+  }
+
+  private static function getQACapture() {
+    if(self::$qacampture === null) {
+      // @todo retrieved value should be encoded somehow, MD5 or whatever
+      $mode = CRM_Utils_Request::retrieve('mode', 'String');
+      if (!$mode) {
+        $mode = '1';
       }
+      $params = self::getQasCredentials($mode);
+      self::$qacampture = new QASCapture($params);
+    }
 
-        $address = self::getAddressByMoniker($moniker);
-        $response = array(
-            'address' => $address
-        );
+    return self::$qacampture;
+  }
 
-        echo json_encode($response);
-        exit;
-    }
+  private static function getAddressByMoniker($moniker) {
+    $addressRet = self::getQACapture()->GetAddress($moniker);
 
-    private static function getQACapture() {
-        if(self::$qacampture === null) {
-            // @todo retrieved value should be encoded somehow, MD5 or whatever
-            $mode = CRM_Utils_Request::retrieve('mode', 'String');
-            if (!$mode) {
-              $mode = '1';
-            }
-            $params = self::getQasCredentials($mode);
-            self::$qacampture = new QASCapture($params);
-        }
-
-        return self::$qacampture;
+    $address = array('id' => $moniker);
+    $lineCounter = 0;
+    foreach($addressRet->AddressLines as $line) {
+      switch($line->Label) {
+        case '':
+          $lineCounter++;
+          $address["line{$lineCounter}"] = $line->Line;
+          break;
+        case 'Town':
+          $address["town"] = $line->Line;
+          break;
+        case 'County':
+          $address["county"] = $line->Line;
+          break;
+        case 'Postcode':
+          $address["postcode"] = $line->Line;
+          break;
+      }
     }
 
-    private static function getAddressByMoniker($moniker) {
-        $addressRet = self::getQACapture()->GetAddress($moniker);
-
-        $address = array('id' => $moniker);
-        $lineCounter = 0;
-        foreach($addressRet->AddressLines as $line) {
-            switch($line->Label) {
-                case '':
-                    $lineCounter++;
-                    $address["line{$lineCounter}"] = $line->Line;
-                    break;
-                case 'Town':
-                    $address["town"] = $line->Line;
-                    break;
-                case 'County':
-                    $address["county"] = $line->Line;
-                    break;
-                case 'Postcode':
-                    $address["postcode"] = $line->Line;
-                    break;
-            }
-        }
-
-        return $address;
-    }
+    return $address;
+  }
 }
diff --git a/CRM/Civicrmpostcodelookup/Page/PostcodeAnywhere.php b/CRM/Civicrmpostcodelookup/Page/PostcodeAnywhere.php
index f9244d0..2631d2f 100755
--- a/CRM/Civicrmpostcodelookup/Page/PostcodeAnywhere.php
+++ b/CRM/Civicrmpostcodelookup/Page/PostcodeAnywhere.php
@@ -4,147 +4,147 @@ require_once 'CRM/Core/Page.php';
 
 class CRM_Civicrmpostcodelookup_Page_PostcodeAnywhere extends CRM_Civicrmpostcodelookup_Page_Postcode {
 
-	/*
-	 * Function to get the Server URL and login credentials
-	 */
-	public static function getPostcodeAnywhereCredentials($action = 1) {
-		#################
-		#Server settings
-		#################
-		$settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
-  	$settingsArray = unserialize($settingsStr);
-
-		$servertarget = $settingsArray['server'];
-
-		// Action : '1' - Address List, '2' - Address Lookup
-		switch ($action) {
-			case 1:
-			  $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/Find/v1.10/xmla.ws";
-			  break;
-
-			case 2:
-			  $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/RetrieveById/v1.30/xmla.ws";
-			  break;
-
-			default:
-			  $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/Find/v1.10/xmla.ws";
-		}
-
-		$apiKey = urlencode($settingsArray['api_key']);
-		$username = urlencode($settingsArray['username']);
-
-		$querystring = "Key=$apiKey&UserName=$username";
-		return $servertarget ."?" . $querystring;
-	}
-
-	/*
-	 * Function to get address list based on a Post code
-	 */
-	public static function search() {
-	  // PostcodeAnywhere API works with postcodes when they have a space and when they don't.
-		$postcode = self::getPostcode();
-
-		$querystring = self::getPostcodeAnywhereCredentials(1);
-		$querystring = $querystring . "&SearchTerm=" . urlencode($postcode);
-
-		//Make the request to Postcode Anywhere and parse the XML returned
-		$simpleXMLData = simplexml_load_file($querystring);
-
-		if (!empty($simpleXMLData)) {
-			$addresslist = self::getAddressList($simpleXMLData, $postcode);
-		}
-
-		// Check CiviCRM version & return result as appropriate
-		$civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
-		if ($civiVersion < 4.5) {
-			foreach ($addresslist as $key => $val) {
+  /*
+   * Function to get the Server URL and login credentials
+   */
+  public static function getPostcodeAnywhereCredentials($action = 1) {
+    #################
+    #Server settings
+    #################
+    $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
+    $settingsArray = unserialize($settingsStr);
+
+    $servertarget = $settingsArray['server'];
+
+    // Action : '1' - Address List, '2' - Address Lookup
+    switch ($action) {
+      case 1:
+        $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/Find/v1.10/xmla.ws";
+        break;
+
+      case 2:
+        $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/RetrieveById/v1.30/xmla.ws";
+        break;
+
+      default:
+        $servertarget = $servertarget . "/PostcodeAnywhere/Interactive/Find/v1.10/xmla.ws";
+    }
+
+    $apiKey = urlencode($settingsArray['api_key']);
+    $username = urlencode($settingsArray['username']);
+
+    $querystring = "Key=$apiKey&UserName=$username";
+    return $servertarget ."?" . $querystring;
+  }
+
+  /*
+   * Function to get address list based on a Post code
+   */
+  public static function search() {
+    // PostcodeAnywhere API works with postcodes when they have a space and when they don't.
+    $postcode = self::getPostcode();
+
+    $querystring = self::getPostcodeAnywhereCredentials(1);
+    $querystring = $querystring . "&SearchTerm=" . urlencode($postcode);
+
+    //Make the request to Postcode Anywhere and parse the XML returned
+    $simpleXMLData = simplexml_load_file($querystring);
+
+    if (!empty($simpleXMLData)) {
+      $addresslist = self::getAddressList($simpleXMLData, $postcode);
+    }
+
+    // Check CiviCRM version & return result as appropriate
+    $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
+    if ($civiVersion < 4.5) {
+      foreach ($addresslist as $key => $val) {
         echo "{$val['label']}|{$val['id']}\n";
       }
-		} else {
-			echo json_encode($addresslist);
-		}
-		exit;
-	}
-
-	private static function getAddressList($simpleXMLData, $postcode) {
-		$addressList = array();
-		$addressRow = array();
-		$AddressListItem = (array) $simpleXMLData->Rows;
-		$AddressListItems = $AddressListItem['Row'];
-
-		foreach ($AddressListItems as $key => $addressItem) {
-			$addressItemArray = (array) $addressItem;
-			$addressRow["id"] = (string) $addressItemArray['@attributes']['Id'];
-		  $addressRow["value"] = $postcode;
-		  $addressRow["label"] = $addressItemArray['@attributes']['StreetAddress'].', '.$addressItemArray['@attributes']['Place'];
-		  array_push($addressList, $addressRow);
-
-			/*$addressItemArray = (array) $addressItem;
-			$addressList['items'][] = array('id' => (string) $addressItemArray['@attributes']['Id'], 'label' => (string) $addressItemArray['@attributes']['StreetAddress'].', '.$addressItemArray['@attributes']['Place']);*/
-		}
-
-		if (empty($addressList)) {
-			$addressRow["id"] = '';
-		  $addressRow["value"] = '';
-		  $addressRow["label"] = 'Error: Postcode Not Found';
-		  array_push($addressList, $addressRow);
-		}
-
-		return $addressList;
-	}
-
-	/*
-	 * Function to get address details based on the PostcodeAnywhere addressid/postkey
-	 */
-	public static function getaddress() {
+    } else {
+      echo json_encode($addresslist);
+    }
+    exit;
+  }
+
+  private static function getAddressList($simpleXMLData, $postcode) {
+    $addressList = array();
+    $addressRow = array();
+    $AddressListItem = (array) $simpleXMLData->Rows;
+    $AddressListItems = $AddressListItem['Row'];
+
+    foreach ($AddressListItems as $key => $addressItem) {
+      $addressItemArray = (array) $addressItem;
+      $addressRow["id"] = (string) $addressItemArray['@attributes']['Id'];
+      $addressRow["value"] = $postcode;
+      $addressRow["label"] = $addressItemArray['@attributes']['StreetAddress'].', '.$addressItemArray['@attributes']['Place'];
+      array_push($addressList, $addressRow);
+
+      /*$addressItemArray = (array) $addressItem;
+      $addressList['items'][] = array('id' => (string) $addressItemArray['@attributes']['Id'], 'label' => (string) $addressItemArray['@attributes']['StreetAddress'].', '.$addressItemArray['@attributes']['Place']);*/
+    }
+
+    if (empty($addressList)) {
+      $addressRow["id"] = '';
+      $addressRow["value"] = '';
+      $addressRow["label"] = 'Error: Postcode Not Found';
+      array_push($addressList, $addressRow);
+    }
+
+    return $addressList;
+  }
+
+  /*
+   * Function to get address details based on the PostcodeAnywhere addressid/postkey
+   */
+  public static function getaddress() {
     $moniker = CRM_Utils_Request::retrieve('id', 'String');
     if (empty($moniker)) {
       exit;
     }
 
-		$address = self::getAddressByMoniker($moniker);
-		$response = array(
-			'address' => $address
-		);
+    $address = self::getAddressByMoniker($moniker);
+    $response = array(
+      'address' => $address
+    );
 
-		echo json_encode($response);
-		exit;
-	}
+    echo json_encode($response);
+    exit;
+  }
 
-	private static function getAddressByMoniker($moniker) {
+  private static function getAddressByMoniker($moniker) {
 
-		// Get state/county
-		$states = CRM_Core_PseudoConstant::stateProvince();
+    // Get state/county
+    $states = CRM_Core_PseudoConstant::stateProvince();
 
-		$querystring = self::getPostcodeAnywhereCredentials(2);
-		$querystring = $querystring . "&Id=" . urlencode($moniker);
+    $querystring = self::getPostcodeAnywhereCredentials(2);
+    $querystring = $querystring . "&Id=" . urlencode($moniker);
 
-		//Make the request to Postcode Anywhere and parse the XML returned
-		$simpleXMLData = simplexml_load_file($querystring);
+    //Make the request to Postcode Anywhere and parse the XML returned
+    $simpleXMLData = simplexml_load_file($querystring);
 
-		$address = array('id' => $moniker);
-		$addressItemRow = (array) $simpleXMLData->Rows;
-		$addressItem = (array) $addressItemRow['Row'];
+    $address = array('id' => $moniker);
+    $addressItemRow = (array) $simpleXMLData->Rows;
+    $addressItem = (array) $addressItemRow['Row'];
 
-		$addressLineArray[] = $addressItem['@attributes']['Company'];
-		$addressLineArray[] = $addressItem['@attributes']['BuildingName'];
-		$addressLineArray[] = $addressItem['@attributes']['BuildingNumber'];
-		$addressLineArray[] = $addressItem['@attributes']['PrimaryStreet'];
-		$addressLineArray = array_filter($addressLineArray);
-		$address["street_address"] = @implode(', ', $addressLineArray);
+    $addressLineArray[] = $addressItem['@attributes']['Company'];
+    $addressLineArray[] = $addressItem['@attributes']['BuildingName'];
+    $addressLineArray[] = $addressItem['@attributes']['BuildingNumber'];
+    $addressLineArray[] = $addressItem['@attributes']['PrimaryStreet'];
+    $addressLineArray = array_filter($addressLineArray);
+    $address["street_address"] = @implode(', ', $addressLineArray);
 
-		$address["supplemental_address_1"] = $addressItem['@attributes']['SecondaryStreet'];
-		$address["supplemental_address_2"] = $addressItem['@attributes']['DependentLocality'];
+    $address["supplemental_address_1"] = $addressItem['@attributes']['SecondaryStreet'];
+    $address["supplemental_address_2"] = $addressItem['@attributes']['DependentLocality'];
 
-		$address["town"] = $addressItem['@attributes']['PostTown'];
+    $address["town"] = $addressItem['@attributes']['PostTown'];
 
-		$address["postcode"] = $addressItem['@attributes']['Postcode'];
+    $address["postcode"] = $addressItem['@attributes']['Postcode'];
 
-		$address["state_province_id"] = '';
-		if ($stateId = array_search($addressItem['@attributes']['County'], $states)) {
-			$address["state_province_id"] = $stateId;
-		}
+    $address["state_province_id"] = '';
+    if ($stateId = array_search($addressItem['@attributes']['County'], $states)) {
+      $address["state_province_id"] = $stateId;
+    }
 
-		return $address;
-	}
+    return $address;
+  }
 }
diff --git a/CRM/Civicrmpostcodelookup/Utils.php b/CRM/Civicrmpostcodelookup/Utils.php
index d950efa..cf3ad47 100755
--- a/CRM/Civicrmpostcodelookup/Utils.php
+++ b/CRM/Civicrmpostcodelookup/Utils.php
@@ -4,15 +4,15 @@ require_once 'CRM/Core/Page.php';
 
 class CRM_Civicrmpostcodelookup_Utils {
   /**
- * mb_stripos all occurences
- * based on http://www.php.net/manual/en/function.strpos.php#87061
- *
- * Find all occurrences of a needle in a haystack
- *
- * @param string $haystack
- * @param string $needle
- * @return array or false
- */
+   * mb_stripos all occurences
+   * based on http://www.php.net/manual/en/function.strpos.php#87061
+   *
+   * Find all occurrences of a needle in a haystack
+   *
+   * @param string $haystack
+   * @param string $needle
+   * @return array or false
+   */
   public static function mb_stripos_all($haystack, $needle) {
 
     $s = 0;
diff --git a/CRM/PafUtils/Address.php b/CRM/PafUtils/Address.php
index 51936a2..0d0c5fd 100644
--- a/CRM/PafUtils/Address.php
+++ b/CRM/PafUtils/Address.php
@@ -3,723 +3,723 @@
 class Address
 {
 
-    protected $udprn = null;
+  protected $udprn = null;
 
-    protected $postcode = null;
+  protected $postcode = null;
 
-    protected $postTown = null;
+  protected $postTown = null;
 
-    protected $dependentLocality = null;
+  protected $dependentLocality = null;
 
-    protected $doubleDependentLocality = null;
+  protected $doubleDependentLocality = null;
 
-    protected $thoroughfare = null;
+  protected $thoroughfare = null;
 
-    protected $dependentThoroughfare = null;
+  protected $dependentThoroughfare = null;
 
-    protected $buildingNumber = null;
+  protected $buildingNumber = null;
 
-    protected $buildingName = null;
+  protected $buildingName = null;
 
-    protected $subBuildingName = null;
+  protected $subBuildingName = null;
 
-    protected $poBox = null;
+  protected $poBox = null;
 
-    protected $departmentName = null;
+  protected $departmentName = null;
 
-    protected $organizationName = null;
+  protected $organizationName = null;
 
-    protected $postcodeType = null;
+  protected $postcodeType = null;
 
-    protected $suOrganizationIndicator = null;
+  protected $suOrganizationIndicator = null;
 
-    protected $deliveryPointSuffix = null;
+  protected $deliveryPointSuffix = null;
 
-    protected $addressLines = null;
+  protected $addressLines = null;
 
-    protected $assembleDebugFlags = array();
+  protected $assembleDebugFlags = array();
 
 
-    public function __construct()
-    {
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getUdprn()
-    {
-        return $this->udprn;
-    }
+  public function __construct()
+  {
+  }
 
 
-    /**
-     * @param null $udprn
-     * @return self
-     */
-    public function setUdprn($udprn)
-    {
-        $this->udprn = $udprn;
-        return $this;
-    }
+  /**
+   * @return null
+   */
+  public function getUdprn()
+  {
+    return $this->udprn;
+  }
 
 
-    /**
-     * @return null
-     */
-    public function getPostcode()
-    {
-        return $this->postcode;
-    }
+  /**
+   * @param null $udprn
+   * @return self
+   */
+  public function setUdprn($udprn)
+  {
+    $this->udprn = $udprn;
+    return $this;
+  }
 
 
-    /**
-     * @param null $postcode
-     * @return self
-     */
-    public function setPostcode($postcode)
-    {
-        $this->addressLines = null;
-        $this->postcode = $postcode;
-        return $this;
-    }
+  /**
+   * @return null
+   */
+  public function getPostcode()
+  {
+    return $this->postcode;
+  }
 
 
-    /**
-     * @return null
-     */
-    public function getPostTown()
-    {
-        return $this->postTown;
-    }
+  /**
+   * @param null $postcode
+   * @return self
+   */
+  public function setPostcode($postcode)
+  {
+    $this->addressLines = null;
+    $this->postcode = $postcode;
+    return $this;
+  }
 
 
-    /**
-     * @param null $postTown
-     * @return self
-     */
-    public function setPostTown($postTown)
-    {
-        $this->addressLines = null;
-        $this->postTown = $postTown;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getDependentLocality()
-    {
-        return $this->dependentLocality;
-    }
-
-
-    /**
-     * @param null $dependentLocality
-     * @return self
-     */
-    public function setDependentLocality($dependentLocality)
-    {
-        $this->addressLines = null;
-        $this->dependentLocality = $dependentLocality;
-        return $this;
-    }
+  /**
+   * @return null
+   */
+  public function getPostTown()
+  {
+    return $this->postTown;
+  }
 
 
-    /**
-     * @return null
-     */
-    public function getDoubleDependentLocality()
-    {
-        return $this->doubleDependentLocality;
-    }
-
-
-    /**
-     * @param null $doubleDependentLocality
-     * @return self
-     */
-    public function setDoubleDependentLocality($doubleDependentLocality)
-    {
-        $this->addressLines = null;
-        $this->doubleDependentLocality = $doubleDependentLocality;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getThoroughfare()
-    {
-        return $this->thoroughfare;
-    }
-
-
-    /**
-     * @param null $thoroughfare
-     * @return self
-     */
-    public function setThoroughfare($thoroughfare)
-    {
-        $this->addressLines = null;
-        $this->thoroughfare = $thoroughfare;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getDependentThoroughfare()
-    {
-        return $this->dependentThoroughfare;
-    }
-
+  /**
+   * @param null $postTown
+   * @return self
+   */
+  public function setPostTown($postTown)
+  {
+    $this->addressLines = null;
+    $this->postTown = $postTown;
+    return $this;
+  }
 
-    /**
-     * @param null $dependentThoroughfare
-     * @return self
-     */
-    public function setDependentThoroughfare($dependentThoroughfare)
-    {
-        $this->addressLines = null;
-        $this->dependentThoroughfare = $dependentThoroughfare;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getBuildingNumber()
-    {
-        return $this->buildingNumber;
-    }
-
-
-    /**
-     * @param null $buildingNumber
-     * @return self
-     */
-    public function setBuildingNumber($buildingNumber)
-    {
-        $this->addressLines = null;
-        $this->buildingNumber = $buildingNumber;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getBuildingName()
-    {
-        return $this->buildingName;
-    }
-
-
-    /**
-     * @param null $buildingName
-     * @return self
-     */
-    public function setBuildingName($buildingName)
-    {
-        $this->addressLines = null;
-        $this->buildingName = $buildingName;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getSubBuildingName()
-    {
-        return $this->subBuildingName;
-    }
-
-
-    /**
-     * @param null $subBuildingName
-     * @return self
-     */
-    public function setSubBuildingName($subBuildingName)
-    {
-        $this->addressLines = null;
-        $this->subBuildingName = $subBuildingName;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getPobox()
-    {
-        return $this->poBox;
-    }
-
-
-    /**
-     * @param null $poBox
-     * @return self
-     */
-    public function setPoBox($poBox)
-    {
-        $this->addressLines = null;
-        $this->poBox = $poBox;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getDepartmentName()
-    {
-        return $this->departmentName;
-    }
 
-
-    /**
-     * @param null $departmentName
-     * @return self
-     */
-    public function setDepartmentName($departmentName)
-    {
-        $this->addressLines = null;
-        $this->departmentName = $departmentName;
-        return $this;
-    }
-
-
-    /**
-     * @return null
-     */
-    public function getOrganizationName()
-    {
-        return $this->organizationName;
-    }
-
-
-    /**
-     * @param null $organizationName
-     * @return self
-     */
-    public function setOrganizationName($organizationName)
-    {
-        $this->addressLines = null;
-        $this->organizationName = $organizationName;
-        return $this;
+  /**
+   * @return null
+   */
+  public function getDependentLocality()
+  {
+    return $this->dependentLocality;
+  }
+
+
+  /**
+   * @param null $dependentLocality
+   * @return self
+   */
+  public function setDependentLocality($dependentLocality)
+  {
+    $this->addressLines = null;
+    $this->dependentLocality = $dependentLocality;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getDoubleDependentLocality()
+  {
+    return $this->doubleDependentLocality;
+  }
+
+
+  /**
+   * @param null $doubleDependentLocality
+   * @return self
+   */
+  public function setDoubleDependentLocality($doubleDependentLocality)
+  {
+    $this->addressLines = null;
+    $this->doubleDependentLocality = $doubleDependentLocality;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getThoroughfare()
+  {
+    return $this->thoroughfare;
+  }
+
+
+  /**
+   * @param null $thoroughfare
+   * @return self
+   */
+  public function setThoroughfare($thoroughfare)
+  {
+    $this->addressLines = null;
+    $this->thoroughfare = $thoroughfare;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getDependentThoroughfare()
+  {
+    return $this->dependentThoroughfare;
+  }
+
+
+  /**
+   * @param null $dependentThoroughfare
+   * @return self
+   */
+  public function setDependentThoroughfare($dependentThoroughfare)
+  {
+    $this->addressLines = null;
+    $this->dependentThoroughfare = $dependentThoroughfare;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getBuildingNumber()
+  {
+    return $this->buildingNumber;
+  }
+
+
+  /**
+   * @param null $buildingNumber
+   * @return self
+   */
+  public function setBuildingNumber($buildingNumber)
+  {
+    $this->addressLines = null;
+    $this->buildingNumber = $buildingNumber;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getBuildingName()
+  {
+    return $this->buildingName;
+  }
+
+
+  /**
+   * @param null $buildingName
+   * @return self
+   */
+  public function setBuildingName($buildingName)
+  {
+    $this->addressLines = null;
+    $this->buildingName = $buildingName;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getSubBuildingName()
+  {
+    return $this->subBuildingName;
+  }
+
+
+  /**
+   * @param null $subBuildingName
+   * @return self
+   */
+  public function setSubBuildingName($subBuildingName)
+  {
+    $this->addressLines = null;
+    $this->subBuildingName = $subBuildingName;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getPobox()
+  {
+    return $this->poBox;
+  }
+
+
+  /**
+   * @param null $poBox
+   * @return self
+   */
+  public function setPoBox($poBox)
+  {
+    $this->addressLines = null;
+    $this->poBox = $poBox;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getDepartmentName()
+  {
+    return $this->departmentName;
+  }
+
+
+  /**
+   * @param null $departmentName
+   * @return self
+   */
+  public function setDepartmentName($departmentName)
+  {
+    $this->addressLines = null;
+    $this->departmentName = $departmentName;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getOrganizationName()
+  {
+    return $this->organizationName;
+  }
+
+
+  /**
+   * @param null $organizationName
+   * @return self
+   */
+  public function setOrganizationName($organizationName)
+  {
+    $this->addressLines = null;
+    $this->organizationName = $organizationName;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getPostcodeType()
+  {
+    return $this->postcodeType;
+  }
+
+
+  /**
+   * @param null $postcodeType
+   * @return self
+   */
+  public function setPostcodeType($postcodeType)
+  {
+    $this->postcodeType = $postcodeType;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getSuOrganizationIndicator()
+  {
+    return $this->suOrganizationIndicator;
+  }
+
+
+  /**
+   * @param null $suOrganizationIndicator
+   * @return self
+   */
+  public function setSuOrganizationIndicator($suOrganizationIndicator)
+  {
+    $this->suOrganizationIndicator = $suOrganizationIndicator;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getDeliveryPointSuffix()
+  {
+    return $this->deliveryPointSuffix;
+  }
+
+
+  /**
+   * @param null $deliveryPointSuffix
+   * @return self
+   */
+  public function setDeliveryPointSuffix($deliveryPointSuffix)
+  {
+    $this->deliveryPointSuffix = $deliveryPointSuffix;
+    return $this;
+  }
+
+
+  /**
+   * @return null
+   */
+  public function getAddressLines()
+  {
+    if ($this->addressLines === null) {
+      $this->assembleAddressLines();
+    }
+    return $this->addressLines;
+  }
+
+
+  /**
+   * Assemble the address lines (excluding post town and post code) according to the rule laid out by Royal Mail.
+   * The primary reference for these rules is the Royal Mail programmers guide. In some cases (particularly those
+   * not covered by the programmers guide), the layout used by the RM online address finder has been followed.
+   *
+   * @fixme Simplify whitespace handling with $nextLinePrefix
+   */
+  protected function assembleAddressLines()
+  {
+    $this->assembleDebugFlags = array('errors' => array());
+    $processed = false;
+    $processingError = false;
+    $addressLines = array();
+
+    // Take copies of the building name and number
+    // This allows us to manipulate their values (specifically for the split building name rules)
+    // without affecting the object "true" values, while making later processing within this method simpler
+    $buildingName = $this->buildingName;
+    $buildingNumber = $this->buildingNumber;
+    if ($buildingNumber == 0) {
+      $buildingNumber = null;
+    }
+
+    // Exception 4 regex: Any of the specified prefixes followed by either a number with an alpha suffix or a numeric range
+    $specialPrefixes = array(
+      'Back of',
+      'Block',
+      'Blocks',
+      'Building',
+      'Maisonette',
+      'Maisonettes',
+      'Rear of',
+      'Shop',
+      'Shops',
+      'Stall',
+      'Stalls',
+      'Suite',
+      'Suites',
+      'Unit',
+      'Units',
+    );
+    $ex4Regex = '/^(' . join('|', $specialPrefixes) . ')\s([0-9]+[a-zA-Z]+|[0-9]+\-[0-9]+|[a-zA-Z])$/';
+
+    if (strlen($buildingName)) {
+      if (preg_match($ex4Regex, $buildingName)) {
+        $this->assembleDebugFlags['ex4BuildingName'] = true;
+      }
+    }
+
+    if (strlen($this->subBuildingName)) {
+      if (preg_match($ex4Regex, $this->subBuildingName)) {
+        $this->assembleDebugFlags['ex4SubBuildingName'] = true;
+      }
+    }
+
+    // Do we need to split the building name - see Table 27c / 27d
+    if (! empty($buildingName) && empty($buildingNumber)) {
+
+      if (preg_match('/\s[0-9]+[a-zA-Z]+$/', $buildingName)
+        || preg_match('/\s[0-9]+\-[0-9]+$/', $buildingName)
+      ) {
+        if (! preg_match($ex4Regex, $buildingName)) {
+          $this->assembleDebugFlags['splitBuildingName'] = true;
+          $parts = explode(' ', $buildingName);
+          $buildingNumber = array_pop($parts);
+          $buildingName = join(' ', $parts);
+        }
+      }
     }
 
 
-    /**
-     * @return null
-     */
-    public function getPostcodeType()
-    {
-        return $this->postcodeType;
+    // Table 19, note b: If an organization name is present, it should appear on the first address line
+    if (! empty($this->organizationName)) {
+      $addressLines[] = $this->organizationName;
     }
-
-
-    /**
-     * @param null $postcodeType
-     * @return self
-     */
-    public function setPostcodeType($postcodeType)
-    {
-        $this->postcodeType = $postcodeType;
-        return $this;
+    // Table 19, note c: If a department name is present, it should appear on the second line (after organization name)
+    if (! empty($this->departmentName)) {
+      $addressLines[] = $this->departmentName;
     }
-
-
-    /**
-     * @return null
-     */
-    public function getSuOrganizationIndicator()
-    {
-        return $this->suOrganizationIndicator;
+    // Table 19, note d: If a PO Box is present, it should appear on the first address line after any organization / dept. name
+    // The PO Box number MUST be preceded by 'PO Box'
+    if (! empty($this->poBox)) {
+      $addressLines[] = 'PO Box ' . $this->poBox;
     }
 
+    $nextLinePrefix = null;
 
-    /**
-     * @param null $suOrganizationIndicator
-     * @return self
-     */
-    public function setSuOrganizationIndicator($suOrganizationIndicator)
-    {
-        $this->suOrganizationIndicator = $suOrganizationIndicator;
-        return $this;
-    }
-
+    // Rule 1 - Organisation name only
+    if (empty($this->subBuildingName) && empty($buildingName) && empty($buildingNumber)) {
+      if (!empty($this->organizationName)) {
+        $processed = true;
+        $this->assembleDebugFlags['rule'] = 1;
 
-    /**
-     * @return null
-     */
-    public function getDeliveryPointSuffix()
-    {
-        return $this->deliveryPointSuffix;
+        // No actual manipulation code as the organization name is handled above
+      }
     }
 
+    // The following code is based on Table 20
+    // Rule 2 - Building number only
+    if (empty($this->subBuildingName) && empty($buildingName) && (! empty($buildingNumber))) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 2;
 
-    /**
-     * @param null $deliveryPointSuffix
-     * @return self
-     */
-    public function setDeliveryPointSuffix($deliveryPointSuffix)
-    {
-        $this->deliveryPointSuffix = $deliveryPointSuffix;
-        return $this;
+      $this->assembleDebugFlags['nlpBuildingNumber'] = true;
+      $nextLinePrefix = $buildingNumber . ' ';
     }
 
+    // Rule 3 - Building Name only
+    if (empty($this->subBuildingName) && (! empty($buildingName)) && empty($buildingNumber)) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 3;
 
-    /**
-     * @return null
-     */
-    public function getAddressLines()
-    {
-        if ($this->addressLines === null) {
-            $this->assembleAddressLines();
+      // Exceptions:
+      // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
+      // ii) First and penultimate characters are numeric, last character is alphabetic
+      // iii) Building name has only 1 character
+      if (preg_match('/^[0-9].*[0-9]$/', $buildingName)
+        || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $buildingName)
+        || (strlen($buildingName) == 1)
+      ) {
+        $this->assembleDebugFlags['exceptionBuildingName'] = true;
+        if ($nextLinePrefix !== null) {
+          $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
+          $processingError = true;
         }
-        return $this->addressLines;
-    }
 
-
-    /**
-     * Assemble the address lines (excluding post town and post code) according to the rule laid out by Royal Mail.
-     * The primary reference for these rules is the Royal Mail programmers guide. In some cases (particularly those
-     * not covered by the programmers guide), the layout used by the RM online address finder has been followed.
-     *
-     * @fixme Simplify whitespace handling with $nextLinePrefix
-     */
-    protected function assembleAddressLines()
-    {
-        $this->assembleDebugFlags = array('errors' => array());
-        $processed = false;
-        $processingError = false;
-        $addressLines = array();
-
-        // Take copies of the building name and number
-        // This allows us to manipulate their values (specifically for the split building name rules)
-        // without affecting the object "true" values, while making later processing within this method simpler
-        $buildingName = $this->buildingName;
-        $buildingNumber = $this->buildingNumber;
-        if ($buildingNumber == 0) {
-            $buildingNumber = null;
+        $this->assembleDebugFlags['nlpBuildingName'] = true;
+        $nextLinePrefix = $buildingName;
+        if ((strlen($buildingName) == 1) && (! is_numeric($buildingName))) {
+          $nextLinePrefix .= ',';
         }
+        $nextLinePrefix .= ' ';
+      } else {
+        $addressLines[] = $buildingName;
+      }
+    }
+
+    // Rule 4 - Building Name & Building Number
+    if (empty($this->subBuildingName) && (! empty($buildingName) && (! empty($buildingNumber)))) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 4;
+
+      $this->assembleDebugFlags['nlpBuildingNumber'] = true;
+      $addressLines[] = $buildingName;
+      $nextLinePrefix = $buildingNumber . ' ';
+    }
+
+    // Rule 5 - Sub building name & Building Number
+    // The programmers guide talks about an exception involving the 'concatenation indicator',
+    // But as far as I can see this field doesn't exist in the CSV format files
+    if ((! empty($this->subBuildingName) && empty($buildingName) && (! empty($buildingNumber)))) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 5;
+
+      $this->assembleDebugFlags['nlpBuildingNumber'] = true;
+      $addressLines[] = $this->subBuildingName;
+      $nextLinePrefix = $buildingNumber . ' ';
+    }
+
+    // Rule 6 - Sub Building Name & Building Name
+    if ((! empty($this->subBuildingName)) && (! empty($buildingName)) && empty($buildingNumber)) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 6;
+
+      $exceptionSubBuildingName = false;
+      // Exceptions:
+      // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
+      // ii) First and penultimate characters are numeric, last character is alphabetic
+      // iii) Building name has only 1 character
+      if (preg_match('/^[0-9].*[0-9]$/', $this->subBuildingName)
+        || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $this->subBuildingName)
+        || (strlen($this->subBuildingName) == 1)
+      ) {
+        $this->assembleDebugFlags['exceptionSubBuildingName'] = true;
+        $exceptionSubBuildingName = true;
 
-        // Exception 4 regex: Any of the specified prefixes followed by either a number with an alpha suffix or a numeric range
-        $specialPrefixes = array(
-            'Back of',
-            'Block',
-            'Blocks',
-            'Building',
-            'Maisonette',
-            'Maisonettes',
-            'Rear of',
-            'Shop',
-            'Shops',
-            'Stall',
-            'Stalls',
-            'Suite',
-            'Suites',
-            'Unit',
-            'Units',
-        );
-        $ex4Regex = '/^(' . join('|', $specialPrefixes) . ')\s([0-9]+[a-zA-Z]+|[0-9]+\-[0-9]+|[a-zA-Z])$/';
-
-        if (strlen($buildingName)) {
-            if (preg_match($ex4Regex, $buildingName)) {
-                $this->assembleDebugFlags['ex4BuildingName'] = true;
-            }
+        if ($nextLinePrefix !== null) {
+          $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
+          $processingError = true;
         }
 
-        if (strlen($this->subBuildingName)) {
-            if (preg_match($ex4Regex, $this->subBuildingName)) {
-                $this->assembleDebugFlags['ex4SubBuildingName'] = true;
-            }
+        $this->assembleDebugFlags['nlpSubBuildingName'] = true;
+        $nextLinePrefix = $this->subBuildingName;
+        if ((strlen($this->subBuildingName) == 1) && (! is_numeric($this->subBuildingName))) {
+          $nextLinePrefix .= ',';
         }
-
-        // Do we need to split the building name - see Table 27c / 27d
-        if (! empty($buildingName) && empty($buildingNumber)) {
-
-            if (preg_match('/\s[0-9]+[a-zA-Z]+$/', $buildingName)
-                || preg_match('/\s[0-9]+\-[0-9]+$/', $buildingName)
-            ) {
-                if (! preg_match($ex4Regex, $buildingName)) {
-                    $this->assembleDebugFlags['splitBuildingName'] = true;
-                    $parts = explode(' ', $buildingName);
-                    $buildingNumber = array_pop($parts);
-                    $buildingName = join(' ', $parts);
-                }
-            }
+        $nextLinePrefix .= ' ';
+      } else {
+        $addressLines[] = $this->subBuildingName;
+      }
+
+
+      // Exceptions:
+      // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
+      // ii) First and penultimate characters are numeric, last character is alphabetic
+      // iii) Building name has only 1 character
+      if (preg_match('/^[0-9].*[0-9]$/', $buildingName)
+        || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $buildingName)
+        || (strlen($buildingName) == 1)
+      ) {
+        $this->assembleDebugFlags['exceptionBuildingName'] = true;
+
+        if ((strlen($nextLinePrefix)) && (!$exceptionSubBuildingName)) {
+          $addressLines[] = trim($nextLinePrefix);
+          $nextLinePrefix = null;
         }
 
-
-        // Table 19, note b: If an organization name is present, it should appear on the first address line
-        if (! empty($this->organizationName)) {
-            $addressLines[] = $this->organizationName;
-        }
-        // Table 19, note c: If a department name is present, it should appear on the second line (after organization name)
-        if (! empty($this->departmentName)) {
-            $addressLines[] = $this->departmentName;
+        $this->assembleDebugFlags['nlpBuildingName'] = true;
+        $nextLinePrefix = trim(trim($nextLinePrefix) .' '. $buildingName);
+        if ((strlen($buildingName) == 1) && (! is_numeric($buildingName))) {
+          $nextLinePrefix .= ',';
         }
-        // Table 19, note d: If a PO Box is present, it should appear on the first address line after any organization / dept. name
-        // The PO Box number MUST be preceded by 'PO Box'
-        if (! empty($this->poBox)) {
-            $addressLines[] = 'PO Box ' . $this->poBox;
-        }
-
+        $nextLinePrefix .= ' ';
+      } else {
+        $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingName;
         $nextLinePrefix = null;
-
-        // Rule 1 - Organisation name only
-        if (empty($this->subBuildingName) && empty($buildingName) && empty($buildingNumber)) {
-            if (!empty($this->organizationName)) {
-                $processed = true;
-                $this->assembleDebugFlags['rule'] = 1;
-
-                // No actual manipulation code as the organization name is handled above
-            }
-        }
-
-        // The following code is based on Table 20
-        // Rule 2 - Building number only
-        if (empty($this->subBuildingName) && empty($buildingName) && (! empty($buildingNumber))) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 2;
-
-            $this->assembleDebugFlags['nlpBuildingNumber'] = true;
-            $nextLinePrefix = $buildingNumber . ' ';
-        }
-
-        // Rule 3 - Building Name only
-        if (empty($this->subBuildingName) && (! empty($buildingName)) && empty($buildingNumber)) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 3;
-
-            // Exceptions:
-            // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
-            // ii) First and penultimate characters are numeric, last character is alphabetic
-            // iii) Building name has only 1 character
-            if (preg_match('/^[0-9].*[0-9]$/', $buildingName)
-                || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $buildingName)
-                || (strlen($buildingName) == 1)
-            ) {
-                $this->assembleDebugFlags['exceptionBuildingName'] = true;
-                if ($nextLinePrefix !== null) {
-                    $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
-                    $processingError = true;
-                }
-
-                $this->assembleDebugFlags['nlpBuildingName'] = true;
-                $nextLinePrefix = $buildingName;
-                if ((strlen($buildingName) == 1) && (! is_numeric($buildingName))) {
-                    $nextLinePrefix .= ',';
-                }
-                $nextLinePrefix .= ' ';
-            } else {
-                $addressLines[] = $buildingName;
-            }
+      }
+    }
+
+    // Rule 7 - Sub building name, building name & building number
+    if (! (empty($this->subBuildingName) || empty($buildingName) || (empty($buildingNumber)))) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 7;
+
+      // Exceptions:
+      // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
+      // ii) First and penultimate characters are numeric, last character is alphabetic
+      // iii) Building name has only 1 character
+      if (preg_match('/^[0-9].*[0-9]$/', $this->subBuildingName)
+        || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $this->subBuildingName)
+        || (strlen($this->subBuildingName) == 1)
+      ) {
+        $this->assembleDebugFlags['exceptionSubBuildingName'] = true;
+        if ($nextLinePrefix !== null) {
+          $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
+          $processingError = true;
         }
 
-        // Rule 4 - Building Name & Building Number
-        if (empty($this->subBuildingName) && (! empty($buildingName) && (! empty($buildingNumber)))) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 4;
-
-            $this->assembleDebugFlags['nlpBuildingNumber'] = true;
-            $addressLines[] = $buildingName;
-            $nextLinePrefix = $buildingNumber . ' ';
+        $this->assembleDebugFlags['nlpSubBuildingName'] = true;
+        $nextLinePrefix = $this->subBuildingName;
+        if ((strlen($this->subBuildingName) == 1) && (! is_numeric($this->subBuildingName))) {
+          $nextLinePrefix .= ',';
         }
+        $nextLinePrefix .= ' ';
+      } else {
+        $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $this->subBuildingName;
+        $nextLinePrefix = null;
+      }
 
-        // Rule 5 - Sub building name & Building Number
-        // The programmers guide talks about an exception involving the 'concatenation indicator',
-        // But as far as I can see this field doesn't exist in the CSV format files
-        if ((! empty($this->subBuildingName) && empty($buildingName) && (! empty($buildingNumber)))) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 5;
-
-            $this->assembleDebugFlags['nlpBuildingNumber'] = true;
-            $addressLines[] = $this->subBuildingName;
-            $nextLinePrefix = $buildingNumber . ' ';
-        }
+      $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingName;
+      $nextLinePrefix = null;
 
-        // Rule 6 - Sub Building Name & Building Name
-        if ((! empty($this->subBuildingName)) && (! empty($buildingName)) && empty($buildingNumber)) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 6;
-
-            $exceptionSubBuildingName = false;
-            // Exceptions:
-            // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
-            // ii) First and penultimate characters are numeric, last character is alphabetic
-            // iii) Building name has only 1 character
-            if (preg_match('/^[0-9].*[0-9]$/', $this->subBuildingName)
-                || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $this->subBuildingName)
-                || (strlen($this->subBuildingName) == 1)
-            ) {
-                $this->assembleDebugFlags['exceptionSubBuildingName'] = true;
-                $exceptionSubBuildingName = true;
-
-                if ($nextLinePrefix !== null) {
-                    $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
-                    $processingError = true;
-                }
-
-                $this->assembleDebugFlags['nlpSubBuildingName'] = true;
-                $nextLinePrefix = $this->subBuildingName;
-                if ((strlen($this->subBuildingName) == 1) && (! is_numeric($this->subBuildingName))) {
-                    $nextLinePrefix .= ',';
-                }
-                $nextLinePrefix .= ' ';
-            } else {
-                $addressLines[] = $this->subBuildingName;
-            }
-
-
-            // Exceptions:
-            // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
-            // ii) First and penultimate characters are numeric, last character is alphabetic
-            // iii) Building name has only 1 character
-            if (preg_match('/^[0-9].*[0-9]$/', $buildingName)
-                || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $buildingName)
-                || (strlen($buildingName) == 1)
-            ) {
-                $this->assembleDebugFlags['exceptionBuildingName'] = true;
-
-                if ((strlen($nextLinePrefix)) && (!$exceptionSubBuildingName)) {
-                    $addressLines[] = trim($nextLinePrefix);
-                    $nextLinePrefix = null;
-                }
-
-                $this->assembleDebugFlags['nlpBuildingName'] = true;
-                $nextLinePrefix = trim(trim($nextLinePrefix) .' '. $buildingName);
-                if ((strlen($buildingName) == 1) && (! is_numeric($buildingName))) {
-                    $nextLinePrefix .= ',';
-                }
-                $nextLinePrefix .= ' ';
-            } else {
-                $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingName;
-                $nextLinePrefix = null;
-            }
-        }
+      $this->assembleDebugFlags['nlpBuildingNumber'] = true;
+      $nextLinePrefix = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingNumber;
+    }
 
-        // Rule 7 - Sub building name, building name & building number
-        if (! (empty($this->subBuildingName) || empty($buildingName) || (empty($buildingNumber)))) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 7;
-
-            // Exceptions:
-            // i) First and last characters of the building name are numeric (eg. '1to1' or '100:1')
-            // ii) First and penultimate characters are numeric, last character is alphabetic
-            // iii) Building name has only 1 character
-            if (preg_match('/^[0-9].*[0-9]$/', $this->subBuildingName)
-                || preg_match('/^[0-9].*[0-9][a-zA-Z]$/', $this->subBuildingName)
-                || (strlen($this->subBuildingName) == 1)
-            ) {
-                $this->assembleDebugFlags['exceptionSubBuildingName'] = true;
-                if ($nextLinePrefix !== null) {
-                    $this->assembleDebugFlags['errors'][] = 'NLP ' . __LINE__;
-                    $processingError = true;
-                }
-
-                $this->assembleDebugFlags['nlpSubBuildingName'] = true;
-                $nextLinePrefix = $this->subBuildingName;
-                if ((strlen($this->subBuildingName) == 1) && (! is_numeric($this->subBuildingName))) {
-                    $nextLinePrefix .= ',';
-                }
-                $nextLinePrefix .= ' ';
-            } else {
-                $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $this->subBuildingName;
-                $nextLinePrefix = null;
-            }
-
-            $addressLines[] = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingName;
-            $nextLinePrefix = null;
-
-            $this->assembleDebugFlags['nlpBuildingNumber'] = true;
-            $nextLinePrefix = (strlen($nextLinePrefix) ? trim($nextLinePrefix) . ' ' : '') . $buildingNumber;
-        }
 
+    // Rule C1 - Self-written rule: Sub-building name occurs, but no building name or number
+    // This occurred in the Y14M09 update - 8350793 / EH12 5DD (15Gf Eglinton Crescent)
+    // And was still the same on the Royal Mail Postcode Lookup website data as of 2014-10-21
+    if (empty($buildingName) && empty($buildingNumber) && (! empty($this->subBuildingName))) {
+      $processed = true;
+      $this->assembleDebugFlags['rule'] = 'c1';
+      $nextLinePrefix = $this->subBuildingName;
 
-        // Rule C1 - Self-written rule: Sub-building name occurs, but no building name or number
-        // This occurred in the Y14M09 update - 8350793 / EH12 5DD (15Gf Eglinton Crescent)
-        // And was still the same on the Royal Mail Postcode Lookup website data as of 2014-10-21
-        if (empty($buildingName) && empty($buildingNumber) && (! empty($this->subBuildingName))) {
-            $processed = true;
-            $this->assembleDebugFlags['rule'] = 'c1';
-            $nextLinePrefix = $this->subBuildingName;
+      // FIXME Should we test the exception rules?
+    }
 
-            // FIXME Should we test the exception rules?
-        }
+    if (strlen($nextLinePrefix) && (substr($nextLinePrefix, -1) != ' ')) {
+      $nextLinePrefix .= ' ';
+    }
 
-        if (strlen($nextLinePrefix) && (substr($nextLinePrefix, -1) != ' ')) {
-            $nextLinePrefix .= ' ';
-        }
+    // Dependent Thoroughfare
+    if (! empty($this->dependentThoroughfare)) {
+      $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->dependentThoroughfare;
+      $nextLinePrefix = null;
+    }
+    // Thoroughfare
+    if (! empty($this->thoroughfare)) {
+      $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->thoroughfare;
+      $nextLinePrefix = null;
+    }
+    // Double dependent locality
+    if (! empty($this->doubleDependentLocality)) {
+      $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->doubleDependentLocality;
+      $nextLinePrefix = null;
+    }
+    // Dependent locality
+    if (! empty($this->dependentLocality)) {
+      $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->dependentLocality;
+      $nextLinePrefix = null;
+    }
 
-        // Dependent Thoroughfare
-        if (! empty($this->dependentThoroughfare)) {
-            $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->dependentThoroughfare;
-            $nextLinePrefix = null;
-        }
-        // Thoroughfare
-        if (! empty($this->thoroughfare)) {
-            $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->thoroughfare;
-            $nextLinePrefix = null;
-        }
-        // Double dependent locality
-        if (! empty($this->doubleDependentLocality)) {
-            $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->doubleDependentLocality;
-            $nextLinePrefix = null;
-        }
-        // Dependent locality
-        if (! empty($this->dependentLocality)) {
-            $addressLines[] = (strlen($nextLinePrefix) ? $nextLinePrefix : '') . $this->dependentLocality;
-            $nextLinePrefix = null;
-        }
+    // Yup, apparently there's addresses in the database with no locality / thoroughfare. Just a number.
+    // UDPRNs affected as of 2014-02-06: 2431986 and 328392
+    if ($nextLinePrefix !== null) {
+      $this->assembleDebugFlags['nlpAlone'] = true;
+      $addressLines[] = $nextLinePrefix;
+    }
 
-        // Yup, apparently there's addresses in the database with no locality / thoroughfare. Just a number.
-        // UDPRNs affected as of 2014-02-06: 2431986 and 328392
-        if ($nextLinePrefix !== null) {
-            $this->assembleDebugFlags['nlpAlone'] = true;
-            $addressLines[] = $nextLinePrefix;
-        }
+    $this->assembleDebugFlags['processingError'] = $processingError;
+    $this->assembleDebugFlags['processed'] = $processed;
 
-        $this->assembleDebugFlags['processingError'] = $processingError;
-        $this->assembleDebugFlags['processed'] = $processed;
-
-        // Send a notification to developers if an address was not processed by any of the above rules
-        // (and should have been) or if we think there was an error in processing the address correctly
-        // (because the RM programmers guide does not specify how to correctly handle the address encountered)
-        if ((! $processed) || $processingError) {
-            if (! (empty($this->subBuildingName) && empty($buildingName) && (empty($buildingNumber)))) {
-                if ($processingError) {
-                    trigger_error("An address (with UDPRN: {$this->udprn}) was probably processed incorrectly",
-                        E_USER_NOTICE);
-                } else {
-                    trigger_error("An address (with UDPRN: {$this->udprn}) was not processed by any rules",
-                        E_USER_NOTICE);
-                }
-            }
+    // Send a notification to developers if an address was not processed by any of the above rules
+    // (and should have been) or if we think there was an error in processing the address correctly
+    // (because the RM programmers guide does not specify how to correctly handle the address encountered)
+    if ((! $processed) || $processingError) {
+      if (! (empty($this->subBuildingName) && empty($buildingName) && (empty($buildingNumber)))) {
+        if ($processingError) {
+          trigger_error("An address (with UDPRN: {$this->udprn}) was probably processed incorrectly",
+            E_USER_NOTICE);
+        } else {
+          trigger_error("An address (with UDPRN: {$this->udprn}) was not processed by any rules",
+            E_USER_NOTICE);
         }
-
-        $this->addressLines = $addressLines;
+      }
     }
 
+    $this->addressLines = $addressLines;
+  }
 
-    /**
-     * Return the debug flags that indicate what processing was done by assembleAddressLines()
-     * While this is internal implementation information, it can be useful, for example, to build an SQL table
-     * containing these values to allow quick location of addresses that are matching certain rules / criteria
-     *
-     * @return array
-     */
-    public function getAssemblyDebugFlags()
-    {
-        return $this->assembleDebugFlags;
-    }
+
+  /**
+   * Return the debug flags that indicate what processing was done by assembleAddressLines()
+   * While this is internal implementation information, it can be useful, for example, to build an SQL table
+   * containing these values to allow quick location of addresses that are matching certain rules / criteria
+   *
+   * @return array
+   */
+  public function getAssemblyDebugFlags()
+  {
+    return $this->assembleDebugFlags;
+  }
 }
diff --git a/civicrmpostcodelookup.php b/civicrmpostcodelookup.php
index abce437..f1f53c6 100755
--- a/civicrmpostcodelookup.php
+++ b/civicrmpostcodelookup.php
@@ -1,16 +1,17 @@
 <?php
 
 require_once 'civicrmpostcodelookup.civix.php';
+use CRM_Civigiftaid_ExtensionUtil as E;
 
 // Postcode lookup providers
 // FIXME: Move this list to option values
-$GLOBALS["providers"] = array(
-      'afd' => 'AFD',
-      'civipostcode' => 'CiviPostcode',
-      'experian' => 'Experian',
-      'postcodeanywhere' => 'PostcodeAnywhere',
-      'getaddressio'  => 'GetAddress'
-      );
+$GLOBALS["providers"] = [
+  'afd' => 'AFD',
+  'civipostcode' => 'CiviPostcode',
+  'experian' => 'Experian',
+  'postcodeanywhere' => 'PostcodeAnywhere',
+  'getaddressio'  => 'GetAddress'
+];
 
 /**
  * Implementation of hook_civicrm_config
@@ -38,13 +39,7 @@ function civicrmpostcodelookup_civicrm_xmlMenu(&$files) {
  * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
  */
 function civicrmpostcodelookup_civicrm_install() {
-
-  require_once 'CRM/Core/BAO/Setting.php';
-  CRM_Core_BAO_Setting::setItem('',
-          'CiviCRM Postcode Lookup',
-          'api_details'
-        );
-
+  CRM_Core_BAO_Setting::setItem('', 'CiviCRM Postcode Lookup', 'api_details');
   _civicrmpostcodelookup_civix_civicrm_install();
 }
 
@@ -126,35 +121,23 @@ function civicrmpostcodelookup_civicrm_alterSettingsFolders(&$metaDataFolders =
 
 /**
  * Add navigation for Postcode Lookup under "Administer" menu
- *
- * @param $params associated array of navigation menus
  */
-function civicrmpostcodelookup_civicrm_navigationMenu( &$params ) {
-  // get the id of Administer Menu
-  $administerMenuId = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Navigation', 'Administer', 'id', 'name');
-
-  // skip adding menu if there is no administer menu
-  if ($administerMenuId) {
-    // get the maximum key under adminster menu
-    $maxKey = max( array_keys($params[$administerMenuId]['child']));
-    $params[$administerMenuId]['child'][$maxKey+1] =  array (
-      'attributes' => array (
-        'label'      => 'Postcode Lookup',
-        'name'       => 'Postcode Lookup',
-        'url'        => 'civicrm/admin/postcodelookup/settings?reset=1',
-        'permission' => 'administer CiviCRM',
-        'operator'   => NULL,
-        'separator'  => TRUE,
-        'parentID'   => $administerMenuId,
-        'navID'      => $maxKey+1,
-        'active'     => 1
-      )
-    );
-  }
+function civicrmpostcodelookup_civicrm_navigationMenu(&$menu) {
+  $item[] =  [
+    'label'      => E::ts('Postcode Lookup'),
+    'name'       => 'Postcode Lookup',
+    'url'        => 'civicrm/admin/postcodelookup/settings?reset=1',
+    'permission' => 'administer CiviCRM',
+    'operator'   => NULL,
+    'separator'  => TRUE,
+    'active'     => 1
+  ];
+  _civicrmpostcodelookup_civix_insert_navigation_menu($menu, 'Administer', $item[0]);
+  _civicrmpostcodelookup_civix_navigationMenu($menu);
 }
 
 function civicrmpostcodelookup_civicrm_buildForm($formName, &$form) {
-  $postCodeLookupPages = array(
+  $postCodeLookupPages = [
     'CRM_Contact_Form_Contact'
     , 'CRM_Contact_Form_Inline_Address'
     , 'CRM_Profile_Form_Edit'
@@ -163,7 +146,7 @@ function civicrmpostcodelookup_civicrm_buildForm($formName, &$form) {
     , 'CRM_Event_Form_ManageEvent_Location'
     , 'CRM_Financial_Form_Payment'
     , 'CRM_Contact_Form_Domain'
-  );
+  ];
   if (in_array($formName, $postCodeLookupPages)) {
     // Assign the postcode lookup provider to form, so that we can call the related function in AJAX
     $settingsStr = CRM_Core_BAO_Setting::getItem('CiviCRM Postcode Lookup', 'api_details');
@@ -180,10 +163,9 @@ function civicrmpostcodelookup_civicrm_buildForm($formName, &$form) {
     $civiVersion = CRM_Civicrmpostcodelookup_Utils::getCiviVersion();
     $form->assign('civiVersion', $civiVersion);
 
-    require_once 'CRM/Core/Resources.php';
     CRM_Core_Resources::singleton()
-      ->addScriptFile('uk.co.vedaconsulting.module.civicrmpostcodelookup', 'js/jquery.ui.autocomplete.html.js', 110, 'html-header', FALSE)
-      ->addStyleFile('uk.co.vedaconsulting.module.civicrmpostcodelookup', 'css/civipostcode.css', 110, 'page-header');
+      ->addScriptFile(E::LONG_NAME, 'js/jquery.ui.autocomplete.html.js', 110, 'html-header', FALSE)
+      ->addStyleFile(E::LONG_NAME, 'css/civipostcode.css', 110, 'page-header');
   }
 }
 
@@ -194,8 +176,7 @@ function civicrmpostcodelookup_civicrm_buildForm($formName, &$form) {
  * @return void
  */
 function civicrmpostcodelookup_civicrm_permission(&$permissions) {
-  $prefix = ts('CiviCRM') . ': '; // name of extension or module
-  $permissions += array(
-    'access postcode lookup' => $prefix . ts('Access CiviCRM Postcode lookups'),
-  );
+  $permissions += [
+    'access postcode lookup' => E::ts('CiviCRM: Access CiviCRM Postcode lookups'),
+  ];
 }
diff --git a/templates/CRM/Civicrmpostcodelookup/Form/Postcodelookup.tpl b/templates/CRM/Civicrmpostcodelookup/Form/Postcodelookup.tpl
index a56ad7b..18e64ad 100755
--- a/templates/CRM/Civicrmpostcodelookup/Form/Postcodelookup.tpl
+++ b/templates/CRM/Civicrmpostcodelookup/Form/Postcodelookup.tpl
@@ -1,74 +1,74 @@
 {literal}
-<style type="text/css">
- .ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
-</style>
+  <style type="text/css">
+    .ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
+  </style>
 <script type="text/javascript">
-cj(document).ready(function(){
-  var locationTypes = {/literal}{if $civiPostCodeLookupLocationTypeJson}{$civiPostCodeLookupLocationTypeJson}{else}''{/if}{literal};
-  var blockId = '';
-  var blockNo = '';  
-  if (cj('#editrow-street_address-Primary').length > 0  ) {
-       var blockId = 'Primary';
-       var blockNo = 'Primary';
-       var targetHtml = '';
-       var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
-       cj('#editrow-street_address-Primary').before(postCodeHtml);
+  cj(document).ready(function(){
+    var locationTypes = {/literal}{if $civiPostCodeLookupLocationTypeJson}{$civiPostCodeLookupLocationTypeJson}{else}''{/if}{literal};
+    var blockId = '';
+    var blockNo = '';
+    if (cj('#editrow-street_address-Primary').length > 0  ) {
+      var blockId = 'Primary';
+      var blockNo = 'Primary';
+      var targetHtml = '';
+      var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
+      cj('#editrow-street_address-Primary').before(postCodeHtml);
     }
 
     else if (cj('#editrow-street_address-5').length > 0 ) {
-       var blockId = '5';
-       var blockNo = '5';
-       var targetHtml = '';
-       var divHtml = cj('#editrow-street_address-5').html();
-       var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
-       cj('#editrow-street_address-5').before(postCodeHtml);
+      var blockId = '5';
+      var blockNo = '5';
+      var targetHtml = '';
+      var divHtml = cj('#editrow-street_address-5').html();
+      var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
+      cj('#editrow-street_address-5').before(postCodeHtml);
     }
 
     // Include lookup in billing section as well
     if (cj('#billing_street_address-5').length > 0 ) {
-       var billingblockId = '5';
-       var billingblockNo = '5';
-       var billingtargetHtml = '';
-       var billingdivHtml = cj('#billing_street_address-5').html();
-       var billingpostCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCodeBillingSection_' + billingblockId + '" id ="inputPostCodeBillingSection_' + billingblockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + billingblockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
-       cj('.billing_street_address-5-section').before(billingpostCodeHtml);
-
-       var billingPostcodeElement = '#inputPostCodeBillingSection_'+billingblockNo;
+      var billingblockId = '5';
+      var billingblockNo = '5';
+      var billingtargetHtml = '';
+      var billingdivHtml = cj('#billing_street_address-5').html();
+      var billingpostCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCodeBillingSection_' + billingblockId + '" id ="inputPostCodeBillingSection_' + billingblockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + billingblockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
+      cj('.billing_street_address-5-section').before(billingpostCodeHtml);
+
+      var billingPostcodeElement = '#inputPostCodeBillingSection_'+billingblockNo;
     }
     //Location Types from settings
     if (locationTypes) {
       cj.each(locationTypes, function (id, index) {
         if (cj('#editrow-street_address-'+ id).length > 0 ) {
-         blockId = id;
-         blockNo = id;
-         var targetHtml = '';
-         // var divHtml = cj('#editrow-street_address-'+ id).html();
-         var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
-         cj('#editrow-street_address-'+ id).before(postCodeHtml);
+          blockId = id;
+          blockNo = id;
+          var targetHtml = '';
+          // var divHtml = cj('#editrow-street_address-'+ id).html();
+          var postCodeHtml = '<div class="crm-section addressLookup form-item"><div class="label"><label for="addressLookup">Search for an address</label></div><div class="edit-value content"><div class="postcodelookup-textbox-wrapper"><input placeholder="Start typing a postcode" name="inputPostCode_' + blockId + '" id ="inputPostCode_' + blockId + '" style="width: 25em;"></div><div class="loader-image"><img id="loaderimage_' + blockId + '" src="{/literal}{$config->resourceBase}{literal}i/loading.gif" style="width:15px;height:15px; display: none" /></div></div><div class="clear"></div></div>';
+          cj('#editrow-street_address-'+ id).before(postCodeHtml);
         }
       });
     }
 
-  var buttonElement = '#postcodeLookupButton_'+blockNo;
-  var houseElement = '#inputNumber_'+blockNo;
-  var postcodeElement = '#inputPostCode_'+blockNo;
-  var addressResultElement = '#addressResult_'+blockNo;
-  var addressResultsElement = '#addressResults_'+blockNo;
-  var minCharacters = 4;
-  var delay = 200;
-
-  var postcodeProvider = '{/literal}{$civiPostCodeLookupProvider}{literal}';
-  if (postcodeProvider !== 'civipostcode') {
-    cj(postcodeElement).attr("placeholder", "Type full postcode to find addresses");
-    minCharacters = 5;
-  }
+    var buttonElement = '#postcodeLookupButton_'+blockNo;
+    var houseElement = '#inputNumber_'+blockNo;
+    var postcodeElement = '#inputPostCode_'+blockNo;
+    var addressResultElement = '#addressResult_'+blockNo;
+    var addressResultsElement = '#addressResults_'+blockNo;
+    var minCharacters = 4;
+    var delay = 200;
+
+    var postcodeProvider = '{/literal}{$civiPostCodeLookupProvider}{literal}';
+    if (postcodeProvider !== 'civipostcode') {
+      cj(postcodeElement).attr("placeholder", "Type full postcode to find addresses");
+      minCharacters = 5;
+    }
 
-  cj(function() {
-    var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/search', {"json": 1});
+    cj(function() {
+      var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/search', {"json": 1});
 
-    {/literal}{if $civiVersion < 4.5}{literal}
+      {/literal}{if $civiVersion < 4.5}{literal}
 
-    cj( postcodeElement ).autocomplete( sourceUrl, {
+      cj( postcodeElement ).autocomplete( sourceUrl, {
         width: 400,
         selectFirst: false,
         minChars: minCharacters,
@@ -80,18 +80,18 @@ cj(document).ready(function(){
             return cj( postcodeElement ).val();
           },
           number:function () {
-             return cj(houseElement).val();
+            return cj(houseElement).val();
           }
         }
-    }).result(function(event, data, formatted) {
-       findAddressValues(data[1], blockNo, blockPrefix = '');
-       cj(postcodeElement).val('');
-       return false;
-    });
+      }).result(function(event, data, formatted) {
+        findAddressValues(data[1], blockNo, blockPrefix = '');
+        cj(postcodeElement).val('');
+        return false;
+      });
 
-    // Postcode lookup in billing section
-    if (cj('#billing_street_address-5').length > 0 ) {
-      cj( billingPostcodeElement ).autocomplete( sourceUrl, {
+      // Postcode lookup in billing section
+      if (cj('#billing_street_address-5').length > 0 ) {
+        cj( billingPostcodeElement ).autocomplete( sourceUrl, {
           width: 400,
           selectFirst: false,
           minChars: minCharacters,
@@ -103,50 +103,22 @@ cj(document).ready(function(){
               return cj( billingPostcodeElement ).val();
             },
             number:function () {
-               return cj(houseElement).val();
+              return cj(houseElement).val();
             }
           }
-      }).result(function(event, data, formatted) {
-         findAddressValues(data[1], '5', blockPrefix = 'billing_');
-         cj(billingPostcodeElement).val('');
-         return false;
-      });
-    }
-
-    {/literal}{else}{literal}
-
-    cj(postcodeElement).autocomplete({
-      source: sourceUrl,
-      minLength: minCharacters,
-      data: {postcode: cj( postcodeElement ).val(), number: cj(houseElement).val(), mode: '0'},
-      search: function( event, ui ) {
-        cj('#loaderimage_'+blockNo).show();
-      },
-      response: function( event, ui ) {
-        cj('#loaderimage_'+blockNo).hide();
-      },
-      select: function(event, ui) {
-        if (ui.item.id != '') {
-          findAddressValues(ui.item.id, blockNo, blockPrefix = '');
-          cj('#loaderimage_'+blockNo).show();
-        }
-        return false;
-      },
-
-      html: true, // optional (jquery.ui.autocomplete.html.js required)
-
-      //optional (if other layers overlap autocomplete list)
-      open: function(event, ui) {
-        cj(".ui-autocomplete").css("z-index", 1000);
+        }).result(function(event, data, formatted) {
+          findAddressValues(data[1], '5', blockPrefix = 'billing_');
+          cj(billingPostcodeElement).val('');
+          return false;
+        });
       }
-    });
 
-    // Postcode lookup in billing section
-    if (cj('#billing_street_address-5').length > 0 ) {
-      cj(billingPostcodeElement).autocomplete({
+      {/literal}{else}{literal}
+
+      cj(postcodeElement).autocomplete({
         source: sourceUrl,
         minLength: minCharacters,
-        data: {postcode: cj( billingPostcodeElement ).val(), number: cj(houseElement).val(), mode: '0'},
+        data: {postcode: cj( postcodeElement ).val(), number: cj(houseElement).val(), mode: '0'},
         search: function( event, ui ) {
           cj('#loaderimage_'+blockNo).show();
         },
@@ -155,7 +127,7 @@ cj(document).ready(function(){
         },
         select: function(event, ui) {
           if (ui.item.id != '') {
-            findAddressValues(ui.item.id, '5', blockPrefix = 'billing_');
+            findAddressValues(ui.item.id, blockNo, blockPrefix = '');
             cj('#loaderimage_'+blockNo).show();
           }
           return false;
@@ -168,75 +140,103 @@ cj(document).ready(function(){
           cj(".ui-autocomplete").css("z-index", 1000);
         }
       });
-    }
 
-    {/literal}{/if}{literal}
+      // Postcode lookup in billing section
+      if (cj('#billing_street_address-5').length > 0 ) {
+        cj(billingPostcodeElement).autocomplete({
+          source: sourceUrl,
+          minLength: minCharacters,
+          data: {postcode: cj( billingPostcodeElement ).val(), number: cj(houseElement).val(), mode: '0'},
+          search: function( event, ui ) {
+            cj('#loaderimage_'+blockNo).show();
+          },
+          response: function( event, ui ) {
+            cj('#loaderimage_'+blockNo).hide();
+          },
+          select: function(event, ui) {
+            if (ui.item.id != '') {
+              findAddressValues(ui.item.id, '5', blockPrefix = 'billing_');
+              cj('#loaderimage_'+blockNo).show();
+            }
+            return false;
+          },
 
+          html: true, // optional (jquery.ui.autocomplete.html.js required)
+
+          //optional (if other layers overlap autocomplete list)
+          open: function(event, ui) {
+            cj(".ui-autocomplete").css("z-index", 1000);
+          }
+        });
+      }
+
+      {/literal}{/if}{literal}
+
+    });
   });
-});
-
-function findAddressValues(id , blockNo, blockPrefix) {
-  cj('#loaderimage_'+blockNo).show();
-  setAddressFields(false, blockNo, blockPrefix);
-  var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/get', {"json": 1});
-  cj.ajax({
-    dataType: 'json',
-    data: {id: id, mode: '0'},
-    url: sourceUrl,
-    success: function (data) {
-      setAddressFields(data.address, blockNo, blockPrefix);
-      setAddressFields(true, blockNo, blockPrefix);
-    },
-    complete: function (data) {
-      cj('#loaderimage_'+blockNo).hide();
-    }
-  });
-}
-
-function setAddressFields(address, blockNo, blockPrefix) {
-   var postcodeElement = '#' + blockPrefix + 'postal_code-'+ blockNo;
-   var streetAddressElement = '#' + blockPrefix + 'street_address-'+ blockNo;
-   var AddstreetAddressElement = '#' + blockPrefix + 'supplemental_address_1-'+ blockNo;
-   var AddstreetAddressElement1 = '#' + blockPrefix + 'supplemental_address_2-'+ blockNo;
-   var cityElement = '#' + blockPrefix + 'city-'+ blockNo;
-   var countyElement = '#address_'+ blockNo +'_state_province_id';
-
-   var allFields = {
-    postcode: postcodeElement,
-    line1: streetAddressElement,
-    line2: AddstreetAddressElement,
-    line3: AddstreetAddressElement1,
-    city: cityElement
-   };
-
-  if(address == true) {
-    for(var field in allFields) {
-      cj(allFields[field]).removeAttr('disabled');
-    }
+
+  function findAddressValues(id , blockNo, blockPrefix) {
+    cj('#loaderimage_'+blockNo).show();
+    setAddressFields(false, blockNo, blockPrefix);
+    var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/get', {"json": 1});
+    cj.ajax({
+      dataType: 'json',
+      data: {id: id, mode: '0'},
+      url: sourceUrl,
+      success: function (data) {
+        setAddressFields(data.address, blockNo, blockPrefix);
+        setAddressFields(true, blockNo, blockPrefix);
+      },
+      complete: function (data) {
+        cj('#loaderimage_'+blockNo).hide();
+      }
+    });
   }
-   else if(address == false) {
-    for(var field in allFields) {
-      cj(allFields[field]).attr('disabled', 'disabled');
+
+  function setAddressFields(address, blockNo, blockPrefix) {
+    var postcodeElement = '#' + blockPrefix + 'postal_code-'+ blockNo;
+    var streetAddressElement = '#' + blockPrefix + 'street_address-'+ blockNo;
+    var AddstreetAddressElement = '#' + blockPrefix + 'supplemental_address_1-'+ blockNo;
+    var AddstreetAddressElement1 = '#' + blockPrefix + 'supplemental_address_2-'+ blockNo;
+    var cityElement = '#' + blockPrefix + 'city-'+ blockNo;
+    var countyElement = '#address_'+ blockNo +'_state_province_id';
+
+    var allFields = {
+      postcode: postcodeElement,
+      line1: streetAddressElement,
+      line2: AddstreetAddressElement,
+      line3: AddstreetAddressElement1,
+      city: cityElement
+    };
+
+    if(address == true) {
+      for(var field in allFields) {
+        cj(allFields[field]).removeAttr('disabled');
+      }
     }
-  }
-  else {
-    cj(streetAddressElement).val('');
-    cj(AddstreetAddressElement).val('');
-    cj(AddstreetAddressElement1).val('');
-    cj(cityElement).val('');
-    cj(postcodeElement).val('');
-    cj(countyElement).val('');
-
-    cj(streetAddressElement).val(address.street_address);
-    cj(AddstreetAddressElement).val(address.supplemental_address_1);
-    cj(AddstreetAddressElement1).val(address.supplemental_address_2);
-    cj(cityElement).val(address.town);
-    cj(postcodeElement).val(address.postcode);
-    if(typeof(address.state_province_id) != "undefined" && address.state_province_id !== null) {
-       cj(countyElement).val(address.state_province_id);
+    else if(address == false) {
+      for(var field in allFields) {
+        cj(allFields[field]).attr('disabled', 'disabled');
+      }
+    }
+    else {
+      cj(streetAddressElement).val('');
+      cj(AddstreetAddressElement).val('');
+      cj(AddstreetAddressElement1).val('');
+      cj(cityElement).val('');
+      cj(postcodeElement).val('');
+      cj(countyElement).val('');
+
+      cj(streetAddressElement).val(address.street_address);
+      cj(AddstreetAddressElement).val(address.supplemental_address_1);
+      cj(AddstreetAddressElement1).val(address.supplemental_address_2);
+      cj(cityElement).val(address.town);
+      cj(postcodeElement).val(address.postcode);
+      if(typeof(address.state_province_id) != "undefined" && address.state_province_id !== null) {
+        cj(countyElement).val(address.state_province_id);
+      }
+      cj(countyElement).trigger("change");
     }
-    cj(countyElement).trigger("change");
   }
-}
 </script>
 {/literal}
diff --git a/templates/CRM/Civicrmpostcodelookup/Form/Setting.tpl b/templates/CRM/Civicrmpostcodelookup/Form/Setting.tpl
index 7f80fa9..10932fa 100755
--- a/templates/CRM/Civicrmpostcodelookup/Form/Setting.tpl
+++ b/templates/CRM/Civicrmpostcodelookup/Form/Setting.tpl
@@ -6,86 +6,86 @@
 
 <div class="crm-block crm-form-block crm-export-form-block">
 
-{* FIELD EXAMPLE: OPTION 1 (AUTOMATIC LAYOUT) *}
-
-{foreach from=$elementNames item=elementName}
-  <div class="crm-section">
-    <div class="label">{$form.$elementName.label}</div>
-    <div class="content">{$form.$elementName.html}</div>
-    <div class="clear"></div>
+  {* FIELD EXAMPLE: OPTION 1 (AUTOMATIC LAYOUT) *}
+
+  {foreach from=$elementNames item=elementName}
+    <div class="crm-section">
+      <div class="label">{$form.$elementName.label}</div>
+      <div class="content">{$form.$elementName.html}</div>
+      <div class="clear"></div>
+    </div>
+  {/foreach}
+
+  {* FIELD EXAMPLE: OPTION 2 (MANUAL LAYOUT)
+
+    <!-- <div>
+      <span>{$form.favorite_color.label}</span>
+      <span>{$form.favorite_color.html}</span>
+    </div> -->
+
+  {* FOOTER *}
+  <div class="crm-submit-buttons">
+    {include file="CRM/common/formButtons.tpl" location="bottom"}
   </div>
-{/foreach}
-
-{* FIELD EXAMPLE: OPTION 2 (MANUAL LAYOUT)
-
-  <!-- <div>
-    <span>{$form.favorite_color.label}</span>
-    <span>{$form.favorite_color.html}</span>
-  </div> -->
-
-{* FOOTER *}
-<div class="crm-submit-buttons">
-{include file="CRM/common/formButtons.tpl" location="bottom"}
-</div>
 
 </div>
 
 {literal}
-<script>
-cj( document ).ready(function() {
-  cj('#server').parent().append('<br />Without trailing slash. Example: http://pce.afd.co.uk , http://civipostcode.com');
-  hideAllFields();
-  showFields();
-  cj('#provider').change(function() {
-    hideAllFields();
-    showFields();
-  });
-});
-
-function hideAllFields() {
-  cj('#server').parent().parent().hide();
-  cj('#api_key').parent().parent().hide();
-  cj('#serial_number').parent().parent().hide();
-  cj('#username').parent().parent().hide();
-  cj('#password').parent().parent().hide();
-}
-
-function showFields() {
-
-  var providerVal = cj("#provider").val();
-
-  if (providerVal == 'experian') {
-    cj('#username').parent().parent().show();
-    cj('#password').parent().parent().show();
-  }
-
-  if (providerVal == 'afd') {
-    cj('#server').parent().parent().show();
-    cj('#serial_number').parent().parent().show();
-    cj('#password').parent().parent().show();
-    cj('#server').val('http://pce.afd.co.uk');
-  }
-
-  if (providerVal == 'civipostcode') {
-    cj('#server').parent().parent().show();
-    cj('#api_key').parent().parent().show();
-    cj('#server').val('http://civipostcode.com');
-  }
-
-  if (providerVal == 'postcodeanywhere') {
-    cj('#server').parent().parent().show();
-    cj('#api_key').parent().parent().show();
-    cj('#username').parent().parent().show();
-    cj('#server').val('http://services.postcodeanywhere.co.uk');
-  }
-
-  if (providerVal == 'getaddressio') {
-    cj('#server').parent().parent().show();
-    cj('#api_key').parent().parent().show();
-    cj('#server').val('https://api.getAddress.io');
-  }
-}
-</script>
+  <script>
+    cj( document ).ready(function() {
+      cj('#server').parent().append('<br />Without trailing slash. Example: http://pce.afd.co.uk , http://civipostcode.com');
+      hideAllFields();
+      showFields();
+      cj('#provider').change(function() {
+        hideAllFields();
+        showFields();
+      });
+    });
+
+    function hideAllFields() {
+      cj('#server').parent().parent().hide();
+      cj('#api_key').parent().parent().hide();
+      cj('#serial_number').parent().parent().hide();
+      cj('#username').parent().parent().hide();
+      cj('#password').parent().parent().hide();
+    }
+
+    function showFields() {
+
+      var providerVal = cj("#provider").val();
+
+      if (providerVal == 'experian') {
+        cj('#username').parent().parent().show();
+        cj('#password').parent().parent().show();
+      }
+
+      if (providerVal == 'afd') {
+        cj('#server').parent().parent().show();
+        cj('#serial_number').parent().parent().show();
+        cj('#password').parent().parent().show();
+        cj('#server').val('http://pce.afd.co.uk');
+      }
+
+      if (providerVal == 'civipostcode') {
+        cj('#server').parent().parent().show();
+        cj('#api_key').parent().parent().show();
+        cj('#server').val('http://civipostcode.com');
+      }
+
+      if (providerVal == 'postcodeanywhere') {
+        cj('#server').parent().parent().show();
+        cj('#api_key').parent().parent().show();
+        cj('#username').parent().parent().show();
+        cj('#server').val('http://services.postcodeanywhere.co.uk');
+      }
+
+      if (providerVal == 'getaddressio') {
+        cj('#server').parent().parent().show();
+        cj('#api_key').parent().parent().show();
+        cj('#server').val('https://api.getAddress.io');
+      }
+    }
+  </script>
 {/literal}
 
 
diff --git a/templates/CRM/Contact/Form/Edit/Address/street_address.tpl b/templates/CRM/Contact/Form/Edit/Address/street_address.tpl
index 4aa0d3f..152a3e1 100755
--- a/templates/CRM/Contact/Form/Edit/Address/street_address.tpl
+++ b/templates/CRM/Contact/Form/Edit/Address/street_address.tpl
@@ -33,33 +33,33 @@
 </tr>
 
 {literal}
-<style type="text/css">
- .ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
-</style>
+  <style type="text/css">
+    .ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
+  </style>
 <script type="text/javascript">
-var info = []; //Needed to access data from outside the JSON processing function
-cj(document).ready(function() {
-  var blockNo = {/literal}{$blockId}{literal};
-  var buttonElement = '#postcodeLookupButton_'+blockNo;
-  var houseElement = '#inputNumber_'+blockNo;
-  var postcodeElement = '#inputPostCode_'+blockNo;
-  var addressResultElement = '#addressResult_'+blockNo;
-  var addressResultsElement = '#addressResults_'+blockNo;
-  var minCharacters = 4;
-  var delay = 200;
-
-  var postcodeProvider = '{/literal}{$civiPostCodeLookupProvider}{literal}';
-  if (postcodeProvider !== 'civipostcode') {
-    cj(postcodeElement).attr("placeholder", "Type full postcode to find addresses");
-    minCharacters = 5;
-  }
+  var info = []; //Needed to access data from outside the JSON processing function
+  cj(document).ready(function() {
+    var blockNo = {/literal}{$blockId}{literal};
+    var buttonElement = '#postcodeLookupButton_'+blockNo;
+    var houseElement = '#inputNumber_'+blockNo;
+    var postcodeElement = '#inputPostCode_'+blockNo;
+    var addressResultElement = '#addressResult_'+blockNo;
+    var addressResultsElement = '#addressResults_'+blockNo;
+    var minCharacters = 4;
+    var delay = 200;
+
+    var postcodeProvider = '{/literal}{$civiPostCodeLookupProvider}{literal}';
+    if (postcodeProvider !== 'civipostcode') {
+      cj(postcodeElement).attr("placeholder", "Type full postcode to find addresses");
+      minCharacters = 5;
+    }
 
-  cj(function() {
-    var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/search', {"json": 1});
+    cj(function() {
+      var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/search', {"json": 1});
 
-    {/literal}{if $civiVersion < 4.5}{literal}
+      {/literal}{if $civiVersion < 4.5}{literal}
 
-    cj( postcodeElement ).autocomplete( sourceUrl, {
+      cj( postcodeElement ).autocomplete( sourceUrl, {
         width: 400,
         selectFirst: false,
         minChars: minCharacters,
@@ -71,18 +71,18 @@ cj(document).ready(function() {
             return  cj( postcodeElement ).val();
           },
           number:function () {
-             return cj(houseElement).val();
+            return cj(houseElement).val();
           }
         }
-    }).result(function(event, data, formatted) {
-       findAddressValues(data[1], blockNo);
-       cj(postcodeElement).val('');
-       return false;
-    });
+      }).result(function(event, data, formatted) {
+        findAddressValues(data[1], blockNo);
+        cj(postcodeElement).val('');
+        return false;
+      });
 
-    {/literal}{else}{literal}
+      {/literal}{else}{literal}
 
-    cj(postcodeElement).autocomplete({
+      cj(postcodeElement).autocomplete({
         source: sourceUrl,
         minLength: minCharacters,
         delay: delay,
@@ -106,94 +106,94 @@ cj(document).ready(function() {
 
         //optional (if other layers overlap autocomplete list)
         open: function(event, ui) {
-            cj(".ui-autocomplete").css("z-index", 1000);
+          cj(".ui-autocomplete").css("z-index", 1000);
         }
-    });
+      });
 
-    {/literal}{/if}{literal}
+      {/literal}{/if}{literal}
 
+    });
   });
-});
 
-function addslashes (str) {
+  function addslashes (str) {
     return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
-}
-
-function findAddressValues(id , blockNo) {
-  cj('#loaderimage_'+blockNo).show();
-  setAddressFields(false, blockNo);
-  var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/get', {"json": 1});
-  cj.ajax({
-    dataType: 'json',
-    data: {id: id},
-    url: sourceUrl,
-    success: function (data) {
-      setAddressFields(data.address, blockNo);
-      setAddressFields(true, blockNo);
-    },
-    complete: function (data) {
-      cj('#loaderimage_'+blockNo).hide();
+  }
+
+  function findAddressValues(id , blockNo) {
+    cj('#loaderimage_'+blockNo).show();
+    setAddressFields(false, blockNo);
+    var sourceUrl = CRM.url('civicrm/{/literal}{$civiPostCodeLookupProvider}{literal}/ajax/get', {"json": 1});
+    cj.ajax({
+      dataType: 'json',
+      data: {id: id},
+      url: sourceUrl,
+      success: function (data) {
+        setAddressFields(data.address, blockNo);
+        setAddressFields(true, blockNo);
+      },
+      complete: function (data) {
+        cj('#loaderimage_'+blockNo).hide();
+      }
+    });
+  }
+
+  function setAddressFields(address, blockNo) {
+    var postcodeElement = '#address_'+ blockNo +'_postal_code';
+    var streetAddressElement = '#address_'+ blockNo +'_street_address';
+    var AddstreetAddressElement = '#address_'+ blockNo +'_supplemental_address_1';
+    var AddstreetAddressElement1 = '#address_'+ blockNo +'_supplemental_address_2';
+    var cityElement = '#address_'+ blockNo +'_city';
+    var countyElement = '#address_'+ blockNo +'_state_province_id';
+
+    var allFields = {
+      postcode: postcodeElement,
+      line1: streetAddressElement,
+      line2: AddstreetAddressElement,
+      line3: AddstreetAddressElement1,
+      city: cityElement
+    };
+
+    if(address == true) {
+      for(var field in allFields) {
+        cj(allFields[field]).removeAttr('disabled');
+      }
     }
-  });
-}
-
-function setAddressFields(address, blockNo) {
-   var postcodeElement = '#address_'+ blockNo +'_postal_code';
-   var streetAddressElement = '#address_'+ blockNo +'_street_address';
-   var AddstreetAddressElement = '#address_'+ blockNo +'_supplemental_address_1';
-   var AddstreetAddressElement1 = '#address_'+ blockNo +'_supplemental_address_2';
-   var cityElement = '#address_'+ blockNo +'_city';
-   var countyElement = '#address_'+ blockNo +'_state_province_id';
-
-     var allFields = {
-        postcode: postcodeElement,
-        line1: streetAddressElement,
-        line2: AddstreetAddressElement,
-        line3: AddstreetAddressElement1,
-        city: cityElement
-     };
-
-   if(address == true) {
-         for(var field in allFields) {
-             cj(allFields[field]).removeAttr('disabled');
-         }
-     }
-     else if(address == false) {
-         for(var field in allFields) {
-             cj(allFields[field]).attr('disabled', 'disabled');
-         }
-     }
-     else {
-         cj(streetAddressElement).val('');
-         cj(AddstreetAddressElement).val('');
-         cj(AddstreetAddressElement1).val('');
-         cj(cityElement).val('');
-         cj(postcodeElement).val('');
-         cj(countyElement).val('');
-
-         cj(streetAddressElement).val(address.street_address);
-         cj(AddstreetAddressElement).val(address.supplemental_address_1);
-         cj(AddstreetAddressElement1).val(address.supplemental_address_2);
-         cj(cityElement).val(address.town);
-         cj(postcodeElement).val(address.postcode);
-         if(typeof(address.state_province_id) != "undefined" && address.state_province_id !== null) {
-           cj(countyElement).val(address.state_province_id);
-         }
-         cj(countyElement).trigger("change");
-     }
-}
+    else if(address == false) {
+      for(var field in allFields) {
+        cj(allFields[field]).attr('disabled', 'disabled');
+      }
+    }
+    else {
+      cj(streetAddressElement).val('');
+      cj(AddstreetAddressElement).val('');
+      cj(AddstreetAddressElement1).val('');
+      cj(cityElement).val('');
+      cj(postcodeElement).val('');
+      cj(countyElement).val('');
+
+      cj(streetAddressElement).val(address.street_address);
+      cj(AddstreetAddressElement).val(address.supplemental_address_1);
+      cj(AddstreetAddressElement1).val(address.supplemental_address_2);
+      cj(cityElement).val(address.town);
+      cj(postcodeElement).val(address.postcode);
+      if(typeof(address.state_province_id) != "undefined" && address.state_province_id !== null) {
+        cj(countyElement).val(address.state_province_id);
+      }
+      cj(countyElement).trigger("change");
+    }
+  }
 
 </script>
 {/literal}
 
 {if !empty($form.address.$blockId.street_address)}
-   <tr id="streetAddress_{$blockId}">
+  <tr id="streetAddress_{$blockId}">
     <td colspan="2">
       {$form.address.$blockId.street_address.label} {help id="id-street-address" file="CRM/Contact/Form/Contact.hlp"}<br />
       {$form.address.$blockId.street_address.html}
       {if $parseStreetAddress eq 1 && ($action eq 1 || $action eq 2)}
-          &nbsp;&nbsp;<a href="#" title="{ts}Edit Address Elements{/ts}" onClick="processAddressFields( 'addressElements' , '{$blockId}', 1 );return false;">{ts}Edit Address Elements{/ts}</a>
-          {help id="id-edit-street-elements" file="CRM/Contact/Form/Contact.hlp"}
+        &nbsp;&nbsp;<a href="#" title="{ts}Edit Address Elements{/ts}" onClick="processAddressFields( 'addressElements' , '{$blockId}', 1 );return false;">{ts}Edit Address Elements{/ts}</a>
+        {help id="id-edit-street-elements" file="CRM/Contact/Form/Contact.hlp"}
       {/if}
     </td>
   </tr>
@@ -201,13 +201,13 @@ function setAddressFields(address, blockNo) {
   {if $parseStreetAddress eq 1 && ($action eq 1 || $action eq 2)}
     <tr id="addressElements_{$blockId}" class=hiddenElement>
       <td>
-         {$form.address.$blockId.street_number.label}<br />
-         {$form.address.$blockId.street_number.html}
-       </td>
+        {$form.address.$blockId.street_number.label}<br />
+        {$form.address.$blockId.street_number.html}
+      </td>
 
       <td>
-         {$form.address.$blockId.street_name.label}<br />
-         {$form.address.$blockId.street_name.html}<br />
+        {$form.address.$blockId.street_name.label}<br />
+        {$form.address.$blockId.street_name.html}<br />
       </td>
 
       <td colspan="2">
@@ -219,51 +219,51 @@ function setAddressFields(address, blockNo) {
     </tr>
   {/if}
 
-{if $parseStreetAddress eq 1}
-{literal}
-<script type="text/javascript">
-function processAddressFields( name, blockId, loadData ) {
-
-  if ( loadData ) {
-            var allAddressValues = {/literal}{if $allAddressFieldValues}{$allAddressFieldValues}{else}''{/if}{literal};
-
-      var streetName    = eval( "allAddressValues.street_name_"    + blockId );
-      if (streetName === null) streetName = '';
-      var streetUnit    = eval( "allAddressValues.street_unit_"    + blockId );
-      if (streetUnit === null) streetUnit = '';
-      var streetNumber  = eval( "allAddressValues.street_number_"  + blockId );
-      if (streetNumber === null) streetNumber = '';
-      var streetAddress = eval( "allAddressValues.street_address_" + blockId );
-      if (streetAddress === null) streetAddress = '';
-  }
+  {if $parseStreetAddress eq 1}
+  {literal}
+    <script type="text/javascript">
+      function processAddressFields( name, blockId, loadData ) {
+
+        if ( loadData ) {
+          var allAddressValues = {/literal}{if $allAddressFieldValues}{$allAddressFieldValues}{else}''{/if}{literal};
+
+          var streetName    = eval( "allAddressValues.street_name_"    + blockId );
+          if (streetName === null) streetName = '';
+          var streetUnit    = eval( "allAddressValues.street_unit_"    + blockId );
+          if (streetUnit === null) streetUnit = '';
+          var streetNumber  = eval( "allAddressValues.street_number_"  + blockId );
+          if (streetNumber === null) streetNumber = '';
+          var streetAddress = eval( "allAddressValues.street_address_" + blockId );
+          if (streetAddress === null) streetAddress = '';
+        }
 
         if ( name == 'addressElements' ) {
-             if ( loadData ) {
+          if ( loadData ) {
             streetAddress = '';
-       }
+          }
 
-       cj('#addressElements_' + blockId).show();
-       cj('#streetAddress_' + blockId).hide();
-  } else {
-             if ( loadData ) {
-                  streetNumber = streetName = streetUnit = '';
-             }
+          cj('#addressElements_' + blockId).show();
+          cj('#streetAddress_' + blockId).hide();
+        } else {
+          if ( loadData ) {
+            streetNumber = streetName = streetUnit = '';
+          }
 
-             cj('#streetAddress_' +  blockId).show();
-             cj('#addressElements_'+ blockId).hide();
-       }
+          cj('#streetAddress_' +  blockId).show();
+          cj('#addressElements_'+ blockId).hide();
+        }
 
-       // set the values.
-       if ( loadData ) {
+        // set the values.
+        if ( loadData ) {
           cj( '#address_' + blockId +'_street_name'    ).val( streetName    );
           cj( '#address_' + blockId +'_street_unit'    ).val( streetUnit    );
           cj( '#address_' + blockId +'_street_number'  ).val( streetNumber  );
           cj( '#address_' + blockId +'_street_address' ).val( streetAddress );
-       }
-}
+        }
+      }
 
-</script>
-{/literal}
-{/if}
+    </script>
+  {/literal}
+  {/if}
 {/if}
 
-- 
GitLab