Skip to content

Instantly share code, notes, and snippets.

View jonathantneal's full-sized avatar

Jonathan Neal jonathantneal

View GitHub Profile
@jonathantneal
jonathantneal / getVendorPrefix.js
Created December 13, 2011 03:55
getVendorPrefix.js
var vendorPrefix = (function (de, e, cs) {
var prefix = ((cs(de.appendChild(e)).cssText || '').match(/\W-[^-]+/) || [''])[0].substr(2);
de.removeChild(de.lastChild);
return prefix;
})(document.documentElement, document.createElement('a'), window.getComputedStyle || function (e) { return e.currentStyle; });
@jonathantneal
jonathantneal / getElementOffset.js
Created December 20, 2011 04:37
getElementOffset.js
function getElementOffset(el)
{
for (var offsetTop = 0, offsetLeft = 0; el.offsetParent; el = el.parentNode)
{
offsetTop += el.offsetTop;
offsetLeft += el.offsetLeft;
}
return {
offsetTop: offsetTop,
@jonathantneal
jonathantneal / dom.js
Created December 21, 2011 22:04
dom.js
// every so often i feel the need to reinvent the wheel just to make sure i prefer it
(function (win, doc) {
/* String Helpers */
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
function padName(list) {
@jonathantneal
jonathantneal / templatejs.js
Created January 21, 2012 07:23
templatejs.js
// TemplateJS v3.1.1 MIT/GPL2 @jon_neal
(function (global) {
function escapeJS (str) {
return str.replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
}
function TemplateWalk (str, chars, helpers, instance) {
// check for the opening delimiters and init our array buffer
var index = str.indexOf(chars.START_PROP), buffer = '', helper;
@jonathantneal
jonathantneal / localStorage.js
Created January 31, 2012 00:53
localStorage For Everybody
// localStorage For Everybody (but namely old ie)
!this.localStorage && ('addBehavior' in document.documentElement) && (this.localStorage = (function (glo) {
var localStorageElement = document.appendChild(document.createElement('x-local-storage'));
var localStorageKey = 'localStorage';
var localStorageDataPrefix = 'data-';
localStorageElement.addBehavior('#default#userData');
localStorageElement.load(localStorageKey);
@jonathantneal
jonathantneal / trim-canvas.js
Created January 31, 2012 06:18 — forked from remy/trim-canvas.js
Trims the surrounding transparent pixels from a canvas
('HTMLCanvasElement' in this) && (function () {
HTMLCanvasElement.prototype.trim = function (opts) {
opts = opts || {};
var
element = this,
bound = {
top: null,
left: null,
right: null,
@jonathantneal
jonathantneal / bettergetters.js
Created February 22, 2012 05:29
Better Getters
function property(obj, prop, val) {
for (var o = obj, i = 0, a = prop.split('.'), l = a.length; i < l; ++i) {
if (!(a[i] in o)) return;
if (val && i == l - 1) {
o[a[i]] = val;
}
o = o[a[i]];
}
@jonathantneal
jonathantneal / ir.css
Created March 2, 2012 01:46
Image Replacement CSS
/* Image Replacement */
.ir
{
direction: ltr;
font: 0/0 serif;
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
}
function refreshLink(link) {
var instance = this;
var pageDomain = window.location.href.match(/\/\/([^\/]+)/);
var linkDomain = link.href.match(/\/\/([^\/]+)/);
if (!pageDomain || !linkDomain || pageDomain[1] != linkDomain[1]) {
return instance;
}
HTMLCanvasElement.prototype.brightness = function (value) {
var
canvas = this,
context = canvas.getContext('2d'),
imageData = context.getImageData(0, 0, canvas.width, canvas.height),
canvasPixelArray = imageData.data,
canvasPixelArrayLength = canvasPixelArray.length,
i = 0;
value = parseFloat(value) || 0;