//https://github.com/inexorabletash/polyfill/blob/master/web.js
if (!document.querySelectorAll) { document.querySelectorAll = function (selectors) { var style = document.createElement('style'), elements = [], element; document.documentElement.firstChild.appendChild(style); document._qsa = []; style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}'; window.scrollBy(0, 0); style.parentNode.removeChild(style); while (document._qsa.length) { element = document._qsa.shift(); element.style.removeAttribute('x-qsa'); elements.push(element); } document._qsa = null; return elements; }; } if (!document.querySelector) { document.querySelector = function (selectors) { var elements = document.querySelectorAll(selectors); return (elements.length) ? elements[0] : null; }; } if (!document.getElementsByClassName) { document.getElementsByClassName = function (classNames) { classNames = String(classNames).replace(/^|\s+/g, '.'); return document.querySelectorAll(classNames); }; }
//https://github.com/inexorabletash/polyfill // ES5 15.2.3.14 Object.keys ( O ) // developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys if (!Object.keys) {
Object.keys = function (o) { if (o !== Object(o)) { throw TypeError('Object.keys called on non-object'); } var ret = [], p; for (p in o) { if (Object.prototype.hasOwnProperty.call(o, p)) { ret.push(p); } } return ret; };
}
//https://github.com/inexorabletash/polyfill/blob/master/web.js (function (global) {
var B64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; global.atob = global.atob || function (input) { input = String(input); var position = 0, output = [], buffer = 0, bits = 0, n; input = input.replace(/\s/g, ''); if ((input.length % 4) === 0) { input = input.replace(/=+$/, ''); } if ((input.length % 4) === 1) { throw Error('InvalidCharacterError'); } if (/[^+/0-9A-Za-z]/.test(input)) { throw Error('InvalidCharacterError'); } while (position < input.length) { n = B64_ALPHABET.indexOf(input.charAt(position)); buffer = (buffer << 6) | n; bits += 6; if (bits === 24) { output.push(String.fromCharCode((buffer >> 16) & 0xFF)); output.push(String.fromCharCode((buffer >> 8) & 0xFF)); output.push(String.fromCharCode(buffer & 0xFF)); bits = 0; buffer = 0; } position += 1; } if (bits === 12) { buffer = buffer >> 4; output.push(String.fromCharCode(buffer & 0xFF)); } else if (bits === 18) { buffer = buffer >> 2; output.push(String.fromCharCode((buffer >> 8) & 0xFF)); output.push(String.fromCharCode(buffer & 0xFF)); } return output.join(''); }; global.btoa = global.btoa || function (input) { input = String(input); var position = 0, out = [], o1, o2, o3, e1, e2, e3, e4; if (/[^\x00-\xFF]/.test(input)) { throw Error('InvalidCharacterError'); } while (position < input.length) { o1 = input.charCodeAt(position++); o2 = input.charCodeAt(position++); o3 = input.charCodeAt(position++); // 111111 112222 222233 333333 e1 = o1 >> 2; e2 = ((o1 & 0x3) << 4) | (o2 >> 4); e3 = ((o2 & 0xf) << 2) | (o3 >> 6); e4 = o3 & 0x3f; if (position === input.length + 2) { e3 = 64; e4 = 64; } else if (position === input.length + 1) { e4 = 64; } out.push(B64_ALPHABET.charAt(e1), B64_ALPHABET.charAt(e2), B64_ALPHABET.charAt(e3), B64_ALPHABET.charAt(e4)); } return out.join(''); };
}(this));
//https://gist.github.com/jimeh/332357 if (!Object.prototype.hasOwnProperty){
/*jshint -W001, -W103 */ Object.prototype.hasOwnProperty = function(prop) { var proto = this.__proto__ || this.constructor.prototype; return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]); }; /*jshint +W001, +W103 */
}
//requestAnimationFrame polyfill for older Firefox/Chrome versions if (!window.requestAnimationFrame) {
if (window.webkitRequestAnimationFrame) { //https://github.com/Financial-Times/polyfill-service/blob/master/polyfills/requestAnimationFrame/polyfill-webkit.js (function (global) { // window.requestAnimationFrame global.requestAnimationFrame = function (callback) { return webkitRequestAnimationFrame(function () { callback(global.performance.now()); }); }; // window.cancelAnimationFrame global.cancelAnimationFrame = webkitCancelAnimationFrame; }(this)); } else if (window.mozRequestAnimationFrame) { //https://github.com/Financial-Times/polyfill-service/blob/master/polyfills/requestAnimationFrame/polyfill-moz.js (function (global) { // window.requestAnimationFrame global.requestAnimationFrame = function (callback) { return mozRequestAnimationFrame(function () { callback(global.performance.now()); }); }; // window.cancelAnimationFrame global.cancelAnimationFrame = mozCancelAnimationFrame; }(this)); } else { (function (global) { global.requestAnimationFrame = function (callback) { return global.setTimeout(callback, 1000 / 60); }; global.cancelAnimationFrame = global.clearTimeout; })(this); }
}