Head First JavaScript
A Learner's Companion to JavaScript