//START NO TANK VERSION
var tanklessRowArray = new Array();
var incompleteStringTankless = '<span class="incomplete">Incomplete</span>';
var equalSignStringTankless = '<span class="equalSign">=</span>';
var customTotalStringTankless = 'gpm';

function tanklessRow(customGPM,timesUsed,rowTotalObj, rowTotalDivName){ //create tanklessRow OBJECT
   this.customGPM = customGPM; 				
   this.timesUsed = timesUsed;
   this.rowTotalObj = rowTotalObj;
   this.rowTotalDivName = rowTotalDivName;
   
   return this;
} // end tanklessRow


function tanklessRecalc(){  
   var GPM = 0;
   var rowTotal = 0;
   var calcTotal = 0;

   for(index=0;index<tanklessRowArray.length;index++){ //loop through each tanklessRow obj in the tanklessRowArray
      
	//compute GPM used
	 GPM = tanklessRowArray[index].customGPM.value;
	  
	
	//compute row total & display
	  if(tanklessRowArray[index].timesUsed.options[tanklessRowArray[index].timesUsed.selectedIndex].value != 0){ 
	     rowTotal = GPM * tanklessRowArray[index].timesUsed.options[tanklessRowArray[index].timesUsed.selectedIndex].value;
      }
	  else { rowTotal = 0; }
	  if(isNaN(rowTotal)){ rowTotal = incompleteStringTankless } // check if row total isn't a number
	  tanklessRowArray[index].rowTotalObj.value = rowTotal;
	  calcTotal += rowTotal;   
	  
	 //create & write string to row total div 
	  var rowTotalString = rowTotal;	  
	  if(rowTotal != incompleteStringTankless) { rowTotalString = Math.round(rowTotalString * 100) / 100; rowTotalString = equalSignStringTankless + rowTotalString;  } 
	  document.getElementById(tanklessRowArray[index].rowTotalDivName).innerHTML = rowTotalString; 
	  
   } //end for
   if(isNaN(calcTotal)){ calcTotal = incompleteStringTankless; } // check if calc total isn't a number   
   document.getElementById('calcTanklessTotal').value = calcTotal;
  //create & write string to calc total div 
   var calcTotalString = calcTotal;	  
   if(calcTotal != incompleteStringTankless) {  calcTotalString = Math.round(calcTotal * 100) / 100; calcTotalString = '<span>' + calcTotalString + '</span>'; }
   document.getElementById('calcTanklessTotalDiv').innerHTML = calcTotalString;
   
  
} // end tanklessRecalc





function tanklessCalcSetup(){

   var tanklessFormElements = document.getElementById('hotWaterCalculatorTanklessForm').elements; // put all form elements into an array   

   var fieldsPerRow = 3;  
   
   for(index=0; index<tanklessFormElements.length; index+=fieldsPerRow){ //loop through each row & put each row into a rankRow Object
      if(tanklessFormElements[index].value == 'endOfCalc'){break;} // look for end of calculator indicator field & break out of loop
      //get objs from row in form 
	  var timesUsed = tanklessFormElements[index];	
	  var customGPM = tanklessFormElements[index+1];
	  var rowTotalObj = tanklessFormElements[index+2];  	  	  
	  var rowTotalDivName = tanklessFormElements[index+2].id + 'Div'; //extrapalte the name of the total Div from the id of the hidden total field
	  //create new tanklessRowArray Object & put at end of array
      tanklessRowArray[tanklessRowArray.length] = new tanklessRow(customGPM,timesUsed,rowTotalObj, rowTotalDivName);
   } // end for
   
  
   

/// -----


   var inputFieldArrayTankless =  document.getElementById('hotWaterCalculatorTanklessForm').getElementsByTagName('input'); // make an array of all input fields
   var selectFieldArrayTankless =  document.getElementById('hotWaterCalculatorTanklessForm').getElementsByTagName('select'); // make an array of all select fields
   
   
   //LOOP THROUGH INPUT FIELDS
   for(var index=0; index<inputFieldArrayTankless.length; index++){ // loop through all input fields... 
      if(inputFieldArrayTankless[index].type == 'text'){
	     inputFieldArrayTankless[index].onkeyup = function(){  tanklessRecalc(); }
		 inputFieldArrayTankless[index].onblur = function(){ tanklessRecalc(); }
		 inputFieldArrayTankless[index].onfocus = function(){ 
														//build ID of custom checkbox and times pulldown depending on type of text field... 
														 var rowIDRoot = this.id; 
														 if(rowIDRoot.indexOf('TotalPerUse') != -1){ rowIDRoot = rowIDRoot.substring(0,rowIDRoot.indexOf('TotalPerUse')); }														 
														 var timesPulldownName = rowIDRoot + 'TimesUsed';
														 
														 if(this.value == customTotalStringTankless) {
														    this.value = '';														    
													     }
														 
														//select value of 1 time in pulldown if none is currently selected
														 if(document.getElementById(timesPulldownName).options[0].selected == true){
														    document.getElementById(timesPulldownName).options[1].selected = true;
  													     }								 
													 tanklessRecalc();
												 }  // end anon function
	  }	
    	  
   } // end for
   
   //LOOP THROUGH SELECT FIELDS
   for(var index=0; index<selectFieldArrayTankless.length; index++){ // loop through all input fields...    
      selectFieldArrayTankless[index].onchange = function(){  tanklessRecalc(); }
	  selectFieldArrayTankless[index].onfocus = function(){ };
   }
   
   
   
} // end tanklessCalcSetup


onload = function(){ tanklessCalcSetup(); tanklessRecalc();};

//END NO TANK VERSION

