rewrote javascript for full async operation, added support for different chart type per graph, smart updating only the charts on screen