Have you tried to step through the code in a debugger to see exactly where it freezes?
This may work in your browser, but I don't think it works the same in all browsers. You shouldn't use a for in loop for arrays in JavaScript. Use them to iterate properties on objects.
for(k in bullets){
k.draw();
}
Use this instead...
for(var i = 0; i < bullets.length; ++i){
bullets[i].draw();
}
That probably isn't the issue, but it's something to look out for.
I'd say use the debugging tools in your browser. Set some breakpoints. You'll be able to pinpoint the exact issue and we'll be able to help you much easier!