http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/jquery.onepagenav.js
----------------------------------------------------------------------
diff --git a/src/main/jbake/assets/js/jquery.onepagenav.js 
b/src/main/jbake/assets/js/jquery.onepagenav.js
new file mode 100755
index 0000000..8668b46
--- /dev/null
+++ b/src/main/jbake/assets/js/jquery.onepagenav.js
@@ -0,0 +1,223 @@
+/*
+ * jQuery One Page Nav Plugin
+ * http://github.com/davist11/jQuery-One-Page-Nav
+ *
+ * Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
+ * Dual licensed under the MIT and GPL licenses.
+ * Uses the same license as jQuery, see:
+ * http://jquery.org/license
+ *
+ * @version 3.0.0
+ *
+ * Example usage:
+ * $('#nav').onePageNav({
+ *   currentClass: 'current',
+ *   changeHash: false,
+ *   scrollSpeed: 750
+ * });
+ */
+
+;(function($, window, document, undefined){
+
+       // our plugin constructor
+       var OnePageNav = function(elem, options){
+               this.elem = elem;
+               this.$elem = $(elem);
+               this.options = options;
+               this.metadata = this.$elem.data('plugin-options');
+               this.$win = $(window);
+               this.sections = {};
+               this.didScroll = false;
+               this.$doc = $(document);
+               this.docHeight = this.$doc.height();
+       };
+
+       // the plugin prototype
+       OnePageNav.prototype = {
+               defaults: {
+                       navItems: 'a',
+                       currentClass: 'current',
+                       changeHash: false,
+                       easing: 'swing',
+                       filter: '',
+                       scrollSpeed: 750,
+                       scrollThreshold: 0.5,
+                       begin: false,
+                       end: false,
+                       scrollChange: false
+               },
+
+               init: function() {
+                       // Introduce defaults that can be extended either
+                       // globally or using an object literal.
+                       this.config = $.extend({}, this.defaults, this.options, 
this.metadata);
+
+                       this.$nav = this.$elem.find(this.config.navItems);
+
+                       //Filter any links out of the nav
+                       if(this.config.filter !== '') {
+                               this.$nav = 
this.$nav.filter(this.config.filter);
+                       }
+
+                       //Handle clicks on the nav
+                       this.$nav.on('click.onePageNav', 
$.proxy(this.handleClick, this));
+
+                       //Get the section positions
+                       this.getPositions();
+
+                       //Handle scroll changes
+                       this.bindInterval();
+
+                       //Update the positions on resize too
+                       this.$win.on('resize.onePageNav', 
$.proxy(this.getPositions, this));
+
+                       return this;
+               },
+
+               adjustNav: function(self, $parent) {
+                       self.$elem.find('.' + 
self.config.currentClass).removeClass(self.config.currentClass);
+                       $parent.addClass(self.config.currentClass);
+               },
+
+               bindInterval: function() {
+                       var self = this;
+                       var docHeight;
+
+                       self.$win.on('scroll.onePageNav', function() {
+                               self.didScroll = true;
+                       });
+
+                       self.t = setInterval(function() {
+                               docHeight = self.$doc.height();
+
+                               //If it was scrolled
+                               if(self.didScroll) {
+                                       self.didScroll = false;
+                                       self.scrollChange();
+                               }
+
+                               //If the document height changes
+                               if(docHeight !== self.docHeight) {
+                                       self.docHeight = docHeight;
+                                       self.getPositions();
+                               }
+                       }, 250);
+               },
+
+               getHash: function($link) {
+                       return $link.attr('href').split('#')[1];
+               },
+
+               getPositions: function() {
+                       var self = this;
+                       var linkHref;
+                       var topPos;
+                       var $target;
+
+                       self.$nav.each(function() {
+                               linkHref = self.getHash($(this));
+                               $target = $('#' + linkHref);
+
+                               if($target.length) {
+                                       topPos = $target.offset().top;
+                                       self.sections[linkHref] = 
Math.round(topPos);
+                               }
+                       });
+               },
+
+               getSection: function(windowPos) {
+                       var returnValue = null;
+                       var windowHeight = Math.round(this.$win.height() * 
this.config.scrollThreshold);
+
+                       for(var section in this.sections) {
+                               if((this.sections[section] - windowHeight) < 
windowPos) {
+                                       returnValue = section;
+                               }
+                       }
+
+                       return returnValue;
+               },
+
+               handleClick: function(e) {
+                       var self = this;
+                       var $link = $(e.currentTarget);
+                       var $parent = $link.parent();
+                       var newLoc = '#' + self.getHash($link);
+
+                       if(!$parent.hasClass(self.config.currentClass)) {
+                               //Start callback
+                               if(self.config.begin) {
+                                       self.config.begin();
+                               }
+
+                               //Change the highlighted nav item
+                               self.adjustNav(self, $parent);
+
+                               //Removing the auto-adjust on scroll
+                               self.unbindInterval();
+
+                               //Scroll to the correct position
+                               self.scrollTo(newLoc, function() {
+                                       //Do we need to change the hash?
+                                       if(self.config.changeHash) {
+                                               window.location.hash = newLoc;
+                                       }
+
+                                       //Add the auto-adjust on scroll back in
+                                       self.bindInterval();
+
+                                       //End callback
+                                       if(self.config.end) {
+                                               self.config.end();
+                                       }
+                               });
+                       }
+
+                       e.preventDefault();
+               },
+
+               scrollChange: function() {
+                       var windowTop = this.$win.scrollTop();
+                       var position = this.getSection(windowTop);
+                       var $parent;
+
+                       //If the position is set
+                       if(position !== null) {
+                               $parent = this.$elem.find('a[href$="#' + 
position + '"]').parent();
+
+                               //If it's not already the current section
+                               if(!$parent.hasClass(this.config.currentClass)) 
{
+                                       //Change the highlighted nav item
+                                       this.adjustNav(this, $parent);
+
+                                       //If there is a scrollChange callback
+                                       if(this.config.scrollChange) {
+                                               
this.config.scrollChange($parent);
+                                       }
+                               }
+                       }
+               },
+
+               scrollTo: function(target, callback) {
+                       var offset = $(target).offset().top;
+
+                       $('html, body').animate({
+                               scrollTop: offset
+                       }, this.config.scrollSpeed, this.config.easing, 
callback);
+               },
+
+               unbindInterval: function() {
+                       clearInterval(this.t);
+                       this.$win.unbind('scroll.onePageNav');
+               }
+       };
+
+       OnePageNav.defaults = OnePageNav.prototype.defaults;
+
+       $.fn.onePageNav = function(options) {
+               return this.each(function() {
+                       new OnePageNav(this, options).init();
+               });
+       };
+
+})( jQuery, window , document );

http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/main.js
----------------------------------------------------------------------
diff --git a/src/main/jbake/assets/js/main.js b/src/main/jbake/assets/js/main.js
new file mode 100755
index 0000000..a89e437
--- /dev/null
+++ b/src/main/jbake/assets/js/main.js
@@ -0,0 +1,178 @@
+jQuery(function($) {
+       "use strict";
+       // Author Code Here
+
+       var owlPricing;
+       var ratio = 2;
+
+       // Window Load
+       $(window).load(function() {
+               // Preloader
+               $('.intro-tables, .parallax, header').css('opacity', '0');
+               $('.preloader').addClass('animated 
fadeOut').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend 
animationend', function() {
+                       $('.preloader').hide();
+                       $('.parallax, header').addClass('animated 
fadeIn').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend 
animationend', function() {
+                               $('.intro-tables').addClass('animated 
fadeInUp').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend 
animationend');
+                       });
+               });
+
+               // Header Init
+               if ($(window).height() > $(window).width()) {
+                       var ratio = $('.parallax').width() / 
$('.parallax').height();
+                       $('.parallax img').css('height', ($(window).height()) + 
'px');
+                       $('.parallax img').css('width', $('.parallax').height() 
* ratio + 'px');
+               }
+
+               $('header').height($(window).height() + 80);
+               $('section .cut').each(function() {
+                       if ($(this).hasClass('cut-top'))
+                               $(this).css('border-right-width', 
$(this).parent().width() + "px");
+                       else if ($(this).hasClass('cut-bottom'))
+                               $(this).css('border-left-width', 
$(this).parent().width() + "px");
+               });
+
+               // Sliders Init
+               $('.owl-schedule').owlCarousel({
+                       singleItem: true,
+                       pagination: true
+               });
+               $('.owl-testimonials').owlCarousel({
+                       singleItem: true,
+                       pagination: true
+               });
+               $('.owl-twitter').owlCarousel({
+                       singleItem: true,
+                       pagination: true
+               });
+
+               // Navbar Init
+               
$('nav').insertAfter('nav').addClass('navbar-fixed-top').css('position', 
'fixed').css('top', '0').css('margin-top', '0').removeClass('original');
+               $('.mobile-nav ul').html($('nav .navbar-nav').html());
+               $('nav.navbar-fixed-top .navbar-brand img').attr('src', 
$('nav.navbar-fixed-top .navbar-brand img').data("active-url"));
+
+               // Typing Intro Init
+               $(".typed").typewriter({
+                       speed: 60
+               });
+
+               // Popup Form Init
+               var i = 0;
+               var interval = 0.15;
+               $('.popup-form .dropdown-menu li').each(function() {
+                       $(this).css('animation-delay', i + "s");
+                       i += interval;
+               });
+               $('.popup-form .dropdown-menu li a').click(function(event) {
+                       event.preventDefault();
+                       
$(this).parent().parent().prev('button').html($(this).html());
+               });
+
+       });
+
+       // Window Resize
+       var resizeContent = function() {
+        $('#main-block').css('min-height', $(window).height() - 
$('footer').height() - (40 + 60) /*header/footer padding*/);
+    };
+       $(window).resize(resizeContent);
+       resizeContent();
+
+       // Pricing Box Click Event
+       $('.pricing .box-main').click(function() {
+               $('.pricing .box-main').removeClass('active');
+               $('.pricing .box-second').removeClass('active');
+               $(this).addClass('active');
+               $(this).next($('.box-second')).addClass('active');
+               $('#pricing').css("background-image", "url(" + 
$(this).data('img') + ")");
+               $('#pricing').css("background-size", "cover");
+       });
+
+       // Mobile Nav
+       $('body').on('click', 'nav .navbar-toggle', function() {
+               event.stopPropagation();
+               $('.mobile-nav').addClass('active');
+       });
+
+       $('body').on('click', '.mobile-nav a', function(event) {
+               $('.mobile-nav').removeClass('active');
+               if(!this.hash) return;
+               event.preventDefault();
+               if (location.pathname.replace(/^\//, '') == 
this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
+                       event.stopPropagation();
+                       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;
+                       }
+               }
+       });
+
+       $('body').on('click', '.mobile-nav a.close-link', function(event) {
+               $('.mobile-nav').removeClass('active');
+               event.preventDefault();
+       });
+
+       $('body').on('click', 'nav.original .navbar-nav a:not([data-toggle])', 
function() {
+               if (location.pathname.replace(/^\//, '') == 
this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
+                       event.stopPropagation();
+                       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;
+                       }
+               }
+       });
+
+       function centerModal() {
+               $(this).css('display', 'block');
+               var $dialog = $(this).find(".modal-dialog"),
+                       offset = ($(window).height() - $dialog.height()) / 2,
+                       bottomMargin = parseInt($dialog.css('marginBottom'), 
10);
+
+               // Make sure you don't hide the top part of the modal w/ a 
negative margin
+               // if it's longer than the screen height, and keep the margin 
equal to 
+               // the bottom margin of the modal
+               if (offset < bottomMargin) offset = bottomMargin;
+               $dialog.css("margin-top", offset);
+       }
+
+       $('.modal').on('show.bs.modal', centerModal);
+
+       $('.modal-popup .close-link').click(function(event){
+               event.preventDefault();
+               $('#modal1').modal('hide');
+       });
+
+       $(window).on("resize", function() {
+               $('.modal:visible').each(centerModal);
+       });
+
+    $(document).ready(function() {
+        // if there is any file tree
+        $('#filetree').each(function (i , v) {
+            var self = $(this);
+            self.tree({
+                data: eval(self.find('p')[0].innerHTML),
+                closedIcon: $('<i class="fa fa-folder-o"</i>;'),
+                openedIcon: $('<i class="fa fa-folder-open-o"</i>')
+            });
+            self.bind(
+                'tree.click',
+                function(event) {
+                    var node = event.node;
+                    if (node.description) 
{$('#filetreedetail').html(node.description);}
+                }
+            );
+        });
+
+        // code snippet
+        $('pre code').each(function (i, block){
+            hljs.highlightBlock(block);
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/owl.carousel.min.js
----------------------------------------------------------------------
diff --git a/src/main/jbake/assets/js/owl.carousel.min.js 
b/src/main/jbake/assets/js/owl.carousel.min.js
new file mode 100755
index 0000000..394505e
--- /dev/null
+++ b/src/main/jbake/assets/js/owl.carousel.min.js
@@ -0,0 +1,47 @@
+"function"!==typeof Object.create&&(Object.create=function(f){function 
g(){}g.prototype=f;return new g});
+(function(f,g,k){var 
l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function
 a(a){var d,e="";if("function"===typeof 
b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in 
a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var 
b=this,e;"function"===typeof 
b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof
 b.options.jsonPath?
+(e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
+this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
+(this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof
 
this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof
 this.options.afterAction&&this.options.afterAction.apply(this,
+[this.$elem])},updateVars:function(){"function"===typeof 
this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof
 
this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var
 
a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var
 a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
+g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else 
return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div
 class="owl-wrapper">').wrap('<div 
class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div 
class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
+baseClass:function(){var 
a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var
 
a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return
 
this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
+!1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return
 
a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else
 
a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
+a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
+!0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var
 
a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var
 a=
+this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var 
d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
+this.options.items)},max:function(){var 
a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return
 a},min:function(){return 0},loops:function(){var 
a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
+c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div
 
class="owl-controls"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var
 a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
+f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls
 
mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls
 
mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var
 a=this;a.paginationWrapper=
+f('<div 
class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls
 
mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var
 
a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
+(a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var
 
a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
+f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
+this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
+this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else
 return 
this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
+this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else
 return 
this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var 
c=this;if(c.isTransition)return!1;"function"===typeof 
c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return
 c.swapSpeed(0),
+!0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
+c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof
 
this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
+this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof
 
this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
+checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var 
a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof
 a&&this.$owlWrapper.css(this.addCssSpeed(a))},
+addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms 
ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms 
ease",transition:"all "+a+"ms 
ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px,
 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 
0px)","-o-transform":"translate3d("+a+"px, 0px, 
0px)","-ms-transform":"translate3d("+
+a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 
0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var
 
e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var
 a=k.createElement("div");a.style.cssText="  -moz-transform:translate3d(0px, 
0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); 
-o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 
0px, 0px); transform:translate3d(0px, 0px, 0px)";
+a=a.style.cssText.match(/translate3d\(0px, 0px, 
0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in
 
g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var
 
a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl
 mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl 
mouseup.owl"]:
+!1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl
 
touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return
 f(a.target).is("input, textarea, select, option")})},
+gestures:function(){function a(a){if(void 
0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 
0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 
0===a.pageX)return{x:a.clientX,y:a.clientY}}}function 
b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function
 
e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
+"function"===typeof 
d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void
 
0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
+function c(a){a=a.originalEvent||a||g.event;var 
c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
+a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var 
d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var
 
e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
+!1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var
 
a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
+a=0);return a},closestItem:function(){var 
a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
+(c=b[d+1],a.currentItem=d+1))});return 
a.currentItem},moveDirection:function(){var 
a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return
 a},customEvents:function(){var 
a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
+a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var
 
a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var
 
a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof
 c.data("src")?
+b.data("owl-loaded","loaded"):(void 
0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function
 
e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof
 d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
+[d.$elem])}function 
c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var 
d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function
 a(){var 
a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function
 b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
+100):e.wrapperOuter.css("height","")}var 
e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 
0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof
 a.naturalWidth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var 
a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
+this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var
 
a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
+"px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd
 oAnimationEnd MSAnimationEnd 
animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd 
MSAnimationEnd 
animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd 
oAnimationEnd MSAnimationEnd 
animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd 
oAnimationEnd MSAnimationEnd 
animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
+b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl
 owl mousedown.disableTextSelect");
+f(k).off(".owl 
owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
+a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var 
e;if(!a)return!1;if(0===this.$elem.children().length)return 
this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 
0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void
 
0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return
 this.each(function(){if(!0===
+f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var 
b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
+responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/tooltip.js
----------------------------------------------------------------------
diff --git a/src/main/jbake/assets/js/tooltip.js 
b/src/main/jbake/assets/js/tooltip.js
new file mode 100755
index 0000000..1f3e855
--- /dev/null
+++ b/src/main/jbake/assets/js/tooltip.js
@@ -0,0 +1,304 @@
+;(function ($, Formstone, undefined) {
+
+       "use strict";
+
+       /**
+        * @method private
+        * @name construct
+        * @description Builds instance.
+        * @param data [object] "Instance data"
+        */
+
+       function construct(data) {
+               this.on(Events.mouseEnter, data, onMouseEnter);
+       }
+
+       /**
+        * @method private
+        * @name destruct
+        * @description Tears down instance.
+        * @param data [object] "Instance data"
+        */
+
+       function destruct(data) {
+               removeTooltip();
+
+               this.off(Events.namespace);
+       }
+
+       /**
+        * @method private
+        * @name onMouseEnter
+        * @description Handles mouse enter event.
+        * @param e [object] "Event data"
+        */
+
+       function onMouseEnter(e) {
+               removeTooltip();
+
+               var data = e.data;
+
+               data.left = e.pageX;
+               data.top  = e.pageY;
+
+               buildTooltip(data);
+       }
+
+       /**
+        * @method private
+        * @name onMouseLeave
+        * @description Handles mouse leave event.
+        * @param e [object] "Event data"
+        */
+
+       function onMouseLeave(e) {
+               var data = e.data;
+
+               Functions.clearTimer(data.timer);
+
+               removeTooltip();
+       }
+
+       /**
+        * @method private
+        * @name onMouseLeave
+        * @description Handles mouse move event.
+        * @param e [object] "Event data"
+        */
+
+       function onMouseMove(e) {
+               positionTooltip(e.pageX, e.pageY);
+       }
+
+       /**
+        * @method private
+        * @name buildTooltip
+        * @description Builds new tooltip instance.
+        * @param data [object] "Instance data"
+        */
+
+       function buildTooltip(data) {
+               removeTooltip();
+
+               var html = '';
+
+               html += '<div class="';
+               html += [RawClasses.base, RawClasses[data.direction] ].join(" 
");
+               html += '">';
+               html += '<div class="' + RawClasses.content + '">';
+               html += data.formatter.call(data.$el, data);
+               html += '<span class="' + RawClasses.caret + '"></span>';
+               html += '</div>';
+               html += '</div>';
+
+               Instance = {
+                       $tooltip    : $(html),
+                       $el         : data.$el
+               };
+
+               Formstone.$body.append(Instance.$tooltip);
+
+               var $content = Instance.$tooltip.find(Classes.content),
+                       $caret   = Instance.$tooltip.find(Classes.caret),
+
+                       offset = data.$el.offset(),
+                       height = data.$el.outerHeight(),
+                       width  = data.$el.outerWidth(),
+
+                       tooltipLeft     = 0,
+                       tooltipTop      = 0,
+                       contentLeft     = 0,
+                       contentTop      = 0,
+                       caretLeft       = false,
+                       caretTop        = false,
+
+                       caretHeight     = $caret.outerHeight(true),
+                       caretWidth      = $caret.outerWidth(true),
+                       contentHeight   = $content.outerHeight(true),
+                       contentWidth    = $content.outerWidth(true);
+
+               // position content
+               if (data.direction === "right" || data.direction === "left") {
+                       caretTop   = (contentHeight - caretHeight) / 2;
+                       contentTop = -contentHeight / 2;
+
+                       if (data.direction === "right") {
+                               contentLeft = data.margin;
+                       } else if (data.direction === "left") {
+                               contentLeft = -(contentWidth + data.margin);
+                       }
+               } else {
+                       caretLeft = (contentWidth - caretWidth) / 2;
+                       contentLeft = -contentWidth / 2;
+
+                       if (data.direction === "bottom") {
+                               contentTop = data.margin;
+                       } else if (data.direction === "top") {
+                               contentTop = -(contentHeight + data.margin);
+                       }
+               }
+
+               // Modify Dom
+               $content.css({
+                       top:  contentTop,
+                       left: contentLeft
+               });
+
+               $caret.css({
+                       top:  caretTop,
+                       left: caretLeft
+               });
+
+               // Position tooltip
+               if (data.follow) {
+                       data.$el.on(Events.mouseMove, data, onMouseMove);
+               } else {
+                       if (data.match) {
+                               if (data.direction === "right" || 
data.direction === "left") {
+                                       tooltipTop = data.top; // mouse pos
+
+                                       if (data.direction === "right") {
+                                               tooltipLeft = offset.left + 
width;
+                                       } else if (data.direction === "left") {
+                                               tooltipLeft = offset.left;
+                                       }
+                               } else {
+                                       tooltipLeft = data.left; // mouse pos
+
+                                       if (data.direction === "bottom") {
+                                               tooltipTop = offset.top + 
height;
+                                       } else if (data.direction === "top") {
+                                               tooltipTop = offset.top;
+                                       }
+                               }
+                       } else {
+                               if (data.direction === "right" || 
data.direction === "left") {
+                                       tooltipTop = offset.top + (height / 2);
+
+                                       if (data.direction === "right") {
+                                               tooltipLeft = offset.left + 
width;
+                                       } else if (data.direction === "left") {
+                                               tooltipLeft = offset.left;
+                                       }
+                               } else {
+                                       tooltipLeft = offset.left + (width / 2);
+
+                                       if (data.direction === "bottom") {
+                                               tooltipTop = offset.top + 
height;
+                                       } else if (data.direction === "top") {
+                                               tooltipTop = offset.top;
+                                       }
+                               }
+                       }
+
+                       positionTooltip(tooltipLeft, tooltipTop);
+               }
+
+               data.timer = Functions.startTimer(data.timer, data.delay, 
function() {
+                       Instance.$tooltip.addClass(RawClasses.visible);
+               });
+
+               data.$el.one(Events.mouseLeave, data, onMouseLeave);
+       }
+
+       /**
+        * @method private
+        * @name positionTooltip
+        * @description Positions active tooltip instance.
+        * @param left [int] "Left position"
+        * @param top [int] "Top position"
+        */
+
+       function positionTooltip(left, top) {
+               if (Instance) {
+                       Instance.$tooltip.css({
+                               left : left,
+                               top  : top
+                       });
+               }
+       }
+
+       /**
+        * @method private
+        * @name removeTooltip
+        * @description Removes active tooltip instance.
+        */
+
+       function removeTooltip() {
+               if (Instance) {
+                       Instance.$el.off( [Events.mouseMove, 
Events.mouseLeave].join(" ") );
+
+                       Instance.$tooltip.remove();
+                       Instance = null;
+               }
+       }
+
+       /**
+        * @method private
+        * @name format
+        * @description Formats tooltip text.
+        * @return [string] "Tooltip text"
+        */
+
+       function format(data) {
+               return this.data("title");
+       }
+
+       /**
+        * @plugin
+        * @name Tooltip
+        * @description A jQuery plugin for simple tooltips.
+        * @type widget
+        * @dependency core.js
+        */
+
+       var Plugin = Formstone.Plugin("tooltip", {
+                       widget: true,
+
+                       /**
+                        * @options
+                        * @param delay [int] <0> "Hover delay"
+                        * @param direction [string] <'top'> "Tooltip direction"
+                        * @param follow [boolean] <false> "Flag to follow 
mouse"
+                        * @param formatter [function] <$.noop> "Text format 
function"
+                        * @param margin [int] <15> "Tooltip margin"
+                        * @param match [boolean] <false> "Flag to match mouse 
position"
+                        */
+
+                       defaults: {
+                               delay        : 0,
+                               direction    : "top",
+                               follow       : false,
+                               formatter    : format,
+                               margin       : 15,
+                               match        : false
+                       },
+
+                       classes: [
+                               "content",
+                               "caret",
+                               "visible",
+                               "top",
+                               "bottom",
+                               "right",
+                               "left"
+                       ],
+
+                       methods: {
+                               _construct    : construct,
+                               _destruct     : destruct
+                       }
+               }),
+
+               // Localize References
+
+               Classes       = Plugin.classes,
+               RawClasses    = Classes.raw,
+               Events        = Plugin.events,
+               Functions     = Plugin.functions,
+
+               // Singleton
+
+               Instance     = null;
+
+})(jQuery, Formstone);
\ No newline at end of file

Reply via email to