var w,h,my={} function init(){my.version='0.82' w=490 h=120 my.sliderWd=430 var s=wrap({cls:'js'},'
','','
24 Hour
','
AM/PM
','',wrap({id:'val1',tag:'out',pos:'abs',style:'top:9px; left:30px;'}),wrap({id:'val2',tag:'out',pos:'abs',style:'top:79px; left:30px;'})) docInsert(s) my.can=new Can('canvasId',w,h,3) update()} function update(){var timeEl=document.getElementById('r1') var timeVal=Number(timeEl.value) var hr=parseInt(timeVal/12) var mn=(timeVal-hr*12)*5 if(mn<10)mn='0'+mn if(hr==24){hr=0} var valEl=document.getElementById('val1') var xpos=timeVal*(my.sliderWd/288)-10 xpos=Math.max(xpos,0) xpos=Math.min(xpos,my.sliderWd-30) valEl.style.left=xpos+'px' var str24=hr+':'+mn if(hr<10){str24='0'+hr+':'+mn} valEl.innerHTML=str24 var ampmEl=document.getElementById('val2') var ampm='' if(hr==0){ampm='12:'+mn+' AM' if(mn==0)ampm='12 Midnight'} if(hr>0&&hr<12){ampm=hr+':'+mn+' AM'} if(hr==12){ampm='12:'+mn+' PM' if(mn==0)ampm='12 Noon'} if(hr>12){ampm=hr-12+':'+mn+' PM'} ampmEl.style.left=xpos-10+'px' ampmEl.innerHTML=ampm var ratio=timeVal/288 let clr=[255,255,220] if(ratio<0.15){clr=[0,0,50]} if(ratio>=0.15&&ratio<0.35){clr=gradientClr([0,0,50],[255,255,220],(ratio-0.15)*5)} if(ratio>=0.7&&ratio<0.9){clr=gradientClr([255,255,220],[0,0,50],(ratio-0.7)*5)} if(ratio>=0.9){clr=[0,0,50]} let g=my.can.g g.fillStyle='rgba('+clr[0]+','+clr[1]+','+clr[2]+',1)' g.rect(0,0,g.canvas.width,120) g.fill() var txtClr='#000000' if(clr[0]<70){txtClr='#ffffff'} document.getElementById('24hr').style.color=txtClr document.getElementById('ampm').style.color=txtClr} function gradientClr(fromClr,toClr,ratio){return[parseInt(ratio*toClr[0]+(1-ratio)*fromClr[0]),parseInt(ratio*toClr[1]+(1-ratio)*fromClr[1]),parseInt(ratio*toClr[2]+(1-ratio)*fromClr[2])]} function docInsert(s){let div=document.createElement('div') div.innerHTML=s let script=document.currentScript script.parentElement.insertBefore(div,script)} class Can{constructor(id,wd,ht,ratio){this.id=id this.wd=wd this.ht=ht this.ratio=ratio let el=document.getElementById(id) el.width=wd*ratio el.style.width=wd+'px' el.height=ht*ratio el.style.height=ht+'px' this.g=el.getContext('2d') this.g.setTransform(ratio,0,0,ratio,0,0) this.el=el return this} clear(){this.g.clearRect(0,0,this.wd,this.ht)} mousePos(ev){let bRect=this.el.getBoundingClientRect() let mouseX=(ev.clientX-bRect.left)*(this.el.width/this.ratio/bRect.width) let mouseY=(ev.clientY-bRect.top)*(this.el.height/this.ratio/bRect.height) return[mouseX,mouseY]}} function wrap({id='',cls='',pos='rel',style='',txt='',tag='div',lbl='',fn='',opts=[]},...mores){let s='' s+='\n' txt+=mores.join('') s+={btn:()=>{if(cls.length==0)cls='btn' return '