oops, this is needed for the status messages
authorIvan Kohler <ivan@freeside.biz>
Fri, 11 Nov 2016 23:19:19 +0000 (15:19 -0800)
committerIvan Kohler <ivan@freeside.biz>
Fri, 11 Nov 2016 23:19:19 +0000 (15:19 -0800)
httemplate/docs/credits.html
httemplate/docs/license.html
httemplate/elements/js.cookie.js [new file with mode: 0644]

index 596c627..8bae26d 100644 (file)
@@ -87,6 +87,7 @@ Gary Jones<BR>
 Fernando M. Kiernan<BR>
 Frederico Caldeira Knabben<BR>
 Greg Kuhnert<BR>
 Fernando M. Kiernan<BR>
 Frederico Caldeira Knabben<BR>
 Greg Kuhnert<BR>
+Steven Levithan<BR>
 Randall Lucas<BR>
 Foteos Macrides<BR>
 Roger Mangraviti<BR>
 Randall Lucas<BR>
 Foteos Macrides<BR>
 Roger Mangraviti<BR>
@@ -95,6 +96,7 @@ Mack Nagashima<BR>
 David Peters<BR>
 Matt Peterson<BR>
 Luke Pfeifer<BR>
 David Peters<BR>
 Matt Peterson<BR>
 Luke Pfeifer<BR>
+Alan Phipps<BR>
 Ricardo Signes<BR>
 Steve Simitzis<BR>
 Stanislav Sinyagin<BR>
 Ricardo Signes<BR>
 Steve Simitzis<BR>
 Stanislav Sinyagin<BR>
index 0f0a3c6..4d2f7a6 100644 (file)
@@ -138,6 +138,10 @@ of the MIT license.
 Contains the Google Maps Longitude and Latitude Picker, by Richard Dancsi,
 licensed under the terms of the MIT license.
 
 Contains the Google Maps Longitude and Latitude Picker, by Richard Dancsi,
 licensed under the terms of the MIT license.
 
+<P>
+Contains js-cookie by Klaus Hartl, Fagner Brack and contributors, licensed
+under the terms of the MIT license.
+
 <!-- artwork -->
 
 <P>
 <!-- artwork -->
 
 <P>
diff --git a/httemplate/elements/js.cookie.js b/httemplate/elements/js.cookie.js
new file mode 100644 (file)
index 0000000..12fa0ee
--- /dev/null
@@ -0,0 +1,156 @@
+/*!
+ * JavaScript Cookie v2.1.3
+ * https://github.com/js-cookie/js-cookie
+ *
+ * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
+ * Released under the MIT license
+ */
+;(function (factory) {
+       var registeredInModuleLoader = false;
+       if (typeof define === 'function' && define.amd) {
+               define(factory);
+               registeredInModuleLoader = true;
+       }
+       if (typeof exports === 'object') {
+               module.exports = factory();
+               registeredInModuleLoader = true;
+       }
+       if (!registeredInModuleLoader) {
+               var OldCookies = window.Cookies;
+               var api = window.Cookies = factory();
+               api.noConflict = function () {
+                       window.Cookies = OldCookies;
+                       return api;
+               };
+       }
+}(function () {
+       function extend () {
+               var i = 0;
+               var result = {};
+               for (; i < arguments.length; i++) {
+                       var attributes = arguments[ i ];
+                       for (var key in attributes) {
+                               result[key] = attributes[key];
+                       }
+               }
+               return result;
+       }
+
+       function init (converter) {
+               function api (key, value, attributes) {
+                       var result;
+                       if (typeof document === 'undefined') {
+                               return;
+                       }
+
+                       // Write
+
+                       if (arguments.length > 1) {
+                               attributes = extend({
+                                       path: '/'
+                               }, api.defaults, attributes);
+
+                               if (typeof attributes.expires === 'number') {
+                                       var expires = new Date();
+                                       expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
+                                       attributes.expires = expires;
+                               }
+
+                               try {
+                                       result = JSON.stringify(value);
+                                       if (/^[\{\[]/.test(result)) {
+                                               value = result;
+                                       }
+                               } catch (e) {}
+
+                               if (!converter.write) {
+                                       value = encodeURIComponent(String(value))
+                                               .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
+                               } else {
+                                       value = converter.write(value, key);
+                               }
+
+                               key = encodeURIComponent(String(key));
+                               key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
+                               key = key.replace(/[\(\)]/g, escape);
+
+                               return (document.cookie = [
+                                       key, '=', value,
+                                       attributes.expires ? '; expires=' + attributes.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+                                       attributes.path ? '; path=' + attributes.path : '',
+                                       attributes.domain ? '; domain=' + attributes.domain : '',
+                                       attributes.secure ? '; secure' : ''
+                               ].join(''));
+                       }
+
+                       // Read
+
+                       if (!key) {
+                               result = {};
+                       }
+
+                       // To prevent the for loop in the first place assign an empty array
+                       // in case there are no cookies at all. Also prevents odd result when
+                       // calling "get()"
+                       var cookies = document.cookie ? document.cookie.split('; ') : [];
+                       var rdecode = /(%[0-9A-Z]{2})+/g;
+                       var i = 0;
+
+                       for (; i < cookies.length; i++) {
+                               var parts = cookies[i].split('=');
+                               var cookie = parts.slice(1).join('=');
+
+                               if (cookie.charAt(0) === '"') {
+                                       cookie = cookie.slice(1, -1);
+                               }
+
+                               try {
+                                       var name = parts[0].replace(rdecode, decodeURIComponent);
+                                       cookie = converter.read ?
+                                               converter.read(cookie, name) : converter(cookie, name) ||
+                                               cookie.replace(rdecode, decodeURIComponent);
+
+                                       if (this.json) {
+                                               try {
+                                                       cookie = JSON.parse(cookie);
+                                               } catch (e) {}
+                                       }
+
+                                       if (key === name) {
+                                               result = cookie;
+                                               break;
+                                       }
+
+                                       if (!key) {
+                                               result[name] = cookie;
+                                       }
+                               } catch (e) {}
+                       }
+
+                       return result;
+               }
+
+               api.set = api;
+               api.get = function (key) {
+                       return api.call(api, key);
+               };
+               api.getJSON = function () {
+                       return api.apply({
+                               json: true
+                       }, [].slice.call(arguments));
+               };
+               api.defaults = {};
+
+               api.remove = function (key, attributes) {
+                       api(key, '', extend(attributes, {
+                               expires: -1
+                       }));
+               };
+
+               api.withConverter = init;
+
+               return api;
+       }
+
+       return init(function () {});
+}));