aboutsummaryrefslogtreecommitdiffstats
path: root/coding-now/static/js/site.js
diff options
context:
space:
mode:
Diffstat (limited to 'coding-now/static/js/site.js')
-rw-r--r--coding-now/static/js/site.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/coding-now/static/js/site.js b/coding-now/static/js/site.js
new file mode 100644
index 0000000..3cb76e5
--- /dev/null
+++ b/coding-now/static/js/site.js
@@ -0,0 +1,94 @@
+$(document).ready(function() {
+
+ // Variables
+ var $codeSnippets = $('.code-example-body'),
+ $nav = $('.navbar'),
+ $body = $('body'),
+ $window = $(window),
+ $popoverLink = $('[data-popover]'),
+ navOffsetTop = $nav.offset().top,
+ $document = $(document),
+ entityMap = {
+ "&": "&",
+ "<": "&lt;",
+ ">": "&gt;",
+ '"': '&quot;',
+ "'": '&#39;',
+ "/": '&#x2F;'
+ }
+
+ function init() {
+ $window.on('scroll', onScroll)
+ $window.on('resize', resize)
+ $popoverLink.on('click', openPopover)
+ $document.on('click', closePopover)
+ $('a[href^="#"]').on('click', smoothScroll)
+ buildSnippets();
+ }
+
+ function smoothScroll(e) {
+ e.preventDefault();
+ $(document).off("scroll");
+ var target = this.hash,
+ menu = target;
+ $target = $(target);
+ $('html, body').stop().animate({
+ 'scrollTop': $target.offset().top-40
+ }, 0, 'swing', function () {
+ window.location.hash = target;
+ $(document).on("scroll", onScroll);
+ });
+ }
+
+ function openPopover(e) {
+ e.preventDefault()
+ closePopover();
+ var popover = $($(this).data('popover'));
+ popover.toggleClass('open')
+ e.stopImmediatePropagation();
+ }
+
+ function closePopover(e) {
+ if($('.popover.open').length > 0) {
+ $('.popover').removeClass('open')
+ }
+ }
+
+ $("#button").click(function() {
+ $('html, body').animate({
+ scrollTop: $("#elementtoScrollToID").offset().top
+ }, 2000);
+});
+
+ function resize() {
+ $body.removeClass('has-docked-nav')
+ navOffsetTop = $nav.offset().top
+ onScroll()
+ }
+
+ function onScroll() {
+ if(navOffsetTop < $window.scrollTop() && !$body.hasClass('has-docked-nav')) {
+ $body.addClass('has-docked-nav')
+ }
+ if(navOffsetTop > $window.scrollTop() && $body.hasClass('has-docked-nav')) {
+ $body.removeClass('has-docked-nav')
+ }
+ }
+
+ function escapeHtml(string) {
+ return String(string).replace(/[&<>"'\/]/g, function (s) {
+ return entityMap[s];
+ });
+ }
+
+ function buildSnippets() {
+ $codeSnippets.each(function() {
+ var newContent = escapeHtml($(this).html())
+ $(this).html(newContent)
+ })
+ }
+
+
+ init();
+
+}); \ No newline at end of file