﻿/*****************************************************************************
scalable Inman Flash Replacement (sIFR) version 3, revision 436.

Copyright 2006 – 2008 Mark Wubben, <http://novemberborn.net/>

Older versions:
* IFR by Shaun Inman
* sIFR 1.0 by Mike Davidson, Shaun Inman and Tomas Jogin
* sIFR 2.0 by Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben

See also <http://novemberborn.net/sifr3> and <http://wiki.novemberborn.net/sifr3>.

This software is licensed and provided under the CC-GNU LGPL.
See <http://creativecommons.org/licenses/LGPL/2.1/>
*****************************************************************************/

var parseSelector = (function() { var B = /\s*,\s*/; var A = /\s*([\s>+~(),]|^|$)\s*/g; var L = /([\s>+~,]|[^(]\+|^)([#.:@])/g; var F = /(^|\))[^\s>+~]/g; var M = /(\)|^)/; var K = /[\s#.:>+~()@]|[^\s#.:>+~()@]+/g; function H(R, P) { P = P || document.documentElement; var S = R.split(B), X = []; for (var U = 0; U < S.length; U++) { var N = [P], W = G(S[U]); for (var T = 0; T < W.length; ) { var Q = W[T++], O = W[T++], V = ""; if (W[T] == "(") { while (W[T++] != ")" && T < W.length) { V += W[T] } V = V.slice(0, -1) } N = I(N, Q, O, V) } X = X.concat(N) } return X } function G(N) { var O = N.replace(A, "$1").replace(L, "$1*$2").replace(F, D); return O.match(K) || [] } function D(N) { return N.replace(M, "$1 ") } function I(N, P, Q, O) { return (H.selectors[P]) ? H.selectors[P](N, Q, O) : [] } var E = { toArray: function(O) { var N = []; for (var P = 0; P < O.length; P++) { N.push(O[P]) } return N } }; var C = { isTag: function(O, N) { return (N == "*") || (N.toLowerCase() == O.nodeName.toLowerCase()) }, previousSiblingElement: function(N) { do { N = N.previousSibling } while (N && N.nodeType != 1); return N }, nextSiblingElement: function(N) { do { N = N.nextSibling } while (N && N.nodeType != 1); return N }, hasClass: function(N, O) { return (O.className || "").match("(^|\\s)" + N + "(\\s|$)") }, getByTag: function(N, O) { return O.getElementsByTagName(N) } }; var J = { "#": function(N, P) { for (var O = 0; O < N.length; O++) { if (N[O].getAttribute("id") == P) { return [N[O]] } } return [] }, " ": function(O, Q) { var N = []; for (var P = 0; P < O.length; P++) { N = N.concat(E.toArray(C.getByTag(Q, O[P]))) } return N }, ">": function(O, R) { var N = []; for (var Q = 0, S; Q < O.length; Q++) { S = O[Q]; for (var P = 0, T; P < S.childNodes.length; P++) { T = S.childNodes[P]; if (T.nodeType == 1 && C.isTag(T, R)) { N.push(T) } } } return N }, ".": function(O, Q) { var N = []; for (var P = 0, R; P < O.length; P++) { R = O[P]; if (C.hasClass([Q], R)) { N.push(R) } } return N }, ":": function(N, P, O) { return (H.pseudoClasses[P]) ? H.pseudoClasses[P](N, O) : [] } }; H.selectors = J; H.pseudoClasses = {}; H.util = E; H.dom = C; return H })();

