# OxJS — A JavaScript Library for Web Applications

TL;DR: OxJS will be out soon. But it already works. See it in action!

OxJS is a new JavaScript library. It was originially developed as part of pan.do/ra, and is currently awaiting its first proper release. While it still has bugs, holes, design errors and lots of cruft, some parts of it may already be useful for a more general audience.

The core of OxJS is `Ox.js`, a general-purpose utility library (think underscore.js, but quite different). It provides lots of tools for dealing with dates, has all the missing Math functions (plus some for geographic coordinates), methods like range or sub for those who like Python (and even some options for those who never want to write a `for` loop again), can tokenize and minify JavaScript, comes with its own documentation format, including inline tests, and can do about 23 other cool things.

Then there are modules, most notably `Ox.UI`, a user interface library for HTML5-compliant browsers (think YUI, but again rather different). `Ox.UI` has tons of widgets: all the form elements you ever wanted, resizable panels and dialogs, menus that actually work, lists and tables that can hold a million items, maps and calendars done right, and a great video player. All these widgets are designed to that you can focus on your application and argue less with the DOM. And if you need to, each of them provides, by virtue of parasitical inheritance, the exact same API as a jQuery DOM object. But `Ox.UI` also provides a framework to bring these elements together, including custom events, keyboard focus, remote API discovery and client-side URL handling. It is ideal for real applications with back-ends that speak JSON and don't serve any HTML beyond `<body></body>`.

Among the other modules, `Ox.Unicode` helps with sorting, `Ox.Image` can do steganography, and `Ox.Geo` is great if you're dealing with geographical data (or want to use a really nice set of flag icons).

Finally, there is a small but growing number of articles and tutorials, and extensive documentation (which, needless to say, may still be incomplete, and sometimes even incorrect). If you want to get involved, file bugs, submit patches or give any other kind of feedback, please head over to the development section.