Merge pull request #130 from jillesme/master

Optimize index.js and add style consistency
This commit is contained in:
Hannah Wolfe 2014-09-15 18:46:46 +01:00
commit 72ba094f2f

View File

@ -2,23 +2,51 @@
* Main JS file for Casper behaviours * Main JS file for Casper behaviours
*/ */
/*globals jQuery, document */ /* globals jQuery, document */
(function ($) { (function ($, sr, undefined) {
"use strict"; "use strict";
$(document).ready(function(){ var $document = $(document),
$(".post-content").fitVids(); // debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
debounce = function (func, threshold, execAsap) {
var timeout;
function casperFullImg() { return function debounced () {
$("img").each( function() { var obj = this, args = arguments;
var contentWidth = $(".post-content").outerWidth(); // Width of the content function delayed () {
var imageWidth = $(this)[0].naturalWidth; // Original image resolution if (!execAsap) {
func.apply(obj, args);
}
timeout = null;
}
if (timeout) {
clearTimeout(timeout);
} else if (execAsap) {
func.apply(obj, args);
}
timeout = setTimeout(delayed, threshold || 100);
};
};
$document.ready(function () {
var $postContent = $(".post-content");
$postContent.fitVids();
var casperFullImg = function () {
$("img").each(function () {
var $this = $(this),
contentWidth = $postContent.outerWidth(), // Width of the content
imageWidth = $this[0].naturalWidth; // Original image resolution
if (imageWidth >= contentWidth) { if (imageWidth >= contentWidth) {
$(this).addClass('full-img'); $this.addClass('full-img');
} else { } else {
$(this).removeClass('full-img'); $this.removeClass('full-img');
} }
}); });
}; };
@ -30,61 +58,38 @@
}); });
}(jQuery)); // smartresize
jQuery.fn[sr] = function(fn) { return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
(function($,sr){ // Arctic Scroll by Paul Adam Davis
// https://github.com/PaulAdamDavis/Arctic-Scroll
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
// smartresize
jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
})(jQuery,'smartresize');
// Arctic Scroll by Paul Adam Davis
// https://github.com/PaulAdamDavis/Arctic-Scroll
(function ($) {
$.fn.arctic_scroll = function (options) { $.fn.arctic_scroll = function (options) {
var defaults = { var defaults = {
elem: $(this), elem: $(this),
speed: 500 speed: 500
}; },
var options = $.extend(defaults, options);
options.elem.click(function(event){ allOptions = $.extend(defaults, options);
allOptions.elem.click(function (event) {
event.preventDefault(); event.preventDefault();
var offset = ($(this).attr('data-offset')) ? $(this).attr('data-offset') : false, var $this = $(this),
position = ($(this).attr('data-position')) ? $(this).attr('data-position') : false; $htmlBody = $('html, body'),
offset = ($this.attr('data-offset')) ? $this.attr('data-offset') : false,
position = ($this.attr('data-position')) ? $this.attr('data-position') : false,
toMove;
if (offset) { if (offset) {
var toMove = parseInt(offset); toMove = parseInt(offset);
$('html,body').stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, allOptions.speed);
} else if (position) { } else if (position) {
var toMove = parseInt(position); toMove = parseInt(position);
$('html,body').stop(true, false).animate({scrollTop: toMove }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: toMove }, allOptions.speed);
} else { } else {
$('html,body').stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, allOptions.speed);
} }
}); });
}; };
})(jQuery); })(jQuery, 'smartresize');