Skip to content

Instantly share code, notes, and snippets.

@astromac
astromac / Validate Phone Number
Last active January 2, 2016 15:39
7 and 10 digit US phone number validation
function validatePhoneNumber(phonenumber) {
var pattern = /^(?:(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:\s+|#|x\.?|ext\.?|extension)\s*(\d+))?$/i;
var matches = [];
var validnumber = [];
validnumber.unformatted = '';
if (phonenumber.length > 0) {
if (pattern.test(phonenumber)) {
matches = phonenumber.match(pattern);
// split phone number input into phone number format array
@astromac
astromac / Detect Browser
Last active January 2, 2016 15:49
Adds class to the html tag in order to address any styling quirks specific to those brosers. Example class might be "IE IE-9" or "iOS iO7-iPad".
// Detect IE and iOS and add browser class to document
var tag = document.getElementsByTagName('html')[0];
var ua = navigator.userAgent;
var version = '';
if (/msie (\d+)/i.test(ua)) {
version = 'IE IE-' + /msie (\d+)/i.exec(ua)[1];
if (tag.className.length > 0) {
tag.className = tag.className + ' ' + version;
} else {
tag.className = version;
@astromac
astromac / Set Content Offset
Last active May 18, 2016 03:59
Positions content below a fixed header and does this everytime the window size changes
function contentOffset() {
var droppx = /\d+/;
var navheight = $('header > .navbar').css('height');
var subnavheight = $('header > .navbar + .sub-nav').css('height');
var breadcrumbheight = $('.breadcrumb').css('height');
var offset = 0;
if ($('.page-header').length > 0) {
var pageheaderheight = $('.page-header').css('height');
offset = parseInt(navheight.match(droppx)) + parseInt(subnavheight.match(droppx)) + parseInt(breadcrumbheight.match(droppx)) + parseInt(pageheaderheight.match(droppx)) + 1;
} else {
@astromac
astromac / Disable Placeholder Links
Created January 8, 2014 22:35
Disables placeholder links to prevent page scrolling
@astromac
astromac / Remove no-js
Created January 8, 2014 23:00
Removes no-js class
// Remove no-js class
var tag = document.getElementsByTagName('html')[0];
if (tag.className.length > 0 && /no-js/i.test(tag.className)) {
tag.className = tag.className.replace(/\s?no-js\s?/i, '');
} else {
tag.className = '';
}
@astromac
astromac / Bootstrap Modal Video Player js
Created January 8, 2014 23:21
Plays selected video element in a Bootstrap modal window.
// Play very small videos in modal box
if ($(window).width() > 750) {
var allvideos = $('video');
// Hide controls for very small videos
for (var i = 0; i < allvideos.length; i++) {
if ($(allvideos[i]).width() < 470) {
$(allvideos[i]).removeAttr('controls');
// Insert poster image for IE 9
if ($('html').hasClass('IE-9')) {
@astromac
astromac / Bootstrap Modal Video Player html
Created January 8, 2014 23:26
HTML5 video in a Bootstrap modal window.
<div class="modal-trigger">
<canvas></canvas>
<video preload="auto" controls="controls" poster="img/why-autologel-poster.png">
<source src="media/why-autologel.mp4" type='video/mp4'>
<source src="media/why-autologel.webm" type='video/webm'>
</video>
</div>
<!-- Modal Window -->
<div class="modal fade" id="modal-window" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
@astromac
astromac / Unhide Inputs
Last active January 3, 2016 03:39
Scrolls form inputs when they are hidden by a fixed header or footer
// Make sure focused elements aren't hidden by fixed positioned header or footer
function unhideInput(formelement) {
formelement.onfocus = function () {
var paddingheight = 30;
var headerheight = document.getElementsByTagName('header')[0].offsetHeight;
var footerheight = document.getElementsByTagName('footer')[document.getElementsByTagName('footer').length - 1].offsetHeight;
var viewportheight = window.innerHeight;
var elementpos = this.getBoundingClientRect();
if ((elementpos.top <= (headerheight + paddingheight)) || (elementpos.bottom >= (viewportheight - footerheight))) {
@astromac
astromac / Bootstrap Template
Last active January 3, 2016 14:59
Starting HTML5 Bootstrap template
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title></title>
<meta name="description" content="">
@astromac
astromac / cookies.js
Last active August 29, 2015 14:07
Get / Set Cookie
var setCookie = function (cookieName, cookieValue, expireDays) {
var date = new Date(),
expires = '';
date.setTime(date.getTime() + (expireDays * 24 * 60 * 60 * 1000));
expires = 'expires=' + date.toUTCString();
document.cookie = cookieName + '=' + cookieValue + '; ' + expires + '; ' + 'domain=' + document.location.hostname + '; path=/';
};
var getCookie = function(cookieName) {