loleaflet/.eslintignore                     |    6 
 loleaflet/.eslintrc                         |    6 
 loleaflet/Jakefile.js                       |    2 
 loleaflet/dist/toolbar/toolbar.js           |  807 ++++++++++++++--------------
 loleaflet/package.json                      |    2 
 loleaflet/src/admin/AdminSocketAnalytics.js |    8 
 loleaflet/src/admin/AdminSocketSettings.js  |    2 
 loleaflet/src/control/Control.Permission.js |    2 
 loleaflet/src/control/Control.Selection.js  |    2 
 loleaflet/src/control/Control.Tabs.js       |   18 
 loleaflet/src/core/Log.js                   |    4 
 loleaflet/src/dom/DomEvent.DoubleTap.js     |    2 
 loleaflet/src/dom/DomEvent.js               |    6 
 loleaflet/src/dom/Draggable.js              |    2 
 loleaflet/src/geo/LatLng.js                 |    2 
 loleaflet/src/geo/LatLngBounds.js           |    4 
 loleaflet/src/layer/GeoJSON.js              |    2 
 loleaflet/src/layer/Layer.Popup.js          |    6 
 loleaflet/src/layer/Layer.js                |    4 
 loleaflet/src/layer/marker/Cursor.js        |    2 
 loleaflet/src/layer/marker/Marker.js        |    6 
 loleaflet/src/layer/tile/GridLayer.js       |   32 -
 loleaflet/src/layer/tile/TileLayer.js       |    6 
 loleaflet/src/layer/vector/Polyline.js      |    4 
 loleaflet/src/layer/vector/SVG.js           |    4 
 loleaflet/src/map/Map.js                    |   12 
 loleaflet/src/map/anim/Map.ZoomAnimation.js |    4 
 loleaflet/src/map/ext/Map.Geolocation.js    |    2 
 loleaflet/src/map/handler/Map.Keyboard.js   |  108 +--
 loleaflet/src/map/handler/Map.Scroll.js     |    4 
 30 files changed, 538 insertions(+), 533 deletions(-)

New commits:
commit eaf34618733aec2f46c6744ed21e6329a7e08022
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 27 22:22:35 2016 +0530

    loleaflet: fix indent errors reported by bumped eslint
    
    Change-Id: I49e274e1d4869d9d0a39342d9c3b64747a1fc870

diff --git a/loleaflet/src/admin/AdminSocketAnalytics.js 
b/loleaflet/src/admin/AdminSocketAnalytics.js
index 4f93626..c8815b7 100644
--- a/loleaflet/src/admin/AdminSocketAnalytics.js
+++ b/loleaflet/src/admin/AdminSocketAnalytics.js
@@ -66,10 +66,10 @@ var AdminSocketAnalytics = AdminSocketBase.extend({
 
        _setUpAxis: function() {
                this._xScale = 
d3.scale.linear().range([this._graphMargins.left, this._graphWidth - 
this._graphMargins.right]).domain([d3.min(this._memStatsData, function(d) {
-                               return d.time;
-                       }), d3.max(this._memStatsData, function(d) {
-                               return d.time;
-                       })]);
+                       return d.time;
+               }), d3.max(this._memStatsData, function(d) {
+                       return d.time;
+               })]);
 
 
                this._yScale = d3.scale.linear().range([this._graphHeight - 
this._graphMargins.bottom, 
this._graphMargins.top]).domain([d3.min(this._memStatsData, function(d) {
diff --git a/loleaflet/src/admin/AdminSocketSettings.js 
b/loleaflet/src/admin/AdminSocketSettings.js
index 241150f..094cfeb 100644
--- a/loleaflet/src/admin/AdminSocketSettings.js
+++ b/loleaflet/src/admin/AdminSocketSettings.js
@@ -33,7 +33,7 @@ var AdminSocketSettings = AdminSocketBase.extend({
                this.socket.send('settings');
        },
 
-    onSocketMessage: function(e) {
+       onSocketMessage: function(e) {
                var textMsg;
                if (typeof e.data === 'string') {
                        textMsg = e.data;
diff --git a/loleaflet/src/control/Control.Permission.js 
b/loleaflet/src/control/Control.Permission.js
index 2f67eec..1178580 100644
--- a/loleaflet/src/control/Control.Permission.js
+++ b/loleaflet/src/control/Control.Permission.js
@@ -9,7 +9,7 @@ L.Control.PermissionSwitch = L.Control.extend({
 
        onAdd: function (map) {
                var partName = 'leaflet-control-editviewswitch',
-                       container = L.DomUtil.create('label', partName + ' 
leaflet-bar');
+                   container = L.DomUtil.create('label', partName + ' 
leaflet-bar');
 
                this._checkBox = L.DomUtil.create('input', 'editview-cb', 
container);
                this._checkBox.type = 'checkbox';
diff --git a/loleaflet/src/control/Control.Selection.js 
b/loleaflet/src/control/Control.Selection.js
index 524b187..af0ed0e 100644
--- a/loleaflet/src/control/Control.Selection.js
+++ b/loleaflet/src/control/Control.Selection.js
@@ -9,7 +9,7 @@ L.Control.Selection = L.Control.extend({
 
        onAdd: function (map) {
                var partName = 'leaflet-control-editviewswitch',
-                       container = L.DomUtil.create('label', partName + ' 
leaflet-bar');
+                   container = L.DomUtil.create('label', partName + ' 
leaflet-bar');
 
                this._checkBox = L.DomUtil.create('input', 'editview-cb', 
container);
                this._checkBox.type = 'checkbox';
diff --git a/loleaflet/src/control/Control.Tabs.js 
b/loleaflet/src/control/Control.Tabs.js
index 863dc4d..a7895f7 100644
--- a/loleaflet/src/control/Control.Tabs.js
+++ b/loleaflet/src/control/Control.Tabs.js
@@ -53,15 +53,15 @@ L.Control.Tabs = L.Control.extend({
                                 },
                                'renamesheet': {name: _('Rename sheet'),
                                                        callback: function(key, 
options) {
-                                                       var nPos = 
parseInt(options.$trigger.attr('id').split('spreadsheet-tab')[1]);
-                                                       vex.dialog.open({
-                                                               message: 
_('Enter new sheet name'),
-                                                               input: '<input 
name="sheetname" type="text" required />',
-                                                               callback: 
function(data) {
-                                                                       
map.renamePage(data.sheetname, nPos);
-                                                               }
-                                                       });
-                                               }}
+                                                               var nPos = 
parseInt(options.$trigger.attr('id').split('spreadsheet-tab')[1]);
+                                                               
vex.dialog.open({
+                                                                       
message: _('Enter new sheet name'),
+                                                                       input: 
'<input name="sheetname" type="text" required />',
+                                                                       
callback: function(data) {
+                                                                               
map.renamePage(data.sheetname, nPos);
+                                                                       }
+                                                               });
+                                                       }}
                        },
                        zIndex: 10
                });
diff --git a/loleaflet/src/core/Log.js b/loleaflet/src/core/Log.js
index 7f0fb03..9f9c3dd 100644
--- a/loleaflet/src/core/Log.js
+++ b/loleaflet/src/core/Log.js
@@ -37,8 +37,8 @@ L.Log = {
 
        save: function () {
                var blob = new Blob([this._getEntries()], {type: 'text/csv'}),
-                       e = document.createEvent('MouseEvents'),
-                       a = document.createElement('a');
+                   e = document.createEvent('MouseEvents'),
+                   a = document.createElement('a');
 
                a.download = Date.now() + '.csv';
                a.href = window.URL.createObjectURL(blob);
diff --git a/loleaflet/src/dom/DomEvent.DoubleTap.js 
b/loleaflet/src/dom/DomEvent.DoubleTap.js
index d0f374b..81df6b2 100644
--- a/loleaflet/src/dom/DomEvent.DoubleTap.js
+++ b/loleaflet/src/dom/DomEvent.DoubleTap.js
@@ -37,7 +37,7 @@ L.extend(L.DomEvent, {
                                if (L.Browser.pointer) {
                                        // work around .type being readonly 
with MSPointer* events
                                        var newTouch = {},
-                                               prop, i;
+                                           prop, i;
 
                                        for (i in touch) {
                                                prop = touch[i];
diff --git a/loleaflet/src/dom/DomEvent.js b/loleaflet/src/dom/DomEvent.js
index d1f9141..59a7ce5 100644
--- a/loleaflet/src/dom/DomEvent.js
+++ b/loleaflet/src/dom/DomEvent.js
@@ -181,8 +181,8 @@ L.DomEvent = {
                }
 
                var rect = container.getBoundingClientRect(), // constant object
-                       left = rect.left,
-                       top = rect.top;
+                   left = rect.left,
+                   top = rect.top;
 
                // iframe mouse coordinates are relative to the frame area
                // `target`: body element of the iframe; `currentTarget`: 
content window of the iframe
@@ -243,7 +243,7 @@ L.DomEvent = {
        // this is a horrible workaround for a bug in Android where a single 
touch triggers two click events
        _filterClick: function (e, handler) {
                var timeStamp = (e.timeStamp || e.originalEvent.timeStamp),
-                       elapsed = L.DomEvent._lastClick && (timeStamp - 
L.DomEvent._lastClick);
+                   elapsed = L.DomEvent._lastClick && (timeStamp - 
L.DomEvent._lastClick);
 
                // are they closer together than 500ms yet more than 100ms?
                // Android typically triggers them ~300ms apart while multiple 
listeners
diff --git a/loleaflet/src/dom/Draggable.js b/loleaflet/src/dom/Draggable.js
index 9924510..99cd6a9 100644
--- a/loleaflet/src/dom/Draggable.js
+++ b/loleaflet/src/dom/Draggable.js
@@ -100,7 +100,7 @@ L.Draggable = L.Evented.extend({
                        if (e.currentTarget && e.currentTarget.frameElement
                                && 
L.DomUtil.hasClass(e.currentTarget.frameElement, 'resize-detector')) {
                                var rect = 
this._map._container.getBoundingClientRect(),
-                                       correction = new L.Point(rect.left, 
rect.top);
+                                   correction = new L.Point(rect.left, 
rect.top);
                                offset = offset.add(correction);
                        }
                        if (this._map.getDocSize().x < this._map.getSize().x) {
diff --git a/loleaflet/src/geo/LatLng.js b/loleaflet/src/geo/LatLng.js
index 333abad..4f3a6bb 100644
--- a/loleaflet/src/geo/LatLng.js
+++ b/loleaflet/src/geo/LatLng.js
@@ -44,7 +44,7 @@ L.LatLng.prototype = {
 
        toBounds: function (sizeInMeters) {
                var latAccuracy = 180 * sizeInMeters / 40075017,
-                               lngAccuracy = latAccuracy / Math.cos((Math.PI / 
180) * this.lat);
+                   lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * 
this.lat);
 
                return L.latLngBounds(
                        [this.lat - latAccuracy, this.lng - lngAccuracy],
diff --git a/loleaflet/src/geo/LatLngBounds.js 
b/loleaflet/src/geo/LatLngBounds.js
index da0a57c..0b64be9 100644
--- a/loleaflet/src/geo/LatLngBounds.js
+++ b/loleaflet/src/geo/LatLngBounds.js
@@ -17,8 +17,8 @@ L.LatLngBounds.prototype = {
        // extend the bounds to contain the given point or bounds
        extend: function (obj) { // (LatLng) or (LatLngBounds)
                var sw = this._southWest,
-                       ne = this._northEast,
-                       sw2, ne2;
+                   ne = this._northEast,
+                   sw2, ne2;
 
                if (obj instanceof L.LatLng) {
                        sw2 = obj;
diff --git a/loleaflet/src/layer/GeoJSON.js b/loleaflet/src/layer/GeoJSON.js
index 1766a0f..cb17f88 100644
--- a/loleaflet/src/layer/GeoJSON.js
+++ b/loleaflet/src/layer/GeoJSON.js
@@ -240,7 +240,7 @@ L.LayerGroup.include({
                }
 
                var isGeometryCollection = type === 'GeometryCollection',
-                       jsons = [];
+                   jsons = [];
 
                this.eachLayer(function (layer) {
                        if (layer.toGeoJSON) {
diff --git a/loleaflet/src/layer/Layer.Popup.js 
b/loleaflet/src/layer/Layer.Popup.js
index 5561f97..d81bf59 100644
--- a/loleaflet/src/layer/Layer.Popup.js
+++ b/loleaflet/src/layer/Layer.Popup.js
@@ -32,9 +32,9 @@ L.Layer.include({
        unbindPopup: function () {
                if (this._popup) {
                        this.off({
-                           click: this._openPopup,
-                           remove: this.closePopup,
-                           move: this._movePopup
+                               click: this._openPopup,
+                               remove: this.closePopup,
+                               move: this._movePopup
                        });
                        this._popupHandlersAdded = false;
                        this._popup = null;
diff --git a/loleaflet/src/layer/Layer.js b/loleaflet/src/layer/Layer.js
index 579d30b..493bd04 100644
--- a/loleaflet/src/layer/Layer.js
+++ b/loleaflet/src/layer/Layer.js
@@ -143,8 +143,8 @@ L.Map.include({
 
        _updateZoomLevels: function () {
                var minZoom = Infinity,
-                       maxZoom = -Infinity,
-                       oldZoomSpan = this._getZoomSpan();
+                   maxZoom = -Infinity,
+                   oldZoomSpan = this._getZoomSpan();
 
                for (var i in this._zoomBoundLayers) {
                        var options = this._zoomBoundLayers[i].options;
diff --git a/loleaflet/src/layer/marker/Cursor.js 
b/loleaflet/src/layer/marker/Cursor.js
index 4bb4cf5..4fb32c2 100644
--- a/loleaflet/src/layer/marker/Cursor.js
+++ b/loleaflet/src/layer/marker/Cursor.js
@@ -93,7 +93,7 @@ L.cursor = function (latlng, options) {
 
 L.Cursor.getCursorURL = function (localPath) {
        var scripts = document.getElementsByTagName('script'),
-               leafletRe = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;
+           leafletRe = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;
 
        var i, len, src, path;
 
diff --git a/loleaflet/src/layer/marker/Marker.js 
b/loleaflet/src/layer/marker/Marker.js
index 28bd7b8..95044da 100644
--- a/loleaflet/src/layer/marker/Marker.js
+++ b/loleaflet/src/layer/marker/Marker.js
@@ -110,7 +110,7 @@ L.Marker = L.Layer.extend({
                    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 
'animated' : 'hide');
 
                var icon = options.icon.createIcon(this._icon),
-                       addIcon = false;
+                   addIcon = false;
 
                // if we're not reusing the icon, remove the old one and init 
new one
                if (icon !== this._icon) {
@@ -144,7 +144,7 @@ L.Marker = L.Layer.extend({
                }
 
                var newShadow = options.icon.createShadow(this._shadow),
-                       addShadow = false;
+                   addShadow = false;
 
                if (newShadow !== this._shadow) {
                        this._removeShadow();
@@ -174,7 +174,7 @@ L.Marker = L.Layer.extend({
                if (this.options.riseOnHover) {
                        this.off({
                                mouseover: this._bringToFront,
-                           mouseout: this._resetZIndex
+                               mouseout: this._resetZIndex
                        });
                }
 
diff --git a/loleaflet/src/layer/tile/GridLayer.js 
b/loleaflet/src/layer/tile/GridLayer.js
index 20dd36a..89b71bd 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -167,7 +167,7 @@ L.GridLayer = L.Layer.extend({
                }
 
                var now = +new Date(),
-                       nextFrame = false;
+                   nextFrame = false;
 
                for (var key in this._tiles) {
                        var tile = this._tiles[key];
@@ -205,7 +205,7 @@ L.GridLayer = L.Layer.extend({
 
        _updateLevels: function () {
                var zoom = this._tileZoom,
-                       maxZoom = this.options.maxZoom;
+                   maxZoom = this.options.maxZoom;
 
                for (var z in this._levels) {
                        if (this._levels[z].el.children.length || z === zoom) {
@@ -272,11 +272,11 @@ L.GridLayer = L.Layer.extend({
 
        _retainParent: function (x, y, z, part, minZoom) {
                var x2 = Math.floor(x / 1.2),
-                       y2 = Math.floor(y / 1.2),
-                       z2 = z - 1;
+                   y2 = Math.floor(y / 1.2),
+                   z2 = z - 1;
 
                var key = x2 + ':' + y2 + ':' + z2 + ':' + part,
-                       tile = this._tiles[key];
+                   tile = this._tiles[key];
 
                if (tile && tile.active) {
                        tile.retain = true;
@@ -300,7 +300,7 @@ L.GridLayer = L.Layer.extend({
 
                                var key = Math.floor(i) + ':' + Math.floor(j) + 
':' +
                                        (z + 1) + ':' + part,
-                                       tile = this._tiles[key];
+                                   tile = this._tiles[key];
 
                                if (tile && tile.active) {
                                        tile.retain = true;
@@ -327,7 +327,7 @@ L.GridLayer = L.Layer.extend({
 
        _reset: function (center, zoom, hard, noPrune, noUpdate) {
                var tileZoom = Math.round(zoom),
-                       tileZoomChanged = this._tileZoom !== tileZoom;
+                   tileZoomChanged = this._tileZoom !== tileZoom;
 
                if (!noUpdate && (hard || tileZoomChanged)) {
 
@@ -497,8 +497,8 @@ L.GridLayer = L.Layer.extend({
                if (zoom === undefined) { zoom = Math.round(map.getZoom()); }
 
                var pixelBounds = map.getPixelBounds(center, zoom),
-                       tileRange = this._pxBoundsToTileRange(pixelBounds),
-                       queue = [];
+                   tileRange = this._pxBoundsToTileRange(pixelBounds),
+                   queue = [];
 
                for (var key in this._tiles) {
                        if (this._keyToTileCoords(key).z !== zoom ||
@@ -565,8 +565,8 @@ L.GridLayer = L.Layer.extend({
                var zoom = Math.round(map.getZoom());
 
                var pixelBounds = map.getPixelBounds(center, zoom),
-                       tileRange = this._pxBoundsToTileRange(pixelBounds),
-                       queue = [];
+                   tileRange = this._pxBoundsToTileRange(pixelBounds),
+                   queue = [];
 
                for (key in this._tiles) {
                        if (this._keyToTileCoords(key).z !== zoom ||
@@ -728,7 +728,7 @@ L.GridLayer = L.Layer.extend({
        // converts tile cache key to coordinates
        _keyToTileCoords: function (key) {
                var k = key.split(':'),
-                       coords = new L.Point(+k[0], +k[1]);
+               coords = new L.Point(+k[0], +k[1]);
                coords.z = +k[2];
                coords.part = +k[3];
                return coords;
@@ -1100,10 +1100,10 @@ L.GridLayer = L.Layer.extend({
                        tileBorder = this._preFetchBorder;
                }
                var queue = [],
-                       finalQueue = [],
-                       visitedTiles = {},
-                       borderWidth = 0;
-                       // don't search on a border wider than 5 tiles because 
it will freeze the UI
+                   finalQueue = [],
+                   visitedTiles = {},
+                   borderWidth = 0;
+               // don't search on a border wider than 5 tiles because it will 
freeze the UI
 
                while ((tileBorder.min.x >= 0 || tileBorder.min.y >= 0 ||
                                tileBorder.max.x * this._tileWidthTwips < 
this._docWidthTwips ||
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 8cbe56c..313a431 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -127,7 +127,7 @@ L.TileLayer = L.GridLayer.extend({
                this._invalidateClientVisibleArea();
        },
 
-    onAdd: function (map) {
+       onAdd: function (map) {
                this._initContainer();
                this._getToolbarCommandsValues();
                this._selections = new L.LayerGroup();
@@ -620,7 +620,7 @@ L.TileLayer = L.GridLayer.extend({
        _onStateChangedMsg: function (textMsg) {
                var unoMsg = textMsg.substr(14).split('=');
                var commandName = '',
-                       state = '';
+                   state = '';
                if (unoMsg.length > 0) {
                        commandName = unoMsg[0];
                }
@@ -1286,7 +1286,7 @@ L.TileLayer = L.GridLayer.extend({
                }
        },
 
-    _invalidatePreviews: function () {
+       _invalidatePreviews: function () {
                if (this._map._docPreviews && this._previewInvalidations.length 
> 0) {
                        var toInvalidate = {};
                        for (var i = 0; i < this._previewInvalidations.length; 
i++) {
diff --git a/loleaflet/src/layer/vector/Polyline.js 
b/loleaflet/src/layer/vector/Polyline.js
index 9f2209f..a636c5d 100644
--- a/loleaflet/src/layer/vector/Polyline.js
+++ b/loleaflet/src/layer/vector/Polyline.js
@@ -133,7 +133,7 @@ L.Polyline = L.Path.extend({
 
                // project bounds as well to use later for Canvas hit 
detection/etc.
                var w = this._clickTolerance(),
-                       p = new L.Point(w, -w);
+                   p = new L.Point(w, -w);
 
                if (this._latlngs.length) {
                        this._pxBounds = new L.Bounds(
@@ -198,7 +198,7 @@ L.Polyline = L.Path.extend({
        // simplify each clipped part of the polyline for performance
        _simplifyPoints: function () {
                var parts = this._parts,
-                       tolerance = this.options.smoothFactor;
+                   tolerance = this.options.smoothFactor;
 
                for (var i = 0, len = parts.length; i < len; i++) {
                        parts[i] = L.LineUtil.simplify(parts[i], tolerance);
diff --git a/loleaflet/src/layer/vector/SVG.js 
b/loleaflet/src/layer/vector/SVG.js
index 0459978..3b203df 100644
--- a/loleaflet/src/layer/vector/SVG.js
+++ b/loleaflet/src/layer/vector/SVG.js
@@ -67,7 +67,7 @@ L.SVG = L.Renderer.extend({
 
        _updateStyle: function (layer) {
                var path = layer._path,
-                       options = layer.options;
+                   options = layer.options;
 
                if (!path) { return; }
 
@@ -146,7 +146,7 @@ L.extend(L.SVG, {
        // generates SVG path string for multiple rings, with each ring turning 
into "M..L..L.." instructions
        pointsToPath: function (rings, closed) {
                var str = '',
-                       i, j, len, len2, points, p;
+                   i, j, len, len2, points, p;
 
                for (i = 0, len = rings.length; i < len; i++) {
                        points = rings[i];
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 7d71fba..22e569f 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -230,7 +230,7 @@ L.Map = L.Evented.extend({
 
        panInsideBounds: function (bounds, options) {
                var center = this.getCenter(),
-                       newCenter = this._limitCenter(center, this._zoom, 
bounds);
+                   newCenter = this._limitCenter(center, this._zoom, bounds);
 
                if (center.equals(newCenter)) { return this; }
 
@@ -738,10 +738,10 @@ L.Map = L.Evented.extend({
                        vex.dialogID = options.id;
                        vex.globalID += 1;
                        options.$vex = 
$('<div>').addClass(vex.baseClassNames.vex).addClass(options.className).css(options.css).data({
-                         vex: options
+                               vex: options
                        });
                        options.$vexOverlay = 
$('<div>').addClass(vex.baseClassNames.overlay).addClass(options.overlayClassName).css(options.overlayCSS).data({
-                         vex: options
+                               vex: options
                        });
 
                        options.$vexOverlay.bind('click.vex', function(e) {
@@ -753,7 +753,7 @@ L.Map = L.Evented.extend({
                        options.$vex.append(options.$vexOverlay);
 
                        options.$vexContent = 
$('<div>').addClass(vex.baseClassNames.content).addClass(options.contentClassName).css(options.contentCSS).data({
-                         vex: options
+                               vex: options
                        });
                        options.$vex.append(options.$vexContent);
 
@@ -815,7 +815,7 @@ L.Map = L.Evented.extend({
 
        _isMouseEnteringLeaving: function (e) {
                var target = e.target || e.srcElement,
-                       related = e.relatedTarget;
+                   related = e.relatedTarget;
 
                if (!target) { return false; }
 
@@ -830,7 +830,7 @@ L.Map = L.Evented.extend({
                // find the layer the event is propagating from
                var target = this._targets[L.stamp(e.target || e.srcElement)],
                        //type = e.type === 'keypress' && e.keyCode === 13 ? 
'click' : e.type;
-                       type = e.type;
+                   type = e.type;
 
                // we need to keep track if we have entered/left the map
                this._mouseEnteringLeaving = false;
diff --git a/loleaflet/src/map/anim/Map.ZoomAnimation.js 
b/loleaflet/src/map/anim/Map.ZoomAnimation.js
index 27e14a2..379d8f0 100644
--- a/loleaflet/src/map/anim/Map.ZoomAnimation.js
+++ b/loleaflet/src/map/anim/Map.ZoomAnimation.js
@@ -35,7 +35,7 @@ L.Map.include(!zoomAnimated ? {} : {
 
                this.on('zoomanim', function (e) {
                        var prop = L.DomUtil.TRANSFORM,
-                               transform = proxy.style[prop];
+                           transform = proxy.style[prop];
 
                        L.DomUtil.setTransform(proxy, this.project(e.center, 
e.zoom), this.getZoomScale(e.zoom, 1));
 
@@ -47,7 +47,7 @@ L.Map.include(!zoomAnimated ? {} : {
 
                this.on('load moveend', function () {
                        var c = this.getCenter(),
-                               z = this.getZoom();
+                           z = this.getZoom();
                        L.DomUtil.setTransform(proxy, this.project(c, z), 
this.getZoomScale(z, 1));
                }, this);
        },
diff --git a/loleaflet/src/map/ext/Map.Geolocation.js 
b/loleaflet/src/map/ext/Map.Geolocation.js
index e4b0258..e318081 100644
--- a/loleaflet/src/map/ext/Map.Geolocation.js
+++ b/loleaflet/src/map/ext/Map.Geolocation.js
@@ -25,7 +25,7 @@ L.Map.include({
                }
 
                var onResponse = L.bind(this._handleGeolocationResponse, this),
-                       onError = L.bind(this._handleGeolocationError, this);
+                   onError = L.bind(this._handleGeolocationError, this);
 
                if (options.watch) {
                        this._locationWatchId =
diff --git a/loleaflet/src/map/handler/Map.Keyboard.js 
b/loleaflet/src/map/handler/Map.Keyboard.js
index 65cfe88..e316e8e 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -181,8 +181,8 @@ L.Map.Keyboard = L.Handler.extend({
 
        _setPanOffset: function (pan) {
                var keys = this._panKeys = {},
-                       codes = this.navigationKeyCodes,
-                       i, len;
+                   codes = this.navigationKeyCodes,
+                   i, len;
 
                for (i = 0, len = codes.left.length; i < len; i++) {
                        keys[codes.left[i]] = [-1 * pan, 0];
@@ -200,8 +200,8 @@ L.Map.Keyboard = L.Handler.extend({
 
        _setZoomOffset: function (zoom) {
                var keys = this._zoomKeys = {},
-                       codes = this.navigationKeyCodes,
-                       i, len;
+                   codes = this.navigationKeyCodes,
+                   i, len;
 
                for (i = 0, len = codes.zoomIn.length; i < len; i++) {
                        keys[codes.zoomIn[i]] = zoom;
@@ -371,19 +371,19 @@ L.Map.Keyboard = L.Handler.extend({
                        // Ctrl + Alt
                        if (!e.originalEvent.shiftKey) {
                                switch (e.originalEvent.keyCode) {
-                                       case 53: // 5
-                                               
this._map._socket.sendMessage('uno .uno:Strikeout');
-                                               return true;
-                                       case 70: // f
-                                               
this._map._socket.sendMessage('uno .uno:InsertFootnote');
-                                               return true;
-                                       case 67: // c
-                                       case 77: // m
-                                               
this._map._socket.sendMessage('uno .uno:InsertAnnotation');
-                                               return true;
-                                       case 68: // d
-                                               
this._map._socket.sendMessage('uno .uno:InsertEndnote');
-                                               return true;
+                               case 53: // 5
+                                       this._map._socket.sendMessage('uno 
.uno:Strikeout');
+                                       return true;
+                               case 70: // f
+                                       this._map._socket.sendMessage('uno 
.uno:InsertFootnote');
+                                       return true;
+                               case 67: // c
+                               case 77: // m
+                                       this._map._socket.sendMessage('uno 
.uno:InsertAnnotation');
+                                       return true;
+                               case 68: // d
+                                       this._map._socket.sendMessage('uno 
.uno:InsertEndnote');
+                                       return true;
                                }
                        }
 
@@ -391,45 +391,45 @@ L.Map.Keyboard = L.Handler.extend({
                }
 
                switch (e.originalEvent.keyCode) {
-                       case 51: // 3
-                               if (this._map.getDocType() === 'spreadsheet') {
-                                       this._map._socket.sendMessage('uno 
.uno:SetOptimalColumnWidthDirect');
-                                       
this._map._socket.sendMessage('commandvalues 
command=.uno:ViewRowColumnHeaders');
-                                       return true;
-                               }
-                               return false;
-                       case 53: // 5
-                               if (this._map.getDocType() === 'spreadsheet') {
-                                       this._map._socket.sendMessage('uno 
.uno:Strikeout');
-                                       return true;
-                               }
-                               return false;
-                       case 67: // c
-                       case 88: // x
-                       case 99: // c (Safari)
-                       case 120: // x (Safari)
-                       case 91: // Left Cmd (Safari)
-                       case 93: // Right Cmd (Safari)
-                               // we prepare for a copy or cut event
-                               this._map._docLayer._textArea.value = 'dummy 
text';
-                               this._map._docLayer._textArea.focus();
-                               this._map._docLayer._textArea.select();
-                               return true;
-                       case 80: // p
-                               this._map.print();
-                               return true;
-                       case 86: // v
-                       case 118: // v (Safari)
+               case 51: // 3
+                       if (this._map.getDocType() === 'spreadsheet') {
+                               this._map._socket.sendMessage('uno 
.uno:SetOptimalColumnWidthDirect');
+                               this._map._socket.sendMessage('commandvalues 
command=.uno:ViewRowColumnHeaders');
                                return true;
-                       case 112: // f1
-                               this._map._socket.sendMessage('uno 
.uno:NoteVisible');
-                               return true;
-                       case 188: // ,
-                               this._map._socket.sendMessage('uno 
.uno:SubScript');
-                               return true;
-                       case 190: // .
-                               this._map._socket.sendMessage('uno 
.uno:SuperScript');
+                       }
+                       return false;
+               case 53: // 5
+                       if (this._map.getDocType() === 'spreadsheet') {
+                               this._map._socket.sendMessage('uno 
.uno:Strikeout');
                                return true;
+                       }
+                       return false;
+               case 67: // c
+               case 88: // x
+               case 99: // c (Safari)
+               case 120: // x (Safari)
+               case 91: // Left Cmd (Safari)
+               case 93: // Right Cmd (Safari)
+                       // we prepare for a copy or cut event
+                       this._map._docLayer._textArea.value = 'dummy text';
+                       this._map._docLayer._textArea.focus();
+                       this._map._docLayer._textArea.select();
+                       return true;
+               case 80: // p
+                       this._map.print();
+                       return true;
+               case 86: // v
+               case 118: // v (Safari)
+                       return true;
+               case 112: // f1
+                       this._map._socket.sendMessage('uno .uno:NoteVisible');
+                       return true;
+               case 188: // ,
+                       this._map._socket.sendMessage('uno .uno:SubScript');
+                       return true;
+               case 190: // .
+                       this._map._socket.sendMessage('uno .uno:SuperScript');
+                       return true;
                }
                if (e.type === 'keypress' && (e.originalEvent.ctrlKey || 
e.originalEvent.metaKey) &&
                        (e.originalEvent.key === 'c' || e.originalEvent.key === 
'v' || e.originalEvent.key === 'x')) {
diff --git a/loleaflet/src/map/handler/Map.Scroll.js 
b/loleaflet/src/map/handler/Map.Scroll.js
index b07dec8..f7a98f3 100644
--- a/loleaflet/src/map/handler/Map.Scroll.js
+++ b/loleaflet/src/map/handler/Map.Scroll.js
@@ -45,8 +45,8 @@ L.Map.Scroll = L.Handler.extend({
 
        _performScroll: function () {
                var map = this._map,
-                       delta = -this._delta,
-                       scrollAmount = Math.round(map.getSize().y / 4);
+                   delta = -this._delta,
+                   scrollAmount = Math.round(map.getSize().y / 4);
 
                this._delta = 0;
                this._startTime = null;
commit 6e45f4fbfb54e08cc7511c2bda5ab2edb55fadca
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 27 22:08:44 2016 +0530

    loleaflet: Bump eslint version to 2.8.0
    
    Adjust config file, .eslintrc, accordingly; remove deprecated
    options
    
    Change-Id: I113606c5d1fdc4c46216b1fa340c957fd0e69308

diff --git a/loleaflet/.eslintrc b/loleaflet/.eslintrc
index c6678be..d073b55 100644
--- a/loleaflet/.eslintrc
+++ b/loleaflet/.eslintrc
@@ -3,14 +3,12 @@
     "camelcase": 2,
     "quotes": [2, "single"],
     "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
-    "space-after-function-name": 2,
     "space-in-parens": 2,
-    "space-in-brackets": 2,
     "space-before-blocks": 2,
-    "space-after-keywords": 2,
+    "keyword-spacing": 2,
     "no-lonely-if": 2,
     "comma-style": 2,
-    "indent": [2, "tab"],
+    "indent": [2, "tab", {"VariableDeclarator": 0}],
     "no-underscore-dangle": 0,
     "no-constant-condition": 0,
     "no-multi-spaces": 0,
diff --git a/loleaflet/package.json b/loleaflet/package.json
index 9c423c4..883699c 100644
--- a/loleaflet/package.json
+++ b/loleaflet/package.json
@@ -4,7 +4,7 @@
   "description": "JavaScript library for mobile-friendly interactive maps",
   "devDependencies": {
     "copyfiles": "0.1.0",
-    "eslint": "^0.15.1",
+    "eslint": "^2.8.0",
     "happen": "~0.1.3",
     "jake": "~8.0.10",
     "karma": "~0.12.31",
commit 3414ab2754c7e3b367be56c0739a41b0a0b02b90
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 27 20:46:30 2016 +0530

    loleaflet: linting: fix errors in toolbar.js
    
    Such a huge confusing diff is mainly due to moving of functions from bottom
    to top because a function should be defined before it is used.
    
    Other changes include using single quotes for strings, and other
    minor style fixes.
    
    Change-Id: Ieb8e5054a9c8113ec211973e086111d91759f80b

diff --git a/loleaflet/dist/toolbar/toolbar.js 
b/loleaflet/dist/toolbar/toolbar.js
index b2b7eeb..eeb79d9 100644
--- a/loleaflet/dist/toolbar/toolbar.js
+++ b/loleaflet/dist/toolbar/toolbar.js
@@ -1,201 +1,73 @@
 /*
  * LibreOffice Online toolbar
  */
-$(function () {
-       $('#toolbar-up-more').w2toolbar({
-               name: 'toolbar-up-more',
-               items: [
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
-               }
-       });
-
-       $('#toolbar-up').w2toolbar({
-               name: 'toolbar-up',
-               items: [
-                       { type: 'html', id: 'left' },
-                       { type: 'button',  id: 'save', img: 'save', hint: 
_("Save"), uno: 'Save' },
-                       { type: 'break' },
-                       { type: 'button',  id: 'undo',  img: 'undo', hint: 
_("Undo"), uno: 'Undo' },
-                       { type: 'button',  id: 'redo',  img: 'redo', hint: 
_("Redo"), uno: 'Redo' },
-                       { type: 'break' },
-                       { type: 'html',   id: 'styles', html: '<select 
class="styles-select"></select>' },
-                       { type: 'html',   id: 'fonts', html: '<select 
class="fonts-select"></select>' },
-                       { type: 'html',   id: 'fontsizes', html: '<select 
class="fontsizes-select"></select>' },
-                       { type: 'break' },
-                       { type: 'button',  id: 'bold',  img: 'bold', hint: 
_("Bold"), uno: 'Bold' },
-                       { type: 'button',  id: 'italic', img: 'italic', hint: 
_("Italic"), uno: 'Italic' },
-                       { type: 'button',  id: 'underline',  img: 'underline', 
hint: _("Underline"), uno: 'Underline' },
-                       { type: 'button',  id: 'strikeout', img: 'strikeout', 
hint: _("Strikeout"), uno: 'Strikeout' },
-                       { type: 'break' },
-                       { type: 'html',  id: 'fontcolor-html', html: '<input 
id="fontColorPicker" style="display:none;">' },
-                       { type: 'button',  id: 'fontcolor', img: 'color', hint: 
_("Font color") },
-                       { type: 'html',  id: 'backcolor-html', html: '<input 
id="backColorPicker" style="display:none;">' },
-                       { type: 'button',  id: 'backcolor', img: 'backcolor', 
hint: _("Highlighting") },
-                       { type: 'break' },
-                       { type: 'button',  id: 'alignleft',  img: 'alignleft', 
hint: _("Align left"), uno: 'LeftPara', unosheet: 'HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"1"}}'  },
-                       { type: 'button',  id: 'alignhorizontal',  img: 
'alignhorizontal', hint: _("Center horizontally"), uno: 'CenterPara', unosheet: 
'HorizontalAlignment {"HorizontalAlignment":{"type":"unsigned short", 
"value":"2"}}' },
-                       { type: 'button',  id: 'alignright',  img: 
'alignright', hint: _("Align right"), uno: 'RightPara', unosheet: 
'HorizontalAlignment {"HorizontalAlignment":{"type":"unsigned short", 
"value":"3"}}' },
-                       { type: 'button',  id: 'alignblock',  img: 
'alignblock', hint: _("Justified"), uno: 'JustifyPara', unosheet: 
'HorizontalAlignment {"HorizontalAlignment":{"type":"unsigned short", 
"value":"4"}}' },
-                       { type: 'break' },
-                       { type: 'button',  id: 'bullet',  img: 'bullet', hint: 
_("Bullets on/off"), uno: 'DefaultBullet' },
-                       { type: 'button',  id: 'numbering',  img: 'numbering', 
hint: _("Numbering on/off"), uno: 'DefaultNumbering' },
-                       { type: 'break' },
-                       { type: 'button',  id: 'incrementindent',  img: 
'incrementindent', hint: _("Increase indent"), uno: 'IncrementIndent' },
-                       { type: 'button',  id: 'decrementindent',  img: 
'decrementindent', hint: _("Decrease indent"), uno: 'DecrementIndent' },
-                       { type: 'break', id: 'incdecindent' },
-                       { type: 'html',  id: 'inserttable-html', html: '<div 
id="inserttable-popup" class="inserttable-pop ui-widget ui-widget-content 
ui-corner-all" style="position: absolute; display: none;"><div 
class="inserttable-grid"></div><div id="inserttable-status" 
class="loleaflet-font" style="padding: 5px;"><br/></div>' },
-                       { type: 'button',  id: 'inserttable',  img: 
'inserttable', hint: _("Insert table") },
-                       { type: 'button',  id: 'annotation', img: 'annotation', 
hint: _("Insert comment"), uno: 'InsertAnnotation' },
-                       { type: 'button',  id: 'insertgraphic',  img: 
'insertgraphic', hint: _("Insert graphic") },
-                       { type: 'break' },
-                       { type: 'button',  id: 'help',  img: 'help', hint: 
_("Help") },
-                       { type: 'html', id: 'right' },
-                       { type: 'button',  id: 'more', img: 'more', hint: 
_("More") },
-                       { type: 'button',  id: 'close',  img: 'closedoc', hint: 
_("Close document"), hidden: true }
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
-               },
-               onRefresh: function(e) {
-                       if (!L.DomUtil.get('fontcolorindicator')) {
-                               var fontColorIndicator = 
L.DomUtil.create('div', 'font-color-indicator', 
L.DomUtil.get('tb_toolbar-up_item_fontcolor'));
-                               fontColorIndicator.id = 'fontcolorindicator';
-
-                               
$('#fontColorPicker').colorpicker({showOn:'none', hideButton:true});
-                               $("#fontColorPicker").on("change.color", 
onColorPick);
-                       }
-
-                       if (!L.DomUtil.get('backcolorindicator')) {
-                               var backColorIndicator = 
L.DomUtil.create('div', 'back-color-indicator', 
L.DomUtil.get('tb_toolbar-up_item_backcolor'));
-                               backColorIndicator.id = 'backcolorindicator';
 
-                               
$('#backColorPicker').colorpicker({showOn:'none', hideButton:true});
-                               $("#backColorPicker").on("change.color", 
onColorPick);
-                       }
+/* global $ map closebutton w2ui vex _ */
 
-                       insertTable();
-               }
-       });
+function onDelete(e) {
+       if (e !== false) {
+               map.deletePage();
+       }
+}
 
-       $('#formulabar').w2toolbar({
-               name: 'formulabar',
-               items: [
-                       { type: 'html',  id: 'left' },
-                       { type: 'button',  id: 'sum',  img: 'autosum', hint: 
_("Sum") },
-                       { type: 'button',  id: 'function',  img: 'equal', hint: 
_("Function") },
-                       { type: 'button', hidden: true, id: 'cancelformula',  
img: 'cancel', hint: _("Cancel") },
-                       { type: 'button', hidden: true, id: 'acceptformula',  
img: 'accepttrackedchanges', hint: _("Accept") },
-                       { type: 'html', id: 'formula', html: '<input 
id="formulaInput" onkeyup="onFormulaInput()"' +
-                               'onblur="onFormulaBarBlur()" 
onfocus="onFormulaBarFocus()" type=text>' }
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
-               }
-       });
-       $('#spreadsheet-toolbar').w2toolbar({
-               name: 'spreadsheet-toolbar',
-               items: [
-                       { type: 'button',  id: 'firstrecord',  img: 
'firstrecord', hidden: true, hint: _("First sheet") },
-                       { type: 'button',  id: 'prevrecord',  img: 
'prevrecord', hidden: true, hint: _("Previous sheet") },
-                       { type: 'button',  id: 'nextrecord',  img: 
'nextrecord', hidden: true, hint: _("Next sheet") },
-                       { type: 'button',  id: 'lastrecord',  img: 
'lastrecord', hidden: true, hint: _("Last sheet") }
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
-               }
-       });
-       $('#presentation-toolbar').w2toolbar({
-               name: 'presentation-toolbar',
-               items: [
-                       { type: 'html',  id: 'left' },
-                       { type: 'button',  id: 'presentation', img: 
'presentation', hidden:true, hint: _("Fullscreen presentation") },
-                       { type: 'break', id: 'presentationbreak', hidden:true },
-                       { type: 'button',  id: 'insertpage', img: 'insertpage', 
hidden:true, hint: _("Insert slide") },
-                       { type: 'button',  id: 'duplicatepage', img: 
'duplicatepage', hidden:true, hint: _("Duplicate slide") },
-                       { type: 'button',  id: 'deletepage', img: 'deletepage', 
hidden:true, hint: _("Delete slide") },
-                       { type: 'html',  id: 'right' }
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
-               }
-       });
-       $('#toolbar-down').w2toolbar({
-               name: 'toolbar-down',
-               items: [
-                       { type: 'html',  id: 'search',
-                               html: '<div style="padding: 3px 10px;" 
class="loleaflet-font">'+
-                                         ' ' + _("Search:") +
-                                         '    <input size="10" 
id="search-input" onkeypress="onSearch(event)"' +
-                                                               
'style="padding: 3px; border-radius: 2px; border: 1px solid silver"/>'+
-                                         '</div>'
-                       },
-                       { type: 'button',  id: 'searchprev', img: 'prev', hint: 
_("Search backwards"), disabled: true },
-                       { type: 'button',  id: 'searchnext', img: 'next', hint: 
_("Search forward"), disabled: true },
-                       { type: 'button',  id: 'cancelsearch', img: 'cancel', 
hint: _("Cancel the search"), hidden: true },
-                       { type: 'html',  id: 'left' },
-                       { type: 'html',  id: 'right' },
-                       { type: 'html',    id: 'modifiedstatuslabel', html: 
'<div id="modifiedstatuslabel" class="loleaflet-font"></div>' },
-                       { type: 'break' },
-                       { type: 'button',  id: 'takeedit', img: 'edit', hint: 
_("Take edit lock (others can only view)"), caption: _('VIEWING')},
-                       { type: 'break' },
-                       { type: 'button',  id: 'prev', img: 'prev', hint: 
_("Previous page") },
-                       { type: 'button',  id: 'next', img: 'next', hint: 
_("Next page") },
-                       { type: 'break', id: 'prevnextbreak' },
-                       { type: 'button',  id: 'zoomreset', img: 'zoomreset', 
hint: _("Reset zoom") },
-                       { type: 'button',  id: 'zoomout', img: 'zoomout', hint: 
_("Zoom out") },
-                       { type: 'html',    id: 'zoomlevel', html: '<div 
id="zoomlevel" class="loleaflet-font">100%</div>'},
-                       { type: 'button',  id: 'zoomin', img: 'zoomin', hint: 
_("Zoom in") }
-               ],
-               onClick: function (e) {
-                       onClick(e.target);
+function resizeToolbar() {
+       var hasMoreItems = false;
+       var toolbarUp = w2ui['toolbar-up'];
+       var toolbarUpMore = w2ui['toolbar-up-more'];
+       // move items from toolbar-up-more -> toolbar-up
+       while ($('#toolbar-up')[0].scrollWidth <= $(window).width()) {
+               var item = toolbarUpMore.items[0];
+               if (!item) {
+                       break;
                }
-       });
-});
-
-// This object is used to track enabled/disabled state when one is in view mode
-var formatButtons = {
-       'undo': true, 'redo': true, 'save': true,
-       'bold': true, 'italic': true, 'underline': true, 'strikeout': true,
-       'annotation': true, 'inserttable': true,
-       'fontcolor': true, 'backcolor': true, 'bullet': true, 'numbering': true,
-       'alignleft': true, 'alignhorizontal': true, 'alignright': true, 
'alignblock': true,
-       'incrementindent': true, 'decrementindent': true, 'insertgraphic': true
-};
+               toolbarUpMore.items.shift();
+               toolbarUp.insert('right', item);
+       }
 
-var takeEditPopupMessage = '<div>' + _("You are viewing now.") + '<br/>' + 
_("Click here to take edit.") + '</div>';
-var takeEditPopupTimeout = null;
+       // move items from toolbar-up -> toolbar-up-more
+       while ($('#toolbar-up')[0].scrollWidth > Math.max($(window).width(), 
parseInt($('body').css('min-width')))) {
+               var itemId = toolbarUp.items[toolbarUp.items.length - 4].id;
+               item = toolbarUp.get(itemId);
+               toolbarUp.remove(itemId);
+               toolbarUpMore.insert(toolbarUpMore.items[0], item);
+               hasMoreItems = true;
+       }
 
-function onSearch(e) {
-       if (e.keyCode === 13) {
-               var toolbar = w2ui['toolbar-down'];
-               map.search(L.DomUtil.get('search-input').value);
-               toolbar.enable('searchprev');
-               toolbar.enable('searchnext');
-               toolbar.show('cancelsearch');
+       if (hasMoreItems) {
+               w2ui['toolbar-up'].show('more');
        }
        else {
-               map.fire('requestloksession');
+               w2ui['toolbar-up'].hide('more');
+       }
+
+       // resize toolbar-up-more
+       var lastItem = 
$('#toolbar-up-more>table>tbody>tr>td[valign="middle"]').last();
+       if (lastItem.length) {
+               $('#toolbar-up-more').width($(lastItem).position().left + 
$(lastItem).width());
+               w2ui['toolbar-up-more'].render();
+       } else {
+               $('#toolbar-up-more').hide();
+               var toolbar = w2ui['toolbar-up'];
+               toolbar.uncheck('more');
        }
 }
 
 function onClick(id) {
        if (w2ui['toolbar-up'].get(id) !== null) {
                var toolbar = w2ui['toolbar-up'];
-               var item = toolbar.get(id) ;
+               var item = toolbar.get(id);
        }
-       else if (w2ui['formulabar'].get(id) !== null) {
-               toolbar = w2ui['formulabar'];
-               item = toolbar.get(id) ;
+       else if (w2ui.formulabar.get(id) !== null) {
+               toolbar = w2ui.formulabar;
+               item = toolbar.get(id);
        }
        else if (w2ui['toolbar-down'].get(id) !== null) {
                toolbar = w2ui['toolbar-down'];
-               item = toolbar.get(id) ;
+               item = toolbar.get(id);
        }
        else if (w2ui['spreadsheet-toolbar'].get(id) !== null) {
                toolbar = w2ui['spreadsheet-toolbar'];
-               item = toolbar.get(id) ;
+               item = toolbar.get(id);
        }
        else if (w2ui['presentation-toolbar'].get(id) !== null) {
                toolbar = w2ui['presentation-toolbar'];
@@ -269,7 +141,7 @@ function onClick(id) {
        }
        else if (id === 'deletepage') {
                vex.dialog.confirm({
-                       message: _("Are you sure you want to delete this 
page?"),
+                       message: _('Are you sure you want to delete this 
page?'),
                        callback: onDelete
                });
        }
@@ -278,13 +150,13 @@ function onClick(id) {
        }
        // TODO: We should get visible tab's width instead of 60px
        else if (id === 'nextrecord') {
-               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').scrollLeft()+60);
+               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').scrollLeft()
 + 60);
        }
        else if (id === 'prevrecord') {
-               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').scrollLeft()-60);
+               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').scrollLeft()
 - 60);
        }
        else if (id === 'lastrecord') {
-               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').prop("scrollWidth"));
+               
$('#spreadsheet-tab-scroll').scrollLeft($('#spreadsheet-tab-scroll').prop('scrollWidth'));
        }
        else if (id === 'insertgraphic') {
                L.DomUtil.get('insertgraphic').click();
@@ -295,12 +167,12 @@ function onClick(id) {
        else if (id === 'fontcolor') {
                // absolutely no idea why, but without the timeout, the popup is
                // closed as soon as it is opend
-               setTimeout(function () 
{$('#fontColorPicker').colorpicker('showPalette')}, 0);
+               setTimeout(function () 
{$('#fontColorPicker').colorpicker('showPalette');}, 0);
        }
        else if (id === 'backcolor') {
                // absolutely no idea why, but without the timeout, the popup is
                // closed as soon as it is opend
-               setTimeout(function () 
{$('#backColorPicker').colorpicker('showPalette')}, 0);
+               setTimeout(function () 
{$('#backColorPicker').colorpicker('showPalette');}, 0);
        }
        else if (id === 'sum') {
                L.DomUtil.get('formulaInput').value = '=SUM()';
@@ -337,13 +209,13 @@ function onClick(id) {
                        overlayClose:true,
                        opacity: 80,
                        overlayCss: {
-                               backgroundColor : "#000"
+                               backgroundColor : '#000'
                        },
                        containerCss: {
-                               overflow : "hidden",
-                               backgroundColor : "#fff",
-                               padding : "20px",
-                               border : "2px solid #000"
+                               overflow : 'hidden',
+                               backgroundColor : '#fff',
+                               padding : '20px',
+                               border : '2px solid #000'
                        }
                });
        }
@@ -353,19 +225,295 @@ function onClick(id) {
        }
 }
 
-function onDelete (e) {
-       if (e !== false) {
-               map.deletePage();
+function insertTable() {
+       var rows = 10;
+       var cols = 10;
+       var $grid = $('.inserttable-grid');
+       var $popup = $('#inserttable-popup');
+       var $status = $('#inserttable-status');
+
+       // Return if already initialized
+       if ($grid.children().length) {
+               return;
+       }
+
+       // init
+       for (var r = 0; r < rows; r++) {
+               var $row = $('<div/>').addClass('row');
+               $grid.append($row);
+               for (var c = 0; c < cols; c++) {
+                       var $col = $('<div/>').addClass('col');
+                       $row.append($col);
+               }
        }
+
+       // events
+       $grid.on({
+               mouseover: function () {
+                       var col = $(this).index() + 1;
+                       var row = $(this).parent().index() + 1;
+                       $('.col').removeClass('bright');
+                       $('.row:nth-child(-n+' + row + ') .col:nth-child(-n+' + 
col + ')')
+                       .addClass('bright');
+                       $status.html(col + 'x' + row);
+
+               },
+               click: function() {
+                       var col = $(this).index() + 1;
+                       var row = $(this).parent().index() + 1;
+                       $popup.toggle();
+                       $('.col').removeClass('bright');
+                       $status.html('<br/>');
+                       var msg = 'uno .uno:InsertTable {' +
+                               ' "Columns": { "type": "long","value": '
+                               + col +
+                               ' }, "Rows": { "type": "long","value": '
+                               + row + ' }}';
+                       map._socket.sendMessage(msg);
+               }
+       }, '.col');
+
+       // close dialog on mouseleave
+       $popup.mouseleave(function() {
+               $(this).hide();
+               $('.col').removeClass('bright');
+               $status.html('<br/>');
+       });
 }
 
-function onSaveAs (e) {
+function onColorPick(e, color) {
+       if (map.getPermission() !== 'edit' || color === undefined) {
+               return;
+       }
+       // transform from #FFFFFF to an Int
+       color = parseInt(color.replace('#', ''), 16);
+       var command = {};
+       var fontcolor, backcolor;
+       if (e.target.id === 'fontColorPicker') {
+               fontcolor = {'text': 'FontColor',
+                                        'spreadsheet': 'Color',
+                                        'presentation': 
'Color'}[map.getDocType()];
+               command[fontcolor] = {};
+               command[fontcolor].type = 'long';
+               command[fontcolor].value = color;
+               var uno = '.uno:' + fontcolor;
+       }
+       else if (e.target.id === 'backColorPicker') {
+               backcolor = {'text': 'BackColor',
+                                        'spreadsheet': 'BackgroundColor',
+                                        'presentation': 
'CharBackColor'}[map.getDocType()];
+               command[backcolor] = {};
+               command[backcolor].type = 'long';
+               command[backcolor].value = color;
+               uno = '.uno:' + backcolor;
+       }
+       map.sendUnoCommand(uno, command);
+       map.focus();
+}
+
+$(function () {
+       $('#toolbar-up-more').w2toolbar({
+               name: 'toolbar-up-more',
+               items: [
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               }
+       });
+
+       $('#toolbar-up').w2toolbar({
+               name: 'toolbar-up',
+               items: [
+                       {type: 'html', id: 'left'},
+                       {type: 'button',  id: 'save', img: 'save', hint: 
_('Save'), uno: 'Save'},
+                       {type: 'break'},
+                       {type: 'button',  id: 'undo',  img: 'undo', hint: 
_('Undo'), uno: 'Undo'},
+                       {type: 'button',  id: 'redo',  img: 'redo', hint: 
_('Redo'), uno: 'Redo'},
+                       {type: 'break'},
+                       {type: 'html',   id: 'styles', html: '<select 
class="styles-select"></select>'},
+                       {type: 'html',   id: 'fonts', html: '<select 
class="fonts-select"></select>'},
+                       {type: 'html',   id: 'fontsizes', html: '<select 
class="fontsizes-select"></select>'},
+                       {type: 'break'},
+                       {type: 'button',  id: 'bold',  img: 'bold', hint: 
_('Bold'), uno: 'Bold'},
+                       {type: 'button',  id: 'italic', img: 'italic', hint: 
_('Italic'), uno: 'Italic'},
+                       {type: 'button',  id: 'underline',  img: 'underline', 
hint: _('Underline'), uno: 'Underline'},
+                       {type: 'button',  id: 'strikeout', img: 'strikeout', 
hint: _('Strikeout'), uno: 'Strikeout'},
+                       {type: 'break'},
+                       {type: 'html',  id: 'fontcolor-html', html: '<input 
id="fontColorPicker" style="display:none;">'},
+                       {type: 'button',  id: 'fontcolor', img: 'color', hint: 
_('Font color')},
+                       {type: 'html',  id: 'backcolor-html', html: '<input 
id="backColorPicker" style="display:none;">'},
+                       {type: 'button',  id: 'backcolor', img: 'backcolor', 
hint: _('Highlighting')},
+                       {type: 'break'},
+                       {type: 'button',  id: 'alignleft',  img: 'alignleft', 
hint: _('Align left'), uno: 'LeftPara', unosheet: 'HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"1"}}'},
+                       {type: 'button',  id: 'alignhorizontal',  img: 
'alignhorizontal', hint: _('Center horizontally'), uno: 'CenterPara', unosheet: 
'HorizontalAlignment {"HorizontalAlignment":{"type":"unsigned short", 
"value":"2"}}'},
+                       {type: 'button',  id: 'alignright',  img: 'alignright', 
hint: _('Align right'), uno: 'RightPara', unosheet: 'HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"3"}}'},
+                       {type: 'button',  id: 'alignblock',  img: 'alignblock', 
hint: _('Justified'), uno: 'JustifyPara', unosheet: 'HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"4"}}'},
+                       {type: 'break'},
+                       {type: 'button',  id: 'bullet',  img: 'bullet', hint: 
_('Bullets on/off'), uno: 'DefaultBullet'},
+                       {type: 'button',  id: 'numbering',  img: 'numbering', 
hint: _('Numbering on/off'), uno: 'DefaultNumbering'},
+                       {type: 'break'},
+                       {type: 'button',  id: 'incrementindent',  img: 
'incrementindent', hint: _('Increase indent'), uno: 'IncrementIndent'},
+                       {type: 'button',  id: 'decrementindent',  img: 
'decrementindent', hint: _('Decrease indent'), uno: 'DecrementIndent'},
+                       {type: 'break', id: 'incdecindent'},
+                       {type: 'html',  id: 'inserttable-html', html: '<div 
id="inserttable-popup" class="inserttable-pop ui-widget ui-widget-content 
ui-corner-all" style="position: absolute; display: none;"><div 
class="inserttable-grid"></div><div id="inserttable-status" 
class="loleaflet-font" style="padding: 5px;"><br/></div>'},
+                       {type: 'button',  id: 'inserttable',  img: 
'inserttable', hint: _('Insert table')},
+                       {type: 'button',  id: 'annotation', img: 'annotation', 
hint: _('Insert comment'), uno: 'InsertAnnotation'},
+                       {type: 'button',  id: 'insertgraphic',  img: 
'insertgraphic', hint: _('Insert graphic')},
+                       {type: 'break'},
+                       {type: 'button',  id: 'help',  img: 'help', hint: 
_('Help')},
+                       {type: 'html', id: 'right'},
+                       {type: 'button',  id: 'more', img: 'more', hint: 
_('More')},
+                       {type: 'button',  id: 'close',  img: 'closedoc', hint: 
_('Close document'), hidden: true}
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               },
+               onRefresh: function() {
+                       if (!L.DomUtil.get('fontcolorindicator')) {
+                               var fontColorIndicator = 
L.DomUtil.create('div', 'font-color-indicator', 
L.DomUtil.get('tb_toolbar-up_item_fontcolor'));
+                               fontColorIndicator.id = 'fontcolorindicator';
+
+                               
$('#fontColorPicker').colorpicker({showOn:'none', hideButton:true});
+                               $('#fontColorPicker').on('change.color', 
onColorPick);
+                       }
+
+                       if (!L.DomUtil.get('backcolorindicator')) {
+                               var backColorIndicator = 
L.DomUtil.create('div', 'back-color-indicator', 
L.DomUtil.get('tb_toolbar-up_item_backcolor'));
+                               backColorIndicator.id = 'backcolorindicator';
+
+                               
$('#backColorPicker').colorpicker({showOn:'none', hideButton:true});
+                               $('#backColorPicker').on('change.color', 
onColorPick);
+                       }
+
+                       insertTable();
+               }
+       });
+
+       $('#formulabar').w2toolbar({
+               name: 'formulabar',
+               items: [
+                       {type: 'html',  id: 'left'},
+                       {type: 'button',  id: 'sum',  img: 'autosum', hint: 
_('Sum')},
+                       {type: 'button',  id: 'function',  img: 'equal', hint: 
_('Function')},
+                       {type: 'button', hidden: true, id: 'cancelformula',  
img: 'cancel', hint: _('Cancel')},
+                       {type: 'button', hidden: true, id: 'acceptformula',  
img: 'accepttrackedchanges', hint: _('Accept')},
+                       {type: 'html', id: 'formula', html: '<input 
id="formulaInput" onkeyup="onFormulaInput()"' +
+                        'onblur="onFormulaBarBlur()" 
onfocus="onFormulaBarFocus()" type=text>'}
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               }
+       });
+       $('#spreadsheet-toolbar').w2toolbar({
+               name: 'spreadsheet-toolbar',
+               items: [
+                       {type: 'button',  id: 'firstrecord',  img: 
'firstrecord', hidden: true, hint: _('First sheet')},
+                       {type: 'button',  id: 'prevrecord',  img: 'prevrecord', 
hidden: true, hint: _('Previous sheet')},
+                       {type: 'button',  id: 'nextrecord',  img: 'nextrecord', 
hidden: true, hint: _('Next sheet')},
+                       {type: 'button',  id: 'lastrecord',  img: 'lastrecord', 
hidden: true, hint: _('Last sheet')}
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               }
+       });
+       $('#presentation-toolbar').w2toolbar({
+               name: 'presentation-toolbar',
+               items: [
+                       {type: 'html',  id: 'left'},
+                       {type: 'button',  id: 'presentation', img: 
'presentation', hidden:true, hint: _('Fullscreen presentation')},
+                       {type: 'break', id: 'presentationbreak', hidden:true},
+                       {type: 'button',  id: 'insertpage', img: 'insertpage', 
hidden:true, hint: _('Insert slide')},
+                       {type: 'button',  id: 'duplicatepage', img: 
'duplicatepage', hidden:true, hint: _('Duplicate slide')},
+                       {type: 'button',  id: 'deletepage', img: 'deletepage', 
hidden:true, hint: _('Delete slide')},
+                       {type: 'html',  id: 'right'}
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               }
+       });
+       $('#toolbar-down').w2toolbar({
+               name: 'toolbar-down',
+               items: [
+                       {type: 'html',  id: 'search',
+                        html: '<div style="padding: 3px 10px;" 
class="loleaflet-font">' +
+                        ' ' + _('Search:') +
+                        '    <input size="10" id="search-input" 
onkeypress="onSearch(event)"' +
+                        'style="padding: 3px; border-radius: 2px; border: 1px 
solid silver"/>' +
+                        '</div>'
+                       },
+                       {type: 'button',  id: 'searchprev', img: 'prev', hint: 
_('Search backwards'), disabled: true},
+                       {type: 'button',  id: 'searchnext', img: 'next', hint: 
_('Search forward'), disabled: true},
+                       {type: 'button',  id: 'cancelsearch', img: 'cancel', 
hint: _('Cancel the search'), hidden: true},
+                       {type: 'html',  id: 'left'},
+                       {type: 'html',  id: 'right'},
+                       {type: 'html',    id: 'modifiedstatuslabel', html: 
'<div id="modifiedstatuslabel" class="loleaflet-font"></div>'},
+                       {type: 'break'},
+                       {type: 'button',  id: 'takeedit', img: 'edit', hint: 
_('Take edit lock (others can only view)'), caption: _('VIEWING')},
+                       {type: 'break'},
+                       {type: 'button',  id: 'prev', img: 'prev', hint: 
_('Previous page')},
+                       {type: 'button',  id: 'next', img: 'next', hint: 
_('Next page')},
+                       {type: 'break', id: 'prevnextbreak'},
+                       {type: 'button',  id: 'zoomreset', img: 'zoomreset', 
hint: _('Reset zoom')},
+                       {type: 'button',  id: 'zoomout', img: 'zoomout', hint: 
_('Zoom out')},
+                       {type: 'html',    id: 'zoomlevel', html: '<div 
id="zoomlevel" class="loleaflet-font">100%</div>'},
+                       {type: 'button',  id: 'zoomin', img: 'zoomin', hint: 
_('Zoom in')}
+               ],
+               onClick: function (e) {
+                       onClick(e.target);
+               }
+       });
+});
+
+// This object is used to track enabled/disabled state when one is in view mode
+var formatButtons = {
+       'undo': true, 'redo': true, 'save': true,
+       'bold': true, 'italic': true, 'underline': true, 'strikeout': true,
+       'annotation': true, 'inserttable': true,
+       'fontcolor': true, 'backcolor': true, 'bullet': true, 'numbering': true,
+       'alignleft': true, 'alignhorizontal': true, 'alignright': true, 
'alignblock': true,
+       'incrementindent': true, 'decrementindent': true, 'insertgraphic': true
+};
+
+var takeEditPopupMessage = '<div>' + _('You are viewing now.') + '<br/>' + 
_('Click here to take edit.') + '</div>';
+var takeEditPopupTimeout = null;
+
+function onSearch(e) {
+       if (e.keyCode === 13) {
+               var toolbar = w2ui['toolbar-down'];
+               map.search(L.DomUtil.get('search-input').value);
+               toolbar.enable('searchprev');
+               toolbar.enable('searchnext');
+               toolbar.show('cancelsearch');
+       }
+       else {
+               map.fire('requestloksession');
+       }
+}
+
+function onSaveAs(e) {
        if (e !== false) {
                map.saveAs(e.url, e.format, e.options);
        }
 }
 
-function onStyleSelect (e) {
+function sortFontSizes() {
+       var oldVal = $('.fontsizes-select').val();
+       var selectList = $('.fontsizes-select option');
+       selectList.sort(function (a, b) {
+               a = parseFloat($(a).text() * 1);
+               b = parseFloat($(b).text() * 1);
+               if (a > b) {
+                       return 1;
+               } else if (a < b) {
+                       return -1;
+               }
+               return 0;
+       });
+       $('.fontsizes-select').html(selectList);
+       $('.fontsizes-select').val(oldVal).trigger('change');
+}
+
+function onStyleSelect(e) {
        var style = e.target.value;
        if (style.startsWith('.uno:')) {
                map.sendUnoCommand(style);
@@ -382,28 +530,28 @@ function onStyleSelect (e) {
        map.focus();
 }
 
-function updateFontSizeList (font) {
-       var oldSize = $(".fontsizes-select").val();
+function updateFontSizeList(font) {
+       var oldSize = $('.fontsizes-select').val();
        var found = false;
-       $(".fontsizes-select").find('option').remove();
+       $('.fontsizes-select').find('option').remove();
        var data = [''];
        data = 
data.concat(map.getToolbarCommandValues('.uno:CharFontName')[font]);
-       $(".fontsizes-select").select2({
+       $('.fontsizes-select').select2({
                data: data,
-               placeholder: _("Size"),
+               placeholder: _('Size'),
                //Allow manually entered font size.
-               createTag:function(query) {
+               createTag: function(query) {
                        return {
                                id: query.term,
                                text: query.term,
                                tag: true
-                       }
+                       };
                },
-               tags: true,
+               tags: true
        });
-       $(".fontsizes-select option").each(function (i, e) {
-               if ($(e).text() == oldSize) {
-                       $(".fontsizes-select").val(oldSize).trigger('change');
+       $('.fontsizes-select option').each(function (i, e) {
+               if ($(e).text() === oldSize) {
+                       $('.fontsizes-select').val(oldSize).trigger('change');
                        found = true;
                        return;
                }
@@ -411,48 +559,31 @@ function updateFontSizeList (font) {
        if (!found) {
                // we need to add the size
                $('.fontsizes-select')
-                       .append($("<option></option>")
+                       .append($('<option></option>')
                        .text(oldSize));
        }
-       $(".fontsizes-select").val(oldSize).trigger('change');
+       $('.fontsizes-select').val(oldSize).trigger('change');
        sortFontSizes();
 }
 
-function sortFontSizes() {
-       var oldVal = $('.fontsizes-select').val();
-       var selectList = $('.fontsizes-select option');
-       selectList.sort(function (a,b){
-               a = parseFloat($(a).text() * 1);
-               b = parseFloat($(b).text() * 1);
-               if(a > b) {
-                   return 1;
-               } else if (a < b) {
-                   return -1;
-               }
-               return 0;
-       });
-       $('.fontsizes-select').html(selectList);
-       $('.fontsizes-select').val(oldVal).trigger('change');
-}
-
-function onFontSelect (e) {
+function onFontSelect(e) {
        var font = e.target.value;
        updateFontSizeList(font);
        map.applyFont(font);
        map.focus();
 }
 
-function onFontSizeSelect (e) {
+function onFontSizeSelect(e) {
        var size = e.target.value;
        var command = {};
        
$(e.target).find('option[data-select2-tag]').removeAttr('data-select2-tag');
        map.applyFontSize(size);
-       fontcolor = map.getDocType() === 'text' ? 'FontColor' : 'Color';
+       var fontcolor = map.getDocType() === 'text' ? 'FontColor' : 'Color';
        command[fontcolor] = {};
        map.focus();
 }
 
-function onInsertFile () {
+function onInsertFile() {
        var insertGraphic = L.DomUtil.get('insertgraphic');
        if ('files' in insertGraphic) {
                for (var i = 0; i < insertGraphic.files.length; i++) {
@@ -462,41 +593,12 @@ function onInsertFile () {
        }
 }
 
-function onColorPick (e, color) {
-       if (map.getPermission() !== 'edit' || color === undefined) {
-               return;
-       }
-       // transform from #FFFFFF to an Int
-       color = parseInt(color.replace('#', ''), 16);
-       var command = {};
-       if (e.target.id === 'fontColorPicker') {
-               fontcolor = { 'text': 'FontColor',
-                       'spreadsheet': 'Color',
-                       'presentation': 'Color' }[map.getDocType()];
-               command[fontcolor] = {};
-               command[fontcolor].type = 'long';
-               command[fontcolor].value = color;
-               var uno = '.uno:' + fontcolor;
-       }
-       else if (e.target.id === 'backColorPicker') {
-               backcolor = { 'text': 'BackColor',
-                       'spreadsheet': 'BackgroundColor',
-                       'presentation': 'CharBackColor' }[map.getDocType()];
-               command[backcolor] = {};
-               command[backcolor].type = 'long';
-               command[backcolor].value = color;
-               uno = '.uno:' + backcolor;
-       }
-       map.sendUnoCommand(uno, command);
-       map.focus();
-}
-
-function onFormulaInput () {
+function onFormulaInput() {
        map.cellEnterString(L.DomUtil.get('formulaInput').value);
 }
 
-function onFormulaBarFocus () {
-       var formulabar = w2ui['formulabar'];
+function onFormulaBarFocus() {
+       var formulabar = w2ui.formulabar;
        formulabar.hide('sum');
        formulabar.hide('function');
        formulabar.show('cancelformula');
@@ -504,14 +606,14 @@ function onFormulaBarFocus () {
 }
 
 function onFormulaBarBlur() {
-       var formulabar = w2ui['formulabar'];
+       var formulabar = w2ui.formulabar;
        formulabar.show('sum');
        formulabar.show('function');
        formulabar.hide('cancelformula');
        formulabar.hide('acceptformula');
 }
 
-map.on('updatepermission', function (e) {
+map.on('updatepermission', function () {
        var toolbar = w2ui['toolbar-up'];
        var docType = map.getDocType();
        if (docType !== 'text') {
@@ -542,12 +644,13 @@ map.on('commandstatechanged', function (e) {
        var commandName = e.commandName;
        var state = e.state;
        var found = false;
+       var value, color, div;
        if (commandName === '.uno:AssignLayout') {
-               $(".styles-select").val(state).trigger('change');
-       }
-       else if (commandName === '.uno:StyleApply') {
-               if (!state)
+               $('.styles-select').val(state).trigger('change');
+       } else if (commandName === '.uno:StyleApply') {
+               if (!state) {
                        return;
+               }
 
                // For impress documents, template name is prefixed with style 
name.
                // Strip the template name until we support it
@@ -556,8 +659,8 @@ map.on('commandstatechanged', function (e) {
                        state = L.Styles.impressMapping[state];
                }
 
-               $(".styles-select option").each(function () {
-                       value = this.value;
+               $('.styles-select option').each(function () {
+                       var value = this.value;
                        // For writer we get UI names; ideally we should be 
getting only programmatic ones
                        // For eg: 'Text body' vs 'Text Body'
                        // (likely to be fixed in core to make the pattern 
consistent)
@@ -570,13 +673,13 @@ map.on('commandstatechanged', function (e) {
                if (!found) {
                        // we need to add the size
                        $('.styles-select')
-                               .append($("<option></option>")
+                               .append($('<option></option>')
                                .text(state));
                }
-               $(".styles-select").val(state).trigger('change');
+               $('.styles-select').val(state).trigger('change');
        }
        else if (commandName === '.uno:CharFontName') {
-               $(".fonts-select option").each(function () {
+               $('.fonts-select option').each(function () {
                        value = this.value;
                        if (value.toLowerCase() === state.toLowerCase()) {
                                found = true;
@@ -587,17 +690,17 @@ map.on('commandstatechanged', function (e) {
                if (!found) {
                        // we need to add the size
                        $('.fonts-select')
-                               .append($("<option></option>")
+                               .append($('<option></option>')
                                .text(state));
                }
-               $(".fonts-select").val(state).trigger('change');
+               $('.fonts-select').val(state).trigger('change');
        }
        else if (commandName === '.uno:FontHeight') {
                if (state === '0') {
                        state = '';
                }
-               $(".fontsizes-select option").each(function (i, e) {
-                       if ($(e).text() == state) {
+               $('.fontsizes-select option').each(function (i, e) {
+                       if ($(e).text() === state) {
                                found = true;
                                return;
                        }
@@ -605,15 +708,15 @@ map.on('commandstatechanged', function (e) {
                if (!found) {
                        // we need to add the size
                        $('.fontsizes-select')
-                               .append($("<option></option>")
+                               .append($('<option></option>')
                                .text(state).val(state));
                }
-               $(".fontsizes-select").val(state).trigger('change');
+               $('.fontsizes-select').val(state).trigger('change');
                sortFontSizes();
        }
        else if (commandName === '.uno:FontColor' || commandName === 
'.uno:Color') {
                // confusingly, the .uno: command is named differently in 
Writer, Calc and Impress
-               var color = parseInt(e.state);
+               color = parseInt(e.state);
                if (color === -1) {
                        color = 'transparent';
                }
@@ -622,12 +725,12 @@ map.on('commandstatechanged', function (e) {
                        color = color.toString(16);
                        color = '#' + '0'.repeat(6 - color.length) + color;
                }
-               var div = L.DomUtil.get('fontcolorindicator');
+               div = L.DomUtil.get('fontcolorindicator');
                L.DomUtil.setStyle(div, 'background', color);
        }
        else if (commandName === '.uno:BackColor' || commandName === 
'.uno:BackgroundColor' || commandName === '.uno:CharBackColor') {
                // confusingly, the .uno: command is named differently in 
Writer, Calc and Impress
-               var color = parseInt(e.state);
+               color = parseInt(e.state);
                if (color === -1) {
                        color = 'transparent';
                }
@@ -635,7 +738,7 @@ map.on('commandstatechanged', function (e) {
                        color = color.toString(16);
                        color = '#' + '0'.repeat(6 - color.length) + color;
                }
-               var div = L.DomUtil.get('backcolorindicator');
+               div = L.DomUtil.get('backcolorindicator');
                L.DomUtil.setStyle(div, 'background', color);
        }
        else if (commandName === '.uno:ModifiedStatus') {
@@ -693,7 +796,9 @@ map.on('search', function (e) {
                toolbar.disable('searchnext');
                toolbar.hide('cancelsearch');
                L.DomUtil.addClass(searchInput, 'search-not-found');
-               setTimeout(function () {L.DomUtil.removeClass(searchInput, 
'search-not-found')}, 500);
+               setTimeout(function () {
+                       L.DomUtil.removeClass(searchInput, 'search-not-found');
+               }, 500);
        }
 });
 
@@ -751,11 +856,11 @@ map.on('updatetoolbarcommandvalues', function (e) {
                        }, this);
                }
 
-               $(".styles-select").select2({
+               $('.styles-select').select2({
                        data: data,
-                       placeholder: _("Style")
+                       placeholder: _('Style')
                });
-               $(".styles-select").on('select2:select', onStyleSelect);
+               $('.styles-select').on('select2:select', onStyleSelect);
        }
        else if (e.commandName === '.uno:CharFontName') {
                // Old browsers like IE11 et al don't like Object.keys with
@@ -763,17 +868,17 @@ map.on('updatetoolbarcommandvalues', function (e) {
                if (typeof e.commandValues === 'object') {
                        data = data.concat(Object.keys(e.commandValues));
                }
-               $(".fonts-select").select2({
+               $('.fonts-select').select2({
                        data: data,
-                       placeholder: _("Font")
+                       placeholder: _('Font')
                });
-               $(".fonts-select").on('select2:select', onFontSelect);
+               $('.fonts-select').on('select2:select', onFontSelect);
 
-               $(".fontsizes-select").select2({
-                       placeholder: _("Size"),
+               $('.fontsizes-select').select2({
+                       placeholder: _('Size'),
                        data: []
                });
-               $(".fontsizes-select").on('select2:select', onFontSizeSelect);
+               $('.fontsizes-select').on('select2:select', onFontSizeSelect);
        }
 });
 
@@ -821,7 +926,7 @@ map.on('updateparts pagenumberchanged', function (e) {
        }
 
        toolbar = w2ui['toolbar-up'];
-       if (e.docType !== 'text' && e.docType !== 'spreadsheet' ) {
+       if (e.docType !== 'text' && e.docType !== 'spreadsheet') {
                toolbar.hide('incrementindent');
                toolbar.hide('decrementindent');
                toolbar.hide('incdecindent');
@@ -838,11 +943,10 @@ map.on('updateparts pagenumberchanged', function (e) {
 
 map.on('commandresult', function (e) {
        var commandName = e.commandName;
-       var success = e.success;
 
-       if (commandName === '.uno:Save' && e.success == true) {
+       if (commandName === '.uno:Save' && e.success === true) {
                // owncloud integration
-               if (typeof window.parent.documentsMain != 'undefined') {
+               if (typeof window.parent.documentsMain !== 'undefined') {
                        window.parent.documentsMain.saveDocumentBack();
                }
        }
@@ -855,10 +959,10 @@ map.on('cellformula', function (e) {
        }
 });
 
-map.on('zoomend', function (e) {
-       var _zoom_ratio = map.getZoomScale(map.getZoom(), map.options.zoom);
-       var _zoom_percent = Math.round(_zoom_ratio * 100);
-       $('#zoomlevel').html(_zoom_percent + '%');
+map.on('zoomend', function () {
+       var zoomRatio = map.getZoomScale(map.getZoom(), map.options.zoom);
+       var zoomPercent = Math.round(zoomRatio * 100);
+       $('#zoomlevel').html(zoomPercent + '%');
 });
 
 map.on('hyperlinkclicked', function (e) {
@@ -915,7 +1019,7 @@ map.on('editlock', function (e) {
 
                // Enable formula bar
                $('#formulaInput').prop('disabled', false);
-               toolbar = w2ui['formulabar'];
+               toolbar = w2ui.formulabar;
                formulaBarButtons.forEach(function(id) {
                        toolbar.enable(id);
                });
@@ -945,7 +1049,7 @@ map.on('editlock', function (e) {
                // Disable formula bar
                $('#formulaInput').prop('disabled', true);
 
-               toolbar = w2ui['formulabar'];
+               toolbar = w2ui.formulabar;
                formulaBarButtons.forEach(function(id) {
                        toolbar.disable(id);
                });
@@ -969,7 +1073,7 @@ map.on('editlock', function (e) {
 
 });
 
-map.on('mouseup keypress', function(e) {
+map.on('mouseup keypress', function() {
        if (!map._editlock) {
                $('#tb_toolbar-down_item_takeedit')
                        .w2overlay({
@@ -985,7 +1089,7 @@ map.on('mouseup keypress', function(e) {
        }
 });
 
-map.on('locontextmenu', function (e) {
+map.on('locontextmenu', function () {
        // TODO: context menu handling...
 });
 
@@ -1000,11 +1104,11 @@ map.on('statusindicator', function (e) {
                                data = data.concat({id: layout.id, text: 
_(layout.text)});
                        }, this);
 
-                       $(".styles-select").select2({
+                       $('.styles-select').select2({
                                data: data,
-                               placeholder: _("Layout")
+                               placeholder: _('Layout')
                        });
-                       $(".styles-select").on('select2:select', onStyleSelect);
+                       $('.styles-select').on('select2:select', onStyleSelect);
                }
        }
 });
@@ -1019,103 +1123,4 @@ $(document).ready(function() {
        if (closebutton) {
                toolbar.show('close');
        }
-       inserttable();
 });
-
-function resizeToolbar() {
-       var has_more_items = false;
-       var toolbarUp = w2ui['toolbar-up'];
-       var toolbarUpMore = w2ui['toolbar-up-more'];
-       // move items from toolbar-up-more -> toolbar-up
-       while ($('#toolbar-up')[0].scrollWidth <= $(window).width()) {
-               var item = toolbarUpMore.items[0];
-               if (!item) {
-                       break;
-               }
-               toolbarUpMore.items.shift();
-               toolbarUp.insert('right', item);
-       }
-
-       // move items from toolbar-up -> toolbar-up-more
-       while ($('#toolbar-up')[0].scrollWidth > Math.max($(window).width(), 
parseInt($('body').css('min-width')))) {
-               var itemId = toolbarUp.items[toolbarUp.items.length - 4].id;
-               item = toolbarUp.get(itemId);
-               toolbarUp.remove(itemId);
-               toolbarUpMore.insert(toolbarUpMore.items[0], item);
-               has_more_items = true;
-       }
-
-       if (has_more_items) {
-               w2ui['toolbar-up'].show('more');
-       }
-       else {
-               w2ui['toolbar-up'].hide('more');
-       }
-
-       // resize toolbar-up-more
-       var lastItem = 
$('#toolbar-up-more>table>tbody>tr>td[valign="middle"]').last();
-       if (lastItem.length) {
-               $('#toolbar-up-more').width($(lastItem).position().left + 
$(lastItem).width());
-               w2ui['toolbar-up-more'].render();
-       } else {
-               $('#toolbar-up-more').hide();
-               var toolbar = w2ui['toolbar-up'];
-               toolbar.uncheck('more');
-       }
-}
-
-function insertTable() {
-       var rows = 10;
-       var cols = 10;
-       var $grid = $('.inserttable-grid');
-       var $popup = $('#inserttable-popup');
-       var $status = $("#inserttable-status");
-
-       // Return if already initialized
-       if ($grid.children().length) {
-               return;
-       }
-
-       // init
-       for (var r = 0; r < rows; r++) {
-               var $row = $('<div/>').addClass('row');
-               $grid.append($row);
-               for (var c = 0; c < cols; c++) {
-                       var $col = $('<div/>').addClass('col');
-                       $row.append($col);
-               }
-       }
-
-       // events
-       $grid.on({
-               mouseover: function () {
-                       var col = $(this).index() + 1;
-                       var row = $(this).parent().index() + 1;
-                       $('.col').removeClass('bright');
-                       $('.row:nth-child(-n+' + row + ') .col:nth-child(-n+' + 
col + ')')
-                       .addClass('bright');
-                       $status.html(col + " x " + row);
-
-               },
-               click: function(){
-                       var col = $(this).index() + 1;
-                       var row = $(this).parent().index() + 1;
-                       $popup.toggle();
-                       $('.col').removeClass('bright');
-                       $status.html('<br/>');
-                       var msg = 'uno .uno:InsertTable {' +
-                               ' "Columns": { "type": "long","value": '
-                               + col +
-                               ' }, "Rows": { "type": "long","value": '
-                               + row +' }}';
-                       map._socket.sendMessage(msg);
-               }
-       }, ".col");
-
-       // close dialog on mouseleave
-       $popup.mouseleave(function(){
-               $(this).hide();
-               $('.col').removeClass('bright');
-               $status.html('<br/>');
-       });
-}
commit a7d3a8e9c36e58457ee82427921cc3306995e1ee
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 27 20:08:03 2016 +0530

    loleaflet: Enable toolbar linting
    
    Till now we have only been linting our src/ directory. toolbar.js
    is the only file we edit directly in dist/. Lets keep a check on
    it too.
    
    Change-Id: I3e8a6e675a1d0c508339db1363600b5fe8f9c2cd

diff --git a/loleaflet/.eslintignore b/loleaflet/.eslintignore
index 6abb0a8..26e742c 100644
--- a/loleaflet/.eslintignore
+++ b/loleaflet/.eslintignore
@@ -1 +1,5 @@
+# We only directly edit toolbar.js in dist/
+dist/**/*.js
+!dist/toolbar/toolbar.js
+
 src/admin/Base.js
diff --git a/loleaflet/Jakefile.js b/loleaflet/Jakefile.js
index 62e9ed2..d1cb7ab 100644
--- a/loleaflet/Jakefile.js
+++ b/loleaflet/Jakefile.js
@@ -27,7 +27,7 @@ function hint(msg, args) {
 }
 
 desc('Check Leaflet source for errors with ESLint');
-task('lint', {async: true}, hint('Checking for JS errors...', 'src --config 
.eslintrc'));
+task('lint', {async: true}, hint('Checking for JS errors...', 'src dist 
--config .eslintrc'));
 
 desc('Check Leaflet specs source for errors with ESLint');
 task('lintspec', {async: true}, hint('Checking for specs JS errors...', 
'spec/suites --config spec/.eslintrc'));
commit 7460884df47a82d066edcfc64e97ad100d67f5db
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 27 20:04:58 2016 +0530

    loleaflet: Remove superfluous entries
    
    All files in dist/ are ignored already by our linting tool.
    There's no point in list them here.
    
    Change-Id: I0a3a67796d85506196eb13be347b1ff59bcae02f

diff --git a/loleaflet/.eslintignore b/loleaflet/.eslintignore
index 45d125b..6abb0a8 100644
--- a/loleaflet/.eslintignore
+++ b/loleaflet/.eslintignore
@@ -1,3 +1 @@
-dist/scrollbar
-dist/contextMenu
 src/admin/Base.js
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to