$(function(){ // Yes, I know this is circa-2008 style. I had no internet for a week when I wrote it and only jquery to write with. // Suck it. :) function getRandomSubarray(arr, size) { var shuffled = arr.slice(0), i = arr.length, temp, index; while (i--) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(0, size); } window.Footprints = window.Footprints || {}; Footprints.post = {}; Footprints.post.editor = {}; Footprints.post.actions = {}; Footprints.post.state = {}; Footprints.post.editor.editing_nodes = []; Footprints.post.editor.is_editing = false; Footprints.post.read_tracker = {}; Footprints.post.read_tracker.saw_bottom = false; Footprints.post.read_tracker.stayed_long_enough = false; Footprints.post.state.title = ""; Footprints.post.state.body = ""; Footprints.post.state.fantastic_timeout = null; var related_posts; Footprints.post.toggle_fantastic = function() { // var ele = $(this); // ele.parents(".fantastic_form").submit(); $(".fantastic_button").toggleClass("clicked"); if ($(".fantastic_button").hasClass("clicked")) { $(".share_link.heart .caption").text("Thanks! It really keeps me going. :)"); $(".share_link.heart .share_label").text("Loved"); ink.event('loved'); window.ink.mark_piece("loved"); } else { $(".share_link.heart .caption").text("Tells me you loved it."); $(".share_link.heart .share_label").text("Love"); ink.event('unloved'); window.ink.mark_piece("loved", false); } return false; }; Footprints.post.read_tracker.mark_read = function() { // $(".read_form").submit(); window.ink.mark_piece("read"); ink.event('read'); return false; }; Footprints.post.marked_read = false; Footprints.post.read_tracker.check_scroll = function() { if(!Footprints.post.marked_read && $(window).scrollTop() + $(window).height() > $(document).height() - 1110) { Footprints.post.read_tracker.saw_bottom = true; // $(window).unbind("scroll.read"); Footprints.post.marked_read = true; Footprints.post.read_tracker.mark_read_if_read(); // $(".support").show(); } if (!window.ink.ouibounce_showing && (!window.ink.profile_loaded || !window.ink.profile || window.ink.profile.subscribed !== true)) { if (($(window).scrollTop() > 600 && $(window).scrollTop() < 300 + $(window).height())) { $(".scroll_cta.join").addClass("visible"); } else { $(".scroll_cta.join").removeClass("visible"); } if (($(window).scrollTop() + $(window).height() > $(document).height() - 1110)) { $(".scroll_cta.enjoy").addClass("visible"); } else { $(".scroll_cta.enjoy").removeClass("visible"); } } }; Footprints.post.read_tracker.enough_time_callback = function() { Footprints.post.read_tracker.stayed_long_enough = true; Footprints.post.read_tracker.mark_read_if_read(); }; Footprints.post.read_tracker.mark_read_if_read = function() { if (Footprints.post.read_tracker.stayed_long_enough && Footprints.post.read_tracker.saw_bottom) { Footprints.post.read_tracker.mark_read(); } }; Footprints.post.read_tracker.calculate_from_lines_and_chars = function(lines, chars) { // seconds = (chars * .11693548387096774193) - (3.63089330024813895755 * lines); // seconds = 1000 * ((lines * 0.15) + (chars * 0.032)); // seconds = 1000 * ((lines * 0.05) + (chars * 0.012)); seconds = 1000 * 1.0 * chars / 6 / 300 * 60; return seconds; }; Footprints.post.read_tracker.time_estimate = function() { var lines; var chars = $(".post .body").text().length; try { lines = $(".post .body").text().match(/\n/g).length; } catch (err) { lines = 0; } return Footprints.post.read_tracker.calculate_from_lines_and_chars(lines, chars); }; function popitup(url) { newwindow=window.open(url,'footprints_share_window','height=300,width=450'); if (window.focus) {newwindow.focus();} return false; } Footprints.post.popup_or_redirect = function(ele) { if ($(window).width() > 480) { popitup(ele.attr("href")); return false; } else { return true; } }; Footprints.post.facebook_shared = function (e) { var ele = $(".share_link.facebook"); $(".facebook .share_label").text("Shared"); $(".facebook .caption").text("You rock. And your friends know it."); window.ink.mark_piece("facebook_shared"); ink.event('facebook_shared'); return Footprints.post.popup_or_redirect(ele); }; Footprints.post.twitter_shared = function (e) { var ele = $(".share_link.twitter"); $(".twitter .share_label").text("Tweeted"); $(".twitter .caption").text("Lookin' smart!"); window.ink.mark_piece("twitter_shared"); ink.event('twitter_shared'); // TODO: make these events. return Footprints.post.popup_or_redirect(ele); }; function setupRelated() { if (window.ink.site_data !== undefined && window.ink.site_data.posts!== undefined && $("#related_template").length > 0) { related_posts = getRandomSubarray(window.ink.site_data.posts, 3); var ractive = new Ractive({ el: '#related_posts', template: '#related_template', data: { related_posts: related_posts } }); setTimeout(function() { $("a.related_post").on('click', function() { var ele = $(this); window.ink.event('related_post_clicked', { link: ele.attr("href") }); }); }, 300); } else { setTimeout(setupRelated, 200); } } function setupFirebase() { if (window.ink.profile_loaded) { window.fire.child("pieces").child(window.ink.page_url) .once('value', function(dataSnapshot) { if (dataSnapshot) { var val = dataSnapshot.val(); // console.log("val") // console.log(val) if (val) { if (val.read === true) { } if (val.loved === true) { $(".fantastic_button").addClass("clicked"); $(".share_link.heart .caption").text("Thanks! It really keeps me going. :)"); $(".share_link.heart .share_label").text("Loved"); } if (val.facebook_shared === true) { $(".share_link.facebook").addClass("clicked"); $(".facebook .share_label").text("Shared"); $(".facebook .caption").text("You rock - and your friends know it."); } if (val.twitter_shared === true) { $(".share_link.twitter").addClass("clicked"); $(".twitter .share_label").text("Tweeted"); $(".twitter .caption").text("Lookin' smart!"); } } // If not signed up. $(".scroll_cta.enjoy").on('click', function(){ window.ink.event('cta_click', {"type": "enjoy"}); }); $(".scroll_cta.join").on('click', function(){ window.ink.event('cta_click', {"type": "join"}); }); window.ink.ouibounce_showing = false; if ((!window.ink.profile || window.ink.profile.subscribed !== true) && (! val || val.ouibounce_fired == undefined || val.ouibounce_fired !== true)) { ouibounce(document.getElementById('ink_ouibounce'),{ callback: function() { $(".scroll_cta").removeClass("visible"); ink.event('ouibounce_fired'); ink.mark_piece('ouibounce_fired'); window.ink.ouibounce_showing = true; } }); $('body').on('click', function() { $('#ink_ouibounce').hide(); window.ink.ouibounce_showing = false; }); $('#ink_ouibounce .modal-footer').on('click', function() { $('#ink_ouibounce').hide(); window.ink.ouibounce_showing = false; }); $('#ink_ouibounce .modal').on('click', function(e) { e.stopPropagation(); }); $('#ink_ouibounce .close_modal_button').on('click', function() { $('#ink_ouibounce').hide(); window.ink.ouibounce_showing = false; }); $('#ink_ouibounce .close_text').on('click', function() { $('#ink_ouibounce').hide(); window.ink.ouibounce_showing = false; }); $("#ink_ouibounce .subscribe_btn").on('click', window.ink.handleSubscribeClick); } } }); } else { setTimeout(setupFirebase, 200); } } Footprints.post.actions.init = function() { $(window).on("scroll.read", Footprints.post.read_tracker.check_scroll); Footprints.post.read_tracker.check_scroll(); setTimeout(Footprints.post.read_tracker.enough_time_callback, Footprints.post.read_tracker.time_estimate()); $(".fantastic_button").click(Footprints.post.toggle_fantastic); $(".share_link.facebook").click(Footprints.post.facebook_shared); $(".share_link.twitter").click(Footprints.post.twitter_shared); setupFirebase(); setupRelated(); // hljs.initHighlightingOnLoad(); }; Footprints.post.actions.init(); });