Skip to content

Instantly share code, notes, and snippets.

@wallace
Forked from tdouce/calculator
Created February 18, 2010 18:39
Show Gist options
  • Save wallace/307918 to your computer and use it in GitHub Desktop.
Save wallace/307918 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 = document.roof.txtRoof.value;
var precip = document.precip.txtPrecip.value;
var eff = document.eff.txtEff.value;
var eff_percent = (eff/100);
var conv_factr = 0.623;
var capt_area = document.area.txtArea.value;
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();
}
}
</script>
<body>
<form>
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 <br/>to caputure rain (%)<input type='text' id='txtEff' /><br />
The amount of roof area from which <br/> you are going to caputure rain (%) <input type='text' id='txtArea' /><br />
<input type='submit' value='Check Form' onclick='processForm()'/>
</form>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment