A cross-browser JavaScript range and selection library