//Sets a timer to press Save button at specific time//Optional parameter: saveTimerInterval in milliseconds - how often to check the time(default: 1000)varsaveTimer=newfunction(){varwpSave,wpTimer,destDate,timerId=nullif(!window.saveTimerInterval)saveTimerInterval=1000//every secondthis.onLoad=function(){wpSave=document.getElementById('wpSave')if(!wpSave)returnwpTimer=document.createElement('a')wpTimer.id='wptimer'wpTimer.title='Click Save button as specific time'wpTimer.href='javascript:saveTimer.click()'stopTimer()wpSave.parentNode.insertBefore(wpTimer,wpSave)}this.click=function(e){stopTimer()destDate=newDate()vartt,when=prompt('Now:\n'+destDate.getHours()+':'+dd(destDate.getMinutes())+':'+dd(destDate.getSeconds())+'\n\Click Save button at:')if(!when||!when.match(/^[\d:]+$/))returnwhen=when.split(':')if(tt=when.pop())destDate.setSeconds(tt)if(tt=when.pop())destDate.setMinutes(tt)if(tt=when.pop())destDate.setHours(tt)tt=destDate-newDate()if(tt<1000)returnalert('Please enter future time\n as\n mm:ss\n or\n hh:mm:ss')//if (confirm ('Will press Save in about ' + showTime(tt) + '\n at ' + destDate))timerId=setInterval('saveTimer.timer()',saveTimerInterval)}this.timer=function(){if(!timerId)returnvardiff=destDate-newDate()if(diff<=999){stopTimer()wpSave.click()}else{wpTimer.innerHTML=showTime(diff)}}functionstopTimer(){wpTimer.innerHTML='#'if(timerId){clearInterval(timerId)timerId=null}}functionshowTime(ms){//milliseconds -> mm:ss or hh:mm:ssvarhh='',mm,ss=Math.floor(ms/1000)mm=Math.floor(ss/60)if(mm>60){hh=Math.floor(mm/60)+':'mm=dd(mm%60)}returnhh+mm+':'+dd(ss%60)}functiondd(d){if(d<=9)return'0'+delsereturnd}}if(mw.config.get('wgAction')=='edit'||mw.config.get('wgAction')=='submit')$(saveTimer.onLoad)