A lightweight component-oriented JavaScript framework for complex AJAX UIs