Kafeine

Nucleotide2

Apr 2nd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var cssQuery = function () {
  2.     var version = "2.0.2";
  3.     var C = /\s*,\s*/;
  4.     var cssQuery = function (s, fr) {
  5.         try {
  6.             var m = [];
  7.             var u = arguments.callee.caching && !fr;
  8.             var b = (fr) ? (fr.constructor == Array) ? fr : [fr] : [document];
  9.             var se = parseSelector(s).split(C),
  10.                 i;
  11.             for (i = 0; i < se.length; i++) {
  12.                 s = _2(se[i]);
  13.                 if (isMSIE && s.slice(0, 3).join("") == " *#") {
  14.                     s = s.slice(2);
  15.                     fr = _4([], b, s[1])
  16.                 } else fr = b;
  17.                 var j = 0,
  18.                     t, f, a, c = "";
  19.                 while (j < s.length) {
  20.                     t = s[j++];
  21.                     f = s[j++];
  22.                     c += t + f;
  23.                     a = "";
  24.                     if (s[j] == "(") {
  25.                         while (s[j++] != ")") a += s[j];
  26.                         a = a.slice(0, -1);
  27.                         c += "(" + a + ")"
  28.                     }
  29.                     fr = (u && cache[c]) ? cache[c] : select(fr, t, f, a);
  30.                     if (u) cache[c] = fr
  31.                 }
  32.                 m = m.concat(fr)
  33.             }
  34.             delete cssQuery.error;
  35.             return m
  36.         } catch (e) {
  37.             cssQuery.error = e;
  38.             return []
  39.         }
  40.     };
  41.     cssQuery.toString = function () {
  42.         return "function cssQuery() {\n  [version " + version + "]\n}"
  43.     };
  44.     var cache = {};
  45.     cssQuery.caching = false;
  46.     cssQuery.clearCache = function (s) {
  47.         if (s) {
  48.             s = _2(s).join("");
  49.             delete cache[s]
  50.         } else cache = {}
  51.     };
  52.     var modules = {};
  53.     var loaded = false;
  54.     cssQuery.addModule = function (n, s) {
  55.         if (loaded) eval("s=" + String(s));
  56.         modules[n] = new s()
  57.     };
  58.     cssQuery.valueOf = function (c) {
  59.         return c ? eval(c) : this
  60.     };
  61.     var selectors = {};
  62.     var pseudoClasses = {};
  63.     var AttributeSelector = {
  64.         match: /\[([\w-]+(\|[\w-]+)?)\s*(\W?=)?\s*([^\]]*)\]/
  65.     };
  66.     var attributeSelectors = [];
  67.     selectors[" "] = function (r, f, t, n) {
  68.         var e, i, j;
  69.         for (i = 0; i < f.length; i++) {
  70.             var s = getElementsByTagName(f[i], t, n);
  71.             for (j = 0;
  72.                 (e = s[j]); j++) {
  73.                 if (thisElement(e) && compareNamespace(e, n)) r.push(e)
  74.             }
  75.         }
  76.     };
  77.     selectors["#"] = function (r, f, i) {
  78.         var e, j;
  79.         for (j = 0;
  80.             (e = f[j]); j++)
  81.             if (e.id == i) r.push(e)
  82.     };
  83.     selectors["."] = function (r, f, c) {
  84.         c = new RegExp("(^|\\s)" + c + "(\\s|$)");
  85.         var e, i;
  86.         for (i = 0;
  87.             (e = f[i]); i++)
  88.             if (c.test(e.className)) r.push(e)
  89.     };
  90.     selectors[":"] = function (r, f, p, a) {
  91.         var t = pseudoClasses[p],
  92.             e, i;
  93.         if (t)
  94.             for (i = 0;
  95.                 (e = f[i]); i++)
  96.                 if (t(e, a)) r.push(e)
  97.     };
  98.     pseudoClasses["link"] = function (e) {
  99.         var d = getDocument(e);
  100.         if (d.links)
  101.             for (var i = 0; i < d.links.length; i++) {
  102.                 if (d.links[i] == e) return true
  103.             }
  104.     };
  105.     pseudoClasses["visited"] = function (e) {};
  106.     var thisElement = function (e) {
  107.         return (e && e.nodeType == 1 && e.tagName != "!") ? e : null
  108.     };
  109.     var previousElementSibling = function (e) {
  110.         while (e && (e = e.previousSibling) && !thisElement(e)) continue;
  111.         return e
  112.     };
  113.     var nextElementSibling = function (e) {
  114.         while (e && (e = e.nextSibling) && !thisElement(e)) continue;
  115.         return e
  116.     };
  117.     var firstElementChild = function (e) {
  118.         return thisElement(e.firstChild) || nextElementSibling(e.firstChild)
  119.     };
  120.     var lastElementChild = function (e) {
  121.         return thisElement(e.lastChild) || previousElementSibling(e.lastChild)
  122.     };
  123.     var childElements = function (e) {
  124.         var c = [];
  125.         e = firstElementChild(e);
  126.         while (e) {
  127.             c.push(e);
  128.             e = nextElementSibling(e)
  129.         }
  130.         return c
  131.     };
  132.     var isMSIE = true;
  133.     var isXML = function (e) {
  134.         var d = getDocument(e);
  135.         return (typeof d.mimeType == "unknown") ? /\.xml$/i.test(d.URL) : Boolean(d.mimeType == "XML Document")
  136.     };
  137.     var getDocument = function (e) {
  138.         return e.ownerDocument || e.document
  139.     };
  140.     var getElementsByTagName = function (e, t) {
  141.         return (t == "*" && e.all) ? e.all : e.getElementsByTagName(t)
  142.     };
  143.     var compareTagName = function (e, t, n) {
  144.         if (t == "*") return thisElement(e);
  145.         if (!compareNamespace(e, n)) return false;
  146.         if (!isXML(e)) t = t.toUpperCase();
  147.         return e.tagName == t
  148.     };
  149.     var compareNamespace = function (e, n) {
  150.         return !n || (n == "*") || (e.scopeName == n)
  151.     };
  152.     var getTextContent = function (e) {
  153.         return e.innerText
  154.     };
  155.  
  156.     function _4(r, f, id) {
  157.         var m, i, j;
  158.         for (i = 0; i < f.length; i++) {
  159.             if (m = f[i].all.item(id)) {
  160.                 if (m.id == id) r.push(m);
  161.                 else if (m.length != null) {
  162.                     for (j = 0; j < m.length; j++) {
  163.                         if (m[j].id == id) r.push(m[j])
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.         return r
  169.     };
  170.     if (![].push) Array.prototype.push = function () {
  171.         for (var i = 0; i < arguments.length; i++) {
  172.             this[this.length] = arguments[i]
  173.         }
  174.         return this.length
  175.     };
  176.     var N = /\|/;
  177.  
  178.     function select(fr, t, f, a) {
  179.         if (N.test(f)) {
  180.             f = f.split(N);
  181.             a = f[0];
  182.             f = f[1]
  183.         }
  184.         var r = [];
  185.         if (selectors[t]) {
  186.             selectors[t](r, fr, f, a)
  187.         }
  188.         return r
  189.     };
  190.     var S = /^[^\s>+~]/;
  191.     var ST = /[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;
  192.  
  193.     function _2(s) {
  194.         if (S.test(s)) s = " " + s;
  195.         return s.match(ST) || []
  196.     };
  197.     var W = /\s*([\s>+~(),]|^|$)\s*/g;
  198.     var I = /([\s>+~,]|[^(]\+|^)([#.:@])/g;
  199.     var parseSelector = function (s) {
  200.         return s.replace(W, "$1").replace(I, "$1*$2")
  201.     };
  202.     var Quote = {
  203.         toString: function () {
  204.             return "'"
  205.         },
  206.         match: /^('[^']*')|("[^"]*")$/,
  207.         test: function (s) {
  208.             return this.match.test(s)
  209.         },
  210.         add: function (s) {
  211.             return this.test(s) ? s : this + s + this
  212.         },
  213.         remove: function (s) {
  214.             return this.test(s) ? s.slice(1, -1) : s
  215.         }
  216.     };
  217.     var getText = function (t) {
  218.         return Quote.remove(t)
  219.     };
  220.     var E = /([\/()[\]?{}|*+-])/g;
  221.  
  222.     function regEscape(s) {
  223.         return s.replace(E, "\\$1")
  224.     };
  225.     cssQuery.addModule("css-level2", function () {
  226.         selectors[">"] = function (r, f, t, n) {
  227.             var e, i, j;
  228.             for (i = 0; i < f.length; i++) {
  229.                 var s = childElements(f[i]);
  230.                 for (j = 0;
  231.                     (e = s[j]); j++)
  232.                     if (compareTagName(e, t, n)) r.push(e)
  233.             }
  234.         };
  235.         selectors["+"] = function (r, f, t, n) {
  236.             for (var i = 0; i < f.length; i++) {
  237.                 var e = nextElementSibling(f[i]);
  238.                 if (e && compareTagName(e, t, n)) r.push(e)
  239.             }
  240.         };
  241.         selectors["@"] = function (r, f, a) {
  242.             var t = attributeSelectors[a].test;
  243.             var e, i;
  244.             for (i = 0;
  245.                 (e = f[i]); i++)
  246.                 if (t(e)) r.push(e)
  247.         };
  248.         pseudoClasses["first-child"] = function (e) {
  249.             return !previousElementSibling(e)
  250.         };
  251.         pseudoClasses["lang"] = function (e, c) {
  252.             c = new RegExp("^" + c, "i");
  253.             while (e && !e.getAttribute("lang")) e = e.parentNode;
  254.             return e && c.test(e.getAttribute("lang"))
  255.         };
  256.         AttributeSelector.NS_IE = /\\:/g;
  257.         AttributeSelector.PREFIX = "@";
  258.         AttributeSelector.tests = {};
  259.         AttributeSelector.replace = function (m, a, n, c, v) {
  260.             var k = this.PREFIX + m;
  261.             if (!attributeSelectors[k]) {
  262.                 a = this.create(a, c || "", v || "");
  263.                 attributeSelectors[k] = a;
  264.                 attributeSelectors.push(a)
  265.             }
  266.             return attributeSelectors[k].id
  267.         };
  268.         AttributeSelector.parse = function (s) {
  269.             s = s.replace(this.NS_IE, "|");
  270.             var m;
  271.             while (m = s.match(this.match)) {
  272.                 var r = this.replace(m[0], m[1], m[2], m[3], m[4]);
  273.                 s = s.replace(this.match, r)
  274.             }
  275.             return s
  276.         };
  277.         AttributeSelector.create = function (p, t, v) {
  278.             var a = {};
  279.             a.id = this.PREFIX + attributeSelectors.length;
  280.             a.name = p;
  281.             t = this.tests[t];
  282.             t = t ? t(this.getAttribute(p), getText(v)) : false;
  283.             a.test = new Function("e", "return " + t);
  284.             return a
  285.         };
  286.         AttributeSelector.getAttribute = function (n) {
  287.             switch (n.toLowerCase()) {
  288.             case "id":
  289.                 return "e.id";
  290.             case "class":
  291.                 return "e.className";
  292.             case "for":
  293.                 return "e.htmlFor";
  294.             case "href":
  295.                 if (isMSIE) {
  296.                     return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')"
  297.                 }
  298.             }
  299.             return "e.getAttribute('" + n.replace(N, ":") + "')"
  300.         };
  301.         AttributeSelector.tests[""] = function (a) {
  302.             return a
  303.         };
  304.         AttributeSelector.tests["="] = function (a, v) {
  305.             return a + "==" + Quote.add(v)
  306.         };
  307.         AttributeSelector.tests["~="] = function (a, v) {
  308.             return "/(^| )" + regEscape(v) + "( |$)/.test(" + a + ")"
  309.         };
  310.         AttributeSelector.tests["|="] = function (a, v) {
  311.             return "/^" + regEscape(v) + "(-|$)/.test(" + a + ")"
  312.         };
  313.         var _3 = parseSelector;
  314.         parseSelector = function (s) {
  315.             return _3(AttributeSelector.parse(s))
  316.         }
  317.     });
  318.     cssQuery.addModule("css-level3", function () {
  319.         selectors["~"] = function (r, f, t, n) {
  320.             var e, i;
  321.             for (i = 0;
  322.                 (e = f[i]); i++) {
  323.                 while (e = nextElementSibling(e)) {
  324.                     if (compareTagName(e, t, n)) r.push(e)
  325.                 }
  326.             }
  327.         };
  328.         pseudoClasses["contains"] = function (e, t) {
  329.             t = new RegExp(regEscape(getText(t)));
  330.             return t.test(getTextContent(e))
  331.         };
  332.         pseudoClasses["root"] = function (e) {
  333.             return e == getDocument(e).documentElement
  334.         };
  335.         pseudoClasses["empty"] = function (e) {
  336.             var n, i;
  337.             for (i = 0;
  338.                 (n = e.childNodes[i]); i++) {
  339.                 if (thisElement(n) || n.nodeType == 3) return false
  340.             }
  341.             return true
  342.         };
  343.         pseudoClasses["last-child"] = function (e) {
  344.             return !nextElementSibling(e)
  345.         };
  346.         pseudoClasses["only-child"] = function (e) {
  347.             e = e.parentNode;
  348.             return firstElementChild(e) == lastElementChild(e)
  349.         };
  350.         pseudoClasses["not"] = function (e, s) {
  351.             var n = cssQuery(s, getDocument(e));
  352.             for (var i = 0; i < n.length; i++) {
  353.                 if (n[i] == e) return false
  354.             }
  355.             return true
  356.         };
  357.         pseudoClasses["nth-child"] = function (e, a) {
  358.             return nthChild(e, a, previousElementSibling)
  359.         };
  360.         pseudoClasses["nth-last-child"] = function (e, a) {
  361.             return nthChild(e, a, nextElementSibling)
  362.         };
  363.         pseudoClasses["target"] = function (e) {
  364.             return e.id == location.hash.slice(1)
  365.         };
  366.         pseudoClasses["checked"] = function (e) {
  367.             return e.checked
  368.         };
  369.         pseudoClasses["enabled"] = function (e) {
  370.             return e.disabled === false
  371.         };
  372.         pseudoClasses["disabled"] = function (e) {
  373.             return e.disabled
  374.         };
  375.         pseudoClasses["indeterminate"] = function (e) {
  376.             return e.indeterminate
  377.         };
  378.         AttributeSelector.tests["^="] = function (a, v) {
  379.             return "/^" + regEscape(v) + "/.test(" + a + ")"
  380.         };
  381.         AttributeSelector.tests["$="] = function (a, v) {
  382.             return "/" + regEscape(v) + "$/.test(" + a + ")"
  383.         };
  384.         AttributeSelector.tests["*="] = function (a, v) {
  385.             return "/" + regEscape(v) + "/.test(" + a + ")"
  386.         };
  387.  
  388.         function nthChild(e, a, t) {
  389.             switch (a) {
  390.             case "n":
  391.                 return true;
  392.             case "even":
  393.                 a = "2n";
  394.                 break;
  395.             case "odd":
  396.                 a = "2n+1"
  397.             }
  398.             var ch = childElements(e.parentNode);
  399.  
  400.             function _1(i) {
  401.                 var i = (t == nextElementSibling) ? ch.length - i : i - 1;
  402.                 return ch[i] == e
  403.             };
  404.             if (!isNaN(a)) return _1(a);
  405.             a = a.split("n");
  406.             var m = parseInt(a[0]);
  407.             var s = parseInt(a[1]);
  408.             if ((isNaN(m) || m == 1) && s == 0) return true;
  409.             if (m == 0 && !isNaN(s)) return _1(s);
  410.             if (isNaN(s)) s = 0;
  411.             var c = 1;
  412.             while (e = t(e)) c++;
  413.             if (isNaN(m) || m == 1) return (t == nextElementSibling) ? (c <= s) : (s >= c);
  414.             return (c % m) == s
  415.         }
  416.     });
  417.     cssQuery.addModule("css-standard", function () {
  418.         isMSIE = eval("false;/*@cc_on@if(@\x5fwin32)isMSIE=true@end@*/");
  419.         if (!isMSIE) {
  420.             getElementsByTagName = function (e, t, n) {
  421.                 return n ? e.getElementsByTagNameNS("*", t) : e.getElementsByTagName(t)
  422.             };
  423.             compareNamespace = function (e, n) {
  424.                 return !n || (n == "*") || (e.prefix == n)
  425.             };
  426.             isXML = document.contentType ? function (e) {
  427.                 return /xml/i.test(getDocument(e).contentType)
  428.             } : function (e) {
  429.                 return getDocument(e).documentElement.tagName != "HTML"
  430.             };
  431.             getTextContent = function (e) {
  432.                 return e.textContent || e.innerText || _0(e)
  433.             };
  434.  
  435.             function _0(e) {
  436.                 var t = "",
  437.                     n, i;
  438.                 for (i = 0;
  439.                     (n = e.childNodes[i]); i++) {
  440.                     switch (n.nodeType) {
  441.                     case 11:
  442.                     case 1:
  443.                         t += _0(n);
  444.                         break;
  445.                     case 3:
  446.                         t += n.nodeValue;
  447.                         break
  448.                     }
  449.                 }
  450.                 return t
  451.             }
  452.         }
  453.     });
  454.     loaded = true;
  455.     return cssQuery
  456. }();
Advertisement
Add Comment
Please, Sign In to add comment