Skip to content

Instantly share code, notes, and snippets.

@tdouce
Created February 19, 2010 21:45
Show Gist options
  • Save tdouce/309251 to your computer and use it in GitHub Desktop.
Save tdouce/309251 to your computer and use it in GitHub Desktop.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type='text/javascript'>
// returns true if the form is valid
// returns false if the form is invalid
function formValidator(){
// Make quick references to our fields
var roof = document.getElementById('txtRoof');
var precip = document.getElementById('txtPrecip');
var eff = document.getElementById('txtEff');
var capt_area = document.getElementById('txtArea');
// Check each input in the order that it appears in the form!
if(isNumeric(roof, "Please enter a value for the roof area.")){
if(isNumeric(precip, "Please enter a precipitation value.")){
if(isNumeric(eff, "Please enter an efficiency value.")){
if(isNumeric(capt_area, "Please enter a capture area value.")){
return true;
}
}
}
}
return false;
}
function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
function isNumeric(elem, helperMsg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
function calculate()
{
var roof = parseFloat(document.getElementById('txtRoof').value);
var precip = parseFloat(document.getElementById('txtPrecip').value);
var eff = parseFloat(document.getElementById('txtEff').value);
var eff_percent = (eff/100);
var conv_factr = 0.623;
var capt_area = parseFloat(document.getElementById('txtArea').value);
var capt_area_percent = (capt_area/100);
var capt_area_percent = (capt_area/100);
var total = (roof * precip * conv_factr * capt_area_percent * eff_percent);
var total_rnd = Math.round(total);
document.write("Approximately " + total_rnd + " gallons can be collected off your roof annualy.")
}
function processForm()
{
if(formValidator()) {
calculate();
}
}
function resetForm(){
document.getElementById('calculatorForm').reset();
}
</script>
<body>
<form id='calculatorForm'>
Collection Footprint Area (square feet) <input type='text' id='txtRoof'/><br />
Annual precipitation in your area (inches) <input type='text' id='txtPrecip'/><br />
Efficiency with which you are going to caputure rain (%)<input type='text' id='txtEff' value='80' onFocus="if(this.value == '80') {this.value = '';}" onBlur="if (this.value == '') {this.value = '80';}" /><br />
The amount of roof area from which you are going to caputure rain (%) <input type='text' id='txtArea'/><br />
Result: <textarea id='output' cols='40' rows='2'/></textarea>
<br/><input type='submit' value='Calculate' onClick='processForm()'/><br/>
<input type='button' value='Reset All Fields' onClick='resetForm()'/><br/>
</form>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment