$secondaryAddressableObjectName $primaryAddressableObjectName $street, $locality
£$soldPrice $propertyTypePrintable, $tenurePrintable $soldDate
*/ #$time = -microtime(true); //============================================================================================================================================= function returnPriceRangeUpperLimitFromPrice($price) { // Just like returnPriceRangeFromPrice below but only returns the upper limit. And returns it as a proper number for calculations // i.e. no added commas or � sign for display // E.g. pass it 326,000 and it will return 350,000 // Pass it 3,260,000 and it will return 3,500,000 # print"
returnPriceRangeUpperLimitFromPrice($price)"; if($price < 100000) { $priceRangeUpperLimit = 100000; return($priceRangeUpperLimit); } $priceRounded = round($price, -3); $priceRoundedHigh = round($price, -5, PHP_ROUND_HALF_UP); $priceRoundedLow = round($price, -5, PHP_ROUND_HALF_DOWN); $price10PcMore = $price *1.15; $price10PcMoreRounded = round($price10PcMore*2, -5)/2; return("$price10PcMoreRounded"); } function returnPriceRangeFromPrice($price) { // E.g. pass it 326,000 and it will return 300,000 - 350,000 // Pass it 3,260,000 and it will return 3,000,000 - 3,500,000 # print"
returnPriceRangeFromPrice($price)"; if($price < 100000) { $priceRange = "under £100,000"; return($priceRange); } $priceRounded = round($price, -3); $priceRoundedHigh = round($price, -5, PHP_ROUND_HALF_UP); $priceRoundedLow = round($price, -5, PHP_ROUND_HALF_DOWN); $price10PcMore = $price *1.15; $price10PcLess = $price *0.85; $price10PcLessRounded = round($price10PcLess*2, -5)/2; $price10PcMoreRounded = round($price10PcMore*2, -5)/2; $price10PcLessRounded = number_format($price10PcLessRounded); $price10PcMoreRounded = number_format($price10PcMoreRounded); return("£$price10PcLessRounded - £$price10PcMoreRounded"); /* $numberOfDigitsInPrice = strlen($price); $numberOfDigitsInPriceMinus1 = $numberOfDigitsInPrice-1; $numberOfDigitsInPriceMinus2 = $numberOfDigitsInPrice-2; $priceWithoutFirstDigit = substr($price, 1, $numberOfDigitsInPriceMinus1); $firstDigit = substr($price, 0, 1); $secondDigitHalfWay = 5* pow(10,$numberOfDigitsInPriceMinus2); # print"
price=$price price10PcMore=$price10PcMore price10PcLess=$price10PcLess price10PcMoreRounded=$price10PcMoreRounded price10PcLessRounded =$price10PcLessRounded "; $cak="numberOfDigitsInPriceMinus1=$numberOfDigitsInPriceMinus1 priceWithoutFirstDigit=$priceWithoutFirstDigit halfWayNumber=$halfWayNumber price=$price priceRounded=$priceRounded priceRoundedHigh=$priceRoundedHigh priceRoundedLow=$priceRoundedLow"; */ } function emailJason($message) { global $urlToThisPage; global $SITE_TITLE; $to = "jason@camcity.co.uk"; $from = "From: \"jason\" "; $subject="$SITE_TITLE debug email"; date_default_timezone_set("Europe/London"); $message="\n\nDebug - Sent at ".date("H:i:s d/m/Y")." $message "; # mail($to, $subject, $message, $from); } function returnCommentOnProportionOfPropertyTypesOnStreet($nameOfRoad, $area, $numberOfDetached, $numberOfSemi, $numberOfTerraced, $numberOfFlats) { global $CITY; // NB area could be $postalArea or $locality # print"
$nameOfRoad, $numberOfDetached, $numberOfSemi, $numberOfTerraced, $numberOfFlats"; $totalNumberOfProperties = $numberOfDetached + $numberOfSemi + $numberOfTerraced + $numberOfFlats; # print""; $assocArrayMappingPropertyTypesToNumberOfProperties = array( "detached house" => $numberOfDetached, "semi-detached house" => $numberOfSemi, "terraced house" => $numberOfTerraced, "flat" => $numberOfFlats); $assocArrayMappingPropertyTypesToPercentageOfProperties = array( "detached house" => (int)$numberOfDetached/$totalNumberOfProperties, "semi-detached house" => (int)$numberOfSemi/$totalNumberOfProperties, "terraced house" => (int)$numberOfTerraced/$totalNumberOfProperties, "flat" => (int)$numberOfFlats/$totalNumberOfProperties); //--------------------------------- // JPH global $urlToThisPage; $message=" urlToThisPage=$urlToThisPage numberOfDetached + numberOfSemi + numberOfTerraced + numberOfFlats = $numberOfDetached + $numberOfSemi + $numberOfTerraced + $numberOfFlats detached house (int)$numberOfDetached / $totalNumberOfProperties, semi-detached house (int)$numberOfSemi / $totalNumberOfProperties, terraced house (int)$numberOfTerraced / $totalNumberOfProperties, flat (int)$numberOfFlats / $totalNumberOfProperties \n\n--"; if(!$totalNumberOfProperties) { emailJason($message); } //--------------------------------- arsort($assocArrayMappingPropertyTypesToPercentageOfProperties ); # print_r($assocArrayMappingPropertyTypesToPercentageOfProperties ); // is comprised $firstKey = array_keys($assocArrayMappingPropertyTypesToPercentageOfProperties )[0]; $secondKey = array_keys($assocArrayMappingPropertyTypesToPercentageOfProperties )[1]; $thirdKey = array_keys($assocArrayMappingPropertyTypesToPercentageOfProperties )[2]; $fourthKey = array_keys($assocArrayMappingPropertyTypesToPercentageOfProperties )[3]; $firstValue = array_values($assocArrayMappingPropertyTypesToPercentageOfProperties )[0]; $secondValue = array_values($assocArrayMappingPropertyTypesToPercentageOfProperties )[1]; $thirdValue = array_values($assocArrayMappingPropertyTypesToPercentageOfProperties )[2]; $fourthValue = array_values($assocArrayMappingPropertyTypesToPercentageOfProperties )[3]; # print"first=$firstValue second =$secondValue third =$thirdValue fourth =$fourthValue "; // Most (over half) are firstValue if($firstValue > 0.5) { $text .= "consists predominantly of $firstKey"."s"; } // All are in roughly equal measure elseif($firstValue > 0.20 && $secondValue > 0.20 && $thirdValue > 0.20 && $fourthKey > 0.20 ) { $text .= "has a variety of $firstKey"."s, $secondKey"."s, $thirdKey"."s and $fourthKey"."s"; } // The top 3 are in equal measure elseif($firstValue > 0.25 && $secondValue > 0.25 && $thirdValue > 0.25) { $text .= "has of a mix of $firstKey"."s, $secondKey"."s and $thirdKey"."s"; } elseif($firstValue < 0.5 && ($firstValue + $secondValue > 0.6)) { $text .= "consists mainly of $firstKey"."s and $secondKey"."s"; } $lastCharacterOfArea = substr($area, -1,1); if(is_numeric($lastCharacterOfArea)) { // We have a postcode: Cambridge CB1 $cityArea = "$CITY $area"; } else { // We have a locality: Histon, Cambridge $cityArea = "$area, $CITY"; } $text = "$nameOfRoad in $cityArea $text"; # print"
text=$text"; return($text); } function returnExampleOfMostExpensiveSale($arrayMappingPropertySoldPriceToPropertyType, $currentMarketValueRangeUpperLimit=false) { // JPH global $urlToThisPage; if(!is_array($arrayMappingPropertySoldPriceToPropertyType) || !$arrayMappingPropertySoldPriceToPropertyType) { $message = "\n\narrayMappingPropertySoldPriceToPropertyType=".var_export($arrayMappingPropertySoldPriceToPropertyType, true); emailJason($message); } krsort($arrayMappingPropertySoldPriceToPropertyType); $soldPrice = $firstKey = array_keys($arrayMappingPropertySoldPriceToPropertyType)[0]; $propertyType = $firstValue = array_values($arrayMappingPropertySoldPriceToPropertyType)[0]; # print"
HighestSoldPrice = $soldPrice propertyType=$propertyType "; $soldPriceRoundedHigh = round($soldPrice, -5, PHP_ROUND_HALF_UP); if($currentMarketValueRangeUpperLimit) { if($soldPriceRoundedHigh < $currentMarketValueRangeUpperLimit) { $soldPriceRoundedHigh = $currentMarketValueRangeUpperLimit; } } $soldPriceRoundedHighFormatted = number_format($soldPriceRoundedHigh); if($propertyType == "flat") { $text = "ranging up to around £$soldPriceRoundedHighFormatted for top end flats"; } elseif($propertyType == "semi-detached house") { $text = "ranging upwards of £$soldPriceRoundedHighFormatted for larger semi-detached houses"; } elseif($propertyType == "terraced house") { $text = "with larger terraced houses and townhouses valued at around £$soldPriceRoundedHighFormatted"; } elseif($propertyType == "detached house") { $text = "but larger detached houses can command upwards of £$soldPriceRoundedHighFormatted"; } else // including 'Other' { $text = "with exceptional properties valued upwards of £$soldPriceRoundedHighFormatted"; } return($text); } function average($arr) { if (!count($arr)) return 0; $sum = 0; for ($i = 0; $i < count($arr); $i++) { $sum += $arr[$i]; } return $sum / count($arr); } function variance($arr) { if (!count($arr)) return 0; $mean = average($arr); $sos = 0; // Sum of squares for ($i = 0; $i < count($arr); $i++) { $sos += ($arr[$i] - $mean) * ($arr[$i] - $mean); } return $sos / (count($arr)-1); // denominator = n-1; i.e. estimating based on sample // n-1 is also what MS Excel takes by default in the // VAR function } function stddev($array){ //Don Knuth is the $deity of algorithms //http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#III._On-line_algorithm $n = 0; $mean = 0; $M2 = 0; foreach($array as $x){ $n++; $delta = $x - $mean; $mean = $mean + $delta/$n; $M2 = $M2 + $delta*($x - $mean); } $variance = $M2/($n - 1); return sqrt($variance); } //============================================================================================================================================= include("SITE/router.class.php"); $router = new Router(); $command = $router->getCommand(); #print_r ($router->getParametersAsString()); $router->getParametersAsString(); $numberOfParameters = $router->getNumberOfParameters(); $arrayOfParameters = $router->getArrayOfParameters(); $parameter1 = $router->getParameter1(); $parameter2 = $router->getParameter2(); $streetDashDashLocality = $parameter1; $streetDashDashLocality = str_replace("_", " ", $streetDashDashLocality); if(!$streetDashDashLocality) { # print"index"; include("SITE/housePricesIndex.php"); exit; } if(preg_match("/--/", $streetDashDashLocality)) { $streetDashDashLocalityComponents = explode("--", $streetDashDashLocality); $street = $streetDashDashLocalityComponents[0]; $locality = $streetDashDashLocalityComponents[1]; $localityCommaSpace = "$locality, "; } else { $street = $streetDashDashLocality; $locality = ""; $localityCommaSpace = ""; } $streetPipeLocalityPair = "$street|$locality"; //============================================================================================================================================= $titleTag="$street, $localityCommaSpace$CITY House Prices"; $metaDescriptionTag="House prices and property values for $street in $CITY."; #print"street=$street locality=$locality"; $cityLowercase = strtolower($CITY); if($SITE_TITLE=="Merseyside.com") { $cityLowercase = "liverpool"; } if($SITE_TITLE=="Tyneside.com") { $cityLowercase = "newcastle"; } $pathToArraysDirectory = "SITE"; $pathToLRArraysFile = $pathToArraysDirectory."/"."$cityLowercase.lr.inc.php"; $pathToLRAnalysisFile = $pathToArraysDirectory."/"."$cityLowercase.an.inc.php"; $LR_letter = strtolower(substr($street, 0, 1)); #include("../../SITE/LandRegWeb.class.php"); include("SITE/LandRegWeb.class.php"); include("$pathToLRAnalysisFile"); //------------- // Default $navLinkToStreetPageInStreetIndex=''; if(!$locality) { include($PATH_TO_INCLUDES_FOLDER."/".$ARRAY_OF_CITY_STREETS_INCLUDE_FILE); $arrayOfStreetsWithShops = $arrayOfUniqueStreets["$CITY"]; if(in_array($street, $arrayOfStreetsWithShops)) { $streetUnderscored = str_replace(" ", "_", $street); $navLinkToStreetPageInStreetIndex='
'; } } //------------- #exit; $landRegWeb = new LandRegWeb; $earliestSoldDate = $landRegWeb->determineEarliestSoldDateFromTodaysDate(); #$landRegWeb->determineEarliestSoldDateFromTodaysDate("2015-11-16"); #$landRegWeb->determineEarliestSoldDateFromTodaysDate("2016-11-16"); #$landRegWeb->determineEarliestSoldDateFromTodaysDate("2017-11-16"); #$landRegWeb->determineEarliestSoldDateFromTodaysDate("2018-11-16"); $landRegWeb->setPathToLRArraysFile($pathToLRArraysFile); $landRegWeb->setLR_all(1); $landRegWeb->setStreet($street); $landRegWeb->setLocality($locality); $landRegWeb->setLR_letter($LR_letter); #print"LR_letter=$LR_letter"; $landRegWeb->loadLRArraysFileForLetter($LR_letter); #$doStreetAndLocalityExist = $landRegWeb->doStreetAndLocalityExistInLRArraysFile(); $arrayOfTransactions = $landRegWeb->getArrayOfTransactions(); #if(!$doStreetAndLocalityExist) if(!is_array($arrayOfTransactions)) { // Throw a 404 header("HTTP/1.0 404 Not Found"); exit; } #$landRegWeb->printVars(); #$arrayOfTransactions = $landRegWeb->getArrayOfTransactions(); #$landRegWeb->buildArrayOfListingsAsAssocArraysFromArrayOfTransactions(); #$earliestSoldDate="2007-01-01"; $landRegWeb->buildArrayOfListingsAsAssocArraysFromArrayOfTransactionsEarliestSoldDate($earliestSoldDate); // Now listings are stored in $landRegWeb->arrayOfListingsAsAssocArrays //--------------------------- // Sorting functionality // Let's sort the array. Can sort by these values: paon, date, soldPriceAsc, soldPriceDesc // But the sort var passed in URL has differnt values if($sort=="address") { $landRegWeb->sortArrayOfListingsAsAssocArrays("paon"); } elseif($sort=="date") { $landRegWeb->sortArrayOfListingsAsAssocArrays("date"); } elseif($sort=="price-asc") { $landRegWeb->sortArrayOfListingsAsAssocArrays("soldPriceAsc"); } elseif($sort=="price-desc") { $landRegWeb->sortArrayOfListingsAsAssocArrays("soldPriceDesc"); } else { // Default is address $landRegWeb->sortArrayOfListingsAsAssocArrays("paon"); } // Now retrieve the sorted listings in an array $arrayOfListingsAsAssocArrays = $landRegWeb->arrayOfListingsAsAssocArrays; $arrayOfPropertyTypeCodes = array(); $arrayOfPropertySoldPrices = array(); foreach($arrayOfListingsAsAssocArrays as $listingAsAssocArray) { $soldPrice = $listingAsAssocArray["soldPrice"]; $soldDate = $listingAsAssocArray["soldDate"]; $postcode = $listingAsAssocArray["postcode"]; $propertyTypeCode = $listingAsAssocArray["propertyTypeCode"]; $isNewBuildCode = $listingAsAssocArray["isNewBuild"]; $tenureCode = $listingAsAssocArray["tenureCode"]; $primaryAddressableObjectName = $listingAsAssocArray["primaryAddressableObjectName"]; $secondaryAddressableObjectName = $listingAsAssocArray["secondaryAddressableObjectName"]; $arrayOfPropertyTypeCodes[] = $propertyTypeCode; $arrayOfPropertySoldPrices[] = $soldPrice; //Derivatives $soldDate = $landRegWeb->dateToEnglish ($soldDate); $postcodeComponents = explode(" ", $postcode); if($postcodeComponents[0]) { $postcodeArea = $postcodeComponents[0]; } $tenurePrintable=$landRegWeb->returnTenurePrintableFromTenureCode($tenureCode); $propertyType=$landRegWeb->returnPropertyTypeFromPropertyTypeCode($propertyTypeCode); $propertyTypeUcFirst = ucfirst($propertyType); $arrayMappingPropertySoldPriceToPropertyType["$soldPrice"] = $propertyType; $soldPricePrintable = number_format($soldPrice); # $soldPriceRange = returnPriceRangeFromPrice($soldPrice); if(!$locality) { $locality=$CITY; } if($postcode && !$firstPostcode) { $firstPostcode = $postcode; } if($primaryAddressableObjectName && strlen($secondaryAddressableObjectName) > 3) { $secondaryAddressableObjectName = "$secondaryAddressableObjectName,"; } if($isNewBuildCode=="Y") { $isNewBuildPrintable="new build"; } else { $isNewBuildPrintable=""; } # print"

$isNewBuildCode

"; // $secondaryAddressableObjectName is usually empty but when used is like Flat 23. If it's a number, the primaryAd... is probably a big block // eg petersfield mansions, hence that is the primaryAd... $housePriceListing="
  • $secondaryAddressableObjectName $primaryAddressableObjectName $street, $locality $postcode
    £$soldPricePrintable $propertyTypeUcFirst, $tenurePrintable $isNewBuildPrintable $soldDate
  • "; # print"$listing"; $housePriceListings .= $housePriceListing; } $time += microtime(true); #echo "
    Script exec time: ",sprintf('%f', $time),PHP_EOL; #$arrayMappingPropertySoldPriceToPropertyTypeCode["$soldPrice"] = $propertyTypeCode; //================================================================================================= //============================================================================================================== //============================================================================================================== //============================================================================================================== // Map Module // // Code to produce a map // Requires $arrayMappingPostcodeToLatLong to be present in arrayOfXYZStreets.inc.php if($MAP_MODULE) { include("SITE/MapGenerator.class.php"); $theMapGenerator = new MapGenerator(); $theMapGenerator->setSITE_URL($SITE_URL); $theMapGenerator->setPostcode($firstPostcode); $theMapGenerator->setPathToDataFileFolder("SITE"); $postalDistrict = $theMapGenerator->getPostalDistrictFromCity($CITY); $theMapGenerator->setPostalDistrict($postalDistrict); $theMapGenerator->populateLatLongUsingMappingFile(); //-------- // New code for Google map $SITE_DOMAIN = str_replace("http://www.", "", $SITE_URL); # $SITE_DOMAIN="edinburghonline.co.uk"; $theMapGenerator->setDomain($SITE_DOMAIN); $theMapGenerator->populateKeyFromDomain(); $theMapGenerator->setTitle("Property values in $street"); $theMapGenerator->setZoom("15"); # $theMapGenerator->printTestVars(); // Get the map divs $smallMapItself = $theMapGenerator->getSmallMapItself(); # $largeMapItself = $theMapGenerator->getLargeMapItself(); // With Google maps, everthing is now in the body $bodyScripts = $theMapGenerator->getBodyScripts(); //-------- // Get the map divs $smallMapItself = $theMapGenerator->getSmallMapItself(); # $largeMapItself = $theMapGenerator->getLargeMapItself(); // Get the extra tags we need # $bodyTagAttributes .= $theMapGenerator->getBodyTagAttribute(); # $headScripts .= $theMapGenerator->getHeadScripts(); # $additionalStylesheetLinks .= $theMapGenerator->getAdditionalStylesheetLink(); // We can also use data from the NEARBY MODULE // $indefiniteArticle $streetType $area $areaComment // QUANTITYCOMMENT will be replaced with $quantityComment at end when we get info from other listings if($areaComment) { $commaAreaComment = ", $areaComment"; } $smallMapContainer='

    '.$street.'

    Map showing '.$street.' in '.$CITY.'.

    '.$smallMapItself.'
    '; #

    View big map

    if($areaComment) { $largeMapSentence = "$street is a $streetType $areaComment QUANTITYCOMMENT."; } $addressFormatted = str_replace("c/o", "", $address); $addressFormatted = str_replace("Care of", "", $addressFormatted); $largeMapContainer='

    '.$title.' on a Map

    This map shows the approximate location of '.$title.' in '.$street.'. '.$largeMapSentence.'

    '.$largeMapItself.'

    Note: the pin is positioned at the postcode centre, and may not correspond with the precise location of '.$addressFormatted.'.

    '; # if($totalNumberOfListings == 0) # { # $smallMapContainer=""; # $largeMapContainer=""; # } } //============================================================================================================== //============================================================================================================== //============================================================================================================== //============================================================================================================== //============================================================================================================== //============================================================================================================== // Social Media // N.B. Make sure there is a default social media image in /graphics/ $socialMediaPageTitle = $titleTag; $socialMediaPageDescription = $metaDescriptionTag; $additionalMetaTags = ' '; $siteTitleLowercase = strtolower($SITE_TITLE); $siteTitleLowercaseNoSpaces = str_replace(" ", "", $siteTitleLowercase); $streetLowercase = strtolower($street); $streetLowercaseNoSpaces = str_replace(" ", "", $streetLowercase); $cityLowercase = strtolower($CITY); $cityLowercaseNoSpaces = str_replace(" ", "", $cityLowercase); $hashtags = "$streetLowercaseNoSpaces,$cityLowercaseNoSpaces"; $horizontalSocialMediaBlock = '
    Share
    '; $verticalSocialMediaBlock = '
    Share this page
    '; //============================================================================================================== //============================================================================================================== //============================================================================================================== // Content $numberOfPropertyTypeCodes = count($arrayOfPropertyTypeCodes); #print_r($arrayOfPropertyTypeCodes); // D = Detached, S = Semi-Detached, T = Terraced, F = Flats/Maisonettes, O = Other $arrayOfDetached = array_keys($arrayOfPropertyTypeCodes, "D"); $arrayOfSemi = array_keys($arrayOfPropertyTypeCodes, "S"); $arrayOfTerraced = array_keys($arrayOfPropertyTypeCodes, "T"); $arrayOfFlats = array_keys($arrayOfPropertyTypeCodes, "F"); $numberOfDetached = count($arrayOfDetached); $numberOfSemi = count($arrayOfSemi); $numberOfTerraced = count($arrayOfTerraced); $numberOfFlats = count($arrayOfFlats); if($locality && $locality != $CITY) { $area = $locality; } else { $area = $postcodeArea; } #print"area = $area numberOfDetached =$numberOfDetached numberOfSemi =$numberOfSemi numberOfTerraced =$numberOfTerraced numberOfFlats =$numberOfFlats "; $commentOnProportionOfPropertyTypesOnStreet = returnCommentOnProportionOfPropertyTypesOnStreet($street, $area, $numberOfDetached, $numberOfSemi, $numberOfTerraced, $numberOfFlats); $variance = variance($arrayOfPropertySoldPrices); $stddev = stddev($arrayOfPropertySoldPrices); $average = average($arrayOfPropertySoldPrices); $coefficientOfVariation = $stddev/$average; #$arrayMappingPropertySoldPriceToPropertyTypeCode["$soldPrice"] = $propertyTypeCode; // Let's use the analysis arrays to build up some info about the street $currentMarketValue = $arrayMappingStreetPipeLocalityPairToAverageCurrentMarketValue["$streetPipeLocalityPair"]; #print"
    average=$average stddev =$stddev :: variance=$variance coefficientOfVariation =$coefficientOfVariation "; $introductoryText = "

    This page displays sold house prices for $street in $CITY.

    "; $currentMarketValueRange = returnPriceRangeFromPrice($currentMarketValue); $currentMarketValueRangeUpperLimit = returnPriceRangeUpperLimitFromPrice($currentMarketValue); $exampleOfMostExpensiveSale = returnExampleOfMostExpensiveSale($arrayMappingPropertySoldPriceToPropertyType, $currentMarketValueRangeUpperLimit); $streetComments = "

    $commentOnProportionOfPropertyTypesOnStreet. Properties on $street typically have values around $currentMarketValueRange, $exampleOfMostExpensiveSale.

    "; $dropdown = $landRegWeb->returnSortOrderDropdownHTML(); $headerTag="Sold House Prices in $street"; $copyrightNotice = "

    All sold house price data on $SITE_TITLE is provided under license from the Land Registry for England and Wales. We cannot be held responsible for errors or omissions. N.B. Sold prices are reported up to 3 months in arrears from date of house sale so there may be a delay for some sold properties to appear on this site. Data produced by Land Registry © Crown copyright ".date("Y").".

    "; $navLinkToStreetPageInStreetIndex = str_replace("", "$horizontalSocialMediaBlock", $navLinkToStreetPageInStreetIndex); $body = '

    '.$headerTag.'

    '.$verticalShareBlockX.' '.$introductoryText.' '.$navLinkToStreetPageInStreetIndex.' '.$streetComments.' '.$dropdown.' '.$toolbarHTML.'
    '.$housePriceListings.'
    '.$copyrightNotice.' '; $asideContent = $smallMapContainer; $youAreHere=" Home > $CITY House Prices > $street "; // Google maps code $justBeforeClosingBodyTag .= $bodyScripts; //================================================================================================= $B3C_TEMPLATE = "b3c.template.inc.php"; #include("$STANDARD_TEMPLATE"); include("$B3C_TEMPLATE"); ?>