var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); /* selectivizr v1.0.0 - (c) Keith Clark, freely distributable under the terms of the MIT license. selectivizr.com */ /* References: ----------- * CSS Syntax : http:/www.w3.org/TR/2003/WD-css3-syntax-20030813/#style * Selectors : http:/www.w3.org/TR/css3-selectors/#selectors * IE Compatability : http:/msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx * W3C Selector Tests : http:/www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/ */ (function(win) { / If browser isn't IE, then stop execution! This handles the script / being loaded by non IE browsers because the developer didn't use / conditional comments. if (/*@cc_on!@*/true) return; / =========================== Init Objects ============================ var doc = document var root = doc.documentElement var xhr = getXHRObject() var ieVersion = /MSIE ([\d])/.exec(navigator.userAgent)[1]; / If were not in standards mode, IE is too old / new or we can't create / an XMLHttpRequest object then we should get out now. if (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) { return } / ========================= Common Objects ============================ / compatiable selector engines in order of CSS3 support var selectorEngines = { "NW" : "*.Dom.select", "DOMAssistant" : "*.$", "Prototype" : "$$", "YAHOO" : "*.util.Selector.query", "MooTools" : "$$", "Sizzle" : "*", "jQuery" : "*", "dojo" : "*.query" } var selectorMethod var enabledWatchers = []; / array of :enabled/:dsiabled elements to poll var ie6PatchID = 0; / used to solve ie6's multiple class bug var patchIE6MultipleClasses = true; / if true adds class bloat to ie6 var namespace = "slvzr" var domReadyScriptID = namespace + "DOMReady" / Stylesheet parsing regexp's var RE_COMMENT = /(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g var RE_IMPORT = /@import\s*url\(\s*(["'])?(.*?)\1\s*\)[\w\W]*?;/g var RE_PSEUDO_STRUCTURAL = /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/ var RE_PSEUDO_ELEMENTS = /:(:first-(?:line|letter))/g var RE_SELECTOR_GROUP = /(^|})\s*([^\{]*?[\[:][^{]+)/g var RE_SELECTOR_PARSE = /([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g; var RE_LIBRARY_INCOMPATIBLE_PSEUDOS = /(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g var RE_PATCH_CLASS_NAME_REPLACE = /[^\w-]/g / HTML UI element regexp's var RE_INPUT_ELEMENTS = /^(INPUT|SELECT|TEXTAREA|BUTTON)$/ var RE_INPUT_CHECKABLE_TYPES = /^(checkbox|radio)$/ / Broken attribute selector implementations / fixes IE7 native implementation of [^=""], [$=""] and [*=""] / fixes IE8 native implementation of [^=""] and [$=""] var BROKEN_ATTR_IMPLEMENTATIONS = ieVersion==8 ? /[\$\^]=(['"])\1/ : ieVersion==7 ? /[\$\^*]=(['"])\1/ : null / Whitespace normalization regexp's var RE_TIDY_TRAILING_WHITESPACE = /([(\[+~])\s+/g var RE_TIDY_LEADING_WHITESPACE = /\s+([)\]+~])/g var RE_TIDY_CONSECUTIVE_WHITESPACE = /\s+/g var RE_TIDY_TRIM_WHITESPACE = /^\s*((?:[\S\s]*\S)?)\s*$/ / String constants var EMPTY_STRING = "" var SPACE_STRING = " " var PLACEHOLDER_STRING = "$1" / =========================== Patching ================================ / --[ patchStyleSheet() ]---------------------------------------------- / Scans the passed cssText for selectors that require emulation and / creates one or more patches for each matched selector. function patchStyleSheet( cssText ) { return cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING) .replace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) { var selectorGroups = selectorText.split(",") for (var c=0, cs=selectorGroups.length; c0) { applyPatches( selector.substring(0, index), patches ) patches = [] } return combinator } else { var patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute ); if (patch) { patches.push(patch); return "." + patch.className } return match } } ) } return prefix + selectorGroups.join(","); }) } / --[ patchAttribute() ]----------------------------------------------- / returns a patch for an attribute selector. function patchAttribute( attr ) { return (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ? { className: createClassName(attr), applyClass: true } : null } / --[ patchPseudoClass() ]--------------------------------------------- / returns a patch for a pseudo-class function patchPseudoClass( pseudo ) { var applyClass = true; var className = createClassName(pseudo.slice(1)) var isNegated = pseudo.substring(0, 5)==":not("; var activateEventName; var deactivateEventName; / if negated, remove :not() if (isNegated) { pseudo = pseudo.slice(5, -1) } / bracket contents are irrelevant - remove them var bracketIndex = pseudo.indexOf("(") if (bracketIndex>-1) { pseudo = pseudo.substring(0, bracketIndex) } / check we're still dealing with a pseudo-class if (pseudo.charAt(0)==":") { switch (pseudo.slice(1)) { case "root": applyClass = function(e) { return isNegated ? e!=root : e==root } break; case "target": / :target is only supported in IE8 if (ieVersion == 8) { applyClass = function(e) { var handler = function() { var hash = location.hash var hashID = hash.slice(1) return isNegated ? (hash=="" || e.id != hashID) : (hash!="" && e.id == hashID) }; addEvent( win, "hashchange", function() { toggleElementClass(e, className, handler()); }) return handler() } break; } return false; case "checked": applyClass = function(e) { if (RE_INPUT_CHECKABLE_TYPES.test(e.type)) { addEvent( e, "propertychange", function() { if (event.propertyName == "checked") { toggleElementClass( e, className, e.checked !== isNegated ) } }) } return e.checked !== isNegated } break; case "disabled": isNegated = !isNegated case "enabled": applyClass = function(e) { if (RE_INPUT_ELEMENTS.test(e.tagName)) { addEvent( e, "propertychange", function() { if (event.propertyName == "$disabled") { toggleElementClass( e, className, e.$disabled === isNegated ) } }) enabledWatchers.push(e); e.$disabled = e.disabled; return e.disabled === isNegated; } return pseudo==":enabled" ? isNegated : !isNegated; } break; case "focus": activateEventName = "focus" deactivateEventName = "blur" case "hover": if (!activateEventName) { activateEventName = "mouseenter" deactivateEventName = "mouseleave" } applyClass = function(e) { addEvent( e, isNegated ? deactivateEventName : activateEventName, function() { toggleElementClass( e, className, true ) }) addEvent( e, isNegated ? activateEventName : deactivateEventName, function() { toggleElementClass( e, className, false ) }) return isNegated } break; / everything else default: / If we don't support this pseudo-class don't create / a patch for it if (!RE_PSEUDO_STRUCTURAL.test(pseudo)) { return false } break; } } return { className: className, applyClass: applyClass } } / --[ applyPatches() ]------------------------------------------------- / uses the passed selector text to find DOM nodes and patch them function applyPatches(selectorText, patches) { var elms; / Although some selector libraries can find :checked :enabled etc. / we need to find all elements that could have that state because / it can be changed by the user. var domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING) / If the dom selector equates to an empty string or ends with / whitespace then we need to append a universal selector (*) to it. if (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length-1) == SPACE_STRING) { domSelectorText += "*" } / Ensure we catch errors from the selector library try { elms = selectorMethod( domSelectorText ) } catch (ex) { / #DEBUG_START log( "Selector '" + selectorText + "' threw exception '"+ ex +"'" ) / #DEBUG_END } if (elms) { for (var d=0, dl=elms.length; d tag var url,stylesheet var baseTags = doc.getElementsByTagName("BASE") var baseUrl = (baseTags.length>0) ? baseTags[0].href : doc.location.href for (var c=0; c0) { setInterval( function() { for (var c=0, cl=enabledWatchers.length; c<\/script>"); doc.getElementById(domReadyScriptID).onreadystatechange = function() { if (this.readyState=='complete') { selectorMethod = determineSelectorMethod() if (selectorMethod) { init() this.parentNode.removeChild(this) } } } })(this) } /* FILE ARCHIVED ON 20:42:09 Jan 24, 2019 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 18:18:44 Apr 10, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): captures_list: 0.555 exclusion.robots: 0.027 exclusion.robots.policy: 0.016 esindex: 0.01 cdx.remote: 115.316 LoadShardBlock: 465.273 (3) PetaboxLoader3.datanode: 152.649 (6) PetaboxLoader3.resolve: 381.509 (2) load_resource: 150.605 */