function is_number (aString) {
	reg = /^[0-9]+$/;
    if (aString.match(reg))
        return true;
    return false;
}

function is_float (aString) {
	reg = /^[0-9]+(\.[0-9]+)?$/;
    if (aString.match(reg))
        return true;
    return false;
}


function float_prepare (aString) {
	reg = /^\.[0-9]+?$/;
    if (aString.match(reg))
        return '0' + aString;
    return aString;
}

function areYouSure(aMessage) {
	if (aMessage == null)
		aMessage = "Are You Sure?";
    if (confirm(aMessage))
        return true;
    return false;
}

function CheckForm (_obj, ShowMessage) {  
	var mess = "";
	
	// first panel
	InputOBJ = _obj.p11t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Output Rating";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p12t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Average Input";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p15t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - PresentBurner/Boiler Efficiency";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p17t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Annual Run Hours";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p18t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	InputOBJ.value = float_prepare(InputOBJ.value);
	if(!is_float(InputOBJ.value) || InputOBJ.value < 0.25) {
		mess += "\n - Fuel Cost\n     Fuel cost must be greater then .25";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	// second panel
	
	InputOBJ = _obj.p21t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	InputOBJ.value = float_prepare(InputOBJ.value);
	if(!is_float(InputOBJ.value) || InputOBJ.value < 0 || InputOBJ.value > 1 ) {
		mess += "\n - Removal of Linkage Wear (0 to 1.0)";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p22t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	InputOBJ.value = float_prepare(InputOBJ.value);
	if(!is_float(InputOBJ.value) || InputOBJ.value < 0.5 || InputOBJ.value > 3 ) {
		mess += "\n - Improved Combustion (0.5 to 3.0)";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p23t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	InputOBJ.value = float_prepare(InputOBJ.value);
	if(!is_float(InputOBJ.value) || InputOBJ.value < 0.5 || InputOBJ.value > 1.5 ) {
		mess += "\n - Increased Turndown (0.5 to 1.5)";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	// third panel

	InputOBJ = _obj.p31t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	/*
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Output Rating";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';
	*/

	InputOBJ = _obj.p32t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);};
	/*
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Average Input";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';
	*/

	InputOBJ = _obj.p37t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	/*
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Burner/Boiler Annual Run Hours";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';
	*/
	
	InputOBJ = _obj.p38t;
	InputOBJ.value = float_prepare(InputOBJ.value);
	/*
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_float(InputOBJ.value)) {
		mess += "\n - Fuel Cost";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';
	*/

	// fourth panel

	InputOBJ = _obj.p43t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Total Number of Boilers";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	InputOBJ = _obj.p45t;
	InputOBJ.onblur = function () {CheckForm (_obj, false);} ;
	if(!is_number(InputOBJ.value)) {
		mess += "\n - Estimated Installation Costs";
		InputOBJ.className = 'TFInputErr';
	}
	else
		InputOBJ.className = 'TFInput';

	if(mess != "") {
		if (!(ShowMessage!=null && ShowMessage == false))
			alert("The following fields are required: " + mess);
		return false;
	}
	else
		return true;
}



function Calculate (_obj) {  
	if (!CheckForm (_obj))
		return;
	
	_obj.p13m.value = Math.round( parseFloat(_obj.p11t.value) * parseFloat(_obj.p12t.value) / 100 * 100 ) / 100;
	_obj.p14m.value = Math.round( parseFloat(_obj.p13m.value) * 33479);
	_obj.p16m.value = Math.round( parseFloat(_obj.p14m.value) / parseFloat(_obj.p15t.value) * 100);
	_obj.p19m.value = Math.round( parseFloat(_obj.p16m.value) * parseFloat(_obj.p17t.value) * parseFloat(_obj.p18t.value) * 2.83 / 100000 * 100 ) / 100;

	_obj.p24m.value = Math.round( (parseFloat(_obj.p21t.value) + parseFloat(_obj.p22t.value) + parseFloat(_obj.p23t.value)) * 10 ) / 10;

	_obj.p33m.value = Math.round( parseFloat(_obj.p31t.value) * parseFloat(_obj.p32t.value) / 100 * 100 ) / 100;
	_obj.p34m.value = Math.round( parseFloat(_obj.p33m.value) * 33479);
	_obj.p35m.value = Math.round( parseFloat(_obj.p15t.value) / ((100 - parseFloat(_obj.p24m.value))/100) * 10 ) / 10;
	_obj.p36m.value = Math.round( parseFloat(_obj.p34m.value) / parseFloat(_obj.p35m.value) * 100);
	_obj.p39m.value = Math.round( parseFloat(_obj.p36m.value) * parseFloat(_obj.p37t.value) * parseFloat(_obj.p38t.value) * 2.83 / 100000 * 100 ) / 100;
	
	_obj.p41m.value = Math.round( (parseFloat(_obj.p19m.value) - parseFloat(_obj.p39m.value)) * 100 ) / 100;
	_obj.p42m.value = Math.round( parseFloat(_obj.p41m.value) / parseFloat(_obj.p18t.value));
	_obj.p44m.value = Math.round( parseFloat(_obj.p41m.value) * parseFloat(_obj.p43t.value) * 100 ) / 100;
	_obj.p46m.value = Math.round( parseFloat(_obj.p45t.value) / parseFloat(_obj.p41m.value) * 10 ) / 10;

	_obj.p47m.value = Math.round( (parseFloat(_obj.p42m.value) * 35723) / 1000000 * 120 ) ;
	_obj.p48m.value = Math.round( parseFloat(_obj.p47m.value) * 0.000453592 );
	_obj.p49m.value = Math.round( parseFloat(_obj.p48m.value) / 4.62 );
}
