diff --git a/Docs/alariantest.html b/Docs/alariantest.html
new file mode 100644
index 00000000..13471ab9
--- /dev/null
+++ b/Docs/alariantest.html
@@ -0,0 +1,248 @@
+
+
+
+
+ Alarian
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Docs/imageMapResizer.js b/Docs/imageMapResizer.js
new file mode 100644
index 00000000..1c02bef8
--- /dev/null
+++ b/Docs/imageMapResizer.js
@@ -0,0 +1,163 @@
+/*! Image Map Resizer
+ * Desc: Resize HTML imageMap to scaled image.
+ * Copyright: (c) 2014-15 David J. Bradshaw - dave@bradshaw.net
+ * License: MIT
+ */
+
+;(function() {
+ 'use strict'
+
+ function scaleImageMap() {
+ function resizeMap() {
+ function resizeAreaTag(cachedAreaCoords, idx) {
+ function scale(coord) {
+ var dimension = 1 === (isWidth = 1 - isWidth) ? 'width' : 'height'
+ return (
+ padding[dimension] +
+ Math.floor(Number(coord) * scalingFactor[dimension])
+ )
+ }
+
+ var isWidth = 0
+ areas[idx].coords = cachedAreaCoords
+ .split(',')
+ .map(scale)
+ .join(',')
+ }
+
+ var scalingFactor = {
+ width: image.width / image.naturalWidth,
+ height: image.height / image.naturalHeight,
+ }
+
+ var padding = {
+ width: parseInt(
+ window.getComputedStyle(image, null).getPropertyValue('padding-left'),
+ 10
+ ),
+ height: parseInt(
+ window.getComputedStyle(image, null).getPropertyValue('padding-top'),
+ 10
+ ),
+ }
+
+ cachedAreaCoordsArray.forEach(resizeAreaTag)
+ }
+
+ function getCoords(e) {
+ //Normalize coord-string to csv format without any space chars
+ return e.coords.replace(/ *, */g, ',').replace(/ +/g, ',')
+ }
+
+ function debounce() {
+ clearTimeout(timer)
+ timer = setTimeout(resizeMap, 250)
+ }
+
+ function start() {
+ if (
+ image.width !== image.naturalWidth ||
+ image.height !== image.naturalHeight
+ ) {
+ resizeMap()
+ }
+ }
+
+ function addEventListeners() {
+ image.addEventListener('load', resizeMap, false) //Detect late image loads in IE11
+ window.addEventListener('focus', resizeMap, false) //Cope with window being resized whilst on another tab
+ window.addEventListener('resize', debounce, false)
+ window.addEventListener('readystatechange', resizeMap, false)
+ document.addEventListener('fullscreenchange', resizeMap, false)
+ }
+
+ function beenHere() {
+ return 'function' === typeof map._resize
+ }
+
+ function getImg(name) {
+ return document.querySelector('img[usemap="' + name + '"]')
+ }
+
+ function setup() {
+ areas = map.getElementsByTagName('area')
+ cachedAreaCoordsArray = Array.prototype.map.call(areas, getCoords)
+ image = getImg('#' + map.name) || getImg(map.name)
+ map._resize = resizeMap //Bind resize method to HTML map element
+ }
+
+ var /*jshint validthis:true */
+ map = this,
+ areas = null,
+ cachedAreaCoordsArray = null,
+ image = null,
+ timer = null
+
+ if (!beenHere()) {
+ setup()
+ addEventListeners()
+ start()
+ } else {
+ map._resize() //Already setup, so just resize map
+ }
+ }
+
+ function factory() {
+ function chkMap(element) {
+ if (!element.tagName) {
+ throw new TypeError('Object is not a valid DOM element')
+ } else if ('MAP' !== element.tagName.toUpperCase()) {
+ throw new TypeError(
+ 'Expected