text:
<?php

function getRTOValue($offerInfo, $dbSingleUse, $fieldName, $ordinal ) {

	$currentSettingCheck = 'Show Occupancy Fee on Offer Screen';
	$useOccFeeOnOffer = nullToChar(getSettingValue($dbSingleUse, $currentSettingCheck),0) ;

	$returnValue = '';
	if (isset($offerInfo->rentToOwnSubsequentDeposits)) {
		if ($offerInfo->numberOfPayments >= $ordinal) {
			if ($ordinal == 1) {
				$occFee = 0;
				$depositAmount = $offerInfo->rentToOwnInitialDeposit;
			}
			else {
				$currentSettingCheck = 'Occupancy Field Default Value';
				if ($useOccFeeOnOffer) {
					$occFee = $offerInfo->occupancyFee ;
				}
				else {
					$occFee = nullToChar(getSettingValue($dbSingleUse, $currentSettingCheck),0) ;
				}
				$depositAmount = $offerInfo->rentToOwnSubsequentDeposits;
			}
			if ($ordinal == 1 or ($ordinal > 1 and $occFee > 0 )) {
				if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
					$occDate = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +".$ordinal." month"));
				}
				$chequeAmount = $occFee + $depositAmount;
				if ($fieldName == "Occupancy Fee") {
					if ($occFee > 0) {
						$returnValue = money_format('%(#10n',$occFee);
					}
				}
				if ($fieldName == "Cheque Amount") {
						$returnValue = money_format('%(#10n',$chequeAmount);
				}
				if ($fieldName == "Deposit Amount") {
						$returnValue = money_format('%(#10n',$depositAmount);
				}
				if ($fieldName == "Occupancy Date" and $offerInfo->numberOfPayments > $ordinal) {
						$returnValue = $occDate;
				}
			}
			else {
				$returnValue = "Occ Fee not Set";
			}

		}
	}

	return $returnValue;
}

function getTodaysDateFromDatabase($dbSingleUse) {
	$returnValue = ''	;
	$query = "select DATE_FORMAT(NOW(),'%W, %M %e, %Y ') as todaysDate from settings
";
	if ($dbSingleUse->Query($query)) {
	    $rowValue = $dbSingleUse->Row();
		$returnValue = $rowValue->todaysDate;
	}
	return $returnValue;
}

function formatExtras($offerInfo, $dbSingleUse,$showPrice ) {
	$siteShortName = $offerInfo->siteShortName;
	$lotNumber = $offerInfo->lotNumber;
	include("offer_discount_values.php");
// This is the function I am currently working in
    $returnValue = '';
	$query = 'select *';
	$query = $query.' from offerFeatures where  siteShortName = "'.$offerInfo->siteShortName.'" and lotNumber ='.$offerInfo->lotNumber;
	$query = $query.' order by id ';
//	echo '
'.$tableName.'-'.$itemNumber.'-'.$query;
	if ($dbSingleUse->Query($query)) {
	    while ($rowValue = $dbSingleUse->Row()) {
			if ($rowNum == 0) {
				$returnValue .= '<w:tbl>';
				$returnValue .='<w:tblPr>
<w:tblStyle w:val="TableGrid"/><w:tblW w:w="0" w:type="auto"/>
<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
</w:tblPr>';
//				$returnValue .= '<w:tblGrid><w:gridCol w:w="4788"/><w:gridCol w:w="4788"/></w:tblGrid>';
				$returnValue .= '<w:tr>';
	//			$returnValue .= '<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:sz w:val="32"/>';

				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="600" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
	//			$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="nil"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t>ITEM</w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';

				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="7600" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="28"/></w:rPr><w:t>EXTRA DETAIL:</w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';

				if ($showPrice == true) {
					$returnValue .= '<w:tc>';
					$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
					$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
					$returnValue .= '</w:tcPr>';
					$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="28"/></w:rPr><w:t>MSRP</w:t></w:r></w:p>';
					$returnValue .= '</w:tc>';
					$returnValue .= '<w:tc>';
					$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
					$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
					$returnValue .= '</w:tcPr>';
					$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="28"/></w:rPr><w:t>PRICE</w:t></w:r></w:p>';
					$returnValue .= '</w:tc>';
				}
	//			$returnValue .= '<w:tc><w:p><w:r><w:t>'.$rowValue->featureResalePrice.'</w:t></w:r></w:p></w:tc>';

				$returnValue .= '</w:tr>';

			}
			$rowNum = $rowNum  + 1;

			$featureAfterDiscount = 0;
			if ($sumResalePriceDiscoutAllowed > 0 and $rowValue->featureDiscountAllowed == 1) {
				$featureAfterDiscount = $rowValue->featureResalePrice - ( $offerDiscountAmount*($rowValue->featureResalePrice/$sumResalePriceDiscoutAllowed)) ;
			}
			else {
				$featureAfterDiscount = $rowValue->featureResalePrice ;
			}
			$sumDiscounts = $sumDiscounts + $featureAfterDiscount;

			$returnValue .= '<w:tr>';
//			$returnValue .= '<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:sz w:val="32"/>';

			$returnValue .= '<w:tc>';
			$returnValue .= '<w:tcPr><w:tcW w:w="600" w:type="dxa"/>';
			$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="nil"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
//			$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="nil"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="nil"/></w:tcBorders>';
			$returnValue .= '</w:tcPr>';
			$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="28"/></w:rPr><w:t>'.$rowNum.'</w:t></w:r></w:p>';
	    	$returnValue .= '</w:tc>';

			$returnValue .= '<w:tc>';
			$returnValue .= '<w:tcPr><w:tcW w:w="7600" w:type="dxa"/>';
			$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
			$returnValue .= '</w:tcPr>';
			$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t>'.$rowValue->featureText.'</w:t></w:r></w:p>';
			$returnValue .= '</w:tc>';

			if ($showPrice == true) {
				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t>$'.$rowValue->featureResalePrice.'</w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';
				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="single"/><w:left w:val="single"/><w:bottom w:val="nil"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t>'.money_format('%.2n',$featureAfterDiscount).'</w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';
			}
//			$returnValue .= '<w:tc><w:p><w:r><w:t>'.$rowValue->featureResalePrice.'</w:t></w:r></w:p></w:tc>';

			$returnValue .= '</w:tr>';

			$returnValue .= '<w:tr>';

			$returnValue .= '<w:tc>';
			$returnValue .= '<w:tcPr><w:tcW w:w="600" w:type="dxa"/>';
			$returnValue .= '<w:tcBorders><w:top w:val="nil"/><w:left w:val="nil"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="single"/></w:tcBorders>';
			$returnValue .= '</w:tcPr>';
			$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="28"/></w:rPr><w:t></w:t></w:r></w:p>';
	    	$returnValue .= '</w:tc>';

			$returnValue .= '<w:tc>';
			$returnValue .= '<w:tcPr><w:tcW w:w="7600" w:type="dxa"/>';
//			$returnValue .= '<w:tcPr><w:tcW w:w="4000" w:type="dxa"/>';
			$returnValue .= '<w:tcBorders><w:top w:val="nil"/><w:left w:val="single"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="nil"/></w:tcBorders>';
			$returnValue .= '</w:tcPr>';
			$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="off"/><w:sz w:val="16"/></w:rPr><w:t>'.$rowValue->featureSubText.'</w:t></w:r></w:p>';
			$returnValue .= '</w:tc>';

			if ($showPrice == true) {
				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="nil"/><w:left w:val="single"/><w:bottom w:val="single"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t></w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';
				$returnValue .= '<w:tc>';
				$returnValue .= '<w:tcPr><w:tcW w:w="900" w:type="dxa"/>';
				$returnValue .= '<w:tcBorders><w:top w:val="nil"/><w:left w:val="single"/><w:bottom w:val="single"/><w:right w:val="nil"/></w:tcBorders>';
				$returnValue .= '</w:tcPr>';
				$returnValue .= '<w:p><w:r><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/><w:rPr><w:b w:val="on"/><w:sz w:val="22"/></w:rPr><w:t></w:t></w:r></w:p>';
				$returnValue .= '</w:tc>';
			}
			$returnValue .= '</w:tr>';
		}
	}
	if ($rowNum > 0) {
		$returnValue .= '</w:tbl>';
	}
	//echo $returnValue;
	return $returnValue;
}

function getAmendmentPrintItem($tableName, $offerInfo, $dbSingleUse, $itemNumber, $columnName) {

	$query = 'select ';
	if ($itemNumber  == 99) {
		$offset = 0;
		$query = $query.' sum('.$columnName.') as '.$columnName;
	}
	else {
		$offset = $itemNumber - 1;
		$query = $query.' * ';
	}
	$query = $query.' from '.$tableName.' where  siteShortName = "'.$offerInfo->siteShortName.'" and lotNumber ='.$offerInfo->lotNumber;
	if ($tableName <> 'offerFeatures') {
		$query = $query.' and printThisItem = true  ';
	}
	$query = $query.' order by id ';
	$query = $query.' limit '.$offset.', 1';
//	echo '
'.$tableName.'-'.$itemNumber.'-'.$query;
	if ($dbSingleUse->Query($query)) {
	    $rowValue = $dbSingleUse->Row();
		if (strtoupper($columnName) == 'AMDADDDAYTH1') {
				$returnValue = date('dS',strtotime($rowValue->amendmentAddedDate));
		}
		elseif (strtoupper($columnName) == 'AMDSGNDAYTH1') {
				$returnValue = date('dS',strtotime($rowValue->dateDocumentSigned));
		}
		elseif (strtoupper($columnName) == 'AMDADDMONTHTEXT1') {
				$returnValue = date('F',strtotime($rowValue->amendmentAddedDate));
		}
		elseif (strtoupper($columnName) == 'AMDSGNMONTHTEXT1') {
				$returnValue = date('F',strtotime($rowValue->dateDocumentSigned));
		}
		elseif (strtoupper($columnName) == 'AMDADD1YR2') {
				$returnValue = date('y',strtotime($rowValue->amendmentAddedDate));
		}
		elseif (strtoupper($columnName) == 'AMDSGN1YR2') {
				$returnValue = date('y',strtotime($rowValue->dateDocumentSigned));
		}
		else {
				$returnValue = $rowValue->$columnName;
		}
	}

	return $returnValue;
}
function getDepositPrintItem($offerInfo, $dbSingleUse, $itemNumber) {

	$query = 'select  * from offerDeposits';
	$offset = $itemNumber - 1;
	$query = $query.' where  siteShortName = "'.$offerInfo->siteShortName.'" and lotNumber ='.$offerInfo->lotNumber;
	$query = $query.' order by dueDate ';
	$query = $query.' limit '.$offset.', 1';
	//echo '
'.$tableName.'-'.$itemNumber.'-'.$query;
	if ($dbSingleUse->Query($query)) {
	    $rowValue = $dbSingleUse->Row();
		$returnValue = $rowValue->expectedAmount;
	}
	return $returnValue;
}
function calcDepositSumOfAmounts($offerInfo, $dbSingleUse, $howManyItems) {

	$query = 'select  * from offerDeposits';
	$offset = $itemNumber - 1;
	$query = $query.' where  siteShortName = "'.$offerInfo->siteShortName.'" and lotNumber ='.$offerInfo->lotNumber;
	$query = $query.' order by dueDate ';
	$query = $query.' limit '.$howManyItems;
	//echo '
'.$tableName.'-'.$itemNumber.'-'.$query;
	$returnValue = 0;
	if ($dbSingleUse->Query($query)) {
 	    while ($rowValue = $dbSingleUse->Row()) {
			$returnValue = $returnValue + $rowValue->expectedAmount;
		}
	}
	return $returnValue;
}

function getOfferText($offerInfo, $textToReplace,$dbSingleUse = null){
	setlocale(LC_MONETARY, "en_US");

	$returnValue = "need to add logic - mike";

	$query = '';

	$textToReplaceOriginal = $textToReplace;
	$textToReplace = strtoupper($textToReplace);

	if (
	 	$textToReplaceOriginal == 'elevation'
	or	$textToReplacOriginale == 'lotNumber'
	or 	$textToReplaceOriginal == 'lotSize'
	or 	$textToReplaceOriginal == 'modelName'
	or 	$textToReplaceOriginal == 'munStreetAddress'
	or 	$textToReplaceOriginal == 'munStreetNumber'
	or 	$textToReplaceOriginal == 'numberOfBedrooms'
	or 	$textToReplaceOriginal == 'planNumber'
	or 	$textToReplaceOriginal == 'postalCode'
	or 	$textToReplaceOriginal == 'siteName'
	or 	$textToReplaceOriginal == 'siteShortName'
	or 	$textToReplaceOriginal == 'amendedClosingText'
	or 	$textToReplaceOriginal == 'amendedOccupancyText'
	or 	$textToReplaceOriginal == 'homePhone'
	or 	$textToReplaceOriginal == 'workPhone'
	or 	$textToReplaceOriginal == 'otherPhone'
	or 	$textToReplaceOriginal == 'email1'
	or 	$textToReplaceOriginal == 'clientAddress'
	or 	$textToReplaceOriginal == 'clientCity'
	or 	$textToReplaceOriginal == 'clientProvince'
	or 	$textToReplaceOriginal == 'parkingNumber'
	or 	$textToReplaceOriginal == 'clientPostalCode'
	or 	$textToReplaceOriginal == 'frontDoor'
	or 	$textToReplaceOriginal == 'garageSize'

	) {
	$returnValue =  $offerInfo->$textToReplaceOriginal;
	}

	elseif (
	 	$textToReplaceOriginal == 'amendedClosingDate'
	or	$textToReplaceOriginal == 'calculatedClosingDate'
	or	$textToReplaceOriginal == 'calculatedOccupancyDate'
	or	$textToReplaceOriginal == 'moveInDate'
	or	$textToReplaceOriginal == 'calculatedClosingDate'
	or 	$textToReplaceOriginal == 'closingDate'
	or 	$textToReplaceOriginal == 'occupancyDate'
	or 	$textToReplaceOriginal == 'offerDate'
	) {
		if (isset($offerInfo->$textToReplaceOriginal)  &&  $offerInfo->$textToReplaceOriginal > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->$textToReplaceOriginal));
		}
		else {
			$returnValue =  '-';
		}
	}
	elseif ($textToReplace == strtoupper('BIRTHDATE1')) {
		$returnValue = '';
		if (isset($offerInfo->birthDate1)  &&  $offerInfo->birthDate1 > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->birthDate1));
		}
	}
	elseif ($textToReplace == strtoupper('BIRTHDATE2')) {
		$returnValue = '';
		if (isset($offerInfo->birthDate2)  &&  $offerInfo->birthDate2 > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->birthDate2));
		}
	}
	elseif ($textToReplace == strtoupper('BIRTHDATE3')) {
		$returnValue = '';
		if (isset($offerInfo->birthDate3)  &&  $offerInfo->birthDate3 > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->birthDate3));
		}
	}
	elseif ($textToReplace == strtoupper('allBirthDates')) {
		$returnValue = '';
		if (isset($offerInfo->birthDate1)  &&  $offerInfo->birthDate1 > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->birthDate1));
		}
		if ($returnValue > '' and isset($offerInfo->birthDate2) && $offerInfo->birthDate2 > '0000-00-00') {
			$returnValue = $returnValue.' and ';
		}
		if (isset($offerInfo->birthDate2) && $offerInfo->birthDate2 > '0000-00-00') {
			$returnValue =  $returnValue.date('F dS, Y',strtotime($offerInfo->birthDate2));
		}
		if ($returnValue > '' and isset($offerInfo->birthDate3) && $offerInfo->birthDate3 > '0000-00-00') {
			$returnValue = $returnValue.' and ';
		}
		if (isset($offerInfo->birthDate3) && $offerInfo->birthDate3 > '0000-00-00') {
			$returnValue =  $returnValue.date('F dS, Y',strtotime($offerInfo->birthDate3));
		}
	}
	elseif ($textToReplace == strtoupper('offerBaseAmount')) {
		$returnValue = '';
		$number = $offerInfo->offerPrice;
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('offerDollarsInText')) {
		$returnValue = '';
		$number = $offerInfo->offerPrice + calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) - $offerInfo->offerDiscountAmount;
		$returnValue = translateToWords(intval($number));
	}

	elseif ($textToReplace == strtoupper('offerAmount')) {
		$returnValue = '';
		$number = $offerInfo->offerPrice + calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) - $offerInfo->offerDiscountAmount;
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('offerAmountWithAmendments')) {
		$returnValue = '';
		$number = $offerInfo->offerPrice
						+ calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName)
						+ calcSumOfAmendments($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName)
								- $offerInfo->offerDiscountAmount;
		$returnValue = money_format('%(#10n',$number);
	}

	elseif ($textToReplace == strtoupper('discountActual')) {
		$returnValue = '';
		$number = $offerInfo->offerDiscountAmount;
		$returnValue = money_format('%(#10n',$number);
	}

	elseif ($textToReplace == strtoupper('discountAllowable')) {
		$returnValue = '';
		$number = 	getAvailableSiteDiscount($dbSingleUse,$offerInfo->siteShortName) * calcSumOfFeaturesAllowingDiscount($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) / 100;
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('discountAllowableInteger')) {
		$returnValue = '';
		$number = 	getAvailableSiteDiscount($dbSingleUse,$offerInfo->siteShortName) * calcSumOfFeaturesAllowingDiscount($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) / 100;
		$returnValue = number_format($number, 0,'','');
	}
	elseif ($textToReplace == strtoupper('amendmentsSum')) {
		$returnValue = '';
		$number = 	calcSumOfAmendments($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName);
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('extrasSum')) {
		$returnValue = '';
		$number = 	calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName);
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('extrasSumAllowingDiscount')) {
		$returnValue = '';
		$number = 	calcSumOfFeaturesAllowingDiscount($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName);
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('extrasSumAllowingDiscountInteger')) {
		$returnValue = '';
		$number = 	calcSumOfFeaturesAllowingDiscount($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName);
		$returnValue = number_format($number, 0,'','');
	}

	elseif ($textToReplace == strtoupper('MSRP')) {
		$returnValue = '';
		$number = 	calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) + $offerInfo->offerPrice;
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('rtoSubsequentDeposits')) {
		$returnValue = '';
		$number = 0;
		if ($offerInfo->rentToOwnSubsequentDeposits > 0 ) {
				$number = 	$offerInfo->rentToOwnSubsequentDeposits ;
		}
		$returnValue = money_format('%(#10n',$number);
		if ($number == 0) {
			$returnValue = '';
		}
	}
	elseif ($textToReplace == strtoupper('sumOfRtoDeposits') || $textToReplace == strtoupper('RtoTotalDeposits')) {
		$returnValue = '';
		$number = 0;
		if (isset($offerInfo->numberOfPayments)) {
			if ($offerInfo->rentToOwnInitialDeposit > 0 ) {
				$number = 	$offerInfo->rentToOwnInitialDeposit + ($offerInfo->rentToOwnSubsequentDeposits * ($offerInfo->numberOfPayments - 1));
			}
		}
		$returnValue = money_format('%(#10n',$number);
		if ($number == 0) {
			$returnValue = '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('ParkingNumber')) {
			$returnValue  = $offerInfo->parkingNumber;
	}
	elseif (
	 	$textToReplace == strtoupper('pCity')) {

			$returnValue  = $offerInfo->clientCity;
	}
	elseif (
	 	$textToReplace == strtoupper('pProv')) {

			$returnValue  = $offerInfo->clientProvince;
	}
	elseif (
	 	$textToReplace == strtoupper('pPostal')) {

			$returnValue  = $offerInfo->clientPostalCode;
	}
	elseif (
	 	$textToReplace == strtoupper('pStreet')) {

			$returnValue  = $offerInfo->clientAddress;
	}
	elseif (
	 	substr($textToReplace,0,13) == strtoupper('AmendmentItem')) {
			$ordinal = substr($textToReplace, 13,2);
			$returnValue =  getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse,$ordinal, "amendmentDescription" );
	}
	elseif (
	 	substr($textToReplace,0,7) == strtoupper('AmendPr')) {
			$ordinal = substr($textToReplace, 7,2);
			$returnValue =  getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse,$ordinal, "amendmentResalePrice" );
			if ($returnValue > '') {
				$returnValue = money_format('%.2n',floatval($returnValue));
			}
	}
	elseif (
	 	substr($textToReplace,0,11) == strtoupper('AmendSigned')) {
			$ordinal = substr($textToReplace, 11,2);
			$returnValue =  getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse,$ordinal, "dateDocumentSigned" );
    		if ($returnValue > '0000-00-00') {
				$returnValue =  date('F dS, Y',strtotime($returnValue));
			}
	}
	elseif (
	 	$textToReplace == strtoupper('AmendTot')) {
			$returnValue =   money_format('%.2n',getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 99, "amendmentResalePrice" ));
	}
	elseif (
	 	$textToReplace == strtoupper('AmdAddDayth1')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('AmdAddMonthText1')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('AmdAdd1Yr2')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('AmdSgnDayth1')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('AmdSgnMonthText1')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('AmdSgn1Yr2')) {
			$returnValue =   getAmendmentPrintItem("offerAmendments",$offerInfo, $dbSingleUse, 1, $textToReplace );
	}
	elseif (
	 	$textToReplace == strtoupper('Bd')) {

			$returnValue  = $offerInfo->numberOfBedrooms;
	}
	elseif (
	 	$textToReplace == strtoupper('Bedroom')) {

			$returnValue  = $offerInfo->numberOfBedrooms;
	}
	elseif (
	 	substr($textToReplace,0,15) == strtoupper('ChangeOrderItem')) {
			$returnValue =  getAmendmentPrintItem("offerChangeOrders",$offerInfo, $dbSingleUse,substr($textToReplace, strlen($textToReplace) -1,1), "changeDescription" );
	}
	elseif (
	 	substr($textToReplace,0,8) == strtoupper('ChgOrdPr')) {
			$returnValue =  getAmendmentPrintItem("offerChangeOrders",$offerInfo, $dbSingleUse,substr($textToReplace, strlen($textToReplace) -1,1), "changePrice" );
			if ($returnValue > '') {
				$returnValue = money_format('%.2n',floatval($returnValue));
			}
	}
	elseif (
	 	substr($textToReplace,0,12) == strtoupper('ChgOrdSigned')) {
			$returnValue =  getAmendmentPrintItem("offerChangeOrders",$offerInfo, $dbSingleUse,substr($textToReplace, strlen($textToReplace) -1,1), "dateDocumentSigned" );
    		if ($returnValue > '0000-00-00') {
				$returnValue =  date('F dS, Y',strtotime($returnValue));
			}
	}
	elseif (
	 	$textToReplace == strtoupper('ChgOrdTot')) {
			$returnValue =   money_format('%.2n',getAmendmentPrintItem("offerChangeOrders",$offerInfo, $dbSingleUse, 99, "changePrice" ));
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDate')) {
		$returnValue = '';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->closingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CalculatedCloseDate')) {
		$returnValue = '';
		if (isset($offerInfo->calculatedClosingDate)  &&  $offerInfo->calculatedClosingDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->calculatedClosingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDateTarion')) {
		$returnValue = 'the ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('dS',strtotime($offerInfo->closingDate));
		}
		$returnValue = $returnValue.' of ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('F',strtotime($offerInfo->closingDate));
		}
		$returnValue = $returnValue.', ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('Y',strtotime($offerInfo->closingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDateTarionPlus365')) {
		$returnValue = 'the ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('dS',strtotime($offerInfo->closingDate. " +365 day")) ;
		}
		$returnValue = $returnValue.' of ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('F',strtotime($offerInfo->closingDate. " +365 day")) ;
		}
		$returnValue = $returnValue.', ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('Y',strtotime($offerInfo->closingDate. " +365 day"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDateTarionPlus395')) {
		$returnValue = 'the ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('dS',strtotime($offerInfo->closingDate. " +395 day")) ;
		}
		$returnValue = $returnValue.' of ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('F',strtotime($offerInfo->closingDate. " +395 day")) ;
		}
		$returnValue = $returnValue.', ';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  $returnValue.date('Y',strtotime($offerInfo->closingDate. " +395 day"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDateAmended')) {
		$returnValue = '';
		if (isset($offerInfo->amendedClosingDate)  &&  $offerInfo->amendedClosingDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->amendedClosingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseDayTH')) {
		$returnValue = '';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  date('dS',strtotime($offerInfo->closingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CloseMonthText')) {
		$returnValue = '';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  date('F',strtotime($offerInfo->closingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('CurrentDate')) {
			$returnValue =  date('F dS, Y');
	}
	elseif (
	 	$textToReplace == strtoupper('Cyr2')) {
		$returnValue = '';
		if (isset($offerInfo->closingDate)  &&  $offerInfo->closingDate > '0000-00-00') {
			$returnValue =  date('y',strtotime($offerInfo->closingDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('Elev')) {

			$returnValue  = $offerInfo->elevation;
	}
	elseif (
	 	$textToReplace == strtoupper('Elevation')) {

			$returnValue  = $offerInfo->elevation;
	}
	elseif (
	 	$textToReplace == strtoupper('email')) {

			$returnValue  = $offerInfo->email1;
	}
	elseif (
	 	$textToReplace == strtoupper('ExtrasAll')) {

			$returnValue  = formatExtras($offerInfo, $dbSingleUse, false );
	}
	elseif (
	 	$textToReplace == strtoupper('ExtrasAllWithPrice')) {

			$returnValue  = formatExtras($offerInfo, $dbSingleUse, true );
	}
	elseif (
	 	substr($textToReplace,0,8) == strtoupper('ExtraNot')) {
			if (substr($textToReplace,10,5) == strtoupper('Price') || substr($textToReplace,9,5) == strtoupper('Price') ) {
				$ordinal = substr($textToReplace, 8,2);
				if (is_numeric($ordinal)) {
					// 0k - because the ordinal is two digits long
				}
				else {
					$ordinal = substr($ordinal,0,1);
				}
				$returnValue =  getAmendmentPrintItem("offerFeatures",$offerInfo, $dbSingleUse,$ordinal, "featureResalePrice" );
				if ($returnValue > '') {
				$returnValue = money_format('%.2n',floatval($returnValue));
				}
			}
			elseif (substr($textToReplace,10,7) == strtoupper('Subtext') || substr($textToReplace,9,7) == strtoupper('Subtext') ) {
				$ordinal = substr($textToReplace, 8,2);
				if (is_numeric($ordinal)) {
					// 0k - because the ordinal is two digits long
				}
				else {
					$ordinal = substr($ordinal,0,1);
				}
				$returnValue =  getAmendmentPrintItem("offerFeatures",$offerInfo, $dbSingleUse,$ordinal, "featureSubText" );
			}
			else {
				$ordinal = substr($textToReplace, 8,2);
				if (is_numeric($ordinal)) {
					// 0k - because the ordinal is two digits long
				}
				else {
					$ordinal = substr($ordinal,0,1);
				}
				$returnValue =  getAmendmentPrintItem("offerFeatures",$offerInfo, $dbSingleUse,$ordinal, "featureText" );
			}
	}
	elseif (
	 	$textToReplace == strtoupper('FrontDoor')) {

			$returnValue  = $offerInfo->frontDoor;
	}
	elseif (
	 	$textToReplace == strtoupper('GarageSize')) {

			$returnValue  = $offerInfo->garageSize;
	}
	elseif (
	 	$textToReplace == strtoupper('OfferDayTH')) {
		$returnValue = '';
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$returnValue =  date('dS',strtotime($offerInfo->offerDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('IrrevDayTH')) {
		$returnValue = '';
		if (isset($offerInfo->irrevocableDate)  &&  $offerInfo->irrevocableDate > '0000-00-00') {
			$returnValue =  date('dS',strtotime($offerInfo->irrevocableDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OfferMonthText')) {
		$returnValue = '';
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$returnValue =  date('F',strtotime($offerInfo->offerDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('IrrevMonthText')) {
		$returnValue = '';
		if (isset($offerInfo->irrevocableDate)  &&  $offerInfo->irrevocableDate > '0000-00-00') {
			$returnValue =  date('F',strtotime($offerInfo->irrevocableDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('irrevYr2')) {
		$returnValue = '';
		if (isset($offerInfo->irrevocableDate)  &&  $offerInfo->irrevocableDate > '0000-00-00') {
			$returnValue =  date('y',strtotime($offerInfo->irrevocableDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('oYr2')) {
		$returnValue = '';
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$returnValue =  date('y',strtotime($offerInfo->offerDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('irrevPlus60Days')) {
		if (isset($offerInfo->irrevocableDate)  &&  $offerInfo->irrevocableDate > '0000-00-00') {
			$newDate = getIrrevocableDatePlusDays($dbSingleUse, $offerInfo->lotNumber, $offerInfo->siteShortName,60);
			$returnValue =  date('F dS, Y',strtotime($newDate));
		}
		else {
			$returnValue =  '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('Lawyer')) {

			$returnValue  = $offerInfo->lawyer;
	}
	elseif (
	 	$textToReplace == strtoupper('LotCity')) {

			$returnValue  = $offerInfo->city;
	}
	elseif (
	 	$textToReplace == strtoupper('LotNum')) {

			$returnValue  = $offerInfo->lotNumber;
	}
	elseif (
	 	$textToReplace == strtoupper('LotPostal')) {

			$returnValue  = $offerInfo->postalCode;
	}
	elseif (
	 	$textToReplace == strtoupper('LotSize')) {

			$returnValue  = $offerInfo->lotSize;
	}
	elseif (
	 	$textToReplace == strtoupper('Model')) {

			$returnValue  = $offerInfo->modelName;
	}
	elseif (
	 	$textToReplace == strtoupper('MunicipalAddress')) {

			$returnValue  = $offerInfo->munStreetAddress;
			$returnValue = trim($offerInfo->munStreetNumber.' '.$offerInfo->munStreetAddress);
	}
	elseif (
	 	$textToReplace == strtoupper('PurchaserAddress')) {

			$returnValue = trim($offerInfo->clientAddress.'  '.$offerInfo->clientCity).', '.$offerInfo->clientProvince;
	}
	elseif (
	 	$textToReplace == strtoupper('OccDate')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->occupancyDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus1M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +1 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus2M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +2 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus3M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +3 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus4M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +4 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus5M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +5 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OccDatePlus5M')) {
		$returnValue = '';
		if (isset($offerInfo->occupancyDate)  &&  $offerInfo->occupancyDate > '0000-00-00') {
			$returnValue = date("F dS, Y", strtotime(date("F dS, Y", strtotime($offerInfo->occupancyDate)) . " +5 month"));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OfferDateFull')) {
		$returnValue = '';
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->offerDate));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('offerPlus1Mth')) {
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$newDate = getOfferDatePlusMonths($dbSingleUse, $offerInfo->lotNumber, $offerInfo->siteShortName,1);
			$returnValue =  date('F dS, Y',strtotime($newDate));

		}
		else {
			$returnValue =  '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('offerPlus2Mth')) {
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$newDate = getOfferDatePlusMonths($dbSingleUse, $offerInfo->lotNumber, $offerInfo->siteShortName,2);
			$returnValue =  date('F dS, Y',strtotime($newDate));

		}
		else {
			$returnValue =  '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('offerPlus30Days')) {
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$newDate = getOfferDatePlusDays($dbSingleUse, $offerInfo->lotNumber, $offerInfo->siteShortName,30);
			$returnValue =  date('F dS, Y',strtotime($newDate));
		}
		else {
			$returnValue =  '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('offerPlus60Days')) {
		if (isset($offerInfo->offerDate)  &&  $offerInfo->offerDate > '0000-00-00') {
			$newDate = getOfferDatePlusDays($dbSingleUse, $offerInfo->lotNumber, $offerInfo->siteShortName,60);
			$returnValue =  date('F dS, Y',strtotime($newDate));
		}
		else {
			$returnValue =  '-';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('OfferSignedDate')) {
		$returnValue = '';
		if (isset($offerInfo->dateDocumentSigned)  &&  $offerInfo->offerDate > '0000-00-00') {
			$returnValue =  date('F dS, Y',strtotime($offerInfo->dateDocumentSigned));
		}
	}
	elseif (
	 	$textToReplace == strtoupper('PaintClean')) {
		if ($offerInfo->paintAndClean) {
			$returnValue =  'Yes';
		}
		else {
			$returnValue =  'No';
		}
	}
	elseif (
	 	$textToReplace == strtoupper('PhoneHome')) {

			$returnValue  = $offerInfo->homePhone;
	}
	elseif (
	 	$textToReplace == strtoupper('PhoneOther')) {

			$returnValue  = $offerInfo->otherPhone;
	}
	elseif (
	 	$textToReplace == strtoupper('PhoneWork')) {

			$returnValue  = $offerInfo->workPhone;
	}
	elseif (
	 	$textToReplace == strtoupper('PlanNum')) {

			$returnValue  = $offerInfo->planNumber;
	}
	elseif ($textToReplace == strtoupper('LastNames')) {
		$returnValue = '';
		$returnValue = trim($offerInfo->lastName1);
		if ($returnValue > '' && $offerInfo->lastName2 > '') {
			$returnValue = $returnValue.' and ';
		}
		$returnValue = $returnValue.$offerInfo->lastName2;
		if ($returnValue > '' && $offerInfo->lastName3 > '') {
			$returnValue = $returnValue.' and ';
		}
		$returnValue = $returnValue.$offerInfo->lastName3;
	}
	elseif ($textToReplace == strtoupper('PURCHASERNAMEFULL')) {
		$returnValue = '';
		$returnValue = trim($offerInfo->personPrefix1.' '.$offerInfo->firstName1.' '.$offerInfo->lastName1);
		if ($returnValue > '' && trim($offerInfo->personPrefix2.' '.$offerInfo->firstName2.' '.$offerInfo->lastName2) > '') {
			$returnValue = $returnValue.' and ';
		}
		$returnValue = $returnValue.trim($offerInfo->personPrefix2.' '.$offerInfo->firstName2.' '.$offerInfo->lastName2);
		if ($returnValue > '' && trim($offerInfo->personPrefix3.' '.$offerInfo->firstName3.' '.$offerInfo->lastName3) > '') {
			$returnValue = $returnValue.' and ';
		}
		$returnValue = $returnValue.trim($offerInfo->personPrefix3.' '.$offerInfo->firstName3.' '.$offerInfo->lastName3);
	}
	elseif ($textToReplace == strtoupper('PurchaserName1stPersonFull')) {
		$returnValue = '';
		$returnValue = trim($offerInfo->personPrefix1.' '.$offerInfo->firstName1.' '.$offerInfo->lastName1);
	}
	elseif ($textToReplace == strtoupper('PurchaserName2ndPersonFull')) {
		$returnValue = '';
		$returnValue = trim($offerInfo->personPrefix2.' '.$offerInfo->firstName2.' '.$offerInfo->lastName2);
	}
	elseif (
	 	$textToReplace == strtoupper('SiteName')) {

			$returnValue  = $offerInfo->siteName;
	}
	elseif (
	 	$textToReplace == strtoupper('StreetName')) {

			$returnValue  = $offerInfo->munStreetAddress;
	}
	elseif (
	 	$textToReplace == strtoupper('StreetSide')) {

			$returnValue  = $offerInfo->streetSide;
	}
	elseif (
	 	$textToReplace == strtoupper('TodaysDateFullText')) {

			$returnValue  = getTodaysDateFromDatabase($dbSingleUse);
	}
	elseif (
	 	$textToReplace == strtoupper('FirstPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 1));
	}
	elseif (
	 	$textToReplace == strtoupper('SecondPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 2));
	}
	elseif (
	 	$textToReplace == strtoupper('ThirdPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 3));
	}
	elseif (
	 	$textToReplace == strtoupper('FourthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 4));
	}
	elseif (
	 	$textToReplace == strtoupper('FifthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 5));
	}
	elseif (
	 	$textToReplace == strtoupper('SixthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 6));
	}
	elseif (
	 	$textToReplace == strtoupper('SeventhPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 7));
	}
	elseif (
	 	$textToReplace == strtoupper('EighthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 8));
	}
	elseif (
	 	$textToReplace == strtoupper('NinthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 9));
	}
	elseif (
	 	$textToReplace == strtoupper('TenthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 10));
	}
	elseif (
	 	$textToReplace == strtoupper('EleventhPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 11));
	}
	elseif (
	 	$textToReplace == strtoupper('TwelfthPayment')) {

			$returnValue =   money_format('%.2n',getDepositPrintItem($offerInfo, $dbSingleUse, 12));
	}
	elseif ($textToReplace == strtoupper('FivePercentMinus3Payments')) {
		$returnValue = '';
		$number = 	calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) + $offerInfo->offerPrice;
		$number = .05 * $number;
		$number = $number - calcDepositSumOfAmounts($offerInfo, $dbSingleUse, 3);
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('OfferMinus5Percent')) {
		$returnValue = '';
		$number = 	calcSumOfFeatures($dbSingleUse,$offerInfo->lotNumber, $offerInfo->siteShortName) + $offerInfo->offerPrice;
		$number = .95 * $number;
		$returnValue = money_format('%(#10n',$number);
	}
	elseif ($textToReplace == strtoupper('WorkCredTot')) {
			$returnValue =   money_format('%.2n',getAmendmentPrintItem("offerWorkCredits",$offerInfo, $dbSingleUse, 99, "workCreditPrice" ));
	}
	elseif (
	 	substr($textToReplace,0,8) == strtoupper('WorkCred')) {
			if (substr($textToReplace,8,2) == strtoupper('PR')) {
				$ordinal = substr($textToReplace, 10,2);
				if (is_numeric($ordinal)) {
					// 0k - because the ordinal is two digits long
				}
				else {
					$ordinal = substr($ordinal,0,1);
				}
				$returnValue =  getAmendmentPrintItem("offerWorkCredits",$offerInfo, $dbSingleUse,$ordinal, "workCreditPrice" );
				if ($returnValue > '') {
				$returnValue = money_format('%.2n',floatval($returnValue));
				}
			}
			else {
				$ordinal = substr($textToReplace, 12,2);
				if (is_numeric($ordinal)) {
					// 0k - because the ordinal is two digits long
				}
				else {
					$ordinal = substr($ordinal,0,1);
				}
				$returnValue =  getAmendmentPrintItem("offerWorkCredits",$offerInfo, $dbSingleUse,$ordinal, "workCreditDescription" );
			}
	}
	elseif (substr($textToReplace,0,6) == strtoupper('OccFee')) {
		if (strlen($textToReplace) == 6) {
			 $ordinal = 1;
		}
		elseif (strlen($textToReplace) == 7) {
			 $ordinal = substr($textToReplace,6,1) ;
		}
		else {
			 $ordinal = substr($textToReplace,6,2) ;
		}
		$returnValue =  getRTOValue($offerInfo, $dbSingleUse, 'Occupancy Fee', $ordinal ) ;
	}
	elseif (substr($textToReplace,0,12) == strtoupper('RTOChequeAmt')) {
		if (strlen($textToReplace) == 12) {
			 $ordinal = 1;
		}
		elseif (strlen($textToReplace) == 13) {
			 $ordinal = substr($textToReplace,12,1) ;
		}
		else {
			 $ordinal = substr($textToReplace,12,2) ;
		}
		$returnValue =  getRTOValue($offerInfo, $dbSingleUse, 'Cheque Amount', $ordinal ) ;
	}
	elseif (substr($textToReplace,0,10) == strtoupper('RTODeposit')) {
		if (strlen($textToReplace) == 10) {
			 $ordinal = 1;
		}
		elseif (strlen($textToReplace) == 11) {
			 $ordinal = substr($textToReplace,10,1) ;
		}
		else {
			 $ordinal = substr($textToReplace,10,2) ;
		}
		$returnValue =  getRTOValue($offerInfo, $dbSingleUse, 'Deposit Amount', $ordinal ) ;
	}
	elseif (substr($textToReplace,0,11) == strtoupper('OccDatePlus')
			and (substr($textToReplace,12,4) == strtoupper('MRTO') or substr($textToReplace,13,4) == strtoupper('MRTO') )) {
		if (strlen($textToReplace) == 16) {
			 $ordinal = substr($textToReplace,11,1) ;
		}
		else {
			 $ordinal = substr($textToReplace,11,2) ;
		}
		$returnValue =  getRTOValue($offerInfo, $dbSingleUse, 'Occupancy Date', $ordinal ) ;
	}
	//echo '
'.$textToReplace.'-'.$returnValue;

	if ($returnValue == '') {
	//	$returnValue = '-';
	}

	return $returnValue;
}
?>


In case folks were wondering, we are still accepting manuscript submissions for The Shadow Over Deathlehem. You can send your submission to submissions@grinningskullpress.com or grinningskullpress@yahoo.com. For details, please see our Submission Guidelines.
As much as we hate to do this, we are pulling the plug on the Little Monsters anthology. We had such high hopes for this collection, but it seems the Twilight phenomena has filtered down to the youngest generation. We had been hoping to receive truly scary stories, things that had kids waking up in the middle of the night screaming out for mommy and daddy, stories that, in their writing, would act like a sort of catharsis for the child. We did receive a couple of chilling stories, stories that surprised us given the age of the author, but sadly those were in the minority (and not nearly enough to fill a short story collection). The majority of the stories were cute, charming pieces that were more suited for Saturday morning cartoons.
We will be closed to all submissions except DEATHLEHEM REVISITED from December 1, 2015 through January 1, 2016 so that we can catch up on the backlog of manuscripts we have received.
We have opened up submissions to Hockomock to all authors from any location. We STRONGLY ADVISE that your research the area and become familiar with the area known as The Bridgewater Triangle before writing and submitting for this anthology. Any stories that do not show a familiarity with the location will be rejected.
We have also opened the door to novel and novella submissions. More information can be found at the link above.


text:
#1 Midfielder - Chapman
Hometown: Seattle
High School: Ballard
2009 Chapman 1 86 24 17 0 0 0 - 0
2008 Chapman 1 4 22 27 0 0 0 - 0
2006 Chapman 1 0 8 25 0 0 0 - 0
02/13/2009 @ San Diego State W 17-12 3 2 0 0 0
02/14/2009 @ Claremont W 18-6 6 2 2 0 0
02/21/2009 @ Loyola Marymount W 14-10 5 1 2 0 0
02/28/2009 University of Michigan L 10-13 4 1 0 0 0
03/04/2009 Whittier College W 12-9 6 1 1 0 0
03/08/2009 Ithaca College W 14-11 4 2 0 0 0
03/14/2009 Texas W 14-4 5 1 2 0 0
03/18/2009 Colorado State W 15-5 4 5 2 0 0
03/22/2009 California W 20-8 5 1 0 0 0
03/28/2009 Oregon W 15-8 10 3 1 0 0
04/03/2009 USC W 22-9 6 1 0 0 0
04/08/2009 @ Utah W 21-7 7 1 2 0 0
04/10/2009 @ Brigham Young L 7-10 10 0 1 0 0
04/18/2009 UC Santa Barbara W 7-5 5 1 2 0 0
05/12/2009 Colorado State W 9-8 0 1 1 0 0
05/15/2009 Brigham Young W 10-9 0 0 0 0 0
02/09/2008 Loyola Marymount W 18-7 0 2 1 0 0
02/14/2008 @ San Diego W 19-9 0 1 2 0 0
02/16/2008 Brigham Young W 16-15 0 1 4 0 0
02/27/2008 @ USC W 27-6 0 4 0 0 0
02/29/2008 @ San Diego State W 14-6 0 2 0 0 0
03/07/2008 Northeastern W 15-9 0 0 2 0 0
03/12/2008 Florida W 17-6 0 2 3 0 0
03/13/2008 Ithaca College L 16-18 0 0 0 0 0
03/21/2008 Utah W 14-6 0 0 0 0 0
04/05/2008 Cal Poly W 13-6 0 0 3 0 0
04/12/2008 @ UC Santa Barbara W 12-11 0 0 1 0 0
04/19/2008 @ Whittier College W 18-9 0 2 2 0 0
05/13/2008 Florida W 13-10 0 0 0 0 0
05/14/2008 @ Colorado State W 14-9 0 1 1 0 0
05/16/2008 Arizona State W 18-15 4 1 0 0 0
05/17/2008 @ University of Michigan L 11-14 0 1 1 0 0
03/29/2008 Claremont W 23-3 0 1 2 0 0
03/27/2007 Claremont W 9-5 0 0 2 0 0
04/29/2006 @ Arizona L 8-9 0 2 0 0 0
02/18/2007 @ Arizona State L 10-11 0 2 0 0 0
02/24/2007 Whittier College L 12-13 0 1 1 0 0
03/06/2007 Marymount College W 8-5 0 0 0 0 0
04/14/2007 @ Cal Poly L 10-12 0 0 0 0 0
04/07/2007 UCLA W 11-3 0 1 1 0 0
03/28/2007 @ Loyola Marymount W 11-6 0 1 2 0 0
03/31/2007 @ Colorado State L 4-17 0 0 1 0 0
04/03/2007 @ Colorado L 7-11 0 2 2 0 0
04/06/2007 @ Oregon L 10-18 0 0 2 0 0
04/08/2007 @ Utah W 15-13 0 0 1 0 0
02/09/2007 UC Santa Barbara W 13-5 0 4 2 0 0
02/26/2006 @ UC Santa Barbara L 9-10 0 0 1 0 0
03/12/2006 Santa Clara W 13-9 0 0 0 0 0
04/08/2006 Cal Poly L 9-13 0 1 3 0 0
03/19/2006 @ UCLA L 8-16 0 0 0 0 0
03/04/2006 Arizona State L 11-12 0 3 2 0 0
04/09/2006 Arizona W 16-8 0 0 2 0 0
02/04/2006 Michigan State W 12-7 0 1 0 0 0
02/11/2006 Texas Tech W 12-5 0 1 4 0 0
02/18/2006 @ UC San Diego L 14-15 0 0 3 0 0
02/25/2006 Oregon State W 14-10 0 0 0 0 0
02/25/2006 Loyola Marymount L 8-9 0 0 0 0 0
03/29/2006 @ Central Florida W 17-8 0 0 1 0 0
03/24/2006 @ Florida State L 9-11 0 0 1 0 0
03/27/2006 @ Florida W 11-10 0 0 0 0 0
2009 1st Team All-America Midfield

redpajama_set_name: RedPajamaCommonCrawl


The people of Khyber-Pakhtunkhwa showed the door to the chiefs of six mainstream political parties.
PPP Chairperson Bilawal Bhutto Zardari, PML-N President Shehbaz Sharif, MMA President Maulana Fazlur Rehman, JI Ameer Sirajul Haq, ANP chief Asfandyar Wali Khan and Qaumi Watan Party Chairperson Aftab Sherpao suffered a major setback in the northwestern province as people chose to vote against them.
Voters say that all these leaders would vacate their Khyber-Pakhtunkhwa seats and prefer retaining seats in their hometown constituencies.
Wali was facing Maulana Gohar Shah of the MMA and PTI's Fazal Mohammad Khan in NA-24. He had lost to Maulana Gohar Shah in the 2013 election. This time, he has lost the seat to PTI's Fazal Mohammad Khan.
Similarly, Shehbaz suffered defeat at the hands of PTI's Saleemur Rehman in Swat's NA-3. The MMA had withdrawn its candidate, Maulana Hujjatullah, in favour of the PML-N president. Hujjatullah refused to leave his candidacy and contested as an independent candidate.
In Malakand's NA-8, the PPP's young chief lost in his first election and defeated by the PTI's Junaid Akbar. Malakand was once a PPP stronghold. The number of national and provincial assembly seats of the party has fallen in the area over the past few years.
PTI's Yaqoob Sheikh defeated MMA chief Rehman in his hometown of Dera Ismail Khan.
Similarly, PTI's Bashir Khan won against JI chief Haq in his native Lower Dir district. Upper Dir and Lower Dir districts have had been JI strongholds for a long time. Haq has served as a senator and twice as a senior minister in the Khyber-Pakhtunkhwa government.
In Charsadda's NA-23, Qaumi Watan Party's Sherpao has been winning since 1988. He has served the provincial chief minister as well as a member of the federal cabinet in the past but this year, the PTI's Anwar Taj defeated him.


text:
Have You Got Any Idea About Maestro Nusrat Fateh Ali Khan's Connection with Jalandhar
By: Aviral Pandey | January 12, 2021
One of the very few names, Nusrat Fateh Ali Khan, originally named Pervez Fateh Ali Khan, is respected on both sides of the border. Although he has departed from the world more than two decades ago, even today he is on top of every music lover's playlist.
Born in Lyallpur region of Punjab in 1948, the maestro sang hundreds of songs that are sung and performed even today. Apart from receiving felicitations like Pride of Pakistan, UNESCO Music Prize, and Grand Prix des Amériques, he also went on to earn titles like Budai or "Singing Buddha" in Japan. In fact, he was also nominated for Grammy Awards for two categories in 1997. Even today he holds the Guinness World Record for having recorded the most number of Qawwalis.
Nevertheless, for Indian music lovers, Nusrat sahb belongs to them as much as he belongs to his Pakistani fans, not just emotionally, but also materially. Many of you may not know that Nusrat Fateh Ali Khan also has family roots in Jalandhar district. During the partition, his family actually migrated from Jalandhar's Basti Sheikh. His father Fateh Ali Khan Jalandhari Qawwal was also a renowned name in undivided Punjab. A student of the prominent musical gharana of Patiala, Fateh Ali Khan used to head a famous Qawwali Party called Fateh Ali Khan, Mubarak Ali Khan & Party.
Nusrat sahb's family has a musical history of almost 600 years in the Sufi order of Chisti. The Khan family is also credited for popularizing the poetry of Allama Iqbal, the poet who wrote "Sare Jahan se Accha." However, Fateh Ali Khan never wanted his son to become a singer. He instead wanted him to pursue his academics earnestly and become a doctor or an engineer but both destiny and Nusrat Fateh Ali Khan had different intentions.
jagjeet sandhu drank alcohol for rupinder gandhi...
connection pakistani prime minister imran khan jal...
Related Tags: PUNJABI POLLYWOOD NUSRAT FATEH ALI KHAN FATEH ALI KHAN JALANDHAR UNESCO PRIDE OF PAKISTAN SINGING BUDDHA MUBARAK ALI KHAN & PARTY GRAND PRIX DES AMÉRIQUES GUINNESS WORLD RECORD ALLAMA IQBAL


text:
Pjanic.com is a fansite devoted to Barca's Little Prince
The 25 Best Centre-Backs in World Football – Ranked
A top central defender is like gold dust in the modern footballing climate. It's a role that not only requires exceptional mental and physical attributes, but the ability to lead and organise a defensive line.
There are so few who have mastered the role over the years; even fewer who are still playing. Picking the top 25, then, was quite the undertaking at 90min.
After plenty of debate, however, we've managed to come up with the definitive list. Don't disagree, there's been enough of that already.
25. Caglar Soyuncu
The Turkish defender struggled to live up to the hype after his £19m move from Freiburg to Leicester in his first season at the club. He took his time to find his feet, but under Brendan Rodgers he has gone from strength to strength, playing 90 minutes in all but one game in an outstanding season for the Foxes.
He is now one of the Premier League's best, and he's only 23.
24. Ruben Dias
There is no doubt Dias, though just 22, could have had a move to one of Europe's footballing superpowers by now. He's played well over 100 games for Benfica despite his age and is already a regular for Portugal, but he has kept his feet firmly on the ground (except when he's rising to power one in from a corner) and is reaping the benefits.
He's won one Primeira Liga in Lisbon and may claim another this season, with his stock at an all-time, and rising, high.
23. Felipe
He wasn't even close to being Atletico's biggest signing in a summer that brought them Joao Felix and Mario Hermoso among eight additions, but Felipe might have proved to be the most inspired of the lot.
Replacing Diego Godin as the experienced head at the heart of defence was never going to be easy, but since establishing himself in October he has played virtually every minute as part of La Liga's second best defence.
22. Antonio Rudiger
Since returning from injury, Rudiger has been a vital part of Frank Lampard's Chelsea side. The defensive line around him has been leaky with only Tottenham and Burnley in the Premier League's top half conceding more goals, but his performances have nonetheless been mightily impressive, and Blues fans might despair to think where they'd be without him.
21. Jerome Boateng
It wasn't too long ago that Boateng was deemed dispensable by Bayern Munich but it's difficult to imagine that now. Some fitness and suspension issues have kept him to a modest 24 appearances in all competitions, but when available he is one of the first names on Hansi Flick's team sheet.
At this rate, it would be a major surprise if he wasn't taken to Euro 2020, and that's testament to the renaissance he has enjoyed in Munich.
20. Stefan de Vrij
The market for Dutch centre-backs is a niche one, but it's not short of talent – as evidenced by the fact the imperious De Vrij is only the third highest of his countrymen on this list.
He's been exemplary for Antonio Conte's revived Inter side, and though a maiden Serie A title is fast running away from him, the ex-Lazio man remains one of the very best in the division – and indeed Europe.
19. Inigo Martinez
Athletic Club have struggled in La Liga this season, but that's not due to their defensive record. They sit in tenth place at present, but have conceded just 23 goals, bettered only by the two Madrid sides.
At the beating heart of that formidable back-line is the intelligent Martinez, who isn't the most domineering central defender you'll find in Spain, but certainly one of the most effective.
18. Mats Hummels
Hummels has been named on lists such as these for as long as any of us can remember and he will continue to be for the foreseeable. From Bayern to Dortmund, back to Bayern and then to Dortmund once again, it doesn't matter whether he's donning red and white or yellow and black, he's one of the best around, and showing no signs of slowing down as he enters his 30s.
17. Dayot Upamecano
Few centre-backs are ever able to cause the clamour and fuss over the course of their careers than Upamecano has managed in less than three seasons in the Bundesliga.
He doesn't celebrate his 22nd birthday until October but can already take his pick of the continent's biggest clubs, though will be in no hurry to leave Germany at present with domestic, and indeed Champions League, glory firmly in their sights.
16. Lucas Hernandez
A key part of France's 2018 World Cup triumph, Hernandez has struggled to hit the ground running at Bayern due to injury, but when he has featured he has shown us all what he can do – whether that be at left-back or at the heart of defence. He is one of the most highly-rated defenders around, and once he puts his fitness issues behind him for good, there is no limit to how far he can go in the game.
Having just turned 24, he has time on his side.
15. Joe Gomez
Stephen Warnock: "I've said for a long, long time now that Joe Gomez makes Van Dijk such a better player.
"I just think the way Gomez plays as well suits Van Dijk. Partnerships are not always the ones that you think will work as well as they do." pic.twitter.com/8oh9juKDxz
— Anfield Edition (@AnfieldEdition) March 2, 2020
Liverpool's record with and without Gomez this season is rather astonishing. They've conceded four goals in the 14 league games he has started, and 16 in the 15 in which he hasn't.
His pace and youthful energy is vital at the heart of the back line is undeniably integral to their success, and neither Dejan Lovren nor Joel Matip can hold a candle to him now.
14. Marquinhos
Ball-playing central defenders often come with the David Luiz-patented caveat of being prone to the occasional (or not so occasional in Luiz's case) howler at the back, but PSG's Marquinhos manages to strike the balance beautifully.
Graceful on the ball with an incisive eye for a pass but not lacking in any of the requisite defensive instincts, he truly can do it all.
13. Leonardo Bonucci
Bonucci is still somehow only 32 despite having played in the Italian top-flight ever since its formation in 1898, and is yet to show any signs of losing a step.
Astonishingly, he has only ever missed 12 games through injury despite having played almost 650 times for club and country. The man is essentially a cyborg programmed to do one thing: defend really, really well.
12. Thiago Silva
Another one who seems immortal, Silva is still going strong at the ripe old age of 35 as PSG trot stylishly towards another Ligue 1 title. The Brazilian captain is one of the most feared defenders in the world, and though injuries are beginning to catch up with him to a degree, he is still at the very top of his game when he takes to the pitch.
11. Niklas Sule
Injuries have ravaged Sule's 2019/20 season, but it is testament to the impression he has made that he last featured in October but is still widely regarded as one of the absolute best around.
He'll bring a big lift to Bayern Munich when he returns later this month, while Germany will also be eagerly anticipating him getting back up to speed ahead of Euro 2020.
10. Kalidou Koulibaly
The man many considered to be the creme de la creme of central defenders has gone off the boil a little along with Napoli this season but he remains a highly-coveted talent, and one of the prized assets at the Naples club.
There are few more dominant or commanding than the Senegal international, who has suffered with injuries himself, but won't be short of offers if and when he decides his time at Napoli is up.
9. Matthijs de Ligt
De Ligt: "I had offers last summer from Juventus, PSG, and Barcelona, so I studied the various options and at the end of the day concluded I could grow faster at Juve. They have a particular style and I knew being here would make me a more complete player." [Ziggo] pic.twitter.com/bTmQjFlU4u
— Juventus News – Juvefc.com (@juvefcdotcom) March 7, 2020
His transfer saga was the talk of the summer, but while his fledgling Juventus career hasn't always been plain sailing so far, by and large he has kept the faith of Maurizio Sarri, and the former Ajax defender remains a freakish talent for being so young.
At just 20, he has all the maturity and positional intelligence of a player at his peak, while his physical attributes are second to very few despite the fact he has plenty of room for development.
8. Harry Maguire
Manchester United were decisive in their approach for the former Leicester captain in the summer, but while there remains a feeling that they did perhaps overpay to secure his services, they will certainly not be regretting the decision.
He's been a block of granite at the back throughout the season so far, and will serve as the steady foundation on which they build in the years to come.
7. Milan Skriniar
Another beneficiary of the Conte revolution at Inter, Skriniar was already established as one of the world's leading defenders before the Italian arrived, but he has really hit new heights this season.
He has looked at home on the left of the back three, forging a formidable relationship with the aforementioned Godin and De Vrij, and is another who will only develop further as he approaches his peak.
6. Aymeric Laporte
It speaks to Aymeric Laporte's influence that City's grip on the Premier League title has loosened dramatically while a dodgy knee kept him on the sidelines. He once had grounds to consider himself the best around, and while others have since narrowly ousted him from the top five, few can deny his credentials as one of the very best.
5. Giorgio Chiellini
The Juventus stalwart is one of the all-time greats, and it says everything you need to know that an injury-hit 35-year-old with just a handful of appearances this season under his belt can be included this high up without a single eyebrow being raised.
A bona fide Italian football legend, and he isn't finished yet
4. Gerard Pique
Almost as irreplaceable for Barcelona as Lionel Messi? It's an argument that seems peculiar on the face of it, but when you get into the meat of it, it's hard to argue.
Pique has been an irresistible force and an immovable object all rolled into one over the years for Barca, and he has been a vital steadying influence in a wildly unstable season for the Catalan giants. Over 500 appearances and counting, he's going to take some replacing when he eventually decides to call it quits.
3. Raphael Varane
Varane is playing a crucial role in us have the best defense in all the top 5 leagues. He doesn't get the recognition he deserves for his performances but we are so lucky to have him. The best CB in the world. pic.twitter.com/rAoiEyeDDy
— Andres (@MiIitao) March 2, 2020
With Real Madrid boasting as many recognisable stars as they do, it's hard to give them all the plaudits they deserve, but Varane is one they certainly could not get by without.
In addition to his near-unparalleled defensive abilities, the Frenchman is a serial winner, having won everything there is to win in Madrid while also getting his hands on the World Cup in 2018. He's yet to win the Euros, of course, but you'd be daft to bet against that changing this summer.
Speaking of guys who have won everything, here he is. He's probably made more enemies than he has friends with his uncompromising, rough-and-ready style, and in years to come, when the term 'shithouse' is added to the dictionary, the entry will be accompanied by a picture of Sergio Ramos' cheesing grin.
Whatever you think about Captain España, however, there is no denying that he is effective – both as an extraordinary leader and a bullet-proof defender. Few will ever match the list of honours he has racked up while in the Spanish capital, while the consistency levels he has managed over the course of his prolonged career are perhaps matched only by Lionel Messi and Cristiano Ronaldo.
1. Virgil van Dijk
However, there is only really one contender for top spot. It was expected that Van Dijk would have some job on his hands to live up to his eye-watering £75m fee when he moved to Liverpool in January 2018, but a little over two years on and that once-unthinkable price tag is looking like a drop in the bucket.
The sudden, meteoric improvement he made to the Reds upon his arrival was astounding, and it was no flash in the pan either. He has continued to amaze ever since, and though there has been the odd low point (he likely won't want to go back to Vicarage Road in a hurry) those have been absolutely and unequivocally drowned out by the vertigo-inducing highs.
Virgil van Dijk: "Just end up with the Premier League? Yeah? Just? It's just a small thing is it? We also won the Super Cup and the Club World Cup. In life, there are people that are not always satisfied. I'm focusing on the good things. We are in a very good situation."
— Melissa Reddy (@MelissaReddy_) March 5, 2020
He's as responsible as anyone for their famous Champions League success in Madrid in 2019, and has had no small role to play in a 2019/20 campaign that will see them add the Premier League title to the UEFA Super Cup and the Club World Cup.
He's the undisputed top dog, and it's going to take some effort to move him.
Previous PostPrevious 9 of the Best Moments of Cristiano Ronaldo's Career
Next PostNext Serie A Suspended as Italy Ceases All Sport Due to Coronavirus
Spanish Super Cup: Barca need pens to see off Sociedad
Final candidates in crucial Barca election confirmed
Pochettino claims first PSG win; Messi, Griezmann doubles
Poch's PSG held – 'Mbappe must improve'
Messi 360: The view from all sides


Trend Hunter is one of Canada's most award-winning online businesses and we've entered a new period of rapid growth. In 2014, we more than tripled our staff with the addition of our Trend Advisory service. Every month, top-tier innovators at brands like Adidas, Samsung, Hasbro and Budweiser rely on our cutting edge trend research to find better ideas, faster. We are rapidly expanding, especially in business development, research and sales.
By joining Trend Hunter, you will build skills, have fun, challenge yourself, and learn while getting huge exposure. Writers will build huge portfolios and get millions of views, while business development and research experts will interact with some of the world's most powerful innovators while building new skills and experience. Plus, those who are ambitious will receive full time offers to join our growing, exciting team and the #1 most popular, largest trend spotting website.
All of the internship programs are fully paid positions with an upside to increase your wage based on your work. We've also converted roughly 30 internship positions into full time roles, which, based on your interest, could involve a full time position in writing, research, client relations or other areas of our growing business.
• Wall Street Journal Workplace of the Day "An Office as Hip as Its Occupants"
Within Canada, there is simply no other journalism internship or research job that can compare. While junior people and interns at old-school publications are fetching coffees and making copies, our new teammates are learning the cutting edge of social media and trend research while building their portfolios, interviewing celebrities, attending PR events, starring in videos, enjoying weekly beer parties, and being a part of something epic. And the kicker is that amidst all the good times, your work will get exposure to our massive audience, which is large enough to fill the Air Canada Centre 100 times every month.
Trend Hunter dominates the Canadian media in online traffic, which is important because you'll be learning the skills about how online media works. It can be discouraging as a new grad looking for experience to see that Canada's traditional media outlets lag in the digital world, but this stems from our nation's conservatism in business and education. We're trying to change that by pushing the limits of innovation, teaching you the cutting edge and giving you massive exposure to launch your career.
Our Toronto journalism internship and intro jobs are more like a training program that allow you to build your skills while allowing you to get experience in fashion, technology, advertising, the environment and design. Our junior team members get firsthand experience working at one of the planet's most popular online publications with up to 60,000,000 views per month. After a month or two of curriculum, you'll get to drive exciting projects, which have included: TV scriptwriting, publicity stunt design, attending and covering Fashion Week, PR launch strategies, Trend Report research and interviews with celebrities like: DVF, Adrianna Lima, Candace Swanpoel, Kenny Hotz, the CEO of Rolls Royce and the CEO of Ikea.
The Curriculum - In addition to the hands-on work, you'll go through dozens of seminars on topics including sessions on each of the following: social media, copyright, seo, writing with zest, style zest, top lists, brands, supercharging titles, millennials in the workforce, resume writing, interviewing, online marketing, high traffic articles, writing for speed, advanced grammar (we'll make it fun, don't worry), social good and our feel smarter Friday keynote.org sessions. There are also group workshops, individual project training (based on your interests), and individual feedback sessions.
Feedback & Training - We'll invest time in your skills! In addition to one-on-one feedback sessions and training, you will receive ongoing writing feedback and editing of your work. For a typical internship, this will add up to 40 hours of editing time and feedback per intern, which will help improve your writing skills, boost your variability and sharpen your title skills. We'll also coach you and motivate you to achieve your writing goals.
Those hired into the Business Development program will develop a wide range of sales and research skills as they immerse themselves in Trend Hunter's business model and sales strategies. Our program offers business students the unique opportunity to join a fast-growing consumer research firm while connecting and interacting with C-Suite executives at many of the world's top Fortune 500 companies.
The program is looking for highly ambitious, infectiously positive, creative and determined individuals who are looking to enhance their consumer research knowledge and sales skills.
6 Brands in One = More Opportunity!
Future Festival - Get involved in Future Festival! Trend Hunter's Future Festival is specifically designed to be the world's best innovation conference—a place for the world's top innovators to prototype their future.
Keynotes.org - Get inspired! Followed by more than 150,000 fans, Keynotes.org is a collection of the world's greatest keynote videos and speakers. After her internship, we hired Jaime Neely, to run this brand.
SocialBusiness.org - Save the world! Social Business is dedicated to businesses that have a positive impact on the world. Intern graduate Tiana Reid now manages this brand and its community pages.
TrendReports.com - Make the world a smarter place! We hired intern graduates Taylor Keefe and Jamie Munro to work on developing Trend Reports into a more prominent part of our company.
JeremyGutsche.com - Innovate! Our CEO is an international keynote speaker and an award-winning author working on his next book. His past book included a shout out to the interns that helped add a little salt and pepper to the book's zest!
Learning highly employable social media skills, our journalism interns and video editing interns build huge portfolios, giving them an edge in the competitive world of journalism and digital media.
As you might expect, Trend Hunter's Toronto office exudes cool. Located near Queen and SoHo, the office is a lofty brick and beam open concept space. A media wall, projected scoreboard, beer fridge, fireplace, and British phone booth are just a few examples of how this space is extremely unique (not to mention all of our wonderful Toronto writers, research experts and editors).
At Trend Hunter, our days aren't just about having an awesome time writing stellar articles about the most interesting stuff on the planet. Sometimes we also have fun.
If you really want to know what we're all about, start reading our ebooks! It's a good way to prepare for the Toronto journalism internship or business development interviews.
Apply Now - Interested in Our Internships & Intro Roles?
Trend Hunter does grant college credit, where applicable. You must already be based in Ontario. We offer a set curriculum, workshops and coaching, which requires your availability to work full time (M-F; 8:30-5) in our Toronto office.
Note: Getting a Trend Hunter internship or intro role is a competitive process. You should make yourself very familiar with the website.
Which role are you applying to?
Do you require an internship for school credit?
Important: We love all those who are eager and ambitious... If you want to lock down an internship, you should sign-up as a Trend Hunter today and if you want a writing role, submit a few trends.
Optional: If you're web savvy, we dig it.


text:
The Metropolitan Opera House
Scaffolding the Metropolitan Opera House, Philadelphia, PA The Metropolitan Opera House or Met located at 858 N. Broad Street, Philadelphia (yes, Philly has a Metropolitan – not just NY) is undergoing a $56 Million restoration as a new Live Nation concert venue. The large building that takes up a full city block at Broad and Poplar Streets is being converted into a 3,500 person venue. The main theater will be transformed for seated and standing-only general-admission concerts. Superior Scaffold was brought in by GC, Domus, Inc. to provide access to the entire interior and exterior of the building. And what an enormous job this is. This gigantic theater...
Jefferson Cherry Hill Hospital
Let the Pictures do the talking! Jefferson Cherry Hill Hospital Expansion/Addition 5 stories of system scaffold. Odd shapes and customized layouts on every elevation. Giant dance floor at the top. One incredible job! Superior Scaffold provided the scaffolding for the new 22,000 square-foot atrium/lobby as part of the hospital's expansion/addition at the Cherry Hill campus. And as of this month Kennedy Hospital will be known as Jefferson Cherry Hill Hospital as part of a merger between Jefferson Health and Kennedy Health. The cool thing about this job was the layout. We had to follow the curve of the atrium and unique design of the interior to erect this huge scaffold. There...
Reading Terminal Market – Work Platform
Reading Terminal Market, Giant Work Platform and overhead protection Reading Terminal Market, Philadelphia, PA Superior Scaffold erected a 580 foot long work deck or platform on both sides of the barrel shaped Reading Terminal Market (RTM) so crews could get access to replace the roof. The platform is 5 feet wide by 6 feet High by 580 feet long and allows crews to roll their equipment from the mast climber at one end to their location anywhere along building. Reading Terminal Market is a sprawling, somewhat chaotic indoor farmer's market and food haven where over 100 merchants offer culinary treats, fresh produce and unique...
Restoring the Forrest Theater
Pulling back the curtain for opening night. Restoring the Forrest Theater. Forrest Theater, 1114 Walnut Street Center City area of Philadelphia, Pennsylvania. The Forrest Theater is a beautiful, classic, theater built in 1928 in the Center City area of Philadelphia. Built at a cost of $2,000,000 it was one of architect Herbert J. Krapps more elaborate theaters. It boasted many of the conveniences now expected in modern theaters. The interior is intricately decorated with gilt detailing (silver gilded with gold) and silk fabrics. And that's exactly why Superior Scaffold was brought in. We provided the painting and restoration crews access to the entire perimeter of the theater including the walls, ceiling and all...
Divine Lorraine, Scaffolding & Shoring
Divine Intervention – Scaffolding & Access of Biblical Proportions! This abandoned building is coming back to life. And what I life it's had. This has some absolutely fantastic architecture. Built back in 1892, the Divine Lorraine is going back to its original function - apartments. Back then it housed some of Philadelphia's wealthiest residents and soon will again. Superior Scaffold was brought in as part of the $44 Million redevelopment to provide the scaffolding and shoring support to give crews complete access to the exterior of this 10 story structure. The plan is to create over 100 luxury apartments and 20,000 square feet...
Swing Stages @ St. James
All the world's a stage at the St. James in Washington Square, PA St. James at Washington Square, Philadelphia, PA All the world's a stage at the St. James in Washington Square, PA. At one time we had 8 suspended scaffolds (swing stages) on the exterior of this 45 story high-rise. This good looking apartment complex sits along Walnut St. and W. Washington Square and is the 12th tallest building in Philadelphia. We got crews access to all levels of the exterior for concrete patch work and repainting. If you look carefully, you will see that the first two stories are designed to...
Cantilever Scaffold on 28th Floor
Cantilever Scaffold on 28 Floor, Philadelphia, PA Superior Scaffold was called in to help crews get to the decorative steel structure on the outside of the top of this new building construction at 3601 Market Street. But how could we get them and their equipment out far enough to work safely on this structure at the top of the building? A cantilever scaffold from the floor below. For those of you not familiar with a cantilever system it's basically a way to use leverage to extend out so the weight of the new deck is supported by the floor below. The initial thought was a...
Forever 21, Shoring & Scaffolding
Shoring & Scaffolding, Forever 21 Forever 21 is building out their new location on Chestnut street and decided to enlarge the entrance way and windows on the first few levels. They wanted theirs to look similar to Sephora with lots of light coming in the front of the store. Superior was first called out to provide the scaffolding for the facade restoration - but later provided the shoring when crews realized just how much work it would take to create the new openings. Forever 21 asked if we could add shoring without removing the scaffolding. So we came up with a solution...
Amtrak, 30th Street Station
Amtrak, 30th Street Station Superior Scaffold is proud to be providing scaffolding support for Amtrak's renovation of their 30th St. Station in downtown Philadelphia. The historic building that opened in 1933 will get a much needed facelift. It's an incredible looking structure and can you just imagine what it's going to be like when it's finished? Amtrak wants to make the neoclassical 30th Street Station a more welcoming gateway to West Philadelphia and Center City. The 30th Street Station handles 120 Amtrak trains, 960 SEPTA trains, and 26 NJ Transit trains each weekday. More than four million Amtrak passengers went through...
Seneca Niagara Casino Hanging Work Platform
This was an enormous multipoint suspended platform job. What this project entails is getting crews up underneath the ceiling while the casino remains open for business as usual so they can get the new HVAC and mechanicals installed. The solution came in the form of what is called a multi-point suspended scaffold. It's not only wide, but stable enough to hold equipment, rolling towers, HVAC piping, etc. These giant work platforms actually hang from chains from the arched trusses at the ceiling. It's netted in so nothing can fall off of the sides and its sturdy enough to support just about...


Wadi Makkah Project (41.3 ha), is a mixed development site serving Umm al-Qura University, Macca, KSA, that includes commercial, technology and innovation center and residential blocks. The scope of the landscape master plan was two folds; First, to propose a diversity of treatments for the site open spaces that will showcase the buildings and provide for outdoor amenities and green areas; Second, to propose landscape development guidelines.
The landscape master plan provides for three distinct Landscape Character Zones (Desert, Oasis and Wadi) that form the basis for the landscape concept that is responsive to the local/regional character. The ecological methodology applied ensures that the landscape is environmentally and ecologically sustainable.
'Landscape Development Guidelines' proposed were organized by sector with three parametrics: 'Sector Landscape Planning Guidelines'; 'Sector Landscape Design Guidelines'; and 'Parcel Specific Guidelines'. Refer also to Wadi Makkah Detailed Master Plan.


text:
Bennington County news
Brattleboro Reformer
MANCHESTER, VT.
-4.0°, FAIR	Forecast
Christian Coyle, of Ireland but is based out of North Salem, New York, competes in last year's Vermont Summer Festival in East Dorset.
PHOTO provided BY LINDSAY BROCK - JUMP MEDIA
Candice King of Long Valley, New Jersey, and Calisto 26 compete at the Vermont Summer Festival in East Dorset.
PHOTO BY LINDSAY BROCK - JUMP MEDIA
State's biggest horse competition is back
Posted Wednesday, July 3, 2019 4:15 pm
By Tiffany Tan, Manchester Journal
DORSET — The Vermont Summer Festival, an annual equestrian event that infuses millions of dollars into the local economy, is back in town.
Billed by organizers as New England's largest hunter/jumper competition and Vermont's biggest in prize money, the six-week festival features hunter, equitation and show-jumping contests. All the events are being held through Aug. 11 at the Harold Beebe Farm in East Dorset.
Now on its 26th year, the festival attracts thousands of participants from home and abroad. They span equestrian athletes from the pony ranks to the grand prix.
Last year, according to a survey by the University of Vermont Center for Rural Studies, the event drew nearly 4,000 people. They accounted for about 44 percent of equine-event attendees in the state, who altogether spent $15.5 million.
The Vermont Summer Festival, specifically, leaves a "$20 million footprint" in Dorset from participant spendings on lodging, food, as well as local goods and services, said town manager Rob Gaiotti.
Many participants, he said, stay for the event's entire six weeks.
People often lodge either in Dorset or the neighboring town of Manchester, where they also dine out, shop and enjoy other outdoor activities, said Vermont Summer Festival spokeswoman Lindsay Brock.
Each year, the festival offers around $750,000 in prize money, including $30,000 for the Grand Prix contests held on the first five Saturdays of the circuit. The season culminates in a $50,000 Grand Prix on the last Saturday, which is happening on Aug. 10 this year.
Some 500 to 1,000 horses participate in events each week, with three to five people accompanying each horse, such as riders and trainers. Though most attendees come from the East Coast, there are also international competitors, particularly in the Grand Prix, Brock said.
The festival is one of the highlights of summer for communities in the Northshire, said Matt Harrington, executive director of the Bennington Area Chamber of Commerce.
It's among nearly 20 marquee festivals in Bennington County — including the Green Mountain Bluegrass & Roots Festival, the Peru Fair, the Summer HomeBrew Festival, the Art and Craft Festival and the Garlic Fest — that Harrington said has earned the area the label of "Festival Region."
"We have an eclectic, very Southern Vermont-style of festivals. There is something for everyone," he said. "We find that if you can provide good food, good drinks and good entertainment, that's what people will travel over 100 miles for."
Horse shows in the state, which take place in summer and fall, bring "considerable" benefits to the area, said Jim Sullivan, executive director of the Bennington County Regional Commission.
"They bring visitors to the area, revenues for local businesses, raise some money and elevate the profile of the entire region," Sullivan said.
The Vermont Summer Festival, which opened Tuesday, runs from Wednesday to Sunday beginning at 8 a.m. The Beebe Farm is located at 2971 U.S. Highway 7.
Admission is $6 for adults and $3 for children from Wednesday through Friday. On weekends, admission is $9 for adults and $5 for children. This year, ticket sales benefit the Dorset Equine Rescue, The Dorset School and the Manchester Community Library. For more details, visit VT-summerfestival.com.
Tiffany Tan can be reached at ttan@benningtonbanner.com, @tiffgtan on Twitter and 802-447-7567 ext. 122.
A year of change in the Northshire
Winter storm warning includes dangerous mix of snow, sleet, ice — 'travel could be impossible'
Semi drivers unhurt in East Dorset truck crash
Breaking: Early morning crash slows traffic in Dorset
© , The Manchester Journal
Buy Journal photos


text:
Daniel Horton Quotes
We did everything we could to try and prevent it. But in that situation, it's tough when a person challenges you. It's an iffy situation.
Daniel Horton
#Challenges
When you have a guy who can knock down shots like that, it's not hard to develop chemistry with him. You just have to find him when he's open. Ron has really stepped up and played well. He's made shots and rebounded well from the wing.
#Chemistry
We knew we had to make a commitment to play defense and that's what we talked about at our meeting. If we play defense like we played tonight we're very tough to beat.
#Commitment
We've always believed. We feel we have the pieces to be a really good basketball team, and it's just a matter of us going out and doing it.
I think you'll see them in more of a flow this game. We'll have better chemistry. As far as working those guys in, hopefully, it can do wonders for our team as far as taking care of the ball with two seniors back and then get good shots on offense and be a better defensive team as well.
I just wanted to do what it took to win. I gotta give my teammates all the credit. I shot well but I never really felt in a groove because there weren't any tough shots. I was open most of the time.
People were expecting a lot of things from this team, and they don't realize, before we got here, they were winning 11 games and facing NCAA sanctions. They wanted national championship success right away, and we knew it wasn't going to be like that. It was going to be a long grind and process. We've done that really well, to the point where we expect to win.
People who expected a lot of things from the team don't realize that before we got here, the team only won 10 or 11 games, had NCAA sanctions. And people wanted national championship success right away. We knew it wasn't going to be like that. We knew it was going to be a long grind and a process. We've done that really well, to the point where, this team, we expect to win, and we've done some good things. It's been a great ride.
We just have to be ready to take care of business Thursday in the Big Ten tournament. We're not worried about the NCAA tournament.
We didn't do what we should have. We put our future in the hands of someone else.
#Future
We weren't strong enough, and they made savvy plays. Vincent is a great player, and the defense of their whole team was great.
#Defense
I don't think this season is a disappointment. But of course we're disappointed that we didn't make the NCAA Tournament. But this season isn't a disappointment at all, especially from where we've had to battle through (adversity) the whole season and where we've come back from last year.
#Disappointment
I feel like I can create shots for myself and other people in situations like that because of my size, strength and quickness. I just try to get the ball and make a play.
We had to step back and re-focus. We had to accept the situation we were in, and not look for somebody else to blame, and then move on. We still had games to play, and the opportunity to compete for a championship.
#Focus
I think we've done a great job of building a legacy.
#Job #Legacy
It's tough to put it into words, but I know we battled, we battled as a team. The one thing I do know is that despite losing tonight, after everything we've been through as a program, no matter what people say and no matter what people do, this program is going to continue to move forward. I feel that in my heart.
#Heart
We have a lot of talent on the perimeter to be able to withstand a blow like that, but any time you're without Lester, with his toughness and his drive and his competitiveness, it's going to hurt.
#Competitiveness #Perimeter #Toughness
We have a better team than we did then. We have a better chance of doing some of the things that we want to do. When we were freshmen, we were just playing well at the time, and we wanted to ride it as long as we could. Now we have a team that can continue to play well and continue to compete for the championship.
#Freshmen
We were all kind of worried about him. But we had to go on with the game.
At first, the conversation was friendly. But after that the guy came up to me and said something to me and I could smell alcohol on his breath. I don't know. It was a crazy situation. I've never seen anything like it.
#Alcohol And Alcoholism


Style Steals: Graphic Sweatshirts ONLY $22.95 and Free Shipping!
I'm a lover of some fabulous GRAPHIC tees and shirts and sweats! I think it's always a cute way to express how you feel through your clothing and fashion style. Cents of Style has some awesome style steals right now that I just needed to share with you!
What's the DEAL right now?? Style Steals: Graphic Sweatshirts!!
As you know, I'm *kinda* obsessed with HUSTLE anything! When I saw "Respect the Hustle" on a sweatshirt I nearly fainted! This. Is. It. It's awesome and I couldn't wait to share it with everyone!
And then I saw the other style steals, too!
You're an ORIGINAL BABY… never forget that, wear it proud!!
And you're also ONE OF A KIND… never forget that either! Wear it bold and wear it with a smile!
But Respect the Hustle had me at HELLO! It's everything and I just love it!
Style Steals – 10/01/18 – NEW STYLES! Graphic Sweatshirts ONLY $22.95! + FREE Shipping W/CODE: ONESTEAL !!
Why is it important to HUSTLE?
Give yourself permission to do so!
See my other Cents of Style deals that I've blogged about here, too!
I love these sweatshirts – especially One of a Kind.
Impressive looking sweatshirts many people will enjoy to own.


text:
Deals: Adorama Introduces New Low Prices on 32GB Apple TV 4K ($159) and AirPods Max ($449)
Tuesday October 5, 2021 7:27 AM PDT by Mitchel Broussard
Adorama today has a collection of deals on select Apple products, including the AirPods Max, Apple TV 4K, and M1 MacBook Pro.
Note: MacRumors is an affiliate partner with Adorama. When you click a link and make a purchase, we may receive a small payment, which helps us keep the site running.
You can get the 32GB Apple TV 4K for $159.00, down from $179.00. This is a new all-time low price on this model of the Apple TV 4K, and right now it's only available at Adorama.
The 32GB Apple TV 4K is currently on backorder right now, but you can still order the device (with free shipping available for most orders) and Adorama will ship it out when stock returns.
2021 Apple TV 4K (32GB) for $159.00
At this time, the 64GB Apple TV 4K isn't on sale on Adorama, although Amazon does have the device for $189.98, down from $199.00. This is a second best price, but it has been the most consistent offer on the 2021 64GB Apple TV 4K.
Although the sales on these Apple TV models aren't particularly steep, they are the best offers around and worth checking out if you're still on the market for the newest Apple TV 4K. You can keep an eye out on Apple TV deals in our Best Apple TV 4K Deals guide.
Secondly, Adorama has Apple's AirPods Max headphones down to a new all-time low price of $449.00, down from $549.00. This is the first $100 off discount we've tracked on the headphones from a major Apple reseller.
AirPods Max for $449.00
This sale price is available in all AirPods Max colors: Space Gray, Sky Blue, Silver, Green, and Pink. All models are in stock and ready to ship out today.
Adorama also has the M1 13-inch MacBook Pro (16GB, 1TB SSD) for $1,699.00, down from $1,899.00. This is a higher-end configuration we haven't seen many deals on in the past, but readers should remember we are also expecting new MacBook Pro models somewhat soon.
Our full Deals Roundup has more information on the latest Apple-related sales and bargains.
Related Roundups: Apple TV, Apple Deals
Buyer's Guide: Apple TV (Neutral)
Related Forum: Apple TV and Home Theater
I've said it before and I'll say it again. I would not recommend doing business with Adorama. Just look up their ratings.
customer-reviews ('https://www.bbb.org/us/tx/houston/profile/advance-fee-job-listing-and-advisory-services/adorama-inc-0915-90019094/customer-reviews')
https://www.consumeraffairs.com/cameras/adorama.html
https://www.trustpilot.com/review/www.adorama.com
i'm a photographer and they've always been fantastic for me. just like B&H
Gwea22
I should also note that I've never heard of those two consumer review websites.
if only this meant a new and improved Apple TV was on the way lol
hellosil
Amazon.nl has AirPods Max Pink for $382 (excluding vat) for months now.
(In Euros that's €399 including vat, Apple's price is €629.)
It's the Apple product I currently love the most.
what do you really need the Apple TV to do though? I have the 4K model from last year. The new they launched gave me no reason to upgrade.
I have the original 4k from 2017 as well. the new one was just a really boring update I don't see much need for. Just miss when apple innovated and didn't play it so safe. Everyone was expecting the new one to be more like a game console
Deals: 32GB Apple TV 4K Gets New Low Price of $149.99 on Amazon
Friday December 10, 2021 7:45 am PST by Mitchel Broussard
Today we're tracking a new Amazon low price on the 2021 32GB Apple TV 4K, available for $149.99, down from $179.00. This $29 discount is now the lowest price we've ever seen on this model of the Apple TV 4K. Note: MacRumors is an affiliate partner with Amazon. When you click a link and make a purchase, we may receive a small payment, which helps us keep the site running. The Apple TV 4K is...
Deals: Get the Lowest Price on the 2021 32GB Apple TV 4K, Available for $169 ($10 Off)
Wednesday September 8, 2021 10:29 am PDT by Mitchel Broussard
Today we're tracking the best discount seen to date on the 2021 Apple TV 4K, which provides up to $10 in savings on the 32GB and 64GB models. Starting with the 32GB Apple TV 4K, you can get this model for $169.00, down from $179.00. This is a match of the previous all-time low price on this model, and it's been the most consistent deal this summer. Note: MacRumors is an affiliate partner with...
Deals: Amazon Discounts 32GB Apple TV 4K to Match All-Time Low Price of $159.99 ($19 Off)
Tuesday October 12, 2021 6:19 am PDT by Mitchel Broussard
Today we're tracking a new Amazon low price on the 2021 32GB Apple TV 4K, available for $159.99, down from $179.00. This $19 discount is a match of the same all-time low price we saw last week, and it's the first time we've seen the deal on Amazon. Note: MacRumors is an affiliate partner with Amazon. When you click a link and make a purchase, we may receive a small payment, which helps us keep ...
Deals: Shop All-Time Low Prices on 2021 Apple TV 4K Models, Starting at $169 for 32GB ($10 Off) [Updated]
Wednesday July 21, 2021 7:23 am PDT by Mitchel Broussard
Today we're tracking the best discount seen to date on the 2021 Apple TV 4K, which provides up to $19 in savings on the 32GB and 64GB models. Starting with the 32GB Apple TV 4K, you can get this model for $169.00, down from $179.00. This beats the previous record low price by $1. Note: MacRumors is an affiliate partner with Amazon. When you click a link and make a purchase, we may receive a...
Deals: 2021 Apple TV Models Get First Discount, 32GB 4K Model Down to $169.98 ($9 Off)
Thursday June 17, 2021 10:44 am PDT by Mitchel Broussard
Today we're seeing the first straight cash discount on the 2021 Apple TV 4K, with $9 in savings on both the 32GB and 64GB models. Starting with the 32GB Apple TV 4K, you can get this model for $169.98, down from $179.00. Note: MacRumors is an affiliate partner with Amazon. When you click a link and make a purchase, we may receive a small payment, which helps us keep the site running. You...
Cyber Monday: Original Apple TV 4K Drops to $99.99 for Amazon Prime Members
Monday November 29, 2021 12:01 pm PST by Mitchel Broussard
We've been tracking Apple product and accessory deals for Cyber Monday 2021 today, and now Woot is offering a solid discount on the previous generation 32GB Apple TV 4K. You can get this device in new condition for just $99.99 if you're an Amazon Prime member. Note that this sale will last for one day only. Note: MacRumors is an affiliate partner with some of these vendors. When you click a...
Deals: B&H Photo Discounts Previous Generation 32GB Apple TV 4K to $119.95 ($59 Off)
Thursday November 11, 2021 10:06 am PST by Mitchel Broussard
B&H Photo today has Apple's previous generation 32GB Apple TV 4K for $119.95, down from $179.00. This sale will last one day only, and expires later tonight. Note: MacRumors is an affiliate partner with some of these vendors. When you click a link and make a purchase, we may receive a small payment, which helps us keep the site running. B&H Photo's deal is a match of the all-time best price ...
Deals: 32GB Apple TV 4K Gets Rare Discount, Available for $149.99 on Amazon ($29 Off)
Thursday February 4, 2021 6:35 am PST by Mitchel Broussard
Amazon today is discounting the 32GB Apple TV 4K to $149.99, down from $179.00. It's been months since we've seen any solid discounts on the Apple TV 4K, so Amazon's $29 markdown today is noteworthy if you're looking to purchase an Apple TV in early 2021. Note: MacRumors is an affiliate partner with Amazon. When you click a link and make a purchase, we may receive a small payment, which helps...
'Yu-Gi-Oh! Master Duel' Is Out Now on PC and Consoles, Coming to Mobile at a Later Date With Cross Platform Progression


This card shows off the new 2013-2015 In Colors by using the In Color card stock and designer series paper stacks punched out using the Curly Label and Bitty Butterfly punches. The stamp is from "Lots of Thanks" stamp set. It's a beautiful card!