JavaScript demystified