Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var cssQuery = function () {
- var version = "2.0.2";
- var C = /\s*,\s*/;
- var cssQuery = function (s, fr) {
- try {
- var m = [];
- var u = arguments.callee.caching && !fr;
- var b = (fr) ? (fr.constructor == Array) ? fr : [fr] : [document];
- var se = parseSelector(s).split(C),
- i;
- for (i = 0; i < se.length; i++) {
- s = _2(se[i]);
- if (isMSIE && s.slice(0, 3).join("") == " *#") {
- s = s.slice(2);
- fr = _4([], b, s[1])
- } else fr = b;
- var j = 0,
- t, f, a, c = "";
- while (j < s.length) {
- t = s[j++];
- f = s[j++];
- c += t + f;
- a = "";
- if (s[j] == "(") {
- while (s[j++] != ")") a += s[j];
- a = a.slice(0, -1);
- c += "(" + a + ")"
- }
- fr = (u && cache[c]) ? cache[c] : select(fr, t, f, a);
- if (u) cache[c] = fr
- }
- m = m.concat(fr)
- }
- delete cssQuery.error;
- return m
- } catch (e) {
- cssQuery.error = e;
- return []
- }
- };
- cssQuery.toString = function () {
- return "function cssQuery() {\n [version " + version + "]\n}"
- };
- var cache = {};
- cssQuery.caching = false;
- cssQuery.clearCache = function (s) {
- if (s) {
- s = _2(s).join("");
- delete cache[s]
- } else cache = {}
- };
- var modules = {};
- var loaded = false;
- cssQuery.addModule = function (n, s) {
- if (loaded) eval("s=" + String(s));
- modules[n] = new s()
- };
- cssQuery.valueOf = function (c) {
- return c ? eval(c) : this
- };
- var selectors = {};
- var pseudoClasses = {};
- var AttributeSelector = {
- match: /\[([\w-]+(\|[\w-]+)?)\s*(\W?=)?\s*([^\]]*)\]/
- };
- var attributeSelectors = [];
- selectors[" "] = function (r, f, t, n) {
- var e, i, j;
- for (i = 0; i < f.length; i++) {
- var s = getElementsByTagName(f[i], t, n);
- for (j = 0;
- (e = s[j]); j++) {
- if (thisElement(e) && compareNamespace(e, n)) r.push(e)
- }
- }
- };
- selectors["#"] = function (r, f, i) {
- var e, j;
- for (j = 0;
- (e = f[j]); j++)
- if (e.id == i) r.push(e)
- };
- selectors["."] = function (r, f, c) {
- c = new RegExp("(^|\\s)" + c + "(\\s|$)");
- var e, i;
- for (i = 0;
- (e = f[i]); i++)
- if (c.test(e.className)) r.push(e)
- };
- selectors[":"] = function (r, f, p, a) {
- var t = pseudoClasses[p],
- e, i;
- if (t)
- for (i = 0;
- (e = f[i]); i++)
- if (t(e, a)) r.push(e)
- };
- pseudoClasses["link"] = function (e) {
- var d = getDocument(e);
- if (d.links)
- for (var i = 0; i < d.links.length; i++) {
- if (d.links[i] == e) return true
- }
- };
- pseudoClasses["visited"] = function (e) {};
- var thisElement = function (e) {
- return (e && e.nodeType == 1 && e.tagName != "!") ? e : null
- };
- var previousElementSibling = function (e) {
- while (e && (e = e.previousSibling) && !thisElement(e)) continue;
- return e
- };
- var nextElementSibling = function (e) {
- while (e && (e = e.nextSibling) && !thisElement(e)) continue;
- return e
- };
- var firstElementChild = function (e) {
- return thisElement(e.firstChild) || nextElementSibling(e.firstChild)
- };
- var lastElementChild = function (e) {
- return thisElement(e.lastChild) || previousElementSibling(e.lastChild)
- };
- var childElements = function (e) {
- var c = [];
- e = firstElementChild(e);
- while (e) {
- c.push(e);
- e = nextElementSibling(e)
- }
- return c
- };
- var isMSIE = true;
- var isXML = function (e) {
- var d = getDocument(e);
- return (typeof d.mimeType == "unknown") ? /\.xml$/i.test(d.URL) : Boolean(d.mimeType == "XML Document")
- };
- var getDocument = function (e) {
- return e.ownerDocument || e.document
- };
- var getElementsByTagName = function (e, t) {
- return (t == "*" && e.all) ? e.all : e.getElementsByTagName(t)
- };
- var compareTagName = function (e, t, n) {
- if (t == "*") return thisElement(e);
- if (!compareNamespace(e, n)) return false;
- if (!isXML(e)) t = t.toUpperCase();
- return e.tagName == t
- };
- var compareNamespace = function (e, n) {
- return !n || (n == "*") || (e.scopeName == n)
- };
- var getTextContent = function (e) {
- return e.innerText
- };
- function _4(r, f, id) {
- var m, i, j;
- for (i = 0; i < f.length; i++) {
- if (m = f[i].all.item(id)) {
- if (m.id == id) r.push(m);
- else if (m.length != null) {
- for (j = 0; j < m.length; j++) {
- if (m[j].id == id) r.push(m[j])
- }
- }
- }
- }
- return r
- };
- if (![].push) Array.prototype.push = function () {
- for (var i = 0; i < arguments.length; i++) {
- this[this.length] = arguments[i]
- }
- return this.length
- };
- var N = /\|/;
- function select(fr, t, f, a) {
- if (N.test(f)) {
- f = f.split(N);
- a = f[0];
- f = f[1]
- }
- var r = [];
- if (selectors[t]) {
- selectors[t](r, fr, f, a)
- }
- return r
- };
- var S = /^[^\s>+~]/;
- var ST = /[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;
- function _2(s) {
- if (S.test(s)) s = " " + s;
- return s.match(ST) || []
- };
- var W = /\s*([\s>+~(),]|^|$)\s*/g;
- var I = /([\s>+~,]|[^(]\+|^)([#.:@])/g;
- var parseSelector = function (s) {
- return s.replace(W, "$1").replace(I, "$1*$2")
- };
- var Quote = {
- toString: function () {
- return "'"
- },
- match: /^('[^']*')|("[^"]*")$/,
- test: function (s) {
- return this.match.test(s)
- },
- add: function (s) {
- return this.test(s) ? s : this + s + this
- },
- remove: function (s) {
- return this.test(s) ? s.slice(1, -1) : s
- }
- };
- var getText = function (t) {
- return Quote.remove(t)
- };
- var E = /([\/()[\]?{}|*+-])/g;
- function regEscape(s) {
- return s.replace(E, "\\$1")
- };
- cssQuery.addModule("css-level2", function () {
- selectors[">"] = function (r, f, t, n) {
- var e, i, j;
- for (i = 0; i < f.length; i++) {
- var s = childElements(f[i]);
- for (j = 0;
- (e = s[j]); j++)
- if (compareTagName(e, t, n)) r.push(e)
- }
- };
- selectors["+"] = function (r, f, t, n) {
- for (var i = 0; i < f.length; i++) {
- var e = nextElementSibling(f[i]);
- if (e && compareTagName(e, t, n)) r.push(e)
- }
- };
- selectors["@"] = function (r, f, a) {
- var t = attributeSelectors[a].test;
- var e, i;
- for (i = 0;
- (e = f[i]); i++)
- if (t(e)) r.push(e)
- };
- pseudoClasses["first-child"] = function (e) {
- return !previousElementSibling(e)
- };
- pseudoClasses["lang"] = function (e, c) {
- c = new RegExp("^" + c, "i");
- while (e && !e.getAttribute("lang")) e = e.parentNode;
- return e && c.test(e.getAttribute("lang"))
- };
- AttributeSelector.NS_IE = /\\:/g;
- AttributeSelector.PREFIX = "@";
- AttributeSelector.tests = {};
- AttributeSelector.replace = function (m, a, n, c, v) {
- var k = this.PREFIX + m;
- if (!attributeSelectors[k]) {
- a = this.create(a, c || "", v || "");
- attributeSelectors[k] = a;
- attributeSelectors.push(a)
- }
- return attributeSelectors[k].id
- };
- AttributeSelector.parse = function (s) {
- s = s.replace(this.NS_IE, "|");
- var m;
- while (m = s.match(this.match)) {
- var r = this.replace(m[0], m[1], m[2], m[3], m[4]);
- s = s.replace(this.match, r)
- }
- return s
- };
- AttributeSelector.create = function (p, t, v) {
- var a = {};
- a.id = this.PREFIX + attributeSelectors.length;
- a.name = p;
- t = this.tests[t];
- t = t ? t(this.getAttribute(p), getText(v)) : false;
- a.test = new Function("e", "return " + t);
- return a
- };
- AttributeSelector.getAttribute = function (n) {
- switch (n.toLowerCase()) {
- case "id":
- return "e.id";
- case "class":
- return "e.className";
- case "for":
- return "e.htmlFor";
- case "href":
- if (isMSIE) {
- return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')"
- }
- }
- return "e.getAttribute('" + n.replace(N, ":") + "')"
- };
- AttributeSelector.tests[""] = function (a) {
- return a
- };
- AttributeSelector.tests["="] = function (a, v) {
- return a + "==" + Quote.add(v)
- };
- AttributeSelector.tests["~="] = function (a, v) {
- return "/(^| )" + regEscape(v) + "( |$)/.test(" + a + ")"
- };
- AttributeSelector.tests["|="] = function (a, v) {
- return "/^" + regEscape(v) + "(-|$)/.test(" + a + ")"
- };
- var _3 = parseSelector;
- parseSelector = function (s) {
- return _3(AttributeSelector.parse(s))
- }
- });
- cssQuery.addModule("css-level3", function () {
- selectors["~"] = function (r, f, t, n) {
- var e, i;
- for (i = 0;
- (e = f[i]); i++) {
- while (e = nextElementSibling(e)) {
- if (compareTagName(e, t, n)) r.push(e)
- }
- }
- };
- pseudoClasses["contains"] = function (e, t) {
- t = new RegExp(regEscape(getText(t)));
- return t.test(getTextContent(e))
- };
- pseudoClasses["root"] = function (e) {
- return e == getDocument(e).documentElement
- };
- pseudoClasses["empty"] = function (e) {
- var n, i;
- for (i = 0;
- (n = e.childNodes[i]); i++) {
- if (thisElement(n) || n.nodeType == 3) return false
- }
- return true
- };
- pseudoClasses["last-child"] = function (e) {
- return !nextElementSibling(e)
- };
- pseudoClasses["only-child"] = function (e) {
- e = e.parentNode;
- return firstElementChild(e) == lastElementChild(e)
- };
- pseudoClasses["not"] = function (e, s) {
- var n = cssQuery(s, getDocument(e));
- for (var i = 0; i < n.length; i++) {
- if (n[i] == e) return false
- }
- return true
- };
- pseudoClasses["nth-child"] = function (e, a) {
- return nthChild(e, a, previousElementSibling)
- };
- pseudoClasses["nth-last-child"] = function (e, a) {
- return nthChild(e, a, nextElementSibling)
- };
- pseudoClasses["target"] = function (e) {
- return e.id == location.hash.slice(1)
- };
- pseudoClasses["checked"] = function (e) {
- return e.checked
- };
- pseudoClasses["enabled"] = function (e) {
- return e.disabled === false
- };
- pseudoClasses["disabled"] = function (e) {
- return e.disabled
- };
- pseudoClasses["indeterminate"] = function (e) {
- return e.indeterminate
- };
- AttributeSelector.tests["^="] = function (a, v) {
- return "/^" + regEscape(v) + "/.test(" + a + ")"
- };
- AttributeSelector.tests["$="] = function (a, v) {
- return "/" + regEscape(v) + "$/.test(" + a + ")"
- };
- AttributeSelector.tests["*="] = function (a, v) {
- return "/" + regEscape(v) + "/.test(" + a + ")"
- };
- function nthChild(e, a, t) {
- switch (a) {
- case "n":
- return true;
- case "even":
- a = "2n";
- break;
- case "odd":
- a = "2n+1"
- }
- var ch = childElements(e.parentNode);
- function _1(i) {
- var i = (t == nextElementSibling) ? ch.length - i : i - 1;
- return ch[i] == e
- };
- if (!isNaN(a)) return _1(a);
- a = a.split("n");
- var m = parseInt(a[0]);
- var s = parseInt(a[1]);
- if ((isNaN(m) || m == 1) && s == 0) return true;
- if (m == 0 && !isNaN(s)) return _1(s);
- if (isNaN(s)) s = 0;
- var c = 1;
- while (e = t(e)) c++;
- if (isNaN(m) || m == 1) return (t == nextElementSibling) ? (c <= s) : (s >= c);
- return (c % m) == s
- }
- });
- cssQuery.addModule("css-standard", function () {
- isMSIE = eval("false;/*@cc_on@if(@\x5fwin32)isMSIE=true@end@*/");
- if (!isMSIE) {
- getElementsByTagName = function (e, t, n) {
- return n ? e.getElementsByTagNameNS("*", t) : e.getElementsByTagName(t)
- };
- compareNamespace = function (e, n) {
- return !n || (n == "*") || (e.prefix == n)
- };
- isXML = document.contentType ? function (e) {
- return /xml/i.test(getDocument(e).contentType)
- } : function (e) {
- return getDocument(e).documentElement.tagName != "HTML"
- };
- getTextContent = function (e) {
- return e.textContent || e.innerText || _0(e)
- };
- function _0(e) {
- var t = "",
- n, i;
- for (i = 0;
- (n = e.childNodes[i]); i++) {
- switch (n.nodeType) {
- case 11:
- case 1:
- t += _0(n);
- break;
- case 3:
- t += n.nodeValue;
- break
- }
- }
- return t
- }
- }
- });
- loaded = true;
- return cssQuery
- }();
Advertisement
Add Comment
Please, Sign In to add comment