document.observe("dom:loaded", function() { $$('INPUT').each(function(inputControl) { inputControl.value = ''; }); $$('TR.serverCalcRow INPUT').each(function(myInput) { myInput.observe('keyup', ValidateAndCalculateRow); }); $('totEnergy').observe('keyup', function ValidateAndCalculateTotalEnergy(event) { var element = event.element(); if(!IsNumeric(element.value, true)) { alert('Please enter only numbers'); element.value = element.value.slice(0, element.value.length-1); } CalculateEffefiency(); }); function ValidateAndCalculateRow(event) { var element = event.element(); if(!IsNumeric(element.value, false)) { alert('Please enter whole numbers'); element.value = element.value.slice(0, element.value.length-1); ValidateAndCalculateRow(event); } else { var elementParent = element.up(1).down(); var mcups = elementParent.next('TD', 0).innerHTML; var num = elementParent.next('TD', 1).down('INPUT').value; var util = elementParent.next('TD', 2).down('INPUT').value; if(num != '' && util != '') { elementParent.next('TD', 3).innerHTML = (parseInt(num) * (parseInt(util) * .01) * parseFloat(mcups)).toString().replace(/^([\d,]+)\.(\d\d\d)\d*/,"$1.$2"); } else { elementParent.next('TD', 3).innerHTML = ''; } $('serverTotalMCUPS').innerHTML = CalculateTotal(); CalculateEffefiency() } } function CalculateTotal() { var totalMCUPS = 0; var calculate = false; $$('.serverTotalOutput').each(function(rowTotal) { if(rowTotal.innerHTML != '' && IsNumeric(rowTotal.innerHTML, true)) { totalMCUPS = (parseFloat(totalMCUPS) + parseFloat(rowTotal.innerHTML)).toString().replace(/^([\d,]+)\.(\d\d\d)\d*/,"$1.$2"); calculate = true; } }); if(!calculate) { totalMCUPS = ''; } return totalMCUPS; } function CalculateEffefiency() { if($('serverTotalMCUPS').innerHTML != '&nbsp;' && $('serverTotalMCUPS').innerHTML != null && $('serverTotalMCUPS').innerHTML != '' && $('totEnergy').value != '' && !(($('totEnergy').value.length == 1) && ($('totEnergy').value.charAt(0) == '.'))) { $('totalEffeciency').innerHTML = (parseFloat($('serverTotalMCUPS').innerHTML) / parseFloat($('totEnergy').value)).toString().replace(/^([\d,]+)\.(\d\d\d)\d*/,"$1.$2"); } else { $('totalEffeciency').innerHTML = ''; } } function IsNumeric(sText, decimals) { var validChars; if(decimals == true) { validChars = "0123456789."; } else { validChars = "0123456789"; } var isNumber=true; var Char; for (i = 0; i < sText.length && isNumber == true; i++) { Char = sText.charAt(i); if (validChars.indexOf(Char) == -1) { isNumber = false; } } return isNumber; } });
