You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spot.apache.org by ce...@apache.org on 2017/01/18 00:49:35 UTC

[5/8] incubator-spot git commit: Incorporating new HTML and picture files to Spot website

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/js/classie.js
----------------------------------------------------------------------
diff --git a/doc/js/classie.js b/doc/js/classie.js
new file mode 100755
index 0000000..f6322ed
--- /dev/null
+++ b/doc/js/classie.js
@@ -0,0 +1,70 @@
+/*!
+ * classie - class helper functions
+ * from bonzo https://github.com/ded/bonzo
+ * 
+ * classie.has( elem, 'my-class' ) -> true/false
+ * classie.add( elem, 'my-new-class' )
+ * classie.remove( elem, 'my-unwanted-class' )
+ * classie.toggle( elem, 'my-class' )
+ */
+
+/*jshint browser: true, strict: true, undef: true */
+
+( function( window ) {
+
+'use strict';
+
+// class helper functions from bonzo https://github.com/ded/bonzo
+
+function classReg( className ) {
+  return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
+}
+
+// classList support for class management
+// altho to be fair, the api sucks because it won't accept multiple classes at once
+var hasClass, addClass, removeClass;
+
+if ( 'classList' in document.documentElement ) {
+  hasClass = function( elem, c ) {
+    return elem.classList.contains( c );
+  };
+  addClass = function( elem, c ) {
+    elem.classList.add( c );
+  };
+  removeClass = function( elem, c ) {
+    elem.classList.remove( c );
+  };
+}
+else {
+  hasClass = function( elem, c ) {
+    return classReg( c ).test( elem.className );
+  };
+  addClass = function( elem, c ) {
+    if ( !hasClass( elem, c ) ) {
+      elem.className = elem.className + ' ' + c;
+    }
+  };
+  removeClass = function( elem, c ) {
+    elem.className = elem.className.replace( classReg( c ), ' ' );
+  };
+}
+
+function toggleClass( elem, c ) {
+  var fn = hasClass( elem, c ) ? removeClass : addClass;
+  fn( elem, c );
+}
+
+window.classie = {
+  // full names
+  hasClass: hasClass,
+  addClass: addClass,
+  removeClass: removeClass,
+  toggleClass: toggleClass,
+  // short names
+  has: hasClass,
+  add: addClass,
+  remove: removeClass,
+  toggle: toggleClass
+};
+
+})( window );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/js/jquery-migrate.min.js
----------------------------------------------------------------------
diff --git a/doc/js/jquery-migrate.min.js b/doc/js/jquery-migrate.min.js
new file mode 100755
index 0000000..2e84fcb
--- /dev/null
+++ b/doc/js/jquery-migrate.min.js
@@ -0,0 +1,2 @@
+/*! jQuery Migrate v1.4.1 | (c) jQuery Foundation and other contributors | jquery.org/license */
+"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.1";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.a
 ttrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.cal
 l(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.find,s=a.parseJSON,t=/^\s*</,u=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,v=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,w=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=w.exec(a.trim(b)))&&g[0]&&(t.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string 
 (XSS)")),e&&e.context&&e.context.nodeType&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):(h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&u.test(a))try{document.querySelector(a)}catch(c){a=a.replace(v,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),d("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){d("Attribute selector with '#' was not fixed: "+b[0])}}return r.apply(this,b)};var x;for(x in r)Object.prototype.hasOwnProperty.call(r,x)&&(a.find[x]=r[x]);a.parseJSON=function(a){return a?s.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([
 \w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size
 () is deprecated; use the .length property"),this.length};var y=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return y=!0,a=d.apply(this,arguments),y=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};y||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var z=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?z.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var A=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||A.t
 est(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var B=a.event.add,C=a.event.remove,D=a.event.trigger,E=a.fn.toggle,F=a.fn.live,G=a.fn.die,H=a.fn.load,I="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",J=new RegExp("\\b(?:"+I+")\\b"),K=/(?:^|\s)hover(\.\S+|)\b/,L=function(b){return"string"!=typeof b||a.event.special.hover?b:(K.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(K,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,
 b,c,e,f){a!==document&&J.test(b)&&d("AJAX events should be attached to document: "+b),B.call(this,a,L(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){C.call(this,a,L(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?H.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return E.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),F?F.apply(this,arguments):(a
 (this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),G?G.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||J.test(a)||d("Global events are undocumented and deprecated"),D.call(this,a,b,c||document,e)},a.each(I.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var M=a.fn.andSelf||a.fn.addBack,N=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),M.apply(this,arguments)},a.fn.find=function(a){var b=N.apply(this,arguments);return b.context=this
 .context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var O=a.Deferred,P=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=O(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(P,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/js/jquery.meanmenu.js
----------------------------------------------------------------------
diff --git a/doc/js/jquery.meanmenu.js b/doc/js/jquery.meanmenu.js
new file mode 100755
index 0000000..873d459
--- /dev/null
+++ b/doc/js/jquery.meanmenu.js
@@ -0,0 +1,285 @@
+/*!
+* jQuery meanMenu v2.0.8
+* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)
+*
+*/
+/*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
+* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
+* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
+* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT
+* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
+* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://gnu.org/licenses/>.
+*
+* Find more information at http://www.meanthemes.com/plugins/meanmenu/
+*
+*/
+(function ($) {
+	"use strict";
+		$.fn.meanmenu = function (options) {
+				var defaults = {
+						meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
+						meanMenuContainer: '#mobile-nav', // Choose where meanmenu will be placed within the HTML
+						meanMenuClose: "X", // single character you want to represent the close menu button
+						meanMenuCloseSize: "18px", // set font size of close button
+						meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed
+						meanRevealPosition: "right", // left right or center positions
+						meanRevealPositionDistance: "0", // Tweak the position of the menu
+						meanRevealColour: "", // override CSS colours for the reveal background
+						meanScreenWidth: "1030", // set the screen width you want meanmenu to kick in at
+						meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
+						meanShowChildren: true, // true to show children in the menu, false to hide them
+						meanExpandableChildren: true, // true to allow expand/collapse children
+						meanExpand: "+", // single character you want to represent the expand for ULs
+						meanContract: "-", // single character you want to represent the contract for ULs
+						meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
+						onePage: false, // set to true for one page sites
+						meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell
+						removeElements: "" // set to hide page elements
+				};
+				options = $.extend(defaults, options);
+
+				// get browser width
+				var currentWidth = window.innerWidth || document.documentElement.clientWidth;
+
+				return this.each(function () {
+						var meanMenu = options.meanMenuTarget;
+						var meanContainer = options.meanMenuContainer;
+						var meanMenuClose = options.meanMenuClose;
+						var meanMenuCloseSize = options.meanMenuCloseSize;
+						var meanMenuOpen = options.meanMenuOpen;
+						var meanRevealPosition = options.meanRevealPosition;
+						var meanRevealPositionDistance = options.meanRevealPositionDistance;
+						var meanRevealColour = options.meanRevealColour;
+						var meanScreenWidth = options.meanScreenWidth;
+						var meanNavPush = options.meanNavPush;
+						var meanRevealClass = ".meanmenu-reveal";
+						var meanShowChildren = options.meanShowChildren;
+						var meanExpandableChildren = options.meanExpandableChildren;
+						var meanExpand = options.meanExpand;
+						var meanContract = options.meanContract;
+						var meanRemoveAttrs = options.meanRemoveAttrs;
+						var onePage = options.onePage;
+						var meanDisplay = options.meanDisplay;
+						var removeElements = options.removeElements;
+
+						//detect known mobile/tablet usage
+						var isMobile = false;
+						if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {
+								isMobile = true;
+						}
+
+						if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
+							// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
+								jQuery('html').css("overflow-y" , "scroll");
+						}
+
+						var meanRevealPos = "";
+						var meanCentered = function() {
+							if (meanRevealPosition === "center") {
+								var newWidth = window.innerWidth || document.documentElement.clientWidth;
+								var meanCenter = ( (newWidth/2)-22 )+"px";
+								meanRevealPos = "left:" + meanCenter + ";right:auto;";
+
+								if (!isMobile) {
+									jQuery('.meanmenu-reveal').css("left",meanCenter);
+								} else {
+									jQuery('.meanmenu-reveal').animate({
+											left: meanCenter
+									});
+								}
+							}
+						};
+
+						var menuOn = false;
+						var meanMenuExist = false;
+
+
+						if (meanRevealPosition === "right") {
+								meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
+						}
+						if (meanRevealPosition === "left") {
+								meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
+						}
+						// run center function
+						meanCentered();
+
+						// set all styles for mean-reveal
+						var $navreveal = "";
+
+						var meanInner = function() {
+								// get last class name
+								if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
+										$navreveal.html(meanMenuClose);
+								} else {
+										$navreveal.html(meanMenuOpen);
+								}
+						};
+
+						// re-instate original nav (and call this on window.width functions)
+						var meanOriginal = function() {
+							jQuery('.mean-bar,.mean-push').remove();
+							jQuery(meanContainer).removeClass("mean-container");
+							jQuery(meanMenu).css('display', meanDisplay);
+							menuOn = false;
+							meanMenuExist = false;
+							jQuery(removeElements).removeClass('mean-remove');
+						};
+
+						// navigation reveal
+						var showMeanMenu = function() {
+								var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
+								if (currentWidth <= meanScreenWidth) {
+								jQuery(removeElements).addClass('mean-remove');
+									meanMenuExist = true;
+									// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
+									jQuery(meanContainer).addClass("mean-container");
+									jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
+
+									//push meanMenu navigation into .mean-nav
+									var meanMenuContents = jQuery(meanMenu).html();
+									jQuery('.mean-nav').html(meanMenuContents);
+
+									// remove all classes from EVERYTHING inside meanmenu nav
+									if(meanRemoveAttrs) {
+										jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
+											// First check if this has mean-remove class
+											if (jQuery(this).is('.mean-remove')) {
+												jQuery(this).attr('class', 'mean-remove');
+											} else {
+												jQuery(this).removeAttr("class");
+											}
+											jQuery(this).removeAttr("id");
+										});
+									}
+
+									// push in a holder div (this can be used if removal of nav is causing layout issues)
+									jQuery(meanMenu).before('<div class="mean-push" />');
+									jQuery('.mean-push').css("margin-top",meanNavPush);
+
+									// hide current navigation and reveal mean nav link
+									jQuery(meanMenu).hide();
+									jQuery(".meanmenu-reveal").show();
+
+									// turn 'X' on or off
+									jQuery(meanRevealClass).html(meanMenuOpen);
+									$navreveal = jQuery(meanRevealClass);
+
+									//hide mean-nav ul
+									jQuery('.mean-nav ul').hide();
+
+									// hide sub nav
+									if(meanShowChildren) {
+											// allow expandable sub nav(s)
+											if(meanExpandableChildren){
+												jQuery('.mean-nav ul ul').each(function() {
+														if(jQuery(this).children().length){
+																jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
+														}
+												});
+												jQuery('.mean-expand').on("click",function(e){
+														e.preventDefault();
+															if (jQuery(this).hasClass("mean-clicked")) {
+																	jQuery(this).text(meanExpand);
+																jQuery(this).prev('ul').slideUp(300, function(){});
+														} else {
+																jQuery(this).text(meanContract);
+																jQuery(this).prev('ul').slideDown(300, function(){});
+														}
+														jQuery(this).toggleClass("mean-clicked");
+												});
+											} else {
+													jQuery('.mean-nav ul ul').show();
+											}
+									} else {
+											jQuery('.mean-nav ul ul').hide();
+									}
+
+									// add last class to tidy up borders
+									jQuery('.mean-nav ul li').last().addClass('mean-last');
+									$navreveal.removeClass("meanclose");
+									jQuery($navreveal).click(function(e){
+										e.preventDefault();
+								if( menuOn === false ) {
+												$navreveal.css("text-align", "center");
+												$navreveal.css("text-indent", "0");
+												$navreveal.css("font-size", meanMenuCloseSize);
+												jQuery('.mean-nav ul:first').slideDown();
+												menuOn = true;
+										} else {
+											jQuery('.mean-nav ul:first').slideUp();
+											menuOn = false;
+										}
+											$navreveal.toggleClass("meanclose");
+											meanInner();
+											jQuery(removeElements).addClass('mean-remove');
+									});
+
+									// for one page websites, reset all variables...
+									if ( onePage ) {
+										jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
+											jQuery('.mean-nav ul:first').slideUp();
+											menuOn = false;
+											jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
+										});
+									}
+							} else {
+								meanOriginal();
+							}
+						};
+
+						if (!isMobile) {
+								// reset menu on resize above meanScreenWidth
+								jQuery(window).resize(function () {
+										currentWidth = window.innerWidth || document.documentElement.clientWidth;
+										if (currentWidth > meanScreenWidth) {
+												meanOriginal();
+										} else {
+											meanOriginal();
+										}
+										if (currentWidth <= meanScreenWidth) {
+												showMeanMenu();
+												meanCentered();
+										} else {
+											meanOriginal();
+										}
+								});
+						}
+
+					jQuery(window).resize(function () {
+								// get browser width
+								currentWidth = window.innerWidth || document.documentElement.clientWidth;
+
+								if (!isMobile) {
+										meanOriginal();
+										if (currentWidth <= meanScreenWidth) {
+												showMeanMenu();
+												meanCentered();
+										}
+								} else {
+										meanCentered();
+										if (currentWidth <= meanScreenWidth) {
+												if (meanMenuExist === false) {
+														showMeanMenu();
+												}
+										} else {
+												meanOriginal();
+										}
+								}
+						});
+
+					// run main menuMenu function on load
+					showMeanMenu();
+				});
+		};
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/js/libs/modernizr.custom.min.js
----------------------------------------------------------------------
diff --git a/doc/js/libs/modernizr.custom.min.js b/doc/js/libs/modernizr.custom.min.js
new file mode 100755
index 0000000..89bb6c1
--- /dev/null
+++ b/doc/js/libs/modernizr.custom.min.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-hashchange-history-audio-video-input-inputtypes-localstorage-websockets-geolocation-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-css_mediaqueries-css_regions-css_supports-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:
 absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,
 "</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.
 call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.websockets=func
 tion(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.leng
 th)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new B
 oolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElement
 NS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.creat
 eDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={
 },j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this
 .document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}
 function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().
 split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventLi
 stener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("mediaqueries",Modernizr.mq("only all")),Modernizr.addTest("regions",function(){var a=Modernizr.prefixed("flowFrom"),b=Modernizr.prefixed("flowInto
 ");if(!a||!b)return!1;var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("div"),f="modernizr_flow_for_regions_check";d.innerText="M",c.style.cssText="top: 150px; left: 150px; padding: 0px;",e.style.cssText="width: 50px; height: 50px; padding: 42px;",e.style[a]=f,c.appendChild(d),c.appendChild(e),document.documentElement.appendChild(c);var g,h,i=d.getBoundingClientRect();return d.style[b]=f,g=d.getBoundingClientRect(),h=g.left-i.left,document.documentElement.removeChild(c),d=e=c=undefined,h==42}),Modernizr.addTest("supports","CSSSupportsRule"in window);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/js/scripts.js
----------------------------------------------------------------------
diff --git a/doc/js/scripts.js b/doc/js/scripts.js
new file mode 100755
index 0000000..5c0ee88
--- /dev/null
+++ b/doc/js/scripts.js
@@ -0,0 +1,176 @@
+/*
+ * Bones Scripts File
+ * Author: Eddie Machado
+ *
+ * This file should contain any js scripts you want to add to the site.
+ * Instead of calling it in the header or throwing it inside wp_head()
+ * this file will be called automatically in the footer so as not to
+ * slow the page load.
+ *
+ * There are a lot of example functions and tools in here. If you don't
+ * need any of it, just remove it. They are meant to be helpers and are
+ * not required. It's your world baby, you can do whatever you want.
+*/
+
+
+/*
+ * Get Viewport Dimensions
+ * returns object with viewport dimensions to match css in width and height properties
+ * ( source: http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript )
+*/
+function updateViewportDimensions() {
+	var w=window,d=document,e=d.documentElement,g=d.getElementsByTagName('body')[0],x=w.innerWidth||e.clientWidth||g.clientWidth,y=w.innerHeight||e.clientHeight||g.clientHeight;
+	return { width:x,height:y };
+}
+// setting the viewport width
+var viewport = updateViewportDimensions();
+
+
+/*
+ * Throttle Resize-triggered Events
+ * Wrap your actions in this function to throttle the frequency of firing them off, for better performance, esp. on mobile.
+ * ( source: http://stackoverflow.com/questions/2854407/javascript-jquery-window-resize-how-to-fire-after-the-resize-is-completed )
+*/
+var waitForFinalEvent = (function () {
+	var timers = {};
+	return function (callback, ms, uniqueId) {
+		if (!uniqueId) { uniqueId = "Don't call this twice without a uniqueId"; }
+		if (timers[uniqueId]) { clearTimeout (timers[uniqueId]); }
+		timers[uniqueId] = setTimeout(callback, ms);
+	};
+})();
+
+// how long to wait before deciding the resize has stopped, in ms. Around 50-100 should work ok.
+var timeToWaitForLast = 100;
+
+
+/*
+ * Here's an example so you can see how we're using the above function
+ *
+ * This is commented out so it won't work, but you can copy it and
+ * remove the comments.
+ *
+ *
+ *
+ * If we want to only do it on a certain page, we can setup checks so we do it
+ * as efficient as possible.
+ *
+ * if( typeof is_home === "undefined" ) var is_home = $('body').hasClass('home');
+ *
+ * This once checks to see if you're on the home page based on the body class
+ * We can then use that check to perform actions on the home page only
+ *
+ * When the window is resized, we perform this function
+ * $(window).resize(function () {
+ *
+ *    // if we're on the home page, we wait the set amount (in function above) then fire the function
+ *    if( is_home ) { waitForFinalEvent( function() {
+ *
+ *	// update the viewport, in case the window size has changed
+ *	viewport = updateViewportDimensions();
+ *
+ *      // if we're above or equal to 768 fire this off
+ *      if( viewport.width >= 768 ) {
+ *        console.log('On home page and window sized to 768 width or more.');
+ *      } else {
+ *        // otherwise, let's do this instead
+ *        console.log('Not on home page, or window sized to less than 768.');
+ *      }
+ *
+ *    }, timeToWaitForLast, "your-function-identifier-string"); }
+ * });
+ *
+ * Pretty cool huh? You can create functions like this to conditionally load
+ * content and other stuff dependent on the viewport.
+ * Remember that mobile devices and javascript aren't the best of friends.
+ * Keep it light and always make sure the larger viewports are doing the heavy lifting.
+ *
+*/
+
+/*
+ * We're going to swap out the gravatars.
+ * In the functions.php file, you can see we're not loading the gravatar
+ * images on mobile to save bandwidth. Once we hit an acceptable viewport
+ * then we can swap out those images since they are located in a data attribute.
+*/
+function loadGravatars() {
+  // set the viewport using the function above
+  viewport = updateViewportDimensions();
+  // if the viewport is tablet or larger, we load in the gravatars
+  if (viewport.width >= 768) {
+  jQuery('.comment img[data-gravatar]').each(function(){
+    jQuery(this).attr('src',jQuery(this).attr('data-gravatar'));
+  });
+	}
+} // end function
+
+
+/*
+ * Put all your regular jQuery in here.
+*/
+jQuery(document).ready(function($) {
+	jQuery('header nav').meanmenu();
+
+	// browser window scroll (in pixels) after which the "back to top" link is shown
+	var offset = 300,
+		//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
+		offset_opacity = 1200,
+		//duration of the top scrolling animation (in ms)
+		scroll_top_duration = 700,
+		//grab the "back to top" link
+		$back_to_top = $('.cd-top');
+
+	//hide or show the "back to top" link
+	$(window).scroll(function(){
+		( $(this).scrollTop() > offset ) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out');
+		if( $(this).scrollTop() > offset_opacity ) { 
+			$back_to_top.addClass('cd-fade-out');
+		}
+	});
+
+	//smooth scroll to top
+	$back_to_top.on('click', function(event){
+		event.preventDefault();
+		$('body,html').animate({
+			scrollTop: 0 ,
+		 	}, scroll_top_duration
+		);
+	});
+	
+	var menuLeft = document.getElementById( 'cbp-spmenu-s1' ),
+			showLeft = document.getElementById( 'showLeft' )
+			body = document.body;
+	
+	showLeft.onclick = function() {
+		classie.toggle( this, 'active' );
+		classie.toggle( menuLeft, 'cbp-spmenu-open' );
+		disableOther( 'showLeft' );
+	};
+	
+	function disableOther( button ) {
+		if( button !== 'showLeft' ) {
+			classie.toggle( showLeft, 'disabled' );
+		}
+	};	
+
+	$(function() {
+	  $('a[href*="#"]:not([href="#"])').click(function() {
+	    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
+	      var target = $(this.hash);
+	      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
+	      if (target.length) {
+	        $('html, body').animate({
+	          scrollTop: target.offset().top
+	        }, 1000);
+	        return false;
+	      }
+	    }
+	  });
+	});
+	
+	$('.cbp-spmenu a').on('click', function(){
+        $(".cbp-spmenu").removeClass("cbp-spmenu-open");
+    });
+    
+
+}); /* end of as page load scripts */

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/doc/spot.css
----------------------------------------------------------------------
diff --git a/doc/spot.css b/doc/spot.css
new file mode 100755
index 0000000..7a5fb83
--- /dev/null
+++ b/doc/spot.css
@@ -0,0 +1,81 @@
+
+img{
+    width: 95%;
+}
+
+p.terminal 
+{
+    border-radius: 25px;
+    border: 2px solid #000000;
+    background: #000000;
+    color: #FFFFFF;
+    padding: 20px;
+    margin-left: 50px;
+    margin-right: 100px; 
+}
+
+table.configuration
+{
+     width: 90%;
+     margin-left: 20px;
+     margin-right: 20px;
+}
+
+table.configuration th 
+{
+    background-color: #212F3C;
+    color: white;
+}
+
+table.configuration td
+{
+    text-align: center;
+    padding: 8px;
+}
+
+table.configuration tr:nth-child(even){background-color: #f2f2f2}
+
+
+.sidenav {
+    height: 100%; 
+    width: 200px; 
+    position: fixed; 
+    z-index: 1;
+    top: 0;
+    left: 0;
+    background-color: #212F3C; 
+    overflow-x: hidden; 
+    padding-top: 60px; 
+    transition: 0.5s; 
+}
+
+
+.sidenav a{
+    padding: 8px 8px 8px 32px;
+    text-decoration: none;
+    font-size: 20px;
+    color: #818181;
+    display: block;
+    transition: 0.3s
+}
+
+.sidenav li {
+    color: #818181 ;    
+}
+.sidenav a:hover, .offcanvas a:focus{
+    color: #f1f1f1;
+}
+
+.sidenav .closebtn {
+    position: absolute;
+    top: 0;
+    right: 25px;
+    font-size: 36px;
+    margin-left: 50px;
+}
+
+#main {
+    transition: margin-left .5s;
+    margin-left: 200px;
+    padding: 20px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/favicon.png
----------------------------------------------------------------------
diff --git a/favicon.png b/favicon.png
new file mode 100755
index 0000000..1e360dd
Binary files /dev/null and b/favicon.png differ

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/config.php
----------------------------------------------------------------------
diff --git a/includes/config.php b/includes/config.php
new file mode 100755
index 0000000..ffd994d
--- /dev/null
+++ b/includes/config.php
@@ -0,0 +1,7 @@
+<?php
+
+define('BASE_URL', 'http://spot.incubator.apache.org');
+
+//define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT'] .  '/apache-spot/' );
+
+?>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/download-sidebar.php
----------------------------------------------------------------------
diff --git a/includes/download-sidebar.php b/includes/download-sidebar.php
new file mode 100755
index 0000000..7679c2b
--- /dev/null
+++ b/includes/download-sidebar.php
@@ -0,0 +1,14 @@
+            		<div class="m-all t-all d-1of3 downloads">
+            			<h1>Downloads</h1>
+            			<ul>
+            				<li><a href="#">Lorem Ipsum Dolor SIT AMET <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Consectetur adipisicing elit sed <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Ut enim ad minim veniam <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Lorem Ipsum Dolor SIT AMET <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Consectetur adipisicing elit sed <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Ut enim ad minim veniam <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Lorem Ipsum Dolor SIT AMET <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Consectetur adipisicing elit sed <span class="icon-keyboard_arrow_right"></span></a></li>
+            				<li><a href="#">Ut enim ad minim veniam <span class="icon-keyboard_arrow_right"></span></a></li>            				
+            			</ul>
+            		</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/footer.php
----------------------------------------------------------------------
diff --git a/includes/footer.php b/includes/footer.php
new file mode 100755
index 0000000..b0aafe2
--- /dev/null
+++ b/includes/footer.php
@@ -0,0 +1,22 @@
+
+            <footer class="footer" role="contentinfo" itemscope itemtype="http://schema.org/WPFooter">
+
+                <div id="inner-footer" class="wrap cf">
+
+                    <p class="source-org copyright" style="text-align:center;">
+                        &copy; 2016 Apache Spot.
+                    </p>
+
+                </div>
+
+            </footer>
+
+        </div>
+		<a href="#0" class="cd-top">Top</a>
+        <script type='text/javascript' src='<?php echo BASE_URL; ?>/library/js/scripts.js'></script>
+        <!--<script type='text/javascript' src='wp-includes/js/wp-embed.min.js'></script>-->
+
+    </body>
+
+</html>
+<!-- end of site. what a ride! -->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/header.php
----------------------------------------------------------------------
diff --git a/includes/header.php b/includes/header.php
new file mode 100755
index 0000000..16e8062
--- /dev/null
+++ b/includes/header.php
@@ -0,0 +1,116 @@
+<!doctype html>
+
+<!--[if lt IE 7]><html lang="en-US" class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->
+<!--[if (IE 7)&!(IEMobile)]><html lang="en-US" class="no-js lt-ie9 lt-ie8"><![endif]-->
+<!--[if (IE 8)&!(IEMobile)]><html lang="en-US" class="no-js lt-ie9"><![endif]-->
+<!--[if gt IE 8]><!-->
+<html lang="en-US" class="no-js">
+    <!--<![endif]-->
+
+    <head>
+        <meta charset="utf-8">
+
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+        <title>
+			<?php if (isset($pageTitle)) {
+	            echo $pageTitle;
+	        } else {
+	            echo "Apache Spot";
+	        } ?>        	
+        </title>
+
+        <meta name="HandheldFriendly" content="True">
+        <meta name="MobileOptimized" content="320">
+        <meta name="viewport" content="width=device-width, initial-scale=1"/>
+
+        <link rel="apple-touch-icon" href="<?php echo BASE_URL; ?>/library/images/apple-touch-icon.png">
+        <link rel="icon" href="<?php echo BASE_URL; ?>/favicon.png">
+        <!--[if IE]>
+        <link rel="shortcut icon" href="http://spot.incubator.apache.org/favicon.ico">
+        <![endif]-->
+        <meta name="msapplication-TileColor" content="#f01d4f">
+        <meta name="msapplication-TileImage" content="<?php echo BASE_URL; ?>/library/images/win8-tile-icon.png">
+        <meta name="theme-color" content="#121212">
+
+        <link rel='dns-prefetch' href='//fonts.googleapis.com' />
+        <link rel='dns-prefetch' href='//s.w.org' />
+        <link rel="alternate" type="application/rss+xml" title="Apache Spot &raquo; Feed" href="<?php echo BASE_URL; ?>/feed/" />
+
+        <link rel='stylesheet' id='googleFonts-css'  href='http://fonts.googleapis.com/css?family=Lato%3A400%2C700%2C400italic%2C700italic' type='text/css' media='all' />
+        <link rel='stylesheet' id='bones-stylesheet-css'  href='<?php echo BASE_URL; ?>/library/css/style.css' type='text/css' media='all' />
+        <!--[if lt IE 9]>
+        <link rel='stylesheet' id='bones-ie-only-css'  href='http://spot.incubator.apache.org/library/css/ie.css' type='text/css' media='all' />
+        <![endif]-->
+        <link rel='stylesheet' id='mm-css-css'  href='<?php echo BASE_URL; ?>/library/css/meanmenu.css' type='text/css' media='all' />
+        <script type='text/javascript' src='<?php echo BASE_URL; ?>/library/js/libs/modernizr.custom.min.js'></script>
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
+        <script type='text/javascript' src='<?php echo BASE_URL; ?>/library/js/jquery-migrate.min.js'></script>
+        <script type='text/javascript' src='<?php echo BASE_URL; ?>/library/js/jquery.meanmenu.js'></script>
+
+		<script>
+		  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+		  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+		  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+		  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+		
+		  ga('create', 'UA-87470508-1', 'auto');
+		  ga('send', 'pageview');
+		
+		</script>
+    </head>
+
+    <body class="<?php if (isset($bodyclass)) {
+            echo $bodyclass;
+        } else {
+            echo "page";
+        } ?>" itemscope itemtype="http://schema.org/WebPage">
+
+        <div id="container">
+			<div class="social-sidebar">
+				<a href="mailto:info@open-network-insight.org"><span class="icon-envelope"></span></a>
+				<a href="https://twitter.com/ApacheSpot" target="_blank"><span class="icon-twitter"</a>
+				<a href="http://slack.apache-spot.io/" target="_blank"><span class="icon-slack"></span></a>				
+			</div>
+            <header class="header" role="banner" itemscope itemtype="http://schema.org/WPHeader">
+
+                <div id="inner-header" class="wrap cf">
+
+                    <p id="logo" class="h1" itemscope itemtype="http://schema.org/Organization">
+                        <a href="<?php echo BASE_URL; ?>" rel="nofollow"><img src="<?php echo BASE_URL; ?>/library/images/logo.png" alt="Apache Spot" /></a>
+                    </p>
+
+                    <nav role="navigation" itemscope itemtype="http://schema.org/SiteNavigationElement">
+                        <ul id="menu-main-menu" class="nav top-nav cf">
+                            <li id="menu-item-129" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-129">
+                                <a target="_blank" href="https://github.com/apache/incubator-spot#try-the-apache-spot-ui-with-example-data">Get Started</a>
+                            </li>
+                            <li id="menu-item-5" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5">
+                                <a target="_blank" href="https://github.com/apache/incubator-spot.git">Download</a>
+                            </li>
+                            <li id="menu-item-130" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-130 <?php if($currentPage =='contribute'){echo 'active';}?>">
+                                <a target="_blank" href="<?php echo BASE_URL; ?>/contribute" target="_blank">Contribute</a>
+                            </li>
+                            <li id="menu-item-106" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-106">
+                                <a target="_blank" href="<?php echo BASE_URL; ?>/doc">Documentation</a>
+                            </li>
+                            <li class="menu-item menu-item-has-children <?php if( in_array($currentPage, array('project-components','visualizations','machine-learning','open-data-models','ingestion'), true )) {echo 'active';}?>">
+                                <a href="#">Project Components</a>
+                                <ul class="sub-menu">
+                                	<li class="<?php if($currentPage =='open-data-models'){echo 'active';}?>"><a href="<?php echo BASE_URL; ?>/project-components/open-data-models">Open Data Models</a></li>
+                                	<li class="<?php if($currentPage =='ingestion'){echo 'active';}?>"><a href="<?php echo BASE_URL; ?>/project-components/ingestion">Ingestion</a></li>
+                                	<li class="<?php if($currentPage =='machine-learning'){echo 'active';}?>"><a href="<?php echo BASE_URL; ?>/project-components/machine-learning">Machine Learning</a></li>
+                                	<li class="<?php if($currentPage =='visualization'){echo 'active';}?>"><a href="<?php echo BASE_URL; ?>/project-components/visualization">Visualization</a></li>
+                                </ul>
+                            </li>
+                            <li id="menu-item-13" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-13 <?php if($currentPage =='blog'){echo 'active';}?>">
+                                <a href="<?php echo BASE_URL; ?>/blog">Blog</a>
+                            </li>
+                        </ul>
+                    </nav>
+
+                </div>
+
+            </header>
+
+            <div id="mobile-nav"></div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/prefooter.php
----------------------------------------------------------------------
diff --git a/includes/prefooter.php b/includes/prefooter.php
new file mode 100755
index 0000000..6642553
--- /dev/null
+++ b/includes/prefooter.php
@@ -0,0 +1,22 @@
+            <div id="more-info">
+                <div class="wrap cf">
+                    <p class="social-icons">
+                        <a href="mailto:info@open-network-insight.org"><span class="icon-envelope"></span></a><a href="https://twitter.com/ApacheSpot" target="_blank"><span class="icon-twitter"></span><a href="http://slack.apache-spot.io/" target="_blank"><img src="<?php echo BASE_URL; ?>/library/images/add-to-slack.png" alt="" class="add-to-slack" /></a></a>
+                    </p>
+
+                    <p>
+                        <a href="https://github.com/apache/incubator-spot" class="y-btn" target="_blank">More Info</a>
+                    </p>
+
+                    <p style="margin-top:50px;"><img src="<?php echo BASE_URL; ?>/library/images/apache-incubator.png" alt="Apache Incubator" />
+                    </p>
+
+                    <p class="disclaimer">
+                        Apache Spot is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+                    </p>
+
+                    <p class="disclaimer">
+                        The contents of this website are � 2016 Apache Software Foundation under the terms of the Apache License v2. Apache Spot and its logo are trademarks of the Apache Software Foundation.
+                    </p>
+                </div>
+            </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/includes/sidebar.php
----------------------------------------------------------------------
diff --git a/includes/sidebar.php b/includes/sidebar.php
new file mode 100755
index 0000000..ff2a2b8
--- /dev/null
+++ b/includes/sidebar.php
@@ -0,0 +1,41 @@
+<div id="sidebar1" class="sidebar m-all t-1of3 d-2of7 last-col cf" role="complementary">
+
+	<div id="recent-posts-2" class="widget widget_recent_entries">
+		<h4 class="widgettitle">Recent Posts</h4>
+		<ul>
+			<li>
+				<a href="<?php echo BASE_URL; ?>/blog/strength-in-numbers-why-consider-open-source-cybersecurity-analytics/">Strength in Numbers:  Why Consider Open Source Cybersecurity Analytics</a>
+			</li>
+			<li>
+				<a href="<?php echo BASE_URL; ?>/blog/jupyter-notebooks-for-data-analysis/">Jupyter Notebooks for Data Analysis</a>
+			</li>
+			<li>
+				<a href="<?php echo BASE_URL; ?>/blog/apache-spot-and-cybersecurity-using-netflows-to-detect-threats-to-critical-infrastructure/">Apache Spot (Incubating) and Cybersecurity \u2014 Using NetFlows to Detect Threats to  Critical Infrastructure</a>
+			</li>
+			<li>
+				<a href="<?php echo BASE_URL; ?>/blog/how-apache-spot-helps-create-well-stocked-data-lakes-and-catch-powerful-insights/">How Apache Spot (Incubating) Helps Create Well-Stocked Data Lakes and Catch Powerful Insights</a>
+			</li>
+			<li>
+				<a href="<?php echo BASE_URL; ?>/blog/apache-spot-3-most-asked-questions/">Apache Spot (Incubating): 3 Most-Asked Questions</a>
+			</li>
+		</ul>
+	</div>
+	<div id="archives-2" class="widget widget_archive">
+		<h4 class="widgettitle">Archives</h4>
+		<ul>
+			<li>
+				<a href='<?php echo BASE_URL; ?>/2016/10/'>October 2016</a>
+			</li>
+			<li>
+				<a href='<?php echo BASE_URL; ?>/2016/09/'>September 2016</a>
+			</li>
+			<li>
+				<a href='<?php echo BASE_URL; ?>/2016/08/'>August 2016</a>
+			</li>
+			<li>
+				<a href='<?php echo BASE_URL; ?>/2016/03/'>March 2016</a>
+			</li>
+		</ul>
+	</div>
+
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/index.php
----------------------------------------------------------------------
diff --git a/index.php b/index.php
new file mode 100755
index 0000000..2c20ba8
--- /dev/null
+++ b/index.php
@@ -0,0 +1,283 @@
+<?php include 'includes/config.php'; ?>
+
+<?php
+$bodyclass = "home";
+$pageTitle = "Apache Spot";
+$description = "";
+$currentPage = 'home';
+?>
+<?php include 'includes/header.php'; ?>
+
+
+            <div id="masthead">
+                <div class="wrap cf">
+                    <div class="m-all t-1of2 d-1of2">
+                        <h1>Apache Spot (Incubating)</h1>
+                        <h1 class="thin">A Community Approach to Fighting Cyber Threats</h1>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2 contribute">
+                        <h3>Help Spot expand his hunting ground to see deeper into the darkness of cyber threats.</h3>
+                        <p class="btn-margin"><a href="<?php echo BASE_URL; ?>/contribute" class="y-btn">Become a Contributor</a></p>
+                    </div>
+                </div>
+            </div>
+            
+            <div id="at-a-glance">
+            	<div class="wrap cf">
+            		<h1>Apache Spot at a Glance</h1>
+            		<p>Apache Spot is a community-driven cybersecurity project, built from the ground up, to bring advanced analytics to all IT Telemetry data on an open, scalable platform. Spot expedites threat detection, investigation, and remediation via machine learning and consolidates all enterprise security data into a comprehensive IT telemetry hub based on open data models. Spot\u2019s scalability and machine learning capabilities support an ecosystem of ML-based applications that can run simultaneously on a single, shared, enriched data set to provide organizations with maximum analytic flexibility. Spot harnesses a diverse community of expertise from Centrify, Cloudera, Cybraics, Endgame, Intel, Jask, Streamsets, and Webroot.</p>
+            	</div>
+            </div>
+
+            <div id="content">
+                <div id="inner-content" class="wrap cf">
+                    <main id="main" class="m-all t-all d-all cf" role="main" itemscope itemprop="mainContentOfPage" itemtype="http://schema.org/Blog">
+                        <h1 class="center">Apache Spot Advantages</h1>
+                        <p style="text-align: center;"><img src="library/images/advantages-1.png" alt="advantages" width="958" height="433" class="aligncenter size-full" />
+                        </p>
+                    </main>
+                </div>
+            </div>
+
+            <div id="and">
+                <div class="wrap cf">
+                    <div class="and-row">
+                        <div class="and-cell">
+                            <img src="library/images/and.png" alt="" />
+                        </div>
+                        <div class="and-cell">
+                            <p>
+                                Apache Spot is functional after just one day and just keeps improving through feedback and machine learning.
+                            </p>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <div id="how-it-works">
+                <div class="wrap cf">
+                    <div class="m-all t-1of3 d-1of3">
+                        <h1>How It Works</h1>
+                        <p>
+                            Apache Spot uses machine learning as a filter for separating bad traffic from benign and to characterize the unique behavior of network traffic. A proven process, of context enrichment, noise filtering, whitelisting and heuristics, is also applied to network data to produce a shortlist of most likely security threats.
+                        </p>
+                        <p class="btn-margin">
+                            <a href="https://github.com/apache/incubator-spot" class="y-btn">More Info</a>
+                        </p>
+                    </div>
+                    <div class="m-all t-2of3 d-2of3">
+                        <img src="library/images/how-it-works.png" alt="" />
+                    </div>
+                </div>
+            </div>
+
+            <div id="key-features">
+                <div class="wrap cf">
+                    <h1>Key Features</h1>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/magnify-icon.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Suspicious DNS packets</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            Apache Spot is capable of performing deep-packet inspection of DNS traffic to build a profile of probable and improbable DNS payloads. After visualizing, normalizing, and conducting pattern searches, the analyst has a shortlist of the most likely threats present in DNS traffic.
+                        </p>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/threat-icon.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Threat Incident and Response</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            Given an IP address, Apache Spot gathers all the characteristics about the communication associated with it \u2013 the \u201csocial network\u201d of that IP address.  Then Apache Spot builds a timeline of the conversations that originated with that IP.
+                        </p>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/connects.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Suspicious Connects</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            Apache Spot uses advanced machine learning to build a model of the machines on the network and their communication patterns.  The connections between the machines that are the lowest probability are then visualized, filtered for noise, and searched for known patterns.  The result is the most likely threat patterns in the data, a few hundred flows picked from billions.
+                        </p>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/storyboard-icon.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Storyboard</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            After an analyst has investigated a threat, the need still exists to communicate the event up and across the organization.  A \u201cdashboard\u201d gives quick answers to the questions you already know to ask.  What the analyst requires is a \u201cstoryboard,\u201d something that tells who, what, where, and how of the story in words and interactive visualizations.
+                        </p>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/SPOT_OpenDataModel-Icon_v1.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Open Data Models</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            Spot provides common open data model for network, endpoint, and user \u2013 Open Data Models. These Open Data Models provide a standard format of enriched event data that makes it easier to integrate cross application data to gain complete enterprise visibility and develop net new analytic functionality.  Spot\u2019s Open Data Models helps organizations quickly share new analytics with one another as new threats are discovered.
+                        </p>
+                    </div>
+                    <div class="m-all t-1of2 d-1of2">
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell">
+                                    <img src="library/images/SPOT_Collabration-Icon_v2.png" alt="" />
+                                </div>
+                                <div class="table-cell">
+                                    <h3>Collaboration</h3>
+                                </div>
+                            </div>
+                        </div>
+                        <p>
+                            Spot\u2019s Open Data Models help organizations quickly share new analytics with one another as new threats are discovered.  And, with Hadoop, organizations able to run these analytics against comprehensive historic data sets, helping organizations identify past threats that have slipped through the cracks. With this capability, Spot aims to give security professionals the ability to collaborate like cybercriminals do.
+                        </p>
+                    </div>
+
+                    <div class="cf"></div>
+                    <p class="btn-margin">
+                        <a href="https://github.com/apache/incubator-spot" class="y-btn">More Info</a>
+                    </p>
+                </div>
+            </div>
+            
+            <div id="open-data-models">
+            	<div class="wrap cf">
+            		<h1 class="center">Apache Spot Open Data Models (ODM)</h1>
+            		<div class="m-all t-1of2 d-1of2 center">
+            			<img src="library/images/odm.png" alt="Apache Spot Open Data Models">
+            		</div>
+            		<div class="m-all t-1of2 d-1of2">
+            			<p>The primary use case initially supported by Spot includes Network Traffic Analysis for network flows (Netflow, sflow, etc.), DNS and Proxy.� The Spot open data model strategy aims to extend Spot capabilities to support a broader set of cybersecurity use cases.</p>
+            			<h3>ODM at a Glance</h3>
+            			<ul>
+            				<li>Includes a growing catalog of packaged ingestion pipelines for common data sources</li>
+            				<li>Enriched events provide full context leading to better analytics and faster incident response</li>
+            				<li>Organizations maintain and control a single copy of their security data</li>
+            			</ul>
+            			<p class="btn-margin"><a href="<?php echo BASE_URL; ?>/project-components/open-data-models/" class="y-btn">Read More</a></p>
+            		</div>
+            	</div>
+            </div>
+
+            <div id="user-stories">
+                <div class="wrap cf">
+                    <h1>Spot Fosters a Rich Application Ecosystem</h1>
+                    <p class="btn-margin center">
+                        Spot accelerates the development of cybersecurity applications by providing a cybersecurity analytics framework.  This means more solutions can be created faster. This is because Spot allows organizations to focus developing the analytics and visualizations for applications that discover cybercrime rather than spending time building systems to ingest, integrate, store, and process myriad volumes or varieties of security data.
+                    </p>
+                    
+                    <p class="center">Join the Apache Spot community and collaborate with us using a common framework.</p>
+                    
+                    <div class="community">
+                    	<img src="library/images/community/endgame.png" alt="Endgame" />
+                    	<img src="library/images/community/intel.png" alt="Intel" />
+                    	<img src="library/images/community/webroot.png" alt="Webroot" />
+                    	<img src="library/images/community/jask.png" alt="Jask" />
+                    	<img src="library/images/community/cloudera.png" alt="Cloudera" />
+                    	<img src="library/images/community/cloudwick.png" alt="Cloudwick" />
+                    	<img src="library/images/community/cybraics.png" alt="Cybraics" />
+                    	<img src="library/images/community/centrify.png" alt="Centrify" />
+                    	<img src="library/images/community/ebay.png" alt="Ebay" />
+                    	<img src="library/images/community/semantix.png" alt="Ebay" />
+                    	<img src="library/images/community/rich-it.png" alt="Ebay" />
+                    	
+                    </div>
+
+                </div>
+            </div>
+
+            <div id="use-case">
+                <div class="wrap cf">
+
+                    <h1>Use Case</h1>
+                    <div class="quotes">
+
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell quote-man">
+                                    <img src="library/images/quote-person.png" alt="" />
+                                    <h3>Senior Analyst</h3>
+                                </div>
+                                <div class="table-cell">
+                                    <p>
+                                        ...that allows me to see and customize the data and scripts to my enviroment. I want control over how the solution works.\u201d
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell quote-man">
+                                    <img src="library/images/quote-person.png" alt="" />
+                                    <h3>Junior Analyst</h3>
+                                </div>
+                                <div class="table-cell">
+                                    <p>
+                                        ...that automatically alerts me to actionable suspicious events and ways to optimize my network in a timely fashion. Help me investigate these events and tell the story across stakeholders in my organization.\u201d
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div class="table">
+                            <div class="table-row">
+                                <div class="table-cell quote-man">
+                                    <img src="library/images/quote-person.png" alt="" />
+                                    <h3>Decision Maker</h3>
+                                </div>
+                                <div class="table-cell">
+                                    <p>
+                                        ...tells me the story of what happened in a way I can understand so I can make decisions as a result.\u201d
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+
+                </div>
+
+                <div class="arrow">
+                    <div class="wrap cf">
+                        <p>
+                            Identify the needle in the haystack with <strong>patterns</strong> that provide insight into potential threats.
+                        </p>
+                    </div>
+                </div>
+            </div>
+            
+<?php include 'includes/prefooter.php'; ?>
+<?php include 'includes/footer.php'; ?>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-spot/blob/67c0416b/library/css/meanmenu.css
----------------------------------------------------------------------
diff --git a/library/css/meanmenu.css b/library/css/meanmenu.css
new file mode 100755
index 0000000..3cf6e41
--- /dev/null
+++ b/library/css/meanmenu.css
@@ -0,0 +1,170 @@
+
+/*! #######################################################################
+
+	MeanMenu 2.0.7
+	--------
+
+	To be used with jquery.meanmenu.js by Chris Wharton (http://www.meanthemes.com/plugins/meanmenu/)
+
+####################################################################### */
+
+/* hide the link until viewport size is reached */
+a.meanmenu-reveal {
+	display: none;
+}
+
+/* when under viewport size, .mean-container is added to body */
+.mean-container .mean-bar {
+	float: left;
+	width: 100%;
+	position: relative;
+	background: #e8e5e0;
+	padding: 4px 0;
+	min-height: 42px;
+	z-index: 999999;
+}
+
+.mean-container a.meanmenu-reveal {
+	width: 22px;
+	height: 22px;
+	padding: 13px 13px 11px 13px;
+	position: absolute;
+	top: 0;
+	right: 0;
+	cursor: pointer;
+	color: #c97644;
+	text-decoration: none;
+	font-size: 16px;
+	text-indent: -9999em;
+	line-height: 22px;
+	font-size: 1px;
+	display: block;
+	font-family: Arial, Helvetica, sans-serif;
+	font-weight: 700;
+}
+
+.mean-container a.meanmenu-reveal span {
+	display: block;
+	background: #c97644;
+	height: 3px;
+	margin-top: 3px;
+}
+
+.mean-container .mean-nav {
+	float: left;
+	width: 100%;
+	background: #e8e5e0;
+	margin-top: 44px;
+}
+
+.mean-container .mean-nav ul {
+	padding: 0;
+	margin: 0;
+	width: 100%;
+	list-style-type: none;
+	font-weight:600;
+}
+
+.mean-container .mean-nav ul li {
+	position: relative;
+	float: left;
+	width: 100%;
+	margin-bottom:0;
+}
+
+.mean-container .mean-nav ul li a {
+	display: block;
+	float: left;
+	width: 90%;
+	padding: 1em 5%;
+	margin: 0;
+	text-align: left;
+	color: #c97644;
+	border-top: 1px solid #c97644;
+	border-top: 1px solid rgba(255,255,255,0.8);
+	text-decoration: none;
+	text-transform: uppercase;
+}
+
+.mean-container .mean-nav ul li li a {
+	width: 80%;
+	padding: 1em 10%;
+	border-top: 1px solid #f1f1f1;
+	border-top: 1px solid rgba(255,255,255,0.25);
+/*	opacity: 0.75;
+	filter: alpha(opacity=75);*/
+	text-shadow: none !important;
+	visibility: visible;
+}
+
+.mean-container .mean-nav ul li.mean-last a {
+	border-bottom: none;
+	margin-bottom: 0;
+}
+
+.mean-container .mean-nav ul li li li a {
+	width: 70%;
+	padding: 1em 15%;
+}
+
+.mean-container .mean-nav ul li li li li a {
+	width: 60%;
+	padding: 1em 20%;
+}
+
+.mean-container .mean-nav ul li li li li li a {
+	width: 50%;
+	padding: 1em 25%;
+}
+
+.mean-container .mean-nav ul li a:hover {
+	background: #252525;
+	background: rgba(255,255,255,0.1);
+}
+
+.mean-container .mean-nav ul li a.mean-expand {
+	margin-top: 1px;
+	width: 26px;
+	height: 32px;
+	padding:13px 12px 10px !important;
+	text-align: center;
+	position: absolute;
+	right: 0;
+	top: 0;
+	z-index: 2;
+	font-weight: 700;
+	background: rgba(255,255,255,0.1);
+	border: none !important;
+	border-left: 1px solid rgba(255,255,255,0.4) !important;
+	border-bottom: 1px solid rgba(255,255,255,0.2) !important;
+}
+
+.mean-container .mean-nav ul li a.mean-expand:hover {
+	background: #c97644;
+	color:#fff;
+}
+.mean-container .mean-push {
+	float: left;
+	width: 100%;
+	padding: 0;
+	margin: 0;
+	clear: both;
+}
+
+.mean-nav .wrapper {
+	width: 100%;
+	padding: 0;
+	margin: 0;
+}
+
+/* Fix for box sizing on Foundation Framework etc. */
+.mean-container .mean-bar, .mean-container .mean-bar * {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+
+
+.mean-remove {
+	display: none !important;
+}