
fm = document.rainwaterForm;

var fieldsToSum = new Array(		new Array(	"fltShowerTotal"	, "blnIncludeFltShowerTotal"	), 	
									new Array(	"fltBathTotal"		, "blnIncludeFltBathTotal"		),
									new Array(	"fltToiletTotal"	, "blnIncludeFltToiletTotal"	),
									new Array(	"fltGardenTotal"	, "blnIncludeFltGardenTotal"	),
									new Array(	"fltDishesTotal"	, "blnIncludeFltDishesTotal"	), 
									new Array(	"fltWashingTotal"	, "blnIncludeFltWashingTotal"	),
									new Array(	"fltCarTotal"		, "blnIncludeFltCarTotal"		)
							);


function getRadioValue(sName) {
	
	var sVal="";
	
	for (var i=0; i < fm[sName].length; i++) {
		if (fm[sName][i].checked) {
			sVal = fm[sName][i].value;
		}
	}
	
	return sVal;
	
}


function round2DP(sVal) {
	
	if ((sVal=="") || (sVal==null)) {
		
		return 0;
		
	} else {
	
		return (Math.round(sVal*100)/100);
		
	}
	
}


function doComputeTotalMonthlyUsage(bCheckBox) {
	
	// bCheckBox - whether to check the status of the checkbox for each total
	
	var fTotal = 0;
	var sCurrentField="";
	
	if (fm['blnAccurateWaterUsage'].checked) {
		
		fTotal = parseInt(fm['intAccurateMonthlyUsage'].value,10);
		
	} else {
				
		for (var i=0; i < fieldsToSum.length; i++) {
			
			if (bCheckBox) {
				if (fm[fieldsToSum[i][1]].checked) fTotal += parseFloat(fm[fieldsToSum[i][0]].value,10);
			} else {
				fTotal += parseFloat(fm[fieldsToSum[i][0]].value,10);
			}
			
		}
		
	}
	
	if (bCheckBox) {
		fm['fltMonthlyTotal'].value =  Math.round(fTotal);
	} else {
		return fTotal;
	}
	
}


function doCheckNumericInput(objX) {
	
	var sVal = objX.value;
	
	if (sVal=="") {
		
		objX.value = "0";
		
	} else {
		
		var ValidChars = "0123456789.", IsNumber=true, Char;
	
		for (var i=0; i < sVal.length && IsNumber == true; i++) { 
		  
		  Char = sVal.charAt(i); 
		  if (ValidChars.indexOf(Char) == -1) IsNumber = false;
		  
		}
		
		if (!IsNumber) {
			
			objX.value = "0"; // not a numeric, reset to zero.
			
		} else { // numeric
		
			if (objX.name=="intDiscountFactor") { // must be between 0 and 100 inclusive (%)
			
				if (parseFloat(sVal,10)>100) {
					alert("Must enter a valid percantage between 0 and 100");
					objX.value = "0";
					
				}
				
			}
			
		}
		
	}
	
	doComputeTotals();
	
}



function doComputeTotals() {
	
	getShowerMonthlyUsage();
	getBathMonthlyUsage();
	getToiletMonthlyUsage();
	getCarWashMonthlyUsage();
	getDishesMonthlyUsage();
	getClothesWasherMonthlyUsage();
	getGardenMonthlyUsage();
	
	doComputeTotalMonthlyUsage(true);
	doComputeGraph();
	
}


function getShowerMonthlyUsage() {
	
	var flowType = getRadioValue("strShowerFlow");
	var flow = 0;
	
	if (flowType=="Low Flow") {
		
		flow = 8.5;
		
	} else if (flowType=="Standard Flow") {
		
		flow = 15;
		
	}
	
	fm['fltShowerTotal'].value = Math.round( (((flow * parseFloat(fm['intShowerLength'].value,10) * parseFloat(fm['intShowersPerPersonPerWeek'].value,10)) * 52) / 12.0) * (parseFloat(fm['intNumPeopleInHousehold'].value,10)) );

}


function getBathMonthlyUsage() {
	
	var bathPtg = fm['strBathUsage'].value;
	var fPercent=0;
	
	if (bathPtg=="Less than 1/4 Full") {
		
		fPercent = 0.25;
		
	} else if (bathPtg=="1/4 - 1/2 Full") {
		
		fPercent = 0.50;
		
	} else if (bathPtg=="1/2 - 3/4 Full") {
		
		fPercent = 0.75;
		
	} else if (bathPtg=="More than 3/4 Full") {
		
		fPercent = 1.0;
		
	}
	
	fm['fltBathTotal'].value =  Math.round( (((fPercent * parseFloat(fm['intBathSizeLitres'].value,10) * parseFloat(fm['intBathsPerPersonPerWeek'].value,10)) * 52) / 12.0) * (parseFloat(fm['intNumPeopleInHousehold'].value,10)) );
	
}


function doChangeToiletCisternYear() {
	
	var bDual = false;
	
	if ((fm['strToiletYear'].value).indexOf("Dual Flush") != -1) bDual = true;
	
	if (bDual) {
		fm['intToiletHalfFlushPPPD'].disabled = false;
	} else {
		fm['intToiletHalfFlushPPPD'].disabled = true;
		fm['intToiletHalfFlushPPPD'].value = 0;
	}
	
	document.getElementById("toiletCapacity").innerHTML = fm['strToiletYear'].value;
	
	doComputeTotals();
	
}


function getToiletMonthlyUsage() {
	
	var toiletSize = fm['strToiletYear'].value;
	var iSize=0;
	
	if (toiletSize=="13 Litres") {
		
		iSize = 13;
		
	} else if (toiletSize=="11 Litres") {
		
		iSize = 11;
		
	} else if (toiletSize=="11 Litres/5 Litres Dual Flush") {
		
		iSize = 11;
		
	} else if (toiletSize=="9 Litres/4.5 Litres Dual Flush") {
		
		iSize = 9;
		
	} else if (toiletSize=="6 Litres/3 Litres Dual Flush") {
		
		iSize = 6;
		
	}
	
	fm['fltToiletTotal'].value =  Math.round(  ((((iSize * parseFloat(fm['intToiletFullFlushPPPD'].value,10)) 
											+ ((iSize/2.0) * parseFloat(fm['intToiletHalfFlushPPPD'].value,10)))
								    		* 365 ) / 12.0 ) * (parseFloat(fm['intNumPeopleInHousehold'].value,10)) 	);
										 
	
}


function getCarWashMonthlyUsage() {
	
	fm['fltCarTotal'].value =  Math.round(		parseFloat(fm['intCarWashingStandardBucket'].value,10)	
											* 	parseFloat(fm['intCarWashingWashesPerMonth'].value,10)
											* 	parseFloat(fm['intCarWashingBucketsPerWash'].value,10)		);
	
	
}


function doChangeDishwasherType() {
	
	if (fm['strDishWasherType'].value=="No Dishwasher") {
		
		fm['intDishesCycles'].value = 0;
		fm['intDishesCycles'].disabled = true;
		
	} else {
		
		fm['intDishesCycles'].disabled = false;
		
	}
	
	doComputeTotals();
	
	
}



function getDishesMonthlyUsage() {
	
	var fLitres = 0;
	
	if (fm['strDishWasherType'].value=="No Dishwasher") {
		
		fLitres = 0;
		
	} else if (fm['strDishWasherType'].value=="AAA Rated Dishwasher") {
		
		fLitres = 18;
		
	} else if (fm['strDishWasherType'].value=="Standard Dishwasher") {
		
		fLitres = 40;
		
	}
	
	fm['fltDishesTotal']. value =  Math.round( (((( parseFloat(fm['intDishesSinkSize'].value,10) * parseFloat(fm['intDishesHandWashes'].value,10) )
										+ (fLitres * parseFloat(fm['intDishesCycles'].value,10))) * 52) / 12.0)	);
	
}



function getClothesWasherMonthlyUsage() {
	
	var machineType = getRadioValue("strWashingMachineType");
	var fLitres = 0;
	
	if (machineType=="Front Loader") {
		
		fLitres = 60;
		
	} else if (machineType=="Top Loader") {
		
		fLitres = 95;
		
	} else if (machineType=="Water Efficient Top Loader") {
		
		fLitres = 60;
		
	}
	
	
	fm['fltWashingTotal'].value =  Math.round(  ((( parseFloat(fm['intWashingMachineLoadsPerWeek'].value,10) * fLitres ) * 52 ) / 12 )		);
	
	
}


function doChangeGardenSprinklerFrequency(objX) {
	
	doCheckNumericInput(objX);
	
	if (fm['intGardenSprinklerFrequency'].value=="0") {
		
		fm['intGardenSprinklerDuration'].value = 0;
		fm['intGardenSprinklerDuration'].disabled = true;
		
	} else {
		
		fm['intGardenSprinklerDuration'].disabled = false;
		
	}
	
	doComputeTotals();
	
}

function doChangeGardenHoseFrequency(objX) {
	
	doCheckNumericInput(objX);
	
	if (fm['intGardenHoseFrequency'].value=="0") {
		
		fm['intGardenHoseDuration'].value = 0;
		fm['intGardenHoseDuration'].disabled = true;
		
	} else {
		
		fm['intGardenHoseDuration'].disabled = false;
		
	}
	
	doComputeTotals();
	
	
}


function doChangeGardenDrippersFrequency(objX) {
	
	doCheckNumericInput(objX);
	
	if (fm['intGardenDrippersFrequency'].value=="0") {
		
		fm['intGardenDrippersDuration'].value = 0;
		fm['intGardenDrippersDuration'].disabled = true;
		
	} else {
		
		fm['intGardenDrippersDuration'].disabled = false;
		
	}
	
	doComputeTotals();
	
	
}



function doChangeGardenNumberOfDrippers(objX) {
	
	doCheckNumericInput(objX);
	
	if (fm['intGardenNumberOfDrippers'].value=="0") {
		
		fm['intGardenDrippersFrequency'].value = 0;
		fm['intGardenDrippersFrequency'].disabled = true;
		
		fm['intGardenDrippersDuration'].value = 0;
		fm['intGardenDrippersDuration'].disabled = true;
		
	} else {
		
		fm['intGardenDrippersFrequency'].disabled = false;
		
	}
	
	doComputeTotals();
	
}


function getGardenMonthlyUsage() {
	
	var uSprinkler = round2DP(		parseFloat(fm['intGardenHoseFlowRate'].value,10) * 60 
								* 	parseFloat(fm['intGardenSprinklerFrequency'].value,10) 
								* 	parseFloat(fm['intGardenSprinklerDuration'].value,10)			);
	
	var uBucket = round2DP(		parseFloat(fm['intCarWashingStandardBucket'].value,10) 
							  * parseFloat(fm['intGardenBucketFrequency'].value,10)		);
	
	var uDripper = 	round2DP(		parseFloat(fm['intGardenDripperFlowRate'].value,10) 
								* 	parseFloat(fm['intGardenNumberOfDrippers'].value,10) 
								* 	parseFloat(fm['intGardenDrippersFrequency'].value,10) 
								* 	parseFloat(fm['intGardenDrippersDuration'].value,10)		);
	
	var uHose = 	round2DP(	parseFloat(fm['intGardenHoseFlowRate'].value,10) * 60 
							  * parseFloat(fm['intGardenHoseFrequency'].value,10) 
							  * parseFloat(fm['intGardenHoseDuration'].value,10)		);
	
	
	fm['fltGardenTotal'].value =  Math.round(	(((uSprinkler + uBucket + uDripper + uHose) * 52) / 12.0)	);
	
}

function removeChildNodes(ctrl) {  
	while (ctrl.childNodes[0]) {    
		ctrl.removeChild(ctrl.childNodes[0]);  
	}
}

function doCheckPostCode() {
	
	if (fm['currentPostCode'].value == fm['strPostCode'].value) { // no change made
		return; // ignore
	}
	
	fm['currentPostCode'].value = fm['strPostCode'].value; // store current value
	
	if ( (fm['strPostCode'].value=="")||(!isInt(fm['strPostCode'].value)) ) {
		
		alert("A valid postcode is required.");
		
	} else {
		
		removeChildNodes(document.getElementById("postCodeLookUpPanel"));
		
		var newIFrame = document.createElement("iframe");
		newIFrame.style.display = 'none';
		newIFrame.src = "/scripts/fetchrainfalldata.asp?PostCode=" + fm['strPostCode'].value;
		
		document.getElementById("postCodeLookUpPanel").appendChild(newIFrame);
		
		
	}
	
}

function doComputeGraph() {
	
	var sVal = fm['strPostCode'].value;
	
	if ((sVal=="")||(sVal==null)) {
		return; // no entry, just ignore
	}
		
	var arrData = fm['suburbRainfallData'].value.split("~");
	var fltDiscFactor = parseFloat(fm['intDiscountFactor'].value,10);
	
	for (var i=0; i < arrData.length; i++) {
		if (fltDiscFactor>0) {
			arrData[i] = arrData[i] * (1-(fltDiscFactor/100));
		}
		arrData[i] = Math.round(arrData[i]); // round all decimal values.
	}

	document.getElementById('placeholder').style.height='120px';
		
	var dateToday = new Date();
	aMonth = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
		
	var aTicks = new Array();	// month ticks
		
	var d1 			= new Array();		// rainfall data
	var d2 			= new Array();		// what's in the tank (collected)
	var textData 	= new Array(); 		// data for table
	var aMonthUsage = new Array();		// usage for this month
		
	var idx=0;
		
	var totalCapacity = parseFloat(fm['intTankSize'].value,10);
		
	var fltPrevCapacity=0, fltCurrCapacity=0;

	for (var i=0; i < arrData.length; i++) {
			
		idx = ((dateToday.getMonth() + i) % 12);
		d1[i] = [i, round2DP((parseFloat(arrData[idx],10) * parseFloat(fm['intCatchmentAreaM2'].value,10)))];
			
		if (i==0) {
			fltPrevCapacity=0; // no previous month, hence zero
		} else {
			fltPrevCapacity = d2[i-1][1];
		}
		
		if (i==0) {
			aMonthUsage[i] = 0;
		} else {
			aMonthUsage[i] = parseFloat(fm['fltMonthlyTotal'].value,10);
		}
		
		fltCurrCapacity = d1[i][1] + fltPrevCapacity - aMonthUsage[i];
		if (fltCurrCapacity>totalCapacity) fltCurrCapacity = totalCapacity ; // can't exceed capacity
		//fltCurrCapacity = fltCurrCapacity - parseFloat(fm['fltMonthlyTotal'].value,10);
		if (fltCurrCapacity<0) fltCurrCapacity =0;
						
		d2[i] = [i, fltCurrCapacity];
		aTicks[i] = [i, aMonth[idx]];
			
		textData.push( 	new Array(arrData[idx], fm['intCatchmentAreaM2'].value, fltPrevCapacity		) );
																				 
	}
		
	var sHTML="", sNote="", sCurrentVolume="", iFullCount=0;
		
		
	//sHTML += "<span class=\"content\"><hr>Periods during which the available water tank capacity is at a maximum are highlighted blue. "
	//sHTML += "<br>Periods during which the available water tank capacity is empty are highlighted red.<br></span><br>";
		
	sHTML += "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";
	sHTML += "<tr>";
		
	sHTML += "<td width='25%' class='InfoTable_top_left_curve'>Month</td>";
	sHTML += "<td width='25%' class='InfoTable_top_right'>Rainfall</td>";
	sHTML += "<td width='25%' class='InfoTable_top_right'>Usage</td>";
	sHTML += "<td width='25%' class='InfoTable_top_right'>Water in tank</td>";
		
	sHTML += "</tr>";
		
	var aOver 	= new Array();
	var aUnder 	= new Array();
	var sRainfallToolTip = "";

	for (var i=0; i < aTicks.length; i++) {
			
		sHTML += "<tr>";

		sRainfallToolTip = textData[i][0] + "mm mean rainfall  x " + textData[i][1] + "m2 catchment = " + d1[i][1] + " litres";

		sHTML += "<td class='InfoTable_content_left'>" + aTicks[i][1] + "</td>";
		sHTML += "<td title='" + sRainfallToolTip + "' class='InfoTable_content_middle'>" + d1[i][1] + "</td>";
		sHTML += "<td class='InfoTable_content_middle'>" + aMonthUsage[i] + "</td>";
			
		sNote="";
			
			
		if ((d2[i][1]==0) || (totalCapacity==0)) {
				
			sNote = "Empty";
			sCurrentVolume="";
				
		} else if (d2[i][1] == totalCapacity) {
				
			sNote = " (Full)";
			sCurrentVolume = totalCapacity;
			iFullCount++;
				
		} else {
				
			sCurrentVolume = Math.round(d2[i][1]);
				
		}
			
		if (i==0) {
			if ( d1[i][1] - parseFloat(fm['fltMonthlyTotal'].value,10) > totalCapacity) {
				aOver[i] = d1[i][1] - parseFloat(fm['fltMonthlyTotal'].value,10);
			} else {
				aOver[i] = 0;
			}
				
		} else {
			aOver[i] = d2[i-1][1] + d1[i][1] - parseFloat(fm['fltMonthlyTotal'].value,10) - totalCapacity;
		}
			
		if (aOver[i]<0) aOver[i]=0;
			
		if (i==0) {
			if (d2[i][1]>0) {
				aUnder[i] = 0;
			} else {
				aUnder[i] = parseFloat(fm['fltMonthlyTotal'].value,10) - d1[i][1]; //parseFloat(fm['fltMonthlyTotal'].value,10);
				//alert(d2[i][1] + "-" + d1[i][1] + "=" + aUnder[i]);
			}
		} else {
			aUnder[i] = parseFloat(fm['fltMonthlyTotal'].value,10) - (d2[i-1][1] + d1[i][1]);
		}
			
		if (aUnder[i]<0) aUnder[i]=0;
			
		if (i==(aTicks.length-1)) {
			sHTML += "<td class='InfoTable_bottom_right_curve'>" + sCurrentVolume + sNote + "</td>";
		} else {
			sHTML += "<td class='InfoTable_content_right'>" + sCurrentVolume + sNote + "</td>";
		}
			
			
		sHTML += "</tr>";
			
	}
		
	sHTML += "</table>";
	sHTML += "<br>";

	sHTML += "<span class=\"BlackText\">";
	sHTML += "Note: Above table assumes rain water usage starts one month after installation."
	sHTML += "</span><br><br>";

	var yearConsumption = Math.round(parseInt(doComputeTotalMonthlyUsage(false),10) * 12);

	// compute totals
	var sum1 = 0, sum2 = 0, sum3 = 0;
	for (var i=0; i < aTicks.length; i++) {
		sum1 += d1[i][1];
		sum2 += aOver[i];
		sum3 += aUnder[i];
	}
		
	sum1 = Math.round(sum1);
	sum2 = Math.round(sum2);
	sum3 = Math.round(sum3);
		
	var rainCollection = (sum1-sum2);
	if (rainCollection<0) rainCollection=0;
		
	var savings = (yearConsumption - sum3);
	if (savings<0) savings=0;
	
	var pctSavings = 0;
	if (yearConsumption!=0) pctSavings = Math.round((savings / yearConsumption) * 100);
	
	sHTML += "Annual rainfall collection: " + FormatNumberBy3(rainCollection) 	+ " litres<br>";
	sHTML += "Annual consumption: " 		+ FormatNumberBy3(yearConsumption)	+ " litres<br>";
	sHTML += "Annual saving: " 				+ FormatNumberBy3(savings) 			+ " litres";
	
	if (pctSavings!=0) sHTML += "<br>Percantage saved: " + pctSavings + "%";
	
	sHTML += "<br>";
		
	fm['annualRainfallCollection'].value 	= rainCollection;
	fm['annualConsumption'].value 			= yearConsumption;
	fm['annualWaterSaving'].value 			= savings;

	if (iFullCount>=2) {
			
		sHTML += "<br><span class=\"BlackText\">We recommend you choose a larger tank, as the current selection results in an excessive period over which the tank is at full capacity.</span>";
			
	}
			
			
		
	document.getElementById("tableplaceholder").innerHTML = sHTML;
		
	var options = {
			
		lines: 	{ 	show: true, fill: true },
		points: { 	radius: 1 },
		xaxis: 	{ 	mode:"time", ticks: aTicks },
		legend: { 	show: true,
					container: document.getElementById("lengendplaceholder")
				}
					
	};
	
		$.plot($("#placeholder"), [ { label: "Rainfall catchment for " + fm['stationName'].value, color:"#99CCFF", data: d1, points: { show: true, fill: true } },
								    { label: "Water in tank", color:"#3333FF", data: d2, points: { show: false, fill: true } }	], 
									options);
	
	document.getElementById("nearestStationNameRow").style.display="";
	document.getElementById("rainfallDataNote").style.display="";
	document.getElementById("rainfallDiscountFactor").style.display="";
	
	document.getElementById("nearestStationName").innerHTML = fm['stationName'].value;
	
	
}


function doRainwaterCalcShowHide(id, imgObj) {
	
	var bShow = false;
	
	if (imgObj.title == "Show") {
		
		imgObj.title = "Hide";
		imgObj.src="Images/navigation/hide.gif"
		bShow = true;
		
	} else {
		
		imgObj.title = "Show";
		imgObj.src="Images/navigation/show.gif"
		
	}
	
	var rows = document.getElementById("mainTable").getElementsByTagName('tr');
	
	for (var i=0; i < rows.length; i++) {
		if (rows[i].id==id) {
			if (bShow) {
				rows[i].style.display='';
			} else {
				rows[i].style.display='none';
			}
		}
	}
	
}


function doRainwaterCalcMouseOver(imgObj) {
	
	if (imgObj.title=="Show") {
		imgObj.src="Images/navigation/show_over.gif"
	} else {
		imgObj.src="Images/navigation/hide_over.gif"
	}
	
	document.body.style.cursor = 'hand';
	
}

function doRainwaterCalcMouseOut(imgObj) {
	
	if (imgObj.title=="Show") {
		imgObj.src="Images/navigation/show.gif"
	} else {
		imgObj.src="Images/navigation/hide.gif"
	}
	
	document.body.style.cursor = 'default';
	
}


function checkInput(objX, event, bNumeric) {
	
	var bRet = true;
	
	if (event.keyCode) {
			
		keycode = event.keyCode;
			
	} else {
		
		keycode = event.which;

	}
	
	if (keycode==13) {
		
		if (bNumeric) {
			doCheckNumericInput(objX);
		} else {
			if (objX.name=="strPostCode") {
				doCheckPostCode();
				bRet = false;
			} else {
				doComputeTotals();
			}
			
		}
		
		objX.blur();
		
	}
	
	return bRet;
	
}



function doResetRainwaterForm() {
	
	if (confirm("Are you sure you wish to reset the form?\n\nAll entered data will be lost.")) {
		window.location.href = 'rainwatertanks.asp';
	}
	
	
}


function canPrintInfo() {
	
	var sMsg="";
	
	if (fm['strPostCode'].value=="") {
		sMsg += "\nA valid post code must be entered.";
	}
	
	if (fm['fltMonthlyTotal'].value==0) {
		sMsg += "\nNo water usage information has been specified.";
	}
	
	if (fm['rainWaterTankSelection'].value=="") {
		sMsg += "\nNo rain water tank selection made.";
	}
	
	if (sMsg=="") {
		
		return true;
		
	} else {
		
		alert("Can not proceed due to the following:\n" + sMsg);
		return false;
		
	}
	
	
}


function doPrintRainwaterInformation() {
	
	if (canPrintInfo()) {
		
		var sHTML="";
		
		sHTML += "<h1>Stratco Green Zone - Rainwater Tanks</h1>";

		sHTML += "Present this information to your nearest Stratco Home Improvement Store and our friendly staff will be able " 
			   + "to provide you a price and more comprehensive advice.";

		sHTML += "<h2>Customer Information</h2>";
		
		if (!fm['blnAccurateWaterUsage'].checked) {
			sHTML += "Number of people in household: " + fm['intNumPeopleInHousehold'].value.bold();
			sHTML += "<br>";
		}
		
		sHTML += "Catchment area (m<sup>2</sup>): " + fm['intCatchmentAreaM2'].value.bold();
		sHTML += "<br>";
		sHTML += "Post Code: " + fm['strPostCode'].value.bold();

		sHTML += "<br><br>";
		
		var fltTotalCapacitty 	= parseFloat(fm['intTankSize'].value,10);
		var aTanks 				= fm['rainWaterTankSelection'].value.split("~");
		var aTankNames 			= fm['rainWaterTankNames'].value.split("~");
		
		var aTankData 		= new Array();
		var aTankNameData	= new Array();
		
		var sTankType="", sTankModel="";
		
		sHTML += "<h2>Tank Selection</h2>";
		
		sHTML += "<ul>";
		for (var i=0; i < aTanks.length; i++) {
			
			aTankData 		= aTanks[i].split(",");
			aTankNameData	= aTankNames[i].split("#");
			
			sTankType 	= aTankNameData[0];
			sTankModel 	= aTankNameData[1];
			
			if (sTankModel=="") sTankModel = "@ " + aTankData[3] + " litres per tank";
			
			sHTML += "<li>";
			sHTML += aTankData[2] + " x " + sTankType + " " + sTankModel + " = " 
														+ (parseInt(aTankData[2],10)*parseInt(aTankData[3],10)) + " litres";		
			sHTML += "</li>";
			
		}
		
		sHTML += "</ul>";
		
		sHTML += ((""+fltTotalCapacitty).bold()) + " litres total capacity.";
		
		sHTML += "<br><br>";
		
		if (!fm['blnAccurateWaterUsage'].checked) {
				
			if ((fm['fltShowerTotal'].value>0)&&(fm['blnIncludeFltShowerTotal'].checked)) {
				sHTML += "<h2>Shower usage</h2>";
				sHTML += 	  fm['intShowersPerPersonPerWeek'].value.bold() + " shower(s) per person per week @ " 
							+ fm['intShowerLength'].value.bold() + " minute(s) each using a " + getRadioValue('strShowerFlow').bold() 
							+ " shower head = " + fm['fltShowerTotal'].value.bold() + " litres per month.";
							
				sHTML += "<br><br>";
			}
			
			
			if ((fm['fltBathTotal'].value>0)&&(fm['blnIncludeFltBathTotal'].checked)) {
				
				var bathMultiplier=1;
				
				if (fm['strBathUsage'].value=="Less than 1/4 Full") {
					bathMultiplier = 0.25;
				} else if (fm['strBathUsage'].value=="1/4 - 1/2 Full") {
					bathMultiplier = 0.5;
				} else if (fm['strBathUsage'].value=="1/2 - 3/4 Full") {
					bathMultiplier = 0.75;
				}
				
				sHTML += "<h2>Bath usage</h2>";
				sHTML +=  fm['intBathsPerPersonPerWeek'].value.bold() + " bath run(s) per week using "
						+ (""+round2DP((parseInt(fm['intBathSizeLitres'].value,10) * bathMultiplier))).bold() + " litres each time = "
						+ fm['fltBathTotal'].value.bold() + " litres per month.";
						
				sHTML += "<br><br>";
			}
			
			
			if ((fm['fltToiletTotal'].value>0)&&(fm['blnIncludeFltToiletTotal'].checked)) {
				sHTML += "<h2>Toilet usage</h2>";
				sHTML += (fm['strToiletYear'].options[fm['strToiletYear'].selectedIndex]).text.bold() + " toilet @ "
						+ fm['strToiletYear'].value.bold() + " rating with ";
					
				if (fm['intToiletFullFlushPPPD'].value>0) {
					sHTML += fm['intToiletFullFlushPPPD'].value.bold() + " full flush(es) per person per day";
					if (fm['intToiletHalfFlushPPPD'].value>0) sHTML += " and "
				}
				
				if (fm['intToiletHalfFlushPPPD'].value>0) {
					sHTML += fm['intToiletHalfFlushPPPD'].value.bold() + " half flush(es) per person per day"
				}
				
				sHTML += " = " + fm['fltToiletTotal'].value.bold() + " litres per month."; 
				sHTML += "<br><br>";
						
				
			}
			
			
			if ((fm['fltDishesTotal'].value>0)&&(fm['blnIncludeFltDishesTotal'].checked)) {
				sHTML += "<h2>Dishes</h2>";
				
				if ( (fm['intDishesHandWashes'].value>0) && (fm['intDishesSinkSize'].value>0) ) {
					sHTML += "Hand wash  " + fm['intDishesHandWashes'].value.bold() + " time(s) per week using a "
						+ fm['intDishesSinkSize'].value.bold() + " litre sink.";
						sHTML += "<br>";
				}
				
				if ( (fm['intDishesCycles'].value>0) && (fm['strDishWasherType'].value!="No Dishwasher") ) {
					sHTML += "Utilise " + fm['intDishesCycles'].value.bold() + " dishwasher cycles per week with a "
							+ fm['strDishWasherType'].value.bold() + ".";
					sHTML += "<br>";
				}
				
				sHTML += "Total dishes water usage = " + fm['fltDishesTotal'].value.bold() + " litres per month.";
				sHTML += "<br><br>";
				
			}
			
			
			if ((fm['fltWashingTotal'].value>0)&&(fm['blnIncludeFltWashingTotal'].checked)) {
				sHTML += "<h2>Laundry usage</h2>";
				sHTML += "Utilise " + fm['intWashingMachineLoadsPerWeek'].value.bold() + " load(s) per week with a "
							+ getRadioValue('strWashingMachineType').bold() + " washing machine = "
							+ fm['fltWashingTotal'].value.bold() + " litres per month.";
				
				sHTML += "<br><br>";
				
			}
			
			if ((fm['fltGardenTotal'].value>0)&&(fm['blnIncludeFltGardenTotal'].checked)) {
				sHTML += "<h2>Garden usage</h2>";
				
				if ( (fm['intGardenHoseFrequency'].value>0) && 
					 (fm['intGardenHoseDuration'].value>0) && 
					 (fm['intGardenHoseFlowRate'].value>0) 		) {
					
					sHTML += "Water " + fm['intGardenHoseFrequency'].value.bold() + " time(s) per week for "
						+ fm['intGardenHoseDuration'].value.bold() + " hours @ "
						+ fm['intGardenHoseFlowRate'].value.bold() + " litre(s) per minute.";
					
					sHTML += "<br>";
					
				}
				
				
				if ( (fm['intGardenDrippersFrequency'].value>0)	&& 
					 (fm['intGardenNumberOfDrippers'].value>0) && 
					 (fm['intGardenDrippersDuration'].value>0) && 
					 (fm['intGardenDripperFlowRate'].value>0) 		) {
					
					sHTML += "Water " + fm['intGardenDrippersFrequency'].value.bold() + " time(s) per week using "
						+ fm['intGardenNumberOfDrippers'].value.bold() + " dripper(s) for "
						+ fm['intGardenDrippersDuration'].value.bold() + " hours @ "
						+ fm['intGardenDripperFlowRate'].value.bold() + " litre(s) per hour.";
					
					sHTML += "<br>";
					
				}
				
				if ( (fm['intGardenSprinklerFrequency'].value>0) && 
					 (fm['intGardenSprinklerDuration'].value>0) && 
					 (fm['intGardenHoseFlowRate'].value>0)	) {
					sHTML += "Water " + fm['intGardenSprinklerFrequency'].value.bold() + " time(s) per week with a sprinkler for "
							+ fm['intGardenSprinklerDuration'].value + " hour(s) @ "
							+ fm['intGardenHoseFlowRate'].value.bold() + " litre(s) per minute.";
							
					sHTML += "<br>";
					
				}
				
				
				if ( (fm['intCarWashingStandardBucket'].value>0) && (fm['intGardenBucketFrequency'].value>0) ) {
					sHTML += "Water " + fm['intGardenBucketFrequency'].value.bold() + " time(s) per week with a bucket @ "
							+ fm['intCarWashingStandardBucket'].value.bold() + " litre(s) per usage.";
					sHTML += "<br>";		
					
				}
				
				
				sHTML += "Total garden water usage = " + fm['fltGardenTotal'].value.bold() + " litres per month."; 
				sHTML += "<br><br>";
				
			}
			
			
			if ((fm['fltCarTotal'].value>0)&&(fm['blnIncludeFltCarTotal'].checked)) {
				sHTML += "<h2>Car wash usage</h2>";
				sHTML += "Perform " + fm['intCarWashingWashesPerMonth'].value.bold() + " wash(es) per month using "
						+ fm['intCarWashingBucketsPerWash'].value.bold() + " bucket(s) per wash @ "
						+ fm['intCarWashingStandardBucket'].value.bold() + " litres per bucket = "
						+ fm['fltCarTotal'].value.bold() + " litres per month.";
						
				sHTML += "<br><br>";
				
			}
			
		}
		
		sHTML += "<h2>TOTAL ESTIMATES</h2>";
		
		sHTML += "Total monthly usage: " 				+ FormatNumberBy3(fm['fltMonthlyTotal'].value).bold() 			+ " litres.";
		sHTML += "<br><br>Annual rainfall collection: " + FormatNumberBy3(fm['annualRainfallCollection'].value).bold() 	+ " litres.";
		sHTML += "<br>Annual consumption: " 			+ FormatNumberBy3(fm['annualConsumption'].value).bold() 		+ " litres.";
		sHTML += "<br>Annual water saving: " 			+ FormatNumberBy3(fm['annualWaterSaving'].value).bold() 		+ " litres.";
		
		sHTML += "<br><br>";
		sHTML += "<i>"
		sHTML += "Rainfall data supplied through the Australian Bureau of Meteorology. This information is a guide only as to how much water may be collected in your postcode.";
		sHTML += "</i>";
		
		
		popWin = window.open('','popwin','location=no,scrollbars=yes,menubar=no,resizable=yes,height=1200,width=800');
		popWin.document.write(sHTML);
		popWin.document.writeln("<script>window.print()</"+"script>");
		popWin.document.writeln("</html>");
		popWin.document.close();
		
	}
	
}



function doRainWaterTankSelector() {
	
	var sURL = "rainwatertankselector.asp?selection=" + fm['rainWaterTankSelection'].value;
	
	window.open(sURL,"tankSelector",
				"status=0,toolbar=0,width=900,height=600,resizable=0,scrollbars=0");
	
}


function doSpecifyAccurateWaterUsage() {
	
	var sDisplay1="", sDisplay2="";
	if (!fm['blnAccurateWaterUsage'].checked) {
		sDisplay1="none";
	} else {
		sDisplay2="none"
	}
	
	document.getElementById("MONTHLYWATERUSAGE_1").style.display = sDisplay1;
	document.getElementById("MONTHLYWATERUSAGE_2").style.display = sDisplay1;
	document.getElementById("MONTHLYWATERUSAGE_3").style.display = sDisplay2;
	
	if (fm['blnAccurateWaterUsage'].checked) {
		document.getElementById("subTable").style.display = 'none';
		document.getElementById("checkboxNote").style.display="none";
		document.getElementById("usageTable").style.display="none";
	} else {
		document.getElementById("subTable").style.display = '';
		document.getElementById("checkboxNote").style.display="";
		document.getElementById("usageTable").style.display="";
	}	
	
	
	doComputeTotals();
	
	
}


function doMouseOverCheckBox(objX, sName) {
	
	if (fm[sName].checked) {
		objX.src = 'Images/checkboxes/checked_over.gif';
	} else {
		objX.src = 'Images/checkboxes/unchecked_over.gif';
	}
	
}


function doMouseOutCheckBox(objX, sName) {
	
	if (fm[sName].checked) {
		objX.src = 'Images/checkboxes/checked_off.gif';
	} else {
		objX.src = 'Images/checkboxes/unchecked_off.gif';
	}
	
}


function doMouseClickCheckBox(objX, sName) {
	
	if (fm[sName].checked) {
		fm[sName].checked = false;
	} else {
		fm[sName].checked = true;
	}
	
	doMouseOverCheckBox(objX,sName);
	doComputeTotals();
	
	
}