"How would I implement an offline navigation? (which is currently really not possible in JavaScript)" - wow, just wow. Beyond the fact that this is just plain wrong - there are packaged apps that ship all assets on install, as well as great offline JS libraries - you do realize these things (offline, telephony, etc) are _APIs_ right? No _language_ Just Does™ offline or telephony - for instance, C++ is not somehow magically self-aware of internet connectivity, it's simply a language used by developers to code against device hardware/firmware which then provides _APIs_ for these capabilities.
JavaScript is no less capable of supporting these APIs, look at Node.js for instance, it has most of the server _APIs_ you find in other server implementations that use different languages as a base (and the Firefox platform has many of them already, with many more to on the way!)