function validate(group) {
	clearErrors(group);
	var obj = document.calculator;
	var errCount = 0;
	var i, errId, errLyr, txtElem, txtVal, func;
	switch(group) {
		case 'fan':
			var txt_arr= new Array('sqFtLen','sqFtWid','airXchg');
			func = 'calcFan();'
			break;
		case 'sv':
			var txt_arr = new Array('svLength','svWidth','svNumVents');
			func = 'calcSV();';
			break;
		case 'rv':
			var txt_arr = new Array('rvDiam','rvNumVents');
			func = 'calcRV();';
			break;
		case 'all':
			var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents','rvDiam','rvNumVents');
			var chkSv = obj.svCalc.checked;
			var chkRv = obj.rvCalc.checked;
			if(chkSv && chkRv) {
				var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents','rvDiam','rvNumVents');
			} else if(chkSv && !chkRv) {
				var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents');
			} else if(!chkSv && chkRv) {
				var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','rvDiam','rvNumVents');
			} else if(!chkSv && !chkRv) {
				var txt_arr= new Array('sqFtLen','sqFtWid','airXchg');
			}
			//func = 'calculate();';
			break;
		default:
			alert('no section specified');
			return;
	}
	/*
	var chkSv = obj.svCalc.checked;
	var chkRv = obj.rvCalc.checked;
	if(chkSv && chkRv) {
		var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents','rvDiam','rvNumVents');
	} else if(chkSv && !chkRv) {
		var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents');
	} else if(!chkSv && chkRv) {
		var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','rvDiam','rvNumVents');
	} else if(!chkSv && !chkRv) {
		var txt_arr= new Array('sqFtLen','sqFtWid','airXchg');
	}
	*/
	for(i = 0; i < txt_arr.length; i++) {
		txtElem = eval('obj.' + txt_arr[i]);
		if(typeof txtElem == 'undefined') {
			alert(txt_arr[i] + ' not found.');
		}		
		txtVal = trim(txtElem.value);
		if(txtVal == '') {
			errCount++;
			errId = 'err_' + txt_arr[i] + '1';
			errLyr = document.getElementById(errId);
			errLyr.style.display = 'block';
		} else {
			if(i != 2) {
				if(!isNumber(txtVal)) {
					errCount++;
					errId = 'err_' + txt_arr[i] + '2';
					errLyr = document.getElementById(errId);
					errLyr.style.display = 'block';
				}
			} else {
				if(!isDecimal(txtVal)) {
					errCount++;
					errId = 'err_' + txt_arr[i] + '2';
					errLyr = document.getElementById(errId);
					errLyr.style.display = 'block';
				}
			}
		}
	}
	if(errCount == 0 && group != 'all') {
		eval(func);
	} 
	if(errCount == 0 && group == 'all') {
		calculate(chkSv, chkRv);
		return true;
	} else if(errCount > 0 && group == 'all') {
		return false;
	}
}

function validateFan() {
	//clearErrors('fan');
	var obj = document.calculator;
	var errCount = 0;
	var i, errId, errLyr, txtElem, txtVal;
	var txt_arr= new Array('sqFtLen','sqFtWid','airXchg');

}

function checkEmail(emAddr){	
	var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	if(pattern.test(emAddr)) {         
		return true;
	} else {   
		return false; 
	}
}

function clearForm(group) {
	clearErrors(group);
	var obj = document.calculator;
	var i, j, k, txtElem;
	switch(group) {
		case 'fan':
			var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','totSqFt','totCubicFt','cfmReqd','favReqd');
			var ceilingHt = obj.ceilingHt;
			ceilingHt[0].checked = true;
			break;
		case 'sv':
			var txt_arr = new Array('svLength','svWidth','svNumVents','svTotSqIn','svCubicFt');
			obj.svCalc.checked = true;
			obj.calcSv.disabled = false;
			tabNdx = 9;
			for(j = 0; j < 3; j++) {
				txtElem = document.getElementById(txt_arr[j]);
				txtElem.style.backgroundColor = '#8ac5ff';
				txtElem.style.borderColor = '#8ac5ff';
				txtElem.style.color = '#000000';
				txtElem.readOnly = false;
				txtElem.setAttribute('tabIndex', tabNdx);
				tabNdx++;
			}
			for(k = 3; k < txt_arr.length; k++) {
				txtElem = document.getElementById(txt_arr[k]);
				txtElem.style.color = '#c0c0c0';
			}
			break;
		case 'rv':
			var txt_arr = new Array('rvDiam','rvNumVents','rvSqFt');
			obj.rvCalc.checked = true;
			obj.calcRv.disabled = false;
			tabNdx = 14;
			for(k = 0; k < 2; k++) {
				txtElem = document.getElementById(txt_arr[k]);
				txtElem.style.backgroundColor = '#8ac5ff';
				txtElem.style.borderColor = '#8ac5ff';
				txtElem.style.color = '#000000';
				txtElem.readOnly = false;
				txtElem.setAttribute('tabIndex', tabNdx);
				tabNdx++;
			}
			txtElem = document.getElementById('rvSqFt');
			txtElem.style.color = '#c0c0c0';
			break;
		case 'all':
			var txt_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents','rvDiam','rvNumVents','totSqFt','totCubicFt','svTotSqIn','svCubicFt','cfmReqd','favReqd','rvSqFt','emAddr');
			obj.svCalc.checked = true;
			obj.rvCalc.checked = true;
			var txt_arr2 = new Array('svLength','svWidth','svNumVents','rvDiam','rvNumVents');
			//var tabNdx = 6;
			for(j = 0; j < txt_arr2.length; j++) {
				txtElem = document.getElementById(txt_arr2[j]);
				txtElem.style.backgroundColor = '#8ac5ff';
				txtElem.style.borderColor = '#8ac5ff';
				txtElem.style.color = '#000000';
				txtElem.readOnly = false;
				//txtElem.setAttribute('tabIndex', tabNdx);
				//tabNdx++;
			}
			break;
		default:
			alert('clearForm error');
			return;
	}
	for(i = 0; i < txt_arr.length; i++) {
		txtElem = eval('obj.' + txt_arr[i]);
		txtElem.value = '';
	}
	setFocus(txt_arr[0]);
	/*
	obj.svCalc.checked = true;
	obj.rvCalc.checked = true;
	var txt_arr2 = new Array('svLength','svWidth','svNumVents','rvDiam','rvNumVents');
	var tabNdx = 6;
	for(j = 0; j < txt_arr2.length; j++) {
		txtElem = document.getElementById(txt_arr2[j]);
		txtElem.style.backgroundColor = '#8ac5ff';
		txtElem.style.borderColor = '#8ac5ff';
		txtElem.style.color = '#000000';
		txtElem.readOnly = false;
		txtElem.setAttribute('tabIndex', tabNdx);
		tabNdx++;
	}
	var ceilingHt = obj.ceilingHt;
	ceilingHt[0].checked = true;
	*/
}

function clearErrors(group) {
	var i, errId1, errId2, errLyr1, errLyr2;
	if(group == 'fan') {
		var err_arr = new Array('sqFtLen','sqFtWid','airXchg','emAddr');
	}
	if(group == 'sv') {
		var err_arr = new Array('svLength','svWidth','svNumVents','emAddr');
	}
	if(group == 'rv') {
		var err_arr = new Array('rvDiam','rvNumVents','emAddr');
	}
	if(group == 'all') {
		var err_arr = new Array('sqFtLen','sqFtWid','airXchg','svLength','svWidth','svNumVents','rvDiam','rvNumVents','emAddr');
	}
	for(i = 0; i < err_arr.length; i++) {
		errId1 = 'err_' + err_arr[i] + '1';
		errId2 = 'err_' + err_arr[i] + '2';
		errLyr1 = document.getElementById(errId1);
		if(!errLyr1) {
			alert(errId1 + ' not found');
		}
		errLyr2 = document.getElementById(errId2);
		if(!errLyr2) {
			alert(errId2 + ' not found');
		}
		errLyr1.style.display = 'none';
		errLyr2.style.display = 'none';
	}
}

function showOther(ndx) {
	var obj = document.calculator;
	var txtElem = obj.otherCeilHt;
	clearErrors('other');
	if(ndx == 6) {
		txtElem.style.backgroundColor = '#8ac5ff';
		txtElem.style.borderColor = '#8ac5ff';
		txtElem.style.color = '#000000';
		txtElem.readOnly = false;
		txtElem.setAttribute('tabIndex', '4');
		setFocus('otherCeilHt');
	} else {
		txtElem.style.backgroundColor = '#2b3c3c';
		txtElem.style.borderColor = '#2b3c3c';
		txtElem.style.color = '#2b3c3c';
		txtElem.readOnly = true;
		txtElem.setAttribute('tabIndex', '-10');
	}
}

function applyCalc(ventType, yesNo) {
	var obj = document.calculator;
	var i, j, elemId, txtElem, tabNdx, targElem, btn;
	if(ventType == 'sv') {
		clearErrors('sv');
		var elem_arr = new Array('svLength','svWidth','svNumVents');
		var elem_arr2 = new Array('svTotSqIn','svCubicFt');
		btn = obj.calcSv;
		tabNdx = 9;
	} else {
		clearErrors('rv');
		var elem_arr = new Array('rvDiam','rvNumVents');
		var elem_arr2 = new Array('rvSqFt');
		btn = obj.calcRv;
		tabNdx = 14;
	}	
	if(!yesNo) {
		for(i = 0; i < elem_arr.length; i++) {
			txtElem = document.getElementById(elem_arr[i]);
			txtElem.style.backgroundColor = '#2b3c3c';
			txtElem.style.borderColor = '#2b3c3c';
			txtElem.style.color = '#2b3c3c';
			txtElem.readOnly = true;
			txtElem.setAttribute('tabIndex', '-10');
			btn.disabled = true;
		}
		for(j = 0; j < elem_arr2.length; j++) {
			txtElem = document.getElementById(elem_arr2[j]);
			txtElem.style.color = '#2b3c3c';
		}
	} else {
		for(i = 0; i < elem_arr.length; i++) {
			txtElem = document.getElementById(elem_arr[i]);
			txtElem.style.backgroundColor = '#8ac5ff';
			txtElem.style.borderColor = '#8ac5ff';
			txtElem.style.color = '#000000';
			txtElem.readOnly = false;
			txtElem.setAttribute('tabIndex', tabNdx);
			tabNdx++;
			btn.disabled = false;
		}
		for(j = 0; j < elem_arr2.length; j++) {
			txtElem = document.getElementById(elem_arr2[j]);
			txtElem.style.color = '#c0c0c0';
		}
		setFocus(elem_arr[0]);
	}
}

function calcFan() {
	var obj = document.calculator;
	var sqFtLen = obj.sqFtLen.value;
	var sqFtWid = obj.sqFtWid.value;
	var radElem = obj.ceilingHt;
	for(var j = 0; j < radElem.length; j++) {
		if(radElem[j].checked) {
			ceilingHt = radElem[j].value;
			break;
		}
	}
	var airXchg = obj.airXchg.value;
	var svLength = obj.svLength.value;
	var svWidth = obj.svWidth.value;
	var svNumVents = obj.svNumVents.value;
	var rvDiam = obj.rvDiam.value;
	var rvNumVents = obj.rvNumVents.value;
	var houseSqFt = 0, houseCuFt = 0, volPerHrCF = 0, reqCFM = 0, reqFAV = 0, reqFAVfan = 0, atticFAV = 0, intakeFAVfan = 0, intakeFAVattic = 0, outTakeFAVfan = 0, outTakeFAVfan = 0, svSqInPerVent = 0, svTotSqFtPerVent = 0, svTotSqFt = 0, rvRadiusPerVent = 0, rvCalcPiPerVent = 0, rvSqFtPerVent = 0, rvTotSqFt = 0;
	houseSqFt = sqFtLen * sqFtWid;
	var strHouseSqFt = addCommas(houseSqFt);
	houseCuFt = houseSqFt * ceilingHt;
	var strHouseCuFt = addCommas(houseCuFt);

	volPerHrCF = houseCuFt * airXchg;
	var strVolPerHrCF = addCommas(volPerHrCF);
	reqCFM = volPerHrCF / 60; 
	reqCFM = reqCFM.toFixed(0);
	var strReqCFM = addCommas(reqCFM);
	reqFAVfan = reqCFM / 750;
	strReqFAVfan = reqFAVfan.toFixed(2);
	obj.totSqFt.value = strHouseSqFt;
	obj.totCubicFt.value = strHouseCuFt;
	obj.cfmReqd.value = strReqCFM;
	obj.favReqd.value = strReqFAVfan;
}

function calcSV() {
	var obj = document.calculator;
	var svLength = obj.svLength.value;
	var svWidth = obj.svWidth.value;
	var svNumVents = obj.svNumVents.value;
	svSqInPerVent = svLength * svWidth;
	svTotSqFtPerVent = svSqInPerVent / 144;
	var strSvTotSqFtPerVent = svTotSqFtPerVent.toFixed(1);
	svTotSqFt = svTotSqFtPerVent * svNumVents;
	var strSvTotSqFt = svTotSqFt.toFixed(1);
	obj.svTotSqIn.value = svSqInPerVent;
	obj.svCubicFt.value = strSvTotSqFt;
}

function calcRV() {
	var obj = document.calculator;
	var rvDiam = obj.rvDiam.value;
	var rvNumVents = obj.rvNumVents.value;
	rvRadiusPerVent = rvDiam / 2;
	rvCalcPiPerVent = (rvRadiusPerVent * rvRadiusPerVent) * 3.14;
	rvSqFtPerVent = rvCalcPiPerVent / 144;
	rvTotSqFt = rvSqFtPerVent * rvNumVents;
	var strRvTotSqFt = rvTotSqFt.toFixed(0);
	obj.rvSqFt.value = strRvTotSqFt;
}

function calculate(sv, rv) {
	var obj = document.calculator;
	var sqFtLen = obj.sqFtLen.value;
	var sqFtWid = obj.sqFtWid.value;
	var radElem = obj.ceilingHt;
	for(var j = 0; j < radElem.length; j++) {
		if(radElem[j].checked) {
			ceilingHt = radElem[j].value;
			break;
		}
	}
	var airXchg = obj.airXchg.value;
	var svLength = obj.svLength.value;
	var svWidth = obj.svWidth.value;
	var svNumVents = obj.svNumVents.value;
	var rvDiam = obj.rvDiam.value;
	var rvNumVents = obj.rvNumVents.value;
	var houseSqFt = 0, houseCuFt = 0, volPerHrCF = 0, reqCFM = 0, reqFAV = 0, reqFAVfan = 0, atticFAV = 0, intakeFAVfan = 0, intakeFAVattic = 0, outTakeFAVfan = 0, outTakeFAVfan = 0, svSqInPerVent = 0, svTotSqFtPerVent = 0, svTotSqFt = 0, rvRadiusPerVent = 0, rvCalcPiPerVent = 0, rvSqFtPerVent = 0, rvTotSqFt = 0;
	houseSqFt = sqFtLen * sqFtWid;
	var strHouseSqFt = addCommas(houseSqFt);
	houseCuFt = houseSqFt * ceilingHt;
	var strHouseCuFt = addCommas(houseCuFt);
	volPerHrCF = houseCuFt * airXchg;
	var strVolPerHrCF = addCommas(volPerHrCF);
	reqCFM = volPerHrCF / 60; 
	var strReqCFM = addCommas(reqCFM);

	reqCFM = reqCFM.toFixed(0);
	var strReqCFM = addCommas(reqCFM);

	reqFAVfan = reqCFM / 750;
	strReqFAVfan = reqFAVfan.toFixed(2);
	atticFAV = houseSqFt / 300;
	var strAtticFAV = atticFAV.toFixed(2);
	intakeFAVfan = reqFAVfan * .6;
	var strIntakeFAVfan = intakeFAVfan.toFixed(7);
	intakeFAVattic = atticFAV * .6;
	var strIntakeFAVattic = intakeFAVattic.toFixed(1);
	outTakeFAVfan = reqFAVfan * .4;
	var strOutTakeFAVfan = outTakeFAVfan.toFixed(1);
	outTakeFAVattic = atticFAV * .4;
	var strOutTakeFAVattic = outTakeFAVattic.toFixed(1);

	var strSvTotSqFtPerVent = '', strSvTotSqFt = '', strRvCalcPiPerVent = '', rvSqFtPerVent = '', strRvSqFtPerVent = '', strRvTotSqFt = '';
	if(sv) {
		svSqInPerVent = svLength * svWidth;
		svTotSqFtPerVent = svSqInPerVent / 144;
		var strSvTotSqFtPerVent = svTotSqFtPerVent.toFixed(1);
		svTotSqFt = svTotSqFtPerVent * svNumVents;
		var strSvTotSqFt = svTotSqFt.toFixed(1);
	}
	if(rv) {
		rvRadiusPerVent = rvDiam / 2;
		rvCalcPiPerVent = (rvRadiusPerVent * rvRadiusPerVent) * 3.14;
		var strRvCalcPiPerVent = rvCalcPiPerVent.toFixed(2);
		rvSqFtPerVent = rvCalcPiPerVent / 144;
		var strRvSqFtPerVent = rvSqFtPerVent.toFixed(7);
		rvTotSqFt = rvSqFtPerVent * rvNumVents;
		var strRvTotSqFt = rvTotSqFt.toFixed(4);
	}
	reqFAV = svTotSqFt + rvTotSqFt;		//not used?
	var strReqFAV = reqFAV.toFixed(2);	//not used?
	obj.totSqFt.value = strHouseSqFt;
	obj.totCubicFt.value = strHouseCuFt;
	obj.svTotSqIn.value = svSqInPerVent;
	obj.svCubicFt.value = strSvTotSqFt;
	obj.rvSqFt.value = strRvTotSqFt;
	obj.cfmReqd.value = strReqCFM;
	//obj.favReqd.value = strReqFAV;	not used?
	obj.favReqd.value = strReqFAVfan;
	/*
	var tdStyle = 'style="font-family: verdana, helvetica, arial; font-weight: 500; font-weight: 500; font-size: 0.7em;"';
	var txt = '<html><head><title>RESULT WINDOW</title>';
	txt += '</head><body>';
	txt += '<table width="100%" cellspacing="0" cellpadding = "0" border="1" style="border-collapse: collapse">';
	txt += '<tr><td ' + tdStyle + '>Est SQFT</td><td ' + tdStyle + '>Length</td><td ' + tdStyle + '>Width</td><td ' + tdStyle + '>Height</td><td ' + tdStyle + '>TTL CUFT</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + strHouseSqFt + '</td><td ' + tdStyle + '>' + sqFtLen + '</td><td ' + tdStyle + '>' + sqFtWid + '</td><td ' + tdStyle + '>' + ceilingHt + '</td><td ' + tdStyle + '>' + strHouseCuFt + '</td></tr>';
	txt += '<tr><td ' + tdStyle + '>Target Air<br>Exch Per Hr</td><td ' + tdStyle + '>Hourly<br>Volume CF</td><td ' + tdStyle + '>CFM<br>Required</td><td ' + tdStyle + '>Required<br>FAV Fan</td><td ' + tdStyle + '>Existing FAV<br>Attic</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + airXchg + '</td><td ' + tdStyle + '>' + strVolPerHrCF + '</td><td ' + tdStyle + '>' + strReqCFM + '</td><td ' + tdStyle + '>' + reqFAVfan + '</td><td ' + tdStyle + '>' + strAtticFAV + '</td></tr>';
	txt += '<tr><td ' + tdStyle + '>Vent Length</td><td ' + tdStyle + '>Vent Width</td><td ' + tdStyle + '></td><td ' + tdStyle + '>Intake 60%</td><td ' + tdStyle + '>Intake 60%</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + svLength + '</td><td ' + tdStyle + '>' + svWidth + '<td><td ' + tdStyle + '>' + strIntakeFAVfan + '</td><td ' + tdStyle + '>' + strIntakeFAVattic + '</td></tr>';
	txt += '<tr><td ' + tdStyle + '>Square Inch</td><td ' + tdStyle + ' colspan="4"></td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + svSqInPerVent + '</td><td ' + tdStyle + ' colspan="2"><td ' + tdStyle + '>OutTake 40%</td><td ' + tdStyle + '>OutTake 40%</td></tr>';
	txt += '<tr><td ' + tdStyle + ' colspan="3"></td><td ' + tdStyle + '>' + strOutTakeFAVfan + '</td><td ' + tdStyle + '>' + strOutTakeFAVattic + '</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + svNumVents + '</td><td ' + tdStyle + ' colspan="4">Number of Vents</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + strSvTotSqFtPerVent + '</td><td ' + tdStyle + ' colspan="4">SQFTFAV</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + strSvTotSqFt + '</td><td ' + tdStyle + ' colspan="4">TTL SQFT FAV</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + rvDiam + '</td><td ' + tdStyle + ' colspan="2">Vent Diameter</td><td ' + tdStyle + '>' + strRvCalcPiPerVent + '</td><td ' + tdStyle + '>Radius x pi</td></tr>';
	txt += '<tr><td ' + tdStyle + '>' + rvRadiusPerVent + '</td><td ' + tdStyle + ' colspan="2">Radius</td><td ' + tdStyle + '>' + strRvSqFtPerVent + '</td><td ' + tdStyle + '>SQFT FAV</td></tr>';
	txt += '<tr><td ' + tdStyle + ' colspan="3"></td><td ' + tdStyle + '>' + rvNumVents + '</td><td ' + tdStyle + '>Num Vents</td></tr>';
	txt += '<tr><td ' + tdStyle + ' colspan="3"></td><td ' + tdStyle + '>' + strRvTotSqFt + '</td><td ' + tdStyle + '>TTL SQFT FAV</td></tr>';
	txt += '</table></body><html>';
	showResult(txt);
	*/
}

function addCommas(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function showResult(page) {
	height = 325;
	width = 600;
	var properties = "menubar=no,toolbar=no,location=no,scrollbars=no,resizable=yes,status=no,height=" + height + ",width=" + width;
	writeWin = window.open('','new',properties);
	writeWin.document.open();
	writeWin.document.write(page);
	writeWin.document.close();
}	

function isDecimal(val) {
	var str = trim(val);
	return /^[-+]?[0-9]+(\.[0-9]+)?$/.test(str);
}

function isNumber(val) {
	var str = trim(val);
	var numericExpression = /^[0-9]+$/;
	if(str.length > 0) {
		if(str.match(numericExpression)){
			return true;
		} else {
			return false;
		}
	}
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function setFocus(elem) {
	var obj = document.calculator;
	var frmElem = eval('obj.' + elem);
	if(typeof frmElem != 'undefined') {
		setTimeout(function() { frmElem.focus() }, 400);
	}
}

function swapColor(elem, onOff) {
	var obj = document.calculator;
	var chkSv = obj.svCalc.checked;
	var chkRv = obj.rvCalc.checked;
	var selObj = obj.ceilingHt;
	var i, j;
	if(!chkSv) { 
		var elem_arr = new Array('svLength','svWidth','svNumVents');
		for(i = 0; i < elem_arr.length; i++) {
			if(elem == elem_arr[i]) {
				return;
			}
		}
	}
	if(!chkRv) { 
		var elem_arr = new Array('rvDiam','rvNumVents');
		for(j = 0; j < elem_arr.length; j++) {
			if(elem == elem_arr[j]) {
				return;
			}
		}
	}
	var lyr = document.getElementById(elem);
	if(onOff) {
		lyr.style.backgroundColor = '#ffff00';
	} else {
		lyr.style.backgroundColor = '#8ac5ff';
	}
}

function sendRequest() {
	//var site = 'http://www.ilocano.net/suburbanFan/';
	/*
	var site = 'http://localhost/suburbanFan/';
	var obj = document.calculator;
	var strAction = site + 'library/plainMail.php';
	obj.method = 'POST';
	obj.action = strAction;
	obj.submit();
	*/
	var emErr = false;
	var obj = document.calculator;
	var emAddr = trim(obj.emAddr.value);
	if(validate('all')) {
		if(emAddr == '') {
			var err = document.getElementById('err_emAddr1');
			err.style.display = 'block';
			return;
		} else {
			if(!checkEmail(emAddr)) {
				var err = document.getElementById('err_emAddr2');
				err.style.display = 'block';
				return;
			}
		}
		var sqFtLen = obj.sqFtLen.value;
		var sqFtWid = obj.sqFtWid.value;
		var radElem = obj.ceilingHt;
		for(var j = 0; j < radElem.length; j++) {
			if(radElem[j].checked) {
				ceilingHt = radElem[j].value;
				break;
			}
		}
		var airXchg = obj.airXchg.value;
		if(obj.svCalc.checked) {
			var svLength = obj.svLength.value;
			var svWidth = obj.svWidth.value;
			var svNumVents = obj.svNumVents.value;
			var svSqInPerVent = obj.svTotSqIn.value;
			var strSvTotSqFt = obj.svCubicFt.value;
		}
		if(obj.rvCalc.checked) {
			var rvDiam = obj.rvDiam.value;
			var rvNumVents = obj.rvNumVents.value;
			var strRvTotSqFt = obj.rvSqFt.value;
		}
		var strHouseSqFt = obj.totSqFt.value;
		var strHouseCuFt = obj.totCubicFt.value; 
		var strReqCFM = obj.cfmReqd.value;
		//var fReqCFM = strReqCFM.replace(",","");
		//fReqCFM = parseFloat(fReqCFM);
		//strReqCFM = strReqCFM.toFixed(0);
		var houseCuFt = strHouseCuFt.replace(/[^0-9]/g, '');	
		var volPerHrCF = houseCuFt * airXchg;
		reqCFM = volPerHrCF / 60; 
		reqFAVfan = reqCFM / 750;
		var strReqFAVfan = obj.favReqd.value;
		var emAddr = obj.emAddr.value;
		if(obj.svCalc.checked && obj.rvCalc.checked) {
			var params = 'sqfl=' + sqFtLen + '&sqfw=' + sqFtWid + '&ch=' + ceilingHt + '&ax=' + airXchg + '&svl=' + svLength + '&svw=' + svWidth + '&svn=' + svNumVents + '&rvd=' + rvDiam + '&rvn=' + rvNumVents + '&hsf=' + strHouseSqFt + '&hcf=' + strHouseCuFt + '&sqpv=' + svSqInPerVent + '&svsf=' + strSvTotSqFt + '&rvsf=' + strRvTotSqFt + '&rcfm=' + strReqCFM + '&rfav=' + reqFAVfan + '&emAddr=' + emAddr;
		} else if(obj.svCalc.checked && !obj.rvCalc.checked) {
			var params = 'sqfl=' + sqFtLen + '&sqfw=' + sqFtWid + '&ch=' + ceilingHt + '&ax=' + airXchg + '&svl=' + svLength + '&svw=' + svWidth + '&svn=' + svNumVents + '&hsf=' + strHouseSqFt + '&hcf=' + strHouseCuFt + '&sqpv=' + svSqInPerVent + '&svsf=' + strSvTotSqFt + '&rcfm=' + strReqCFM + '&rfav=' + reqFAVfan + '&emAddr=' + emAddr;
		} else if(!obj.svCalc.checked && obj.rvCalc.checked) {
			var params = 'sqfl=' + sqFtLen + '&sqfw=' + sqFtWid + '&ch=' + ceilingHt + '&ax=' + airXchg + '&rvd=' + rvDiam + '&rvn=' + rvNumVents + '&hsf=' + strHouseSqFt + '&hcf=' + strHouseCuFt + '&rvsf=' + strRvTotSqFt + '&rcfm=' + strReqCFM + '&rfav=' + reqFAVfan + '&emAddr=' + emAddr;
		} else if(!obj.svCalc.checked && !obj.rvCalc.checked) {
			var params = 'sqfl=' + sqFtLen + '&sqfw=' + sqFtWid + '&ch=' + ceilingHt + '&ax=' + airXchg + '&hsf=' + strHouseSqFt + '&hcf=' + strHouseCuFt + '&rcfm=' + strReqCFM + '&rfav=' + reqFAVfan + '&emAddr=' + emAddr;
		}
		var targId = 'section2';
		var dest = 'library/plainMail.php';
		try {
			xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			alert('browser doesn\'t support ajax.');
		}
		xmlhttp.open("POST", dest, true);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", params.length);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.onreadystatechange = function() { triggered(targId); } ;
		xmlhttp.send(params);
	} else {
		if(emAddr == '') {
			var err = document.getElementById('err_emAddr1');
			err.style.display = 'block';
		} else {
			if(!checkEmail(emAddr)) {
				var err = document.getElementById('err_emAddr2');
				err.style.display = 'block';
			}
		}
	}
}

function triggered(targId) {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		var lyr = document.getElementById(targId);
		lyr.innerHTML = xmlhttp.responseText;
	}
}

function writeLayer(lyrId, sText, wid) { 
	if(brwsrType.ns4) {
		var oLayer; 
		oLayer.open(); 
		oLayer.write(sText); 
		oLayer.close(); 
	} 
	else if (brwsrType.ns5 || brwsrType.dom) { 
		document.getElementById(ID).innerHTML = sText; 
	} 
	else if (brwsrType.ie4) {
		document.all[ID].innerHTML = sText;
	}	
	var lyr = document.getElementById(lyrId);
	return;
} 

function populate() {
	clearForm('all');
	var obj = document.calculator;
	var sqFtLen = obj.sqFtLen;
	var sqFtWid = obj.sqFtWid;
	var ceilingHt = obj.ceilingHt;
	var airXchg = obj.airXchg;
	var svLength = obj.svLength;
	var svWidth = obj.svWidth;
	var svNumVents = obj.svNumVents;
	var rvDiam = obj.rvDiam;
	var rvNumVents = obj.rvNumVents;
	var ceilingHt = obj.ceilingHt;
	var emAddr = obj.emAddr;
	ceilingHt[0].checked = true;
	sqFtLen.value = 24;
	sqFtWid.value = 50;
	airXchg.value = 14;
	svLength.value = 12;
	svWidth.value = 6;
	svNumVents.value = 3;
	rvDiam.value = 16;
	rvNumVents.value = 1;
	emAddr.value = 'smartlao@yahoo.com';
	obj.calcSv.disabled = false;
	obj.calcRv.disabled = false;
}

