let my={}
function init(){let version='0.61'
my.wd=300
my.ht=250
let bdStr=''
my.doneClr='#cde'
my.clrs=['#669','#336']
let curnum=0
let clrN=0
for(let i=0;i<8;i++){bdStr+='
'
clrN=1-clrN
for(let j=0;j<8;j++){clrN=1-clrN
let clr=my.clrs[clrN]
bdStr+='
'
bdStr+='
'
curnum++}
bdStr+='
'}
let s=wrap({style:'text-align:center;'},wrap({id:'scoretxt',cls:'large',pos:'dib',style:'left:3px; bottom:3px'}),wrap({tag:'btn',pos:'dib',style:'margin-left:30px',fn:'restart()'},'Restart'),bdStr)
docInsert(s)
my.imgHome=(document.domain=='localhost'?'/mathsisfun':'')+'/games/images/'
my.chgs=[-17,-15,-10,-6,6,10,15,17]
restart()
scoreUpdate()}
function restart(){my.squares=[]
let clrN=0
for(var i=0;i<64;i++){my.squares[i]=false
document.getElementById('cell'+i).innerHTML=''
document.getElementById('cell'+i).style.backgroundColor=my.clrs[clrN]
if((i+1)%8)clrN=1-clrN}
document.getElementById('cell0').innerHTML=''
document.getElementById('cell0').style.backgroundColor=my.doneClr
my.squares[0]=true
my.oldPos=0
my.score=0
scoreUpdate()}
function moveto(square){let currPos=parseInt(square.id.substr(4))
let validQ=false
for(let i=0;i'
document.getElementById('cell'+currPos).style.backgroundColor=my.doneClr
my.oldPos=currPos
my.squares[currPos]=true}
scoreUpdate()}
function scoreUpdate(){let notN=0
for(var i=0;i<64;i++)if(my.squares[i]!=true)notN++
let s='Moves: '+my.score+' ('+notN+' squares left)'
if(notN==0){s='You WIN, in only '+my.score+' moves'}
document.getElementById('scoretxt').innerHTML=s}
function docInsert(s){let div=document.createElement('div')
div.innerHTML=s
let script=document.currentScript
script.parentElement.insertBefore(div,script)}
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 '