Repository: openmeetings
Updated Branches:
  refs/heads/master bae47d532 -> 2f44b3874


[OPENMEETINGS-1714] more issues are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/2f44b387
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/2f44b387
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/2f44b387

Branch: refs/heads/master
Commit: 2f44b38748b9405e61605d6d5f1a58c7c7baf786
Parents: bae47d5
Author: Maxim Solodovnik <[email protected]>
Authored: Mon Oct 2 15:10:08 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Mon Oct 2 15:10:08 2017 +0700

----------------------------------------------------------------------
 .../org/apache/openmeetings/web/admin/admin.js  |   2 +-
 .../org/apache/openmeetings/web/common/main.js  |   6 +-
 .../openmeetings/web/common/tree/filetree.js    |   6 +-
 .../openmeetings/web/pages/ResetPage.java       |   2 +-
 .../openmeetings/web/pages/auth/SignInPage.java |   4 +-
 .../web/room/activities/activities.js           |  32 +++--
 .../org/apache/openmeetings/web/room/room.js    | 128 +++++++++----------
 .../apache/openmeetings/web/room/settings.js    |   6 +-
 .../openmeetings/web/room/sidebar/upload.js     |   6 +-
 .../openmeetings/web/room/swf-functions.js      |   6 +-
 .../openmeetings/web/room/wb/interview-area.js  |   5 +-
 .../openmeetings/web/room/wb/tool-arrow.js      |  28 ++--
 .../openmeetings/web/room/wb/tool-clipart.js    |   4 +-
 .../openmeetings/web/room/wb/tool-ellipse.js    |   2 +-
 .../openmeetings/web/room/wb/tool-line.js       |   2 +-
 .../openmeetings/web/room/wb/tool-paint.js      |   2 +-
 .../openmeetings/web/room/wb/tool-rect.js       |   2 +-
 .../openmeetings/web/room/wb/tool-shape-base.js |   6 +-
 .../openmeetings/web/room/wb/tool-shape.js      |  10 +-
 .../org/apache/openmeetings/web/room/wb/uuid.js |  13 +-
 .../apache/openmeetings/web/room/wb/wb-area.js  |  44 +++----
 .../apache/openmeetings/web/room/wb/wb-board.js | 115 ++++++++---------
 .../web/user/calendar/calendar-functions.js     |   8 +-
 .../apache/openmeetings/web/user/chat/chat.js   |  47 +++----
 .../openmeetings/web/user/dashboard/rss.js      |  27 +---
 25 files changed, 247 insertions(+), 266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
index 85a4f8b..f5ed65f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
@@ -3,7 +3,7 @@ function adminPanelInit() {
        if (typeof extAdminPanelInit === 'function') {
                extAdminPanelInit();
        }
-       let f = $('#adminForm'), t = $('#adminTable')
+       const f = $('#adminForm'), t = $('#adminTable')
                , h = $(window).height() - 5;
        f.height(h - f.position().top);
        t.height(h - t.position().top);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
index 1e20c77..d869ba2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
@@ -1,18 +1,18 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 Wicket.BrowserInfo.collectExtraInfo = function(info) {
-       var l = window.location;
+       const l = window.location;
        info.codebase = l.origin + l.pathname;
        info.settings = JSON.stringify(getSettings());
 };
 function getSettings() {
-       var s = localStorage.getItem("openmeetings");
+       let s = localStorage.getItem("openmeetings");
        if (!!s) {
                s = JSON.parse(s);
        }
        return s || {};
 }
 function saveSetting(name, val) {
-       var s = getSettings();
+       let s = getSettings();
        s[name] = val;
        localStorage.setItem("openmeetings", JSON.stringify(s));
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/filetree.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/filetree.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/filetree.js
index 0b280d6..57f794c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/filetree.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/filetree.js
@@ -1,11 +1,11 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 function dragHelper() {
-       var s = $(this);
+       const s = $(this);
        if (s.parents('a').hasClass('ui-state-active')) {
                s = $('.ui-state-active .ui-draggable.ui-draggable-handle');
        }
-       var c = $('<div/>').attr('id', 
'draggingContainer').width(80).height(36);
-       var h = $('<div class="ui-corner-all 
ui-widget-header"/>').append(s.clone()).width(s.width());
+       const c = $('<div/>').attr('id', 
'draggingContainer').width(80).height(36)
+               h = $('<div class="ui-corner-all 
ui-widget-header"/>').append(s.clone()).width(s.width());
        return c.append(h);
 }
 function treeRevert(dropped) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
index bed30fb..727c972 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
@@ -26,7 +26,7 @@ import 
org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public class ResetPage extends BaseNotInitedPage {
        private static final long serialVersionUID = 1L;
-       private final String RESET_PARAM = "hash";
+       private static final String RESET_PARAM = "hash";
 
        public ResetPage(PageParameters pp) {
                String resetHash = pp.get(RESET_PARAM).toString();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index 7970346..9a26abc 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -110,9 +110,7 @@ public class SignInPage extends BaseInitedPage {
                                        log.debug("redirectUrl=" + redirectUrl);
                                        throw new 
RedirectToUrlException(redirectUrl);
                                }
-                       } catch (IOException e) {
-                               log.error("OAuth2 login error", e);
-                       } catch (NoSuchAlgorithmException e) {
+                       } catch (IOException|NoSuchAlgorithmException e) {
                                log.error("OAuth2 login error", e);
                        }
                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
index 7bf6281..e8ed19a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
@@ -1,16 +1,22 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Activities = function() {
-       var closedHeight = "20px", openedHeight = "345px";
+       const closedHeight = "20px";
+       let activities, openedHeight = "345px", inited = false;
 
-       function isInited(activities) {
-               return !!activities.resizable("instance");
+       function isInited() {
+               if (!inited) {
+                       activities = $('#activities');
+                       if (!!activities.resizable("instance")) {
+                               inited = true;
+                       }
+               }
+               return inited;
        }
-       function isClosed(activities) {
+       function isClosed() {
                return activities.height() < 24;
        }
        function open() {
-               var activities = $('#activities');
-               if (!isInited(activities)) {
+               if (!isInited()) {
                        activities.resizable({
                                handles: "n, e"
                                , disabled: isClosed(activities)
@@ -23,7 +29,7 @@ var Activities = function() {
                                }
                        });
                }
-               if (isClosed(activities)) {
+               if (isClosed()) {
                        $('.control.block .ui-icon', 
activities).removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
                        $('.control.block', 
activities).removeClass('ui-state-highlight');
                        activities.animate({height: openedHeight}, 1000);
@@ -31,8 +37,7 @@ var Activities = function() {
                }
        }
        function close() {
-               var activities = $('#activities');
-               if (!isClosed(activities)) {
+               if (!isClosed()) {
                        $('.control.block .ui-icon', 
activities).removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
                        activities.animate({height: closedHeight}, 1000);
                        activities.resizable("option", "disabled", false);
@@ -41,24 +46,23 @@ var Activities = function() {
 
        return {
                hightlight: function() {
-                       var activities = $('#activities');
-                       if (isClosed(activities)) {
+                       if (isClosed()) {
                                $('.control.block', 
activities).addClass('ui-state-highlight');
                        }
                }
                , toggle: function() {
-                       if (isClosed($('#activities'))) {
+                       if (isClosed()) {
                                open();
                        } else {
                                close();
                        }
                }
                , findUser: function(uid) {
-                       var m = '5px', t = 50, u = $('#user'+uid);
+                       const m = '5px', t = 50, u = $('#user' + uid);
                        if (u.length === 1) {
                                u[0].scrollIntoView();
                                u.addClass('ui-state-highlight');
-                               for(i = 0; i < 10; i++) {
+                               for(let i = 0; i < 10; i++) {
                                        u.animate({marginTop: '-='+m}, t)
                                                .animate({marginTop: '+='+m}, 
t);
                                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 32ad97b..4e452b9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -2,7 +2,7 @@
 const WBA_SEL = '.room.wb.area 
.ui-tabs-panel.ui-corner-bottom.ui-widget-content:visible';
 const VID_SEL = '.video.user-video';
 var VideoUtil = (function() {
-       var self = {};
+       const self = {};
        function _getVid(uid) {
                return "video" + uid;
        }
@@ -21,8 +21,7 @@ var VideoUtil = (function() {
                return c.activities.indexOf('broadcastV') > -1;
        }
        function _getRects(sel, excl) {
-               var list = [];
-               var elems = $(sel);
+               const list = [], elems = $(sel);
                for (let i = 0; i < elems.length; ++i) {
                        if (excl !== $(elems[i]).attr('aria-describedby')) {
                                list.push(_getRect(elems[i]));
@@ -31,7 +30,7 @@ var VideoUtil = (function() {
                return list;
        }
        function _getRect(e) {
-               let win = $(e), winoff = win.offset();
+               const win = $(e), winoff = win.offset();
                return {left: winoff.left
                        , top: winoff.top
                        , right: winoff.left + win.width()
@@ -41,11 +40,10 @@ var VideoUtil = (function() {
                if (Room.getOptions().interview) {
                        return {left: 0, top: 0};
                }
-               var wba = $(WBA_SEL);
-               var woffset = wba.offset();
-               const offsetX = 20, offsetY = 10
+               const wba = $(WBA_SEL), woffset = wba.offset()
+                       , offsetX = 20, offsetY = 10
                        , area = {left: woffset.left, top: woffset.top, right: 
woffset.left + wba.width(), bottom: woffset.top + wba.height()};
-               var rectNew = {
+               const rectNew = {
                                _left: area.left
                                , _top: area.top
                                , right: area.left + w
@@ -67,11 +65,10 @@ var VideoUtil = (function() {
                        };
                //console.log("Area " + JSON.stringify(area));
                do {
-                       let minY = area.bottom;
-                       var posFound = true;
+                       let minY = area.bottom, posFound = true;
                        //console.log("Checking RECT " + 
JSON.stringify(rectNew));
                        for (let i = 0; i < list.length; ++i) {
-                               let rect = list[i];
+                               const rect = list[i];
                                minY = Math.min(minY, rect.bottom);
 
                                if (rectNew.left < rect.right && rectNew.right 
> rect.left && rectNew.top < rect.bottom && rectNew.bottom > rect.top) {
@@ -96,9 +93,9 @@ var VideoUtil = (function() {
                return {left: rectNew.left, top: rectNew.top};
        }
        function _arrange() {
-               let list = [], elems = $(VID_SEL);
+               const list = [], elems = $(VID_SEL);
                for (let i = 0; i < elems.length; ++i) {
-                       let v = $(elems[i]);
+                       const v = $(elems[i]);
                        v.css(_getPos(list, v.width(), v.height()));
                        list.push(_getRect(v));
                }
@@ -115,14 +112,15 @@ var VideoUtil = (function() {
        return self;
 })();
 var Video = (function() {
-       var self = {}, c, v, vc, t, f, swf, size, vol, slider, handle
+       const self = {};
+       let c, v, vc, t, f, swf, size, vol, slider, handle
                , lastVolume = 50;
 
        function _getName() {
                return c.user.firstName + ' ' + c.user.lastName;
        }
        function _resizeDlg(_w, _h) {
-               let h = _h + t.height() + 2 + (f.is(":visible") ? f.height() : 
0);
+               const h = _h + t.height() + 2 + (f.is(":visible") ? f.height() 
: 0);
                v.dialog("option", "width", _w).dialog("option", "height", h);
                _resize(_w, _h);
                return h;
@@ -132,7 +130,7 @@ var Video = (function() {
                        //TODO buttons
                        v.dialog("option", "position", {my: "center", at: 
"center", of: WBA_SEL});
                } else {
-                       let h = _resizeDlg(size.width, size.height);
+                       const h = _resizeDlg(size.width, size.height);
                        
v.dialog("widget").css(VideoUtil.getPos(VideoUtil.getRects(VID_SEL, 
VideoUtil.getVid(c.uid)), c.width, h));
                }
        }
@@ -158,7 +156,7 @@ var Video = (function() {
        }
        function _handleVolume(val) {
                handle.text(val);
-               var ico = vol.find('.ui-icon');
+               const ico = vol.find('.ui-icon');
                if (val > 0 && ico.hasClass('ui-icon-volume-off')) {
                        ico.toggleClass('ui-icon-volume-off ui-icon-volume-on');
                        vol.removeClass('ui-state-error');
@@ -177,7 +175,7 @@ var Video = (function() {
                        return;
                }
                if (mute) {
-                       let val = slider.slider("option", "value");
+                       const val = slider.slider("option", "value");
                        if (val > 0) {
                                lastVolume = val;
                        }
@@ -192,13 +190,13 @@ var Video = (function() {
                c = _c;
                pos = _pos;
                size = {width: c.width, height: c.height};
-               var _id = VideoUtil.getVid(c.uid)
+               const _id = VideoUtil.getVid(c.uid)
                        , name = _getName()
                        , _w = c.self ? Math.max(300, c.width) : c.width
                        , _h = c.self ? Math.max(200, c.height) : c.height
                        , opts = Room.getOptions();
                { //scope
-                       let cont = opts.interview ? $('.pod.pod-' + c.pod) : 
$('.room.box');
+                       const cont = opts.interview ? $('.pod.pod-' + c.pod) : 
$('.room.box');
                        cont.append($('#user-video').clone().attr('id', 
_id).attr('title', name)
                                        .attr('data-client-uid', c.type + 
c.cuid).data(self));
                }
@@ -217,7 +215,7 @@ var Video = (function() {
                        , resizable: !opts.interview
                        , modal: false
                        , resizeStop: function(event, ui) {
-                               var w = ui.size.width - 2
+                               const w = ui.size.width - 2
                                        , h = ui.size.height - t.height() - 4 - 
(f.is(":visible") ? f.height() : 0);
                                _resize(w, h);
                                swf[0].vidResize(w, h);
@@ -239,7 +237,7 @@ var Video = (function() {
                        v.parent().find('.ui-dialog-titlebar-buttonpane')
                                
.append($('#video-volume-btn').children().clone())
                                
.append($('#video-refresh-btn').children().clone());
-                       var volume = 
v.parent().find('.dropdown-menu.video.volume');
+                       const volume = 
v.parent().find('.dropdown-menu.video.volume');
                        slider = v.parent().find('.slider');
                        if (opts.interview) {
                                
v.parent().find('.ui-dialog-titlebar-collapse').hide();
@@ -251,7 +249,7 @@ var Video = (function() {
                                })
                                .click(function(e) {
                                        e.stopImmediatePropagation();
-                                       let muted = 
$(this).find('.ui-icon').hasClass('ui-icon-volume-off');
+                                       const muted = 
$(this).find('.ui-icon').hasClass('ui-icon-volume-off');
                                        roomAction('mute', JSON.stringify({uid: 
c.cuid, mute: !muted}));
                                        _mute(!muted);
                                        volume.hide();
@@ -286,7 +284,7 @@ var Video = (function() {
                                        _handleVolume(ui.value);
                                }
                        });
-                       let hasAudio = VideoUtil.hasAudio(c);
+                       const hasAudio = VideoUtil.hasAudio(c);
                        _handleMicStatus(hasAudio);
                        if (!hasAudio) {
                                vol.hide();
@@ -295,7 +293,7 @@ var Video = (function() {
                vc = v.find('.video');
                vc.width(_w).height(_h);
                //broadcast
-               var o = Room.getOptions();
+               const o = Room.getOptions();
                if (c.self) {
                        o.cam = c.cam;
                        o.mic = c.mic;
@@ -319,10 +317,10 @@ var Video = (function() {
                v.dialog("widget").css(_pos);
        }
        function _update(_c) {
-               var opts = Room.getOptions();
+               const opts = Room.getOptions();
                c.screenActivities = _c.screenActivities;
                c.activities = _c.activities;
-               let hasAudio = VideoUtil.hasAudio(c);
+               const hasAudio = VideoUtil.hasAudio(c);
                _handleMicStatus(hasAudio);
                if (hasAudio) {
                        vol.show();
@@ -340,7 +338,7 @@ var Video = (function() {
        }
        function _refresh(_opts) {
                if (swf[0].refresh !== undefined) {
-                       let opts = _opts || {};
+                       const opts = _opts || {};
                        if (!isNaN(opts.width)) {
                                _resizeDlg(opts.width, opts.height);
                        }
@@ -364,7 +362,8 @@ var Video = (function() {
        return self;
 });
 var VideoManager = (function() {
-       var self = {}, share, inited = false;
+       const self = {};
+       let share, inited = false;
 
        function _init() {
                VideoSettings.init(Room.getOptions());
@@ -376,13 +375,13 @@ var VideoManager = (function() {
                        return;
                }
                for (let i = 0; i < c.streams.length; ++i) {
-                       let cl = JSON.parse(JSON.stringify(c)), s = 
c.streams[i];
+                       const cl = JSON.parse(JSON.stringify(c)), s = 
c.streams[i];
                        delete cl.streams;
                        $.extend(cl, s);
                        if (cl.self && VideoUtil.isSharing(cl) || 
VideoUtil.isRecording(cl)) {
                                continue;
                        }
-                       let _id = VideoUtil.getVid(cl.uid)
+                       const _id = VideoUtil.getVid(cl.uid)
                                , av = VideoUtil.hasAudio(cl) || 
VideoUtil.hasVideo(cl)
                                , v = $('#' + _id);
                        if (av && v.length !== 1 && !!cl.self) {
@@ -395,16 +394,16 @@ var VideoManager = (function() {
                }
                if (c.uid === Room.getOptions().uid) {
                        Room.setRights(c.rights);
-                       var windows = $(VID_SEL + ' .ui-dialog-content');
-                       for (var i = 0; i < windows.length; ++i) {
-                               let w = $(windows[i]);
+                       const windows = $(VID_SEL + ' .ui-dialog-content');
+                       for (let i = 0; i < windows.length; ++i) {
+                               const w = $(windows[i]);
                                w.data().setRights(c.rights);
                        }
 
                }
                if (c.streams.length === 0) {
                        // check for non inited video window
-                       let v = $('#' + VideoUtil.getVid(c.uid));
+                       const v = $('#' + VideoUtil.getVid(c.uid));
                        if (v.length === 1) {
                                _closeV(v);
                        }
@@ -426,7 +425,7 @@ var VideoManager = (function() {
                                        .data('uid', c.uid)
                                        .show(), 10);
                        share.tooltip().off('click').click(function() {
-                               var v = $('#' + VideoUtil.getVid(c.uid))
+                               const v = $('#' + VideoUtil.getVid(c.uid))
                                if (v.length !== 1) {
                                        Video().init(c, $(WBA_SEL).offset());
                                } else {
@@ -438,7 +437,7 @@ var VideoManager = (function() {
                }
        }
        function _close(uid, showShareBtn) {
-               var _id = VideoUtil.getVid(uid), v = $('#' + _id);
+               const _id = VideoUtil.getVid(uid), v = $('#' + _id);
                if (v.length === 1) {
                        _closeV(v);
                }
@@ -460,8 +459,8 @@ var VideoManager = (function() {
                return $(VID_SEL + ' div[data-client-uid="room' + uid + '"]');
        }
        function _micActivity(uid, active) {
-               var u = $('#user' + uid + ' .audio-activity.ui-icon');
-               var v = _find(uid).parent();
+               const u = $('#user' + uid + ' .audio-activity.ui-icon')
+                       , v = _find(uid).parent();
                if (active) {
                        u.addClass("speaking");
                        v.addClass('user-speaks')
@@ -471,21 +470,21 @@ var VideoManager = (function() {
                }
        }
        function _refresh(uid, opts) {
-               var v = _find(uid);
+               const v = _find(uid);
                if (v.length > 0) {
                        v.data().refresh(opts);
                }
        }
        function _mute(uid, mute) {
-               var v = _find(uid);
+               const v = _find(uid);
                if (v.length > 0) {
                        v.data().mute(mute);
                }
        }
        function _clickExclusive(uid) {
-               let s = VideoSettings.load();
+               const s = VideoSettings.load();
                if (false !== s.video.confirmExclusive) {
-                       let dlg = $('#exclusive-confirm');
+                       const dlg = $('#exclusive-confirm');
                        dlg.dialog({
                                buttons: [
                                        {
@@ -508,9 +507,9 @@ var VideoManager = (function() {
                }
        }
        function _exclusive(uid) {
-               var windows = $(VID_SEL + ' .ui-dialog-content');
-               for (var i = 0; i < windows.length; ++i) {
-                       let w = $(windows[i]);
+               const windows = $(VID_SEL + ' .ui-dialog-content');
+               for (let i = 0; i < windows.length; ++i) {
+                       const w = $(windows[i]);
                        w.data().mute('room' + uid !== w.data('client-uid'));
                }
        }
@@ -528,16 +527,17 @@ var VideoManager = (function() {
        return self;
 })();
 var Room = (function() {
-       var self = {}, options;
+       const self = {};
+       let options;
 
        function _init(_options) {
                options = _options;
                VideoManager.init();
        }
        function _getSelfAudioClient() {
-               let vw = $('#video' + Room.getOptions().uid);
+               const vw = $('#video' + Room.getOptions().uid);
                if (vw.length > 0) {
-                       let v = vw.data();
+                       const v = vw.data();
                        if (VideoUtil.hasAudio(v.client())) {
                                return v;
                        }
@@ -552,7 +552,7 @@ var Room = (function() {
                                        break;
                                case options.keycode.exclusive: // Shift+F12 by 
default
                                {
-                                       let v = _getSelfAudioClient();
+                                       const v = _getSelfAudioClient();
                                        if (v !== null) {
                                                
VideoManager.clickExclusive(Room.getOptions().uid);
                                        }
@@ -560,7 +560,7 @@ var Room = (function() {
                                        break;
                                case options.keycode.mute: // Shift+F7 by 
default
                                {
-                                       let v = _getSelfAudioClient();
+                                       const v = _getSelfAudioClient();
                                        if (v !== null) {
                                                v.mute(!v.isMuted());
                                        }
@@ -570,15 +570,15 @@ var Room = (function() {
                }
        }
        function _setSize() {
-               var sb = $(".room.sidebar.left")
+               const sb = $(".room.sidebar.left")
                        , w = $(window).width() - sb.width() - 8
                        , h = $(window).height() - $('#menu').height() - 3
-                       , p = sb.find('.tabs');
+                       , p = sb.find('.tabs')
+                       , holder = $('.room.holder');
                sb.height(h);
-               var hh = h - 5;
+               const hh = h - 5;
                p.height(hh);
                $(".user.list", p).height(hh - $("ul", p).height() - 
$(".user.header", p).height() - 5);
-               var holder = $('.room.holder');
                if (sb.width() > 230) {
                        holder.addClass('big').removeClass('small');
                } else {
@@ -599,7 +599,7 @@ var Room = (function() {
                _unload();
                $(".room.holder").remove();
                $("#chatPanel").remove();
-               var dlg = $('#disconnected-dlg');
+               const dlg = $('#disconnected-dlg');
                dlg.dialog({
                        modal: true
                        , close: _reload
@@ -645,7 +645,7 @@ var Room = (function() {
                $(window).off('keyup', _keyHandler);
        }
        function _showClipboard(txt) {
-               let dlg = $('#clipboard-dialog');
+               const dlg = $('#clipboard-dialog');
                dlg.find('p .text').text(txt);
                dlg.dialog({
                        resizable: false
@@ -680,18 +680,18 @@ function startPrivateChat(el) {
 }
 /***** functions required by SIP   ******/
 function sipBtnClick() {
-       var txt = $('.sip-number');
+       const txt = $('.sip-number');
        txt.val(txt.val() + $(this).data('value'));
 }
 function sipBtnEraseClick() {
-       var txt = $('.sip-number');
-       var t = txt.val();
+       const txt = $('.sip-number')
+               , t = txt.val();
        if (!!t) {
                txt.val(t.substring(0, t.length -1));
        }
 }
 function sipGetKey(evt) {
-       var k = -1;
+       let k = -1;
        if (evt.keyCode > 47 && evt.keyCode < 58) {
                k = evt.keyCode - 48;
        }
@@ -701,13 +701,13 @@ function sipGetKey(evt) {
        return k;
 }
 function sipKeyDown(evt) {
-       var k = sipGetKey(evt);
+       const k = sipGetKey(evt);
        if (k > 0) {
                $('#sip-dialer-btn-' + k).addClass('ui-state-active');
        }
 }
 function sipKeyUp(evt) {
-       var k = sipGetKey(evt);
+       const k = sipGetKey(evt);
        if (k > 0) {
                $('#sip-dialer-btn-' + k).removeClass('ui-state-active');
        }
@@ -715,7 +715,7 @@ function sipKeyUp(evt) {
 
 /***** functions required by SWF   ******/
 function typingActivity(uid, active) {
-       var u = $('#user' + uid + ' .typing-activity.ui-icon');
+       const u = $('#user' + uid + ' .typing-activity.ui-icon');
        if (active) {
                u.addClass("typing");
        } else {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
index df48ae4..c2b8de6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
@@ -25,7 +25,7 @@ var VideoSettings = (function() {
                return s;
        }
        function _save(refr) {
-               var _s = JSON.stringify(s);
+               const _s = JSON.stringify(s);
                localStorage.setItem('openmeetings', _s);
                if (typeof avSettings === 'function') {
                        avSettings(_s);
@@ -83,7 +83,7 @@ var VideoSettings = (function() {
                swf = initVideo(vidScroll, 'video-settings-swf', o)[0];
                vs.find('input, button').prop('disabled', true);
                vs.find('button').button();
-               var rr = vs.find('.cam-resolution').parent('.sett-row');
+               const rr = vs.find('.cam-resolution').parent('.sett-row');
                if (!!o.interview) {
                        rr.show();
                } else {
@@ -98,7 +98,7 @@ var VideoSettings = (function() {
        function _readValues() {
                s.video.cam = 1 * cam.val();
                s.video.mic = 1 * mic.val();
-               var o = res.find('option:selected').data();
+               const o = res.find('option:selected').data();
                s.video.width = o.width;
                s.video.height = o.height;
                $(swf).attr('width', Math.max(300, 
s.video.width)).attr('height', Math.max(200, s.video.height));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
index e6bd354..df0d0a8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
@@ -1,17 +1,17 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 function bindUpload(markupId, hiddenId) {
-       var fi = $('#' + markupId + ' .fileinput');
+       const fi = $('#' + markupId + ' .fileinput');
        if (!fi.eventAdded) {
                $('#' + markupId + ' .fileinput').on('change.bs.fileinput', 
function(event) {
                        event.stopPropagation();
-                       var th = $(this),
+                       const th = $(this),
                        fInput = th.find('input[type=file]'),
                        fn = th.find('.fileinput-filename');
                        if (fInput[0].files !== undefined && 
fInput[0].files.length > 1) {
                                fn.text($.map(fInput[0].files, function(val) { 
return val.name; }).join(', '));
                        }
                        fInput.attr('title', fn.text());
-                       var hi = $('#' + hiddenId);
+                       const hi = $('#' + hiddenId);
                        hi.val(fn.text());
                        hi.trigger('change');
                        return false;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
index f96e25c..13908ec 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
@@ -1,7 +1,7 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var labels, config;
 function initSwf(_options) {
-       var options = $.extend({
+       const options = $.extend({
                allowfullscreen : 'true',
                bgcolor : '#ffffff',
                width : '100%',
@@ -10,7 +10,7 @@ function initSwf(_options) {
                __lzminimumversion : 8
        }, _options);
        $('div[id="contents"], div[id="contents"] > div').css('height', '100%');
-       var embed = $('<embed>')
+       const embed = $('<embed>')
                .attr('quality', 'high')
                .attr('bgcolor', options.bgcolor)
                .attr('src', "public/" + options.src)
@@ -29,7 +29,7 @@ function initSwf(_options) {
 }
 function loadingComplete() {
        document.getElementById("swfloading").style.display = 'none';
-       var lzApp = document.getElementById("lzappContainer");
+       const lzApp = document.getElementById("lzappContainer");
        lzApp.style.width = '100%';
        lzApp.style.height = '100%';
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
index 1762f6e..15b852c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
@@ -1,6 +1,7 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var WbArea = (function() {
-       var container, area, role = NONE, self = {}, choose, btns
+       const self = {};
+       let container, area, role = NONE, choose, btns
                , _inited = false, recStart, recStop;
 
        function _init() {
@@ -66,7 +67,7 @@ var WbArea = (function() {
        }
        function _resize(posX, w, h) {
                if (!container || !_inited) return;
-               var hh = h - 5;
+               const hh = h - 5;
                container.width(w).height(h).css('left', posX + "px");
                area.width(w).height(hh);
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-arrow.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-arrow.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-arrow.js
index f71bb99..b3e6366 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-arrow.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-arrow.js
@@ -22,20 +22,20 @@ var Arrow = function(wb, s) {
                return arrow.obj;
        };
        arrow.updateShape = function(pointer) {
-               var dx = pointer.x - arrow.orig.x
-               , dy = pointer.y - arrow.orig.y
-               , d = Math.sqrt(dx * dx + dy * dy)
-               , sw = arrow.stroke.width
-               , hl = sw * 3
-               , h = 1.5 * sw
-               , points = [
-                       {x: 0, y: sw},
-                       {x: Math.max(0, d - hl), y: sw},
-                       {x: Math.max(0, d - hl), y: h},
-                       {x: d, y: 3 * sw / 4},
-                       {x: Math.max(0, d - hl), y: 0},
-                       {x: Math.max(0, d - hl), y: sw / 2},
-                       {x: 0, y: sw / 2}];
+               const dx = pointer.x - arrow.orig.x
+                       , dy = pointer.y - arrow.orig.y
+                       , d = Math.sqrt(dx * dx + dy * dy)
+                       , sw = arrow.stroke.width
+                       , hl = sw * 3
+                       , h = 1.5 * sw
+                       , points = [
+                               {x: 0, y: sw},
+                               {x: Math.max(0, d - hl), y: sw},
+                               {x: Math.max(0, d - hl), y: h},
+                               {x: d, y: 3 * sw / 4},
+                               {x: Math.max(0, d - hl), y: 0},
+                               {x: Math.max(0, d - hl), y: sw / 2},
+                               {x: 0, y: sw / 2}];
                arrow.obj.set({
                        points: points
                        , angle: Math.atan2(dy, dx) * 180 / Math.PI

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-clipart.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-clipart.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-clipart.js
index ec16f16..c5d5533 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-clipart.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-clipart.js
@@ -19,8 +19,8 @@ var Clipart = function(wb, btn) {
                if (!art.obj) {
                        return; // not ready
                }
-               var dx = pointer.x - art.orig.x, dy = pointer.y - art.orig.y;
-               var d = Math.sqrt(dx * dx + dy * dy);
+               const dx = pointer.x - art.orig.x, dy = pointer.y - art.orig.y
+                       , d = Math.sqrt(dx * dx + dy * dy);
                art.obj.set({
                        width: d
                        , height: art.orig.height * d / art.orig.width

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-ellipse.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-ellipse.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-ellipse.js
index 5421164..642c3fa 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-ellipse.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-ellipse.js
@@ -1,6 +1,6 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Ellipse = function(wb, s) {
-       let ellipse = Rect(wb, s);
+       const ellipse = Rect(wb, s);
        ellipse.createShape = function() {
                ellipse.obj = new fabric.Ellipse({
                        strokeWidth: ellipse.stroke.width

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-line.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-line.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-line.js
index ec8f7fa..3c946e5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-line.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-line.js
@@ -1,6 +1,6 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Line = function(wb, s) {
-       let line = Shape(wb);
+       const line = Shape(wb);
        line.createShape = function() {
                line.obj = new fabric.Line([line.orig.x, line.orig.y, 
line.orig.x, line.orig.y], {
                        strokeWidth: line.stroke.width

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-paint.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-paint.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-paint.js
index 18bcb9b..cd91871 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-paint.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-paint.js
@@ -1,6 +1,6 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Paint = function(wb, s) {
-       let paint = ShapeBase(wb);
+       const paint = ShapeBase(wb);
        paint.activate = function() {
                wb.eachCanvas(function(canvas) {
                        canvas.isDrawingMode = true;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-rect.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-rect.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-rect.js
index 313a5f3..041e599 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-rect.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-rect.js
@@ -1,6 +1,6 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Rect = function(wb, s) {
-       let rect = Shape(wb);
+       const rect = Shape(wb);
        rect.createShape = function() {
                rect.obj = new fabric.Rect({
                        strokeWidth: rect.stroke.width

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape-base.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape-base.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape-base.js
index 30ee5ba..0eaf276 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape-base.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape-base.js
@@ -1,11 +1,11 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var ShapeBase = function() {
-       let base = Base();
+       const base = Base();
        base.fill = {enabled: true, color: '#FFFF33'};
        base.stroke = {enabled: true, color: '#FF6600', width: 5};
        base.opacity = 1;
        base.enableLineProps = function(s) {
-               var c = s.find('.wb-prop-color'), w = s.find('.wb-prop-width'), 
o = s.find('.wb-prop-opacity');
+               const c = s.find('.wb-prop-color'), w = 
s.find('.wb-prop-width'), o = s.find('.wb-prop-opacity');
                s.find('.wb-prop-fill').prop('disabled', true);
                s.find('.wb-prop-b, .wb-prop-i, .wb-prop-lock-color, 
.wb-prop-lock-fill').button("disable");
                c.val(base.stroke.color).prop('disabled', false);
@@ -14,7 +14,7 @@ var ShapeBase = function() {
                return {c: c, w: w, o: o};
        };
        base.enableAllProps = function(s) {
-               var c = s.find('.wb-prop-color'), w = s.find('.wb-prop-width')
+               const c = s.find('.wb-prop-color'), w = s.find('.wb-prop-width')
                        , o = s.find('.wb-prop-opacity'), f = 
s.find('.wb-prop-fill')
                        , lc = s.find('.wb-prop-lock-color'), lf = 
s.find('.wb-prop-lock-fill');
                s.find('.wb-prop-b, .wb-prop-i').button("disable");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape.js
index 77e6e6e..901c073 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-shape.js
@@ -9,17 +9,17 @@ var Shape = function(wb) {
                canvas.add(shape.obj);
        }
        shape.mouseDown = function(o) {
-               var canvas = this;
+               const canvas = this
+                       , pointer = canvas.getPointer(o.e);
                shape.isDown = true;
-               var pointer = canvas.getPointer(o.e);
                shape.orig = {x: pointer.x, y: pointer.y};
                shape.createShape(canvas);
                shape.add2Canvas(canvas);
        };
        shape.mouseMove = function(o) {
-               var canvas = this;
+               const canvas = this;
                if (!shape.isDown) return;
-               var pointer = canvas.getPointer(o.e);
+               const pointer = canvas.getPointer(o.e);
                shape.updateShape(pointer);
                canvas.renderAll();
        };
@@ -27,7 +27,7 @@ var Shape = function(wb) {
                return o;
        };
        shape.mouseUp = function(o) {
-               var canvas = this;
+               const canvas = this;
                shape.isDown = false;
                shape.obj.setCoords();
                shape.obj.selectable = false;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/uuid.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/uuid.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/uuid.js
index 95100e2..09a17be 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/uuid.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/uuid.js
@@ -2,16 +2,15 @@
 // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
 // author Jeff Ward
 var UUID = (function() {
-       var self = {};
-       var lut = [];
-       for (var i = 0; i < 256; i++) {
+       const self = {}, lut = [];
+       for (let i = 0; i < 256; i++) {
                lut[i] = (i < 16 ? '0' : '') + (i).toString(16);
        }
        self.generate = function() {
-               var d0 = Math.random() * 0xffffffff | 0;
-               var d1 = Math.random() * 0xffffffff | 0;
-               var d2 = Math.random() * 0xffffffff | 0;
-               var d3 = Math.random() * 0xffffffff | 0;
+               const d0 = Math.random() * 0xffffffff | 0
+                       , d1 = Math.random() * 0xffffffff | 0;
+                       , d2 = Math.random() * 0xffffffff | 0;
+                       , d3 = Math.random() * 0xffffffff | 0;
                return lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 
0xff] + lut[d0 >> 24 & 0xff] + '-' +
                        lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 
16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' +
                        lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + 
lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] +

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
index 19498df..42cd811 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
@@ -23,10 +23,10 @@ var WbArea = (function() {
                        case 8:  // backspace
                        case 46: // delete
                                {
-                                       let wb = getActive().data();
-                                       let canvas = wb.getCanvas();
+                                       const wb = getActive().data()
+                                               , canvas = wb.getCanvas();
                                        if (!!canvas) {
-                                               let arr = [];
+                                               const arr = [];
                                                if (!!canvas.getActiveGroup()) {
                                                        
canvas.getActiveGroup().forEachObject(function(o) {
                                                                arr.push({
@@ -35,7 +35,7 @@ var WbArea = (function() {
                                                                });
                                                        });
                                                } else {
-                                                       let o = 
canvas.getActiveObject();
+                                                       const o = 
canvas.getActiveObject();
                                                        if (!!o) {
                                                                arr.push({
                                                                        uid: 
o.uid
@@ -63,10 +63,10 @@ var WbArea = (function() {
                });
        }
        function _resizeWbs() {
-               let w = area.width(), hh = area.height();
-               let wbTabs = area.find(".tabs.ui-tabs");
-               let tabPanels = wbTabs.find(".ui-tabs-panel");
-               let wbah = hh - 5 - wbTabs.find("ul.ui-tabs-nav").height();
+               const w = area.width(), hh = area.height()
+                       , wbTabs = area.find(".tabs.ui-tabs")
+                       , tabPanels = wbTabs.find(".ui-tabs-panel");
+                       , wbah = hh - 5 - 
wbTabs.find("ul.ui-tabs-nav").height();
                tabPanels.height(wbah);
                tabPanels.each(function() {
                        $(this).data().resize(w - 25, wbah - 20);
@@ -113,12 +113,12 @@ var WbArea = (function() {
        self.setRole = function(_role) {
                if (!_inited) return;
                role = _role;
-               var tabsNav = tabs.find(".ui-tabs-nav");
+               const tabsNav = tabs.find(".ui-tabs-nav");
                tabsNav.sortable(role === PRESENTER ? "enable" : "disable");
-               var prev = tabs.find('.prev.om-icon'), next = 
tabs.find('.next.om-icon');
+               const prev = tabs.find('.prev.om-icon'), next = 
tabs.find('.next.om-icon');
                if (role === PRESENTER) {
                        if (prev.length === 0) {
-                               var cc = tabs.find('.wb-tabbar 
.scroll-container')
+                               const cc = tabs.find('.wb-tabbar 
.scroll-container')
                                        , left = 
$('#wb-tabbar-ctrls-left').clone().attr('id', '')
                                        , right = 
$('#wb-tabbar-ctrls-right').clone().attr('id', '');
                                cc.before(left).after(right);
@@ -132,7 +132,7 @@ var WbArea = (function() {
                                        scroll.scrollLeft(scroll.scrollLeft() + 
30);
                                });
                                tabsNav.find('li').each(function() {
-                                       var li = $(this);
+                                       const li = $(this);
                                        _addCloseBtn(li);
                                });
                                $(window).keyup(deleteHandler);
@@ -153,7 +153,7 @@ var WbArea = (function() {
                container = $(".room.wb.area");
                tabs = container.find('.tabs').tabs({
                        beforeActivate: function(e) {
-                               var res = true;
+                               let res = true;
                                if (e.originalEvent && e.originalEvent.type === 
'click') {
                                        res = role === PRESENTER;
                                }
@@ -179,7 +179,7 @@ var WbArea = (function() {
        };
        self.create = function(obj) {
                if (!_inited) return;
-               var tid = self.getWbTabId(obj.wbId)
+               const tid = self.getWbTabId(obj.wbId)
                        , li = $('#wb-area-tab').clone().attr('id', 
'').data('wb-id', obj.wbId)
                        , wb = $('#wb-area').clone().attr('id', tid);
                li.find('a').text(obj.name).attr('title', 
obj.name).attr('href', "#" + tid);
@@ -189,7 +189,7 @@ var WbArea = (function() {
                refreshTabs();
                _addCloseBtn(li);
 
-               var wbo = Wb();
+               const wbo = Wb();
                wbo.init(obj, tid, role);
                wb.data(wbo);
                _resizeWbs();
@@ -235,18 +235,18 @@ var WbArea = (function() {
        };
        self.removeWb = function(obj) {
                if (!_inited) return;
-               var tabId = self.getWbTabId(obj.wbId);
+               const tabId = self.getWbTabId(obj.wbId);
                tabs.find('li[aria-controls="' + tabId + '"]').remove();
                $("#" + tabId).remove();
                refreshTabs();
        };
        self.resize = function(posX, w, h) {
                if (!container || !_inited) return;
-               var hh = h - 5;
+               const hh = h - 5;
                container.width(w).height(h).css('left', posX + "px");
                area.width(w).height(hh);
 
-               var wbTabs = area.find(".tabs.ui-tabs");
+               const wbTabs = area.find(".tabs.ui-tabs");
                wbTabs.height(hh);
                _resizeWbs();
        }
@@ -255,9 +255,9 @@ var WbArea = (function() {
                self.getWb(json.wbId).setSize(json);
        }
        self.download = function(fmt) {
-               var wb = getActive().data();
+               const wb = getActive().data();
                if ('pdf' === fmt) {
-                       var arr = [];
+                       const arr = [];
                        wb.eachCanvas(function(cnv) {
                                arr.push(_getImage(cnv, 'image/png'));
                        });
@@ -265,7 +265,7 @@ var WbArea = (function() {
                                slides: arr
                        }));
                } else {
-                       var cnv = wb.getCanvas()
+                       const cnv = wb.getCanvas()
                                , a = document.createElement('a');
                        a.setAttribute('target', '_blank')
                        a.setAttribute('download', wb.name + '.' + fmt);
@@ -284,7 +284,7 @@ $(function() {
                        if (msg instanceof Blob) {
                                return; //ping
                        }
-                       var m = jQuery.parseJSON(msg);
+                       const m = jQuery.parseJSON(msg);
                        if (m && 'wb' === m.type && typeof WbArea !== 
'undefined') {
                                eval(m.func);
                        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
index de95ca4..f956a1e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
@@ -10,7 +10,7 @@ var Wb = function() {
                return !!t ? t.find(".om-icon." + (m || mode)) : null;
        }
        function initToolBtn(m, def, obj) {
-               let btn = getBtn(m);
+               const btn = getBtn(m);
                btn.data({
                        obj: obj
                        , activate: function() {
@@ -25,7 +25,7 @@ var Wb = function() {
                                obj.deactivate();
                        }
                }).click(function() {
-                       var b = getBtn();
+                       const b = getBtn();
                        if (b.length && b.hasClass(ACTIVE)) {
                                b.data().deactivate();
                        }
@@ -36,14 +36,14 @@ var Wb = function() {
                }
        }
        function initCliparts() {
-               var c = $('#wb-area-cliparts').clone().attr('id', '');
+               const c = $('#wb-area-cliparts').clone().attr('id', '');
                getBtn('arrow').after(c);
                c.find('a').prepend(c.find('div.om-icon.big:first'));
                c.find('.om-icon.clipart').each(function() {
-                       var cur = $(this);
+                       const cur = $(this);
                        cur.css('background-image', 'url(' + cur.data('image') 
+ ')')
                                .click(function() {
-                                       var old = c.find('a .om-icon.clipart');
+                                       const old = c.find('a 
.om-icon.clipart');
                                        c.find('ul li').prepend(old);
                                        c.find('a').prepend(cur);
                                });
@@ -51,7 +51,7 @@ var Wb = function() {
                });
        }
        function confirmDlg(_id, okHandler) {
-               var confirm = $('#' + _id);
+               const confirm = $('#' + _id);
                confirm.dialog({
                        modal: true
                        , buttons: [
@@ -73,10 +73,10 @@ var Wb = function() {
                return confirm;
        }
        function _updateZoomPanel() {
-               var ccount = canvases.length;
+               const ccount = canvases.length;
                if (ccount > 1 && role === PRESENTER) {
                        z.find('.doc-group').show();
-                       var ns = 1 * slide;
+                       const ns = 1 * slide;
                        z.find('.doc-group .curr-slide').val(ns + 
1).attr('max', ccount);
                        z.find('.doc-group .up').prop('disabled', ns < 1);
                        z.find('.doc-group .down').prop('disabled', ns > ccount 
- 2);
@@ -99,7 +99,7 @@ var Wb = function() {
                        , containment: "parent"
                        , scroll: false
                        , stop: function(event, ui) {
-                               var pos = ui.helper.position();
+                               const pos = ui.helper.position();
                                if (pos.left === 0 || pos.left + 
ui.helper.width() === ui.helper.parent().width()) {
                                        
ui.helper.removeClass('horisontal').addClass('vertical');
                                } else if (pos.top === 0 || pos.top + 
ui.helper.height() === ui.helper.parent().height()) {
@@ -112,8 +112,8 @@ var Wb = function() {
                        , containment: "parent"
                        , scroll: false
                });
-               var _firstToolItem = true;
-               var clearAll = t.find('.om-icon.clear-all');
+               const clearAll = t.find('.om-icon.clear-all');
+               let _firstToolItem = true;
                switch (role) {
                        case PRESENTER:
                                clearAll.click(function() {
@@ -161,25 +161,25 @@ var Wb = function() {
                                        .button()
                                        .click(function() {
                                                
$(this).toggleClass('ui-state-active selected');
-                                               var btn = getBtn();
-                                               var isB = 
$(this).hasClass('wb-prop-b');
+                                               const btn = getBtn()
+                                                       , isB = 
$(this).hasClass('wb-prop-b');
                                                btn.data().obj.style[isB ? 
'bold' : 'italic'] = $(this).hasClass('selected');
                                        });
                                s.find('.wb-prop-lock-color, 
.wb-prop-lock-fill')
                                        .button({icon: 'ui-icon-locked', 
showLabel: false})
                                        .click(function() {
-                                               var btn = getBtn();
-                                               var isColor = 
$(this).hasClass('wb-prop-lock-color');
-                                               var c = s.find(isColor ? 
'.wb-prop-color' : '.wb-prop-fill');
-                                               var enabled = 
$(this).button('option', 'icon') === 'ui-icon-locked';
+                                               const btn = getBtn()
+                                                       , isColor = 
$(this).hasClass('wb-prop-lock-color');
+                                                       , c = s.find(isColor ? 
'.wb-prop-color' : '.wb-prop-fill');
+                                                       , enabled = 
$(this).button('option', 'icon') === 'ui-icon-locked';
                                                $(this).button('option', 
'icon', enabled ? 'ui-icon-unlocked' : 'ui-icon-locked');
                                                c.prop('disabled', !enabled);
                                                btn.data().obj[isColor ? 
'stroke' : 'fill'].enabled = enabled;
                                        });
                                s.find('.wb-prop-color').change(function() {
-                                       var btn = getBtn();
+                                       const btn = getBtn();
                                        if (btn.length === 1) {
-                                               var v = $(this).val();
+                                               const v = $(this).val();
                                                btn.data().obj.stroke.color = v;
                                                if ('paint' === mode) {
                                                        
wb.eachCanvas(function(canvas) {
@@ -189,9 +189,9 @@ var Wb = function() {
                                        }
                                });
                                s.find('.wb-prop-width').change(function() {
-                                       var btn = getBtn();
+                                       const btn = getBtn();
                                        if (btn.length === 1) {
-                                               var v = 1 * $(this).val();
+                                               const v = 1 * $(this).val();
                                                btn.data().obj.stroke.width = v;
                                                if ('paint' === mode) {
                                                        
wb.eachCanvas(function(canvas) {
@@ -201,16 +201,16 @@ var Wb = function() {
                                        }
                                });
                                s.find('.wb-prop-fill').change(function() {
-                                       var btn = getBtn();
+                                       const btn = getBtn();
                                        if (btn.length === 1) {
-                                               var v = $(this).val();
+                                               const v = $(this).val();
                                                btn.data().obj.fill.color = v;
                                        }
                                });
                                s.find('.wb-prop-opacity').change(function() {
-                                       var btn = getBtn();
+                                       const btn = getBtn();
                                        if (btn.length === 1) {
-                                               var v = (1 * $(this).val()) / 
100;
+                                               const v = (1 * $(this).val()) / 
100;
                                                btn.data().obj.opacity = v;
                                                if ('paint' === mode) {
                                                        
wb.eachCanvas(function(canvas) {
@@ -262,7 +262,7 @@ var Wb = function() {
                                        }));
                                });
                                z.find('.zoom').change(function() {
-                                       var zzz = $(this).val();
+                                       const zzz = $(this).val();
                                        zoomMode = 'zoom';
                                        if (isNaN(zzz)) {
                                                switch (zzz) {
@@ -289,7 +289,7 @@ var Wb = function() {
                }
        }
        function _findObject(o) {
-               var _o = null;
+               let _o = null;
                canvases[o.slide].forEachObject(function(__o) {
                        if (!!__o && o.uid === __o.uid) {
                                _o = __o;
@@ -299,9 +299,9 @@ var Wb = function() {
                return _o;
        }
        function _removeHandler(o) {
-               var __o = _findObject(o);
+               const __o = _findObject(o);
                if (!!__o) {
-                       var cnvs = canvases[o.slide];
+                       const cnvs = canvases[o.slide];
                        if (!!cnvs) {
                                cnvs.discardActiveGroup();
                                if ('Video' === __o.omType) {
@@ -360,7 +360,7 @@ var Wb = function() {
                        });
 
                        for (let i = 0; i < objects.length; ++i) {
-                               let _o = objects[i];
+                               const _o = objects[i];
                                _o.loaded = true;
                                handler(_o);
                        }
@@ -373,7 +373,7 @@ var Wb = function() {
        };
 
        function toOmJson(o) {
-               let r = o.toJSON(extraProps);
+               const r = o.toJSON(extraProps);
                if (o.omType === 'Video') {
                        r.type = 'video';
                        delete r.objects;
@@ -400,7 +400,7 @@ var Wb = function() {
                }));
        };
        function objAddedHandler(e) {
-               var o = e.target;
+               const o = e.target;
                if (!!o.loaded) return;
                switch(o.type) {
                        case 'i-text':
@@ -414,16 +414,15 @@ var Wb = function() {
                }
        };
        function objModifiedHandler(e) {
-               var o = e.target;
+               const o = e.target, items = [];
                if (role === NONE && o.type !== 'pointer') return;
 
                o.includeDefaultValues = false;
-               var items = [];
                if ("group" === o.type && o.omType !== 'Video') {
                        o.clone(function(_o) {
                                // ungrouping
                                _o.includeDefaultValues = false;
-                               let _items = _o.destroy().getObjects();
+                               const _items = _o.destroy().getObjects();
                                for (let i = 0; i < _items.length; ++i) {
                                        items.push(toOmJson(_items[i]));
                                }
@@ -437,7 +436,7 @@ var Wb = function() {
                }));
        };
        function objSelectedHandler(e) {
-               var o = e.target;
+               const o = e.target;
                s.find('.wb-dim-x').val(o.left);
                s.find('.wb-dim-y').val(o.top);
                s.find('.wb-dim-w').val(o.width);
@@ -450,7 +449,7 @@ var Wb = function() {
        };
        function scrollHandler() {
                $(this).find('.canvas-container').each(function(idx) {
-                       let h = $(this).height(), pos = $(this).position();
+                       const h = $(this).height(), pos = $(this).position();
                        if (slide !== idx && pos.top > BUMPER - h && pos.top < 
BUMPER) {
                                //TODO FIXME might be done without iterating
                                //console.log("Found:", idx);
@@ -508,17 +507,17 @@ var Wb = function() {
                }
        }
        function addCanvas() {
-               let sl = canvases.length;
-               let cid = 'can-' + a.attr('id') + '-slide-' + sl;
-               let c = $('<canvas></canvas>').attr('id', cid);
+               const sl = canvases.length
+                       , cid = 'can-' + a.attr('id') + '-slide-' + sl
+                       , c = $('<canvas></canvas>').attr('id', cid);
                a.find('.canvases').append(c);
-               let canvas = new fabric.Canvas(c.attr('id'), {
+               const canvas = new fabric.Canvas(c.attr('id'), {
                        preserveObjectStacking: true
                });
                canvas.wbId = wb.id;
                canvas.slide = sl;
                canvases.push(canvas);
-               let cc = $('#' + cid).closest('.canvas-container');
+               const cc = $('#' + cid).closest('.canvas-container');
                if (role === NONE) {
                        if (sl === slide) {
                                cc.show();
@@ -544,7 +543,7 @@ var Wb = function() {
                                break;
                        default:
                        {
-                               var oo = z.find('.zoom').find('option[value="' 
+ zoom.toFixed(2) + '"]');
+                               const oo = 
z.find('.zoom').find('option[value="' + zoom.toFixed(2) + '"]');
                                if (oo.length === 1) {
                                        oo.prop('selected', true);
                                } else {
@@ -560,14 +559,14 @@ var Wb = function() {
                });
        }
        function _videoStatus(json) {
-               let g = _findObject(json);
+               const g = _findObject(json);
                if (!!g) {
                        g.videoStatus(json.status);
                }
        }
        wb.setRole = function(_role) {
                if (role !== _role) {
-                       var btn = getBtn();
+                       const btn = getBtn();
                        if (!!btn && btn.length === 1) {
                                btn.data().deactivate();
                        }
@@ -575,7 +574,7 @@ var Wb = function() {
                        a.find('.wb-settings').remove();
                        a.find('.wb-zoom').remove();
                        role = _role;
-                       var sc = a.find('.scroll-container');
+                       const sc = a.find('.scroll-container');
                        z = $('#wb-zoom').clone().attr('id', '');
                        if (role === NONE) {
                                t = $('#wb-tools-readonly').clone().attr('id', 
'');
@@ -644,9 +643,9 @@ var Wb = function() {
                showCurrentSlide();
        };
        wb.createObj = function(obj) {
-               let arr = [], _arr = Array.isArray(obj) ? obj : [obj];
+               const arr = [], _arr = Array.isArray(obj) ? obj : [obj];
                for (let i = 0; i < _arr.length; ++i) {
-                       let o = _arr[i];
+                       const o = _arr[i];
                        switch(o.type) {
                                case 'pointer':
                                        APointer().create(canvases[o.slide], o);
@@ -655,10 +654,12 @@ var Wb = function() {
                                        Player.create(canvases[o.slide], o, 
role);
                                        break;
                                default:
-                                       var __o = _findObject(o);
+                               {
+                                       const __o = _findObject(o);
                                        if (!__o) {
                                                arr.push(o);
                                        }
+                               }
                                        break;
                        }
                }
@@ -668,16 +669,16 @@ var Wb = function() {
        };
        wb.load = wb.createObj;
        wb.modifyObj = function(obj) { //TODO need to be unified
-               let arr = [], _arr = Array.isArray(obj) ? obj : [obj];
+               const arr = [], _arr = Array.isArray(obj) ? obj : [obj];
                for (let i = 0; i < _arr.length; ++i) {
-                       let o = _arr[i];
+                       const o = _arr[i];
                        switch(o.type) {
                                case 'pointer':
                                        
_modifyHandler(APointer().create(canvases[o.slide], o))
                                        break;
                                case 'video':
                                {
-                                       let g = _findObject(o);
+                                       const g = _findObject(o);
                                        if (!!g) {
                                                Player.modify(g, o);
                                        }
@@ -693,13 +694,13 @@ var Wb = function() {
                }
        };
        wb.removeObj = function(arr) {
-               for (var i = 0; i < arr.length; ++i) {
+               for (let i = 0; i < arr.length; ++i) {
                        _removeHandler(arr[i]);
                }
        };
        wb.clearAll = function() {
-               for (var i = 1; i < canvases.length; ++i) {
-                       let cc = $('#can-wb-tab-0-slide-' + 
i).closest('.canvas-container');
+               for (let i = 1; i < canvases.length; ++i) {
+                       const cc = $('#can-wb-tab-0-slide-' + 
i).closest('.canvas-container');
                        cc.remove();
                        canvases[i].dispose();
                }
@@ -710,7 +711,7 @@ var Wb = function() {
        };
        wb.clearSlide = function(_sl) {
                if (canvases.length > _sl) {
-                       let canvas = canvases[_sl];
+                       const canvas = canvases[_sl];
                        canvas.renderOnAddRemove = false;
                        let arr = canvas.getObjects();
                        while (arr.length > 0) {
@@ -726,7 +727,7 @@ var Wb = function() {
                return canvases[slide];
        };
        wb.eachCanvas = function(func) {
-               for (var i = 0; i < canvases.length; ++i) {
+               for (let i = 0; i < canvases.length; ++i) {
                        func(canvases[i]);
                }
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
index cb47006..49f4e4e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
@@ -6,7 +6,7 @@ function getCalendarHeight() {
        return $(window).height() - $('#${markupId}').position().top - 20;
 }
 function setCalendarHeight() {
-       var cal = $('#${markupId}');
+       const cal = $('#${markupId}');
        if (cal.length) {
                cal.fullCalendar('option', 'height', getCalendarHeight());
        }
@@ -15,12 +15,12 @@ $(function() {
        $(window).on("load", function() { setCalendarHeight(); } );
 });
 function toggleDatePicker(id) {
-       var dp = $("#" + id);
+       const dp = $("#" + id);
        dp.datepicker(dp.datepicker("widget").is(":visible") ? "hide" : "show");
        return false;
 }
 function addCalButton(rtl, id) {
-       var my_button =
+       const my_button =
                '<button class="fc-button fc-state-default fc-corner-right 
fc-corner-left" onclick="return toggleDatePicker(\'' + id + '\');">' +
                '<input type="text" id="' + id + '" /></button>';
 
@@ -30,7 +30,7 @@ function addCalButton(rtl, id) {
                $(".fc .fc-toolbar .fc-left").append(my_button);
        }
 
-       var dp = $("#" + id);
+       const dp = $("#" + id);
        dp.datepicker({
                showOn: "button",
                buttonImage: "images/calendar.gif",

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index e498a02..a45595d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -1,23 +1,19 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Chat = function() {
-       let chatTabs
+       const chatTabs
                , tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
                , msgTemplate = "<div class='clear' id='chat-msg-id-#{id}'><img 
class='profile' src='#{imgSrc}'/><span class='from' 
data-user-id='#{userId}'>#{from}</span><span class='date 
align-right'>#{sent}</span>#{msg}</div>"
-               , acceptTemplate = "<div class='tick om-icon align-right 
clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var 
e=$(this);chatActivity('accept',e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>"
-               , infoTemplate = "<div class='user om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);showUserInfo(e.data(\"userId\"));'></div>"
-               , addTemplate = "<div class='add om-icon align-right clickable' 
data-user-id='#{userId}' onclick='var 
e=$(this);addContact(e.data(\"userId\"));'></div>"
-               , messageTemplate = "<div class='new-email om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);privateMessage(e.data(\"userId\"));'></div>"
-               , inviteTemplate = "<div class='invite om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);inviteUser(e.data(\"userId\"));'></div>"
+               , acceptTemplate = "<div class='tick om-icon align-right 
clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='const 
e=$(this);chatActivity('accept',e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>"
+               , infoTemplate = "<div class='user om-icon align-right 
clickable' data-user-id='#{userId}' onclick='const 
e=$(this);showUserInfo(e.data(\"userId\"));'></div>"
+               , addTemplate = "<div class='add om-icon align-right clickable' 
data-user-id='#{userId}' onclick='const 
e=$(this);addContact(e.data(\"userId\"));'></div>"
+               , messageTemplate = "<div class='new-email om-icon align-right 
clickable' data-user-id='#{userId}' onclick='const 
e=$(this);privateMessage(e.data(\"userId\"));'></div>"
+               , inviteTemplate = "<div class='invite om-icon align-right 
clickable' data-user-id='#{userId}' onclick='const 
e=$(this);inviteUser(e.data(\"userId\"));'></div>"
                , closeBlock = "<span class='ui-icon ui-icon-close' 
role='presentation'></span>"
                , closedHeight = "20px"
-               , openedHeight = "345px"
-               , allPrefix = "All"
-               , roomPrefix = "Room "
                , emoticon = new CSSEmoticon()
-               , typingTimer
                , doneTypingInterval = 5000 //time in ms, 5 second for example
-               , audio, s
                ;
+       let openedHeight = "345px", allPrefix = "All", roomPrefix = "Room ", 
typingTimer, audio, s
        try {
                audio = new Audio('./public/chat_message.mp3');
        } catch (e) {
@@ -36,11 +32,11 @@ var Chat = function() {
                }
        }
        function _save() {
-               let _s = JSON.stringify(s);
+               const _s = JSON.stringify(s);
                localStorage.setItem('openmeetings', _s);
        }
        function _updateBtn(a) {
-               let muted = s.chat.muted === true;
+               const muted = s.chat.muted === true;
                a.removeClass('sound' + (muted ? '' : 
'-mute')).addClass('sound' + (muted ? '-mute' : ''))
                                .attr('title', a.data(muted ? 'sound-enabled' : 
'sound-muted'));
        }
@@ -49,16 +45,15 @@ var Chat = function() {
                chatActivity('typing_stop', $('.room.box').data('room-id'));
        }
        function initToolbar() {
-               let emtBtn = $('#emoticons');
+               const emtBtn = $('#emoticons');
                emtBtn.html('');
                emtBtn.append(' ' + emoticon.emoticonize(':)') + ' <b 
class="caret"></b>');
-               let emots = [].concat.apply([], [emoticon.threeCharEmoticons, 
emoticon.twoCharEmoticons]);
+               const emots = [].concat.apply([], [emoticon.threeCharEmoticons, 
emoticon.twoCharEmoticons]);
                for (let ei in emoticon.specialEmoticons) {
                        emots.push(ei);
                }
-               let emotMenuList = $('#emotMenuList');
+               const rowSize = 20, emotMenuList = $('#emotMenuList');
                emotMenuList.html('');
-               let rowSize = 20;
                let row = $('<tr></tr>');
                for (let i = 0; i < emots.length; ++i) {
                        row.append('<td><div class="emt" 
onclick="Chat.emtClick(\'' + emots[i] + '\');">'
@@ -69,7 +64,7 @@ var Chat = function() {
                        }
                }
                _load();
-               let a = $('#chat .audio');
+               const a = $('#chat .audio');
                _updateBtn(a);
                $('#chat .chat-btn').hover(function(){ 
$(this).addClass('ui-state-hover') }, function(){ 
$(this).removeClass('ui-state-hover') });
                a.click(function() {
@@ -99,7 +94,7 @@ var Chat = function() {
                        });
                        // close icon: removing the tab on click
                        chatTabs.delegate("span.ui-icon-close", "click", 
function() {
-                               let panelId = 
$(this).closest("li").remove().attr("aria-controls");
+                               const panelId = 
$(this).closest("li").remove().attr("aria-controls");
                                $("#" + panelId).remove();
                                chatTabs.tabs("refresh");
                        });
@@ -115,7 +110,7 @@ var Chat = function() {
                                }
                        });
                        $('#chatMessage').off().on('input propertychange 
paste', function () {
-                               let room = $('.room.box');
+                               const room = $('.room.box');
                                if (room.length) {
                                        if (!!typingTimer) {
                                                clearTimeout(typingTimer);
@@ -143,7 +138,7 @@ var Chat = function() {
                        if (!label) {
                                label = id === "chatTab-all" ? allPrefix : 
roomPrefix + id.substr(9);
                        }
-                       let li = $(tabTemplate.replace(/#\{href\}/g, "#" + 
id).replace(/#\{label\}/g, label));
+                       const li = $(tabTemplate.replace(/#\{href\}/g, "#" + 
id).replace(/#\{label\}/g, label));
                        if (id.indexOf("chatTab-r") !== 0) {
                                li.append(closeBlock);
                        }
@@ -157,7 +152,7 @@ var Chat = function() {
                                if (isClosed()) {
                                        $('#chatPopup 
.control.block').addClass('ui-state-highlight');
                                        if ($('#chatPanel').is(':visible') && 
s.chat.muted !== true) {
-                                               let playPromise = audio.play();
+                                               const playPromise = 
audio.play();
 
                                                // In browsers that don’t yet 
support this functionality,
                                                // playPromise won’t be 
defined.
@@ -179,7 +174,7 @@ var Chat = function() {
                                                        .replace(/#\{from\}/g, 
cm.from.name)
                                                        .replace(/#\{sent\}/g, 
cm.sent)
                                                        .replace(/#\{msg\}/g, 
emoticon.emoticonize(!!cm.message ? cm.message : "")));
-                                       let date = msg.children('.date');
+                                       const date = msg.children('.date');
                                        
date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id));
                                        if ("full" === cm.actions) {
                                                
date.after(addTemplate.replace(/#\{userId\}/g, cm.from.id));
@@ -196,7 +191,7 @@ var Chat = function() {
                                        if (m.mode === "accept") {
                                                $('#chat-msg-id-' + 
cm.id).remove();
                                        }
-                                       let btm = area.scrollTop() + 
area.innerHeight() >= area[0].scrollHeight;
+                                       const btm = area.scrollTop() + 
area.innerHeight() >= area[0].scrollHeight;
                                        area.append(msg);
                                        if (btm) {
                                                area.animate({
@@ -232,7 +227,7 @@ var Chat = function() {
                        }
                }
                , emtClick: function(emoticon) {
-                       let editor = $('#chatMessage .wysiwyg-editor');
+                       const editor = $('#chatMessage .wysiwyg-editor');
                        editor.html(editor.html() + ' ' + emoticon + ' ');
                }
        };
@@ -244,7 +239,7 @@ $(function() {
                        if (msg instanceof Blob) {
                                return; //ping
                        }
-                       let m = jQuery.parseJSON(msg);
+                       const m = jQuery.parseJSON(msg);
                        if (m) {
                                switch(m.type) {
                                        case "chat":

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2f44b387/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
index 0be5a13..0725f7c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
@@ -1,21 +1,4 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
+/* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var MAX_ITEM_COUNT = 5;
 function getRssItems(url, next) {
        //TODO items need to be merged and sorted by date
@@ -26,10 +9,10 @@ function getRssItems(url, next) {
                , dataType: 'xml'
                , cache: false
                , success: function(data) {
-                       var $xml = $(data);
-                       var counter = MAX_ITEM_COUNT;
+                       const $xml = $(data);
+                       let counter = MAX_ITEM_COUNT;
                        $xml.find("item").each(function() {
-                               var $this = $(this), item = {
+                               const $this = $(this), item = {
                                        title : $this.find("title").text(),
                                        link : $this.find("link").text(),
                                        description : 
$this.find("description").text(),
@@ -43,7 +26,7 @@ function getRssItems(url, next) {
                        });
                        counter = MAX_ITEM_COUNT;
                        $xml.find("entry").each(function() {
-                               var $this = $(this), item = {
+                               const $this = $(this), item = {
                                        title : $this.find("title").text(),
                                        link : $this.find("link").text(),
                                        description : $this.find("content"),

Reply via email to