function myTimerHandler() { } Code down there: /* myTimerHandler - Jay Lawrence 2006 */ myTimerHandler.prototype.setTimer = function(msg) { var myTimerHandler = this; function timerRelay() { myTimerHandler.handleTimer(msg); } setTimeout(timerRelay, 2500); } myTimerHandler.prototype.handleTimer = function(msg) { this.enableInputs(msg); } myTimerHandler.prototype.enableInputs = function(el) { var box = document.getElementById(el); var inputs = box.getElementsByTagName('input'); for(i in inputs){ inputs[i].disabled = false; } } myTimerHandler.prototype.disableInputs = function(el) { var box = document.getElementById(el); var inputs = box.getElementsByTagName('input'); for(i in inputs){ inputs[i].disabled = true; } } var myTH = new myTimerHandler(); /* Ajax stuff */ var xmlHttp = GetXmlHttpObject(); var watchElements = new Array(); function stateChanged(){ if (xmlHttp.readyState==3){ for(i in watchElements){ myTH.setTimer(watchElements[i][0]); } } else if (xmlHttp.readyState==4){ tmpElements = watchElements; for(i in tmpElements){ setCount('chk_' + tmpElements[i][1]); document.getElementById(tmpElements[i][1]).className = xmlHttp.responseText; watchElements[i][0] = null; watchElements[i][1] = null; watchElements.length--; } } } function doTransaction(method,url){ xmlHttp.open(method,url,true); xmlHttp.onreadystatechange = stateChanged; xmlHttp.send(null); } function setupTransaction(box, input, url, args, val){ watchElements[watchElements.length + 1] = [box,input]; url = prepareURL(url, args, val); doTransaction("GET", url); } function GetXmlHttpObject(handler){ var objXMLHttp=null; if (window.XMLHttpRequest){ objXMLHttp=new XMLHttpRequest(); } else if (window.ActiveXObject){ objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); } return objXMLHttp; } function rTrim(sString, sChar){ while (sString.substring(sString.length-1, sString.length) == sChar){ sString = sString.substring(0,sString.length-1); } return sString; } function setCheckValue(obj){ if(obj.value == 'on') obj.value = 'off'; else obj.value = 'on'; }