better js code encapsulation

dimension widget, data-zoom, and application are now independent
add global events for re-rendering nodes