diff --git a/bin/rebuild-docs-out.sh b/bin/rebuild-docs-out.sh
index b43a289..b630889 100755
--- a/bin/rebuild-docs-out.sh
+++ b/bin/rebuild-docs-out.sh
@@ -2,7 +2,7 @@
BIN_DIR=`dirname $0`
PROJECT_HOME=$BIN_DIR/..
-OUT_DIR="$PROJECT_HOME/out"
+OUT_DIR="$PROJECT_HOME/preview/contents"
DITAMAP="$PROJECT_HOME/ja/learn/admin/Couchbase.ditamap"
[ -f $BIN_DIR/env.sh ] && . $BIN_DIR/env.sh
@@ -23,5 +23,12 @@ then
fi
echo "generating contents using $DITAMAP..."
-dita -f html5 -i $DITAMAP -o $OUT_DIR
+dita -f com.couchbase.docs.html -i $DITAMAP -o $OUT_DIR
+if [ ! -e $OUT_DIR/assets ]
+then
+ # Work around for missing assets link from some pages.
+ echo "Creating assets symlink..."
+ cd $PROJECT_HOME/preview
+ ln -s contents/assets assets
+fi
diff --git a/index.html b/index.html
index 78ae488..da9f87d 100644
--- a/index.html
+++ b/index.html
@@ -2,11 +2,11 @@
SYSTEM "about:legacy-compat">
- The Tudors
-
+ Couchbase Server ドキュメント(プレビュー)
+
- This page has moved to a
+ This page has moved to a
preview.
diff --git a/preview/assets/fonts/kievitot-bold.eot b/preview/assets/fonts/kievitot-bold.eot
new file mode 100644
index 0000000..6a17c7f
Binary files /dev/null and b/preview/assets/fonts/kievitot-bold.eot differ
diff --git a/preview/assets/fonts/kievitot-bold.woff b/preview/assets/fonts/kievitot-bold.woff
new file mode 100644
index 0000000..0c0a673
Binary files /dev/null and b/preview/assets/fonts/kievitot-bold.woff differ
diff --git a/preview/assets/fonts/kievitot-bolditalic.eot b/preview/assets/fonts/kievitot-bolditalic.eot
new file mode 100644
index 0000000..9c787cf
Binary files /dev/null and b/preview/assets/fonts/kievitot-bolditalic.eot differ
diff --git a/preview/assets/fonts/kievitot-bolditalic.woff b/preview/assets/fonts/kievitot-bolditalic.woff
new file mode 100644
index 0000000..ace6ea0
Binary files /dev/null and b/preview/assets/fonts/kievitot-bolditalic.woff differ
diff --git a/preview/assets/fonts/kievitot-italic.eot b/preview/assets/fonts/kievitot-italic.eot
new file mode 100644
index 0000000..2f562f5
Binary files /dev/null and b/preview/assets/fonts/kievitot-italic.eot differ
diff --git a/preview/assets/fonts/kievitot-italic.woff b/preview/assets/fonts/kievitot-italic.woff
new file mode 100644
index 0000000..a948a2c
Binary files /dev/null and b/preview/assets/fonts/kievitot-italic.woff differ
diff --git a/preview/assets/fonts/kievitot-regular.eot b/preview/assets/fonts/kievitot-regular.eot
new file mode 100644
index 0000000..ff3e024
Binary files /dev/null and b/preview/assets/fonts/kievitot-regular.eot differ
diff --git a/preview/assets/fonts/kievitot-regular.woff b/preview/assets/fonts/kievitot-regular.woff
new file mode 100644
index 0000000..d58f8a9
Binary files /dev/null and b/preview/assets/fonts/kievitot-regular.woff differ
diff --git a/preview/assets/images/figures/why-nosql-2.png b/preview/assets/images/figures/why-nosql-2.png
new file mode 100644
index 0000000..db9bd87
Binary files /dev/null and b/preview/assets/images/figures/why-nosql-2.png differ
diff --git a/preview/assets/images/figures/why-nosql-3.png b/preview/assets/images/figures/why-nosql-3.png
new file mode 100644
index 0000000..668fbfa
Binary files /dev/null and b/preview/assets/images/figures/why-nosql-3.png differ
diff --git a/preview/assets/images/figures/why-nosql-4.png b/preview/assets/images/figures/why-nosql-4.png
new file mode 100644
index 0000000..8d97af8
Binary files /dev/null and b/preview/assets/images/figures/why-nosql-4.png differ
diff --git a/preview/assets/images/figures/why-nosql-5.png b/preview/assets/images/figures/why-nosql-5.png
new file mode 100644
index 0000000..159108d
Binary files /dev/null and b/preview/assets/images/figures/why-nosql-5.png differ
diff --git a/preview/assets/images/icons/article-arrow.png b/preview/assets/images/icons/article-arrow.png
new file mode 100644
index 0000000..6917e0e
Binary files /dev/null and b/preview/assets/images/icons/article-arrow.png differ
diff --git a/preview/assets/images/icons/carousel-next.png b/preview/assets/images/icons/carousel-next.png
new file mode 100644
index 0000000..ce931c7
Binary files /dev/null and b/preview/assets/images/icons/carousel-next.png differ
diff --git a/preview/assets/images/icons/carousel-previous.png b/preview/assets/images/icons/carousel-previous.png
new file mode 100644
index 0000000..c642e15
Binary files /dev/null and b/preview/assets/images/icons/carousel-previous.png differ
diff --git a/preview/assets/images/icons/close.png b/preview/assets/images/icons/close.png
new file mode 100644
index 0000000..d386d2f
Binary files /dev/null and b/preview/assets/images/icons/close.png differ
diff --git a/preview/assets/images/icons/contact-avatar.png b/preview/assets/images/icons/contact-avatar.png
new file mode 100644
index 0000000..ea44c58
Binary files /dev/null and b/preview/assets/images/icons/contact-avatar.png differ
diff --git a/preview/assets/images/icons/developer-portal-mobile.png b/preview/assets/images/icons/developer-portal-mobile.png
new file mode 100644
index 0000000..77ad871
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-mobile.png differ
diff --git a/preview/assets/images/icons/developer-portal-projects.png b/preview/assets/images/icons/developer-portal-projects.png
new file mode 100644
index 0000000..e1c0b1c
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-projects.png differ
diff --git a/preview/assets/images/icons/developer-portal-server.png b/preview/assets/images/icons/developer-portal-server.png
new file mode 100644
index 0000000..584725a
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-server.png differ
diff --git a/preview/assets/images/icons/developer-portal-sidebar-navigation--active.png b/preview/assets/images/icons/developer-portal-sidebar-navigation--active.png
new file mode 100644
index 0000000..a61487e
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-sidebar-navigation--active.png differ
diff --git a/preview/assets/images/icons/developer-portal-sidebar-navigation-toggler.png b/preview/assets/images/icons/developer-portal-sidebar-navigation-toggler.png
new file mode 100644
index 0000000..e10651b
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-sidebar-navigation-toggler.png differ
diff --git a/preview/assets/images/icons/developer-portal-sidebar-navigation.png b/preview/assets/images/icons/developer-portal-sidebar-navigation.png
new file mode 100644
index 0000000..49254fc
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-sidebar-navigation.png differ
diff --git a/preview/assets/images/icons/developer-portal-sidebar-versions-toggler--active.png b/preview/assets/images/icons/developer-portal-sidebar-versions-toggler--active.png
new file mode 100644
index 0000000..c18109a
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-sidebar-versions-toggler--active.png differ
diff --git a/preview/assets/images/icons/developer-portal-sidebar-versions-toggler.png b/preview/assets/images/icons/developer-portal-sidebar-versions-toggler.png
new file mode 100644
index 0000000..e44dde0
Binary files /dev/null and b/preview/assets/images/icons/developer-portal-sidebar-versions-toggler.png differ
diff --git a/preview/assets/images/icons/download-next.png b/preview/assets/images/icons/download-next.png
new file mode 100644
index 0000000..d0e64fa
Binary files /dev/null and b/preview/assets/images/icons/download-next.png differ
diff --git a/preview/assets/images/icons/download-previous.png b/preview/assets/images/icons/download-previous.png
new file mode 100644
index 0000000..73c30b5
Binary files /dev/null and b/preview/assets/images/icons/download-previous.png differ
diff --git a/preview/assets/images/icons/download.png b/preview/assets/images/icons/download.png
new file mode 100644
index 0000000..d692c8e
Binary files /dev/null and b/preview/assets/images/icons/download.png differ
diff --git a/preview/assets/images/icons/event-date.png b/preview/assets/images/icons/event-date.png
new file mode 100644
index 0000000..905bffe
Binary files /dev/null and b/preview/assets/images/icons/event-date.png differ
diff --git a/preview/assets/images/icons/event-location.png b/preview/assets/images/icons/event-location.png
new file mode 100644
index 0000000..f4b8bd0
Binary files /dev/null and b/preview/assets/images/icons/event-location.png differ
diff --git a/preview/assets/images/icons/event.png b/preview/assets/images/icons/event.png
new file mode 100644
index 0000000..1b98bbc
Binary files /dev/null and b/preview/assets/images/icons/event.png differ
diff --git a/preview/assets/images/icons/header-backlink.png b/preview/assets/images/icons/header-backlink.png
new file mode 100644
index 0000000..49268af
Binary files /dev/null and b/preview/assets/images/icons/header-backlink.png differ
diff --git a/preview/assets/images/icons/homepage-products-availability.png b/preview/assets/images/icons/homepage-products-availability.png
new file mode 100644
index 0000000..203ee33
Binary files /dev/null and b/preview/assets/images/icons/homepage-products-availability.png differ
diff --git a/preview/assets/images/icons/homepage-products-mobility.png b/preview/assets/images/icons/homepage-products-mobility.png
new file mode 100644
index 0000000..cc4109c
Binary files /dev/null and b/preview/assets/images/icons/homepage-products-mobility.png differ
diff --git a/preview/assets/images/icons/homepage-products-performance.png b/preview/assets/images/icons/homepage-products-performance.png
new file mode 100644
index 0000000..889faa4
Binary files /dev/null and b/preview/assets/images/icons/homepage-products-performance.png differ
diff --git a/preview/assets/images/icons/homepage-products-scalability.png b/preview/assets/images/icons/homepage-products-scalability.png
new file mode 100644
index 0000000..e5d0977
Binary files /dev/null and b/preview/assets/images/icons/homepage-products-scalability.png differ
diff --git a/preview/assets/images/icons/learn-blog.png b/preview/assets/images/icons/learn-blog.png
new file mode 100644
index 0000000..f3bd3e6
Binary files /dev/null and b/preview/assets/images/icons/learn-blog.png differ
diff --git a/preview/assets/images/icons/learn-events.png b/preview/assets/images/icons/learn-events.png
new file mode 100644
index 0000000..a7c0bbf
Binary files /dev/null and b/preview/assets/images/icons/learn-events.png differ
diff --git a/preview/assets/images/icons/learn-presentations.png b/preview/assets/images/icons/learn-presentations.png
new file mode 100644
index 0000000..900d0d7
Binary files /dev/null and b/preview/assets/images/icons/learn-presentations.png differ
diff --git a/preview/assets/images/icons/learn-training.png b/preview/assets/images/icons/learn-training.png
new file mode 100644
index 0000000..9d94cb9
Binary files /dev/null and b/preview/assets/images/icons/learn-training.png differ
diff --git a/preview/assets/images/icons/learn-webinars.png b/preview/assets/images/icons/learn-webinars.png
new file mode 100644
index 0000000..2447649
Binary files /dev/null and b/preview/assets/images/icons/learn-webinars.png differ
diff --git a/preview/assets/images/icons/learn-whitepapers.png b/preview/assets/images/icons/learn-whitepapers.png
new file mode 100644
index 0000000..b5610c6
Binary files /dev/null and b/preview/assets/images/icons/learn-whitepapers.png differ
diff --git a/preview/assets/images/icons/nav-arrow--active.png b/preview/assets/images/icons/nav-arrow--active.png
new file mode 100644
index 0000000..cc0960f
Binary files /dev/null and b/preview/assets/images/icons/nav-arrow--active.png differ
diff --git a/preview/assets/images/icons/nav-arrow.png b/preview/assets/images/icons/nav-arrow.png
new file mode 100644
index 0000000..5151f71
Binary files /dev/null and b/preview/assets/images/icons/nav-arrow.png differ
diff --git a/preview/assets/images/icons/open.png b/preview/assets/images/icons/open.png
new file mode 100644
index 0000000..7b64f26
Binary files /dev/null and b/preview/assets/images/icons/open.png differ
diff --git a/preview/assets/images/icons/pagination-next.png b/preview/assets/images/icons/pagination-next.png
new file mode 100644
index 0000000..f4746d9
Binary files /dev/null and b/preview/assets/images/icons/pagination-next.png differ
diff --git a/preview/assets/images/icons/pagination-previous.png b/preview/assets/images/icons/pagination-previous.png
new file mode 100644
index 0000000..f6690e8
Binary files /dev/null and b/preview/assets/images/icons/pagination-previous.png differ
diff --git a/preview/assets/images/icons/play.png b/preview/assets/images/icons/play.png
new file mode 100644
index 0000000..52372d3
Binary files /dev/null and b/preview/assets/images/icons/play.png differ
diff --git a/preview/assets/images/icons/press-release.png b/preview/assets/images/icons/press-release.png
new file mode 100644
index 0000000..c8a2e6c
Binary files /dev/null and b/preview/assets/images/icons/press-release.png differ
diff --git a/preview/assets/images/icons/pricing-expertise.png b/preview/assets/images/icons/pricing-expertise.png
new file mode 100644
index 0000000..0aa68e4
Binary files /dev/null and b/preview/assets/images/icons/pricing-expertise.png differ
diff --git a/preview/assets/images/icons/pricing-options.png b/preview/assets/images/icons/pricing-options.png
new file mode 100644
index 0000000..9cf3e6c
Binary files /dev/null and b/preview/assets/images/icons/pricing-options.png differ
diff --git a/preview/assets/images/icons/pricing-success.png b/preview/assets/images/icons/pricing-success.png
new file mode 100644
index 0000000..9572060
Binary files /dev/null and b/preview/assets/images/icons/pricing-success.png differ
diff --git a/preview/assets/images/icons/pricing-support.png b/preview/assets/images/icons/pricing-support.png
new file mode 100644
index 0000000..b0a86f7
Binary files /dev/null and b/preview/assets/images/icons/pricing-support.png differ
diff --git a/preview/assets/images/icons/pricing-updates.png b/preview/assets/images/icons/pricing-updates.png
new file mode 100644
index 0000000..9599ec8
Binary files /dev/null and b/preview/assets/images/icons/pricing-updates.png differ
diff --git a/preview/assets/images/icons/quote.png b/preview/assets/images/icons/quote.png
new file mode 100644
index 0000000..b63e80f
Binary files /dev/null and b/preview/assets/images/icons/quote.png differ
diff --git a/preview/assets/images/icons/related-content--close.png b/preview/assets/images/icons/related-content--close.png
new file mode 100644
index 0000000..66ebed8
Binary files /dev/null and b/preview/assets/images/icons/related-content--close.png differ
diff --git a/preview/assets/images/icons/related-content--grid.png b/preview/assets/images/icons/related-content--grid.png
new file mode 100644
index 0000000..5657a54
Binary files /dev/null and b/preview/assets/images/icons/related-content--grid.png differ
diff --git a/preview/assets/images/icons/sales-office-marker.png b/preview/assets/images/icons/sales-office-marker.png
new file mode 100644
index 0000000..f266259
Binary files /dev/null and b/preview/assets/images/icons/sales-office-marker.png differ
diff --git a/preview/assets/images/icons/search-close.png b/preview/assets/images/icons/search-close.png
new file mode 100644
index 0000000..dd61ec8
Binary files /dev/null and b/preview/assets/images/icons/search-close.png differ
diff --git a/preview/assets/images/icons/search.png b/preview/assets/images/icons/search.png
new file mode 100644
index 0000000..9595e0c
Binary files /dev/null and b/preview/assets/images/icons/search.png differ
diff --git a/preview/assets/images/icons/share-email.png b/preview/assets/images/icons/share-email.png
new file mode 100644
index 0000000..c4af359
Binary files /dev/null and b/preview/assets/images/icons/share-email.png differ
diff --git a/preview/assets/images/icons/share-facebook.png b/preview/assets/images/icons/share-facebook.png
new file mode 100644
index 0000000..f0425ff
Binary files /dev/null and b/preview/assets/images/icons/share-facebook.png differ
diff --git a/preview/assets/images/icons/share-reddit.png b/preview/assets/images/icons/share-reddit.png
new file mode 100644
index 0000000..495d34a
Binary files /dev/null and b/preview/assets/images/icons/share-reddit.png differ
diff --git a/preview/assets/images/icons/share-twitter.png b/preview/assets/images/icons/share-twitter.png
new file mode 100644
index 0000000..d4c5600
Binary files /dev/null and b/preview/assets/images/icons/share-twitter.png differ
diff --git a/preview/assets/images/icons/social-facebook.png b/preview/assets/images/icons/social-facebook.png
new file mode 100644
index 0000000..eac0d8d
Binary files /dev/null and b/preview/assets/images/icons/social-facebook.png differ
diff --git a/preview/assets/images/icons/social-googleplus.png b/preview/assets/images/icons/social-googleplus.png
new file mode 100644
index 0000000..2dc595f
Binary files /dev/null and b/preview/assets/images/icons/social-googleplus.png differ
diff --git a/preview/assets/images/icons/social-linkedin.png b/preview/assets/images/icons/social-linkedin.png
new file mode 100644
index 0000000..e4e4952
Binary files /dev/null and b/preview/assets/images/icons/social-linkedin.png differ
diff --git a/preview/assets/images/icons/social-twitter.png b/preview/assets/images/icons/social-twitter.png
new file mode 100644
index 0000000..95c7b21
Binary files /dev/null and b/preview/assets/images/icons/social-twitter.png differ
diff --git a/preview/assets/images/icons/stats-population.png b/preview/assets/images/icons/stats-population.png
new file mode 100644
index 0000000..da5e5ca
Binary files /dev/null and b/preview/assets/images/icons/stats-population.png differ
diff --git a/preview/assets/images/icons/stats-time.png b/preview/assets/images/icons/stats-time.png
new file mode 100644
index 0000000..957e11f
Binary files /dev/null and b/preview/assets/images/icons/stats-time.png differ
diff --git a/preview/assets/images/icons/stats-users.png b/preview/assets/images/icons/stats-users.png
new file mode 100644
index 0000000..ddcda39
Binary files /dev/null and b/preview/assets/images/icons/stats-users.png differ
diff --git a/preview/assets/images/icons/whitepaper.png b/preview/assets/images/icons/whitepaper.png
new file mode 100644
index 0000000..a72e357
Binary files /dev/null and b/preview/assets/images/icons/whitepaper.png differ
diff --git a/preview/assets/images/logo.png b/preview/assets/images/logo.png
new file mode 100644
index 0000000..238d063
Binary files /dev/null and b/preview/assets/images/logo.png differ
diff --git a/preview/assets/images/logo.svg b/preview/assets/images/logo.svg
new file mode 100644
index 0000000..c9f16f2
--- /dev/null
+++ b/preview/assets/images/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/preview/assets/images/logos/android.png b/preview/assets/images/logos/android.png
new file mode 100644
index 0000000..3ce2e99
Binary files /dev/null and b/preview/assets/images/logos/android.png differ
diff --git a/preview/assets/images/logos/homepage-aol.png b/preview/assets/images/logos/homepage-aol.png
new file mode 100644
index 0000000..035eda0
Binary files /dev/null and b/preview/assets/images/logos/homepage-aol.png differ
diff --git a/preview/assets/images/logos/homepage-cisco.png b/preview/assets/images/logos/homepage-cisco.png
new file mode 100644
index 0000000..8bea1a7
Binary files /dev/null and b/preview/assets/images/logos/homepage-cisco.png differ
diff --git a/preview/assets/images/logos/homepage-docomo.png b/preview/assets/images/logos/homepage-docomo.png
new file mode 100644
index 0000000..82de6ac
Binary files /dev/null and b/preview/assets/images/logos/homepage-docomo.png differ
diff --git a/preview/assets/images/logos/homepage-ebay.png b/preview/assets/images/logos/homepage-ebay.png
new file mode 100644
index 0000000..c7088c4
Binary files /dev/null and b/preview/assets/images/logos/homepage-ebay.png differ
diff --git a/preview/assets/images/logos/homepage-intel.png b/preview/assets/images/logos/homepage-intel.png
new file mode 100644
index 0000000..16bc3bc
Binary files /dev/null and b/preview/assets/images/logos/homepage-intel.png differ
diff --git a/preview/assets/images/logos/homepage-orbitz.png b/preview/assets/images/logos/homepage-orbitz.png
new file mode 100644
index 0000000..b911a92
Binary files /dev/null and b/preview/assets/images/logos/homepage-orbitz.png differ
diff --git a/preview/assets/images/logos/homepage-salesforce.png b/preview/assets/images/logos/homepage-salesforce.png
new file mode 100644
index 0000000..f7ceb52
Binary files /dev/null and b/preview/assets/images/logos/homepage-salesforce.png differ
diff --git a/preview/assets/images/logos/java.png b/preview/assets/images/logos/java.png
new file mode 100644
index 0000000..c339b1c
Binary files /dev/null and b/preview/assets/images/logos/java.png differ
diff --git a/preview/assets/images/logos/linux.png b/preview/assets/images/logos/linux.png
new file mode 100644
index 0000000..1bd9a49
Binary files /dev/null and b/preview/assets/images/logos/linux.png differ
diff --git a/preview/assets/images/logos/mac.png b/preview/assets/images/logos/mac.png
new file mode 100644
index 0000000..146267c
Binary files /dev/null and b/preview/assets/images/logos/mac.png differ
diff --git a/preview/assets/images/logos/redhat.png b/preview/assets/images/logos/redhat.png
new file mode 100644
index 0000000..fbbfbbe
Binary files /dev/null and b/preview/assets/images/logos/redhat.png differ
diff --git a/preview/assets/images/logos/ubuntu.png b/preview/assets/images/logos/ubuntu.png
new file mode 100644
index 0000000..6ce452a
Binary files /dev/null and b/preview/assets/images/logos/ubuntu.png differ
diff --git a/preview/assets/images/logos/windows.png b/preview/assets/images/logos/windows.png
new file mode 100644
index 0000000..573bda4
Binary files /dev/null and b/preview/assets/images/logos/windows.png differ
diff --git a/preview/assets/images/patterns/exhaust.jpg b/preview/assets/images/patterns/exhaust.jpg
new file mode 100644
index 0000000..64f8650
Binary files /dev/null and b/preview/assets/images/patterns/exhaust.jpg differ
diff --git a/preview/assets/images/patterns/mosaic-bright.png b/preview/assets/images/patterns/mosaic-bright.png
new file mode 100644
index 0000000..86c0398
Binary files /dev/null and b/preview/assets/images/patterns/mosaic-bright.png differ
diff --git a/preview/assets/images/patterns/mosaic-dark.png b/preview/assets/images/patterns/mosaic-dark.png
new file mode 100644
index 0000000..634fc08
Binary files /dev/null and b/preview/assets/images/patterns/mosaic-dark.png differ
diff --git a/preview/assets/images/patterns/mosaic-light.png b/preview/assets/images/patterns/mosaic-light.png
new file mode 100644
index 0000000..2f74257
Binary files /dev/null and b/preview/assets/images/patterns/mosaic-light.png differ
diff --git a/preview/assets/images/patterns/thatch.png b/preview/assets/images/patterns/thatch.png
new file mode 100644
index 0000000..d1b8e31
Binary files /dev/null and b/preview/assets/images/patterns/thatch.png differ
diff --git a/preview/assets/images/photos/company-hq.jpg b/preview/assets/images/photos/company-hq.jpg
new file mode 100644
index 0000000..6d28452
Binary files /dev/null and b/preview/assets/images/photos/company-hq.jpg differ
diff --git a/preview/assets/images/photos/homepage-image-header.jpg b/preview/assets/images/photos/homepage-image-header.jpg
new file mode 100644
index 0000000..8d760e4
Binary files /dev/null and b/preview/assets/images/photos/homepage-image-header.jpg differ
diff --git a/preview/assets/images/products/always-available--sm--2x.png b/preview/assets/images/products/always-available--sm--2x.png
new file mode 100644
index 0000000..604ae23
Binary files /dev/null and b/preview/assets/images/products/always-available--sm--2x.png differ
diff --git a/preview/assets/images/products/always-available--sm.png b/preview/assets/images/products/always-available--sm.png
new file mode 100644
index 0000000..7cc21ea
Binary files /dev/null and b/preview/assets/images/products/always-available--sm.png differ
diff --git a/preview/assets/images/products/always-available.png b/preview/assets/images/products/always-available.png
new file mode 100644
index 0000000..bfdceae
Binary files /dev/null and b/preview/assets/images/products/always-available.png differ
diff --git a/preview/assets/images/products/available-anywhere--2x.png b/preview/assets/images/products/available-anywhere--2x.png
new file mode 100644
index 0000000..06d120c
Binary files /dev/null and b/preview/assets/images/products/available-anywhere--2x.png differ
diff --git a/preview/assets/images/products/available-anywhere--sm.png b/preview/assets/images/products/available-anywhere--sm.png
new file mode 100644
index 0000000..2e94144
Binary files /dev/null and b/preview/assets/images/products/available-anywhere--sm.png differ
diff --git a/preview/assets/images/products/available-anywhere.png b/preview/assets/images/products/available-anywhere.png
new file mode 100644
index 0000000..20e8560
Binary files /dev/null and b/preview/assets/images/products/available-anywhere.png differ
diff --git a/preview/assets/images/products/data-mobility--sm--2x.png b/preview/assets/images/products/data-mobility--sm--2x.png
new file mode 100644
index 0000000..84b1195
Binary files /dev/null and b/preview/assets/images/products/data-mobility--sm--2x.png differ
diff --git a/preview/assets/images/products/data-mobility--sm.png b/preview/assets/images/products/data-mobility--sm.png
new file mode 100644
index 0000000..7e35b3e
Binary files /dev/null and b/preview/assets/images/products/data-mobility--sm.png differ
diff --git a/preview/assets/images/products/data-mobility.png b/preview/assets/images/products/data-mobility.png
new file mode 100644
index 0000000..063ab83
Binary files /dev/null and b/preview/assets/images/products/data-mobility.png differ
diff --git a/preview/assets/images/products/dev-power--sm--2x.png b/preview/assets/images/products/dev-power--sm--2x.png
new file mode 100644
index 0000000..0ebb902
Binary files /dev/null and b/preview/assets/images/products/dev-power--sm--2x.png differ
diff --git a/preview/assets/images/products/dev-power--sm.png b/preview/assets/images/products/dev-power--sm.png
new file mode 100644
index 0000000..d4cd1e0
Binary files /dev/null and b/preview/assets/images/products/dev-power--sm.png differ
diff --git a/preview/assets/images/products/dev-power.png b/preview/assets/images/products/dev-power.png
new file mode 100644
index 0000000..296ea73
Binary files /dev/null and b/preview/assets/images/products/dev-power.png differ
diff --git a/preview/assets/images/products/feature-rich--2x.png b/preview/assets/images/products/feature-rich--2x.png
new file mode 100644
index 0000000..eb41acd
Binary files /dev/null and b/preview/assets/images/products/feature-rich--2x.png differ
diff --git a/preview/assets/images/products/feature-rich--sm.png b/preview/assets/images/products/feature-rich--sm.png
new file mode 100644
index 0000000..092abda
Binary files /dev/null and b/preview/assets/images/products/feature-rich--sm.png differ
diff --git a/preview/assets/images/products/feature-rich.png b/preview/assets/images/products/feature-rich.png
new file mode 100644
index 0000000..fc861f4
Binary files /dev/null and b/preview/assets/images/products/feature-rich.png differ
diff --git a/preview/assets/images/products/flexible-map--sm--2x.png b/preview/assets/images/products/flexible-map--sm--2x.png
new file mode 100644
index 0000000..cbe3a5e
Binary files /dev/null and b/preview/assets/images/products/flexible-map--sm--2x.png differ
diff --git a/preview/assets/images/products/flexible-map--sm.png b/preview/assets/images/products/flexible-map--sm.png
new file mode 100644
index 0000000..2a5a7d5
Binary files /dev/null and b/preview/assets/images/products/flexible-map--sm.png differ
diff --git a/preview/assets/images/products/flexible-map.png b/preview/assets/images/products/flexible-map.png
new file mode 100644
index 0000000..7064c2b
Binary files /dev/null and b/preview/assets/images/products/flexible-map.png differ
diff --git a/preview/assets/images/products/general-purpose--sm--2x.png b/preview/assets/images/products/general-purpose--sm--2x.png
new file mode 100644
index 0000000..9573801
Binary files /dev/null and b/preview/assets/images/products/general-purpose--sm--2x.png differ
diff --git a/preview/assets/images/products/general-purpose--sm.png b/preview/assets/images/products/general-purpose--sm.png
new file mode 100644
index 0000000..ccc9b08
Binary files /dev/null and b/preview/assets/images/products/general-purpose--sm.png differ
diff --git a/preview/assets/images/products/general-purpose.png b/preview/assets/images/products/general-purpose.png
new file mode 100644
index 0000000..9398651
Binary files /dev/null and b/preview/assets/images/products/general-purpose.png differ
diff --git a/preview/assets/images/products/native-api--2x.png b/preview/assets/images/products/native-api--2x.png
new file mode 100644
index 0000000..2f36c35
Binary files /dev/null and b/preview/assets/images/products/native-api--2x.png differ
diff --git a/preview/assets/images/products/native-api--sm.png b/preview/assets/images/products/native-api--sm.png
new file mode 100644
index 0000000..0e33461
Binary files /dev/null and b/preview/assets/images/products/native-api--sm.png differ
diff --git a/preview/assets/images/products/native-api.png b/preview/assets/images/products/native-api.png
new file mode 100644
index 0000000..c476dff
Binary files /dev/null and b/preview/assets/images/products/native-api.png differ
diff --git a/preview/assets/images/products/onecode--2x.png b/preview/assets/images/products/onecode--2x.png
new file mode 100644
index 0000000..08442e5
Binary files /dev/null and b/preview/assets/images/products/onecode--2x.png differ
diff --git a/preview/assets/images/products/onecode--sm.png b/preview/assets/images/products/onecode--sm.png
new file mode 100644
index 0000000..c13da45
Binary files /dev/null and b/preview/assets/images/products/onecode--sm.png differ
diff --git a/preview/assets/images/products/onecode.png b/preview/assets/images/products/onecode.png
new file mode 100644
index 0000000..a316e3b
Binary files /dev/null and b/preview/assets/images/products/onecode.png differ
diff --git a/preview/assets/images/products/performance--sm--2x.png b/preview/assets/images/products/performance--sm--2x.png
new file mode 100644
index 0000000..cd72eb0
Binary files /dev/null and b/preview/assets/images/products/performance--sm--2x.png differ
diff --git a/preview/assets/images/products/performance--sm.png b/preview/assets/images/products/performance--sm.png
new file mode 100644
index 0000000..bd65b99
Binary files /dev/null and b/preview/assets/images/products/performance--sm.png differ
diff --git a/preview/assets/images/products/performance.png b/preview/assets/images/products/performance.png
new file mode 100644
index 0000000..e08cc75
Binary files /dev/null and b/preview/assets/images/products/performance.png differ
diff --git a/preview/assets/images/products/powerful-admin--sm--2x.png b/preview/assets/images/products/powerful-admin--sm--2x.png
new file mode 100644
index 0000000..17f78bd
Binary files /dev/null and b/preview/assets/images/products/powerful-admin--sm--2x.png differ
diff --git a/preview/assets/images/products/powerful-admin--sm.png b/preview/assets/images/products/powerful-admin--sm.png
new file mode 100644
index 0000000..d6ca0d4
Binary files /dev/null and b/preview/assets/images/products/powerful-admin--sm.png differ
diff --git a/preview/assets/images/products/powerful-admin.png b/preview/assets/images/products/powerful-admin.png
new file mode 100644
index 0000000..432ec90
Binary files /dev/null and b/preview/assets/images/products/powerful-admin.png differ
diff --git a/preview/assets/images/products/real-time--sm--2x.png b/preview/assets/images/products/real-time--sm--2x.png
new file mode 100644
index 0000000..d07ad00
Binary files /dev/null and b/preview/assets/images/products/real-time--sm--2x.png differ
diff --git a/preview/assets/images/products/real-time--sm.png b/preview/assets/images/products/real-time--sm.png
new file mode 100644
index 0000000..c086fec
Binary files /dev/null and b/preview/assets/images/products/real-time--sm.png differ
diff --git a/preview/assets/images/products/real-time.png b/preview/assets/images/products/real-time.png
new file mode 100644
index 0000000..d9725c7
Binary files /dev/null and b/preview/assets/images/products/real-time.png differ
diff --git a/preview/assets/images/products/sync--2x.png b/preview/assets/images/products/sync--2x.png
new file mode 100644
index 0000000..f77ae03
Binary files /dev/null and b/preview/assets/images/products/sync--2x.png differ
diff --git a/preview/assets/images/products/sync--sm.png b/preview/assets/images/products/sync--sm.png
new file mode 100644
index 0000000..8315530
Binary files /dev/null and b/preview/assets/images/products/sync--sm.png differ
diff --git a/preview/assets/images/products/sync.png b/preview/assets/images/products/sync.png
new file mode 100644
index 0000000..90ba08f
Binary files /dev/null and b/preview/assets/images/products/sync.png differ
diff --git a/preview/assets/javascripts/application.js b/preview/assets/javascripts/application.js
new file mode 100644
index 0000000..3849f31
--- /dev/null
+++ b/preview/assets/javascripts/application.js
@@ -0,0 +1,25 @@
+require(
+ [
+ 'modules/navigation',
+ 'modules/globalheadersearch'
+ ],
+
+ function(Navigation, GlobalHeaderSearch) {
+ new Navigation();
+ new GlobalHeaderSearch();
+
+ var modules = document.body.getAttribute('data-modules');
+
+ if (modules !== null) {
+ modules = modules.trim();
+
+ if (modules.length) {
+ modules.split(' ').forEach(function(module) {
+ require(['modules/' + module], function(Module) {
+ new Module();
+ });
+ });
+ }
+ }
+ }
+);
\ No newline at end of file
diff --git a/preview/assets/javascripts/init.js b/preview/assets/javascripts/init.js
new file mode 100644
index 0000000..65a6477
--- /dev/null
+++ b/preview/assets/javascripts/init.js
@@ -0,0 +1,39 @@
+var BASEPATH;
+if (!BASEPATH) {
+ BASEPATH = '../';
+}
+
+(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);
+
+/* Added placeholder for GCSE */
+window.__gcse = {
+ callback: function() {
+ var gcse_el = document.getElementById('gsc-i-id1');
+ gcse_el.setAttribute('placeholder', 'Search Documentation');
+ }
+};
+
+/* Load Vendor Things */
+(function(d,t) {
+ if ('querySelector' in d && 'addEventListener' in window) {
+ r=d.createElement(t);s=d.querySelector(t);
+ r.src=BASEPATH+'assets/javascripts/vendor/require.js';
+ r.setAttribute('data-main', BASEPATH+'assets/javascripts/application');
+ s.parentNode.insertBefore(r,s);
+ }
+})(document,'script');
+
+/* Load Google Analytics */
+/*
+var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-7763794-10']);
+ _gaq.push(['_setDomainName', '.couchbase.com']);
+ _gaq.push(['_setAllowLinker', true]);
+ _gaq.push(['_setAllowHash', false]);
+ _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);
+})();
+*/
diff --git a/preview/assets/javascripts/modules/carousel.js b/preview/assets/javascripts/modules/carousel.js
new file mode 100644
index 0000000..d78ce9a
--- /dev/null
+++ b/preview/assets/javascripts/modules/carousel.js
@@ -0,0 +1,161 @@
+define(function() {
+ var Carousel = function() {
+ var modules = document.querySelectorAll('.carousel');
+
+ for (var i = 0, j = modules.length; i < j; i++) {
+ new CarouselModule(modules[i]);
+ }
+ };
+
+ var CarouselModule = function(el) {
+ this.el = el;
+
+ this.init();
+ };
+
+ CarouselModule.prototype = {
+ init: function() {
+ this.setVars();
+
+ if (this.pages.length > 1) {
+ this.appendNavigation();
+ this.bindEvents();
+
+ this.setPagesWrapperHeight();
+ this.setPageClasses();
+ }
+ },
+
+ appendNavigation: function() {
+ this.nextNav.innerHTML = 'Next';
+ this.nextNav.classList.add('carousel__navigation--next');
+ this.nextNav.setAttribute('data-delta', '1');
+ this.nextNav.setAttribute('type', 'button');
+
+ this.prevNav.innerHTML = 'Previous';
+ this.prevNav.classList.add('carousel__navigation--previous');
+ this.prevNav.setAttribute('data-delta', '-1');
+ this.prevNav.setAttribute('type', 'button');
+
+ this.carouselWrapper.appendChild(this.nextNav);
+ this.carouselWrapper.appendChild(this.prevNav);
+ },
+
+ bindEvents: function() {
+ this.nextNav.addEventListener('click', this.click.bind(this));
+ this.prevNav.addEventListener('click', this.click.bind(this));
+
+ window.addEventListener('resize', this.resize.bind(this));
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var button = event.currentTarget,
+ delta = parseInt(button.getAttribute('data-delta'), 10);
+
+ this.updateIndices(delta);
+ this.setPageClasses();
+ },
+
+ resize: function(event) {
+ var t = setTimeout(function() {
+ this.pagesWrapper.removeAttribute('style');
+ this.maxPageHeight = 0;
+
+ this.setPagesWrapperHeight();
+
+ clearTimeout(t);
+ }.bind(this), 100);
+ },
+
+ setPageClasses: function() {
+ for (var i = 0, j = this.pages.length; i < j; i++) {
+ var page = this.pages[i];
+
+ page.classList.remove(this.classNames.currentPage);
+ page.classList.remove(this.classNames.nextPage);
+ page.classList.remove(this.classNames.previousPage);
+
+ if (i == this.currentIndex) {
+ page.classList.add(this.classNames.currentPage);
+ } else if (i == this.prevIndex) {
+ page.classList.add(this.classNames.previousPage);
+ } else {
+ page.classList.add(this.classNames.nextPage);
+ }
+ }
+ },
+
+ setMaxPageHeight: function() {
+ for (var i = 0, j = this.pages.length; i < j; i++) {
+ var page = this.pages[i],
+ pageHeight = page.offsetHeight;
+
+ this.maxPageHeight = pageHeight > this.maxPageHeight ? pageHeight : this.maxPageHeight;
+ }
+ },
+
+ setPagesWrapperHeight: function() {
+ this.setMaxPageHeight();
+
+ this.pagesWrapper.style.height = this.maxPageHeight + 'px';
+ },
+
+ setVars: function() {
+ this.classNames = {
+ currentPage: 'carousel__page--current',
+ nextPage: 'carousel__page--next',
+ previousPage: 'carousel__page--previous'
+ };
+
+ this.carouselWrapper = this.el.querySelector('.carousel__wrapper');
+ this.pagesWrapper = this.carouselWrapper.querySelector('.carousel__pages');
+ this.pages = this.pagesWrapper.querySelectorAll('.carousel__page');
+
+ this.nextNav = document.createElement('button');
+ this.prevNav = document.createElement('button');
+
+ this.totalPages = this.pages.length;
+ this.currentIndex = 0;
+ this.nextIndex = 1;
+ this.prevIndex = this.totalPages - 1;
+ this.maxPageHeight = 0;
+ },
+
+ updateIndices: function(delta) {
+ var newCurrentIndex = this.currentIndex + delta,
+ newNextIndex = newCurrentIndex + 1,
+ newPrevIndex = newCurrentIndex -1,
+ lastPageIndex = this.totalPages - 1;
+
+ switch(newCurrentIndex) {
+ case -1:
+ newCurrentIndex = lastPageIndex;
+ newNextIndex = 0;
+ newPrevIndex = newCurrentIndex - 1;
+ break;
+ case 0:
+ newPrevIndex = lastPageIndex;
+ break;
+ case this.totalPages:
+ newCurrentIndex = 0;
+ newNextIndex = 1;
+ newPrevIndex = lastPageIndex;
+ break;
+ case this.totalPages - 1:
+ newNextIndex = 0;
+ break;
+ default:
+ newNextIndex = newCurrentIndex + 1;
+ newPrevIndex = newCurrentIndex - 1;
+ }
+
+ this.currentIndex = newCurrentIndex;
+ this.nextIndex = newNextIndex;
+ this.prevIndex = newPrevIndex;
+ }
+ };
+
+ return Carousel;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/developer-portal-sidebar-navigation.js b/preview/assets/javascripts/modules/developer-portal-sidebar-navigation.js
new file mode 100644
index 0000000..bb4cc47
--- /dev/null
+++ b/preview/assets/javascripts/modules/developer-portal-sidebar-navigation.js
@@ -0,0 +1,43 @@
+define(function() {
+ var DeveloperPortalSidebarNavigation = function() {
+ this.el = document.getElementById('developer-portal-sidebar-navigation');
+
+ if (this.el) {
+ this.init();
+ }
+ };
+
+ DeveloperPortalSidebarNavigation.prototype = {
+ init: function() {
+ var attributes = {
+ 'aria-controls': 'developer-portal-sidebar-navigation',
+ 'aria-pressed': 'false',
+ 'class': 'developer-portal-sidebar__navigation__toggler',
+ 'type': 'button'
+ };
+
+ this.toggler = document.createElement('button');
+
+ for (var attr in attributes) {
+ this.toggler.setAttribute(attr, attributes[attr]);
+ }
+
+ this.toggler.innerHTML = '' + this.el.querySelector('.current').textContent.trim() + '';
+ this.toggler.addEventListener('click', this.click.bind(this));
+
+ this.el.setAttribute('aria-expanded', 'false');
+ this.el.parentNode.insertBefore(this.toggler, this.el);
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var isPressed = this.toggler.getAttribute('aria-pressed') !== 'true';
+
+ this.el.setAttribute('aria-expanded', isPressed);
+ this.toggler.setAttribute('aria-pressed', isPressed);
+ }
+ };
+
+ return DeveloperPortalSidebarNavigation;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/developer-portal-versions-navigation.js b/preview/assets/javascripts/modules/developer-portal-versions-navigation.js
new file mode 100644
index 0000000..dc730f2
--- /dev/null
+++ b/preview/assets/javascripts/modules/developer-portal-versions-navigation.js
@@ -0,0 +1,49 @@
+define(function() {
+ var DeveloperPortalVersionsNavigation = function() {
+ this.el = document.getElementById('developer-portal-versions-navigation');
+
+ if (this.el) {
+ this.init();
+ }
+ };
+
+ DeveloperPortalVersionsNavigation.prototype = {
+ init: function() {
+ var attributes = {
+ 'aria-controls': 'developer-portal-versions-navigation',
+ 'aria-pressed': 'false',
+ 'class': 'developer-portal-sidebar__versions__toggler',
+ 'type': 'button'
+ };
+
+ var togglerWrapper = document.createElement('div');
+
+ togglerWrapper.setAttribute('class', 'developer-portal-sidebar__versions__toggler');
+
+ this.toggler = document.createElement('button');
+
+ for (var attr in attributes) {
+ this.toggler.setAttribute(attr, attributes[attr]);
+ }
+
+ this.toggler.innerHTML = '' + this.el.querySelector('.active').textContent.trim() + '';
+ this.toggler.addEventListener('click', this.click.bind(this));
+
+ togglerWrapper.appendChild(this.toggler);
+
+ this.el.setAttribute('aria-expanded', 'false');
+ this.el.parentNode.insertBefore(togglerWrapper, this.el);
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var isPressed = this.toggler.getAttribute('aria-pressed') !== 'true';
+
+ this.el.setAttribute('aria-expanded', isPressed);
+ this.toggler.setAttribute('aria-pressed', isPressed);
+ }
+ };
+
+ return DeveloperPortalVersionsNavigation;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/download-section.js b/preview/assets/javascripts/modules/download-section.js
new file mode 100644
index 0000000..c7612da
--- /dev/null
+++ b/preview/assets/javascripts/modules/download-section.js
@@ -0,0 +1,62 @@
+define(function() {
+ var DownloadSection = function() {
+ var modules = document.querySelectorAll('.download-section');
+
+ for (var i = 0, j = modules.length; i < j; i++) {
+ new DownloadSectionModule(modules[i]);
+ }
+ };
+
+ var DownloadSectionModule = function(el) {
+ this.el = el;
+
+ this.init();
+ };
+
+ DownloadSectionModule.prototype = {
+ init: function() {
+ this.initInstructions();
+ this.initAdditionalVersions();
+ },
+
+ initAdditionalVersions: function() {
+ var anchors = this.el.querySelectorAll('.additional-versions a'),
+ containers = this.el.querySelectorAll('.download-table--additional-versions');
+
+ this.initElements(anchors, containers);
+ },
+
+ initInstructions: function() {
+ var anchors = this.el.querySelectorAll('.instructions'),
+ containers = this.el.querySelectorAll('.download-table__instructions');
+
+ this.initElements(anchors, containers);
+ },
+
+ initElements: function(anchors, containers) {
+ for (var i = 0, j = anchors.length; i < j; i++) {
+ var anchor = anchors[i],
+ container = containers[i];
+
+ anchor.addEventListener('click', this.click.bind(this));
+ anchor.setAttribute('aria-controls', container.getAttribute('id'));
+ anchor.setAttribute('aria-pressed', 'false');
+
+ container.setAttribute('aria-expanded', 'false');
+ }
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var anchor = event.currentTarget,
+ isActive = anchor.getAttribute('aria-pressed') !== 'true',
+ containerId = anchor.getAttribute('aria-controls');
+
+ this.el.querySelector('#' + containerId).setAttribute('aria-expanded', isActive);
+ anchor.setAttribute('aria-pressed', isActive);
+ }
+ };
+
+ return DownloadSection;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/globalheadersearch.js b/preview/assets/javascripts/modules/globalheadersearch.js
new file mode 100644
index 0000000..89d0619
--- /dev/null
+++ b/preview/assets/javascripts/modules/globalheadersearch.js
@@ -0,0 +1,51 @@
+define(function() {
+ var GlobalHeaderSearch = function() {
+ this.el = document.querySelector('#global-header-search');
+
+ if (this.el) {
+ this.init();
+ }
+ };
+
+ GlobalHeaderSearch.prototype = {
+ init: function() {
+ var attributes = {
+ 'aria-controls': 'global-header-search__items',
+ 'aria-pressed': 'false',
+ 'class': 'global-header-search__toggler',
+ 'type': 'button'
+ };
+
+ this.searchInput = this.el.querySelector('input[type="search"]');
+ this.toggler = document.createElement('button');
+
+ for (var attr in attributes) {
+ this.toggler.setAttribute(attr, attributes[attr]);
+ }
+
+ this.toggler.innerHTML = 'Search';
+ this.toggler.addEventListener('click', this.click.bind(this));
+
+ this.el.setAttribute('aria-expanded', 'false');
+ this.el.appendChild(this.toggler);
+ this.el.classList.add('global-header-search--js');
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var isPressed = this.toggler.getAttribute('aria-pressed') !== 'true';
+
+ this.el.setAttribute('aria-expanded', isPressed);
+ this.toggler.setAttribute('aria-pressed', isPressed);
+
+ if (isPressed) {
+ this.searchInput.focus();
+ } else {
+ this.toggler.focus();
+ }
+ }
+ };
+
+ return GlobalHeaderSearch;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/image-header.js b/preview/assets/javascripts/modules/image-header.js
new file mode 100644
index 0000000..5d783a1
--- /dev/null
+++ b/preview/assets/javascripts/modules/image-header.js
@@ -0,0 +1,51 @@
+define(function() {
+ var ImageHeader = function() {
+ var modules = document.querySelectorAll('.image-header[data-bg-large][data-bg-small]');
+
+ for (var i = 0, j = modules.length; i < j; i++) {
+ new ImageHeaderModule(modules[i]);
+ }
+ };
+
+ var ImageHeaderModule = function(el) {
+ this.el = el;
+
+ this.init();
+ };
+
+ ImageHeaderModule.prototype = {
+ init: function() {
+ this.setVars();
+ this.bindEvents();
+
+ this.setBackgroundImage(window.outerWidth);
+ },
+
+ bindEvents: function() {
+ window.addEventListener('resize', this.resize.bind(this));
+ },
+
+ resize: function(event) {
+ var t = setTimeout(function() {
+ this.setBackgroundImage(window.outerWidth);
+
+ clearTimeout(t);
+ }.bind(this), 500);
+ },
+
+ setBackgroundImage: function(width) {
+ var src = (width < this.breakpoint) ? this.smallSrc : this.largeSrc;
+
+ this.el.style.backgroundImage = 'url(' + src + ')';
+ },
+
+ setVars: function() {
+ this.breakpoint = 800;
+
+ this.largeSrc = this.el.getAttribute('data-bg-large');
+ this.smallSrc = this.el.getAttribute('data-bg-small');
+ }
+ };
+
+ return ImageHeader;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/navigation.js b/preview/assets/javascripts/modules/navigation.js
new file mode 100644
index 0000000..6170134
--- /dev/null
+++ b/preview/assets/javascripts/modules/navigation.js
@@ -0,0 +1,45 @@
+define(function() {
+ var Navigation = function() {
+ this.el = document.getElementById('primary-navigation');
+
+ if (this.el) {
+ this.init();
+ }
+ };
+
+ Navigation.prototype = {
+ init: function() {
+ var attributes = {
+ 'aria-controls': 'primary-navigation__wrapper',
+ 'aria-pressed': 'false',
+ 'class': 'primary-navigation__toggler',
+ 'type': 'button'
+ };
+
+ this.wrapper = document.getElementById('primary-navigation__wrapper');
+ this.toggler = document.createElement('button');
+
+ for (var attr in attributes) {
+ this.toggler.setAttribute(attr, attributes[attr]);
+ }
+
+ this.toggler.innerHTML = 'Menu';
+ this.toggler.addEventListener('click', this.click.bind(this));
+
+ this.wrapper.setAttribute('aria-expanded', 'false');
+
+ this.el.insertBefore(this.toggler, this.wrapper);
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var isPressed = this.toggler.getAttribute('aria-pressed') !== 'true';
+
+ this.wrapper.setAttribute('aria-expanded', isPressed);
+ this.toggler.setAttribute('aria-pressed', isPressed);
+ }
+ };
+
+ return Navigation;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/related-content.js b/preview/assets/javascripts/modules/related-content.js
new file mode 100644
index 0000000..cf0bf90
--- /dev/null
+++ b/preview/assets/javascripts/modules/related-content.js
@@ -0,0 +1,59 @@
+define(function() {
+ var RelatedContent = function() {
+ var modules = document.querySelectorAll('.related-content');
+
+ for (var i = 0, j = modules.length; i < j; i++) {
+ new RelatedContentModule(modules[i]);
+ }
+ };
+
+ var RelatedContentModule = function(el) {
+ this.el = el;
+
+ this.init();
+ };
+
+ RelatedContentModule.prototype = {
+ init: function() {
+ this.setVars();
+ this.initToggler();
+ this.initItems();
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ var isPressed = this.toggler.getAttribute('aria-pressed') !== 'true';
+
+ this.toggler.innerHTML = isPressed ? this.togglerTextClose : this.togglerTextOpen;
+ this.toggler.setAttribute('aria-pressed', isPressed);
+
+ this.items.setAttribute('aria-expanded', isPressed);
+ },
+
+ initItems: function() {
+ this.items.setAttribute('aria-expanded', 'false');
+ },
+
+ initToggler: function() {
+ this.toggler.innerHTML = this.togglerTextOpen;
+ this.toggler.classList.add('related-content__toggler');
+ this.toggler.setAttribute('aria-pressed', 'false');
+ this.toggler.setAttribute('type', 'button');
+
+ this.toggler.addEventListener('click', this.click.bind(this));
+
+ this.el.insertBefore(this.toggler, this.items);
+ },
+
+ setVars: function() {
+ this.items = this.el.querySelector('.related-content__items');
+ this.toggler = document.createElement('button');
+
+ this.togglerTextOpen = this.el.getAttribute('data-toggler-text-open');
+ this.togglerTextClose = this.el.getAttribute('data-toggler-text-close');
+ }
+ };
+
+ return RelatedContent;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/modules/section-scroller.js b/preview/assets/javascripts/modules/section-scroller.js
new file mode 100644
index 0000000..b957da4
--- /dev/null
+++ b/preview/assets/javascripts/modules/section-scroller.js
@@ -0,0 +1,160 @@
+define(
+ [
+ 'vendor/smooth-scroll',
+ 'vendor/enquire',
+ 'vendor/radio',
+ 'modules/section-video'
+ ], function(smoothScroll, enquire, radio, sectionVideo) {
+
+ 'use strict';
+
+ var SectionScroll = function() {
+ new sectionVideo();
+ new SectionScroller(document.querySelector('.section-scroller'));
+ };
+
+ var SectionScroller = function(elem) {
+ this.elem = elem;
+
+ if (this.elem) {
+ enquire.register('(min-width: 900px)', {
+ setup: this.setup.bind(this),
+ deferSetup: true,
+ match: this.init.bind(this),
+ unmatch: this.destroy.bind(this)
+ });
+ }
+ };
+
+ SectionScroller.prototype = {
+ setup: function() {
+ this.setVars();
+ this.bindEvents();
+ },
+
+ init: function() {
+ this.active = true;
+ this.current = null;
+ this.checkScroll();
+
+ smoothScroll.init({
+ updateURL: true,
+ callbackAfter: this.navClick.bind(this)
+ });
+ },
+
+ destroy: function() {
+ this.active = false;
+ this.current = null;
+
+ this.sectionNavHide();
+ smoothScroll.destroy();
+ },
+
+ setVars: function() {
+ this.classShow = 'section-nav--show';
+ this.current = null;
+ this.currentFocused = null;
+ this.globalHeader = document.querySelector('.global-header');
+ this.globalHeaderH = this.globalHeader.clientHeight;
+ this.sections = this.elem.querySelectorAll('.product-section');
+ this.sectionH = this.sections[0].clientHeight;
+ this.sectionNav = document.querySelector('.product-section__nav');
+ this.sectionNavH = this.sectionNav.clientHeight;
+ this.sectionNavLinks = this.sectionNav.querySelectorAll('.product-section__nav__links a');
+ this.scrollPos = 0;
+ },
+
+ bindEvents: function() {
+ window.addEventListener('scroll', this.checkScroll.bind(this));
+ window.addEventListener('resize', this.findCurrent.bind(this));
+
+ // move between section nav links with keyboard arrows
+ this.sectionNav.addEventListener('keydown', this.sectionNavKeyboard.bind(this));
+ },
+
+ sectionNavShow: function() {
+ this.sectionNav.classList.add(this.classShow);
+ },
+
+ sectionNavHide: function() {
+ this.sectionNav.classList.remove(this.classShow);
+ },
+
+ sectionNavKeyboard: function(event) {
+ if (event.which >= 37 && event.which <= 40) {
+ event.preventDefault();
+
+ // move prev
+ if (event.which === 37 || event.which === 38) {
+ this.currentFocused--;
+ if (this.currentFocused < 0) this.currentFocused = this.sectionNavLinks.length - 1;
+
+ // move next
+ } else if (event.which === 39 || event.which === 40) {
+ this.currentFocused++;
+ if (this.currentFocused > this.sectionNavLinks.length - 1) this.currentFocused = 0;
+ }
+
+ this.sectionNavLinks[this.currentFocused].focus();
+ }
+ },
+
+ navClick: function(toggle, anchor) {
+ var target = document.querySelector(toggle.getAttribute('href'));
+ target.focus();
+
+ this.findCurrent();
+ },
+
+ checkScroll: function() {
+ if (this.active) {
+ this.scrollPos = this.getScrollTop();
+
+ // trigger section header when main header is scrolled past
+ (this.scrollPos >= this.globalHeaderH) ? this.sectionNavShow() : this.sectionNavHide();
+
+ this.findCurrent();
+ }
+ },
+
+ findCurrent: function() {
+
+ // adjust trigger by difference in height between main header and section header
+ var currentPanel = Math.floor((this.scrollPos - (this.globalHeaderH - this.sectionNavH)) / this.sectionH);
+ currentPanel = (currentPanel < 0) ? 0 : currentPanel;
+
+ if (currentPanel !== this.current) {
+ if (this.currentNav) {
+ this.currentNav.setAttribute('aria-selected', 'false');
+ this.currentNav.setAttribute('tabindex', '-1');
+
+ radio('exitSection').broadcast(this.currentNav.getAttribute('href').substr(1));
+ }
+
+ this.currentNav = this.sectionNavLinks[currentPanel];
+ this.currentNav.setAttribute('aria-selected', 'true');
+ this.currentNav.setAttribute('tabindex', '0');
+
+ this.current = this.currentFocused = currentPanel;
+
+ radio('enterSection').broadcast(this.currentNav.getAttribute('href').substr(1));
+ }
+ },
+
+ getScrollTop: function() {
+ if (typeof pageYOffset != 'undefined') {
+ //most browsers except IE before #9
+ return pageYOffset;
+ } else {
+ var B = document.body; //IE 'quirks'
+ var D = document.documentElement; //IE with doctype
+ D = (D.clientHeight) ? D : B;
+
+ return D.scrollTop;
+ }
+ }
+ };
+
+ return SectionScroll;
+});
diff --git a/preview/assets/javascripts/modules/section-video.js b/preview/assets/javascripts/modules/section-video.js
new file mode 100644
index 0000000..51a5945
--- /dev/null
+++ b/preview/assets/javascripts/modules/section-video.js
@@ -0,0 +1,265 @@
+define(['vendor/radio', 'vendor/enquire'], function(radio, enquire) {
+
+ 'use strict';
+
+ var SectionVideo = function() {
+
+ // detect video support
+ var supports_video = false;
+ if ((/iP(ad|hone|od)/i).test(navigator.userAgent) || (/android/i).test(navigator.userAgent)) {
+ supports_video = false;
+ } else if (!!document.createElement('video').canPlayType) {
+ supports_video = true;
+ }
+
+ // add video class to body
+ document.body.classList.add('video-' + supports_video);
+
+ if (supports_video) {
+
+ // add safari colors class
+ if (safari()) document.body.classList.add('safari-colors');
+
+ // set variables
+ var videos = document.querySelectorAll('.product-section');
+
+ // set up videos
+ for (var i = 0, len = videos.length; i < len; i++) {
+ new Video(videos[i]);
+ }
+
+ // set up enquire
+ enquire.register('(min-width: 900px)', {
+ match: function() {
+ radio('largeViewSetup').broadcast();
+ },
+ unmatch: function() {
+ radio('largeViewTeardown').broadcast();
+ }
+ }).register('(max-width: 899px)', {
+ match: function() {
+ radio('mobileViewSetup').broadcast();
+ },
+ unmatch: function() {
+ radio('mobileViewTeardown').broadcast();
+ }
+ });
+ }
+
+ window.addEventListener('resize', function() {
+ radio('videoResize').broadcast();
+ });
+ };
+
+ var Video = function(elem) {
+ this.elem = elem;
+ if (this.elem) this.init();
+ };
+
+ Video.prototype = {
+ classVideo: 'has-video',
+ classImage: 'has-image',
+
+ attrs: {
+ 'aria-hidden': 'true',
+ 'preload': '',
+ 'tabindex': '-1'
+ },
+
+ init: function() {
+ this.setVariables();
+ this.subscribe();
+ },
+
+ setVariables: function() {
+ this.container = this.elem.querySelector('.product-section__graphic__inner');
+ this.src = this.container.getAttribute('data-src');
+ this.poster = this.container.getAttribute('data-poster');
+ this.videoStateTimer;
+ if (this.src) this.aspectRatio = this.container.getAttribute('data-ratio').split(':');
+ },
+
+ subscribe: function() {
+ // mobile
+ radio('mobileViewSetup').subscribe(this.mobileViewSetup.bind(this));
+ radio('mobileViewTeardown').subscribe(this.mobileViewTeardown.bind(this));
+
+ // large
+ radio('largeViewSetup').subscribe(this.largeViewSetup.bind(this));
+ radio('largeViewTeardown').subscribe(this.largeViewTeardown.bind(this));
+
+ // scrolling
+ radio('enterSection').subscribe(this.playVideo.bind(this));
+ radio('exitSection').subscribe(this.stopVideo.bind(this));
+ },
+
+
+ /** setup/teardown */
+
+ largeViewSetup: function() {
+ if (this.src) {
+ this.container.classList.add(this.classVideo);
+
+ this.createVideo();
+ this.sizeVideo();
+ this.container.appendChild(this.videoContainer);
+
+ radio('videoResize').subscribe(this.sizeVideo.bind(this));
+ } else {
+ this.container.classList.add(this.classImage);
+ }
+ },
+
+ largeViewTeardown: function() {
+ if (this.src) {
+ this.container.classList.remove(this.classVideo);
+ this.removeVideo();
+
+ radio('videoResize').unsubscribe(this.sizeVideo.bind(this));
+ } else {
+ this.container.classList.remove(this.classImage);
+ }
+
+ },
+
+ mobileViewSetup: function() {
+ this.container.classList.add(this.classImage);
+ },
+
+ mobileViewTeardown: function() {
+ this.container.classList.remove(this.classImage);
+ },
+
+
+ /** create video */
+
+ createVideo: function() {
+ var poster = (this.poster) ? this.poster : 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+
+ this.videoContainer = document.createElement('div');
+ this.videoContainer.classList.add('video__container');
+
+ this.video = document.createElement('video');
+ for (var key in this.attrs) this.video.setAttribute(key, this.attrs[key]);
+ this.video.setAttribute('poster', poster);
+
+ this.video.classList.add('video');
+
+ this.setSource('webm');
+ this.setSource('mp4');
+
+ this.videoContainer.appendChild(this.video);
+ },
+
+ setSource: function(type) {
+ var src = document.createElement('source');
+ src.setAttribute('src', this.src + '.' + type);
+ src.setAttribute('type', 'video/' + type);
+
+ this.video.appendChild(src);
+ },
+
+ sizeVideo: function() {
+ var clientW = this.container.clientWidth;
+ var clientH = this.container.clientHeight;
+
+ var newSize = scaleSize(
+ clientW,
+ clientH,
+ parseInt(this.aspectRatio[0], 10),
+ parseInt(this.aspectRatio[1], 10)
+ );
+
+ this.videoContainer.style.left = ((clientW - newSize[0]) / 2) + 'px';
+ this.videoContainer.style.top = ((clientH - newSize[1]) / 2) + 'px';
+ this.videoContainer.style.width = Math.floor(newSize[0]) + 'px';
+ this.videoContainer.style.height = Math.floor(newSize[1]) + 'px';
+ },
+
+
+ /** play/pause video */
+
+ playVideo: function(section) {
+ if (this.src && section === this.elem.getAttribute('id')) {
+ this.video.classList.add('play');
+ this.videoStateChecker();
+ }
+ },
+
+ videoStateChecker: function() {
+ this.videoStateTimer = setTimeout(this.checkVideoState.bind(this), 10);
+ },
+
+ checkVideoState: function() {
+ if (this.video.readyState === 4) {
+ this.video.currentTime = 0;
+ this.video.play();
+ } else {
+ this.videoStateChecker();
+ }
+ },
+
+ stopVideo: function(section) {
+ if (this.src) {
+ clearTimeout(this.videoStateTimer);
+
+ if (section === this.elem.getAttribute('id')) {
+ this.video.classList.remove('play');
+ this.video.pause();
+ }
+ }
+ },
+
+
+ /** remove video */
+
+ removeVideo: function() {
+ this.container.removeChild(this.videoContainer);
+ }
+ };
+
+
+ /** utilities */
+
+ var scaleSize = function(maxW, maxH, currW, currH) {
+ var ratio = currH / currW;
+
+ var sizeHeight = function() {
+ currH = maxH;
+ currW = currH / ratio;
+ };
+
+ var sizeWidth = function() {
+ currW = maxW;
+ currH = currW * ratio;
+ };
+
+ if (ratio <= 1) {
+ sizeHeight();
+
+ if (currW > maxW) sizeWidth();
+ } else {
+ sizeWidth();
+
+ if (currH > maxH) sizeHeight();
+ }
+
+ return [currW, currH];
+ };
+
+ var safari = function() {
+ var ua = navigator.userAgent;
+
+ return (
+ ua.indexOf('Mac OS X') !== -1 &&
+ ua.indexOf('Safari') !== -1 &&
+ ua.indexOf('Chrome') === -1 &&
+ ua.indexOf('Mobile') === -1 &&
+ (ua.indexOf('Version/5') !== -1 ||
+ ua.indexOf('Version/6') !== -1 ||
+ ua.indexOf('Version/7') !== -1)
+ ) ? true : false;
+ };
+
+ return SectionVideo;
+});
diff --git a/preview/assets/javascripts/modules/videoblock.js b/preview/assets/javascripts/modules/videoblock.js
new file mode 100644
index 0000000..0464dd4
--- /dev/null
+++ b/preview/assets/javascripts/modules/videoblock.js
@@ -0,0 +1,45 @@
+define(function() {
+ var Videoblock = function() {
+ var modules = document.querySelectorAll('.videoblock');
+
+ for (var i = 0, j = modules.length; i < j; i++) {
+ new VideoblockModule(modules[i]);
+ }
+ };
+
+ var VideoblockModule = function(el) {
+ this.el = el;
+
+ this.init();
+ };
+
+ VideoblockModule.prototype = {
+ init: function() {
+ this.container = this.el.querySelector('.videoblock__content');
+ this.iframe = this.el.querySelector('iframe');
+
+ this.button = document.createElement('button');
+ this.button.innerHTML = 'Play';
+ this.button.setAttribute('class', 'videoblock__button');
+ this.button.setAttribute('type', 'button');
+
+ this.button.addEventListener('click', this.click.bind(this));
+
+ this.cover = document.createElement('div');
+ this.cover.setAttribute('class', 'videoblock__cover');
+
+ this.container.appendChild(this.cover);
+ this.container.appendChild(this.button);
+ },
+
+ click: function(event) {
+ event.preventDefault();
+
+ this.container.removeChild(this.button);
+ this.container.removeChild(this.cover);
+ this.iframe.setAttribute('src', this.iframe.getAttribute('src') + '?autoplay=1');
+ }
+ };
+
+ return Videoblock;
+});
\ No newline at end of file
diff --git a/preview/assets/javascripts/polyfills/addEventListener.js b/preview/assets/javascripts/polyfills/addEventListener.js
new file mode 100644
index 0000000..d65d8e3
--- /dev/null
+++ b/preview/assets/javascripts/polyfills/addEventListener.js
@@ -0,0 +1,71 @@
+(function() {
+ if (!Event.prototype.preventDefault) {
+ Event.prototype.preventDefault=function() {
+ this.returnValue=false;
+ };
+ }
+ if (!Event.prototype.stopPropagation) {
+ Event.prototype.stopPropagation=function() {
+ this.cancelBubble=true;
+ };
+ }
+ if (!Element.prototype.addEventListener) {
+ var eventListeners=[];
+
+ var addEventListener=function(type,listener /*, useCapture (will be ignored) */) {
+ var self=this;
+ var wrapper=function(e) {
+ e.target=e.srcElement;
+ e.currentTarget=self;
+ if (listener.handleEvent) {
+ listener.handleEvent(e);
+ } else {
+ listener.call(self,e);
+ }
+ };
+ if (type=="DOMContentLoaded") {
+ var wrapper2=function(e) {
+ if (document.readyState=="complete") {
+ wrapper(e);
+ }
+ };
+ document.attachEvent("onreadystatechange",wrapper2);
+ eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper2});
+
+ if (document.readyState=="complete") {
+ var e=new Event();
+ e.srcElement=window;
+ wrapper2(e);
+ }
+ } else {
+ this.attachEvent("on"+type,wrapper);
+ eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper});
+ }
+ };
+ var removeEventListener=function(type,listener /*, useCapture (will be ignored) */) {
+ var counter=0;
+ while (counter>> 0;
+
+ // 4. If IsCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== "function") {
+ throw new TypeError(callback + ' is not a function');
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length > 1) {
+ T = thisArg;
+ }
+
+ // 6. Let k be 0
+ k = 0;
+
+ // 7. Repeat, while k < len
+ while (k < len) {
+
+ var kValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+
+ // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Call the Call internal method of callback with T as the this value and
+ // argument list containing kValue, k, and O.
+ callback.call(T, kValue, k, O);
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+ // 8. return undefined
+ };
+}
\ No newline at end of file
diff --git a/preview/assets/javascripts/polyfills/html5shiv.js b/preview/assets/javascripts/polyfills/html5shiv.js
new file mode 100644
index 0000000..d4c731a
--- /dev/null
+++ b/preview/assets/javascripts/polyfills/html5shiv.js
@@ -0,0 +1,4 @@
+/**
+* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document);
\ No newline at end of file
diff --git a/preview/assets/javascripts/polyfills/matchMedia.addListener.js b/preview/assets/javascripts/polyfills/matchMedia.addListener.js
new file mode 100644
index 0000000..764232d
--- /dev/null
+++ b/preview/assets/javascripts/polyfills/matchMedia.addListener.js
@@ -0,0 +1,75 @@
+/*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */
+(function(){
+ // Bail out for browsers that have addListener support
+ if (window.matchMedia && window.matchMedia('all').addListener) {
+ return false;
+ }
+
+ var localMatchMedia = window.matchMedia,
+ hasMediaQueries = localMatchMedia('only all').matches,
+ isListening = false,
+ timeoutID = 0, // setTimeout for debouncing 'handleChange'
+ queries = [], // Contains each 'mql' and associated 'listeners' if 'addListener' is used
+ handleChange = function(evt) {
+ // Debounce
+ clearTimeout(timeoutID);
+
+ timeoutID = setTimeout(function() {
+ for (var i = 0, il = queries.length; i < il; i++) {
+ var mql = queries[i].mql,
+ listeners = queries[i].listeners || [],
+ matches = localMatchMedia(mql.media).matches;
+
+ // Update mql.matches value and call listeners
+ // Fire listeners only if transitioning to or from matched state
+ if (matches !== mql.matches) {
+ mql.matches = matches;
+
+ for (var j = 0, jl = listeners.length; j < jl; j++) {
+ listeners[j].call(window, mql);
+ }
+ }
+ }
+ }, 30);
+ };
+
+ window.matchMedia = function(media) {
+ var mql = localMatchMedia(media),
+ listeners = [],
+ index = 0;
+
+ mql.addListener = function(listener) {
+ // Changes would not occur to css media type so return now (Affects IE <= 8)
+ if (!hasMediaQueries) {
+ return;
+ }
+
+ // Set up 'resize' listener for browsers that support CSS3 media queries (Not for IE <= 8)
+ // There should only ever be 1 resize listener running for performance
+ if (!isListening) {
+ isListening = true;
+ window.addEventListener('resize', handleChange, true);
+ }
+
+ // Push object only if it has not been pushed already
+ if (index === 0) {
+ index = queries.push({
+ mql : mql,
+ listeners : listeners
+ });
+ }
+
+ listeners.push(listener);
+ };
+
+ mql.removeListener = function(listener) {
+ for (var i = 0, il = listeners.length; i < il; i++){
+ if (listeners[i] === listener){
+ listeners.splice(i, 1);
+ }
+ }
+ };
+
+ return mql;
+ };
+}());
diff --git a/preview/assets/javascripts/polyfills/matchMedia.js b/preview/assets/javascripts/polyfills/matchMedia.js
new file mode 100644
index 0000000..7774538
--- /dev/null
+++ b/preview/assets/javascripts/polyfills/matchMedia.js
@@ -0,0 +1,46 @@
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+window.matchMedia || (window.matchMedia = function() {
+ "use strict";
+
+ // For browsers that support matchMedium api such as IE 9 and webkit
+ var styleMedia = (window.styleMedia || window.media);
+
+ // For those that don't support matchMedium
+ if (!styleMedia) {
+ var style = document.createElement('style'),
+ script = document.getElementsByTagName('script')[0],
+ info = null;
+
+ style.type = 'text/css';
+ style.id = 'matchmediajs-test';
+
+ script.parentNode.insertBefore(style, script);
+
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style) || style.currentStyle;
+
+ styleMedia = {
+ matchMedium: function(media) {
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+ if (style.styleSheet) {
+ style.styleSheet.cssText = text;
+ } else {
+ style.textContent = text;
+ }
+
+ // Test if media query is true or false
+ return info.width === '1px';
+ }
+ };
+ }
+
+ return function(media) {
+ return {
+ matches: styleMedia.matchMedium(media || 'all'),
+ media: media || 'all'
+ };
+ };
+}());
diff --git a/preview/assets/javascripts/polyfills/respond.js b/preview/assets/javascripts/polyfills/respond.js
new file mode 100644
index 0000000..1736d82
--- /dev/null
+++ b/preview/assets/javascripts/polyfills/respond.js
@@ -0,0 +1,7 @@
+/*! Respond.js v1.4.2: min/max-width media query polyfill
+ * Copyright 2014 Scott Jehl
+ * Licensed under MIT
+ * http://j.mp/respondjs
+ */
+
+!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;be.length)break e;if(!(d instanceof a)){c.lastIndex=0;var m=c.exec(d);if(m){u&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),N=[p,1];b&&N.push(b);var O=new a(l,g?t.tokenize(m,g):m,h);N.push(O),w&&N.push(w),Array.prototype.splice.apply(r,N)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=s+'="'+(i.attributes[s]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+o+">"+i.content+""+i.tag+">"},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);;
+Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});;
+Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/gi},Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document);
\ No newline at end of file
diff --git a/preview/contents/assets/javascripts/polyfills/matchMedia.addListener.js b/preview/contents/assets/javascripts/polyfills/matchMedia.addListener.js
new file mode 100644
index 0000000..764232d
--- /dev/null
+++ b/preview/contents/assets/javascripts/polyfills/matchMedia.addListener.js
@@ -0,0 +1,75 @@
+/*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */
+(function(){
+ // Bail out for browsers that have addListener support
+ if (window.matchMedia && window.matchMedia('all').addListener) {
+ return false;
+ }
+
+ var localMatchMedia = window.matchMedia,
+ hasMediaQueries = localMatchMedia('only all').matches,
+ isListening = false,
+ timeoutID = 0, // setTimeout for debouncing 'handleChange'
+ queries = [], // Contains each 'mql' and associated 'listeners' if 'addListener' is used
+ handleChange = function(evt) {
+ // Debounce
+ clearTimeout(timeoutID);
+
+ timeoutID = setTimeout(function() {
+ for (var i = 0, il = queries.length; i < il; i++) {
+ var mql = queries[i].mql,
+ listeners = queries[i].listeners || [],
+ matches = localMatchMedia(mql.media).matches;
+
+ // Update mql.matches value and call listeners
+ // Fire listeners only if transitioning to or from matched state
+ if (matches !== mql.matches) {
+ mql.matches = matches;
+
+ for (var j = 0, jl = listeners.length; j < jl; j++) {
+ listeners[j].call(window, mql);
+ }
+ }
+ }
+ }, 30);
+ };
+
+ window.matchMedia = function(media) {
+ var mql = localMatchMedia(media),
+ listeners = [],
+ index = 0;
+
+ mql.addListener = function(listener) {
+ // Changes would not occur to css media type so return now (Affects IE <= 8)
+ if (!hasMediaQueries) {
+ return;
+ }
+
+ // Set up 'resize' listener for browsers that support CSS3 media queries (Not for IE <= 8)
+ // There should only ever be 1 resize listener running for performance
+ if (!isListening) {
+ isListening = true;
+ window.addEventListener('resize', handleChange, true);
+ }
+
+ // Push object only if it has not been pushed already
+ if (index === 0) {
+ index = queries.push({
+ mql : mql,
+ listeners : listeners
+ });
+ }
+
+ listeners.push(listener);
+ };
+
+ mql.removeListener = function(listener) {
+ for (var i = 0, il = listeners.length; i < il; i++){
+ if (listeners[i] === listener){
+ listeners.splice(i, 1);
+ }
+ }
+ };
+
+ return mql;
+ };
+}());
diff --git a/preview/contents/assets/javascripts/polyfills/matchMedia.js b/preview/contents/assets/javascripts/polyfills/matchMedia.js
new file mode 100644
index 0000000..7774538
--- /dev/null
+++ b/preview/contents/assets/javascripts/polyfills/matchMedia.js
@@ -0,0 +1,46 @@
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+window.matchMedia || (window.matchMedia = function() {
+ "use strict";
+
+ // For browsers that support matchMedium api such as IE 9 and webkit
+ var styleMedia = (window.styleMedia || window.media);
+
+ // For those that don't support matchMedium
+ if (!styleMedia) {
+ var style = document.createElement('style'),
+ script = document.getElementsByTagName('script')[0],
+ info = null;
+
+ style.type = 'text/css';
+ style.id = 'matchmediajs-test';
+
+ script.parentNode.insertBefore(style, script);
+
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style) || style.currentStyle;
+
+ styleMedia = {
+ matchMedium: function(media) {
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+ if (style.styleSheet) {
+ style.styleSheet.cssText = text;
+ } else {
+ style.textContent = text;
+ }
+
+ // Test if media query is true or false
+ return info.width === '1px';
+ }
+ };
+ }
+
+ return function(media) {
+ return {
+ matches: styleMedia.matchMedium(media || 'all'),
+ media: media || 'all'
+ };
+ };
+}());
diff --git a/preview/contents/assets/javascripts/polyfills/respond.js b/preview/contents/assets/javascripts/polyfills/respond.js
new file mode 100644
index 0000000..1736d82
--- /dev/null
+++ b/preview/contents/assets/javascripts/polyfills/respond.js
@@ -0,0 +1,7 @@
+/*! Respond.js v1.4.2: min/max-width media query polyfill
+ * Copyright 2014 Scott Jehl
+ * Licensed under MIT
+ * http://j.mp/respondjs
+ */
+
+!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;be.length)break e;if(!(d instanceof a)){c.lastIndex=0;var m=c.exec(d);if(m){u&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),N=[p,1];b&&N.push(b);var O=new a(l,g?t.tokenize(m,g):m,h);N.push(O),w&&N.push(w),Array.prototype.splice.apply(r,N)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=s+'="'+(i.attributes[s]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+o+">"+i.content+""+i.tag+">"},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);;
+Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});;
+Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/gi},Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/