var displayed = false; var slide; var objInterval; var interval = 1000; /* * create slider for drop down, and provide reasonable values */ function init() { slide = new Fx.Slide('calculator', {duration: 280, fps: 30, transition:Fx.Transitions.Sine.easeOut}); slide.hide(); slide.addEvent('onStart', function(){ if (!displayed) { document.getElementById("seesaving").src = "img/seesaving-down.png"; displayed = true; } else { displayed = false; } }); slide.addEvent('onComplete', function(){ if (!displayed) document.getElementById("seesaving").src = "img/seesaving.png"; }); $('toggle').addEvent('click', function(e){ e = new Event(e); slide.toggle(); e.stop(); }); // calculate_savings(); } /* * apply the formula */ function calculate_savings() { weekly_gas = document.getElementById("gas").value; weekly_non_gas = document.getElementById("non_gas").value; if (!isNaN(weekly_gas) && !isNaN(weekly_non_gas)) { a = weekly_gas * 52 * 0.04; if (weekly_non_gas * 52 < 5000) b = weekly_non_gas * 52 * 0.005; else b = ((((weekly_non_gas * 52) - 5000) * 0.01)+25); //c = (((5000 * 0.005+weekly_non_gas * 52) - 5000) * 0.01); c = 0; _rv = ((a + b + c) > 0) ? (a + b + c) : 0; if (_rv > 600) _rv = 600 replaceText("savings", (_rv).toFixed(2)); } } /* * control the user input * * disallow 16, 65-90, possible numpads 96-105, 106-[110]-111, 186-189, 191-192, 219-222, and multiple dots * */ function validate(evt, target) { if ((evt = (evt) ? evt : (window.event) ? window.event : "")) { key = (evt.which) ? evt.which : evt.keyCode; if (key ==13) calculate_savings(); else if ((key >= 16 && key <= 18) || (key >= 65 && key <= 90) || (key >= 106 && key <= 109) || (key >= 186 && key <= 189) || key == 191 || key == 192 || (key >= 219 && key <= 222) || (key == 111)) return false; else if (key == 190 && target.value.indexOf(".") != -1) return false; } return true; } /* * Start/stop polling * called from blur/focus events */ function stopPolling() { if (objInterval) clearInterval(objInterval); } function startPolling() { if (objInterval) clearInterval(objInterval); objInterval = setInterval(calculate_savings, interval); } function replaceText(id, value) { if ((field=document.getElementById(id))) { while(field.firstChild) field.removeChild(field.firstChild); field.appendChild(document.createTextNode(value)); } }