A few days without internet do strange things to a computer addict. In my case I start to rummage frenetically though old projects to see if there is anything I can finish, polish, or do something with that doesn't require internet access.
I wrote the bulk of it in about an evening, and spent a few more evenings applying spit and polish until I was satisfied that it worked the way I wanted. The whole thing is about 300 lines of mostly uncommented code running on top of jQuery — well, actually as a jQuery plugin.
The interresting bits
#### # .# # ### #*@ # # $ # # ### ####
@ is the worker,
# are walls,
. are docks,
$ are boxes, and so on...
The symbols are image-replaced with CSS when the level is live, but the whole thing works without CSS. You can disable the styles if you desire to play the levels in pure ASCII.
This also means that the game is printable. At any moment in gameplay you can grab a hardcopy of your status and frame it. I am hard pressed to think of other printable games. Copying the level onto the clipboard also works just as it would any other text. Not really useful features for a game, but interesting side-effects nonetheless.
Because parsing all the levels immediately as the game loads up — especially on level collections that have very many levels — is quite labour intensive, I am applying a recent jQuery plugin of mine, .processEach(), to prevent the browser from locking up. In short, it works like .each() but yields the process every iteration to allow the browser some time to do other things. It's perhaps a subject of another entry.
Have fun with the game and the source (which are released under the GPL v3). I suspect that it might one day be exactly what a Sokoban level blog is looking for, but for now it mostly remains a curiosity rather than a spectacular reproduction of the game,