Ajax spinner, old browsers gracefully fail, .less refactoring etc.. see diff