function calculateEstimate() {
	/*
		length, width = given length & width.
		inches, mms = radio buttons for which measurement you want to use.
		fixlength, fixwidth, fixprice, priceper = values for the product chosen from the listbox.
		isPricePer = If you product is price each, this is false, elseif this product is price per metre squared, this is true.
		productCount = Number of product required to fill your measurement.
	*/
	var length, width, productCode, inches, mms, strErr;
	var productArea, givenArea, totalCost, noOfTiles;
	var fixLength, fixWidth, fixPrice, pricePer;
	var isPricePer;
	var isPriceSheet = false;
	var productCount;
	var wastage;
	
	strErr = '';
		
	//Grab form elements
	length = document.getElementById('length');
	width = document.getElementById('width');
	inches = document.getElementById('inches');
	mms = document.getElementById('mms');
	
	/* This is your product code selected from the drop-down */
	productCode = document.getElementById('productCode');
	
	// Use given product code to fetch the elements you need
	fixLength = document.getElementById('length'+productCode.value);
	fixWidth = document.getElementById('width'+productCode.value);
	fixPrice = document.getElementById('priceval'+productCode.value);

	fixShtLength = document.getElementById('shtLength'+productCode.value);
	fixShtWidth = document.getElementById('shtWidth'+productCode.value);

	pricePer = document.getElementById('pricePer');

	/* Make sure you get the conversion right. */
	if (pricePer.innerHTML.toUpperCase() == 'EACH') {
		isPricePer = true;
	}
	else if (pricePer.innerHTML.toLowerCase() == 'per m<sup>2</sup>') {
		isPricePer = false;
	}
	else if (pricePer.innerHTML.substring(0,9) == 'Per Sheet') {
		isPricePer = true;
		isPriceSheet = true;
	}
	
	/* 
		Form validation
	*/
	if (length.value == '') {
		strErr += 'Please enter a length.\n';
	}
	
	if (width.value == '') {
		strErr += 'Please enter a width.\n';
	}
	
	if (productCode.value == 'Select a product') {
		strErr += 'Please select a product code.\n';
	}
	
	//If there's an error, print it.
	if (!strErr == '') {
		alert(strErr);
		return false;
	}
	//Error-free form processing
	else {
		//If they checked inches
		if (inches.checked) {
			/* Get given length & width */
			length = ((length.value * 2.54)*10);
			width = ((width.value * 2.54)*10);
		}
		//They must've checked millimetres
		else {
			/* Get given length & width */
			length = length.value;
			width = width.value;
		}

		/* calculate given area */
		givenArea = Number(length) * Number(width);
		
		/* calculate wastage */
		wastage = (givenArea / 100) * 10;
		givenArea += wastage;
		
		/* Calculate product's area */
		if(isPriceSheet)
		{
			productArea = fixShtLength.value * fixShtWidth.value;
		}
		else
		{
			productArea = fixLength.innerHTML * fixWidth.innerHTML;
		}
		/* Calculate the Number of items required. */

		productCount = Math.ceil(givenArea / productArea);

	
		givenArea = givenArea / 1000000;

		document.getElementById('totalArea').innerHTML = 'Total area (m<sup>2</sup>)';
		document.getElementById('totalAreaAmount').innerHTML = Math.round((givenArea));

		if (document.getElementById('displayTileAmount').value == '1') {
			document.getElementById('totalTilesAmount').innerHTML = productCount;
		}
		else {
			document.getElementById('totalCostAmount').innerHTML = formatCurrency(givenArea * fixPrice.value);
		}
		if (!isPricePer) {
			// Calculate total cost by multiplying the given area by the price-per-metre
			document.getElementById('totalCostAmount').innerHTML = formatCurrency(givenArea * fixPrice.value);
		}
		else {
			document.getElementById('totalCostAmount').innerHTML = formatCurrency(productCount * fixPrice.value);
		}
	}

}

function calculateEstimateFlooring() {
	/*
		length, width = given length & width.
		inches, mms = radio buttons for which measurement you want to use.
		fixlength, fixwidth, fixprice, priceper = values for the product chosen from the listbox.
		isPricePer = If you product is price each, this is false, elseif this product is price per metre squared, this is true.
		productCount = Number of product required to fill your measurement.
	*/
	var length, width, productCode, inches, mms, strErr;
	var productArea, givenArea, totalCost, noOfTiles;
	var fixLength, fixWidth, fixPrice, pricePer;
	var isPricePer;
	var productCount;
	var wastage;
	
	strErr = '';
		
	//Grab form elements
	length = document.getElementById('length');
	width = document.getElementById('width');	
	inches = document.getElementById('inches');
	mms = document.getElementById('mms');
	
	/* This is your product code selected from the drop-down */
	productCode = document.getElementById('productCode');
	
	// Use given product code to fetch the elements you need
	fixWidth = document.getElementById('width'+productCode.value);
	fixPrice = document.getElementById('priceval'+productCode.value);
	pricePer = document.getElementById('pricePer');
	
	/* Make sure you get the conversion right. */
	if (pricePer.innerHTML.toUpperCase() == 'EACH') {
		isPricePer = true;
	}
	else if (pricePer.innerHTML == 'Per m<sup>2</sup>') {
		isPricePer = false;
	}
	
	/* 
		Form validation
	*/
	if (length.value == '') {
		strErr += 'Please enter a length.\n';
	}
	
	if (width.value == '') {
		strErr += 'Please enter a width.\n';
	}
	
	if (productCode.value == 'Select a tile') {
		strErr += 'Please select a product code.\n';
	}
	
	//If there's an error, print it.
	if (!strErr == '') {
		alert(strErr);
		return false;
	}
	//Error-free form processing
	else {
		//If they checked inches
		if (inches.checked) {
			/* Get given length & width */
			length = ((length.value * 2.54)*10);
			width = ((width.value * 2.54)*10);
		}
		//They must've checked millimetres
		else {
			/* Get given length & width */
			length = length.value;
			width = width.value;
		}

		/* calculate given area */
		givenArea = length * width;
		
		/* calculate wastage */
		wastage = (givenArea / 100) * 5;
		givenArea += wastage;
			
		givenArea = givenArea / 1000000;
	
		document.getElementById('totalArea').innerHTML = 'Total area (m<sup>2</sup>)';
		document.getElementById('totalAreaAmount').innerHTML = Math.round((givenArea));

		
		// Calculate total cost by multiplying the given area by the price-per-metre
		document.getElementById('totalCostAmount').innerHTML = formatCurrency(givenArea * fixPrice.value);
	}
}

function calculateEstimateBorder() {
	var length, productCode, inches, mms, strErr;
	var productArea, givenArea, totalCost, noOfTiles;
	var fixLength, fixPrice, pricePer;
	var isPricePer;
	var productCount;
	var wastage;
	
	strErr = '';
		
	//Grab form elements
	length = document.getElementById('length');
	inches = document.getElementById('inches');
	mms = document.getElementById('mms');
	
	/* This is your product code selected from the drop-down */
	productCode = document.getElementById('productCode');
	
	// Use given product code to fetch the elements you need
	fixLength = document.getElementById('length'+productCode.value);
	fixPrice = document.getElementById('priceval'+productCode.value);
	pricePer = document.getElementById('pricePer');
	
	/* 
		Form validation
	*/
	if (length.value == '') {
		strErr += 'Please enter a length.\n';
	}
		
	if (productCode.value == 'Select a product') {
		strErr += 'Please select a product code.\n';
	}
	
	//If there's an error, print it.
	if (!strErr == '') {
		alert(strErr);
		return false;
	}
	//Error-free form processing
	else {
		//If they checked inches
		if (inches.checked) {
			/* Get given length & width */
			length = ((length.value * 2.54)*10);
		}
		//They must've checked millimetres
		else {
			/* Get given length & width */
			length = length.value;
		}
		
		givenArea = Number(length);
		
		/* calculate wastage */
		wastage = (givenArea / 100) * 10;

		givenArea += wastage;
		
		productArea = fixLength.innerHTML
				
		/* Calculate the Number of items required. */
		productCount = Math.ceil(givenArea / productArea);
			
		document.getElementById('totalBorderAmount').innerHTML = productCount;
		document.getElementById('totalCostAmount').innerHTML = formatCurrency(givenArea * fixPrice.value);
		document.getElementById('totalCostAmount').innerHTML = formatCurrency(productCount * fixPrice.value);
	}
	
	
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	
	if(isNaN(num)) {
		num = "0";
	}
	
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	
	if(cents<10) {
		cents = "0" + cents;
	}
	
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
	}
	
	return (((sign)?'':'-') + '£' + num + '.' + cents);
}

