var energyPerformanceCertificate	= [];
var setRows							= [];
var moreSetRows						= [];
var evenMoreSetRows					= [];
var moreAndmoreSetRows				= [];
var moreAndMoreAndMoreSetRows		= [];

function calculateCost(){
	var exVat		= 0;
	var incVat		= 0;
	var discount	= 0;

	var setElectronic = false;
	// set variables so we know what rows we know what rows are available
	var setTbl1001	= false;
	var setTbl1004	= false;
	var setTbl1005	= false;
	var setTbl1007	= false;
	var setTbl1008	= false;
	var setTbl1012	= false;
	var setTbl1013	= false;
	var setTbl2001	= false;
	var setTbl2004	= false;
	var setTbl2005	= false;
	var setTbl2007	= false;
	var setTbl2008	= false;
	var setTbl2009	= false;
	var setTbl2010	= false;
	var setTbl2012	= false;
	var setTbl2013	= false;
	// get all the tables in the page
	var tables = document.getElementsByTagName("table");
	for(var i=0; i<tables.length; i++){
		// reference to the rows
		var rows = tables[i].getElementsByTagName("tr");
		// loop through all the rows
		for(var j=0; j<rows.length; j++){
			// reference to the row
			var row = rows[j];
			
			// SHOULDBEAFUNCTION: we use this for discount calculation, any non-package-selected row is set as "true"
			if(row.className &&(' ' + row.className + ' ').indexOf(' selected ')!= -1 && !(row.className &&(' ' + row.className + ' ').indexOf(' packSelected ')!= -1)){
				if(row.id == 'tbl1001'){ setTbl1001 = true;}
				if(row.id == 'tbl1004'){ setTbl1004 = true;}
				if(row.id == 'tbl1005'){ setTbl1005 = true;}
				if(row.id == 'tbl1007'){ setTbl1007 = true;}
				if(row.id == 'tbl1008'){ setTbl1008 = true;}
				if(row.id == 'tbl1012'){ setTbl1012 = true;}
				if(row.id == 'tbl1013'){ setTbl1013 = true;}
				if(row.id == 'tbl2001'){ setTbl2001 = true;}
				if(row.id == 'tbl2004'){ setTbl2004 = true;}
				if(row.id == 'tbl2005'){ setTbl2005 = true;}
				if(row.id == 'tbl2007'){ setTbl2007 = true;}
				if(row.id == 'tbl2008'){ setTbl2008 = true;}
				if(row.id == 'tbl2009'){ setTbl2009 = true;}
				if(row.id == 'tbl2010'){ setTbl2010 = true;}
				if(row.id == 'tbl2012'){ setTbl2012 = true;}
				if(row.id == 'tbl2013'){ setTbl2013 = true;}
			}
			
			// SHOULDBEAFUNCTION: in this block we calculate the inc. and exc. prices:
			if(row.className &&(' ' + row.className + ' ').indexOf(' selected ')!= -1 || row.className &&(' ' + row.className + ' ').indexOf(' packSelected ')!= -1){
				// get all the cells in the row
				var cels = row.getElementsByTagName("td");
				// loop through the cells
				for(var k=0; k<cels.length; k++){
					// reference to the cell
					var cel = cels[k];
					// if the cell has the class 'inc' - meaning including vat
					if(cel.className &&(' ' + cel.className + ' ').indexOf(' inc ')!= -1){
						// get the input in that cell
						var price		= cel.getElementsByTagName("input");
						// add the price to the total
						incVat	+= getPrice(price[0].value);
					}
					// if the cell has the class 'ex' - excluding vat
					if(cel.className &&(' ' + cel.className + ' ').indexOf(' ex ')!= -1){
						// get the input in that cell
						var price = cel.getElementsByTagName("input");
						// add the price to the total

						exVat += getPrice(price[0].value);	
					
					}
				}
				// attempt to get the the row directly below the current one, this allows us to do further checks
				// on rows that use the hide/show technique
				var nextRow	= getNextElement(row);
				// if the row exists
				if(nextRow){
					//if the row has an id
					if(nextRow.id){
						// this row refers to the Energy Performance Certificate
						if(nextRow.id == 'tblAdditional14'){
							var checkBoxes	= getElementsByClassName(nextRow,"td","check");

							if(checkBoxes){

								for(var z = 0; z < checkBoxes.length; z++){

									var inputs		= checkBoxes[z].getElementsByTagName('input');
									var checkBox	= inputs[0]

									if(checkBox.checked){
										// add the price to the total
										incVat	+= getPrice(inputs[2].value);
										// add the price to the total
										exVat	+= getPrice(inputs[3].value);
										break;
									}
								}
							}
						}
					}
				}
			}
		}
	}

	// calculate the discounts based on what rows have been checked
	if(setTbl1001 && setTbl1008 && setTbl1005){
	 	discount = 6.52;
	} else if(setTbl1001 && setTbl1008 && setTbl1007){
	 	discount = 8.32;
	} else if(setTbl1001 && setTbl1004 && setTbl1005){
	 	discount = 6.52;
	} else if(setTbl1001 && setTbl1004 && setTbl1007){
	 	discount = 8.32;
	} else if(setTbl1001 && setTbl1012 && setTbl1013){
	 	discount = 7.99;
	} else if(setTbl1004 && setTbl1005){
		discount = 3.52;
	} else if(setTbl1004 && setTbl1007){
		discount = 5.32;
	} else if(setTbl1008 && setTbl1005){
		discount = 3.52;
	} else if(setTbl1008 && setTbl1007){
		discount = 5.32;
	} else if(setTbl1001 &&(setTbl1004 || setTbl1008 || setTbl1005 || setTbl1007 || setTbl1012 || setTbl1013)){
		discount = 3;
	}

	if(document.getElementById('frmElectronicResults')){
	 	if((document.getElementById('frmElectronicResults').value !== 'False')&& setTbl1001){
			discount += 2;
		}
	}

	/*
if(document.getElementById('frmElectronicResults')){
	 	if((document.getElementById('frmElectronicResults').value !== 'False')&& setTbl2001){
			discount += 2;
		}
	}
*/

	var costFooter = document.getElementById("tblCostFooter");
	if(costFooter){
		if(navigator.appVersion.indexOf("MSIE")!=-1){
			costFooter.style.display = "block";
		} else {
			costFooter.style.display = "table-row";
		}
	}

	var printBtn = document.getElementById("iPrint");
	if(printBtn){
		printBtn.style.display = "block";
	}

	var additionalEnquiries			= $('input.set');
	var otherAdditionalEnquiries	= $('input.set2');
	var exVatDisplay				= document.getElementById('tblPriceEx');
	var incVatDisplay				= document.getElementById('tblPriceInc');
	var discountDisplay				= document.getElementById('tblDiscount');

	/**
	 * adds a set of objects. It assumes that the ID suffixes are fixed, if this isn't
	 * the case, it can easily be extended to accept ID suffixes.
	 * 
	 * @id addSet
	 * @param {jQuery Object} theSet is a jQuery collection of the objects to be added
	 * @return {Object} returns a json object containing the total excluding and including VAT
	 */
	var addSet = function(theSet) {
		var totalExc = 0, totalInc = 0;
		var suffixInc = 'frmCost', suffixExc = 'frmCostExVat';
		
		var $incSet = theSet.parent().children('[id $= ' + suffixInc + ']');
		$incSet.each(function() {
			totalInc += parseFloat(this.value);
		});
		
		var $exSet = theSet.parent().children('[id $= ' + suffixExc + ']');
		$exSet.each(function() {
			totalExc += parseFloat(this.value);
		});
		
		return {'exc':totalExc, 'inc':totalInc};
	};

	var additionalTotals = addSet(additionalEnquiries);
	exVat += additionalTotals.exc;
	incVat += additionalTotals.inc;
	
	var otherAdditionalTotals = addSet(otherAdditionalEnquiries);
	exVat += otherAdditionalTotals.exc;
	incVat += otherAdditionalTotals.inc;
	
	if(!exVatDisplay || !incVatDisplay || !discountDisplay){
		return false;
	}
	
	// added for package discounts
	discount				+= discounts.incvat
	
	
    var con29DW = document.getElementById('tbl1001')
    if(con29DW)
    {
        var input = con29DW.getElementsByTagName('input')[2]
	    if(input.checked)
	    {
	        //VERY IMPORTANT!!! ... var electDiscount must reflect the discount for Con29DW Drainage and Water Report
	        //This block works out the discount on the price inc vat for Con29DW Reports.  Then a new excluding VAT price
	        //is worked on the discounted price.
	        var electDiscount = 0
            var price = con29DW.getElementsByTagName("input")
            var exVatCon29DW = (getPrice(price[0].value))
            var incVatCon29DW = (getPrice(price[1].value))
            incVatCon29DW = incVatCon29DW - electDiscount
            exVatCon29DW += (incVatCon29DW - electDiscount) / 1.15
            incVat += incVatCon29DW
            incVat -= (getPrice(price[1].value))
            exVat += incVatCon29DW / 1.15
            exVat -= (getPrice(price[0].value))
	    }
	 }
	 else
	 {
	    incVat              -= discount
	    exVat			    -= discount
	 }
	 	
	var chancelcheck		= document.getElementById('tbl1003')

	if(chancelcheck){
		var input			= chancelcheck.getElementsByTagName('input')[2]

		if(input.checked)
		{
			if(discounts.pack == 1 || discounts.pack == 4)
			{
				discount	+= 1.20
				incVat		-= 1.20
				exVat		-= 1.02
			}
		}
	}

	//end package discounts

	exVatDisplay.value		= exVat.toFixed	(2);
	incVatDisplay.value		= incVat.toFixed(2);
	discountDisplay.value	= discount.toFixed(2);
}


function getPrice(value){
	// convert the input value to a number
	var value	= parseFloat(value);
	// if the value is not a number, set it to 0 so we don't mess the calculations up
	if(isNaN(value)){
		return 0;
	}
	// add the price to the total
	return value;
}

//used to ensure only one of the specified checkboxes in a sub category can be selected at once
function toggleSubGroup(checkGroup){

	var checked		= null

	for(var i = 0; i < checkGroup.length; i++){
		var el	= document.getElementById(checkGroup[i]);
		if(el){
			var inputs		= el.getElementsByTagName('input');
			var checkBox	= inputs [ 0 ];
			if(checkBox.checked){
				checked	= checkGroup [ i ]
				break;
			}
		}
	}

	for(var i = 0; i < checkGroup.length; i++){
		var el	= document.getElementById(checkGroup[i]);
		var inputs			= el.getElementsByTagName('input');
		var checkBox		= inputs [ 0 ];

		if(checked){
			if(checkGroup[i] != checked){
				checkBox.disabled	= true;
			}
		} else {
			checkBox.disabled		= false;
		}
	}
}

function activateCheckBoxes()
{
	var tables = document.getElementsByTagName("table");

	for(var i=0; i<tables.length; i++){

		var rows = tables[i].getElementsByTagName("tr");

		for(var j=0; j<rows.length; j++){

			var cels = rows[j].getElementsByTagName("td");

			for(var k=0; k<cels.length; k++){

				var cel = cels[k];

				if(cel.className &&(' ' + cel.className + ' ').indexOf(' check ')!= -1){

					var checkBox	= cel.getElementsByTagName("input");
					checkBox		= checkBox[0];

					//
					if(checkBox.checked){
						if(!newHasClass(checkBox.parentNode.parentNode.parentNode.parentNode,'additional')){
							if(!newHasClass(rows[j],'selected')){
								addClass(rows[j],'selected');
							}
						}
						var ne	= getNextElement(rows[j])
						if(ne){
							if(newHasClass(getNextElement(rows[j]),'container')){
								removeClass(getNextElement(rows[j]),'hidden');
							}
							if(newHasClass(getNextElement(rows[j]),'message')){
								var nextElement = getNextElement(rows[j]);
								if(newHasClass(getNextElement(nextElement),'container')){
									removeClass(getNextElement(nextElement),'hidden');
								}
							}
						}
					}
                    $(checkBox).click(markSelected);
				}
			}
		}
	}

	if(!document.getElementById("iPropertySearch"))return false;

	var subTables = document.getElementById("iPropertySearch").getElementsByTagName("table");

	for(var l=0; l<subTables.length; l++){
		var rows = subTables[l].getElementsByTagName("tr")

		for(var m=0; m<rows.length; m++){
			var cels = rows[m].getElementsByTagName("td");
			for(var n=0; n<cels.length; n++){
				var cel = cels[n];
				if(cel.className &&(' ' + cel.className + ' ').indexOf(' check ')!= -1){
					var checkBox = cel.getElementsByTagName("input");
					$(checkBox[0]).unbind("click", markSelected);
					$(checkBox[0]).click(markSubSelected);
				}
			}
		}
	}
}

function markSubSelected(e){
    var tg = window.event ? window.event.srcElement : e ? e.target : null;
	if(!tg)return;
    
	if(tg.parentNode.parentNode.parentNode.parentNode.id == 'tblAdditionalCategory11'){
		if(!newHasClass(tg,'set2')){
			addClass(tg,'set2');
		} else {
			removeClass(tg,'set2');
		}
	} else {
		if(!newHasClass(tg,'set')){
			addClass(tg,'set');
		} else {
			removeClass(tg,'set');
		}
	}

	calculateCost();
}

function markSelected(e, o)
{
	var tg = window.event ? window.event.srcElement : e ? e.target : null;

	if(o)
	{
		tg	= o
	}

	if(!tg)return;

	// temporary measure to ensure that any child elements are disabled
	$(tg).parent().parent().next().find('.set2').click();
	$(tg).parent().parent().next().find('.set').click();

	if(!newHasClass(tg.parentNode.parentNode.parentNode.parentNode,'additional')){

		row = tg.parentNode.parentNode;



		var stop = 0;
		if(row.id == 'tbl1001' | row.id == 'tbl1010' | row.id == 'tbl1011'){
			for(var i=0; i<setRows.length; i++){
				if(row.id == setRows[i]){
					setRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(document.getElementById('tbl1001')){
					if(row.id !== 'tbl1001'){
						document.getElementById('tbl1001').getElementsByTagName('input')[2].disabled = true;
					}
				}
				if(document.getElementById('tbl1010')){
					if(row.id !== 'tbl1010'){
						document.getElementById('tbl1010').getElementsByTagName('input')[2].disabled = true;
					}
				}
				if(document.getElementById('tbl1011')){
					if(row.id !== 'tbl1011'){
						document.getElementById('tbl1011').getElementsByTagName('input')[2].disabled = true;
					}
				}
				setRows[setRows.length] = row.id;
			} else {
				if(document.getElementById('tbl1001')){
					document.getElementById('tbl1001').getElementsByTagName('input')[2].disabled = false;
				}
				if(document.getElementById('tbl1010')){
					document.getElementById('tbl1010').getElementsByTagName('input')[2].disabled = false;
				}
				if(document.getElementById('tbl1011')){
					document.getElementById('tbl1011').getElementsByTagName('input')[2].disabled = false;
				}
			}
		}

		var stop = 0;

		if(row.id == 'tbl1005' | row.id == 'tbl1007' | row.id == 'tbl1013'){
			for(var i=0; i<moreSetRows.length; i++){
				if(row.id == moreSetRows[i]){
					moreSetRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(row.id !== 'tbl1005'){
					document.getElementById('tbl1005').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl1007'){
					document.getElementById('tbl1007').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl1013'){
					document.getElementById('tbl1013').getElementsByTagName('input')[2].disabled = true;
				}
				moreSetRows[moreSetRows.length] = row.id;
			} else {
				document.getElementById('tbl1005').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl1007').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl1013').getElementsByTagName('input')[2].disabled = false;
			}
		}

		var stop = 0;

		if(row.id == 'tbl1004' | row.id == 'tbl1008' | row.id == 'tbl1012'){
			for(var i=0; i<evenMoreSetRows.length; i++){
				if(row.id == evenMoreSetRows[i]){
					evenMoreSetRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(row.id !== 'tbl1004'){
					document.getElementById('tbl1004').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl1008'){
					document.getElementById('tbl1008').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl1012'){
					document.getElementById('tbl1012').getElementsByTagName('input')[2].disabled = true;
				}
				evenMoreSetRows[evenMoreSetRows.length] = row.id;
			} else {
				document.getElementById('tbl1004').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl1008').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl1012').getElementsByTagName('input')[2].disabled = false;
			}
		}

		var stop = 0;

		if(row.id == 'tbl2001' || row.id == 'tbl2010'){
			for(var i=0; i<moreAndmoreSetRows.length; i++){
				if(row.id == moreAndmoreSetRows[i]){
					moreAndmoreSetRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(document.getElementById('tbl2001')){
					if(row.id !== 'tbl2001'){
						document.getElementById('tbl2001').getElementsByTagName('input')[2].disabled = true;
					}
				}
				if(document.getElementById('tbl2010')){
					if(row.id !== 'tbl2010'){
						document.getElementById('tbl2010').getElementsByTagName('input')[2].disabled = true;
					}
				}
				moreAndmoreSetRows[moreAndmoreSetRows.length] = row.id;
			} else {
				if(document.getElementById('tbl2001')){
					document.getElementById('tbl2001').getElementsByTagName('input')[2].disabled = false;
				}
				if(document.getElementById('tbl2010')){
					document.getElementById('tbl2010').getElementsByTagName('input')[2].disabled = false;
				}
			}
		}

		var stop = 0;

		if(row.id == 'tbl2004' || row.id == 'tbl2005' || row.id == 'tbl2007' || row.id == 'tbl2009' || row.id == 'tbl2012' || row.id == 'tbl2013'){
			for(var i=0; i<moreAndMoreAndMoreSetRows.length; i++){
				if(row.id == moreAndMoreAndMoreSetRows[i]){
					moreAndMoreAndMoreSetRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(row.id !== 'tbl2004'){
					document.getElementById('tbl2004').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl2005'){
					document.getElementById('tbl2005').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl2007'){
					document.getElementById('tbl2007').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl2009'){
					document.getElementById('tbl2009').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl2012'){
					document.getElementById('tbl2012').getElementsByTagName('input')[2].disabled = true;
				}
				if(row.id !== 'tbl2013'){
					document.getElementById('tbl2013').getElementsByTagName('input')[2].disabled = true;
				}
				moreAndMoreAndMoreSetRows[moreAndMoreAndMoreSetRows.length] = row.id;
			} else {
				document.getElementById('tbl2004').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl2005').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl2007').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl2009').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl2012').getElementsByTagName('input')[2].disabled = false;
				document.getElementById('tbl2013').getElementsByTagName('input')[2].disabled = false;
			}
		}

		var stop = 0;

		if(row.id == 'tbl5001' | row.id == 'tbl5002' | row.id == 'tbl5003' | row.id == 'tbl5004'){
			for(var i=0; i<setRows.length; i++){
				if(row.id == setRows[i]){
					setRows.splice(i,1);
					var stop = 1
				}
			}

			if(!stop){
				if(row.id !== 'tbl5001'){
					document.getElementById('tbl5001').getElementsByTagName('input')[2].disabled = true;
				}

				setRows[setRows.length] = row.id;
			} else {
				document.getElementById('tbl5001').getElementsByTagName('input')[2].disabled = false;
			}
		}

		if(!newHasClass(row,'selected')){
			addClass(row,'selected');
			if(newHasClass(getNextElement(row),'container')){
				removeClass(getNextElement(row),'hidden');
			}
			if(newHasClass(getNextElement(row),'message')){
				var nextElement = getNextElement(row);
				if(newHasClass(getNextElement(nextElement),'container')){
					removeClass(getNextElement(nextElement),'hidden');
				}
			}
		} else {
			removeClass(row,'selected');
			if(newHasClass(getNextElement(row),'container')){
				addClass(getNextElement(row),'hidden');
			}
			if(newHasClass(getNextElement(row),'message')){
				var nextElement = getNextElement(row);
				if(newHasClass(getNextElement(nextElement),'container')){
					addClass(getNextElement(nextElement),'hidden');
				}
			}
		}
	}
	calculateCost();
}

function hideContainers(){
	// get all the tr's with the class of container, and apply a hidden class to them - rows that a
	var containers	= getElementsByClassName(document, "tr", "container");

	for(var i = 0; i < containers.length; i++){
		addClass(containers[i],'hidden');
	}
}

function limitTextareas(){

	var limitLength = function(ev){

		var tg = window.event ? window.event.srcElement : ev ? ev.target : null;
		if(!tg)return;

		var length		= tg.className.match(/length_([0-9]+)/)

		if(length){
			length		= Number(length[1]);

			if(tg.value.length > length-1){
				tg.value	= tg.value.substring(0, length-1);
			}
		}
	}

	var textareas	= document.getElementsByTagName('textarea');
	for(var i = 0; i < textareas.length; i++){

		if(textareas[i].className){
			if(textareas[i].className.indexOf('length')> -1){
				addEvent(textareas[i],'keyup',limitLength,false);
				addEvent(textareas[i],'keydown',limitLength,false);
			}
		}
	}
}

function initPackages()
{
	var packageSelect = function(ev)
	{
		var parentPackageId	= this.parentNode.parentNode.id
		var parentPackage	= document.getElementById(parentPackageId);
		var hasClicked		= false;

		for(var i = 1; i < 8; i++)
		{
			var el	= document.getElementById('iPackage' + i);
			if(el)
			{
				removeClass(el,'packOpen');

				if(('iPackage' + i) == parentPackageId)
				{
					addClass(el,'packOpen');

					var pc		= getElementsByClassName(el,"div","packContents");
					// if pack contents
					if(pc.length)
					{
						pc			= pc[0];
						var radios	= pc.getElementsByTagName('input');

						for(var j = 0; j < radios.length; j++)
						{
							var radio	= radios[j];

							if(radio.checked == true)
							{
								hasClicked	= true;
								radio.click();
								break;
							}
						}
					}
				}
				else
				{
					removeClass(el,'packOpen');
				}
			}
		}
		if(!hasClicked)
		{
			checkPackages(this.id)
		}
	}

	var extraPackageSelect = function(ev)
	{
		checkPackages(this.id)
	}

	var enviroChecked	= document.getElementById('tbl1004').getElementsByTagName('input')[2].checked//tbl1004
	var homeChecked	= document.getElementById('tbl1008').getElementsByTagName('input')[2].checked//tbl1004

	//
	var els					= getElementsByClassName(document,"input","packageOption");
	for(var i = 0; i < els.length; i++)
	{
		var el				= els[i]

		if(el)
		{
			var parentPackageId	= el.parentNode.parentNode.id
			var parentPackage	= document.getElementById(parentPackageId);
			var pc				= getElementsByClassName(parentPackage,"div","packContents");

			if(pc.length)
			{
				pc				= pc[0]

				var radios	= pc.getElementsByTagName('input');

				if(enviroChecked)
				{
					radios[0].checked = true
					radios[1].checked = false
				}
				if(homeChecked)
				{
					radios[0].checked = false
					radios[1].checked = true
				}

				for(var j = 0; j < radios.length; j++)
				{
					var radio	= radios[j];
					radio.onclick=extraPackageSelect
				}
			}

			el.onclick = packageSelect

			if(el.checked == true)
			{
				el.click();
			}
		}
	}
}

var discounts			= {exvat:0, incvat:0, pack:0}

function checkPackages(e)
{
	var setPrice = function(el, price)
	{
		var el	= document.getElementById(el);
		if(el)
		{
			el.innerHTML	= '&pound;' + price;
		}
	}

	var killGroundsure = function()
	{
		var row		= document.getElementById('tbl1012')
		if(row)
		{
			removeClass(row,'selected');
			var input		= row.getElementsByTagName('input')[2]
			input.checked	= false;
		}

		var row		= document.getElementById('tbl1004')
		if(row)
		{
			removeClass(row,'selected');
			var input		= row.getElementsByTagName('input')[2]
			input.checked	= false;
		}

		var row		= document.getElementById('tbl1008')
		if(row)
		{
			removeClass(row,'selected');
			var input		= row.getElementsByTagName('input')[2]
			input.checked	= false;
		}
		evenMoreSetRows=new Array
	}

	switch(e)
	{
case 'package_1_enviromental':

			setPrice('iPackagePrice-1', '83.30' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+2.13), incvat:(3+2.5), pack:1}

			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1004');//Envirosearch
			break;

		case 'package_1_homecheck':

			setPrice('iPackagePrice-1', '76.25' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+2.13), incvat:(3+2.5), pack:1}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1008');//Homecheck
			break;

		case 'package_2_enviromental':

			setPrice('iPackagePrice-2', '62.43' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+1.02), incvat:(3+1.20), pack:2}
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1004');//Envirosearch
			break;

		case 'package_2_homecheck':

			setPrice('iPackagePrice-2', '55.38' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+1.02), incvat:(3+1.20), pack:2}
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1008');//Homecheck
			break;

		case 'package_3':

			deactivateCheckboxes();
			discounts				= {exvat:(2.13+1.02), incvat:(2.50+1.20), pack:3}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1003');//chancelcheck
			break;

		case 'package_4':

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+1.02), incvat:(3.00+1.20), pack:4}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1022');//flood
			break;

		case 'package_5_enviromental':

			setPrice('iPackagePrice-5', '99.73' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+1.02+2.13), incvat:(3.00+1.20+2.50), pack:5}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1004');//Envirosearch
			break;

		case 'package_5_homecheck':

			setPrice('iPackagePrice-5', '92.68' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(2.55+1.02+2.13), incvat:(3.00+1.20+2.50), pack:5}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1008');//Homecheck
			break;

		case 'package_6_enviromental':

			setPrice('iPackagePrice-6', '112.51' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(6.81+1.02+2.13+1.02), incvat:(8.00+1.20+2.50+1.20), pack:6}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1022');//flood
			markSelectedNew('tbl1004');//Envirosearch
			break;

		case 'package_6_homecheck':

			setPrice('iPackagePrice-6', '105.46' )
			killGroundsure()

			deactivateCheckboxes();
			discounts				= {exvat:(6.81+1.02+2.13+1.02), incvat:(8.00+1.20+2.50+1.20), pack:6}
			markSelectedNew('tbl1006');//coal
			markSelectedNew('tbl1003');//chancelcheck
			markSelectedNew('tbl1022');//flood
			markSelectedNew('tbl1008');//Homecheck
			break;

		case 'no_package':

		case 'no_package':

			deactivateCheckboxes();
			discounts				= {exvat:0, incvat:0, pack:0}
			calculateCost();
			break;
	}
	//lastSelectedPackage	= e;
}

function deactivateCheckboxes()
{
	var tables = document.getElementsByTagName("table");

	for(var i=0; i<tables.length; i++)
	{
		var rows = tables[i].getElementsByTagName("tr");

		for(var j=0; j<rows.length; j++)
		{
			var row		= rows[j];
			var cels	= row.getElementsByTagName("td");

			for(var k=0; k<cels.length; k++)
			{
				var cel		= cels[k];

				if(cel.className &&(' ' + cel.className + ' ').indexOf(' check ')!= -1)
				{
					if((cel.parentNode.className && (' ' + cel.parentNode.className + ' ').indexOf(' packSelected ')!= -1)||(cel.getElementsByTagName('input')[0].disabled))
					{

						cel.getElementsByTagName('input')[0].removeAttribute("disabled");

						cel.getElementsByTagName('input')[0].click();

						cel.getElementsByTagName('input')[0].checked = false;

						removeClass(cel.parentNode,'packSelected');
						removeClass(cel.parentNode,'selected');
					}
				}
				if(cel.className &&(' ' + cel.className + ' ').indexOf(' packDesc ')!= -1)
				{
					cel.parentNode.deleteCell(k);
					k--
				}
				removeClass(cels[k],'jsHide');
			}
		}
	}
}

var newHasClass = function (el, cName){

	if(typeof(el) == 'string')
	{
		el		= document.getElementById(el)
	}

	if(!el){
		return null
	}

	var cn		= el.className

	if(!cn || cn == '')
	{
		return false;
	}

	var has = new RegExp('\\b'+cName+'\\b').test(cn)

	return has
}

function markSelectedNew(row)
{
	var el		= document.getElementById(row)

	if(!row || !el)
	{
		return false;
	}

	var checkbox		= el.getElementsByTagName('input')[2];

	// assume that the user has manually selected this
	if(checkbox.checked)
	{
		checkbox.disabled=false
		checkbox.checked=true
		markSelected(null, checkbox)


		checkbox.disabled=true
	}
	else
	{
		checkbox.disabled=false
		checkbox.checked=true

		markSelected(null, checkbox)

		checkbox.disabled=true
	}

	var hc	= newHasClass(el,'packSelected')

	if(!hc)
	{
		//add the pack selected class to the row, hide the price td's and then insert a new td in their place
		addClass(el,'packSelected');
		var packRow = document.getElementById(row);

		addClass(packRow.getElementsByTagName('td')[1],'jsHide');
		addClass(packRow.getElementsByTagName('td')[2],'jsHide');
		var x=document.getElementById(row).insertCell(1);

		addClass(x,'packDesc');

		x.innerHTML	= "selected in package";
		x.colSpan	= "2";

		if(newHasClass(getNextElement(document.getElementById(row)),'container')){
			removeClass(getNextElement(document.getElementById(row)),'hidden');
		}

		if(newHasClass(getNextElement(document.getElementById(row)),'message')){
			var nextElement = getNextElement(document.getElementById(row));
			if(newHasClass(getNextElement(nextElement),'container')){
				removeClass(getNextElement(nextElement),'hidden');
			}
		}

		var inputs	= packRow.getElementsByTagName('input')
		inputs[2].disabled	= true;
		inputs[2].checked	= true;
	}

	removeClass(el,'selected');
	calculateCost(); // by forcing calculate cost, we ensure that the correct discount is applied.
}

function init()
{
	if(!$("body.orderSearches").length){ // only execute this functionality if we're on the property search page
		return;
	}

	if(!document.getElementsByTagName || !document.getElementById){
		return false;
	}
    if($("#iBuyersPacks").length)
	    initPackages();
	    
	limitTextareas();
	hideContainers();
	activateCheckBoxes();
	calculateCost();
}


$(document).ready(function() {
	
	init();
	
	
	
	var toggleBuyersPacks = function() {
		if($("#iShowBuyers")[0].checked)
			$("#iBuyersPacksList").show();
		else {
			// forcing click with jquery ensures that buyers packs are reset consistently
			$("#no_package")[0].click();
			$("#iBuyersPacksList").hide();
		}
	};

	if($("#iBuyersPacks").length > 0) {
		$("div#iBuyersPacks #iSelectBuyersPack").append("<input type='checkbox' name='show_buyers_packs' id='iShowBuyers'/>");
		// use the click event because IE doesn't like change
		$("#iShowBuyers").click(toggleBuyersPacks);
			
		// if the system has upgraded packages, our checkbox needs to conform
		if($(".packageUpgrade").length != 0) {
			$("#iShowBuyers")[0].checked = "checked";
		}
		toggleBuyersPacks();
	}
	
	$("#frmSubmit").click(function(){
	    
	    $("#frmSubmit").attr("style","display:none;").after('<input type="submit" disabled="disabled" class="frmBtn" value="Submit order" name="frmSubmitFake"/>')
	    //return false;
	} );
	
	
	
});