ZEPPELIN-412 Documentation based on Zeppelin version (website)

Together with #430, it addresses 
https://issues.apache.org/jira/browse/ZEPPELIN-412

* gh-pages branch will serve document version independent part of the website.
* per version documentation will be served by 'docs' directory in main source 
tree.

Following is screenshot of website from this PR.

![image](https://cloud.githubusercontent.com/assets/1540981/11163353/2ecbc8a2-8b0f-11e5-9d68-3c1bbe78ddb8.png)

Author: Lee moon soo <[email protected]>

Closes #431 from Leemoonsoo/gh-pages-ZEPPELIN-412 and squashes the following 
commits:

cd6dfe1 [Lee moon soo] ZEPPELIN-412 zeppelin website


Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/71db6d57
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/71db6d57
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/71db6d57

Branch: refs/heads/gh-pages
Commit: 71db6d57e711ba1eeca01422d2c00f240294ba29
Parents: 2292dfa
Author: Lee moon soo <[email protected]>
Authored: Sat Nov 14 20:23:56 2015 +0900
Committer: Lee moon soo <[email protected]>
Committed: Wed Nov 18 09:10:16 2015 +0900

----------------------------------------------------------------------
 404.html                                        |    1 +
 Gemfile                                         |   17 +
 Gemfile.lock                                    |   61 +
 README.md                                       |   37 +-
 Rakefile                                        |  310 +
 _config.yml                                     |  134 +
 _includes/JB/analytics                          |   18 +
 _includes/JB/analytics-providers/getclicky      |   12 +
 _includes/JB/analytics-providers/google-classic |   11 +
 .../JB/analytics-providers/google-universal     |   11 +
 _includes/JB/analytics-providers/mixpanel       |   11 +
 _includes/JB/analytics-providers/piwik          |   10 +
 _includes/JB/categories_list                    |   37 +
 _includes/JB/comments                           |   16 +
 _includes/JB/comments-providers/disqus          |   14 +
 _includes/JB/comments-providers/facebook        |    9 +
 _includes/JB/comments-providers/intensedebate   |    6 +
 _includes/JB/comments-providers/livefyre        |    6 +
 _includes/JB/liquid_raw                         |   32 +
 _includes/JB/pages_list                         |   39 +
 _includes/JB/posts_collate                      |   55 +
 _includes/JB/setup                              |   22 +
 _includes/JB/sharing                            |    8 +
 _includes/JB/tags_list                          |   33 +
 _includes/themes/zeppelin/_jumbotron.html       |   50 +
 _includes/themes/zeppelin/_navigation.html      |   68 +
 _includes/themes/zeppelin/default.html          |   52 +
 _includes/themes/zeppelin/page.html             |   10 +
 _includes/themes/zeppelin/post.html             |   49 +
 _includes/themes/zeppelin/settings.yml          |    2 +
 _layouts/default.html                           |    6 +
 _layouts/page.html                              |    5 +
 _layouts/post.html                              |    5 +
 _plugins/debug.rb                               |   38 +
 .../zeppelin/bootstrap/css/bootstrap-theme.css  |  459 ++
 .../bootstrap/css/bootstrap-theme.min.css       |    9 +
 .../themes/zeppelin/bootstrap/css/bootstrap.css | 7100 ++++++++++++++++++
 .../fonts/glyphicons-halflings-regular.eot      |  Bin 0 -> 20290 bytes
 .../fonts/glyphicons-halflings-regular.svg      |  229 +
 .../fonts/glyphicons-halflings-regular.ttf      |  Bin 0 -> 41236 bytes
 .../fonts/glyphicons-halflings-regular.woff     |  Bin 0 -> 23292 bytes
 .../img/glyphicons-halflings-white.png          |  Bin 0 -> 8777 bytes
 .../bootstrap/img/glyphicons-halflings.png      |  Bin 0 -> 12799 bytes
 .../themes/zeppelin/bootstrap/js/bootstrap.js   | 2002 +++++
 .../zeppelin/bootstrap/js/bootstrap.min.js      |    9 +
 assets/themes/zeppelin/css/style.css            |  371 +
 assets/themes/zeppelin/css/syntax.css           |   60 +
 assets/themes/zeppelin/img/body-bg.jpg          |  Bin 0 -> 3188 bytes
 assets/themes/zeppelin/img/graph1.png           |  Bin 0 -> 19462 bytes
 assets/themes/zeppelin/img/graph2.png           |  Bin 0 -> 22596 bytes
 assets/themes/zeppelin/img/header-bg.jpg        |  Bin 0 -> 10442 bytes
 assets/themes/zeppelin/img/highlight-bg.jpg     |  Bin 0 -> 34222 bytes
 assets/themes/zeppelin/img/interpreter.png      |  Bin 0 -> 36035 bytes
 assets/themes/zeppelin/img/notebook.png         |  Bin 0 -> 120352 bytes
 .../zeppelin/img/screenshots/collaboration.png  |  Bin 0 -> 10901 bytes
 .../img/screenshots/display_angular.png         |  Bin 0 -> 69621 bytes
 .../img/screenshots/display_angular1.png        |  Bin 0 -> 97217 bytes
 .../img/screenshots/display_angular2.png        |  Bin 0 -> 94041 bytes
 .../img/screenshots/display_angular3.png        |  Bin 0 -> 76267 bytes
 .../zeppelin/img/screenshots/display_html.png   |  Bin 0 -> 28401 bytes
 .../zeppelin/img/screenshots/display_image.png  |  Bin 0 -> 25969 bytes
 .../zeppelin/img/screenshots/display_table.png  |  Bin 0 -> 30912 bytes
 .../zeppelin/img/screenshots/display_table1.png |  Bin 0 -> 41254 bytes
 .../img/screenshots/display_table_html.png      |  Bin 0 -> 33133 bytes
 .../zeppelin/img/screenshots/display_text.png   |  Bin 0 -> 21517 bytes
 .../zeppelin/img/screenshots/display_text1.png  |  Bin 0 -> 22977 bytes
 .../zeppelin/img/screenshots/form_input.png     |  Bin 0 -> 16832 bytes
 .../img/screenshots/form_input_default.png      |  Bin 0 -> 15299 bytes
 .../img/screenshots/form_input_default_prog.png |  Bin 0 -> 16223 bytes
 .../img/screenshots/form_input_prog.png         |  Bin 0 -> 17602 bytes
 .../zeppelin/img/screenshots/form_select.png    |  Bin 0 -> 19207 bytes
 .../img/screenshots/form_select_displayname.png |  Bin 0 -> 20191 bytes
 .../img/screenshots/form_select_prog.png        |  Bin 0 -> 26119 bytes
 .../img/screenshots/homepage_notebook_id.png    |  Bin 0 -> 18950 bytes
 .../img/screenshots/homepage_notebook_list.png  |  Bin 0 -> 35186 bytes
 .../img/screenshots/interpreter_create.png      |  Bin 0 -> 10591 bytes
 .../img/screenshots/interpreter_setting.png     |  Bin 0 -> 14602 bytes
 .../screenshots/interpreter_setting_spark.png   |  Bin 0 -> 40237 bytes
 .../zeppelin/img/screenshots/link_paragraph.png |  Bin 0 -> 17113 bytes
 .../zeppelin/img/screenshots/markdown.png       |  Bin 0 -> 22145 bytes
 .../screenshots/multiple_language_backend.png   |  Bin 0 -> 16491 bytes
 .../zeppelin/img/screenshots/notebook.png       |  Bin 0 -> 64398 bytes
 .../themes/zeppelin/img/screenshots/pivot.png   |  Bin 0 -> 76003 bytes
 .../themes/zeppelin/img/screenshots/publish.png |  Bin 0 -> 54956 bytes
 .../themes/zeppelin/img/screenshots/spark.png   |  Bin 0 -> 48215 bytes
 .../zeppelin/img/screenshots/sparksql.png       |  Bin 0 -> 36004 bytes
 .../zeppelin/img/screenshots/visualization.png  |  Bin 0 -> 39545 bytes
 assets/themes/zeppelin/img/sidebar-bg.jpg       |  Bin 0 -> 3200 bytes
 assets/themes/zeppelin/img/spark_logo.jpg       |  Bin 0 -> 32200 bytes
 assets/themes/zeppelin/img/zeppelin_logo.png    |  Bin 0 -> 16393 bytes
 atom.xml                                        |   28 +
 community.md                                    |   33 +
 doap.rdf                                        |   59 +
 download.md                                     |   87 +
 index.md                                        |  128 +
 robot.txt                                       |   14 +
 rss.xml                                         |   28 +
 rsync.sh                                        |    1 +
 screenshots.md                                  |   45 +
 sitemap.txt                                     |    8 +
 100 files changed, 11864 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/404.html
----------------------------------------------------------------------
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..6904bcd
--- /dev/null
+++ b/404.html
@@ -0,0 +1 @@
+Sorry this page does not exist =(

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Gemfile
----------------------------------------------------------------------
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..655775a
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+source 'https://rubygems.org'
+gem 'github-pages'

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Gemfile.lock
----------------------------------------------------------------------
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..170579e
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,61 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    RedCloth (4.2.9)
+    classifier (1.3.3)
+      fast-stemmer (>= 1.0.0)
+    colorator (0.1)
+    commander (4.1.5)
+      highline (~> 1.6.11)
+    fast-stemmer (1.0.2)
+    ffi (1.9.3)
+    github-pages (10)
+      RedCloth (= 4.2.9)
+      jekyll (= 1.3.0)
+      kramdown (= 1.2.0)
+      liquid (= 2.5.4)
+      maruku (= 0.6.1)
+      rdiscount (= 2.1.7)
+      redcarpet (= 2.3.0)
+    highline (1.6.20)
+    jekyll (1.3.0)
+      classifier (~> 1.3)
+      colorator (~> 0.1)
+      commander (~> 4.1.3)
+      liquid (~> 2.5.2)
+      listen (~> 1.3)
+      maruku (~> 0.6.0)
+      pygments.rb (~> 0.5.0)
+      redcarpet (~> 2.3.0)
+      safe_yaml (~> 0.9.7)
+    kramdown (1.2.0)
+    liquid (2.5.4)
+    listen (1.3.1)
+      rb-fsevent (>= 0.9.3)
+      rb-inotify (>= 0.9)
+      rb-kqueue (>= 0.2)
+    maruku (0.6.1)
+      syntax (>= 1.0.0)
+    posix-spawn (0.3.6)
+    pygments.rb (0.5.4)
+      posix-spawn (~> 0.3.6)
+      yajl-ruby (~> 1.1.0)
+    rb-fsevent (0.9.3)
+    rb-inotify (0.9.2)
+      ffi (>= 0.5.0)
+    rb-kqueue (0.2.0)
+      ffi (>= 0.5.0)
+    rdiscount (2.1.7)
+    redcarpet (2.3.0)
+    safe_yaml (0.9.7)
+    syntax (1.0.0)
+    yajl-ruby (1.1.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  github-pages
+
+BUNDLED WITH
+   1.10.4

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 815b653..1e7a1aa 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,38 @@
 ## Zeppelin project website
 
-After [ZEPPELIN-279](https://issues.apache.org/jira/browse/ZEPPELIN-279) it 
was moved to master branch, under 
https://github.com/apache/incubator-zeppelin/tree/master/docs
\ No newline at end of file
+This readme will walk you through building the Zeppelin website
+
+
+## Build website
+See https://help.github.com/articles/using-jekyll-with-pages#installing-jekyll
+
+**tl;dr version:**
+
+    ruby --version >= 1.9.3
+    gem install bundler
+    bundle install
+
+*On OS X 10.9 you may need to do "xcode-select --install"*
+
+
+## Run website
+
+    bundle exec jekyll serve --watch
+
+
+## Deploy to ASF svnpubsub infra (commiters only)
+ 1. generate static website in `./_site`
+    ```
+    bundle exec jekyll build --safe
+    ```
+
+ 2. checkout ASF repo
+    ```
+    svn co https://svn.apache.org/repos/asf/incubator/zeppelin asf-zepplelin
+    ```
+ 3. copy zeppelin/_site to asf-zepplelin/site
+ 4. ```svn commit```
+
+## Adding a new page
+
+    rake page name="new-page.md"

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Rakefile
----------------------------------------------------------------------
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..176c94b
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,310 @@
+require "rubygems"
+require 'rake'
+require 'yaml'
+require 'time'
+
+SOURCE = "."
+CONFIG = {
+  'version' => "0.3.0",
+  'themes' => File.join(SOURCE, "_includes", "themes"),
+  'layouts' => File.join(SOURCE, "_layouts"),
+  'posts' => File.join(SOURCE, "_posts"),
+  'post_ext' => "md",
+  'theme_package_version' => "0.1.0"
+}
+
+# Path configuration helper
+module JB
+  class Path
+    SOURCE = "."
+    Paths = {
+      :layouts => "_layouts",
+      :themes => "_includes/themes",
+      :theme_assets => "assets/themes",
+      :theme_packages => "_theme_packages",
+      :posts => "_posts"
+    }
+    
+    def self.base
+      SOURCE
+    end
+
+    # build a path relative to configured path settings.
+    def self.build(path, opts = {})
+      opts[:root] ||= SOURCE
+      path = "#{opts[:root]}/#{Paths[path.to_sym]}/#{opts[:node]}".split("/")
+      path.compact!
+      File.__send__ :join, path
+    end
+  
+  end #Path
+end #JB
+
+# Usage: rake post title="A Title" [date="2012-02-09"] [tags=[tag1,tag2]] 
[category="category"]
+desc "Begin a new post in #{CONFIG['posts']}"
+task :post do
+  abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless 
FileTest.directory?(CONFIG['posts'])
+  title = ENV["title"] || "new-post"
+  tags = ENV["tags"] || "[]"
+  category = ENV["category"] || ""
+  slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
+  begin
+    date = (ENV['date'] ? Time.parse(ENV['date']) : 
Time.now).strftime('%Y-%m-%d')
+  rescue => e
+    puts "Error - date format must be YYYY-MM-DD, please check you typed it 
correctly!"
+    exit -1
+  end
+  filename = File.join(CONFIG['posts'], 
"#{date}-#{slug}.#{CONFIG['post_ext']}")
+  if File.exist?(filename)
+    abort("rake aborted!") if ask("#{filename} already exists. Do you want to 
overwrite?", ['y', 'n']) == 'n'
+  end
+  
+  puts "Creating new post: #{filename}"
+  open(filename, 'w') do |post|
+    post.puts "---"
+    post.puts "layout: post"
+    post.puts "title: \"#{title.gsub(/-/,' ')}\""
+    post.puts 'description: ""'
+    post.puts "category: \"#{category.gsub(/-/,' ')}\""
+    post.puts "tags: #{tags}"
+    post.puts "---"
+    post.puts "{% include JB/setup %}"
+  end
+end # task :post
+
+# Usage: rake page name="about.html"
+# You can also specify a sub-directory path.
+# If you don't specify a file extention we create an index.html at the path 
specified
+desc "Create a new page."
+task :page do
+  name = ENV["name"] || "new-page.md"
+  filename = File.join(SOURCE, "#{name}")
+  filename = File.join(filename, "index.html") if File.extname(filename) == ""
+  title = File.basename(filename, File.extname(filename)).gsub(/[\W\_]/, " 
").gsub(/\b\w/){$&.upcase}
+  if File.exist?(filename)
+    abort("rake aborted!") if ask("#{filename} already exists. Do you want to 
overwrite?", ['y', 'n']) == 'n'
+  end
+  
+  mkdir_p File.dirname(filename)
+  puts "Creating new page: #{filename}"
+  open(filename, 'w') do |post|
+    post.puts "---"
+    post.puts "layout: page"
+    post.puts "title: \"#{title}\""
+    post.puts 'description: ""'
+    post.puts "---"
+    post.puts "{% include JB/setup %}"
+  end
+end # task :page
+
+desc "Launch preview environment"
+task :preview do
+  system "jekyll serve -w"
+end # task :preview
+
+# Public: Alias - Maintains backwards compatability for theme switching.
+task :switch_theme => "theme:switch"
+
+namespace :theme do
+  
+  # Public: Switch from one theme to another for your blog.
+  #
+  # name - String, Required. name of the theme you want to switch to.
+  #        The theme must be installed into your JB framework.
+  #
+  # Examples
+  #
+  #   rake theme:switch name="the-program"
+  #
+  # Returns Success/failure messages.
+  desc "Switch between Jekyll-bootstrap themes."
+  task :switch do
+    theme_name = ENV["name"].to_s
+    theme_path = File.join(CONFIG['themes'], theme_name)
+    settings_file = File.join(theme_path, "settings.yml")
+    non_layout_files = ["settings.yml"]
+
+    abort("rake aborted: name cannot be blank") if theme_name.empty?
+    abort("rake aborted: '#{theme_path}' directory not found.") unless 
FileTest.directory?(theme_path)
+    abort("rake aborted: '#{CONFIG['layouts']}' directory not found.") unless 
FileTest.directory?(CONFIG['layouts'])
+
+    Dir.glob("#{theme_path}/*") do |filename|
+      next if non_layout_files.include?(File.basename(filename).downcase)
+      puts "Generating '#{theme_name}' layout: #{File.basename(filename)}"
+
+      open(File.join(CONFIG['layouts'], File.basename(filename)), 'w') do 
|page|
+        if File.basename(filename, ".html").downcase == "default"
+          page.puts "---"
+          page.puts File.read(settings_file) if File.exist?(settings_file)
+          page.puts "---"
+        else
+          page.puts "---"
+          page.puts "layout: default"
+          page.puts "---"
+        end 
+        page.puts "{% include JB/setup %}"
+        page.puts "{% include themes/#{theme_name}/#{File.basename(filename)} 
%}" 
+      end
+    end
+    
+    puts "=> Theme successfully switched!"
+    puts "=> Reload your web-page to check it out =)"
+  end # task :switch
+  
+  # Public: Install a theme using the theme packager.
+  # Version 0.1.0 simple 1:1 file matching.
+  #
+  # git  - String, Optional path to the git repository of the theme to be 
installed.
+  # name - String, Optional name of the theme you want to install.
+  #        Passing name requires that the theme package already exist.
+  #
+  # Examples
+  #
+  #   rake theme:install 
git="https://github.com/jekyllbootstrap/theme-twitter.git";
+  #   rake theme:install name="cool-theme"
+  #
+  # Returns Success/failure messages.
+  desc "Install theme"
+  task :install do
+    if ENV["git"]
+      manifest = theme_from_git_url(ENV["git"])
+      name = manifest["name"]
+    else
+      name = ENV["name"].to_s.downcase
+    end
+
+    packaged_theme_path = JB::Path.build(:theme_packages, :node => name)
+    
+    abort("rake aborted!
+      => ERROR: 'name' cannot be blank") if name.empty?
+    abort("rake aborted! 
+      => ERROR: '#{packaged_theme_path}' directory not found.
+      => Installable themes can be added via git. You can find some here: 
http://github.com/jekyllbootstrap
+      => To download+install run: `rake theme:install git='[PUBLIC-CLONE-URL]'`
+      => example : rake theme:install 
git='[email protected]:jekyllbootstrap/theme-the-program.git'
+    ") unless FileTest.directory?(packaged_theme_path)
+    
+    manifest = verify_manifest(packaged_theme_path)
+    
+    # Get relative paths to packaged theme files
+    # Exclude directories as they'll be recursively created. Exclude meta-data 
files.
+    packaged_theme_files = []
+    FileUtils.cd(packaged_theme_path) {
+      Dir.glob("**/*.*") { |f| 
+        next if ( FileTest.directory?(f) || f =~ 
/^(manifest|readme|packager)/i )
+        packaged_theme_files << f 
+      }
+    }
+    
+    # Mirror each file into the framework making sure to prompt if already 
exists.
+    packaged_theme_files.each do |filename|
+      file_install_path = File.join(JB::Path.base, filename)
+      if File.exist? file_install_path and ask("#{file_install_path} already 
exists. Do you want to overwrite?", ['y', 'n']) == 'n'
+        next
+      else
+        mkdir_p File.dirname(file_install_path)
+        cp_r File.join(packaged_theme_path, filename), file_install_path
+      end
+    end
+    
+    puts "=> #{name} theme has been installed!"
+    puts "=> ---"
+    if ask("=> Want to switch themes now?", ['y', 'n']) == 'y'
+      system("rake switch_theme name='#{name}'")
+    end
+  end
+
+  # Public: Package a theme using the theme packager.
+  # The theme must be structured using valid JB API.
+  # In other words packaging is essentially the reverse of installing.
+  #
+  # name - String, Required name of the theme you want to package.
+  #        
+  # Examples
+  #
+  #   rake theme:package name="twitter"
+  #
+  # Returns Success/failure messages.
+  desc "Package theme"
+  task :package do
+    name = ENV["name"].to_s.downcase
+    theme_path = JB::Path.build(:themes, :node => name)
+    asset_path = JB::Path.build(:theme_assets, :node => name)
+
+    abort("rake aborted: name cannot be blank") if name.empty?
+    abort("rake aborted: '#{theme_path}' directory not found.") unless 
FileTest.directory?(theme_path)
+    abort("rake aborted: '#{asset_path}' directory not found.") unless 
FileTest.directory?(asset_path)
+    
+    ## Mirror theme's template directory (_includes)
+    packaged_theme_path = JB::Path.build(:themes, :root => 
JB::Path.build(:theme_packages, :node => name))
+    mkdir_p packaged_theme_path
+    cp_r theme_path, packaged_theme_path
+    
+    ## Mirror theme's asset directory
+    packaged_theme_assets_path = JB::Path.build(:theme_assets, :root => 
JB::Path.build(:theme_packages, :node => name))
+    mkdir_p packaged_theme_assets_path
+    cp_r asset_path, packaged_theme_assets_path
+
+    ## Log packager version
+    packager = {"packager" => {"version" => 
CONFIG["theme_package_version"].to_s } }
+    open(JB::Path.build(:theme_packages, :node => "#{name}/packager.yml"), 
"w") do |page|
+      page.puts packager.to_yaml
+    end
+    
+    puts "=> '#{name}' theme is packaged and available at: 
#{JB::Path.build(:theme_packages, :node => name)}"
+  end
+  
+end # end namespace :theme
+
+# Internal: Download and process a theme from a git url.
+# Notice we don't know the name of the theme until we look it up in the 
manifest.
+# So we'll have to change the folder name once we get the name.
+#
+# url - String, Required url to git repository.
+#        
+# Returns theme manifest hash
+def theme_from_git_url(url)
+  tmp_path = JB::Path.build(:theme_packages, :node => "_tmp")
+  abort("rake aborted: system call to git clone failed") if !system("git clone 
#{url} #{tmp_path}")
+  manifest = verify_manifest(tmp_path)
+  new_path = JB::Path.build(:theme_packages, :node => manifest["name"])
+  if File.exist?(new_path) && ask("=> #{new_path} theme package already 
exists. Override?", ['y', 'n']) == 'n'
+    remove_dir(tmp_path)
+    abort("rake aborted: '#{manifest["name"]}' already exists as theme 
package.")
+  end
+
+  remove_dir(new_path) if File.exist?(new_path)
+  mv(tmp_path, new_path)
+  manifest
+end
+
+# Internal: Process theme package manifest file.
+#
+# theme_path - String, Required. File path to theme package.
+#        
+# Returns theme manifest hash
+def verify_manifest(theme_path)
+  manifest_path = File.join(theme_path, "manifest.yml")
+  manifest_file = File.open( manifest_path )
+  abort("rake aborted: repo must contain valid manifest.yml") unless 
File.exist? manifest_file
+  manifest = YAML.load( manifest_file )
+  manifest_file.close
+  manifest
+end
+
+def ask(message, valid_options)
+  if valid_options
+    answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, 
/,'/')} ") while !valid_options.include?(answer)
+  else
+    answer = get_stdin(message)
+  end
+  answer
+end
+
+def get_stdin(message)
+  print message
+  STDIN.gets.chomp
+end
+
+#Load custom rake scripts
+Dir['_rake/*.rake'].each { |r| load r }

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_config.yml
----------------------------------------------------------------------
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..ee0e727
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,134 @@
+# This is the default format. 
+# For more see: http://jekyllrb.com/docs/permalinks/
+permalink: /:categories/:year/:month/:day/:title 
+
+exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md", 
"vendor", "node_modules", "scss"]
+pygments: true
+markdown: redcarpet
+encoding: utf-8
+
+# Themes are encouraged to use these universal variables 
+# so be sure to set them if your theme uses them.
+#
+title : Apache Zeppelin (incubating)
+tagline: Simplify bigdata analytics
+author :
+  name : The Apache Software Foundation
+  email : [email protected]
+  github : apache
+  twitter : ASF
+  feedburner : feedname
+
+# The production_url is only used when full-domain names are needed
+# such as sitemap.txt 
+# Most places will/should use BASE_PATH to make the urls
+#
+# If you have set a CNAME (pages.github.com) set your custom domain here.
+# Else if you are pushing to username.github.io, replace with your username.
+# Finally if you are pushing to a GitHub project page, include the project 
name at the end.
+#
+production_url : http://zeppelin.incubator.apache.org
+# All Jekyll-Bootstrap specific configurations are namespaced into this hash
+#
+JB :
+  version : 0.3.0
+
+  # All links will be namespaced by BASE_PATH if defined.
+  # Links in your website should always be prefixed with {{BASE_PATH}}
+  # however this value will be dynamically changed depending on your 
deployment situation.
+  #
+  # CNAME (http://yourcustomdomain.com)
+  #   DO NOT SET BASE_PATH 
+  #   (urls will be prefixed with "/" and work relatively)
+  #
+  # GitHub Pages (http://username.github.io)
+  #   DO NOT SET BASE_PATH 
+  #   (urls will be prefixed with "/" and work relatively)
+  #
+  # GitHub Project Pages (http://username.github.io/project-name)
+  #
+  #   A GitHub Project site exists in the `gh-pages` branch of one of your 
repositories.
+  #  REQUIRED! Set BASE_PATH to: http://username.github.io/project-name
+  #
+  # CAUTION:
+  #   - When in Localhost, your site will run from root "/" regardless of 
BASE_PATH
+  #   - Only the following values are falsy: ["", null, false]
+  #   - When setting BASE_PATH it must be a valid url.
+  #     This means always setting the protocol (http|https) or prefixing with 
"/"
+  BASE_PATH : false
+
+  # By default, the asset_path is automatically defined relative to BASE_PATH 
plus the enabled theme.
+  # ex: [BASE_PATH]/assets/themes/[THEME-NAME]
+  #
+  # Override this by defining an absolute path to assets here.
+  # ex: 
+  #   http://s3.amazonaws.com/yoursite/themes/watermelon
+  #   /assets
+  #
+  ASSET_PATH : false
+
+  # These paths are to the main pages Jekyll-Bootstrap ships with.
+  # Some JB helpers refer to these paths; change them here if needed.
+  #
+  archive_path: /archive.html
+  categories_path : /categories.html
+  tags_path : /tags.html
+  atom_path : /atom.xml
+  rss_path : /rss.xml
+
+  # Settings for comments helper
+  # Set 'provider' to the comment provider you want to use.
+  # Set 'provider' to false to turn commenting off globally.
+  #
+  comments :
+    provider : disqus
+    disqus :
+      short_name : jekyllbootstrap
+    livefyre :
+      site_id : 123
+    intensedebate :
+      account : 123abc
+    facebook :
+      appid : 123
+      num_posts: 5
+      width: 580
+      colorscheme: light
+   
+  # Settings for analytics helper
+  # Set 'provider' to the analytics provider you want to use.
+  # Set 'provider' to false to turn analytics off globally.
+  #        
+  analytics :
+    provider : google_universal
+    google_classic : 
+        tracking_id : 'UA-45176241-2'
+    google_universal : 
+        tracking_id : 'UA-45176241-5'
+        domain : 'zeppelin.incubator.apache.org'
+    getclicky :
+      site_id : 
+    mixpanel :
+        token : '_MIXPANEL_TOKEN_'
+    piwik :
+        baseURL : 'myserver.tld/piwik' # Piwik installation address (without 
protocol)
+        idsite : '1'                   # the id of the site on Piwik
+
+  # Settings for sharing helper. 
+  # Sharing is for things like tweet, plusone, like, reddit buttons etc.
+  # Set 'provider' to the sharing provider you want to use.
+  # Set 'provider' to false to turn sharing off globally.
+  #
+  sharing :
+    provider : false
+    
+  # Settings for all other include helpers can be defined by creating 
+  # a hash with key named for the given helper. ex:
+  #
+  #   pages_list :
+  #     provider : "custom"   
+  #
+  # Setting any helper's provider to 'custom' will bypass the helper code
+  # and include your custom code. Your custom file must be defined at:
+  #   ./_includes/custom/[HELPER]
+  # where [HELPER] is the name of the helper you are overriding.
+  

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics b/_includes/JB/analytics
new file mode 100644
index 0000000..48d87c2
--- /dev/null
+++ b/_includes/JB/analytics
@@ -0,0 +1,18 @@
+{% if site.safe and site.JB.analytics.provider and page.JB.analytics != false 
%}
+
+{% case site.JB.analytics.provider %}
+{% when "google_classic" %}
+  {% include JB/analytics-providers/google-classic %}
+{% when "google_universal" %}
+  {% include JB/analytics-providers/google-universal %}
+{% when "getclicky" %}
+  {% include JB/analytics-providers/getclicky %}
+{% when "mixpanel" %}
+  {% include JB/analytics-providers/mixpanel %}
+{% when "piwik" %}
+  {% include JB/analytics-providers/piwik %}
+{% when "custom" %}
+  {% include custom/analytics %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics-providers/getclicky
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics-providers/getclicky 
b/_includes/JB/analytics-providers/getclicky
new file mode 100644
index 0000000..e9462f4
--- /dev/null
+++ b/_includes/JB/analytics-providers/getclicky
@@ -0,0 +1,12 @@
+<script type="text/javascript">
+var clicky_site_ids = clicky_site_ids || [];
+clicky_site_ids.push({{ site.JB.analytics.getclicky.site_id }});
+(function() {
+  var s = document.createElement('script');
+  s.type = 'text/javascript';
+  s.async = true;
+  s.src = '//static.getclicky.com/js';
+  ( document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0] ).appendChild( s );
+})();
+</script>
+<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ 
site.JB.analytics.getclicky.site_id }}ns.gif" /></p></noscript>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics-providers/google-classic
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics-providers/google-classic 
b/_includes/JB/analytics-providers/google-classic
new file mode 100644
index 0000000..af09907
--- /dev/null
+++ b/_includes/JB/analytics-providers/google-classic
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', '{{ site.JB.analytics.google_classic.tracking_id 
}}']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics-providers/google-universal
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics-providers/google-universal 
b/_includes/JB/analytics-providers/google-universal
new file mode 100644
index 0000000..dae744b
--- /dev/null
+++ b/_includes/JB/analytics-providers/google-universal
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+  (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','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', '{{ site.JB.analytics.google_universal.tracking_id }}', '{{ 
site.JB.analytics.google_universal.domain }}');
+  ga('require', 'linkid', 'linkid.js');
+  ga('send', 'pageview');
+
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics-providers/mixpanel
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics-providers/mixpanel 
b/_includes/JB/analytics-providers/mixpanel
new file mode 100644
index 0000000..4406eb0
--- /dev/null
+++ b/_includes/JB/analytics-providers/mixpanel
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+    var mpq = [];
+    mpq.push(["init", "{{ site.JB.analytics.mixpanel.token}}"]);
+    (function(){var 
b,a,e,d,c;b=document.createElement("script");b.type="text/javascript";
+    
b.async=true;b.src=(document.location.protocol==="https:"?"https:":"http:")+
+    
"//api.mixpanel.com/site_media/js/api/mixpanel.js";a=document.getElementsByTagName("script")[0];
+    a.parentNode.insertBefore(b,a);e=function(f){return function(){mpq.push(
+    
[f].concat(Array.prototype.slice.call(arguments,0)))}};d=["init","track","track_links",
+    
"track_forms","register","register_once","identify","name_tag","set_config"];for(c=0;c<
+    d.length;c++){mpq[d[c]]=e(d[c])}})();
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/analytics-providers/piwik
----------------------------------------------------------------------
diff --git a/_includes/JB/analytics-providers/piwik 
b/_includes/JB/analytics-providers/piwik
new file mode 100755
index 0000000..f016ed7
--- /dev/null
+++ b/_includes/JB/analytics-providers/piwik
@@ -0,0 +1,10 @@
+<script type="text/javascript">
+  var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ 
site.JB.analytics.piwik.baseURL }}/" : "http://{{ 
site.JB.analytics.piwik.baseURL }}/");
+  document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' 
type='text/javascript'%3E%3C/script%3E"));
+</script><script type="text/javascript">
+  try {
+    var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ 
site.JB.analytics.piwik.idsite }});
+    piwikTracker.trackPageView();
+    piwikTracker.enableLinkTracking();
+  } catch( err ) {}
+</script><noscript><p><img src="http://{{ site.JB.analytics.piwik.baseURL 
}}/piwik.php?idsite={{ site.JB.analytics.piwik.idsite }}" style="border:0" 
alt="" /></p></noscript>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/categories_list
----------------------------------------------------------------------
diff --git a/_includes/JB/categories_list b/_includes/JB/categories_list
new file mode 100644
index 0000000..83be2e2
--- /dev/null
+++ b/_includes/JB/categories_list
@@ -0,0 +1,37 @@
+{% comment %}<!--
+The categories_list include is a listing helper for categories.
+Usage:
+  1) assign the 'categories_list' variable to a valid array of tags.
+  2) include JB/categories_list
+  example:
+    <ul>
+         {% assign categories_list = site.categories %}  
+         {% include JB/categories_list %}
+       </ul>
+  
+  Notes: 
+    Categories can be either a Hash of Category objects (hashes) or an Array 
of category-names (strings).
+    The encapsulating 'if' statement checks whether categories_list is a Hash 
or Array.
+    site.categories is a Hash while page.categories is an array.
+    
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.categories_list.provider == "custom" %}
+  {% include custom/categories_list %}
+{% else %}
+  {% if categories_list.first[0] == null %}
+    {% for category in categories_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category 
}}-ref">
+               {{ category | join: "/" }} <span>{{ 
site.categories[category].size }}</span>
+       </a></li>
+    {% endfor %}
+  {% else %}
+    {% for category in categories_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ 
category[0] }}-ref">
+               {{ category[0] | join: "/" }} <span>{{ category[1].size 
}}</span>
+       </a></li>
+    {% endfor %}
+  {% endif %}
+{% endif %}
+{% assign categories_list = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/comments
----------------------------------------------------------------------
diff --git a/_includes/JB/comments b/_includes/JB/comments
new file mode 100644
index 0000000..4e9e600
--- /dev/null
+++ b/_includes/JB/comments
@@ -0,0 +1,16 @@
+{% if site.JB.comments.provider and page.comments != false %}
+
+{% case site.JB.comments.provider %}
+{% when "disqus" %}
+  {% include JB/comments-providers/disqus %}
+{% when "livefyre" %}
+  {% include JB/comments-providers/livefyre %}
+{% when "intensedebate" %}
+  {% include JB/comments-providers/intensedebate %}
+{% when "facebook" %}
+  {% include JB/comments-providers/facebook %}
+{% when "custom" %}
+  {% include custom/comments %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/comments-providers/disqus
----------------------------------------------------------------------
diff --git a/_includes/JB/comments-providers/disqus 
b/_includes/JB/comments-providers/disqus
new file mode 100644
index 0000000..618a7b7
--- /dev/null
+++ b/_includes/JB/comments-providers/disqus
@@ -0,0 +1,14 @@
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    {% if site.safe == false %}var disqus_developer = 1;{% endif %}
+    var disqus_shortname = '{{ site.JB.comments.disqus.short_name }}'; // 
required: replace example with your forum shortname
+    {% if page.wordpress_id %}var disqus_identifier = '{{page.wordpress_id}} 
{{site.production_url}}/?p={{page.wordpress_id}}';{% endif %}
+    /* * * DON'T EDIT BELOW THIS LINE * * */
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 
'text/javascript'; dsq.async = true;
+        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>Please enable JavaScript to view the <a 
href="http://disqus.com/?ref_noscript";>comments powered by 
Disqus.</a></noscript>
+<a href="http://disqus.com"; class="dsq-brlink">blog comments powered by <span 
class="logo-disqus">Disqus</span></a>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/comments-providers/facebook
----------------------------------------------------------------------
diff --git a/_includes/JB/comments-providers/facebook 
b/_includes/JB/comments-providers/facebook
new file mode 100644
index 0000000..6b3e5e0
--- /dev/null
+++ b/_includes/JB/comments-providers/facebook
@@ -0,0 +1,9 @@
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ 
site.JB.comments.facebook.appid }}";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+<div class="fb-comments" data-href="{{ site.production_url }}" 
data-num-posts="{{ site.JB.comments.facebook.num_posts }}" data-width="{{ 
site.JB.comments.facebook.width }}" data-colorscheme="{{ 
site.JB.comments.facebook.colorscheme }}"></div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/comments-providers/intensedebate
----------------------------------------------------------------------
diff --git a/_includes/JB/comments-providers/intensedebate 
b/_includes/JB/comments-providers/intensedebate
new file mode 100644
index 0000000..ab0c3c9
--- /dev/null
+++ b/_includes/JB/comments-providers/intensedebate
@@ -0,0 +1,6 @@
+<script>
+var idcomments_acct = '{{ site.JB.comments.intensedebate.account }}';
+var idcomments_post_id;
+var idcomments_post_url;
+</script>
+<script type="text/javascript" 
src="http://www.intensedebate.com/js/genericLinkWrapperV2.js";></script>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/comments-providers/livefyre
----------------------------------------------------------------------
diff --git a/_includes/JB/comments-providers/livefyre 
b/_includes/JB/comments-providers/livefyre
new file mode 100644
index 0000000..704b803
--- /dev/null
+++ b/_includes/JB/comments-providers/livefyre
@@ -0,0 +1,6 @@
+<script type='text/javascript' 
src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
+<script type='text/javascript'>
+    var fyre = LF({
+        site_id: {{ site.JB.comments.livefyre.site_id }}
+    });
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/liquid_raw
----------------------------------------------------------------------
diff --git a/_includes/JB/liquid_raw b/_includes/JB/liquid_raw
new file mode 100644
index 0000000..a5c1783
--- /dev/null
+++ b/_includes/JB/liquid_raw
@@ -0,0 +1,32 @@
+{% comment%}<!--
+The liquid_raw helper is a way to display raw liquid code, as opposed to 
parsing it.
+Normally you'd use Liquid's built in 'raw' tag. 
+The problem is GitHub Jekyll does not support the current Liquid release.
+GitHub Jekyll supports the deprecated 'literal' tag.
+Using one will break the other if you plan to deploy to GitHub pages.
+  see: https://github.com/mojombo/jekyll/issues/425
+
+Since I don't want to mess with Liquid versions, I'll just rewrite the way I 
+intend to give liquid examples. It's not an elegant by any means:
+
+Usage: 
+  1) Define a 'text' variable with the block of liquid code you intend to 
display.
+  2) Pass the text variable to include JB/liquid_raw
+
+  example:
+  {% capture text %}|.% for tag in tags_list %.|
+    <li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| 
<span>|.{tag[1].size}.|</span></a></li>
+  |.% endfor %.|
+
+  |.% assign tags_list = null %.|{% endcapture %}    
+  {% include JB/liquid_raw %}
+  
+  As seen here, you must use "|." and ".|" as opening and closing brackets.
+-->{% endcomment%}
+
+{% if site.JB.liquid_raw.provider == "custom" %}
+  {% include custom/liquid_raw %}
+{% else %}
+  <pre><code>{{text | replace:"|.", "&#123;" | replace:".|", "&#125;" | 
replace:">", "&gt;" | replace:"<", "&lt;" }}</code></pre>
+{% endif %}
+{% assign text = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/pages_list
----------------------------------------------------------------------
diff --git a/_includes/JB/pages_list b/_includes/JB/pages_list
new file mode 100644
index 0000000..42f827a
--- /dev/null
+++ b/_includes/JB/pages_list
@@ -0,0 +1,39 @@
+{% comment %}<!--
+The pages_list include is a listing helper.
+Usage:
+  1) assign the 'pages_list' variable to a valid array of pages or posts.
+  2) include JB/pages_list
+  example:
+    <ul>
+         {% assign pages_list = site.pages %}  
+         {% include JB/pages_list %}
+       </ul>
+       
+  Grouping: (optional): 
+       assign the 'group' variable to constrain the list to only pages/posts
+       in the given group. Note you must define the group manually in the 
page/post
+       meta-data to use this feature.
+       Grouping is mainly helpful for non-post pages.
+       If you want to group posts, it's easier/better to tag them, then pass 
the tagged posts array.
+       i.e. site.tags.cool_tag (this returns an array of posts tagged: 
cool_tag)
+       
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.pages_list.provider == "custom" %}
+  {% include custom/pages_list %}
+{% else %}
+  {% for node in pages_list %}
+    {% if node.title != null %}
+      {% if group == null or group == node.group %}
+       {% if page.url == node.url %}
+       <li class="active"><a href="{{ BASE_PATH }}{{node.url}}" 
class="active">{{node.title}}</a></li>
+       {% else %}
+       <li><a href="{{ BASE_PATH }}{{node.url}}">{{node.title}}</a></li>
+       {% endif %}
+      {% endif %}
+    {% endif %}
+  {% endfor %}
+{% endif %}
+{% assign pages_list = nil %}
+{% assign group = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/posts_collate
----------------------------------------------------------------------
diff --git a/_includes/JB/posts_collate b/_includes/JB/posts_collate
new file mode 100644
index 0000000..f612ade
--- /dev/null
+++ b/_includes/JB/posts_collate
@@ -0,0 +1,55 @@
+{% comment %}<!--
+Collate_posts helper. Collated posts by year and month.
+Usage:
+  1) assign the 'posts_collate' variable to a valid array of posts.
+  2) include JB/posts_collate
+  example:
+    {% assign posts_collate = site.posts %}
+    {% include JB/posts_collate %}
+
+  Ordering:
+    Posts are displayed in reverse chronological order.
+    For normal chronological order:
+      1) Change the for loop to this:
+        => 'for post in site.posts reversed'
+      2) Next make sure to change 'post.previous.date' to:
+        => 'post.next.date'
+        
+-->{% endcomment %}
+
+{% if site.JB.posts_collate.provider == "custom" %}
+  {% include custom/posts_collate %}
+{% else %}
+  {% for post in posts_collate  %}
+    {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
+    {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
+    {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture 
%}
+    {% capture next_month %}{{ post.previous.date | date: "%B" }}{% endcapture 
%}
+  
+    {% if forloop.first %}
+      <h2>{{this_year}}</h2>
+      <h3>{{this_month}}</h3>
+      <ul>
+    {% endif %}
+  
+    <li><span>{{ post.date | date: "%B %e, %Y" }}</span> &raquo; <a href="{{ 
BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
+  
+    {% if forloop.last %}
+      </ul>
+    {% else %}
+      {% if this_year != next_year %}
+        </ul>
+        <h2>{{next_year}}</h2>
+        <h3>{{next_month}}</h3>
+        <ul>
+      {% else %}    
+        {% if this_month != next_month %}
+          </ul>
+          <h3>{{next_month}}</h3>
+          <ul>
+        {% endif %}
+      {% endif %}
+    {% endif %}
+  {% endfor %}
+{% endif %}
+{% assign posts_collate = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/setup
----------------------------------------------------------------------
diff --git a/_includes/JB/setup b/_includes/JB/setup
new file mode 100644
index 0000000..efcd84b
--- /dev/null
+++ b/_includes/JB/setup
@@ -0,0 +1,22 @@
+{% capture jbcache %}
+  <!--
+  - Dynamically set liquid variables for working with URLs/paths
+  -->
+  {% if site.JB.setup.provider == "custom" %}
+    {% include custom/setup %}
+  {% else %}
+    {% if site.safe and site.JB.BASE_PATH and site.JB.BASE_PATH != '' %}
+      {% assign BASE_PATH = site.JB.BASE_PATH %}
+      {% assign HOME_PATH = site.JB.BASE_PATH %}
+    {% else %}
+      {% assign BASE_PATH = nil %}
+      {% assign HOME_PATH = "/" %}
+    {% endif %}
+
+    {% if site.JB.ASSET_PATH %}
+      {% assign ASSET_PATH = site.JB.ASSET_PATH %}
+    {% else %}
+      {% capture ASSET_PATH %}{{ BASE_PATH }}/assets/themes/{{ page.theme.name 
}}{% endcapture %}
+    {% endif %}  
+  {% endif %}
+{% endcapture %}{% assign jbcache = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/sharing
----------------------------------------------------------------------
diff --git a/_includes/JB/sharing b/_includes/JB/sharing
new file mode 100644
index 0000000..f5b1151
--- /dev/null
+++ b/_includes/JB/sharing
@@ -0,0 +1,8 @@
+{% if site.safe and site.JB.sharing.provider and page.JB.sharing != false %}
+
+{% case site.JB.sharing.provider %}
+{% when "custom" %}
+  {% include custom/sharing %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/tags_list
----------------------------------------------------------------------
diff --git a/_includes/JB/tags_list b/_includes/JB/tags_list
new file mode 100644
index 0000000..8eb62a7
--- /dev/null
+++ b/_includes/JB/tags_list
@@ -0,0 +1,33 @@
+{% comment %}<!--
+The tags_list include is a listing helper for tags.
+Usage:
+  1) assign the 'tags_list' variable to a valid array of tags.
+  2) include JB/tags_list
+  example:
+    <ul>
+         {% assign tags_list = site.tags %}  
+         {% include JB/tags_list %}
+       </ul>
+  
+  Notes: 
+    Tags can be either a Hash of tag objects (hashes) or an Array of tag-names 
(strings).
+    The encapsulating 'if' statement checks whether tags_list is a Hash or 
Array.
+    site.tags is a Hash while page.tags is an array.
+    
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.tags_list.provider == "custom" %}
+  {% include custom/tags_list %}
+{% else %}
+  {% if tags_list.first[0] == null %}
+    {% for tag in tags_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag }}-ref">{{ 
tag }} <span>{{ site.tags[tag].size }}</span></a></li>
+    {% endfor %}
+  {% else %}
+    {% for tag in tags_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag[0] 
}}-ref">{{ tag[0] }} <span>{{ tag[1].size }}</span></a></li>
+    {% endfor %}
+  {% endif %}
+{% endif %}
+{% assign tags_list = nil %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/_jumbotron.html
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/_jumbotron.html 
b/_includes/themes/zeppelin/_jumbotron.html
new file mode 100644
index 0000000..0f43f0b
--- /dev/null
+++ b/_includes/themes/zeppelin/_jumbotron.html
@@ -0,0 +1,50 @@
+
+{% if page.url == '/index.html' %}
+    <div class="jumbotron">
+      <div class="container">
+        <div class="row">
+          <div class="col-md-5">
+            <h1>Zeppelin</h1>
+            <p>Simplyfying data analytics</p>
+          </div>
+          <div class="col-md-6 col-md-offset-1">
+            <div id="myCarousel" class="carousel slide" data-ride="carousel">
+              <!-- Indicators -->
+              <ol class="carousel-indicators">
+                <li data-target="#myCarousel" data-slide-to="0" 
class="active"></li>
+                <li data-target="#myCarousel" data-slide-to="1"></li>
+              </ol>
+              <div class="carousel-inner">
+                <div class="item active">
+                  <div class="container">
+                    <div class="carousel-caption">
+                      <h3></h3>
+                      <a href="./screenshots.html"><img class="thumbnail" 
src="assets/themes/zeppelin/img/screenshots/notebook.png" /></a>
+                      <p></p>
+                    </div>
+                  </div>
+                </div>
+                <div class="item">
+                  <div class="container">
+                    <div class="carousel-caption">
+                      <a href="./screenshots.html"><img class="thumbnail" 
src="assets/themes/zeppelin/img/screenshots/sparksql.png" /></a>
+                    </div>
+                  </div>
+                </div>
+              </div>
+              <a class="left carousel-control" href="#myCarousel" 
data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
+              <a class="right carousel-control" href="#myCarousel" 
data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
+            </div>
+
+          </div>
+        </div>
+      </div>
+    </div>
+{% else %}
+    <div class="jumbotron small">
+      <div class="container">
+        <div class="title">{{page.title}}</div><div 
class="subtitle">{{page.subtitle}}</div>
+       <p class="description">{{page.description}}</p>
+      </div>
+    </div>
+{% endif %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/_navigation.html
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/_navigation.html 
b/_includes/themes/zeppelin/_navigation.html
new file mode 100644
index 0000000..6aa4c09
--- /dev/null
+++ b/_includes/themes/zeppelin/_navigation.html
@@ -0,0 +1,68 @@
+    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" 
data-target=".navbar-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/">
+            <img src="/assets/themes/zeppelin/img/zeppelin_logo.png" 
width="50" alt="I'm zeppelin">
+            Apache Zeppelin <small>(incubating)</small>
+          </a>
+        </div>
+        <nav class="navbar-collapse collapse" role="navigation">
+          <ul class="nav navbar-nav">
+            {% assign pages_list = site.pages %}
+            {% assign group = 'nav-left' %}
+            {% include JB/pages_list %}
+          </ul>
+          <ul class="nav navbar-nav navbar-right">
+            {% assign pages_list = site.pages %}
+            {% assign group = 'nav-right' %}
+            {% include JB/pages_list %}
+
+            <!-- Docs -->
+            <li id="docs">
+              <a href="#" data-toggle="dropdown" 
class="dropdown-toggle">Docs<b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li><span><b>Release</b><span></li>
+                <li><a href="docs/0.5.5-incubating">0.5.5-incubating</a></li>
+                <li><a href="docs/0.5.0-incubating">0.5.0-incubating</a></li>
+                <li role="separator" class="divider"></li>
+                <li><span><b>Snapshot</b> (development)<span></li>             
   
+                <li><a 
href="docs/0.6.0-incubating-SNAPSHOT">0.6.0-incubating-SNAPSHOT</a></li>
+              </ul>
+            </li>
+            
+            <li><a 
href="https://github.com/apache/incubator-zeppelin";>GitHub</a></li>
+         
+            <!-- Apache -->
+            <li id="apache">
+              <a href="#" data-toggle="dropdown" 
class="dropdown-toggle">Apache<b class="caret"></b></a>
+               <ul class="dropdown-menu">
+                <li><a 
href="http://www.apache.org/foundation/how-it-works.html";>Apache Software 
Foundation</a></li>
+                <li><a href="http://www.apache.org/licenses/";>Apache 
License</a></li>
+                <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+                <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+            </ul>
+            </li>
+          </ul>
+        </nav><!--/.navbar-collapse -->
+      </div>
+    </div>
+
+{% if page.title == "Zeppelin" %}
+<div class="jumbotron">
+  <div class="container">
+    <h1>Apache Zeppelin <small>(incubating)</small></h1>
+    <p>A web-based notebook that enables interactive data analytics. <br/>
+      You can make beautiful data-driven, interactive and collaborative 
documents with SQL, Scala and more.
+    </p>
+    <p><a href="http://youtu.be/_PQbVH_aO5E"; target="_zeppelinVideo" 
class="btn btn-primary btn-lg bigFingerButton" role="button">Watch the video</a>
+
+       <a href="./download.html" class="btn btn-primary btn-lg 
bigFingerButton" role="button">Get Zeppelin</a></p>
+  </div>
+</div>
+{% endif %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/default.html
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/default.html 
b/_includes/themes/zeppelin/default.html
new file mode 100644
index 0000000..29c2be2
--- /dev/null
+++ b/_includes/themes/zeppelin/default.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>{{ page.title }}</title>
+    {% if page.description %}<meta name="description" content="{{ 
page.description }}">{% endif %}
+    <meta name="author" content="{{ site.author.name }}">
+
+    <!-- Enable responsive viewport -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script 
src="http://html5shim.googlecode.com/svn/trunk/html5.js";></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" 
type="text/css">
+    <link href="{{ ASSET_PATH }}/css/syntax.css" rel="stylesheet"  
type="text/css" media="screen" /> 
+    <!-- Le fav and touch icons -->
+    <!-- Update these with your own images
+    <link rel="shortcut icon" href="images/favicon.ico">
+    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" 
href="images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" 
href="images/apple-touch-icon-114x114.png">
+    -->
+
+    <!-- Js -->
+    <script src="https://code.jquery.com/jquery-1.10.2.min.js";></script>
+    <script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
+
+    <!-- atom & rss feed -->
+    <link href="{{ BASE_PATH }}{{ site.JB.atom_path }}" 
type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
+    <link href="{{ BASE_PATH }}{{ site.JB.rss_path }}" 
type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
+  </head>
+
+  <body>
+    
+    {% include themes/zeppelin/_navigation.html %}
+
+    <div class="container">
+      {{ content }}
+      <hr>
+      <footer>
+        <!-- <p>&copy; {{ site.time | date: '%Y' }} {{ site.author.name 
}}</p>-->
+      </footer>
+    </div>
+
+    {% include JB/analytics %}
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/page.html
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/page.html 
b/_includes/themes/zeppelin/page.html
new file mode 100644
index 0000000..1a5f942
--- /dev/null
+++ b/_includes/themes/zeppelin/page.html
@@ -0,0 +1,10 @@
+<!--<div class="hero-unit {{ page.title | lowercase }}">
+  <h1>{% if page.tagline %} <small>{{ page.tagline }}</small>{% endif %}</h1>
+</div>
+-->
+
+<div class="row">
+  <div class="col-md-12">
+    {{ content }}
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/post.html
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/post.html 
b/_includes/themes/zeppelin/post.html
new file mode 100644
index 0000000..2774711
--- /dev/null
+++ b/_includes/themes/zeppelin/post.html
@@ -0,0 +1,49 @@
+<div class="page-header">
+  <h1>{{ page.title }} {% if page.tagline %}<small>{{page.tagline}}</small>{% 
endif %}</h1>
+</div>
+
+<div class="row-fluid post-full">
+  <div class="span12">
+    <div class="date">
+      <span>{{ page.date | date_to_long_string }}</span>
+    </div>
+    <div class="content">
+      {{ content }}
+    </div>
+
+  {% unless page.categories == empty %}
+    <ul class="tag_box inline">
+      <li><i class="icon-folder-open"></i></li>
+      {% assign categories_list = page.categories %}
+      {% include JB/categories_list %}
+    </ul>
+  {% endunless %}  
+
+  {% unless page.tags == empty %}
+    <ul class="tag_box inline">
+      <li><i class="icon-tags"></i></li>
+      {% assign tags_list = page.tags %}
+      {% include JB/tags_list %}
+    </ul>
+  {% endunless %}  
+
+    <hr>
+    <div class="pagination">
+      <ul>
+      {% if page.previous %}
+        <li class="prev"><a href="{{ BASE_PATH }}{{ page.previous.url }}" 
title="{{ page.previous.title }}">&larr; Previous</a></li>
+      {% else %}
+        <li class="prev disabled"><a>&larr; Previous</a></li>
+      {% endif %}
+        <li><a href="{{ BASE_PATH }}{{ site.JB.archive_path 
}}">Archive</a></li>
+      {% if page.next %}
+        <li class="next"><a href="{{ BASE_PATH }}{{ page.next.url }}" 
title="{{ page.next.title }}">Next &rarr;</a></li>
+      {% else %}
+        <li class="next disabled"><a>Next &rarr;</a>
+      {% endif %}
+      </ul>
+    </div>
+    <hr>
+    {% include JB/comments %}
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/settings.yml
----------------------------------------------------------------------
diff --git a/_includes/themes/zeppelin/settings.yml 
b/_includes/themes/zeppelin/settings.yml
new file mode 100644
index 0000000..8802244
--- /dev/null
+++ b/_includes/themes/zeppelin/settings.yml
@@ -0,0 +1,2 @@
+theme :
+  name : zeppelin
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_layouts/default.html
----------------------------------------------------------------------
diff --git a/_layouts/default.html b/_layouts/default.html
new file mode 100644
index 0000000..f405624
--- /dev/null
+++ b/_layouts/default.html
@@ -0,0 +1,6 @@
+---
+theme :
+ name : zeppelin
+---
+{% include JB/setup %}
+{% include themes/zeppelin/default.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_layouts/page.html
----------------------------------------------------------------------
diff --git a/_layouts/page.html b/_layouts/page.html
new file mode 100644
index 0000000..0687dca
--- /dev/null
+++ b/_layouts/page.html
@@ -0,0 +1,5 @@
+---
+layout: default
+---
+{% include JB/setup %}
+{% include themes/zeppelin/page.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_layouts/post.html
----------------------------------------------------------------------
diff --git a/_layouts/post.html b/_layouts/post.html
new file mode 100644
index 0000000..178bb88
--- /dev/null
+++ b/_layouts/post.html
@@ -0,0 +1,5 @@
+---
+layout: default
+---
+{% include JB/setup %}
+{% include themes/zeppelin/post.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_plugins/debug.rb
----------------------------------------------------------------------
diff --git a/_plugins/debug.rb b/_plugins/debug.rb
new file mode 100644
index 0000000..e1dde39
--- /dev/null
+++ b/_plugins/debug.rb
@@ -0,0 +1,38 @@
+# A simple way to inspect liquid template variables.
+# Usage:
+#  Can be used anywhere liquid syntax is parsed (templates, includes, 
posts/pages)
+#  {{ site | debug }}
+#  {{ site.posts | debug }}
+#
+require 'pp'
+module Jekyll
+  # Need to overwrite the inspect method here because the original
+  # uses < > to encapsulate the psuedo post/page objects in which case
+  # the output is taken for HTML tags and hidden from view.
+  #
+  class Post
+    def inspect
+      "#Jekyll:Post @id=#{self.id.inspect}"
+    end
+  end
+  
+  class Page
+    def inspect
+      "#Jekyll:Page @name=#{self.name.inspect}"
+    end
+  end
+  
+end # Jekyll
+  
+module Jekyll
+  module DebugFilter
+    
+    def debug(obj, stdout=false)
+      puts obj.pretty_inspect if stdout
+      "<pre>#{obj.class}\n#{obj.pretty_inspect}</pre>"
+    end
+
+  end # DebugFilter
+end # Jekyll
+
+Liquid::Template.register_filter(Jekyll::DebugFilter)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css
----------------------------------------------------------------------
diff --git a/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css 
b/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css
new file mode 100644
index 0000000..c9c347e
--- /dev/null
+++ b/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css
@@ -0,0 +1,459 @@
+/*!
+ * Bootstrap v3.0.2 by @fat and @mdo
+ * Copyright 2013 Twitter, Inc.
+ * Licensed under http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ */
+
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px 
rgba(0, 0, 0, 0.075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px 
rgba(0, 0, 0, 0.075);
+}
+
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn:active,
+.btn.active {
+  background-image: none;
+}
+
+.btn-default {
+  text-shadow: 0 1px 0 #fff;
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#ffffff), to(#e0e0e0));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+  background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);
+  background-repeat: repeat-x;
+  border-color: #dbdbdb;
+  border-color: #ccc;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', 
endColorstr='#ffe0e0e0', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-default:hover,
+.btn-default:focus {
+  background-color: #e0e0e0;
+  background-position: 0 -15px;
+}
+
+.btn-default:active,
+.btn-default.active {
+  background-color: #e0e0e0;
+  border-color: #dbdbdb;
+}
+
+.btn-primary {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#428bca), to(#2d6ca2));
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
+  background-image: -moz-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
+  background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
+  background-repeat: repeat-x;
+  border-color: #2b669a;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', 
endColorstr='#ff2d6ca2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-primary:hover,
+.btn-primary:focus {
+  background-color: #2d6ca2;
+  background-position: 0 -15px;
+}
+
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #2d6ca2;
+  border-color: #2b669a;
+}
+
+.btn-success {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#5cb85c), to(#419641));
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image: -moz-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+  background-repeat: repeat-x;
+  border-color: #3e8f3e;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', 
endColorstr='#ff419641', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-success:hover,
+.btn-success:focus {
+  background-color: #419641;
+  background-position: 0 -15px;
+}
+
+.btn-success:active,
+.btn-success.active {
+  background-color: #419641;
+  border-color: #3e8f3e;
+}
+
+.btn-warning {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f0ad4e), to(#eb9316));
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image: -moz-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+  background-repeat: repeat-x;
+  border-color: #e38d13;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', 
endColorstr='#ffeb9316', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-warning:hover,
+.btn-warning:focus {
+  background-color: #eb9316;
+  background-position: 0 -15px;
+}
+
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #eb9316;
+  border-color: #e38d13;
+}
+
+.btn-danger {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#d9534f), to(#c12e2a));
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image: -moz-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+  background-repeat: repeat-x;
+  border-color: #b92c28;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', 
endColorstr='#ffc12e2a', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-danger:hover,
+.btn-danger:focus {
+  background-color: #c12e2a;
+  background-position: 0 -15px;
+}
+
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #c12e2a;
+  border-color: #b92c28;
+}
+
+.btn-info {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#5bc0de), to(#2aabd2));
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image: -moz-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+  background-repeat: repeat-x;
+  border-color: #28a4c9;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', 
endColorstr='#ff2aabd2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-info:hover,
+.btn-info:focus {
+  background-color: #2aabd2;
+  background-position: 0 -15px;
+}
+
+.btn-info:active,
+.btn-info.active {
+  background-color: #2aabd2;
+  border-color: #28a4c9;
+}
+
+.thumbnail,
+.img-thumbnail {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
+}
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  background-color: #e8e8e8;
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f5f5f5), to(#e8e8e8));
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', 
endColorstr='#ffe8e8e8', GradientType=0);
+}
+
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  background-color: #357ebd;
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#428bca), to(#357ebd));
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', 
endColorstr='#ff357ebd', GradientType=0);
+}
+
+.navbar-default {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#ffffff), to(#f8f8f8));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
+  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', 
endColorstr='#fff8f8f8', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px 
rgba(0, 0, 0, 0.075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px 
rgba(0, 0, 0, 0.075);
+}
+
+.navbar-default .navbar-nav > .active > a {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#ebebeb), to(#f3f3f3));
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
+  background-image: -moz-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
+  background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', 
endColorstr='#fff3f3f3', GradientType=0);
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
+}
+
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
+}
+
+.navbar-inverse {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#3c3c3c), to(#222222));
+  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);
+  background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%);
+  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', 
endColorstr='#ff222222', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.navbar-inverse .navbar-nav > .active > a {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#222222), to(#282828));
+  background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%);
+  background-image: -moz-linear-gradient(top, #222222 0%, #282828 100%);
+  background-image: linear-gradient(to bottom, #222222 0%, #282828 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', 
endColorstr='#ff282828', GradientType=0);
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
+}
+
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px 
rgba(0, 0, 0, 0.05);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px 
rgba(0, 0, 0, 0.05);
+}
+
+.alert-success {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#dff0d8), to(#c8e5bc));
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+  background-repeat: repeat-x;
+  border-color: #b2dba1;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', 
endColorstr='#ffc8e5bc', GradientType=0);
+}
+
+.alert-info {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#d9edf7), to(#b9def0));
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+  background-repeat: repeat-x;
+  border-color: #9acfea;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', 
endColorstr='#ffb9def0', GradientType=0);
+}
+
+.alert-warning {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#fcf8e3), to(#f8efc0));
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+  background-repeat: repeat-x;
+  border-color: #f5e79e;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', 
endColorstr='#fff8efc0', GradientType=0);
+}
+
+.alert-danger {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f2dede), to(#e7c3c3));
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+  background-repeat: repeat-x;
+  border-color: #dca7a7;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', 
endColorstr='#ffe7c3c3', GradientType=0);
+}
+
+.progress {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#ebebeb), to(#f5f5f5));
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', 
endColorstr='#fff5f5f5', GradientType=0);
+}
+
+.progress-bar {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#428bca), to(#3071a9));
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
+  background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
+  background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', 
endColorstr='#ff3071a9', GradientType=0);
+}
+
+.progress-bar-success {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#5cb85c), to(#449d44));
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', 
endColorstr='#ff449d44', GradientType=0);
+}
+
+.progress-bar-info {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#5bc0de), to(#31b0d5));
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', 
endColorstr='#ff31b0d5', GradientType=0);
+}
+
+.progress-bar-warning {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f0ad4e), to(#ec971f));
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', 
endColorstr='#ffec971f', GradientType=0);
+}
+
+.progress-bar-danger {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#d9534f), to(#c9302c));
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', 
endColorstr='#ffc9302c', GradientType=0);
+}
+
+.list-group {
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
+}
+
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 #3071a9;
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#428bca), to(#3278b3));
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
+  background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%);
+  background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
+  background-repeat: repeat-x;
+  border-color: #3278b3;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', 
endColorstr='#ff3278b3', GradientType=0);
+}
+
+.panel {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.panel-default > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f5f5f5), to(#e8e8e8));
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', 
endColorstr='#ffe8e8e8', GradientType=0);
+}
+
+.panel-primary > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#428bca), to(#357ebd));
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', 
endColorstr='#ff357ebd', GradientType=0);
+}
+
+.panel-success > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#dff0d8), to(#d0e9c6));
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', 
endColorstr='#ffd0e9c6', GradientType=0);
+}
+
+.panel-info > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#d9edf7), to(#c4e3f3));
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', 
endColorstr='#ffc4e3f3', GradientType=0);
+}
+
+.panel-warning > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#fcf8e3), to(#faf2cc));
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', 
endColorstr='#fffaf2cc', GradientType=0);
+}
+
+.panel-danger > .panel-heading {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#f2dede), to(#ebcccc));
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+  background-repeat: repeat-x;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', 
endColorstr='#ffebcccc', GradientType=0);
+}
+
+.well {
+  background-image: -webkit-gradient(linear, left 0%, left 100%, 
from(#e8e8e8), to(#f5f5f5));
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+  background-repeat: repeat-x;
+  border-color: #dcdcdc;
+  filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', 
endColorstr='#fff5f5f5', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 
255, 255, 0.1);
+          box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 
255, 255, 0.1);
+}
\ No newline at end of file

Reply via email to