[Libreoffice-commits] online.git: loleaflet/dist loleaflet/Makefile loleaflet/po loleaflet/util

Andras Timar andras.timar at collabora.com
Mon Feb 8 17:32:26 UTC 2016


 loleaflet/Makefile                                     |   12 
 loleaflet/dist/images/sc_accepttrackedchanges.png      |binary
 loleaflet/dist/images/sc_alignblock.png                |binary
 loleaflet/dist/images/sc_alignhorizontal.png           |binary
 loleaflet/dist/images/sc_alignleft.png                 |binary
 loleaflet/dist/images/sc_alignright.png                |binary
 loleaflet/dist/images/sc_autosum.png                   |binary
 loleaflet/dist/images/sc_backcolor.png                 |binary
 loleaflet/dist/images/sc_bold.png                      |binary
 loleaflet/dist/images/sc_bullet.png                    |binary
 loleaflet/dist/images/sc_cancel.png                    |binary
 loleaflet/dist/images/sc_closedoc.png                  |binary
 loleaflet/dist/images/sc_color.png                     |binary
 loleaflet/dist/images/sc_decrementindent.png           |binary
 loleaflet/dist/images/sc_deletepage.png                |binary
 loleaflet/dist/images/sc_duplicatepage.png             |binary
 loleaflet/dist/images/sc_edit.png                      |binary
 loleaflet/dist/images/sc_equal.png                     |binary
 loleaflet/dist/images/sc_gallery.png                   |binary
 loleaflet/dist/images/sc_help.png                      |binary
 loleaflet/dist/images/sc_incrementindent.png           |binary
 loleaflet/dist/images/sc_insertpage.png                |binary
 loleaflet/dist/images/sc_italic.png                    |binary
 loleaflet/dist/images/sc_next.png                      |binary
 loleaflet/dist/images/sc_numbering.png                 |binary
 loleaflet/dist/images/sc_presentation.png              |binary
 loleaflet/dist/images/sc_prev.png                      |binary
 loleaflet/dist/images/sc_print.png                     |binary
 loleaflet/dist/images/sc_redo.png                      |binary
 loleaflet/dist/images/sc_save.png                      |binary
 loleaflet/dist/images/sc_saveas.png                    |binary
 loleaflet/dist/images/sc_select.png                    |binary
 loleaflet/dist/images/sc_strikeout.png                 |binary
 loleaflet/dist/images/sc_underline.png                 |binary
 loleaflet/dist/images/sc_undo.png                      |binary
 loleaflet/dist/images/sc_view100.png                   |binary
 loleaflet/dist/images/sc_zoomin.png                    |binary
 loleaflet/dist/images/sc_zoomout.png                   |binary
 loleaflet/dist/l10n/help-localizations.json            |    4 
 loleaflet/dist/l10n/json2.min.js                       |    1 
 loleaflet/dist/l10n/l10n.min.js                        |    2 
 loleaflet/dist/l10n/localizations.json                 |    5 
 loleaflet/dist/loleaflet-help.html                     |  253 ++
 loleaflet/dist/loleaflet.html                          |  283 +++
 loleaflet/dist/toolbar/evol.colorpicker.min.css        |    1 
 loleaflet/dist/toolbar/evol.colorpicker.min.js         |    6 
 loleaflet/dist/toolbar/jquery.simplemodal.1.4.4.min.js |   26 
 loleaflet/dist/toolbar/select2.min.css                 |    1 
 loleaflet/dist/toolbar/select2.min.js                  |    2 
 loleaflet/dist/toolbar/toolbar.js                      |  795 +++++++++
 loleaflet/dist/toolbar/w2ui.min.css                    |    2 
 loleaflet/dist/toolbar/w2ui.min.js                     |   11 
 loleaflet/po/help-hu.po                                | 1451 +++++++++++++++++
 loleaflet/po/toolbar-fr.po                             |  240 ++
 loleaflet/po/toolbar-hu.po                             |  240 ++
 loleaflet/util/po2json.py                              |   45 
 56 files changed, 3380 insertions(+)

New commits:
commit 40251a92eba2c48740668278ded3de0f8d41a5e5
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Feb 8 17:20:05 2016 +0100

    New loleaflet toolbar

diff --git a/loleaflet/Makefile b/loleaflet/Makefile
index a7097ab..7188be9 100644
--- a/loleaflet/Makefile
+++ b/loleaflet/Makefile
@@ -24,9 +24,21 @@ dist: all
 		node_modules/mocha/mocha.js \
 		node_modules/happen/happen.js \
 		| (cd loleaflet-$(VERSION) && tar xf -)
+	util/po2json.py po/*.po
+	mv po/*.json loleaflet-$(VERSION)/dist/l10n
 	tar cfz loleaflet-$(VERSION).tar.gz loleaflet-$(VERSION)
 	rm -rf loleaflet-$(VERSION)
 
+pot:
+	xgettext --keyword=_ --output=po/loleaflet-toolbar.pot dist/toolbar/toolbar.js
+	html2po --pot --input=dist/loleaflet-help.html --output=po/loleaflet-help.pot
+
+l10n: pot
+	for i in po/toolbar-*.po; do pot2po --input=po/loleaflet-toolbar.pot --template=$$i --output=$$i.new; mv $$i.new $$i;done
+	for i in po/help-*.po; do pot2po --input=po/loleaflet-help.pot --template=$$i --output=$$i.new; mv $$i.new $$i;done
+	rm po/loleaflet-toolbar.pot
+	rm po/loleaflet-help.pot
+
 loleaflet.spec: loleaflet.spec.in Makefile
 	sed -e 's/@PACKAGE_VERSION@/$(VERSION)/g' <loleaflet.spec.in >loleaflet.spec
 
diff --git a/loleaflet/dist/images/sc_accepttrackedchanges.png b/loleaflet/dist/images/sc_accepttrackedchanges.png
new file mode 100644
index 0000000..02b2a7d
Binary files /dev/null and b/loleaflet/dist/images/sc_accepttrackedchanges.png differ
diff --git a/loleaflet/dist/images/sc_alignblock.png b/loleaflet/dist/images/sc_alignblock.png
new file mode 100644
index 0000000..68e5e29
Binary files /dev/null and b/loleaflet/dist/images/sc_alignblock.png differ
diff --git a/loleaflet/dist/images/sc_alignhorizontal.png b/loleaflet/dist/images/sc_alignhorizontal.png
new file mode 100644
index 0000000..2449458
Binary files /dev/null and b/loleaflet/dist/images/sc_alignhorizontal.png differ
diff --git a/loleaflet/dist/images/sc_alignleft.png b/loleaflet/dist/images/sc_alignleft.png
new file mode 100644
index 0000000..69675aa
Binary files /dev/null and b/loleaflet/dist/images/sc_alignleft.png differ
diff --git a/loleaflet/dist/images/sc_alignright.png b/loleaflet/dist/images/sc_alignright.png
new file mode 100644
index 0000000..506c97e
Binary files /dev/null and b/loleaflet/dist/images/sc_alignright.png differ
diff --git a/loleaflet/dist/images/sc_autosum.png b/loleaflet/dist/images/sc_autosum.png
new file mode 100644
index 0000000..8ff5e96
Binary files /dev/null and b/loleaflet/dist/images/sc_autosum.png differ
diff --git a/loleaflet/dist/images/sc_backcolor.png b/loleaflet/dist/images/sc_backcolor.png
new file mode 100644
index 0000000..3413a61
Binary files /dev/null and b/loleaflet/dist/images/sc_backcolor.png differ
diff --git a/loleaflet/dist/images/sc_bold.png b/loleaflet/dist/images/sc_bold.png
new file mode 100644
index 0000000..4cb3cdc
Binary files /dev/null and b/loleaflet/dist/images/sc_bold.png differ
diff --git a/loleaflet/dist/images/sc_bullet.png b/loleaflet/dist/images/sc_bullet.png
new file mode 100644
index 0000000..aeb0dd9
Binary files /dev/null and b/loleaflet/dist/images/sc_bullet.png differ
diff --git a/loleaflet/dist/images/sc_cancel.png b/loleaflet/dist/images/sc_cancel.png
new file mode 100644
index 0000000..dbfab83
Binary files /dev/null and b/loleaflet/dist/images/sc_cancel.png differ
diff --git a/loleaflet/dist/images/sc_closedoc.png b/loleaflet/dist/images/sc_closedoc.png
new file mode 100644
index 0000000..47f3fc1
Binary files /dev/null and b/loleaflet/dist/images/sc_closedoc.png differ
diff --git a/loleaflet/dist/images/sc_color.png b/loleaflet/dist/images/sc_color.png
new file mode 100644
index 0000000..30b3e7b
Binary files /dev/null and b/loleaflet/dist/images/sc_color.png differ
diff --git a/loleaflet/dist/images/sc_decrementindent.png b/loleaflet/dist/images/sc_decrementindent.png
new file mode 100644
index 0000000..bd7e9be
Binary files /dev/null and b/loleaflet/dist/images/sc_decrementindent.png differ
diff --git a/loleaflet/dist/images/sc_deletepage.png b/loleaflet/dist/images/sc_deletepage.png
new file mode 100644
index 0000000..f469284
Binary files /dev/null and b/loleaflet/dist/images/sc_deletepage.png differ
diff --git a/loleaflet/dist/images/sc_duplicatepage.png b/loleaflet/dist/images/sc_duplicatepage.png
new file mode 100644
index 0000000..0d01e04
Binary files /dev/null and b/loleaflet/dist/images/sc_duplicatepage.png differ
diff --git a/loleaflet/dist/images/sc_edit.png b/loleaflet/dist/images/sc_edit.png
new file mode 100644
index 0000000..cfb7699
Binary files /dev/null and b/loleaflet/dist/images/sc_edit.png differ
diff --git a/loleaflet/dist/images/sc_equal.png b/loleaflet/dist/images/sc_equal.png
new file mode 100644
index 0000000..ebb00d5
Binary files /dev/null and b/loleaflet/dist/images/sc_equal.png differ
diff --git a/loleaflet/dist/images/sc_gallery.png b/loleaflet/dist/images/sc_gallery.png
new file mode 100644
index 0000000..e32a4a6
Binary files /dev/null and b/loleaflet/dist/images/sc_gallery.png differ
diff --git a/loleaflet/dist/images/sc_help.png b/loleaflet/dist/images/sc_help.png
new file mode 100644
index 0000000..e69233a
Binary files /dev/null and b/loleaflet/dist/images/sc_help.png differ
diff --git a/loleaflet/dist/images/sc_incrementindent.png b/loleaflet/dist/images/sc_incrementindent.png
new file mode 100644
index 0000000..b93b70e
Binary files /dev/null and b/loleaflet/dist/images/sc_incrementindent.png differ
diff --git a/loleaflet/dist/images/sc_insertpage.png b/loleaflet/dist/images/sc_insertpage.png
new file mode 100644
index 0000000..b56ddf8
Binary files /dev/null and b/loleaflet/dist/images/sc_insertpage.png differ
diff --git a/loleaflet/dist/images/sc_italic.png b/loleaflet/dist/images/sc_italic.png
new file mode 100644
index 0000000..7da7b8f
Binary files /dev/null and b/loleaflet/dist/images/sc_italic.png differ
diff --git a/loleaflet/dist/images/sc_next.png b/loleaflet/dist/images/sc_next.png
new file mode 100644
index 0000000..4459ab3
Binary files /dev/null and b/loleaflet/dist/images/sc_next.png differ
diff --git a/loleaflet/dist/images/sc_numbering.png b/loleaflet/dist/images/sc_numbering.png
new file mode 100644
index 0000000..f99179f
Binary files /dev/null and b/loleaflet/dist/images/sc_numbering.png differ
diff --git a/loleaflet/dist/images/sc_presentation.png b/loleaflet/dist/images/sc_presentation.png
new file mode 100644
index 0000000..1bd0a5a
Binary files /dev/null and b/loleaflet/dist/images/sc_presentation.png differ
diff --git a/loleaflet/dist/images/sc_prev.png b/loleaflet/dist/images/sc_prev.png
new file mode 100644
index 0000000..f2b8a90
Binary files /dev/null and b/loleaflet/dist/images/sc_prev.png differ
diff --git a/loleaflet/dist/images/sc_print.png b/loleaflet/dist/images/sc_print.png
new file mode 100644
index 0000000..f3405df
Binary files /dev/null and b/loleaflet/dist/images/sc_print.png differ
diff --git a/loleaflet/dist/images/sc_redo.png b/loleaflet/dist/images/sc_redo.png
new file mode 100644
index 0000000..62def17
Binary files /dev/null and b/loleaflet/dist/images/sc_redo.png differ
diff --git a/loleaflet/dist/images/sc_save.png b/loleaflet/dist/images/sc_save.png
new file mode 100644
index 0000000..05891ce
Binary files /dev/null and b/loleaflet/dist/images/sc_save.png differ
diff --git a/loleaflet/dist/images/sc_saveas.png b/loleaflet/dist/images/sc_saveas.png
new file mode 100644
index 0000000..4a2b3ba
Binary files /dev/null and b/loleaflet/dist/images/sc_saveas.png differ
diff --git a/loleaflet/dist/images/sc_select.png b/loleaflet/dist/images/sc_select.png
new file mode 100644
index 0000000..6c96a66
Binary files /dev/null and b/loleaflet/dist/images/sc_select.png differ
diff --git a/loleaflet/dist/images/sc_strikeout.png b/loleaflet/dist/images/sc_strikeout.png
new file mode 100644
index 0000000..a17571e
Binary files /dev/null and b/loleaflet/dist/images/sc_strikeout.png differ
diff --git a/loleaflet/dist/images/sc_underline.png b/loleaflet/dist/images/sc_underline.png
new file mode 100644
index 0000000..0edbe7f
Binary files /dev/null and b/loleaflet/dist/images/sc_underline.png differ
diff --git a/loleaflet/dist/images/sc_undo.png b/loleaflet/dist/images/sc_undo.png
new file mode 100644
index 0000000..6698495
Binary files /dev/null and b/loleaflet/dist/images/sc_undo.png differ
diff --git a/loleaflet/dist/images/sc_view100.png b/loleaflet/dist/images/sc_view100.png
new file mode 100644
index 0000000..a4268a2
Binary files /dev/null and b/loleaflet/dist/images/sc_view100.png differ
diff --git a/loleaflet/dist/images/sc_zoomin.png b/loleaflet/dist/images/sc_zoomin.png
new file mode 100644
index 0000000..7dda50e
Binary files /dev/null and b/loleaflet/dist/images/sc_zoomin.png differ
diff --git a/loleaflet/dist/images/sc_zoomout.png b/loleaflet/dist/images/sc_zoomout.png
new file mode 100644
index 0000000..62c01d0
Binary files /dev/null and b/loleaflet/dist/images/sc_zoomout.png differ
diff --git a/loleaflet/dist/l10n/help-localizations.json b/loleaflet/dist/l10n/help-localizations.json
new file mode 100644
index 0000000..bf49f90
--- /dev/null
+++ b/loleaflet/dist/l10n/help-localizations.json
@@ -0,0 +1,4 @@
+{
+    "en": false,
+    "hu": "/loleaflet/dist/l10n/help-hu.json"
+}
diff --git a/loleaflet/dist/l10n/json2.min.js b/loleaflet/dist/l10n/json2.min.js
new file mode 100644
index 0000000..08977b5
--- /dev/null
+++ b/loleaflet/dist/l10n/json2.min.js
@@ -0,0 +1 @@
+if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(
 0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,valu
 e);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+(
 "0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
\ No newline at end of file
diff --git a/loleaflet/dist/l10n/l10n.min.js b/loleaflet/dist/l10n/l10n.min.js
new file mode 100644
index 0000000..11ac2b4
--- /dev/null
+++ b/loleaflet/dist/l10n/l10n.min.js
@@ -0,0 +1,2 @@
+/*! @source http://purl.eligrey.com/github/l10n.js/blob/master/l10n.js*/
+(function(){"use strict";var q="undefined",a="string",m=self.navigator,o=String,l=Object.prototype.hasOwnProperty,z={},B={},t=!1,k=!0,s=/^\s*application\/(?:vnd\.oftn\.|x-)?l10n\+json\s*(?:$|;)/i,p,A="locale",j="defaultLocale",r="toLocaleString",e="toLowerCase",x=Array.prototype.indexOf||function(E){var C=this.length,D=0;for(;D<C;D++){if(D in this&&this[D]===E){return D}}return -1},b=function(C){var i=new p();i.open("GET",C,t);i.send(null);if(i.status!==200){setTimeout(function(){var D=new Error("Unable to load localization data: "+C);D.name="Localization Error";throw D},0);return{}}else{return JSON.parse(i.responseText)}},n=o[r]=function(D){if(arguments.length>0&&typeof D!=="number"){if(typeof D===a){n(b(D))}else{if(D===t){B={}}else{var i,E,C;for(i in D){if(l.call(D,i)){E=D[i];i=i[e]();if(!(i in B)||E===t){B[i]={}}if(E===t){continue}if(typeof E===a){if(o[A][e]().indexOf(i)===0){E=b(E)}else{if(!(i in z)){z[i]=[]}z[i].push(E);continue}}for(C in E){if(l.call(E,C)){B[i][C]=E[C]}}}}}}}r
 eturn Function.prototype[r].apply(o,arguments)},h=function(E){var D=z[E],F=0,C=D.length,G;for(;F<C;F++){G={};G[E]=b(D[F]);n(G)}delete z[E]},u,w=o.prototype[r]=function(){var E=u,G=o[E?j:A],H=G[e]().split("-"),F=H.length,D=this.valueOf(),C;u=t;do{C=H.slice(0,F).join("-");if(C in z){h(C)}if(C in B&&D in B[C]){return B[C][D]}}while(F-->1);if(!E&&o[j]){u=k;return w.call(D)}return D};if(typeof XMLHttpRequest===q&&typeof ActiveXObject!==q){var f=ActiveXObject;p=function(){try{return new f("Msxml2.XMLHTTP.6.0")}catch(C){}try{return new f("Msxml2.XMLHTTP.3.0")}catch(i){}try{return new f("Msxml2.XMLHTTP")}catch(D){}throw new Error("XMLHttpRequest not supported by this browser.")}}else{p=XMLHttpRequest}o[j]=o[j]||"";o[A]=m&&(m.language||m.userLanguage)||"";if(typeof document!==q){var y=document.getElementsByTagName("link"),v=y.length,g;while(v--){var d=y[v],c=(d.getAttribute("rel")||"")[e]().split(/\s+/);if(s.test(d.type)){if(x.call(c,"localizations")!==-1){n(d.getAttribute("href"))}else{if(x
 .call(c,"localization")!==-1){g={};g[(d.getAttribute("hreflang")||"")[e]()]=d.getAttribute("href");n(g)}}}}}}());
diff --git a/loleaflet/dist/l10n/localizations.json b/loleaflet/dist/l10n/localizations.json
new file mode 100644
index 0000000..50b0c43
--- /dev/null
+++ b/loleaflet/dist/l10n/localizations.json
@@ -0,0 +1,5 @@
+{
+    "en": false,
+    "fr": "/loleaflet/dist/l10n/toolbar-fr.json",
+    "hu": "/loleaflet/dist/l10n/toolbar-hu.json"
+}
diff --git a/loleaflet/dist/loleaflet-help.html b/loleaflet/dist/loleaflet-help.html
new file mode 100644
index 0000000..73dfa0b
--- /dev/null
+++ b/loleaflet/dist/loleaflet-help.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <title>LOLeaflet Help</title>
+    <meta charset="utf-8">
+    <link rel="localizations" href="/loleaflet/dist/l10n/help-localizations.json" type="application/vnd.oftn.l10n+json"/>
+</head>
+<body onload="selectHelp()">
+    <style>
+        h1 {
+            text-align: center;
+        }
+
+        table.help {
+            border-collapse: collapse;
+            width: 100%;
+        }
+
+        td.function {
+            padding: 5px;
+            border-bottom: solid black 1px;
+            width: 70%;
+        }
+
+        td.shortcut {
+            padding: 5px;
+            border-bottom: solid black 1px;
+            font-weight: bold;
+            width: 30%;
+        }
+    </style>
+    <script src="/loleaflet/dist/l10n/json2.min.js"></script>
+    <script src="/loleaflet/dist/l10n/l10n.min.js"></script>
+    <script>
+        function selectHelp() {
+                if (parent.map.getDocType() === 'text') {
+                        document.getElementById('text-shortcuts').style.display='block';
+                }
+                else if (parent.map.getDocType() === 'spreadsheet') {
+                        document.getElementById('spreadsheet-shortcuts').style.display='block';
+                }
+                else if (parent.map.getDocType() === 'presentation' || parent.map.getDocType() === 'drawing') {
+                        document.getElementById('presentation-shortcuts').style.display='block';
+                }
+        }
+    </script>
+    <h1>Keyboard Shortcuts</h1>
+    <div id="general-shortcuts">
+        <h2>General Keyboard Shortcuts</h2>
+        <table class="help">
+            <tr> <td class="function">Undo</td> <td class="shortcut">Ctrl + Z</td> </tr>
+            <tr> <td class="function">Redo</td> <td class="shortcut">Ctrl + Y</td> </tr>
+            <tr> <td class="function">Cut</td> <td class="shortcut">Ctrl + X</td> </tr>
+            <tr> <td class="function">Paste as unformatted text</td> <td class="shortcut">Ctrl + Alt + Shift + V</td> </tr>
+            <tr> <td class="function">Print (Download as PDF)</td> <td class="shortcut">Ctrl + P</td> </tr>
+        </table>
+    </div>
+    <div id="text-shortcuts" style="display: none;">
+        <h2>Text formatting</h2>
+        <table class="help">
+            <tr> <td class="function">Bold</td> <td class="shortcut">Ctrl + B</td> </tr>
+            <tr> <td class="function">Italic</td> <td class="shortcut">Ctrl + I</td> </tr>
+            <tr> <td class="function">Underline</td> <td class="shortcut">Ctrl + U</td> </tr>
+            <tr> <td class="function">Double Underline</td> <td class="shortcut">Ctrl + D</td> </tr>
+            <tr> <td class="function">Strikethrough</td> <td class="shortcut">Ctrl + Alt + 5</td> </tr>
+            <tr> <td class="function">Superscript</td> <td class="shortcut">Ctrl + Shift + P</td> </tr>
+            <tr> <td class="function">Subscript</td> <td class="shortcut">Ctrl + Shift + B</td> </tr>
+            <tr> <td class="function">Remove direct formatting</td> <td class="shortcut">Ctrl + M</td> </tr>
+        </table>
+        <h2>Paragraph formatting</h2>
+        <table class="help">
+            <tr> <td class="function">Align Center</td> <td class="shortcut">Ctrl + E</td> </tr>
+            <tr> <td class="function">Align Left</td> <td class="shortcut">Ctrl + L</td> </tr>
+            <tr> <td class="function">Align Right</td> <td class="shortcut">Ctrl + R</td> </tr>
+            <tr> <td class="function">Justify</td> <td class="shortcut">Ctrl + J</td> </tr>
+            <tr> <td class="function">Apply Default paragraph style</td> <td class="shortcut">Ctrl + 0</td> </tr>
+            <tr> <td class="function">Apply Heading 1 paragraph style</td> <td class="shortcut">Ctrl + 1</td> </tr>
+            <tr> <td class="function">Apply Heading 2 paragraph style</td> <td class="shortcut">Ctrl + 2</td> </tr>
+            <tr> <td class="function">Apply Heading 3 paragraph style</td> <td class="shortcut">Ctrl + 3</td> </tr>
+            <tr> <td class="function">Apply Heading 4 paragraph style</td> <td class="shortcut">Ctrl + 4</td> </tr>
+            <tr> <td class="function">Apply Heading 5 paragraph style</td> <td class="shortcut">Ctrl + 5</td> </tr>
+        </table>
+        <h2>Text selection and navigation in document</h2>
+        <table class="help">
+            <tr> <td class="function">Select All</td> <td class="shortcut">Ctrl + A</td> </tr>
+            <tr> <td class="function">Move cursor to the left</td> <td class="shortcut">Arrow Left</td> </tr>
+            <tr> <td class="function">Move cursor with selection to the left</td> <td class="shortcut">Shift + Arrow Left</td> </tr>
+            <tr> <td class="function">Go to beginning of a word</td> <td class="shortcut">Ctrl + Arrow Left</td> </tr>
+            <tr> <td class="function">Select to the left word by word</td> <td class="shortcut">Ctrl + Shift + Arrow Left</td> </tr>
+            <tr> <td class="function">Move cursor to the right</td> <td class="shortcut">Arrow Right</td> </tr>
+            <tr> <td class="function">Move cursor with selection to the right</td> <td class="shortcut">Shift + Arrow Right</td> </tr>
+            <tr> <td class="function">Go to start of the next word</td> <td class="shortcut">Ctrl + Arrow Right</td> </tr>
+            <tr> <td class="function">Select to the right word by word</td> <td class="shortcut">Ctrl + Shift + Arrow Right</td> </tr>
+            <tr> <td class="function">Move cursor up one line</td> <td class="shortcut">Arrow Up</td> </tr>
+            <tr> <td class="function">Select lines in upwards direction</td> <td class="shortcut">Shift + Arrow Up</td> </tr>
+            <tr> <td class="function">Move cursor to beginning of the previous paragraph</td> <td class="shortcut">Ctrl + Arrow Up</td> </tr>
+            <tr> <td class="function">Select to beginning of paragraph</td> <td class="shortcut">Ctrl + Shift + Arrow Up</td> </tr>
+            <tr> <td class="function">Move cursor down one line</td> <td class="shortcut">Arrow Down</td> </tr>
+            <tr> <td class="function">Select lines in downwards direction</td> <td class="shortcut">Shift + Arrow Down</td> </tr>
+            <tr> <td class="function">Move cursor to end of the previous paragraph</td> <td class="shortcut">Ctrl + Arrow Down</td> </tr>
+            <tr> <td class="function">Select to end of paragraph</td> <td class="shortcut">Ctrl + Shift + Arrow Down</td> </tr>
+            <tr> <td class="function">Go to beginning of line</td> <td class="shortcut">Home</td> </tr>
+            <tr> <td class="function">Go and select to the beginning of a line</td> <td class="shortcut">Shift + Home</td> </tr>
+            <tr> <td class="function">Go to start of document</td> <td class="shortcut">Ctrl + Home</td> </tr>
+            <tr> <td class="function">Go and select text to start of document</td> <td class="shortcut">Ctrl + Shift + Home</td> </tr>
+            <tr> <td class="function">Go to end of line</td> <td class="shortcut">End</td> </tr>
+            <tr> <td class="function">Go and select to the end of a line</td> <td class="shortcut">Shift + End</td> </tr>
+            <tr> <td class="function">Go to end of document</td> <td class="shortcut">Ctrl + End</td> </tr>
+            <tr> <td class="function">Go and select text to end of document</td> <td class="shortcut">Ctrl + Shift + End</td> </tr>
+            <tr> <td class="function">Move the view up one page</td> <td class="shortcut">PageUp</td> </tr>
+            <tr> <td class="function">Switch cursor between text and header</td> <td class="shortcut">Ctrl + PageUp</td> </tr>
+            <tr> <td class="function">Extend the selection up one page</td> <td class="shortcut">Shift + PageUp</td> </tr>
+            <tr> <td class="function">Move the view down one page</td> <td class="shortcut">PageDown</td> </tr>
+            <tr> <td class="function">Switch cursor between text and footer</td> <td class="shortcut">Ctrl + PageDown</td> </tr>
+            <tr> <td class="function">Extend the selection down one page</td> <td class="shortcut">Shift + PageDown</td> </tr>
+            <tr> <td class="function">Delete to beginning of word</td> <td class="shortcut">Ctrl + Backspace</td> </tr>
+            <tr> <td class="function">Delete to end of word</td> <td class="shortcut">Ctrl + Del</td> </tr>
+            <tr> <td class="function">Delete to beginning of sentence</td> <td class="shortcut">Ctrl + Shift + Backspace</td> </tr>
+            <tr> <td class="function">Delete to end of sentence</td> <td class="shortcut">Ctrl + Shift + Del</td> </tr>
+        </table>
+        <h2>Shortcut Keys for Tables</h2>
+        <table class="help">
+            <tr> <td class="shortcut">Ctrl + A</td>  <td class="function">If the active cell is empty: selects the whole table. Otherwise: selects the contents of the active cell. Pressing again selects the entire table.</td>  </tr>
+            <tr> <td class="shortcut">Ctrl + Home</td>  <td class="function">If the active cell is empty: goes to the beginning of the table. Otherwise: first press goes to beginning of the active cell, second press goes to beginning of the current table, third press goes to beginning of document.</td>  </tr>
+            <tr> <td class="shortcut">Ctrl + End</td>  <td class="function">If the active cell is empty: goes to the end of the table. Otherwise: first press goes to the end of the active cell, second press goes to the end of the current table, third press goes to the end of the document.</td>  </tr>
+            <tr> <td class="shortcut">Ctrl + Tab</td>  <td class="function">Inserts a tab stop (only in tables). Depending on the Window Manager in use, Alt + Tab may be used instead.</td>  </tr>
+            <tr> <td class="shortcut">Alt + Arrow Keys</td>  <td class="function">Increases/decreases the size of the column/row on the right/bottom cell edge</td>  </tr>
+            <tr> <td class="shortcut">Alt + Shift + Arrow Keys</td>  <td class="function">Increase/decrease the size of the column/row on the left/top cell edge</td>  </tr>
+            <tr> <td class="shortcut">Alt + Ctrl + Arrow Keys</td>  <td class="function">Like Alt, but only the active cell is modified</td>  </tr>
+            <tr> <td class="shortcut">Ctrl + Alt + Shift + Arrow Keys</td>  <td class="function">Like Alt, but only the active cell is modified</td>  </tr>
+            <tr> <td class="shortcut">Alt + Insert</td>  <td class="function">3 seconds in Insert mode, Arrow Key inserts row/column, Ctrl + Arrow Key inserts cell</td>  </tr>
+            <tr> <td class="shortcut">Alt + Del</td>  <td class="function">3 seconds in Delete mode, Arrow key deletes row/column, Ctrl + Arrow key merges cell with neighboring cell</td>  </tr>
+            <tr> <td class="shortcut">Shift + Ctrl + Del</td>  <td class="function">If no whole cell is selected, the text from the cursor to the end of the current sentence is deleted. If the cursor is at the end of a cell, and no whole cell is selected, the contents of the next cell are deleted.
+<p>If no whole cell is selected and the cursor is at the end of the table, the paragraph following the table will be deleted, unless it is the last paragraph in the document.</p>
+<p>If one or more cells are selected, the whole rows containing the selection will be deleted. If all rows are selected completely or partially, the entire table will be deleted.</p>
+</td>  </tr>
+        </table>
+        <h2>Word processor functions</h2>
+        <table class="help">
+            <tr> <td class="function">Insert footnote</td> <td class="shortcut">Ctrl + Alt + F</td> </tr>
+            <tr> <td class="function">Insert endnote</td> <td class="shortcut">Ctrl + Alt + D</td> </tr>
+            <tr> <td class="function">Insert comment</td> <td class="shortcut">Ctrl + Alt + C</td> </tr>
+            <!-- <tr> <td class="function">Calculates the selected text and copies the result to the clipboard.</td> <td class="shortcut">Ctrl + Plus Key(+)</td> </tr> -->
+            <tr> <td class="function">Insert soft hyphen</td> <td class="shortcut">Ctrl + -</td> </tr>
+            <tr> <td class="function">Insert non-breaking hyphen</td> <td class="shortcut">Ctrl + Shift + -</td> </tr>
+            <!-- <tr> <td class="function">Run macro field</td> <td class="shortcut">Ctrl + * (on numberic keypad)</td> </tr> -->
+            <tr> <td class="function">Insert non-breaking space</td> <td class="shortcut">Ctrl + Shift + Space</td> </tr>
+            <tr> <td class="function">Insert line break</td> <td class="shortcut">Shift + Enter</td> </tr>
+            <tr> <td class="function">Manual page break</td> <td class="shortcut">Ctrl + Enter</td> </tr>
+            <tr> <td class="function">Column break (in multicolumnar text)</td> <td class="shortcut">Ctrl + Shift + Enter</td> </tr>
+            <tr> <td class="function">Insert new paragraph directly before or after a section, or before a table</td> <td class="shortcut">Alt + Enter</td> </tr>
+            <tr> <td class="function">Insert new paragraph without numbering inside a list. Does not work when the cursor is at the end of the list.</td> <td class="shortcut">Alt + Enter</td> </tr>
+        </table>
+    </div>
+    <div id="spreadsheet-shortcuts" style="display: none;">
+        <h2>Cell formatting</h2>
+        <table class="help">
+            <tr> <td class="function">Bold</td> <td class="shortcut">Ctrl + B</td> </tr>
+            <tr> <td class="function">Italic</td> <td class="shortcut">Ctrl + I</td> </tr>
+            <tr> <td class="function">Underline</td> <td class="shortcut">Ctrl + U</td> </tr>
+            <tr> <td class="function">Strikethrough</td> <td class="shortcut">Ctrl + Alt + 5</td> </tr>
+            <tr> <td class="function">Remove direct formatting</td> <td class="shortcut">Ctrl + M</td> </tr>
+            <tr> <td class="function">Insert comment</td> <td class="shortcut">Ctrl + Alt + C</td> </tr>
+            <tr> <td class="function">Display comment</td> <td class="shortcut">Ctrl + F1</td> </tr>
+            <tr> <td class="function">Fill Down</td> <td class="shortcut">Ctrl + D</td> </tr>
+            <!-- <tr> <td class="function">Select All</td> <td class="shortcut">Ctrl + A</td> </tr> -->
+            <tr> <td class="function">Align Center</td> <td class="shortcut">Ctrl + E</td> </tr>
+            <tr> <td class="function">Align Left</td> <td class="shortcut">Ctrl + L</td> </tr>
+            <tr> <td class="function">Align Right</td> <td class="shortcut">Ctrl + R</td> </tr>
+            <tr> <td class="function">Justify</td> <td class="shortcut">Ctrl + J</td> </tr>
+            <tr> <td class="function">Set Optimal Column Width</td> <td class="shortcut">Ctrl + 3</td> </tr>
+            <tr> <td class="function">Two decimal places, thousands separator</td> <td class="shortcut">Ctrl + Shift + 1</td> </tr>
+            <tr> <td class="function">Standard exponential format</td> <td class="shortcut">Ctrl + Shift + 2</td> </tr>
+            <tr> <td class="function">Standard date format</td> <td class="shortcut">Ctrl + Shift + 3</td> </tr>
+            <tr> <td class="function">Standard currency format</td> <td class="shortcut">Ctrl + Shift + 4</td> </tr>
+            <tr> <td class="function">Standard percentage format (two decimal places)</td> <td class="shortcut">Ctrl + Shift + 5</td> </tr>
+            <tr> <td class="function">Standard format</td> <td class="shortcut">Ctrl + Shift + 6</td> </tr>
+        </table>
+    </div>
+    <div id="presentation-shortcuts" style="display: none;">
+        <h2>Text formatting</h2>
+        <table class="help">
+            <tr> <td class="function">Bold</td> <td class="shortcut">Ctrl + B</td> </tr>
+            <tr> <td class="function">Italic</td> <td class="shortcut">Ctrl + I</td> </tr>
+            <tr> <td class="function">Underline</td> <td class="shortcut">Ctrl + U</td> </tr>
+            <tr> <td class="function">Strikethrough</td> <td class="shortcut">Ctrl + Alt + 5</td> </tr>
+            <tr> <td class="function">Superscript</td> <td class="shortcut">Ctrl + Shift + P</td> </tr>
+            <tr> <td class="function">Subscript</td> <td class="shortcut">Ctrl + Shift + B</td> </tr>
+            <tr> <td class="function">Select All</td> <td class="shortcut">Ctrl + A</td> </tr>
+        </table>
+        <h2>Paragraph formatting</h2>
+        <table class="help">
+            <tr> <td class="function">Align Center</td> <td class="shortcut">Ctrl + E</td> </tr>
+            <tr> <td class="function">Align Left</td> <td class="shortcut">Ctrl + L</td> </tr>
+            <tr> <td class="function">Align Right</td> <td class="shortcut">Ctrl + R</td> </tr>
+            <tr> <td class="function">Justify</td> <td class="shortcut">Ctrl + J</td> </tr>
+            <tr> <td class="function">Demote list item (list item has to be selected)</td> <td class="shortcut">Tab</td> </tr>
+            <tr> <td class="function">Promote list item (list item has to be selected)</td> <td class="shortcut">Shift + Tab</td> </tr>
+        </table>
+        <h2>Text selection and navigation in a textbox</h2>
+        <table class="help">
+            <tr> <td class="function">Select All</td> <td class="shortcut">Ctrl + A</td> </tr>
+            <tr> <td class="function">Move cursor to the left</td> <td class="shortcut">Arrow Left</td> </tr>
+            <tr> <td class="function">Move cursor with selection to the left</td> <td class="shortcut">Shift + Arrow Left</td> </tr>
+            <tr> <td class="function">Go to beginning of a word</td> <td class="shortcut">Ctrl + Arrow Left</td> </tr>
+            <tr> <td class="function">Select to the left word by word</td> <td class="shortcut">Ctrl + Shift + Arrow Left</td> </tr>
+            <tr> <td class="function">Move cursor to the right</td> <td class="shortcut">Arrow Right</td> </tr>
+            <tr> <td class="function">Move cursor with selection to the right</td> <td class="shortcut">Shift + Arrow Right</td> </tr>
+            <tr> <td class="function">Go to start of the next word</td> <td class="shortcut">Ctrl + Arrow Right</td> </tr>
+            <tr> <td class="function">Select to the right word by word</td> <td class="shortcut">Ctrl + Shift + Arrow Right</td> </tr>
+            <tr> <td class="function">Move cursor up one line</td> <td class="shortcut">Arrow Up</td> </tr>
+            <tr> <td class="function">Select lines in upwards direction</td> <td class="shortcut">Shift + Arrow Up</td> </tr>
+            <tr> <td class="function">Move cursor to beginning of the previous paragraph</td> <td class="shortcut">Ctrl + Arrow Up</td> </tr>
+            <tr> <td class="function">Select to beginning of paragraph</td> <td class="shortcut">Ctrl + Shift + Arrow Up</td> </tr>
+            <tr> <td class="function">Move cursor down one line</td> <td class="shortcut">Arrow Down</td> </tr>
+            <tr> <td class="function">Select lines in downwards direction</td> <td class="shortcut">Shift + Arrow Down</td> </tr>
+            <tr> <td class="function">Move cursor to end of the previous paragraph</td> <td class="shortcut">Ctrl + Arrow Down</td> </tr>
+            <tr> <td class="function">Select to end of paragraph</td> <td class="shortcut">Ctrl + Shift + Arrow Down</td> </tr>
+            <tr> <td class="function">Go to beginning of line</td> <td class="shortcut">Home</td> </tr>
+            <tr> <td class="function">Go and select to the beginning of a line</td> <td class="shortcut">Shift + Home</td> </tr>
+            <tr> <td class="function">Go to start of document</td> <td class="shortcut">Ctrl + Home</td> </tr>
+            <tr> <td class="function">Go and select text to start of textbox</td> <td class="shortcut">Ctrl + Shift + Home</td> </tr>
+            <tr> <td class="function">Go to end of line</td> <td class="shortcut">End</td> </tr>
+            <tr> <td class="function">Go and select to the end of a line</td> <td class="shortcut">Shift + End</td> </tr>
+            <tr> <td class="function">Go to end of document</td> <td class="shortcut">Ctrl + End</td> </tr>
+            <tr> <td class="function">Go and select text to end of textbox</td> <td class="shortcut">Ctrl + Shift + End</td> </tr>
+        </table>
+        <h2>Slide / draw page keyboard shortcuts</h2>
+        <table class="help">
+            <tr> <td class="function">Escape current mode, i.e. from edit mode switch to object selection mode, from object selection mode switch to view mode.</td> <td class="shortcut">Esc</td> </tr>
+            <tr> <td class="function">Select objects in the order in which they were created</td> <td class="shortcut">Tab</td> </tr>
+            <tr> <td class="function">Select objects in the reverse order in which they were created</td> <td class="shortcut">Shift + Tab</td> </tr>
+            <tr> <td class="function">Move to next text object on slide / drawing page</td> <td class="shortcut">Ctrl + Enter</td> </tr>
+            <tr> <td class="function">Select all in slide / drawing page</td> <td class="shortcut">Ctrl + A</td> </tr>
+        </table>
+    </div>
+    <script>
+        var translatableContent = document.getElementsByTagName("h1");
+        for (var i=0, max=translatableContent.length; i < max; i++) {
+            translatableContent[i].firstChild.nodeValue = translatableContent[i].firstChild.nodeValue.toLocaleString();
+        }
+        translatableContent = document.getElementsByTagName("h2");
+        for (var i=0, max=translatableContent.length; i < max; i++) {
+            translatableContent[i].firstChild.nodeValue = translatableContent[i].firstChild.nodeValue.toLocaleString();
+        }
+        translatableContent = document.getElementsByTagName("td");
+        for (var i=0, max=translatableContent.length; i < max; i++) {
+            translatableContent[i].firstChild.nodeValue = translatableContent[i].firstChild.nodeValue.toLocaleString();
+        }
+    </script>
+</body>
+</html>
diff --git a/loleaflet/dist/loleaflet.html b/loleaflet/dist/loleaflet.html
new file mode 100644
index 0000000..4b5edbc
--- /dev/null
+++ b/loleaflet/dist/loleaflet.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<!-- saved from url=(0054)http://leafletjs.com/examples/quick-start-example.html -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Document Simple Example</title>
+<meta charset="utf-8">
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<link rel="stylesheet" href="/loleaflet/dist/leaflet.css">
+<link rel="stylesheet" href="/loleaflet/dist/selectionMarkers.css">
+<link rel="stylesheet" href="/loleaflet/dist/loleaflet.css">
+<link rel="stylesheet" href="/loleaflet/dist/toolbar.css">
+<link rel="stylesheet" href="/loleaflet/dist/partsPreviewControl.css">
+<link rel="stylesheet" href="/loleaflet/dist/scrollBar.css">
+<link rel="stylesheet" href="/loleaflet/dist/searchControl.css">
+<link rel="stylesheet" href="/loleaflet/dist/spreadsheet.css">
+<link rel="stylesheet" href="/loleaflet/dist/branding.css"> <!-- add your logo here -->
+<link rel="stylesheet" href="/loleaflet/plugins/draw-0.2.4/dist/leaflet.draw.css">
+<link rel="stylesheet" href="/loleaflet/src/scrollbar/jquery.mCustomScrollbar.css">
+<link rel="stylesheet" href="/loleaflet/dist/dialog/vex.css" />
+<link rel="stylesheet" href="/loleaflet/dist/dialog/vex-theme-plain.css" />
+<link rel="stylesheet" href="/loleaflet/dist/toolbar/w2ui.min.css" />
+<link rel="stylesheet" href="/loleaflet/dist/toolbar/select2.min.css" />
+<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/ui-lightness/jquery-ui.css">
+<link rel="stylesheet" href="/loleaflet/dist/toolbar/evol.colorpicker.min.css">
+<link rel="localizations" href="/loleaflet/dist/l10n/localizations.json" type="application/vnd.oftn.l10n+json"/>
+<style type="text/css"></style></head>
+<body>
+    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
+    <script src="/loleaflet/dist/l10n/json2.min.js"></script>
+    <script src="/loleaflet/dist/l10n/l10n.min.js"></script>
+    <script src="/loleaflet/dist/toolbar/w2ui.min.js"></script>
+    <script src="/loleaflet/dist/toolbar/select2.min.js"></script>
+    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
+    <script src="/loleaflet/dist/toolbar/evol.colorpicker.min.js"></script>
+    <script src="/loleaflet/dist/toolbar/jquery.simplemodal.1.4.4.min.js"></script>
+    <script src="/loleaflet/dist/leaflet-src.js"></script>
+    <script src="/loleaflet/plugins/draw-0.2.4/dist/leaflet.draw.js"></script>
+    <script src="/loleaflet/src/scrollbar/jquery.mCustomScrollbar.js"></script>
+    <script src="/loleaflet/dist/dialog/vex.combined.min.js"></script>
+    <script src="/loleaflet/dist/branding.js"></script> <!-- logo onclick handler -->
+    <script>vex.defaultOptions.className = 'vex-theme-plain';</script>
+    <script>var _ = function (string) {return string.toLocaleString();};</script>
+
+    <!--The "controls" div holds map controls such as the Zoom button and
+        it's separated from the map in order to have the controls on the top
+        of the page all the time.
+
+        The "document-container" div is the actual display of the document, is
+        what the user sees and it should be no larger than the screen size.
+
+        The "map" div is the actual document and it has the document's size
+        and width, this being inside the smaller "document-container" will
+        cause the content to overflow, creating scrollbars -->
+    <div id="logo" class="logo"></div>
+    <div>
+        <div id="toolbar" style="visibility: hidden;"></div>
+        <div id="toolbar-up"></div>
+        <div id="formulabar"></div>
+        <div id="toolbar-up-more"></div>
+    </div>
+    <input id="insertgraphic" type="file" onchange="onInsertFile()" style="position: fixed; top: -100em">
+
+    <div id="document-container">
+        <div id="map"></div>
+    </div>
+
+    <div id="toolbar-down"></div>
+    <style type="text/css">
+        #toolbar-up {
+            left: 0;
+            right: 0;
+            text-align: center;
+            padding: 10px;
+        }
+
+        #toolbar-down {
+            left: 0;
+            right: 0;
+            text-align: center;
+            padding: 0;
+            position: fixed;
+            bottom: 0;
+        }
+
+        #toolbar-up-more {
+            position: absolute;
+            right: 10px;
+            width: 200px;
+            top: 40px;
+            border: 1px solid black;
+            z-index: 8000;
+            display: none;
+        }
+
+        #zoomlevel {
+            min-width: 36px;
+            font-size: 12px;
+        }
+
+        body {
+            margin: 0;
+        }
+
+        .w2ui-tb-image {
+            width: 16px;
+            height: 16px;
+        }
+
+        /* center the toolbar */
+        #tb_toolbar-up_item_left,
+        #tb_formulabar_item_left {
+            width: 50%;
+        }
+
+        #tb_toolbar-up_item_right {
+            width: 100%;
+        }
+
+        #tb_toolbar-down_item_left {
+            width: 45%;
+        }
+        #tb_toolbar-down_item_right {
+            width: 100%;
+        }
+        .search-not-found {
+            background-color: red !important;
+            -webkit-transition: background-color 0.8s linear;
+               -moz-transition: background-color 0.8s linear;
+                 -o-transition: background-color 0.8s linear;
+                    transition: background-color 0.8s linear;
+
+        }
+        #formulaInput {
+            height: 29px;
+            width: 800px;
+        }
+
+        #document-container,
+        .parts-preview {
+            top: 47px;
+            bottom: 29px;
+        }
+
+        .spreadsheet-document {
+            top: 100px !important;
+            bottom: 49px !important;
+        }
+
+	.spreadsheet-header-rows-container {
+            bottom: 49px;
+        }
+
+        .spreadsheet-tab {
+            bottom: 29px;
+        }
+
+        /* select box */
+        .select2-results__option {
+            padding: 5px;
+            font-size: 14px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+        .styles-select {
+            width: 180px;
+        }
+        .fonts-select {
+            width: 150px;
+        }
+        .fontsizes-select {
+            width: 70px;
+        }
+        .evo-cp-wrap {
+            /* hide the color pick div */
+            width: 1px !important;
+        }
+        .font-color-indicator,
+        .back-color-indicator {
+            width: 16px;
+            height: 5px;
+            margin-top: -7px;
+            margin-left: 5px;
+            position: fixed;
+            background: transparent;
+        }
+        .back-color-indicator {
+            border-width: 1px;
+            border-style: solid;
+        }
+
+        .w2ui-icon.accepttrackedchanges{ background: url('/loleaflet/dist/images/sc_accepttrackedchanges.png') no-repeat center !important; }
+        .w2ui-icon.alignblock{ background: url('/loleaflet/dist/images/sc_alignblock.png') no-repeat center !important; }
+        .w2ui-icon.alignhorizontal{ background: url('/loleaflet/dist/images/sc_alignhorizontal.png') no-repeat center !important; }
+        .w2ui-icon.alignleft{ background: url('/loleaflet/dist/images/sc_alignleft.png') no-repeat center !important; }
+        .w2ui-icon.alignright{ background: url('/loleaflet/dist/images/sc_alignright.png') no-repeat center !important; }
+        .w2ui-icon.autosum{ background: url('/loleaflet/dist/images/sc_autosum.png') no-repeat center !important; }
+        .w2ui-icon.backcolor{ background: url('/loleaflet/dist/images/sc_backcolor.png') no-repeat center !important; }
+        .w2ui-icon.bold{ background: url('/loleaflet/dist/images/sc_bold.png') no-repeat center !important; }
+        .w2ui-icon.bullet{ background: url('/loleaflet/dist/images/sc_bullet.png') no-repeat center !important; }
+        .w2ui-icon.cancel{ background: url('/loleaflet/dist/images/sc_cancel.png') no-repeat center !important; }
+        .w2ui-icon.color{ background: url('/loleaflet/dist/images/sc_color.png') no-repeat center !important; }
+        .w2ui-icon.closedoc{ background: url('/loleaflet/dist/images/sc_closedoc.png') no-repeat center !important; }
+        .w2ui-icon.decrementindent{ background: url('/loleaflet/dist/images/sc_decrementindent.png') no-repeat center !important; }
+        .w2ui-icon.deletepage{ background: url('/loleaflet/dist/images/sc_deletepage.png') no-repeat center !important; }
+        .w2ui-icon.duplicatepage{ background: url('/loleaflet/dist/images/sc_duplicatepage.png') no-repeat center !important; }
+        .w2ui-icon.edit{ background: url('/loleaflet/dist/images/sc_edit.png') no-repeat center !important; }
+        .w2ui-icon.equal{ background: url('/loleaflet/dist/images/sc_equal.png') no-repeat center !important; }
+        .w2ui-icon.help{ background: url('/loleaflet/dist/images/sc_help.png') no-repeat center !important; }
+        .w2ui-icon.incrementindent{ background: url('/loleaflet/dist/images/sc_incrementindent.png') no-repeat center !important; }
+        .w2ui-icon.insertpage{ background: url('/loleaflet/dist/images/sc_insertpage.png') no-repeat center !important; }
+        .w2ui-icon.italic{ background: url('/loleaflet/dist/images/sc_italic.png') no-repeat center !important; }
+        .w2ui-icon.insertgraphic{ background: url('/loleaflet/dist/images/sc_gallery.png') no-repeat center !important; }
+        .w2ui-icon.next{ background: url('/loleaflet/dist/images/sc_next.png') no-repeat center !important; }
+        .w2ui-icon.numbering{ background: url('/loleaflet/dist/images/sc_numbering.png') no-repeat center !important; }
+        .w2ui-icon.presentation{ background: url('/loleaflet/dist/images/sc_presentation.png') no-repeat center !important; }
+        .w2ui-icon.prev{ background: url('/loleaflet/dist/images/sc_prev.png') no-repeat center !important; }
+        .w2ui-icon.print{ background: url('/loleaflet/dist/images/sc_print.png') no-repeat center !important; }
+        .w2ui-icon.redo{ background: url('/loleaflet/dist/images/sc_redo.png') no-repeat center !important; }
+        .w2ui-icon.save{ background: url('/loleaflet/dist/images/sc_save.png') no-repeat center !important; }
+        .w2ui-icon.saveas{ background: url('/loleaflet/dist/images/sc_saveas.png') no-repeat center !important; }
+        .w2ui-icon.select{ background: url('/loleaflet/dist/images/sc_select.png') no-repeat center !important; }
+        .w2ui-icon.strikeout{ background: url('/loleaflet/dist/images/sc_strikeout.png') no-repeat center !important; }
+        .w2ui-icon.underline{ background: url('/loleaflet/dist/images/sc_underline.png') no-repeat center !important; }
+        .w2ui-icon.undo{ background: url('/loleaflet/dist/images/sc_undo.png') no-repeat center !important; }
+        .w2ui-icon.zoomin{ background: url('/loleaflet/dist/images/sc_zoomin.png') no-repeat center !important; }
+        .w2ui-icon.zoomout{ background: url('/loleaflet/dist/images/sc_zoomout.png') no-repeat center !important; }
+        .w2ui-icon.zoomreset{ background: url('/loleaflet/dist/images/sc_view100.png') no-repeat center !important; }
+        .w2ui-icon.more{ background: url('/loleaflet/dist/images/sc_next.png') no-repeat center !important; }
+
+	#simplemodal-container a.modalCloseImg {
+		background:url('/loleaflet/dist/images/sc_closedoc.png') no-repeat;
+		width:25px;
+		height:29px;
+		display:inline;
+		z-index:3200;
+		position:absolute;
+		top:0px;
+		right:-10px;
+		cursor:pointer;
+	}
+    </style>
+	<script>
+
+    function getParameterByName(name) {
+        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
+        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
+            results = regex.exec(location.search);
+        return results === null ? "" : results[1].replace(/\+/g, " ");
+    }
+
+    var filePath = getParameterByName('file_path');
+    var fileName = decodeURIComponent(filePath.substring(filePath.lastIndexOf('/')+1));
+    var host = getParameterByName('host');
+    var permission = getParameterByName('permission');
+    var timestamp = getParameterByName('timestamp');
+    if (filePath === '') {
+        vex.dialog.alert('Wrong file_path, usage: file_path=/path/to/doc/');
+    }
+    if (host === '') {
+        vex.dialog.alert('Wrong host, usage: host=ws://localhost:9980');
+    }
+    document.title = fileName;
+    var map = L.map('map', {
+            server: host,
+			doc: filePath,
+			permission: permission,
+			timestamp: timestamp,
+			documentContainer: 'document-container'
+	});
+
+    ////// Controls /////
+    map.addControl(L.control.scroll());
+    map.addControl(L.control.dialog());
+    map.addControl(L.control.partsPreview());
+    map.addControl(L.control.tabs());
+    map.addControl(L.control.columnHeader());
+    map.addControl(L.control.rowHeader());
+
+    </script>
+
+    <script src="/loleaflet/dist/toolbar/toolbar.js"></script>
+</body></html>
diff --git a/loleaflet/dist/toolbar/evol.colorpicker.min.css b/loleaflet/dist/toolbar/evol.colorpicker.min.css
new file mode 100644
index 0000000..322ac70
--- /dev/null
+++ b/loleaflet/dist/toolbar/evol.colorpicker.min.css
@@ -0,0 +1 @@
+.evo-pop{z-index:10000;width:204px;padding:3px 3px 0}.evo-pop-ie{z-index:10000;width:212px;padding:3px}.evo-palette td{font-size:1px;border:solid 1px #c0c0c0;padding:7px;cursor:pointer}.evo-palette tr.top>td{border-bottom:0}.evo-palette tr.in>td{border-top:0;border-bottom:0}.evo-palette tr.bottom>td{border-top:0}.evo-palette div.sep{height:3px}.evo-palette,.evo-palette-ie{border-collapse:separate;border-spacing:4px 0px;*border-collapse:expression('separate', cellSpacing='2px')}.evo-palette th,.evo-palette-ie th{border:0;padding:5px 3px;text-align:left;font-weight:normal;background:transparent !important}.evo-palette-ie td{font-size:1px;border:solid 1px #c0c0c0;padding:7px;cursor:pointer}.evo-palette2,.evo-palette2-ie{margin:auto;border-collapse:collapse}.evo-palette2 td,.evo-palette2-ie td{font-size:1px;cursor:pointer}.evo-palette2 td{padding:6px 7px}.evo-palette2-ie td{padding:5px}.evo-palcenter{padding:5px;text-align:center}.evo-colorind,.evo-colorind-ie,.evo-colorind-ff{border:so
 lid 1px #c3c3c3;width:18px;height:18px;float:right}.evo-colorind-ie{position:relative;top:-23px}.evo-colorbox-ie{font-size:8px;padding:3px 9px !important}.evo-pop:after,.evo-pop-ie:after,.evo-colorind:after,.evo-colorind-ie:after,.evo-colorind-ff:after,.evo-color span:after,.evo-cHist:after{content:".";display:block;height:0;clear:both;visibility:hidden;font-size:0}.evo-color{width:94px;padding:1px 3px 0 4px}.evo-color div{border:solid 1px #808080;border-right:solid 1px #c0c0c0;border-bottom:solid 1px #c0c0c0;padding:3px;margin-bottom:5px;width:10px;height:10px;float:left}.evo-color span{font-size:15px;margin:1px 0 4px 3px;float:left}.evo-sep{height:10px;font-size:0}.evo-more{padding:4px 5px 4px;font-size:smaller}.evo-cHist{padding:3px}.evo-cHist div{cursor:pointer;border:solid 1px #c0c0c0;padding:3px;margin:5px;width:10px;height:10px;float:left}.evo-transparent{background-image:repeating-linear-gradient(135deg, #000, #000 1px, #fff 1px, #fff 3px)}.evo-tr-box{cursor:pointer;border:s
 olid 1px #c0c0c0;padding:3px;width:7px;height:7px;float:right;position:relative;right:-3px;top:2px}a.evo-hist{margin-left:6px}.evo-pointer{cursor:pointer}.evo-hidden-button{display:none}
\ No newline at end of file
diff --git a/loleaflet/dist/toolbar/evol.colorpicker.min.js b/loleaflet/dist/toolbar/evol.colorpicker.min.js
new file mode 100644
index 0000000..4a80992
--- /dev/null
+++ b/loleaflet/dist/toolbar/evol.colorpicker.min.js
@@ -0,0 +1,6 @@
+/*
+   evol.colorpicker 3.2.3
+   (c) 2015 Olivier Giulieri
+   http://evoluteur.github.io/colorpicker/
+*/
+!function(a){var b=0,c=window.navigator.userAgent,d=c.indexOf("MSIE ")>0,e=d?"-ie":"",f=d?!1:/mozilla/.test(c.toLowerCase())&&!/webkit/.test(c.toLowerCase()),g=[],h=["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646"],i=["f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","92cddc","fac08f","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","31859b","e36c09","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","205867","974806"],j=["c00000","ff0000","ffc000","ffff00","92d050","00b050","00b0f0","0070c0","002060","7030a0"],k=[["003366","336699","3366cc","003399","000099","0000cc","000066"],["006666","006699","0099cc","0066cc","0033cc","0000ff","3333ff","333399"],["669999","009999","33cccc","00ccff","0099ff","006
 6ff","3366ff","3333cc","666699"],["339966","00cc99","00ffcc","00ffff","33ccff","3399ff","6699ff","6666ff","6600ff","6600cc"],["339933","00cc66","00ff99","66ffcc","66ffff","66ccff","99ccff","9999ff","9966ff","9933ff","9900ff"],["006600","00cc00","00ff00","66ff99","99ffcc","ccffff","ccccff","cc99ff","cc66ff","cc33ff","cc00ff","9900cc"],["003300","009933","33cc33","66ff66","99ff99","ccffcc","ffffff","ffccff","ff99ff","ff66ff","ff00ff","cc00cc","660066"],["333300","009900","66ff33","99ff66","ccff99","ffffcc","ffcccc","ff99cc","ff66cc","ff33cc","cc0099","993399"],["336600","669900","99ff33","ccff66","ffff99","ffcc99","ff9999","ff6699","ff3399","cc3399","990099"],["666633","99cc00","ccff33","ffff66","ffcc66","ff9966","ff6666","ff0066","d60094","993366"],["a58800","cccc00","ffff00","ffcc00","ff9933","ff6600","ff0033","cc0066","660033"],["996633","cc9900","ff9900","cc6600","ff3300","ff0000","cc0000","990033"],["663300","996600","cc3300","993300","990000","800000","993333"]],l="#0000ffff",m=
 function(a){var b=a.toString(16);return 1==b.length&&(b="0"+b),b},n=function(a){return m(Number(a))},o=function(a){var b=m(a);return b+b+b},p=function(a){if(a.length>10){var b=1+a.indexOf("("),c=a.indexOf(")"),d=a.substring(b,c).split(",");return["#",n(d[0]),n(d[1]),n(d[2])].join("")}return a};a.widget("evol.colorpicker",{version:"3.2.1",options:{color:null,showOn:"both",hideButton:!1,displayIndicator:!0,transparentColor:!1,history:!0,defaultPalette:"theme",strings:"Theme Colors,Standard Colors,Web Colors,Theme Colors,Back to Palette,History,No history yet."},_active:!1,_create:function(){var c=this;switch(this._paletteIdx="theme"==this.options.defaultPalette?1:2,this._id="evo-cp"+b++,this._enabled=!0,this.options.showOn=this.options.hideButton?"focus":this.options.showOn,this.element.get(0).tagName){case"INPUT":var g=this.options.color,h=this.element,i=("focus"===this.options.showOn?"":"evo-pointer ")+"evo-colorind"+(f?"-ff":e)+(this.options.hideButton?" evo-hidden-button":""),j=""
 ;this._isPopup=!0,this._palette=null;var k=h.val();null!==g?g!=k&&h.val(g).change():""!==k&&(g=this.options.color=k),g===l?i+=" evo-transparent":j=null!==g?"background-color:"+g:"",h.addClass("colorPicker "+this._id).wrap('<div style="width:'+(this.options.hideButton?this.element.width():this.element.width()+32)+"px;"+(d?"margin-bottom:-21px;":"")+(f?"padding:1px 0;":"")+'" class="evo-cp-wrap"></div>').after('<div class="'+i+'" style="'+j+'"></div>').on("keyup onpaste",function(){var b=a(this).val();b!=c.options.color&&c._setValue(b,!0)});var m=this.options.showOn;("both"===m||"focus"===m)&&h.on("focus",function(){c.showPalette()}),("both"===m||"button"===m)&&h.next().on("click",function(a){return a.stopPropagation(),c.showPalette(),!1});break;default:this._isPopup=!1,this._palette=this.element.html(this._paletteHTML()).attr("aria-haspopup","true"),this._bindColors()}if(this.options.history&&(g&&this._add2History(g),this.options.initialHistory)){var n=this.options.initialHistory;for
 (var o in n)this._add2History(n[o])}},_paletteHTML:function(){var a=this._paletteIdx=Math.abs(this._paletteIdx),b=this.options,c=b.strings.split(","),d='<div class="evo-pop'+e+' ui-widget ui-widget-content ui-corner-all"'+(this._isPopup?' style="position:absolute"':"")+"><span>"+this["_paletteHTML"+a]()+'</span><div class="evo-more"><a href="javascript:void(0)">'+c[1+a]+"</a>";return b.history&&(d+='<a href="javascript:void(0)" class="evo-hist">'+c[5]+"</a>"),d+="</div>",b.displayIndicator&&(d+=this._colorIndHTML(this.options.color)+this._colorIndHTML("")),d+="</div>"},_colorIndHTML:function(a){var b=d?"evo-colorbox-ie ":"",c="";return a?a===l?b+="evo-transparent":c="background-color:"+a:c="display:none",'<div class="evo-color" style="float:left"><div style="'+c+'" class="'+b+'"></div><span>'+(a?a:"")+"</span></div>"},_paletteHTML1:function(){for(var a=this.options,b=a.strings.split(","),c='<td style="background-color:#',f=d?'"><div style="width:2px;"></div></td>':'"><span/></td>',g
 ='<tr><th colspan="10" class="ui-widget-content">',k='<table class="evo-palette'+e+'">'+g+b[0]+"</th></tr><tr>",l=0;10>l;l++)k+=c+h[l]+f;for(k+="</tr>",d||(k+='<tr><th colspan="10"></th></tr>'),k+='<tr class="top">',l=0;10>l;l++)k+=c+i[l]+f;for(var m=1;4>m;m++)for(k+='</tr><tr class="in">',l=0;10>l;l++)k+=c+i[10*m+l]+f;for(k+='</tr><tr class="bottom">',l=40;50>l;l++)k+=c+i[l]+f;for(k+="</tr>"+g,a.transparentColor&&(k+='<div class="evo-transparent evo-tr-box"></div>'),k+=b[1]+"</th></tr><tr>",l=0;10>l;l++)k+=c+j[l]+f;return k+="</tr></table>"},_paletteHTML2:function(){for(var a,b,c='<td style="background-color:#',f=d?'"><div style="width:5px;"></div></td>':'"><span/></td>',g='<table class="evo-palette2'+e+'"><tr>',h="</tr></table>",i='<div class="evo-palcenter">',j=0,l=k.length;l>j;j++){i+=g;var m=k[j];for(a=0,b=m.length;b>a;a++)i+=c+m[a]+f;i+=h}i+='<div class="evo-sep"/>';var n="";for(i+=g,a=255;a>10;a-=10)i+=c+o(a)+f,a-=10,n+=c+o(a)+f;return i+=h+g+n+h+"</div>"},_switchPalette:func
 tion(b){if(this._enabled){var c,d,e,f=this.options.strings.split(",");if(a(b).hasClass("evo-hist")){var h=['<table class="evo-palette"><tr><th class="ui-widget-content">',f[5],"</th></tr></tr></table>",'<div class="evo-cHist">'];if(0===g.length)h.push("<p> ",f[6],"</p>");else for(var i=g.length-1;i>-1;i--)9===g[i].length?h.push('<div class="evo-transparent"></div>'):h.push('<div style="background-color:',g[i],'"></div>');h.push("</div>"),c=-this._paletteIdx,d=h.join(""),e=f[4]}else this._paletteIdx<0?(c=-this._paletteIdx,this._palette.find(".evo-hist").show()):c=2==this._paletteIdx?1:2,d=this["_paletteHTML"+c](),e=f[c+1],this._paletteIdx=c;this._paletteIdx=c;var j=this._palette.find(".evo-more").prev().html(d).end().children().eq(0).html(e);0>c&&j.next().hide()}},_downOrUpPositioning:function(){for(var a=this.element,b=0;null!==a&&100>b;){if("visible"!=a.css("overflow")){var c=this._palette.offset().top+this._palette.height(),d=a.offset().top+a.height(),e=this._palette.offset()
 .top-this._palette.height()-this.element.outerHeight(),f=a.offset().top,g=c>d&&e>f;this._palette.css(g?{bottom:this.element.outerHeight()+"px"}:{bottom:"auto"});break}if("HTML"==a[0].tagName)break;a=a.offsetParent(),b++}},showPalette:function(){if(this._enabled&&(this._active=!0,a(".colorPicker").not("."+this._id).colorpicker("hidePalette"),null===this._palette)){this._palette=this.element.next().after(this._paletteHTML()).next().on("click",function(a){return a.stopPropagation(),!1}),this._bindColors();var b=this;this._isPopup&&(this._downOrUpPositioning(),a(document.body).on("click."+b._id,function(a){a.target!=b.element.get(0)&&b.hidePalette()}).on("keyup."+b._id,function(a){27===a.keyCode&&b.hidePalette()}))}return this},hidePalette:function(){if(this._isPopup&&this._palette){a(document.body).off("click."+this._id);var b=this;this._palette.off("mouseover click","td,.evo-transparent").fadeOut(function(){b._palette.remove(),b._palette=b._cTxt=null}).find(".evo-more a").off("click")
 }return this},_bindColors:function(){var b=this,c=this.options,d=this._palette.find("div.evo-color"),e=c.history?"td,.evo-cHist>div":"td";c.transparentColor&&(e+=",.evo-transparent"),this._cTxt1=d.eq(0).children().eq(0),this._cTxt2=d.eq(1).children().eq(0),this._palette.on("click",e,function(){if(b._enabled){var c=a(this);b._setValue(c.hasClass("evo-transparent")?l:p(c.attr("style").substring(17))),b._active=!1}}).on("mouseover",e,function(){if(b._enabled){var c=a(this),d=c.hasClass("evo-transparent")?l:p(c.attr("style").substring(17));b.options.displayIndicator&&b._setColorInd(d,2),b._active&&b.element.trigger("mouseover.color",d)}}).find(".evo-more a").on("click",function(){b._switchPalette(this)})},val:function(a){return"undefined"==typeof a?this.options.color:(this._setValue(a),this)},_setValue:function(a,b){a=a.replace(/ /g,""),this.options.color=a,this._isPopup?(b||this.hidePalette(),this._setBoxColor(this.element.val(a).change().next(),a)):this._setColorInd(a,1),this.options.
 history&&this._paletteIdx>0&&this._add2History(a),this.element.trigger("change.color",a)},_setColorInd:function(a,b){var c=this["_cTxt"+b];this._setBoxColor(c,a),c.next().html(a)},_setBoxColor:function(a,b){b===l?a.addClass("evo-transparent").removeAttr("style"):a.removeClass("evo-transparent").attr("style","background-color:"+b)},_setOption:function(a,b){"color"==a?this._setValue(b,!0):this.options[a]=b},_add2History:function(a){for(var b=g.length,c=0;b>c;c++)if(a==g[c])return;b>27&&g.shift(),g.push(a)},clear:function(){this.hidePalette().val("")},enable:function(){var a=this.element;return this._isPopup?a.removeAttr("disabled"):a.css({opacity:"1","pointer-events":"auto"}),"focus"!==this.options.showOn&&this.element.next().addClass("evo-pointer"),a.removeAttr("aria-disabled"),this._enabled=!0,this},disable:function(){var a=this.element;return this._isPopup?a.attr("disabled","disabled"):(this.hidePalette(),a.css({opacity:"0.3","pointer-events":"none"})),"focus"!==this.options.showOn
 &&this.element.next().removeClass("evo-pointer"),a.attr("aria-disabled","true"),this._enabled=!1,this},isDisabled:function(){return!this._enabled},destroy:function(){a(document.body).off("click."+this._id),this._palette&&(this._palette.off("mouseover click","td,.evo-cHist>div,.evo-transparent").find(".evo-more a").off("click"),this._isPopup&&this._palette.remove(),this._palette=this._cTxt=null),this._isPopup&&this.element.next().off("click").remove().end().off("focus").unwrap(),this.element.removeClass("colorPicker "+this.id).empty(),a.Widget.prototype.destroy.call(this)}})}(jQuery);
\ No newline at end of file
diff --git a/loleaflet/dist/toolbar/jquery.simplemodal.1.4.4.min.js b/loleaflet/dist/toolbar/jquery.simplemodal.1.4.4.min.js
new file mode 100644
index 0000000..382c736
--- /dev/null
+++ b/loleaflet/dist/toolbar/jquery.simplemodal.1.4.4.min.js
@@ -0,0 +1,26 @@
+/*
+ * SimpleModal 1.4.4 - jQuery Plugin
+ * http://simplemodal.com/
+ * Copyright (c) 2013 Eric Martin
+ * Licensed under MIT and GPL
+ * Date: Sun, Jan 20 2013 15:58:56 -0800
+ */
+(function(b){"function"===typeof define&&define.amd?define(["jquery"],b):b(jQuery)})(function(b){var j=[],n=b(document),k=navigator.userAgent.toLowerCase(),l=b(window),g=[],o=null,p=/msie/.test(k)&&!/opera/.test(k),q=/opera/.test(k),m,r;m=p&&/msie 6./.test(k)&&"object"!==typeof window.XMLHttpRequest;r=p&&/msie 7.0/.test(k);b.modal=function(a,h){return b.modal.impl.init(a,h)};b.modal.close=function(){b.modal.impl.close()};b.modal.focus=function(a){b.modal.impl.focus(a)};b.modal.setContainerDimensions=
+function(){b.modal.impl.setContainerDimensions()};b.modal.setPosition=function(){b.modal.impl.setPosition()};b.modal.update=function(a,h){b.modal.impl.update(a,h)};b.fn.modal=function(a){return b.modal.impl.init(this,a)};b.modal.defaults={appendTo:"body",focus:!0,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:!1,autoPosition:!0,zIndex:1E3,
+close:!0,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:"simplemodal-close",escClose:!0,overlayClose:!1,fixed:!0,position:null,persist:!1,modal:!0,onOpen:null,onShow:null,onClose:null};b.modal.impl={d:{},init:function(a,h){if(this.d.data)return!1;o=p&&!b.support.boxModel;this.o=b.extend({},b.modal.defaults,h);this.zIndex=this.o.zIndex;this.occb=!1;if("object"===typeof a){if(a=a instanceof b?a:b(a),this.d.placeholder=!1,0<a.parent().parent().size()&&(a.before(b("<span></span>").attr("id",
+"simplemodal-placeholder").css({display:"none"})),this.d.placeholder=!0,this.display=a.css("display"),!this.o.persist))this.d.orig=a.clone(!0)}else if("string"===typeof a||"number"===typeof a)a=b("<div></div>").html(a);else return alert("SimpleModal Error: Unsupported data type: "+typeof a),this;this.create(a);this.open();b.isFunction(this.o.onShow)&&this.o.onShow.apply(this,[this.d]);return this},create:function(a){this.getDimensions();if(this.o.modal&&m)this.d.iframe=b('<iframe src="javascript:false;"></iframe>').css(b.extend(this.o.iframeCss,
+{display:"none",opacity:0,position:"fixed",height:g[0],width:g[1],zIndex:this.o.zIndex,top:0,left:0})).appendTo(this.o.appendTo);this.d.overlay=b("<div></div>").attr("id",this.o.overlayId).addClass("simplemodal-overlay").css(b.extend(this.o.overlayCss,{display:"none",opacity:this.o.opacity/100,height:this.o.modal?j[0]:0,width:this.o.modal?j[1]:0,position:"fixed",left:0,top:0,zIndex:this.o.zIndex+1})).appendTo(this.o.appendTo);this.d.container=b("<div></div>").attr("id",this.o.containerId).addClass("simplemodal-container").css(b.extend({position:this.o.fixed?
+"fixed":"absolute"},this.o.containerCss,{display:"none",zIndex:this.o.zIndex+2})).append(this.o.close&&this.o.closeHTML?b(this.o.closeHTML).addClass(this.o.closeClass):"").appendTo(this.o.appendTo);this.d.wrap=b("<div></div>").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(this.d.container);this.d.data=a.attr("id",a.attr("id")||this.o.dataId).addClass("simplemodal-data").css(b.extend(this.o.dataCss,{display:"none"})).appendTo("body");this.setContainerDimensions();
+this.d.data.appendTo(this.d.wrap);(m||o)&&this.fixIE()},bindEvents:function(){var a=this;b("."+a.o.closeClass).bind("click.simplemodal",function(b){b.preventDefault();a.close()});a.o.modal&&a.o.close&&a.o.overlayClose&&a.d.overlay.bind("click.simplemodal",function(b){b.preventDefault();a.close()});n.bind("keydown.simplemodal",function(b){a.o.modal&&9===b.keyCode?a.watchTab(b):a.o.close&&a.o.escClose&&27===b.keyCode&&(b.preventDefault(),a.close())});l.bind("resize.simplemodal orientationchange.simplemodal",
+function(){a.getDimensions();a.o.autoResize?a.setContainerDimensions():a.o.autoPosition&&a.setPosition();m||o?a.fixIE():a.o.modal&&(a.d.iframe&&a.d.iframe.css({height:g[0],width:g[1]}),a.d.overlay.css({height:j[0],width:j[1]}))})},unbindEvents:function(){b("."+this.o.closeClass).unbind("click.simplemodal");n.unbind("keydown.simplemodal");l.unbind(".simplemodal");this.d.overlay.unbind("click.simplemodal")},fixIE:function(){var a=this.o.position;b.each([this.d.iframe||null,!this.o.modal?null:this.d.overlay,
+"fixed"===this.d.container.css("position")?this.d.container:null],function(b,e){if(e){var f=e[0].style;f.position="absolute";if(2>b)f.removeExpression("height"),f.removeExpression("width"),f.setExpression("height",'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"'),f.setExpression("width",'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"');else{var c,d;a&&a.constructor===
+Array?(c=a[0]?"number"===typeof a[0]?a[0].toString():a[0].replace(/px/,""):e.css("top").replace(/px/,""),c=-1===c.indexOf("%")?c+' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"':parseInt(c.replace(/%/,""))+' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',a[1]&&(d="number"===typeof a[1]?
+a[1].toString():a[1].replace(/px/,""),d=-1===d.indexOf("%")?d+' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"':parseInt(d.replace(/%/,""))+' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"')):(c='(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',
+d='(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"');f.removeExpression("top");f.removeExpression("left");f.setExpression("top",c);f.setExpression("left",d)}}})},focus:function(a){var h=this,a=a&&-1!==b.inArray(a,["first","last"])?a:"first",e=b(":input:enabled:visible:"+a,h.d.wrap);setTimeout(function(){0<e.length?e.focus():h.d.wrap.focus()},
+10)},getDimensions:function(){var a="undefined"===typeof window.innerHeight?l.height():window.innerHeight;j=[n.height(),n.width()];g=[a,l.width()]},getVal:function(a,b){return a?"number"===typeof a?a:"auto"===a?0:0<a.indexOf("%")?parseInt(a.replace(/%/,""))/100*("h"===b?g[0]:g[1]):parseInt(a.replace(/px/,"")):null},update:function(a,b){if(!this.d.data)return!1;this.d.origHeight=this.getVal(a,"h");this.d.origWidth=this.getVal(b,"w");this.d.data.hide();a&&this.d.container.css("height",a);b&&this.d.container.css("width",
+b);this.setContainerDimensions();this.d.data.show();this.o.focus&&this.focus();this.unbindEvents();this.bindEvents()},setContainerDimensions:function(){var a=m||r,b=this.d.origHeight?this.d.origHeight:q?this.d.container.height():this.getVal(a?this.d.container[0].currentStyle.height:this.d.container.css("height"),"h"),a=this.d.origWidth?this.d.origWidth:q?this.d.container.width():this.getVal(a?this.d.container[0].currentStyle.width:this.d.container.css("width"),"w"),e=this.d.data.outerHeight(!0),f=
+this.d.data.outerWidth(!0);this.d.origHeight=this.d.origHeight||b;this.d.origWidth=this.d.origWidth||a;var c=this.o.maxHeight?this.getVal(this.o.maxHeight,"h"):null,d=this.o.maxWidth?this.getVal(this.o.maxWidth,"w"):null,c=c&&c<g[0]?c:g[0],d=d&&d<g[1]?d:g[1],i=this.o.minHeight?this.getVal(this.o.minHeight,"h"):"auto",b=b?this.o.autoResize&&b>c?c:b<i?i:b:e?e>c?c:this.o.minHeight&&"auto"!==i&&e<i?i:e:i,c=this.o.minWidth?this.getVal(this.o.minWidth,"w"):"auto",a=a?this.o.autoResize&&a>d?d:a<c?c:a:f?
+f>d?d:this.o.minWidth&&"auto"!==c&&f<c?c:f:c;this.d.container.css({height:b,width:a});this.d.wrap.css({overflow:e>b||f>a?"auto":"visible"});this.o.autoPosition&&this.setPosition()},setPosition:function(){var a,b;a=g[0]/2-this.d.container.outerHeight(!0)/2;b=g[1]/2-this.d.container.outerWidth(!0)/2;var e="fixed"!==this.d.container.css("position")?l.scrollTop():0;this.o.position&&"[object Array]"===Object.prototype.toString.call(this.o.position)?(a=e+(this.o.position[0]||a),b=this.o.position[1]||b):
+a=e+a;this.d.container.css({left:b,top:a})},watchTab:function(a){if(0<b(a.target).parents(".simplemodal-container").length){if(this.inputs=b(":input:enabled:visible:first, :input:enabled:visible:last",this.d.data[0]),!a.shiftKey&&a.target===this.inputs[this.inputs.length-1]||a.shiftKey&&a.target===this.inputs[0]||0===this.inputs.length)a.preventDefault(),this.focus(a.shiftKey?"last":"first")}else a.preventDefault(),this.focus()},open:function(){this.d.iframe&&this.d.iframe.show();b.isFunction(this.o.onOpen)?
+this.o.onOpen.apply(this,[this.d]):(this.d.overlay.show(),this.d.container.show(),this.d.data.show());this.o.focus&&this.focus();this.bindEvents()},close:function(){if(!this.d.data)return!1;this.unbindEvents();if(b.isFunction(this.o.onClose)&&!this.occb)this.occb=!0,this.o.onClose.apply(this,[this.d]);else{if(this.d.placeholder){var a=b("#simplemodal-placeholder");this.o.persist?a.replaceWith(this.d.data.removeClass("simplemodal-data").css("display",this.display)):(this.d.data.hide().remove(),a.replaceWith(this.d.orig))}else this.d.data.hide().remove();
+this.d.container.hide().remove();this.d.overlay.hide();this.d.iframe&&this.d.iframe.hide().remove();this.d.overlay.remove();this.d={}}}}});
diff --git a/loleaflet/dist/toolbar/select2.min.css b/loleaflet/dist/toolbar/select2.min.css
new file mode 100644
index 0000000..1c72344
--- /dev/null
+++ b/loleaflet/dist/toolbar/select2.min.css
@@ -0,0 +1 @@
+.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px;}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap;}.select2-container .select2-search--inline{float:left;}.select2-container .select2-search--inl
 ine .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;}.select2-results{display:block;}.select2-results__options{list-style:none;margin:0;padding:0;}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none;}.select2-results__option[aria-selected]{cursor:pointer;}.select2-container--open .select2-dropdown{left:0;}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-search--dropdown{display:block;padding:4px;}.select2-search--dropdown .sel
 ect2-search__field{padding:4px;width:100%;box-sizing:border-box;}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-search--dropdown.select2-search--hide{display:none;}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0);}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px;}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;}.select2-container--default .select2-selection--single .select2-s
 election__placeholder{color:#999;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto;}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none;}.select2-container--default.select2-container--open .select2-selection--single .select2-sele
 ction__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%;}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left;}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:
 #999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder{float:right;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0;}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{displ
 ay:none;}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0;}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa;}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--default .select2-results__option[role=group]{padding:0;}.select2-container--default .select2-results__option[ari
 a-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results
 __option{margin-left:-4em;padding-left:5em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white;}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic .select2-selection--single{background-color:#f6f6f6;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:-o-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container
 --classic .select2-selection--single:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px;}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee'
 , endColorstr='#cccccc', GradientType=0);}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto;}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{bor
 der-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:-o-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%);backgro
 und-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none;}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-co
 ntainer--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--classic .select2-search--dropdown .sel
 ect2-search__field{border:1px solid #aaa;outline:0;}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;}.select2-container--classic .select2-dropdown{background-color:white;border:1px solid transparent;}.select2-container--classic .select2-dropdown--above{border-bottom:none;}.select2-container--classic .select2-dropdown--below{border-top:none;}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--classic .select2-results__option[role=group]{padding:0;}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey;}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:white;}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb;}
\ No newline at end of file
diff --git a/loleaflet/dist/toolbar/select2.min.js b/loleaflet/dist/toolbar/select2.min.js
new file mode 100644
index 0000000..49a988c
--- /dev/null
+++ b/loleaflet/dist/toolbar/select2.min.js
@@ -0,0 +1,2 @@

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list