//  compressedSystemStorage.js
//  required:  default.css
//  insertion point:  <div id="compressedSystemStorage"></div> 


function PipeObject(size,cuFt100){
	this.size            = size;
	this.totalLength     = 0;
	this.cuFt100         = cuFt100;
	this.calculate = function() {
		this.cuFtBar     = this.totalLength * this.cuFt100 / 100;
		this.cuFtPsi     = this.cuFtBar / 14.5;
	}
	this.calculate();
}

function ReceiverObject(){
	this.description     = "";
	this.maxPsig         = 0;
	this.gallons         = 0;
	this.calculate = function() {
		this.cuFt            = this.gallons / 7.48;
		this.cfPsia          = this.cuFt / 14.5;
	}
	this.calculate();	
}

function CompressedAirSystemStorageCalculator(){
	this.piping          = new Array();  //  of PipeObject
	this.piping.push(new PipeObject(16  ,126.8));
	this.piping.push(new PipeObject(14  , 95.8));
	this.piping.push(new PipeObject(12  , 78.5));
	this.piping.push(new PipeObject(10  , 54.8));
	this.piping.push(new PipeObject( 8  , 34.7));
	this.piping.push(new PipeObject( 6  , 20.1));
	this.piping.push(new PipeObject( 5  , 13.9));
	this.piping.push(new PipeObject( 4  ,  8.8));
	this.piping.push(new PipeObject( 3  ,  5.1));
	this.piping.push(new PipeObject( 2.5,  3.3));
	this.piping.push(new PipeObject( 2  ,  2.3));
	this.demandReceivers = new Array();  //  of ReceiverObject
	this.supplyReceivers = new Array();  //  of ReceiverObject
	
	this.calculate = function () {
		this.pipingCfPsi = 0;
		for (var i in this.piping) {
			this.pipingCfPsi += this.piping[i].cuFtPsi;
		}
		this.demandCapacitance = 0;
		for (var i in this.demandReceivers) {
			this.demandCapacitance += this.demandReceivers[i].cfPsia;
		}
		this.totalDemand = this.pipingCfPsi + this.demandCapacitance;
		this.totalSupply = 0;
		for (var i in this.supplyReceivers) {
			this.totalSupply += this.supplyReceivers[i].cfPsia;
		}
		this.totalSystemCapacitance = this.totalSupply + this.totalDemand;
		this.gallonsStorage = this.totalSystemCapacitance * 14.5 * 7.48;
	}
	this.calculate();
}

function drawPipingTable(){
	var rootTable = document.createElement("table");
	rootTable.setAttribute("id"         ,"pipingTable");
	rootTable.setAttribute("width"      ,"600"        );
	rootTable.setAttribute("border"     ,"0"          );
	rootTable.setAttribute("cellspacing","0"          );
	rootTable.setAttribute("cellpadding","0"          );
	rootTable.appendChild(document.createElement("tbody"));
	
	//  Header (Yes, I know about <thead>
	rootTable.tBodies[0].insertRow(0);
	rootTable.tBodies[0].rows[0].insertCell(0);
	rootTable.tBodies[0].rows[0].cells[0].setAttribute("class","tableHeading");
	rootTable.tBodies[0].rows[0].cells[0].appendChild(document.createTextNode("Pipe Size"));
	rootTable.tBodies[0].rows[0].insertCell(1);
	rootTable.tBodies[0].rows[0].cells[1].setAttribute("class","tableHeading");
	var newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("Total Length"));
	rootTable.tBodies[0].rows[0].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(2);
	rootTable.tBodies[0].rows[0].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("Cu Ft/100ft"));
	rootTable.tBodies[0].rows[0].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(3);
	rootTable.tBodies[0].rows[0].cells[3].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("Cu Ft/Bar"));
	rootTable.tBodies[0].rows[0].cells[3].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(4);
	rootTable.tBodies[0].rows[0].cells[4].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Cu Ft/PSI"));
	rootTable.tBodies[0].rows[0].cells[4].appendChild(newDiv);

	//  Body loop
	var newTextBox = document.createElement("input");
	for (var i in compressedAirSystemStorageCalculator.piping) {
		rootTable.tBodies[0].insertRow(parseInt(i) + 1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(0);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].setAttribute("class","tableText");
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].appendChild(document.createTextNode(compressedAirSystemStorageCalculator.piping[parseInt(i)].size));
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].setAttribute("class","tableTextField");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("totalLength_" + i));
		newTextBox.setAttribute("id",("totalLength_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","10");
		newTextBox.setAttribute("maxlength","10");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.piping[i].totalLength);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(12));
			compressedAirSystemStorageCalculator.piping[index].totalLength = this.value;
			compressedAirSystemStorageCalculator.piping[index].calculate();
			updatePage();
		}
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(2);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.piping[i].cuFt100));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(3);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.piping[i].cuFtBar));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(4);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","right");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.piping[i].cuFtPsi));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].appendChild(newDiv);
	}

	//  Footer (Yes, I know about <tfoot>
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Piping cf/psi"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.pipingCfPsi));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	
	if (document.getElementById("pipingTable") != null) {
		document.getElementById("pipingTable").parentNode.removeChild(document.getElementById("pipingTable"));
	}
	document.getElementById("pipingTableDIV").appendChild(rootTable);
}

function drawDemandTable(){
	var rootTable = document.createElement("table");
	rootTable.setAttribute("id"         ,"demandTable");
	rootTable.setAttribute("width"      ,"600"        );
	rootTable.setAttribute("border"     ,"0"          );
	rootTable.setAttribute("cellspacing","0"          );
	rootTable.setAttribute("cellpadding","0"          );
	rootTable.appendChild(document.createElement("tbody"));
	
	//  Header (Yes, I know about <thead>
	rootTable.tBodies[0].insertRow(0);
	rootTable.tBodies[0].rows[0].insertCell(0);
	rootTable.tBodies[0].rows[0].cells[0].setAttribute("class","tableHeading");
	rootTable.tBodies[0].rows[0].cells[0].appendChild(document.createTextNode("Demand Receivers"));
	rootTable.tBodies[0].rows[0].insertCell(1);
	rootTable.tBodies[0].rows[0].cells[1].setAttribute("class","tableHeading");
	var newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("Max psig"));
	rootTable.tBodies[0].rows[0].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(2);
	rootTable.tBodies[0].rows[0].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("gallons"));
	rootTable.tBodies[0].rows[0].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(3);
	rootTable.tBodies[0].rows[0].cells[3].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("cubic feet"));
	rootTable.tBodies[0].rows[0].cells[3].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(4);
	rootTable.tBodies[0].rows[0].cells[4].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Cu Ft/PSI"));
	rootTable.tBodies[0].rows[0].cells[4].appendChild(newDiv);

	//  Body loop
	var newTextBox = document.createElement("input");
	for (var i in compressedAirSystemStorageCalculator.demandReceivers) {
		rootTable.tBodies[0].insertRow(parseInt(i) + 1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(0);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].setAttribute("class","tableTextField");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("demandDescription_" + i));
		newTextBox.setAttribute("id",("demandDescription_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","20");
		newTextBox.setAttribute("maxlength","20");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.demandReceivers[i].description);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(18));
			compressedAirSystemStorageCalculator.demandReceivers[index].description = this.value;
			compressedAirSystemStorageCalculator.demandReceivers[index].calculate();
			compressedAirSystemStorageCalculator.calculate();
			updatePage();
		}
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].setAttribute("class","tableTextField");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("demandMaxPsig_" + i));
		newTextBox.setAttribute("id",("demandMaxPsig_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","10");
		newTextBox.setAttribute("maxlength","10");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.demandReceivers[i].maxPsig);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(14));
			compressedAirSystemStorageCalculator.demandReceivers[index].maxPsig = this.value;
			compressedAirSystemStorageCalculator.demandReceivers[index].calculate();
			compressedAirSystemStorageCalculator.calculate();
			updatePage();
		}
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(2);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].setAttribute("class","tableText");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("demandGallons_" + i));
		newTextBox.setAttribute("id",("demandGallons_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","10");
		newTextBox.setAttribute("maxlength","10");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.demandReceivers[i].gallons);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(14));
			compressedAirSystemStorageCalculator.demandReceivers[index].gallons = this.value;
			compressedAirSystemStorageCalculator.demandReceivers[index].calculate();
			compressedAirSystemStorageCalculator.calculate();
			updatePage();
		}
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(3);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.demandReceivers[i].cuFt));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(4);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","right");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.demandReceivers[i].cfPsia));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].appendChild(newDiv);
	}

	//  BLANK INSERT ROW GOES HERE

	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("class","tableTextField");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("demandDescription_blank"));
	newTextBox.setAttribute("id",("demandDescription_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","20");
	newTextBox.setAttribute("maxlength","20");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.description = this.value;
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.demandReceivers.push(newReceiver);
			updatePage();
			document.getElementById("demandMaxPsig_" + (compressedAirSystemStorageCalculator.demandReceivers.length - 1)).select();
		}
	}
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableTextField");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("demandMaxPsig_blank"));
	newTextBox.setAttribute("id",("demandMaxPsig_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","10");
	newTextBox.setAttribute("maxlength","10");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.maxPsig = parseFloat(this.value);
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.demandReceivers.push(newReceiver);
			updatePage();
			document.getElementById("demandGallons_" + (compressedAirSystemStorageCalculator.demandReceivers.length - 1)).select();
		}
	}
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableText");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("demandGallons_blank"));
	newTextBox.setAttribute("id",("demandGallons_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","10");
	newTextBox.setAttribute("maxlength","10");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.gallons = parseFloat(this.value);
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.demandReceivers.push(newReceiver);
			updatePage();
			document.getElementById("demandDescription_blank").select();
		}
	}
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(3);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[3].setAttribute("class","tableText");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode(" "));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[3].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(4);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[4].setAttribute("class","tableText");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(" "));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[4].appendChild(newDiv);



	//  Footer (Yes, I know about <tfoot>
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Demand Receivers"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.demandCapacitance));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Total Demand Side Capacitance"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.totalDemand));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	if (document.getElementById("demandTable") != null) {
		document.getElementById("demandTable").parentNode.removeChild(document.getElementById("demandTable"));
	}
	document.getElementById("demandReceiversDIV").appendChild(rootTable);
}

function drawSupplyTable(){
	var rootTable = document.createElement("table");
	rootTable.setAttribute("id"         ,"supplyTable");
	rootTable.setAttribute("width"      ,"600"        );
	rootTable.setAttribute("border"     ,"0"          );
	rootTable.setAttribute("cellspacing","0"          );
	rootTable.setAttribute("cellpadding","0"          );
	rootTable.appendChild(document.createElement("tbody"));
	
	//  Header (Yes, I know about <thead>
	rootTable.tBodies[0].insertRow(0);
	rootTable.tBodies[0].rows[0].insertCell(0);
	rootTable.tBodies[0].rows[0].cells[0].setAttribute("class","tableHeading");
	rootTable.tBodies[0].rows[0].cells[0].appendChild(document.createTextNode("Supply Receivers"));
	rootTable.tBodies[0].rows[0].insertCell(1);
	rootTable.tBodies[0].rows[0].cells[1].setAttribute("class","tableHeading");
	var newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("Max psig"));
	rootTable.tBodies[0].rows[0].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(2);
	rootTable.tBodies[0].rows[0].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("gallons"));
	rootTable.tBodies[0].rows[0].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(3);
	rootTable.tBodies[0].rows[0].cells[3].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode("cubic feet"));
	rootTable.tBodies[0].rows[0].cells[3].appendChild(newDiv);
	rootTable.tBodies[0].rows[0].insertCell(4);
	rootTable.tBodies[0].rows[0].cells[4].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Cu Ft/PSI"));
	rootTable.tBodies[0].rows[0].cells[4].appendChild(newDiv);

	//  Body loop
	var newTextBox = document.createElement("input");
	for (var i in compressedAirSystemStorageCalculator.supplyReceivers) {
		rootTable.tBodies[0].insertRow(parseInt(i) + 1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(0);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].setAttribute("class","tableTextField");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("supplyDescription_" + i));
		newTextBox.setAttribute("id",("supplyDescription_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","20");
		newTextBox.setAttribute("maxlength","20");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.supplyReceivers[i].description);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(18));
			compressedAirSystemStorageCalculator.supplyReceivers[index].description = this.value;
			compressedAirSystemStorageCalculator.supplyReceivers[index].calculate();
			updatePage();
		}
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[0].appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(1);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].setAttribute("class","tableTextField");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("supplyMaxPsig_" + i));
		newTextBox.setAttribute("id",("supplyMaxPsig_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","10");
		newTextBox.setAttribute("maxlength","10");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.supplyReceivers[i].maxPsig);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(14));
			compressedAirSystemStorageCalculator.supplyReceivers[index].maxPsig = this.value;
			compressedAirSystemStorageCalculator.supplyReceivers[index].calculate();
			updatePage();
		}
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[1].appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(2);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].setAttribute("class","tableText");
		newTextBox = document.createElement("input");
		newTextBox.setAttribute("name",("supplyGallons_" + i));
		newTextBox.setAttribute("id",("supplyGallons_" + i));
		newTextBox.setAttribute("type","text");
		newTextBox.setAttribute("class","tableTextField");
		newTextBox.setAttribute("size","10");
		newTextBox.setAttribute("maxlength","10");
		newTextBox.setAttribute("value",compressedAirSystemStorageCalculator.supplyReceivers[i].gallons);
		//  Event Handler goes here
		newTextBox.onblur = function() {
			var index = parseInt(this.id.substr(14));
			compressedAirSystemStorageCalculator.supplyReceivers[index].gallons = this.value;
			compressedAirSystemStorageCalculator.supplyReceivers[index].calculate();
			updatePage();
		}
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(newTextBox);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[2].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(3);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","center");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.supplyReceivers[i].cuFt));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[3].appendChild(newDiv);
		rootTable.tBodies[0].rows[parseInt(i) + 1].insertCell(4);
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].setAttribute("class","tableText");
		newDiv = document.createElement("div");
		newDiv.setAttribute("align","right");
		newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.supplyReceivers[i].cfPsia));
		rootTable.tBodies[0].rows[parseInt(i) + 1].cells[4].appendChild(newDiv);
	}

	//  BLANK INSERT ROW GOES HERE
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("class","tableTextField");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("supplyDescription_blank"));
	newTextBox.setAttribute("id",("supplyDescription_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","20");
	newTextBox.setAttribute("maxlength","20");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.description = this.value;
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.supplyReceivers.push(newReceiver);
			updatePage();
			document.getElementById("supplyMaxPsig_" + (compressedAirSystemStorageCalculator.supplyReceivers.length - 1)).select();
		}
	}
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableTextField");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("supplyMaxPsig_blank"));
	newTextBox.setAttribute("id",("supplyMaxPsig_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","10");
	newTextBox.setAttribute("maxlength","10");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.maxPsig = parseFloat(this.value);
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.supplyReceivers.push(newReceiver);
			updatePage();
			document.getElementById("supplyGallons_" + (compressedAirSystemStorageCalculator.supplyReceivers.length - 1)).select();
		}
	}
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableText");
	newTextBox = document.createElement("input");
	newTextBox.setAttribute("name",("supplyGallons_blank"));
	newTextBox.setAttribute("id",("supplyGallons_blank"));
	newTextBox.setAttribute("type","text");
	newTextBox.setAttribute("class","tableTextField");
	newTextBox.setAttribute("size","10");
	newTextBox.setAttribute("maxlength","10");
	//  Event Handler goes here
	newTextBox.onblur = function() {
		if (this.value != "") {
			var newReceiver = new ReceiverObject();
			newReceiver.gallons = parseFloat(this.value);
			newReceiver.calculate();
			compressedAirSystemStorageCalculator.supplyReceivers.push(newReceiver);
			updatePage();
			document.getElementById("supplyDescription_blank").select();
		}
	}
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(newTextBox);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(3);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[3].setAttribute("class","tableText");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","center");
	newDiv.appendChild(document.createTextNode(" "));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[3].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(4);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[4].setAttribute("class","tableText");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(" "));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[4].appendChild(newDiv);



	//  Footer (Yes, I know about <tfoot>
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Total Supply Side Capacitance"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.totalSupply));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Total System Capacitance"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.totalSystemCapacitance));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	rootTable.tBodies[0].insertRow(rootTable.tBodies[0].rows.length);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(0);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[0].setAttribute("colspan","3");
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(1);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode("Gallons of Storage"));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[1].appendChild(newDiv);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].insertCell(2);
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].setAttribute("class","tableHeading");
	newDiv = document.createElement("div");
	newDiv.setAttribute("align","right");
	newDiv.appendChild(document.createTextNode(compressedAirSystemStorageCalculator.gallonsStorage));
	rootTable.tBodies[0].rows[rootTable.tBodies[0].rows.length - 1].cells[2].appendChild(newDiv);
	if (document.getElementById("supplyTable") != null) {
		document.getElementById("supplyTable").parentNode.removeChild(document.getElementById("supplyTable"));
	}
	document.getElementById("supplyReceiversDIV").appendChild(rootTable);
}

function drawCompressedAirCalculator(){
	drawPipingTable();
	drawDemandTable();
	drawSupplyTable();
}


function updatePage(){
//  Reset all calculated values to reflect calculator object updates
	compressedAirSystemStorageCalculator.calculate();
	drawCompressedAirCalculator();
/*
	//  update page elements
	var calculatedFields = new Array("correctedFlow","existingStorageCfPsi","demandInSCFM","terminalPressure","pressureDecay");
	for (var i in calculatedFields) {
		document.getElementById(calculatedFields[i]).setAttribute("value",variableSpeedCompressorStorageCalculator[calculatedFields[i]]);
	}
	document.getElementById("existingStorageGal").value = variableSpeedCompressorStorageCalculator.existingStorageGal;*/
}

function resetCalculator(){
//  resets all variables and form elements
	//  initialize calculator objects
	compressedAirSystemStorageCalculator = new CompressedAirSystemStorageCalculator();
	
	//  calculate values and update calculated fields
	updatePage();
}



function initializePage(){
	//  Create calculator objects
	resetCalculator();
	

}


window.onload = initializePage;


