Code refactor and iOS8 fix

abstract the generic reporting js, and work around iOS8 counting
innerHTML as "content change" now and blocking some of the regular event
cascade