| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- //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 )
- // https://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://github.com/jonathantneal/polyfill/blob/master/source/Window.prototype.getComputedStyle.ie8.js
- (function () {
- if(window.getComputedStyle) return; //Add an exit if already defined
- function getComputedStylePixel(element, property, fontSize) {
- element.document; // Internet Explorer sometimes struggles to read currentStyle until the element's document is accessed.
- var
- value = element.currentStyle[property].match(/([\d\.]+)(%|cm|em|in|mm|pc|pt|)/) || [0, 0, ''],
- size = value[1],
- suffix = value[2],
- rootSize;
- fontSize = !fontSize ? fontSize : /%|em/.test(suffix) && element.parentElement ? getComputedStylePixel(element.parentElement, 'fontSize', null) : 16;
- rootSize = property == 'fontSize' ? fontSize : /width/i.test(property) ? element.clientWidth : element.clientHeight;
- return suffix == '%' ? size / 100 * rootSize :
- suffix == 'cm' ? size * 0.3937 * 96 :
- suffix == 'em' ? size * fontSize :
- suffix == 'in' ? size * 96 :
- suffix == 'mm' ? size * 0.3937 * 96 / 10 :
- suffix == 'pc' ? size * 12 * 96 / 72 :
- suffix == 'pt' ? size * 96 / 72 :
- size;
- }
- function setShortStyleProperty(style, property) {
- var
- borderSuffix = property == 'border' ? 'Width' : '',
- t = property + 'Top' + borderSuffix,
- r = property + 'Right' + borderSuffix,
- b = property + 'Bottom' + borderSuffix,
- l = property + 'Left' + borderSuffix;
- style[property] = (style[t] == style[r] && style[t] == style[b] && style[t] == style[l] ? [ style[t] ] :
- style[t] == style[b] && style[l] == style[r] ? [ style[t], style[r] ] :
- style[l] == style[r] ? [ style[t], style[r], style[b] ] :
- [ style[t], style[r], style[b], style[l] ]).join(' ');
- }
- // <CSSStyleDeclaration>
- function CSSStyleDeclaration(element) {
- var
- style = this,
- currentStyle = element.currentStyle,
- fontSize = getComputedStylePixel(element, 'fontSize'),
- unCamelCase = function (match) {
- return '-' + match.toLowerCase();
- },
- property;
- for (property in currentStyle) {
- Array.prototype.push.call(style, property == 'styleFloat' ? 'float' : property.replace(/[A-Z]/, unCamelCase));
- if (property == 'width') {
- style[property] = element.offsetWidth + 'px';
- } else if (property == 'height') {
- style[property] = element.offsetHeight + 'px';
- } else if (property == 'styleFloat') {
- style.float = currentStyle[property];
- } else if (/margin.|padding.|border.+W/.test(property) && style[property] != 'auto') {
- style[property] = Math.round(getComputedStylePixel(element, property, fontSize)) + 'px';
- } else if (/^outline/.test(property)) {
- // errors on checking outline
- try {
- style[property] = currentStyle[property];
- } catch (error) {
- style.outlineColor = currentStyle.color;
- style.outlineStyle = style.outlineStyle || 'none';
- style.outlineWidth = style.outlineWidth || '0px';
- style.outline = [style.outlineColor, style.outlineWidth, style.outlineStyle].join(' ');
- }
- } else {
- style[property] = currentStyle[property];
- }
- }
- setShortStyleProperty(style, 'margin');
- setShortStyleProperty(style, 'padding');
- setShortStyleProperty(style, 'border');
- style.fontSize = Math.round(fontSize) + 'px';
- }
- CSSStyleDeclaration.prototype = {
- constructor: CSSStyleDeclaration,
- // <CSSStyleDeclaration>.getPropertyPriority
- getPropertyPriority: function () {
- throw new Error('NotSupportedError: DOM Exception 9');
- },
- // <CSSStyleDeclaration>.getPropertyValue
- getPropertyValue: function(property) {
- var lookup = property.replace(/-([a-z])/g, function(match) {
- match = match.charAt ? match.split('') : match;
- return match[1].toUpperCase();
- });
- var ret = this[lookup];
- return ret;
- },
- // <CSSStyleDeclaration>.item
- item: function (index) {
- return this[index];
- },
- // <CSSStyleDeclaration>.removeProperty
- removeProperty: function () {
- throw new Error('NoModificationAllowedError: DOM Exception 7');
- },
- // <CSSStyleDeclaration>.setProperty
- setProperty: function () {
- throw new Error('NoModificationAllowedError: DOM Exception 7');
- },
- // <CSSStyleDeclaration>.getPropertyCSSValue
- getPropertyCSSValue: function () {
- throw new Error('NotSupportedError: DOM Exception 9');
- }
- };
- // <window>.getComputedStyle
- window.getComputedStyle = function (element) {
- return new CSSStyleDeclaration(element);
- };
- })();
- //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 */
- }
|