{"version":3,"sources":["webpack://jrs-ui-pro/./runtime_dependencies/prototype/dist/prototype.js"],"names":["Prototype","Version","Browser","ua","navigator","userAgent","isOpera","Object","prototype","toString","call","window","opera","IE","attachEvent","Opera","WebKit","indexOf","Gecko","MobileSafari","test","BrowserFeatures","XPath","document","evaluate","SelectorsAPI","querySelector","SupportsTouch","platform","toLowerCase","ElementExtensions","constructor","Element","HTMLElement","SpecificElementExtensions","HTMLDivElement","div","createElement","form","isSupported","ScriptFragment","JSONFilter","emptyFunction","K","x","isDisabled","elem","readAttribute","hasAttribute","ancestors","any","s","hasClassName","matchAny","patterns","includeAncestors","i","length","match","upMatch","up","Class","IS_DONTENUM_BUGGY","p","subclass","create","parent","properties","$A","arguments","isFunction","shift","klass","initialize","apply","extend","Methods","superclass","subclasses","push","addMethods","source","ancestor","keys","valueOf","property","value","argumentNames","method","m","wrap","_toString","_hasOwnProperty","hasOwnProperty","NULL_TYPE","UNDEFINED_TYPE","BOOLEAN_TYPE","NUMBER_TYPE","STRING_TYPE","OBJECT_TYPE","FUNCTION_CLASS","BOOLEAN_CLASS","NUMBER_CLASS","STRING_CLASS","ARRAY_CLASS","DATE_CLASS","NATIVE_JSON_STRINGIFY_SUPPORT","JSON","stringify","DONT_ENUMS","Type","o","type","destination","inspect","object","isUndefined","String","e","RangeError","toJSON","Str","key","holder","stack","_class","isFinite","TypeError","partial","str","join","pop","toQueryString","$H","toHTML","interpret","results","values","clone","isElement","nodeType","isArray","hasNativeIsArray","Array","isHash","Hash","isString","isNumber","isDate","Function","slice","update","array","args","arrayLength","merge","names","replace","split","bind","context","nop","__method","bound","a","c","bindAsEventListener","event","curry","delay","timeout","setTimeout","defer","wrapper","methodize","_methodized","extensions","proto","toISOString","getUTCFullYear","getUTCMonth","toPaddedString","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Date","RegExp","escape","PeriodicalExecuter","callback","frequency","currentlyExecuting","registerCallback","timer","setInterval","onTimerEvent","execute","stop","clearInterval","specialChar","NATIVE_JSON_PARSE_SUPPORT","parse","prepareReplacement","replacement","template","Template","isNonEmptyRegExp","regexp","gsub","pattern","result","index","sub","count","scan","iterator","truncate","truncation","strip","stripTags","stripScripts","extractScripts","matchAll","matchOne","map","scriptTag","evalScripts","escapeHTML","unescapeHTML","toQueryParams","separator","inject","hash","pair","decodeURIComponent","undefined","toArray","succ","fromCharCode","charCodeAt","times","camelize","chr","toUpperCase","capitalize","charAt","substring","underscore","dasherize","useDoubleQuotes","escapedString","character","unfilterJSON","filter","isJSON","blank","evalJSON","sanitize","json","cx","eval","SyntaxError","parseJSON","include","startsWith","position","lastIndexOf","endsWith","d","empty","interpolate","trim","parseQuery","Pattern","toTemplateReplacements","before","ctx","expr","exec","comp","$break","Enumerable","each","_each","eachSlice","number","slices","collect","all","detect","findAll","grep","found","inGroupsOf","fillWith","memo","invoke","max","min","partition","trues","falses","pluck","reject","sortBy","criteria","sort","left","right","b","zip","last","collections","concat","size","every","some","select","member","entries","find","iterable","$w","string","from","arrayProto","forEach","clear","first","compact","flatten","without","reverse","inline","_reverse","uniq","sorted","intersect","item","Number","isNaN","Math","floor","abs","k","_","items","n","unshift","j","wrapNative","CONCAT_ARGUMENTS_BUGGY","_object","toObject","set","get","unset","toQueryPair","encodeURIComponent","queryValues","len","toColorPart","$R","radix","round","ceil","start","end","exclusive","ObjectRange","Abstract","Try","these","returnValue","lambda","Ajax","getTransport","XMLHttpRequest","ActiveXObject","activeRequestCount","Responders","responders","register","responder","unregister","dispatch","request","transport","onCreate","onComplete","Base","options","asynchronous","contentType","encoding","parameters","evalJS","Request","_complete","$super","url","params","response","Response","open","respondToReadyState","onreadystatechange","onStateChange","setRequestHeaders","body","postBody","send","overrideMimeType","dispatchException","readyState","headers","requestHeaders","extras","name","setRequestHeader","success","status","getStatus","state","Events","headerJSON","getHeader","isSameOrigin","evalResponse","protocol","location","domain","port","getResponseHeader","responseText","exception","onException","statusText","getStatusText","_getHeaderJSON","xml","responseXML","responseJSON","_getResponseJSON","getAllHeaders","getAllResponseHeaders","sanitizeJSON","Updater","container","failure","updateContent","receiver","$","insertion","insert","PeriodicalUpdater","decay","updater","updateComplete","clearTimeout","lastText","GLOBAL","UNDEFINED","SLICE","DIV","element","elements","getElementById","__dollar_sign__","Node","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ELEMENT_CACHE","shouldUseCreationCache","tagName","attributes","HAS_EXTENDED_CREATE_ELEMENT_SYNTAX","el","err","getRawStyle","style","css","defaultView","getComputedStyle","parseFloat","getRawStyle_IE","currentStyle","documentElement","oldElement","writeAttribute","node","cloneNode","ByTag","Simulated","methods","INSPECT_ATTRIBUTES","id","className","attribute","visible","toggle","bool","hide","display","show","remove","parentNode","removeChild","SELECT_ELEMENT_INNERHTML_BUGGY","isBuggy","innerHTML","nodeName","TABLE_ELEMENT_INNERHTML_BUGGY","tBodies","LINK_ELEMENT_INNERHTML_BUGGY","childNodes","ANY_INNERHTML_BUGGY","SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING","appendChild","createTextNode","firstChild","content","descendants","getElementsByTagName","purgeElement","toElement","text","INSERTION_TRANSLATIONS","tags","nodes","getContentFromAnonymousElement","_escapeXSS","range","ownerDocument","createRange","selectNode","createContextualFragment","replaceChild","insertBefore","top","bottom","after","nextSibling","TABLE","TBODY","TR","TD","SELECT","THEAD","TFOOT","TH","replace_IE","next","fragments","outerHTML","isContent","insertContentAt","insertions","cleanWhitespace","nextNode","nodeValue","html","force","t","workaround","deep","HAS_UNIQUE_ID_PROPERTY","_prototypeUID","uid","getUniqueElementID","stopObserving","Storage","purgeCollection","purgeCollection_IE","Event","cache","purge","recursivelyCollect","maximumLength","firstDescendant","immediateDescendants","child","previousSiblings","nextSiblings","siblings","previous","selector","Selector","_recursivelyFind","expression","down","expressions","adjacent","sibling","descendantOf_DOM","descendantOf_contains","contains","descendantOf_compareDocumentPosition","compareDocumentPosition","descendantOf","getElementsBySelector","childElements","idCounter","identify","getAttribute","readAttribute_IE","table","ATTRIBUTE_TRANSLATIONS","read","readAttribute_Opera","title","PROBLEMATIC_ATTRIBUTE_READING","setAttribute","removeAttribute","write","attr","PROBLEMATIC_HAS_ATTRIBUTE_WITH_CHECKBOXES","checkbox","checked","getAttributeNode","specified","has","hasAttribute_IE","classNames","ClassNames","regExpCache","getRegExpForClassName","re","elementClassName","addClassName","removeClassName","toggleClassName","classProp","forProp","LABEL","htmlFor","_getAttr","_getAttr2","_getAttrNode","_getFlag","onclick","onclickValue","_getEv","cssText","cellpadding","cellspacing","CAMEL_CASED_ATTRIBUTE_NAMES","href","src","action","disabled","readonly","multiple","onload","onunload","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onfocus","onblur","onkeypress","onkeydown","onkeyup","onsubmit","onreset","onselect","onchange","normalizeStyleName","normalizeStyleName_IE","setStyle","styles","elementStyle","opacity","setOpacity","styleFloat","getStyle","getStyle_Opera","dim","parseInt","measure","getStyle_IE","STANDARD_CSS_OPACITY_SUPPORTED","getOpacity_IE","stripAlphaFromFilter_IE","hasLayout_IE","hasLayout","zoom","setOpacity_IE","getOpacity","UID","getUniqueElementID_IE","uniqueID","getStorage","store","storage","retrieve","defaultValue","F","checkElementPrototypeDeficiency","random","HTMLOBJECTELEMENT_PROTOTYPE_BUGGY","extendElementWith","EXTENDED","elementIsExtended","extend_IE8","addMethodsToTagName","mergeMethods","onlyIfAbsent","findDOMClass","trans","addFormMethods","tag","ELEMENT_PROTOTYPE","refresh","Form","destroyCache_IE","escapeXSS","Error","toDecimal","pctString","getContentWidth","boxWidth","offsetWidth","bl","getPixelValue","br","pl","pr","isPercentage","isViewport","viewport","runtimeStyle","rStyle","pixelLeft","decimal","whole","isHorizontal","isVertical","getWidth","getHeight","toCSSPixels","isDisplayed","cssNameFor","Layout","preCompute","PROPERTIES","_set","_preComputing","_begin","_compute","_end","_isPrepared","_setPrepared","originalStyles","width","visibility","tempStyles","positionedWidth","newWidth","pLayout","getLayout","COMPUTATIONS","obj","toHash","toCSS","COMPOSITE_PROPERTIES","bHeight","bTop","bBottom","pTop","pBottom","bWidth","bLeft","bRight","pLeft","pRight","height","offsetHeight","mTop","mBottom","mLeft","mRight","offset","positionedOffset","getOffsetParent","pHeight","mHeight","pWidth","mWidth","rect","getBoundingClientRect","pRect","Offset","relativeTo","getDimensions","newStyles","dimensions","selfOrBody","isHtml","isDocument","isDetached","isBody","isInline","offsetParent","cumulativeOffset","valueT","valueL","offsetTop","offsetLeft","layout","cumulativeScrollOffset","bodyScrollNode","pageYOffset","scrollTop","pageXOffset","scrollLeft","viewportOffset","forElement","docBody","absolutize","eOffset","pOffset","relativize","scrollTo","pos","makePositioned","undoPositioned","madePositioned","makeClipping","madeClipping","overflow","undoClipping","clonePosition","setLeft","setTop","setWidth","setHeight","docEl","delta","pageScrollXY","y","pageXY","currentLayout","proceed","Webkit","clientLeft","clientTop","IS_OLD_OPERA","version","ROOT","getRootElement","clientWidth","clientHeight","getScrollOffsets","$$","matchIndex","extendElements","extendElement","_original_property","Sizzle","fakeDefine","fn","_actual_sizzle","amd","define","_original_define","support","Expr","getText","isXML","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","expando","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","arr","push_native","booleans","whitespace","characterEncoding","identifier","pseudos","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","target","els","seed","groups","old","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","toSelector","testContext","querySelectorAll","qsaError","cacheLength","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","hasCompare","doc","addEventListener","createComment","getById","getElementsByName","attrId","tmp","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","compare","sortDetached","aup","ap","bp","ret","val","error","msg","uniqueSort","duplicates","detectDuplicates","sortStable","splice","textContent","selectors","createPseudo","relative","dir","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","simple","forward","ofType","outerCache","nodeIndex","useCache","lastChild","pseudo","setFilters","idx","matched","matcher","unmatched","innerText","lang","elemLang","activeElement","hasFocus","tabIndex","selected","selectedIndex","radio","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","module","exports","engine","scope","serializeElements","submitted","accumulator","initial","encodedKey","getValue","serialize","getElements","serializers","Serializers","getInputs","typeName","inputs","matchingInputs","disable","enable","findFirstElement","firstByIndex","focusFirstElement","activate","focus","setValue","present","Field","$F","inputSelector","valueSelector","selectOne","selectMany","opt","currentValue","single","optionValue","textarea","button","TimedObserver","lastValue","Observer","EventObserver","registerFormCallbacks","onElementEvent","observe","MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED","KEY_BACKSPACE","KEY_TAB","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_DELETE","KEY_HOME","KEY_END","KEY_PAGEUP","KEY_PAGEDOWN","KEY_INSERT","isIELegacyEvent","_isButton","_isButtonForDOMEvents","code","which","legacyButtonMap","_isButtonForLegacyEvents","_isButtonForWebKit","metaKey","isLeftClick","isMiddleClick","isRightClick","_element","currentTarget","findElement","pointer","pointerX","pointerY","docElement","touches","pageX","clientX","pageY","clientY","preventDefault","stopPropagation","stopped","_relatedTarget","fromElement","additionalMethods","cancelBubble","_extendedByPrototype","srcElement","relatedTarget","createEvent","__proto__","EVENT_TRANSLATIONS","mouseenter","mouseleave","getDOMEventName","eventName","isCustomEvent","_isCustomEvent","getOrCreateRegistryFor","CACHE","destroyRegistryForElement","registry","_createResponder","entry","observeCustomEvent","observeStandardEvent","actualEventName","handlerGiven","eventNameGiven","stopObservingElement","stopObservingEventName","removeEvent","stopObservingStandardEvent","removeEventListener","detachEvent","stopObservingCustomEvent","getFireTarget","dispatchEvent","fire","bubble","fireEvent","fireEvent_DOM","initEvent","fireEvent_IE","createEventObject","eventType","Handler","handleEvent","on","loaded","isSimulatedMouseEnterLeaveEvent","createResponder","createResponderForCustomEvent","createMouseEnterLeaveResponder","TIMER","fireContentLoadedEvent","checkReadyState","pollDoScroll","doScroll","Toggle","childOf","Insertion","Before","Top","Bottom","After","$continue","Position","includeScrollOffsets","prepare","deltaX","deltaY","within","withinIncludingScrolloffsets","xcomp","ycomp","offsetcache","overlap","mode","realOffset","page","instanceMethods","iter","cond","_getElementsByXPath","cn","parentElement","add","classNameToAdd","classNameToRemove","findElements","rootElement","matchElements","findChildElements"],"mappings":"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","file":"_chunks/chunk.prototypejs.js","sourcesContent":["/* Prototype JavaScript framework, version 1.7.3\n * (c) 2005-2010 Sam Stephenson\n *\n * Prototype is freely distributable under the terms of an MIT-style license.\n * For details, see the Prototype web site: http://www.prototypejs.org/\n *\n *--------------------------------------------------------------------------*/\n\nvar Prototype = {\n\n Version: '1.7.3',\n\n Browser: (function(){\n var ua = navigator.userAgent;\n var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';\n return {\n IE: !!window.attachEvent && !isOpera,\n Opera: isOpera,\n WebKit: ua.indexOf('AppleWebKit/') > -1,\n Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,\n MobileSafari: /Apple.*Mobile/.test(ua)\n }\n })(),\n\n BrowserFeatures: {\n XPath: !!document.evaluate,\n\n SelectorsAPI: !!document.querySelector,\n\n SupportsTouch: navigator.platform == \"iPad\" || navigator.userAgent.toLowerCase().indexOf(\"android\") > -1,\n\n ElementExtensions: (function() {\n var constructor = window.Element || window.HTMLElement;\n return !!(constructor && constructor.prototype);\n })(),\n SpecificElementExtensions: (function() {\n if (typeof window.HTMLDivElement !== 'undefined')\n return true;\n\n var div = document.createElement('div'),\n form = document.createElement('form'),\n isSupported = false;\n\n if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {\n isSupported = true;\n }\n\n div = form = null;\n\n return isSupported;\n })()\n },\n\n ScriptFragment: ']*>([\\\\S\\\\s]*?)<\\/script\\\\s*>',\n JSONFilter: /^\\/\\*-secure-([\\s\\S]*)\\*\\/\\s*$/,\n\n emptyFunction: function() { },\n\n K: function(x) { return x }\n};\n\nPrototype.isDisabled = function(elem) {\n if (!elem.readAttribute) {\n return false;\n }\n\n var hasAttribute = !!elem.readAttribute('disabled') || elem.ancestors().any(function(s) {return s.readAttribute('disabled')});\n var hasClassName = Prototype.matchAny(elem,[\".disabled\"], true);\n\n return hasAttribute || hasClassName;\n};\n\nPrototype.matchAny = function(elem, patterns, includeAncestors) {\n if (!elem) {\n return null;\n }\n\n for (var i=0; i 0) {\n match = source.match(pattern)\n if (match && match[0].length > 0) {\n result += source.slice(0, match.index);\n result += String.interpret(replacement(match));\n source = source.slice(match.index + match[0].length);\n } else {\n result += source, source = '';\n }\n }\n return result;\n }\n\n function sub(pattern, replacement, count) {\n replacement = prepareReplacement(replacement);\n count = Object.isUndefined(count) ? 1 : count;\n\n return this.gsub(pattern, function(match) {\n if (--count < 0) return match[0];\n return replacement(match);\n });\n }\n\n function scan(pattern, iterator) {\n this.gsub(pattern, iterator);\n return String(this);\n }\n\n function truncate(length, truncation) {\n length = length || 30;\n truncation = Object.isUndefined(truncation) ? '...' : truncation;\n return this.length > length ?\n this.slice(0, length - truncation.length) + truncation : String(this);\n }\n\n function strip() {\n return this.replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n\n function stripTags() {\n return this.replace(/<\\w+(\\s+(\"[^\"]*\"|'[^']*'|[^>])+)?(\\/)?>|<\\/\\w+>/gi, '');\n }\n\n function stripScripts() {\n return this;\n }\n\n function extractScripts() {\n var matchAll = new RegExp(Prototype.ScriptFragment, 'img'),\n matchOne = new RegExp(Prototype.ScriptFragment, 'im');\n return (this.match(matchAll) || []).map(function(scriptTag) {\n return (scriptTag.match(matchOne) || ['', ''])[1];\n });\n }\n\n function evalScripts() {\n return [];\n }\n\n function escapeHTML() {\n return this.replace(/&/g,'&').replace(//g,'>');\n }\n\n function unescapeHTML() {\n return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&');\n }\n\n\n function toQueryParams(separator) {\n var match = this.strip().match(/([^?#]*)(#.*)?$/);\n if (!match) return { };\n\n return match[1].split(separator || '&').inject({ }, function(hash, pair) {\n if ((pair = pair.split('='))[0]) {\n var key = decodeURIComponent(pair.shift()),\n value = pair.length > 1 ? pair.join('=') : pair[0];\n\n if (value != undefined) {\n value = value.gsub('+', ' ');\n value = decodeURIComponent(value);\n }\n\n if (key in hash) {\n if (!Object.isArray(hash[key])) hash[key] = [hash[key]];\n hash[key].push(value);\n }\n else hash[key] = value;\n }\n return hash;\n });\n }\n\n function toArray() {\n return this.split('');\n }\n\n function succ() {\n return this.slice(0, this.length - 1) +\n String.fromCharCode(this.charCodeAt(this.length - 1) + 1);\n }\n\n function times(count) {\n return count < 1 ? '' : new Array(count + 1).join(this);\n }\n\n function camelize() {\n return this.replace(/-+(.)?/g, function(match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n }\n\n function capitalize() {\n return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();\n }\n\n function underscore() {\n return this.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/-/g, '_')\n .toLowerCase();\n }\n\n function dasherize() {\n return this.replace(/_/g, '-');\n }\n\n function inspect(useDoubleQuotes) {\n var escapedString = this.replace(/[\\x00-\\x1f\\\\]/g, function(character) {\n if (character in String.specialChar) {\n return String.specialChar[character];\n }\n return '\\\\u00' + character.charCodeAt().toPaddedString(2, 16);\n });\n if (useDoubleQuotes) return '\"' + escapedString.replace(/\"/g, '\\\\\"') + '\"';\n return \"'\" + escapedString.replace(/'/g, '\\\\\\'') + \"'\";\n }\n\n function unfilterJSON(filter) {\n return this.replace(filter || Prototype.JSONFilter, '$1');\n }\n\n function isJSON() {\n var str = this;\n if (str.blank()) return false;\n str = str.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@');\n str = str.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']');\n str = str.replace(/(?:^|:|,)(?:\\s*\\[)+/g, '');\n return (/^[\\],:{}\\s]*$/).test(str);\n }\n\n function evalJSON(sanitize) {\n var json = this.unfilterJSON(),\n cx = /[\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff\\u0000]/g;\n if (cx.test(json)) {\n json = json.replace(cx, function (a) {\n return '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n try {\n if (!sanitize || json.isJSON()) return eval('(' + json + ')');\n } catch (e) { }\n throw new SyntaxError('Badly formed JSON string: ' + this.inspect());\n }\n\n function parseJSON() {\n var json = this.unfilterJSON();\n return JSON.parse(json);\n }\n\n function include(pattern) {\n return this.indexOf(pattern) > -1;\n }\n\n function startsWith(pattern, position) {\n position = Object.isNumber(position) ? position : 0;\n return this.lastIndexOf(pattern, position) === position;\n }\n\n function endsWith(pattern, position) {\n pattern = String(pattern);\n position = Object.isNumber(position) ? position : this.length;\n if (position < 0) position = 0;\n if (position > this.length) position = this.length;\n var d = position - pattern.length;\n return d >= 0 && this.indexOf(pattern, d) === d;\n }\n\n function empty() {\n return this == '';\n }\n\n function blank() {\n return /^\\s*$/.test(this);\n }\n\n function interpolate(object, pattern) {\n return new Template(this, pattern).evaluate(object);\n }\n\n return {\n gsub: gsub,\n sub: sub,\n scan: scan,\n truncate: truncate,\n strip: String.prototype.trim || strip,\n stripTags: stripTags,\n stripScripts: stripScripts,\n extractScripts: extractScripts,\n evalScripts: evalScripts,\n escapeHTML: escapeHTML,\n unescapeHTML: unescapeHTML,\n toQueryParams: toQueryParams,\n parseQuery: toQueryParams,\n toArray: toArray,\n succ: succ,\n times: times,\n camelize: camelize,\n capitalize: capitalize,\n underscore: underscore,\n dasherize: dasherize,\n inspect: inspect,\n unfilterJSON: unfilterJSON,\n isJSON: isJSON,\n evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,\n include: include,\n startsWith: String.prototype.startsWith || startsWith,\n endsWith: String.prototype.endsWith || endsWith,\n empty: empty,\n blank: blank,\n interpolate: interpolate\n };\n})());\n\nvar Template = Class.create({\n initialize: function(template, pattern) {\n this.template = template.toString();\n this.pattern = pattern || Template.Pattern;\n },\n\n evaluate: function(object) {\n if (object && Object.isFunction(object.toTemplateReplacements))\n object = object.toTemplateReplacements();\n\n return this.template.gsub(this.pattern, function(match) {\n if (object == null) return (match[1] + '');\n\n var before = match[1] || '';\n if (before == '\\\\') return match[2];\n\n var ctx = object, expr = match[3],\n pattern = /^([^.[]+|\\[((?:.*?[^\\\\])?)\\])(\\.|\\[|$)/;\n\n match = pattern.exec(expr);\n if (match == null) return before;\n\n while (match != null) {\n var comp = match[1].startsWith('[') ? match[2].replace(/\\\\\\\\]/g, ']') : match[1];\n ctx = ctx[comp];\n if (null == ctx || '' == match[3]) break;\n expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);\n match = pattern.exec(expr);\n }\n\n return before + String.interpret(ctx);\n });\n }\n});\nTemplate.Pattern = /(^|.|\\r|\\n)(#\\{(.*?)\\})/;\n\nvar $break = { };\n\nvar Enumerable = (function() {\n function each(iterator, context) {\n try {\n this._each(iterator, context);\n } catch (e) {\n if (e != $break) throw e;\n }\n return this;\n }\n\n function eachSlice(number, iterator, context) {\n var index = -number, slices = [], array = this.toArray();\n if (number < 1) return array;\n while ((index += number) < array.length)\n slices.push(array.slice(index, index+number));\n return slices.collect(iterator, context);\n }\n\n function all(iterator, context) {\n iterator = iterator || Prototype.K;\n var result = true;\n this.each(function(value, index) {\n result = result && !!iterator.call(context, value, index, this);\n if (!result) throw $break;\n }, this);\n return result;\n }\n\n function any(iterator, context) {\n iterator = iterator || Prototype.K;\n var result = false;\n this.each(function(value, index) {\n if (result = !!iterator.call(context, value, index, this))\n throw $break;\n }, this);\n return result;\n }\n\n function collect(iterator, context) {\n iterator = iterator || Prototype.K;\n var results = [];\n this.each(function(value, index) {\n results.push(iterator.call(context, value, index, this));\n }, this);\n return results;\n }\n\n function detect(iterator, context) {\n var result;\n this.each(function(value, index) {\n if (iterator.call(context, value, index, this)) {\n result = value;\n throw $break;\n }\n }, this);\n return result;\n }\n\n function findAll(iterator, context) {\n var results = [];\n this.each(function(value, index) {\n if (iterator.call(context, value, index, this))\n results.push(value);\n }, this);\n return results;\n }\n\n function grep(filter, iterator, context) {\n iterator = iterator || Prototype.K;\n var results = [];\n\n if (Object.isString(filter))\n filter = new RegExp(RegExp.escape(filter));\n\n this.each(function(value, index) {\n if (filter.match(value))\n results.push(iterator.call(context, value, index, this));\n }, this);\n return results;\n }\n\n function include(object) {\n if (Object.isFunction(this.indexOf) && this.indexOf(object) != -1)\n return true;\n\n var found = false;\n this.each(function(value) {\n if (value == object) {\n found = true;\n throw $break;\n }\n });\n return found;\n }\n\n function inGroupsOf(number, fillWith) {\n fillWith = Object.isUndefined(fillWith) ? null : fillWith;\n return this.eachSlice(number, function(slice) {\n while(slice.length < number) slice.push(fillWith);\n return slice;\n });\n }\n\n function inject(memo, iterator, context) {\n this.each(function(value, index) {\n memo = iterator.call(context, memo, value, index, this);\n }, this);\n return memo;\n }\n\n function invoke(method) {\n var args = $A(arguments).slice(1);\n return this.map(function(value) {\n return value[method].apply(value, args);\n });\n }\n\n function max(iterator, context) {\n iterator = iterator || Prototype.K;\n var result;\n this.each(function(value, index) {\n value = iterator.call(context, value, index, this);\n if (result == null || value >= result)\n result = value;\n }, this);\n return result;\n }\n\n function min(iterator, context) {\n iterator = iterator || Prototype.K;\n var result;\n this.each(function(value, index) {\n value = iterator.call(context, value, index, this);\n if (result == null || value < result)\n result = value;\n }, this);\n return result;\n }\n\n function partition(iterator, context) {\n iterator = iterator || Prototype.K;\n var trues = [], falses = [];\n this.each(function(value, index) {\n (iterator.call(context, value, index, this) ?\n trues : falses).push(value);\n }, this);\n return [trues, falses];\n }\n\n function pluck(property) {\n var results = [];\n this.each(function(value) {\n results.push(value[property]);\n });\n return results;\n }\n\n function reject(iterator, context) {\n var results = [];\n this.each(function(value, index) {\n if (!iterator.call(context, value, index, this))\n results.push(value);\n }, this);\n return results;\n }\n\n function sortBy(iterator, context) {\n return this.map(function(value, index) {\n return {\n value: value,\n criteria: iterator.call(context, value, index, this)\n };\n }, this).sort(function(left, right) {\n var a = left.criteria, b = right.criteria;\n return a < b ? -1 : a > b ? 1 : 0;\n }).pluck('value');\n }\n\n function toArray() {\n return this.map();\n }\n\n function zip() {\n var iterator = Prototype.K, args = $A(arguments);\n if (Object.isFunction(args.last()))\n iterator = args.pop();\n\n var collections = [this].concat(args).map($A);\n return this.map(function(value, index) {\n return iterator(collections.pluck(index));\n });\n }\n\n function size() {\n return this.toArray().length;\n }\n\n function inspect() {\n return '#';\n }\n\n\n\n\n\n\n\n\n\n return {\n each: each,\n eachSlice: eachSlice,\n all: all,\n every: all,\n any: any,\n some: any,\n collect: collect,\n map: collect,\n detect: detect,\n findAll: findAll,\n select: findAll,\n filter: findAll,\n grep: grep,\n include: include,\n member: include,\n inGroupsOf: inGroupsOf,\n inject: inject,\n invoke: invoke,\n max: max,\n min: min,\n partition: partition,\n pluck: pluck,\n reject: reject,\n sortBy: sortBy,\n toArray: toArray,\n entries: toArray,\n zip: zip,\n size: size,\n inspect: inspect,\n find: detect\n };\n})();\n\nfunction $A(iterable) {\n if (!iterable) return [];\n if ('toArray' in Object(iterable)) return iterable.toArray();\n var length = iterable.length || 0, results = new Array(length);\n while (length--) results[length] = iterable[length];\n return results;\n}\n\n\nfunction $w(string) {\n if (!Object.isString(string)) return [];\n string = string.strip();\n return string ? string.split(/\\s+/) : [];\n}\n\nArray.from = $A;\n\n\n(function() {\n var arrayProto = Array.prototype,\n slice = arrayProto.slice,\n _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available\n\n function each(iterator, context) {\n for (var i = 0, length = this.length >>> 0; i < length; i++) {\n if (i in this) iterator.call(context, this[i], i, this);\n }\n }\n if (!_each) _each = each;\n\n function clear() {\n this.length = 0;\n return this;\n }\n\n function first() {\n return this[0];\n }\n\n function last() {\n return this[this.length - 1];\n }\n\n function compact() {\n return this.select(function(value) {\n return value != null;\n });\n }\n\n function flatten() {\n return this.inject([], function(array, value) {\n if (Object.isArray(value))\n return array.concat(value.flatten());\n array.push(value);\n return array;\n });\n }\n\n function without() {\n var values = slice.call(arguments, 0);\n return this.select(function(value) {\n return !values.include(value);\n });\n }\n\n function reverse(inline) {\n return (inline === false ? this.toArray() : this)._reverse();\n }\n\n function uniq(sorted) {\n return this.inject([], function(array, value, index) {\n if (0 == index || (sorted ? array.last() != value : !array.include(value)))\n array.push(value);\n return array;\n });\n }\n\n function intersect(array) {\n return this.uniq().findAll(function(item) {\n return array.indexOf(item) !== -1;\n });\n }\n\n\n function clone() {\n return slice.call(this, 0);\n }\n\n function size() {\n return this.length;\n }\n\n function inspect() {\n return '[' + this.map(Object.inspect).join(', ') + ']';\n }\n\n function indexOf(item, i) {\n if (this == null) throw new TypeError();\n\n var array = Object(this), length = array.length >>> 0;\n if (length === 0) return -1;\n\n i = Number(i);\n if (isNaN(i)) {\n i = 0;\n } else if (i !== 0 && isFinite(i)) {\n i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i));\n }\n\n if (i > length) return -1;\n\n var k = i >= 0 ? i : Math.max(length - Math.abs(i), 0);\n for (; k < length; k++)\n if (k in array && array[k] === item) return k;\n return -1;\n }\n\n\n function lastIndexOf(item, i) {\n if (this == null) throw new TypeError();\n\n var array = Object(this), length = array.length >>> 0;\n if (length === 0) return -1;\n\n if (!Object.isUndefined(i)) {\n i = Number(i);\n if (isNaN(i)) {\n i = 0;\n } else if (i !== 0 && isFinite(i)) {\n i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i));\n }\n } else {\n i = length;\n }\n\n var k = i >= 0 ? Math.min(i, length - 1) :\n length - Math.abs(i);\n\n for (; k >= 0; k--)\n if (k in array && array[k] === item) return k;\n return -1;\n }\n\n function concat(_) {\n var array = [], items = slice.call(arguments, 0), item, n = 0;\n items.unshift(this);\n for (var i = 0, length = items.length; i < length; i++) {\n item = items[i];\n if (Object.isArray(item) && !('callee' in item)) {\n for (var j = 0, arrayLength = item.length; j < arrayLength; j++) {\n if (j in item) array[n] = item[j];\n n++;\n }\n } else {\n array[n++] = item;\n }\n }\n array.length = n;\n return array;\n }\n\n\n function wrapNative(method) {\n return function() {\n if (arguments.length === 0) {\n return method.call(this, Prototype.K);\n } else if (arguments[0] === undefined) {\n var args = slice.call(arguments, 1);\n args.unshift(Prototype.K);\n return method.apply(this, args);\n } else {\n return method.apply(this, arguments);\n }\n };\n }\n\n\n function map(iterator) {\n if (this == null) throw new TypeError();\n iterator = iterator || Prototype.K;\n\n var object = Object(this);\n var results = [], context = arguments[1], n = 0;\n\n for (var i = 0, length = object.length >>> 0; i < length; i++) {\n if (i in object) {\n results[n] = iterator.call(context, object[i], i, object);\n }\n n++;\n }\n results.length = n;\n return results;\n }\n\n if (arrayProto.map) {\n map = wrapNative(Array.prototype.map);\n }\n\n function filter(iterator) {\n if (this == null || !Object.isFunction(iterator))\n throw new TypeError();\n\n var object = Object(this);\n var results = [], context = arguments[1], value;\n\n for (var i = 0, length = object.length >>> 0; i < length; i++) {\n if (i in object) {\n value = object[i];\n if (iterator.call(context, value, i, object)) {\n results.push(value);\n }\n }\n }\n return results;\n }\n\n if (arrayProto.filter) {\n filter = Array.prototype.filter;\n }\n\n function some(iterator) {\n if (this == null) throw new TypeError();\n iterator = iterator || Prototype.K;\n var context = arguments[1];\n\n var object = Object(this);\n for (var i = 0, length = object.length >>> 0; i < length; i++) {\n if (i in object && iterator.call(context, object[i], i, object)) {\n return true;\n }\n }\n\n return false;\n }\n\n if (arrayProto.some) {\n some = wrapNative(Array.prototype.some);\n }\n\n function every(iterator) {\n if (this == null) throw new TypeError();\n iterator = iterator || Prototype.K;\n var context = arguments[1];\n\n var object = Object(this);\n for (var i = 0, length = object.length >>> 0; i < length; i++) {\n if (i in object && !iterator.call(context, object[i], i, object)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (arrayProto.every) {\n every = wrapNative(Array.prototype.every);\n }\n\n\n Object.extend(arrayProto, Enumerable);\n\n if (arrayProto.entries === Enumerable.entries) {\n delete arrayProto.entries;\n }\n\n if (!arrayProto._reverse)\n arrayProto._reverse = arrayProto.reverse;\n\n Object.extend(arrayProto, {\n _each: _each,\n\n map: map,\n collect: map,\n select: filter,\n filter: filter,\n findAll: filter,\n some: some,\n any: some,\n every: every,\n all: every,\n\n clear: clear,\n first: first,\n last: last,\n compact: compact,\n flatten: flatten,\n without: without,\n reverse: reverse,\n uniq: uniq,\n intersect: intersect,\n clone: clone,\n toArray: clone,\n size: size,\n inspect: inspect\n });\n\n var CONCAT_ARGUMENTS_BUGGY = (function() {\n return [].concat(arguments)[0][0] !== 1;\n })(1,2);\n\n if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat;\n\n if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;\n if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf;\n})();\nfunction $H(object) {\n return new Hash(object);\n};\n\nvar Hash = Class.create(Enumerable, (function() {\n function initialize(object) {\n this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);\n }\n\n\n function _each(iterator, context) {\n var i = 0;\n for (var key in this._object) {\n var value = this._object[key], pair = [key, value];\n pair.key = key;\n pair.value = value;\n iterator.call(context, pair, i);\n i++;\n }\n }\n\n function set(key, value) {\n return this._object[key] = value;\n }\n\n function get(key) {\n if (this._object[key] !== Object.prototype[key])\n return this._object[key];\n }\n\n function unset(key) {\n var value = this._object[key];\n delete this._object[key];\n return value;\n }\n\n function toObject() {\n return Object.clone(this._object);\n }\n\n\n\n function keys() {\n return this.pluck('key');\n }\n\n function values() {\n return this.pluck('value');\n }\n\n function index(value) {\n var match = this.detect(function(pair) {\n return pair.value === value;\n });\n return match && match.key;\n }\n\n function merge(object) {\n return this.clone().update(object);\n }\n\n function update(object) {\n return new Hash(object).inject(this, function(result, pair) {\n result.set(pair.key, pair.value);\n return result;\n });\n }\n\n function toQueryPair(key, value) {\n if (Object.isUndefined(value)) return key;\n\n value = String.interpret(value);\n\n value = value.gsub(/(\\r)?\\n/, '\\r\\n');\n value = encodeURIComponent(value);\n value = value.gsub(/%20/, '+');\n return key + '=' + value;\n }\n\n function toQueryString() {\n return this.inject([], function(results, pair) {\n var key = encodeURIComponent(pair.key), values = pair.value;\n\n if (values && typeof values == 'object') {\n if (Object.isArray(values)) {\n var queryValues = [];\n for (var i = 0, len = values.length, value; i < len; i++) {\n value = values[i];\n queryValues.push(toQueryPair(key, value));\n }\n return results.concat(queryValues);\n }\n } else results.push(toQueryPair(key, values));\n return results;\n }).join('&');\n }\n\n function inspect() {\n return '#';\n }\n\n function clone() {\n return new Hash(this);\n }\n\n return {\n initialize: initialize,\n _each: _each,\n set: set,\n get: get,\n unset: unset,\n toObject: toObject,\n toTemplateReplacements: toObject,\n keys: keys,\n values: values,\n index: index,\n merge: merge,\n update: update,\n toQueryString: toQueryString,\n inspect: inspect,\n toJSON: toObject,\n clone: clone\n };\n})());\n\nHash.from = $H;\nObject.extend(Number.prototype, (function() {\n function toColorPart() {\n return this.toPaddedString(2, 16);\n }\n\n function succ() {\n return this + 1;\n }\n\n function times(iterator, context) {\n $R(0, this, true).each(iterator, context);\n return this;\n }\n\n function toPaddedString(length, radix) {\n var string = this.toString(radix || 10);\n return '0'.times(length - string.length) + string;\n }\n\n function abs() {\n return Math.abs(this);\n }\n\n function round() {\n return Math.round(this);\n }\n\n function ceil() {\n return Math.ceil(this);\n }\n\n function floor() {\n return Math.floor(this);\n }\n\n return {\n toColorPart: toColorPart,\n succ: succ,\n times: times,\n toPaddedString: toPaddedString,\n abs: abs,\n round: round,\n ceil: ceil,\n floor: floor\n };\n})());\n\nfunction $R(start, end, exclusive) {\n return new ObjectRange(start, end, exclusive);\n}\n\nvar ObjectRange = Class.create(Enumerable, (function() {\n function initialize(start, end, exclusive) {\n this.start = start;\n this.end = end;\n this.exclusive = exclusive;\n }\n\n function _each(iterator, context) {\n var value = this.start, i;\n for (i = 0; this.include(value); i++) {\n iterator.call(context, value, i);\n value = value.succ();\n }\n }\n\n function include(value) {\n if (value < this.start)\n return false;\n if (this.exclusive)\n return value < this.end;\n return value <= this.end;\n }\n\n return {\n initialize: initialize,\n _each: _each,\n include: include\n };\n})());\n\n\n\nvar Abstract = { };\n\n\nvar Try = {\n these: function() {\n var returnValue;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n var lambda = arguments[i];\n try {\n returnValue = lambda();\n break;\n } catch (e) { }\n }\n\n return returnValue;\n }\n};\n\nvar Ajax = {\n getTransport: function() {\n return Try.these(\n function() {return new XMLHttpRequest()},\n function() {return new ActiveXObject('Msxml2.XMLHTTP')},\n function() {return new ActiveXObject('Microsoft.XMLHTTP')}\n ) || false;\n },\n\n activeRequestCount: 0\n};\n\nAjax.Responders = {\n responders: [],\n\n _each: function(iterator, context) {\n this.responders._each(iterator, context);\n },\n\n register: function(responder) {\n if (!this.include(responder))\n this.responders.push(responder);\n },\n\n unregister: function(responder) {\n this.responders = this.responders.without(responder);\n },\n\n dispatch: function(callback, request, transport, json) {\n this.each(function(responder) {\n if (Object.isFunction(responder[callback])) {\n try {\n responder[callback].apply(responder, [request, transport, json]);\n } catch (e) { }\n }\n });\n }\n};\n\nObject.extend(Ajax.Responders, Enumerable);\n\nAjax.Responders.register({\n onCreate: function() { Ajax.activeRequestCount++ },\n onComplete: function() { Ajax.activeRequestCount-- }\n});\nAjax.Base = Class.create({\n initialize: function(options) {\n this.options = {\n method: 'post',\n asynchronous: true,\n contentType: 'application/x-www-form-urlencoded',\n encoding: 'UTF-8',\n parameters: '',\n evalJSON: true,\n evalJS: true\n };\n Object.extend(this.options, options || { });\n\n this.options.method = this.options.method.toLowerCase();\n\n if (Object.isHash(this.options.parameters))\n this.options.parameters = this.options.parameters.toObject();\n }\n});\nAjax.Request = Class.create(Ajax.Base, {\n _complete: false,\n\n initialize: function($super, url, options) {\n $super(options);\n this.transport = Ajax.getTransport();\n this.request(url);\n },\n\n request: function(url) {\n this.url = url;\n this.method = this.options.method;\n var params = Object.isString(this.options.parameters) ?\n this.options.parameters :\n Object.toQueryString(this.options.parameters);\n\n if (!['get', 'post'].include(this.method)) {\n params += (params ? '&' : '') + \"_method=\" + this.method;\n this.method = 'post';\n }\n\n if (params && this.method === 'get') {\n this.url += (this.url.include('?') ? '&' : '?') + params;\n }\n\n this.parameters = params.toQueryParams();\n\n try {\n var response = new Ajax.Response(this);\n if (this.options.onCreate) this.options.onCreate(response);\n Ajax.Responders.dispatch('onCreate', this, response);\n\n this.transport.open(this.method.toUpperCase(), this.url,\n this.options.asynchronous);\n\n if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);\n\n this.transport.onreadystatechange = this.onStateChange.bind(this);\n this.setRequestHeaders();\n\n this.body = this.method == 'post' ? (this.options.postBody || params) : null;\n this.transport.send(this.body);\n\n /* Force Firefox to handle ready state 4 for synchronous requests */\n if (!this.options.asynchronous && this.transport.overrideMimeType)\n this.onStateChange();\n\n }\n catch (e) {\n this.dispatchException(e);\n }\n },\n\n onStateChange: function() {\n var readyState = this.transport.readyState;\n if (readyState > 1 && !((readyState == 4) && this._complete))\n this.respondToReadyState(this.transport.readyState);\n },\n\n setRequestHeaders: function() {\n var headers = {\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-Prototype-Version': Prototype.Version,\n 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\n };\n\n if (this.method == 'post') {\n headers['Content-type'] = this.options.contentType +\n (this.options.encoding ? '; charset=' + this.options.encoding : '');\n\n /* Force \"Connection: close\" for older Mozilla browsers to work\n * around a bug where XMLHttpRequest sends an incorrect\n * Content-length header. See Mozilla Bugzilla #246651.\n */\n if (this.transport.overrideMimeType &&\n (navigator.userAgent.match(/Gecko\\/(\\d{4})/) || [0,2005])[1] < 2005)\n headers['Connection'] = 'close';\n }\n\n if (typeof this.options.requestHeaders == 'object') {\n var extras = this.options.requestHeaders;\n\n if (Object.isFunction(extras.push))\n for (var i = 0, length = extras.length; i < length; i += 2)\n headers[extras[i]] = extras[i+1];\n else\n $H(extras).each(function(pair) { headers[pair.key] = pair.value });\n }\n\n for (var name in headers)\n if (headers[name] != null)\n this.transport.setRequestHeader(name, headers[name]);\n },\n\n success: function() {\n var status = this.getStatus();\n return !status || (status >= 200 && status < 300) || status == 304;\n },\n\n getStatus: function() {\n try {\n if (this.transport.status === 1223) return 204;\n return this.transport.status || 0;\n } catch (e) { return 0 }\n },\n\n respondToReadyState: function(readyState) {\n var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);\n\n if (state == 'Complete') {\n try {\n this._complete = true;\n (this.options['on' + response.status]\n || this.options['on' + (this.success() ? 'Success' : 'Failure')]\n || Prototype.emptyFunction)(response, response.headerJSON);\n } catch (e) {\n this.dispatchException(e);\n }\n\n var contentType = response.getHeader('Content-type');\n if (this.options.evalJS == 'force'\n || (this.options.evalJS && this.isSameOrigin() && contentType\n && contentType.match(/^\\s*(text|application)\\/(x-)?(java|ecma)script(;.*)?\\s*$/i)))\n this.evalResponse();\n }\n\n try {\n (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);\n Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);\n } catch (e) {\n this.dispatchException(e);\n }\n\n if (state == 'Complete') {\n this.transport.onreadystatechange = Prototype.emptyFunction;\n }\n },\n\n isSameOrigin: function() {\n var m = this.url.match(/^\\s*https?:\\/\\/[^\\/]*/);\n return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({\n protocol: location.protocol,\n domain: document.domain,\n port: location.port ? ':' + location.port : ''\n }));\n },\n\n getHeader: function(name) {\n try {\n return this.transport.getResponseHeader(name) || null;\n } catch (e) { return null; }\n },\n\n evalResponse: function() {\n try {\n return eval((this.transport.responseText || '').unfilterJSON());\n } catch (e) {\n this.dispatchException(e);\n }\n },\n\n dispatchException: function(exception) {\n (this.options.onException || Prototype.emptyFunction)(this, exception);\n Ajax.Responders.dispatch('onException', this, exception);\n }\n});\n\nAjax.Request.Events =\n ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];\n\n\n\n\n\n\n\n\nAjax.Response = Class.create({\n initialize: function(request){\n this.request = request;\n var transport = this.transport = request.transport,\n readyState = this.readyState = transport.readyState;\n\n if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {\n this.status = this.getStatus();\n this.statusText = this.getStatusText();\n this.responseText = String.interpret(transport.responseText);\n this.headerJSON = this._getHeaderJSON();\n }\n\n if (readyState == 4) {\n var xml = transport.responseXML;\n this.responseXML = Object.isUndefined(xml) ? null : xml;\n this.responseJSON = this._getResponseJSON();\n }\n },\n\n status: 0,\n\n statusText: '',\n\n getStatus: Ajax.Request.prototype.getStatus,\n\n getStatusText: function() {\n try {\n return this.transport.statusText || '';\n } catch (e) { return '' }\n },\n\n getHeader: Ajax.Request.prototype.getHeader,\n\n getAllHeaders: function() {\n try {\n return this.getAllResponseHeaders();\n } catch (e) { return null }\n },\n\n getResponseHeader: function(name) {\n return this.transport.getResponseHeader(name);\n },\n\n getAllResponseHeaders: function() {\n return this.transport.getAllResponseHeaders();\n },\n\n _getHeaderJSON: function() {\n var json = this.getHeader('X-JSON');\n if (!json) return null;\n\n try {\n json = decodeURIComponent(escape(json));\n } catch(e) {\n }\n\n try {\n return json.evalJSON(this.request.options.sanitizeJSON ||\n !this.request.isSameOrigin());\n } catch (e) {\n this.request.dispatchException(e);\n }\n },\n\n _getResponseJSON: function() {\n var options = this.request.options;\n if (!options.evalJSON || (options.evalJSON != 'force' &&\n !(this.getHeader('Content-type') || '').include('application/json')) ||\n this.responseText.blank())\n return null;\n try {\n return this.responseText.evalJSON(options.sanitizeJSON ||\n !this.request.isSameOrigin());\n } catch (e) {\n this.request.dispatchException(e);\n }\n }\n});\n\nAjax.Updater = Class.create(Ajax.Request, {\n initialize: function($super, container, url, options) {\n this.container = {\n success: (container.success || container),\n failure: (container.failure || (container.success ? null : container))\n };\n\n options = Object.clone(options);\n var onComplete = options.onComplete;\n options.onComplete = (function(response, json) {\n this.updateContent(response.responseText);\n if (Object.isFunction(onComplete)) onComplete(response, json);\n }).bind(this);\n\n $super(url, options);\n },\n\n updateContent: function(responseText) {\n var receiver = this.container[this.success() ? 'success' : 'failure'],\n options = this.options;\n\n if (!options.evalScripts) responseText = responseText.stripScripts();\n\n if (receiver = $(receiver)) {\n if (options.insertion) {\n if (Object.isString(options.insertion)) {\n var insertion = { }; insertion[options.insertion] = responseText;\n receiver.insert(insertion);\n }\n else options.insertion(receiver, responseText);\n }\n else receiver.update(responseText);\n }\n }\n});\n\nAjax.PeriodicalUpdater = Class.create(Ajax.Base, {\n initialize: function($super, container, url, options) {\n $super(options);\n this.onComplete = this.options.onComplete;\n\n this.frequency = (this.options.frequency || 2);\n this.decay = (this.options.decay || 1);\n\n this.updater = { };\n this.container = container;\n this.url = url;\n\n this.start();\n },\n\n start: function() {\n this.options.onComplete = this.updateComplete.bind(this);\n this.onTimerEvent();\n },\n\n stop: function() {\n this.updater.options.onComplete = undefined;\n clearTimeout(this.timer);\n (this.onComplete || Prototype.emptyFunction).apply(this, arguments);\n },\n\n updateComplete: function(response) {\n if (this.options.decay) {\n this.decay = (response.responseText == this.lastText ?\n this.decay * this.options.decay : 1);\n\n this.lastText = response.responseText;\n }\n this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);\n },\n\n onTimerEvent: function() {\n this.updater = new Ajax.Updater(this.container, this.url, this.options);\n }\n});\n\n(function(GLOBAL) {\n\n var UNDEFINED;\n var SLICE = Array.prototype.slice;\n\n var DIV = document.createElement('div');\n\n\n function $(element) {\n if (arguments.length > 1) {\n for (var i = 0, elements = [], length = arguments.length; i < length; i++)\n elements.push($(arguments[i]));\n return elements;\n }\n\n if (Object.isString(element))\n element = document.getElementById(element);\n return Element.extend(element);\n }\n\n GLOBAL.$ = $;\n\n GLOBAL.__dollar_sign__ = $;\n if (!GLOBAL.Node) GLOBAL.Node = {};\n\n if (!GLOBAL.Node.ELEMENT_NODE) {\n Object.extend(GLOBAL.Node, {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n TEXT_NODE: 3,\n CDATA_SECTION_NODE: 4,\n ENTITY_REFERENCE_NODE: 5,\n ENTITY_NODE: 6,\n PROCESSING_INSTRUCTION_NODE: 7,\n COMMENT_NODE: 8,\n DOCUMENT_NODE: 9,\n DOCUMENT_TYPE_NODE: 10,\n DOCUMENT_FRAGMENT_NODE: 11,\n NOTATION_NODE: 12\n });\n }\n\n var ELEMENT_CACHE = {};\n\n function shouldUseCreationCache(tagName, attributes) {\n if (tagName === 'select') return false;\n if ('type' in attributes) return false;\n return true;\n }\n\n var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){\n try {\n var el = document.createElement('');\n return el.tagName.toLowerCase() === 'input' && el.name === 'x';\n }\n catch(err) {\n return false;\n }\n })();\n\n function getRawStyle(element, style) {\n element = $(element);\n\n var value = element.style[style];\n if (!value || value === 'auto') {\n var css = document.defaultView.getComputedStyle(element, null);\n value = css ? css[style] : null;\n }\n\n if (style === 'opacity') return value ? parseFloat(value) : 1.0;\n return value === 'auto' ? null : value;\n }\n\n function getRawStyle_IE(element, style) {\n var value = element.style[style];\n if (!value && element.currentStyle) {\n value = element.currentStyle[style];\n }\n return value;\n }\n\n if ('currentStyle' in document.documentElement) {\n getRawStyle = getRawStyle_IE;\n }\n\n var oldElement = GLOBAL.Element;\n function Element(tagName, attributes) {\n attributes = attributes || {};\n tagName = tagName.toLowerCase();\n\n if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) {\n tagName = '<' + tagName + ' name=\"' + attributes.name + '\">';\n delete attributes.name;\n return Element.writeAttribute(document.createElement(tagName), attributes);\n }\n\n if (!ELEMENT_CACHE[tagName])\n ELEMENT_CACHE[tagName] = Element.extend(document.createElement(tagName));\n\n var node = shouldUseCreationCache(tagName, attributes) ?\n ELEMENT_CACHE[tagName].cloneNode(false) : document.createElement(tagName);\n\n return Element.writeAttribute(node, attributes);\n }\n\n GLOBAL.Element = Element;\n\n Object.extend(GLOBAL.Element, oldElement || {});\n if (oldElement) GLOBAL.Element.prototype = oldElement.prototype;\n\n Element.Methods = { ByTag: {}, Simulated: {} };\n\n var methods = {};\n\n var INSPECT_ATTRIBUTES = { id: 'id', className: 'class' };\n function inspect(element) {\n element = $(element);\n var result = '<' + element.tagName.toLowerCase();\n\n var attribute, value;\n for (var property in INSPECT_ATTRIBUTES) {\n attribute = INSPECT_ATTRIBUTES[property];\n value = (element[property] || '').toString();\n if (value) result += ' ' + attribute + '=' + value.inspect(true);\n }\n\n return result + '>';\n }\n\n methods.inspect = inspect;\n\n\n function visible(element) {\n return getRawStyle($(element), \"display\") !== 'none';\n }\n\n function toggle(element, bool) {\n element = $(element);\n if (typeof bool !== 'boolean')\n bool = !Element.visible(element);\n Element[bool ? 'show' : 'hide'](element);\n\n return element;\n }\n\n function hide(element) {\n element = $(element);\n element.style.display = 'none';\n return element;\n }\n\n function show(element) {\n element = $(element);\n element.style.display = '';\n return element;\n }\n\n\n Object.extend(methods, {\n visible: visible,\n toggle: toggle,\n hide: hide,\n show: show\n });\n\n\n function remove(element) {\n element = $(element);\n element.parentNode.removeChild(element);\n return element;\n }\n\n var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){\n var el = document.createElement(\"select\"),\n isBuggy = true;\n el.innerHTML = \"\";\n if (el.options && el.options[0]) {\n isBuggy = el.options[0].nodeName.toUpperCase() !== \"OPTION\";\n }\n el = null;\n return isBuggy;\n })();\n\n var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){\n try {\n var el = document.createElement(\"table\");\n if (el && el.tBodies) {\n el.innerHTML = \"test\";\n var isBuggy = typeof el.tBodies[0] == \"undefined\";\n el = null;\n return isBuggy;\n }\n } catch (e) {\n return true;\n }\n })();\n\n var LINK_ELEMENT_INNERHTML_BUGGY = (function() {\n try {\n var el = document.createElement('div');\n el.innerHTML = \"\";\n var isBuggy = (el.childNodes.length === 0);\n el = null;\n return isBuggy;\n } catch(e) {\n return true;\n }\n })();\n\n var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY ||\n TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY;\n\n var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () {\n var s = document.createElement(\"script\"),\n isBuggy = false;\n try {\n s.appendChild(document.createTextNode(\"\"));\n isBuggy = !s.firstChild ||\n s.firstChild && s.firstChild.nodeType !== 3;\n } catch (e) {\n isBuggy = true;\n }\n s = null;\n return isBuggy;\n })();\n\n function update(element, content) {\n element = $(element);\n\n var descendants = element.getElementsByTagName('*'),\n i = descendants.length;\n while (i--) purgeElement(descendants[i]);\n\n if (content && content.toElement)\n content = content.toElement();\n\n if (Object.isElement(content))\n return element.update().insert(content);\n\n\n content = Object.toHTML(content);\n var tagName = element.tagName.toUpperCase();\n\n if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {\n element.text = content;\n return element;\n }\n\n if (ANY_INNERHTML_BUGGY) {\n if (tagName in INSERTION_TRANSLATIONS.tags) {\n while (element.firstChild)\n element.removeChild(element.firstChild);\n\n var nodes = getContentFromAnonymousElement(tagName, content.stripScripts());\n for (var i = 0, node; node = nodes[i]; i++)\n element.appendChild(node);\n\n } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf(' -1) {\n while (element.firstChild)\n element.removeChild(element.firstChild);\n\n var nodes = getContentFromAnonymousElement(tagName,\n content.stripScripts(), true);\n\n for (var i = 0, node; node = nodes[i]; i++)\n element.appendChild(node);\n } else {\n element.innerHTML = _escapeXSS(content.stripScripts());\n }\n } else {\n element.innerHTML = _escapeXSS(content.stripScripts());\n }\n\n content.evalScripts.bind(content).defer();\n return element;\n }\n\n function replace(element, content) {\n element = $(element);\n\n if (content && content.toElement) {\n content = content.toElement();\n } else if (!Object.isElement(content)) {\n content = Object.toHTML(content);\n var range = element.ownerDocument.createRange();\n range.selectNode(element);\n content.evalScripts.bind(content).defer();\n content = range.createContextualFragment(_escapeXSS(content.stripScripts()));\n }\n\n element.parentNode.replaceChild(content, element);\n return element;\n }\n\n var INSERTION_TRANSLATIONS = {\n before: function(element, node) {\n element.parentNode.insertBefore(node, element);\n },\n top: function(element, node) {\n element.insertBefore(node, element.firstChild);\n },\n bottom: function(element, node) {\n element.appendChild(node);\n },\n after: function(element, node) {\n element.parentNode.insertBefore(node, element.nextSibling);\n },\n\n tags: {\n TABLE: ['', '
', 1],\n TBODY: ['', '
', 2],\n TR: ['', '
', 3],\n TD: ['
', '
', 4],\n SELECT: ['', 1]\n }\n };\n\n var tags = INSERTION_TRANSLATIONS.tags;\n\n Object.extend(tags, {\n THEAD: tags.TBODY,\n TFOOT: tags.TBODY,\n TH: tags.TD\n });\n\n function replace_IE(element, content) {\n element = $(element);\n if (content && content.toElement)\n content = content.toElement();\n if (Object.isElement(content)) {\n element.parentNode.replaceChild(content, element);\n return element;\n }\n\n content = Object.toHTML(content);\n var parent = element.parentNode, tagName = parent.tagName.toUpperCase();\n\n if (tagName in INSERTION_TRANSLATIONS.tags) {\n var nextSibling = Element.next(element);\n var fragments = getContentFromAnonymousElement(\n tagName, content.stripScripts());\n\n parent.removeChild(element);\n\n var iterator;\n if (nextSibling)\n iterator = function(node) { parent.insertBefore(node, nextSibling) };\n else\n iterator = function(node) { parent.appendChild(node); }\n\n fragments.each(iterator);\n } else {\n element.outerHTML = _escapeXSS(content.stripScripts());\n\n }\n\n content.evalScripts.bind(content).defer();\n return element;\n }\n\n if ('outerHTML' in document.documentElement)\n replace = replace_IE;\n\n function isContent(content) {\n if (Object.isUndefined(content) || content === null) return false;\n\n if (Object.isString(content) || Object.isNumber(content)) return true;\n if (Object.isElement(content)) return true;\n if (content.toElement || content.toHTML) return true;\n\n return false;\n }\n\n function insertContentAt(element, content, position) {\n position = position.toLowerCase();\n var method = INSERTION_TRANSLATIONS[position];\n\n if (content && content.toElement) content = content.toElement();\n if (Object.isElement(content)) {\n method(element, content);\n return element;\n }\n\n content = Object.toHTML(content);\n var tagName = ((position === 'before' || position === 'after') ?\n element.parentNode : element).tagName.toUpperCase();\n\n var childNodes = getContentFromAnonymousElement(tagName, content.stripScripts());\n\n if (position === 'top' || position === 'after') childNodes.reverse();\n\n for (var i = 0, node; node = childNodes[i]; i++)\n method(element, node);\n\n content.evalScripts.bind(content).defer();\n }\n\n function insert(element, insertions) {\n element = $(element);\n\n if (isContent(insertions))\n insertions = { bottom: insertions };\n\n for (var position in insertions)\n insertContentAt(element, insertions[position], position);\n\n return element;\n }\n\n function wrap(element, wrapper, attributes) {\n element = $(element);\n\n if (Object.isElement(wrapper)) {\n $(wrapper).writeAttribute(attributes || {});\n } else if (Object.isString(wrapper)) {\n wrapper = new Element(wrapper, attributes);\n } else {\n wrapper = new Element('div', wrapper);\n }\n\n if (element.parentNode)\n element.parentNode.replaceChild(wrapper, element);\n\n wrapper.appendChild(element);\n\n return wrapper;\n }\n\n function cleanWhitespace(element) {\n element = $(element);\n var node = element.firstChild;\n\n while (node) {\n var nextNode = node.nextSibling;\n if (node.nodeType === Node.TEXT_NODE && !/\\S/.test(node.nodeValue))\n element.removeChild(node);\n node = nextNode;\n }\n return element;\n }\n\n function empty(element) {\n return $(element).innerHTML.blank();\n }\n\n function getContentFromAnonymousElement(tagName, html, force) {\n var t = INSERTION_TRANSLATIONS.tags[tagName], div = DIV;\n\n var workaround = !!t;\n if (!workaround && force) {\n workaround = true;\n t = ['', '', 0];\n }\n\n if (workaround) {\n div.innerHTML = _escapeXSS(' ' + t[0] + html + t[1]);\n div.removeChild(div.firstChild);\n for (var i = t[2]; i--; )\n div = div.firstChild;\n } else {\n div.innerHTML = _escapeXSS(html);\n }\n\n return $A(div.childNodes);\n }\n\n function clone(element, deep) {\n if (!(element = $(element))) return;\n var clone = element.cloneNode(deep);\n if (!HAS_UNIQUE_ID_PROPERTY) {\n clone._prototypeUID = UNDEFINED;\n if (deep) {\n var descendants = Element.select(clone, '*'),\n i = descendants.length;\n while (i--)\n descendants[i]._prototypeUID = UNDEFINED;\n }\n }\n return Element.extend(clone);\n }\n\n function purgeElement(element) {\n var uid = getUniqueElementID(element);\n if (uid) {\n Element.stopObserving(element);\n if (!HAS_UNIQUE_ID_PROPERTY)\n element._prototypeUID = UNDEFINED;\n delete Element.Storage[uid];\n }\n }\n\n function purgeCollection(elements) {\n var i = elements.length;\n while (i--)\n purgeElement(elements[i]);\n }\n\n function purgeCollection_IE(elements) {\n var i = elements.length, element, uid;\n while (i--) {\n element = elements[i];\n uid = getUniqueElementID(element);\n delete Element.Storage[uid];\n delete Event.cache[uid];\n }\n }\n\n if (HAS_UNIQUE_ID_PROPERTY) {\n purgeCollection = purgeCollection_IE;\n }\n\n\n function purge(element) {\n if (!(element = $(element))) return;\n purgeElement(element);\n\n var descendants = element.getElementsByTagName('*'),\n i = descendants.length;\n\n while (i--) purgeElement(descendants[i]);\n\n return null;\n }\n\n Object.extend(methods, {\n remove: remove,\n update: update,\n replace: replace,\n insert: insert,\n wrap: wrap,\n cleanWhitespace: cleanWhitespace,\n empty: empty,\n clone: clone,\n purge: purge\n });\n\n\n\n function recursivelyCollect(element, property, maximumLength) {\n element = $(element);\n maximumLength = maximumLength || -1;\n var elements = [];\n\n while (element = element[property]) {\n if (element.nodeType === Node.ELEMENT_NODE)\n elements.push(Element.extend(element));\n\n if (elements.length === maximumLength) break;\n }\n\n return elements;\n }\n\n\n function ancestors(element) {\n return recursivelyCollect(element, 'parentNode');\n }\n\n function descendants(element) {\n return Element.select(element, '*');\n }\n\n function firstDescendant(element) {\n element = $(element).firstChild;\n while (element && element.nodeType !== Node.ELEMENT_NODE)\n element = element.nextSibling;\n\n return $(element);\n }\n\n function immediateDescendants(element) {\n var results = [], child = $(element).firstChild;\n\n while (child) {\n if (child.nodeType === Node.ELEMENT_NODE)\n results.push(Element.extend(child));\n\n child = child.nextSibling;\n }\n\n return results;\n }\n\n function previousSiblings(element) {\n return recursivelyCollect(element, 'previousSibling');\n }\n\n function nextSiblings(element) {\n return recursivelyCollect(element, 'nextSibling');\n }\n\n function siblings(element) {\n element = $(element);\n var previous = previousSiblings(element),\n next = nextSiblings(element);\n return previous.reverse().concat(next);\n }\n\n function match(element, selector) {\n element = $(element);\n\n if (Object.isString(selector))\n return Prototype.Selector.match(element, selector);\n\n return selector.match(element);\n }\n\n\n function _recursivelyFind(element, property, expression, index) {\n element = $(element), expression = expression || 0, index = index || 0;\n if (Object.isNumber(expression)) {\n index = expression, expression = null;\n }\n\n while (element = element[property]) {\n if (element.nodeType !== 1) continue;\n if (expression && !Prototype.Selector.match(element, expression))\n continue;\n if (--index >= 0) continue;\n\n return Element.extend(element);\n }\n }\n\n\n function up(element, expression, index) {\n element = $(element);\n\n if (arguments.length === 1) return $(element.parentNode);\n return _recursivelyFind(element, 'parentNode', expression, index);\n }\n\n function down(element, expression, index) {\n if (arguments.length === 1) return firstDescendant(element);\n element = $(element), expression = expression || 0, index = index || 0;\n\n if (Object.isNumber(expression))\n index = expression, expression = '*';\n\n var node = Prototype.Selector.select(expression, element)[index];\n return Element.extend(node);\n }\n\n function previous(element, expression, index) {\n return _recursivelyFind(element, 'previousSibling', expression, index);\n }\n\n function next(element, expression, index) {\n return _recursivelyFind(element, 'nextSibling', expression, index);\n }\n\n function select(element) {\n element = $(element);\n var expressions = SLICE.call(arguments, 1).join(', ');\n return Prototype.Selector.select(expressions, element);\n }\n\n function adjacent(element) {\n element = $(element);\n var expressions = SLICE.call(arguments, 1).join(', ');\n var siblings = Element.siblings(element), results = [];\n for (var i = 0, sibling; sibling = siblings[i]; i++) {\n if (Prototype.Selector.match(sibling, expressions))\n results.push(sibling);\n }\n\n return results;\n }\n\n function descendantOf_DOM(element, ancestor) {\n element = $(element), ancestor = $(ancestor);\n if (!element || !ancestor) return false;\n while (element = element.parentNode)\n if (element === ancestor) return true;\n return false;\n }\n\n function descendantOf_contains(element, ancestor) {\n element = $(element), ancestor = $(ancestor);\n if (!element || !ancestor) return false;\n if (!ancestor.contains) return descendantOf_DOM(element, ancestor);\n return ancestor.contains(element) && ancestor !== element;\n }\n\n function descendantOf_compareDocumentPosition(element, ancestor) {\n element = $(element), ancestor = $(ancestor);\n if (!element || !ancestor) return false;\n return (element.compareDocumentPosition(ancestor) & 8) === 8;\n }\n\n var descendantOf;\n if (DIV.compareDocumentPosition) {\n descendantOf = descendantOf_compareDocumentPosition;\n } else if (DIV.contains) {\n descendantOf = descendantOf_contains;\n } else {\n descendantOf = descendantOf_DOM;\n }\n\n\n Object.extend(methods, {\n recursivelyCollect: recursivelyCollect,\n ancestors: ancestors,\n descendants: descendants,\n firstDescendant: firstDescendant,\n immediateDescendants: immediateDescendants,\n previousSiblings: previousSiblings,\n nextSiblings: nextSiblings,\n siblings: siblings,\n match: match,\n up: up,\n down: down,\n previous: previous,\n next: next,\n select: select,\n adjacent: adjacent,\n descendantOf: descendantOf,\n\n getElementsBySelector: select,\n\n childElements: immediateDescendants\n });\n\n\n var idCounter = 1;\n function identify(element) {\n element = $(element);\n var id = Element.readAttribute(element, 'id');\n if (id) return id;\n\n do { id = 'anonymous_element_' + idCounter++ } while ($(id));\n\n Element.writeAttribute(element, 'id', id);\n return id;\n }\n\n\n function readAttribute(element, name) {\n return $(element).getAttribute(name);\n }\n\n function readAttribute_IE(element, name) {\n element = $(element);\n\n var table = ATTRIBUTE_TRANSLATIONS.read;\n if (table.values[name])\n return table.values[name](element, name);\n\n if (table.names[name]) name = table.names[name];\n\n if (name.include(':')) {\n if (!element.attributes || !element.attributes[name]) return null;\n return element.attributes[name].value;\n }\n\n return element.getAttribute(name);\n }\n\n function readAttribute_Opera(element, name) {\n if (name === 'title') return element.title;\n return element.getAttribute(name);\n }\n\n var PROBLEMATIC_ATTRIBUTE_READING = (function() {\n DIV.setAttribute('onclick', []);\n var value = DIV.getAttribute('onclick');\n var isFunction = Object.isArray(value);\n DIV.removeAttribute('onclick');\n return isFunction;\n })();\n\n if (PROBLEMATIC_ATTRIBUTE_READING) {\n readAttribute = readAttribute_IE;\n } else if (Prototype.Browser.Opera) {\n readAttribute = readAttribute_Opera;\n }\n\n\n function writeAttribute(element, name, value) {\n element = $(element);\n var attributes = {}, table = ATTRIBUTE_TRANSLATIONS.write;\n\n if (typeof name === 'object') {\n attributes = name;\n } else {\n attributes[name] = Object.isUndefined(value) ? true : value;\n }\n\n for (var attr in attributes) {\n name = table.names[attr] || attr;\n value = attributes[attr];\n if (table.values[attr]) {\n value = table.values[attr](element, value);\n if (Object.isUndefined(value)) continue;\n }\n if (value === false || value === null)\n element.removeAttribute(name);\n else if (value === true)\n element.setAttribute(name, name);\n else element.setAttribute(name, value);\n }\n\n return element;\n }\n\n var PROBLEMATIC_HAS_ATTRIBUTE_WITH_CHECKBOXES = (function () {\n if (!HAS_EXTENDED_CREATE_ELEMENT_SYNTAX) {\n return false;\n }\n var checkbox = document.createElement('');\n checkbox.checked = true;\n var node = checkbox.getAttributeNode('checked');\n return !node || !node.specified;\n })();\n\n function hasAttribute(element, attribute) {\n attribute = ATTRIBUTE_TRANSLATIONS.has[attribute] || attribute;\n var node = $(element).getAttributeNode(attribute);\n return !!(node && node.specified);\n }\n\n function hasAttribute_IE(element, attribute) {\n if (attribute === 'checked') {\n return element.checked;\n }\n return hasAttribute(element, attribute);\n }\n\n GLOBAL.Element.Methods.Simulated.hasAttribute =\n PROBLEMATIC_HAS_ATTRIBUTE_WITH_CHECKBOXES ?\n hasAttribute_IE : hasAttribute;\n\n function classNames(element) {\n return new Element.ClassNames(element);\n }\n\n var regExpCache = {};\n function getRegExpForClassName(className) {\n if (regExpCache[className]) return regExpCache[className];\n\n var re = new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\n regExpCache[className] = re;\n return re;\n }\n\n function hasClassName(element, className) {\n if (!(element = $(element))) return;\n\n var elementClassName = element.className;\n\n if (elementClassName.length === 0) return false;\n if (elementClassName === className) return true;\n\n return getRegExpForClassName(className).test(elementClassName);\n }\n\n function addClassName(element, className) {\n if (!(element = $(element))) return;\n\n if (!hasClassName(element, className))\n element.className += (element.className ? ' ' : '') + className;\n\n return element;\n }\n\n function removeClassName(element, className) {\n if (!(element = $(element))) return;\n\n element.className = element.className.replace(\n getRegExpForClassName(className), ' ').strip();\n\n return element;\n }\n\n function toggleClassName(element, className, bool) {\n if (!(element = $(element))) return;\n\n if (Object.isUndefined(bool))\n bool = !hasClassName(element, className);\n\n var method = Element[bool ? 'addClassName' : 'removeClassName'];\n return method(element, className);\n }\n\n var ATTRIBUTE_TRANSLATIONS = {};\n\n var classProp = 'className', forProp = 'for';\n\n DIV.setAttribute(classProp, 'x');\n if (DIV.className !== 'x') {\n DIV.setAttribute('class', 'x');\n if (DIV.className === 'x')\n classProp = 'class';\n }\n\n var LABEL = document.createElement('label');\n LABEL.setAttribute(forProp, 'x');\n if (LABEL.htmlFor !== 'x') {\n LABEL.setAttribute('htmlFor', 'x');\n if (LABEL.htmlFor === 'x')\n forProp = 'htmlFor';\n }\n LABEL = null;\n\n function _getAttr(element, attribute) {\n return element.getAttribute(attribute);\n }\n\n function _getAttr2(element, attribute) {\n return element.getAttribute(attribute, 2);\n }\n\n function _getAttrNode(element, attribute) {\n var node = element.getAttributeNode(attribute);\n return node ? node.value : '';\n }\n\n function _getFlag(element, attribute) {\n return $(element).hasAttribute(attribute) ? attribute : null;\n }\n\n DIV.onclick = Prototype.emptyFunction;\n var onclickValue = DIV.getAttribute('onclick');\n\n var _getEv;\n\n if (String(onclickValue).indexOf('{') > -1) {\n _getEv = function(element, attribute) {\n var value = element.getAttribute(attribute);\n if (!value) return null;\n value = value.toString();\n value = value.split('{')[1];\n value = value.split('}')[0];\n return value.strip();\n };\n }\n else if (onclickValue === '') {\n _getEv = function(element, attribute) {\n var value = element.getAttribute(attribute);\n if (!value) return null;\n return value.strip();\n };\n }\n\n ATTRIBUTE_TRANSLATIONS.read = {\n names: {\n 'class': classProp,\n 'className': classProp,\n 'for': forProp,\n 'htmlFor': forProp\n },\n\n values: {\n style: function(element) {\n return element.style.cssText.toLowerCase();\n },\n title: function(element) {\n return element.title;\n }\n }\n };\n\n ATTRIBUTE_TRANSLATIONS.write = {\n names: {\n className: 'class',\n htmlFor: 'for',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing'\n },\n\n values: {\n checked: function(element, value) {\n value = !!value;\n element.checked = value;\n return value ? 'checked' : null;\n },\n\n style: function(element, value) {\n element.style.cssText = value ? value : '';\n }\n }\n };\n\n ATTRIBUTE_TRANSLATIONS.has = { names: {} };\n\n Object.extend(ATTRIBUTE_TRANSLATIONS.write.names,\n ATTRIBUTE_TRANSLATIONS.read.names);\n\n var CAMEL_CASED_ATTRIBUTE_NAMES = $w('colSpan rowSpan vAlign dateTime ' +\n 'accessKey tabIndex encType maxLength readOnly longDesc frameBorder');\n\n for (var i = 0, attr; attr = CAMEL_CASED_ATTRIBUTE_NAMES[i]; i++) {\n ATTRIBUTE_TRANSLATIONS.write.names[attr.toLowerCase()] = attr;\n ATTRIBUTE_TRANSLATIONS.has.names[attr.toLowerCase()] = attr;\n }\n\n Object.extend(ATTRIBUTE_TRANSLATIONS.read.values, {\n href: _getAttr2,\n src: _getAttr2,\n type: _getAttr,\n action: _getAttrNode,\n disabled: _getFlag,\n checked: _getFlag,\n readonly: _getFlag,\n multiple: _getFlag,\n onload: _getEv,\n onunload: _getEv,\n onclick: _getEv,\n ondblclick: _getEv,\n onmousedown: _getEv,\n onmouseup: _getEv,\n onmouseover: _getEv,\n onmousemove: _getEv,\n onmouseout: _getEv,\n onfocus: _getEv,\n onblur: _getEv,\n onkeypress: _getEv,\n onkeydown: _getEv,\n onkeyup: _getEv,\n onsubmit: _getEv,\n onreset: _getEv,\n onselect: _getEv,\n onchange: _getEv\n });\n\n\n Object.extend(methods, {\n identify: identify,\n readAttribute: readAttribute,\n writeAttribute: writeAttribute,\n classNames: classNames,\n hasClassName: hasClassName,\n addClassName: addClassName,\n removeClassName: removeClassName,\n toggleClassName: toggleClassName\n });\n\n\n function normalizeStyleName(style) {\n if (style === 'float' || style === 'styleFloat')\n return 'cssFloat';\n return style.camelize();\n }\n\n function normalizeStyleName_IE(style) {\n if (style === 'float' || style === 'cssFloat')\n return 'styleFloat';\n return style.camelize();\n }\n\n function setStyle(element, styles) {\n element = $(element);\n var elementStyle = element.style, match;\n\n if (Object.isString(styles)) {\n elementStyle.cssText += ';' + styles;\n if (styles.include('opacity')) {\n var opacity = styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1];\n Element.setOpacity(element, opacity);\n }\n return element;\n }\n\n for (var property in styles) {\n if (property === 'opacity') {\n Element.setOpacity(element, styles[property]);\n } else {\n var value = styles[property];\n if (property === 'float' || property === 'cssFloat') {\n property = Object.isUndefined(elementStyle.styleFloat) ?\n 'cssFloat' : 'styleFloat';\n }\n elementStyle[property] = value;\n }\n }\n\n return element;\n }\n\n\n function getStyle(element, style) {\n element = $(element);\n style = normalizeStyleName(style);\n\n var value = element.style[style];\n if (!value || value === 'auto') {\n var css = document.defaultView.getComputedStyle(element, null);\n value = css ? css[style] : null;\n }\n\n if (style === 'opacity') return value ? parseFloat(value) : 1.0;\n return value === 'auto' ? null : value;\n }\n\n function getStyle_Opera(element, style) {\n switch (style) {\n case 'height': case 'width':\n if (!Element.visible(element)) return null;\n\n var dim = parseInt(getStyle(element, style), 10);\n\n if (dim !== element['offset' + style.capitalize()])\n return dim + 'px';\n\n return Element.measure(element, style);\n\n default: return getStyle(element, style);\n }\n }\n\n function getStyle_IE(element, style) {\n element = $(element);\n style = normalizeStyleName_IE(style);\n\n var value = element.style[style];\n if (!value && element.currentStyle) {\n value = element.currentStyle[style];\n }\n\n if (style === 'opacity') {\n if (!STANDARD_CSS_OPACITY_SUPPORTED)\n return getOpacity_IE(element);\n else return value ? parseFloat(value) : 1.0;\n }\n\n if (value === 'auto') {\n if ((style === 'width' || style === 'height') && Element.visible(element))\n return Element.measure(element, style) + 'px';\n return null;\n }\n\n return value;\n }\n\n function stripAlphaFromFilter_IE(filter) {\n return (filter || '').replace(/alpha\\([^\\)]*\\)/gi, '');\n }\n\n function hasLayout_IE(element) {\n if (!element.currentStyle || !element.currentStyle.hasLayout)\n element.style.zoom = 1;\n return element;\n }\n\n var STANDARD_CSS_OPACITY_SUPPORTED = (function() {\n DIV.style.cssText = \"opacity:.55\";\n return /^0.55/.test(DIV.style.opacity);\n })();\n\n function setOpacity(element, value) {\n element = $(element);\n if (value == 1 || value === '') value = '';\n else if (value < 0.00001) value = 0;\n element.style.opacity = value;\n return element;\n }\n\n function setOpacity_IE(element, value) {\n if (STANDARD_CSS_OPACITY_SUPPORTED)\n return setOpacity(element, value);\n\n element = hasLayout_IE($(element));\n var filter = Element.getStyle(element, 'filter'),\n style = element.style;\n\n if (value == 1 || value === '') {\n filter = stripAlphaFromFilter_IE(filter);\n if (filter) style.filter = filter;\n else style.removeAttribute('filter');\n return element;\n }\n\n if (value < 0.00001) value = 0;\n\n style.filter = stripAlphaFromFilter_IE(filter) +\n ' alpha(opacity=' + (value * 100) + ')';\n\n return element;\n }\n\n\n function getOpacity(element) {\n return Element.getStyle(element, 'opacity');\n }\n\n function getOpacity_IE(element) {\n if (STANDARD_CSS_OPACITY_SUPPORTED)\n return getOpacity(element);\n\n var filter = Element.getStyle(element, 'filter');\n if (filter.length === 0) return 1.0;\n var match = (filter || '').match(/alpha\\(opacity=(.*)\\)/i);\n if (match && match[1]) return parseFloat(match[1]) / 100;\n return 1.0;\n }\n\n\n Object.extend(methods, {\n setStyle: setStyle,\n getStyle: getStyle,\n setOpacity: setOpacity,\n getOpacity: getOpacity\n });\n\n if ('styleFloat' in DIV.style) {\n methods.getStyle = getStyle_IE;\n methods.setOpacity = setOpacity_IE;\n methods.getOpacity = getOpacity_IE;\n }\n\n var UID = 0;\n\n GLOBAL.Element.Storage = { UID: 1 };\n\n function getUniqueElementID(element) {\n if (element === window) return 0;\n\n if (typeof element._prototypeUID === 'undefined')\n element._prototypeUID = Element.Storage.UID++;\n return element._prototypeUID;\n }\n\n function getUniqueElementID_IE(element) {\n if (element === window) return 0;\n if (element == document) return 1;\n return element.uniqueID;\n }\n\n var HAS_UNIQUE_ID_PROPERTY = ('uniqueID' in DIV);\n if (HAS_UNIQUE_ID_PROPERTY)\n getUniqueElementID = getUniqueElementID_IE;\n\n function getStorage(element) {\n if (!(element = $(element))) return;\n\n var uid = getUniqueElementID(element);\n\n if (!Element.Storage[uid])\n Element.Storage[uid] = $H();\n\n return Element.Storage[uid];\n }\n\n function store(element, key, value) {\n if (!(element = $(element))) return;\n var storage = getStorage(element);\n if (arguments.length === 2) {\n storage.update(key);\n } else {\n storage.set(key, value);\n }\n return element;\n }\n\n function retrieve(element, key, defaultValue) {\n if (!(element = $(element))) return;\n var storage = getStorage(element), value = storage.get(key);\n\n if (Object.isUndefined(value)) {\n storage.set(key, defaultValue);\n value = defaultValue;\n }\n\n return value;\n }\n\n\n Object.extend(methods, {\n getStorage: getStorage,\n store: store,\n retrieve: retrieve\n });\n\n\n var Methods = {}, ByTag = Element.Methods.ByTag,\n F = Prototype.BrowserFeatures;\n\n if (!F.ElementExtensions && ('__proto__' in DIV)) {\n GLOBAL.HTMLElement = {};\n GLOBAL.HTMLElement.prototype = DIV['__proto__'];\n F.ElementExtensions = true;\n }\n\n function checkElementPrototypeDeficiency(tagName) {\n if (typeof window.Element === 'undefined') return false;\n if (!HAS_EXTENDED_CREATE_ELEMENT_SYNTAX) return false;\n var proto = window.Element.prototype;\n if (proto) {\n var id = '_' + (Math.random() + '').slice(2),\n el = document.createElement(tagName);\n proto[id] = 'x';\n var isBuggy = (el[id] !== 'x');\n delete proto[id];\n el = null;\n return isBuggy;\n }\n\n return false;\n }\n\n var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =\n checkElementPrototypeDeficiency('object');\n\n function extendElementWith(element, methods) {\n for (var property in methods) {\n var value = methods[property];\n if (Object.isFunction(value) && !(property in element))\n element[property] = value.methodize();\n }\n }\n\n var EXTENDED = {};\n function elementIsExtended(element) {\n var uid = getUniqueElementID(element);\n return (uid in EXTENDED);\n }\n\n function extend(element) {\n if (!element || elementIsExtended(element)) return element;\n if (element.nodeType !== Node.ELEMENT_NODE || element == window)\n return element;\n\n var methods = Object.clone(Methods),\n tagName = element.tagName.toUpperCase();\n\n if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);\n\n extendElementWith(element, methods);\n EXTENDED[getUniqueElementID(element)] = true;\n return element;\n }\n\n function extend_IE8(element) {\n if (!element || elementIsExtended(element)) return element;\n\n var t = element.tagName;\n if (t && (/^(?:object|applet|embed)$/i.test(t))) {\n extendElementWith(element, Element.Methods);\n extendElementWith(element, Element.Methods.Simulated);\n extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]);\n }\n\n return element;\n }\n\n if (F.SpecificElementExtensions) {\n extend = HTMLOBJECTELEMENT_PROTOTYPE_BUGGY ? extend_IE8 : Prototype.K;\n }\n\n function addMethodsToTagName(tagName, methods) {\n tagName = tagName.toUpperCase();\n if (!ByTag[tagName]) ByTag[tagName] = {};\n Object.extend(ByTag[tagName], methods);\n }\n\n function mergeMethods(destination, methods, onlyIfAbsent) {\n if (Object.isUndefined(onlyIfAbsent)) onlyIfAbsent = false;\n for (var property in methods) {\n var value = methods[property];\n if (!Object.isFunction(value)) continue;\n if (!onlyIfAbsent || !(property in destination))\n destination[property] = value.methodize();\n }\n }\n\n function findDOMClass(tagName) {\n var klass;\n var trans = {\n \"OPTGROUP\": \"OptGroup\", \"TEXTAREA\": \"TextArea\", \"P\": \"Paragraph\",\n \"FIELDSET\": \"FieldSet\", \"UL\": \"UList\", \"OL\": \"OList\", \"DL\": \"DList\",\n \"DIR\": \"Directory\", \"H1\": \"Heading\", \"H2\": \"Heading\", \"H3\": \"Heading\",\n \"H4\": \"Heading\", \"H5\": \"Heading\", \"H6\": \"Heading\", \"Q\": \"Quote\",\n \"INS\": \"Mod\", \"DEL\": \"Mod\", \"A\": \"Anchor\", \"IMG\": \"Image\", \"CAPTION\":\n \"TableCaption\", \"COL\": \"TableCol\", \"COLGROUP\": \"TableCol\", \"THEAD\":\n \"TableSection\", \"TFOOT\": \"TableSection\", \"TBODY\": \"TableSection\", \"TR\":\n \"TableRow\", \"TH\": \"TableCell\", \"TD\": \"TableCell\", \"FRAMESET\":\n \"FrameSet\", \"IFRAME\": \"IFrame\"\n };\n if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';\n if (window[klass]) return window[klass];\n klass = 'HTML' + tagName + 'Element';\n if (window[klass]) return window[klass];\n klass = 'HTML' + tagName.capitalize() + 'Element';\n if (window[klass]) return window[klass];\n\n var element = document.createElement(tagName),\n proto = element['__proto__'] || element.constructor.prototype;\n\n element = null;\n return proto;\n }\n\n function addMethods(methods) {\n if (arguments.length === 0) addFormMethods();\n\n if (arguments.length === 2) {\n var tagName = methods;\n methods = arguments[1];\n }\n\n if (!tagName) {\n Object.extend(Element.Methods, methods || {});\n } else {\n if (Object.isArray(tagName)) {\n for (var i = 0, tag; tag = tagName[i]; i++)\n addMethodsToTagName(tag, methods);\n } else {\n addMethodsToTagName(tagName, methods);\n }\n }\n\n var ELEMENT_PROTOTYPE = window.HTMLElement ? HTMLElement.prototype :\n Element.prototype;\n\n if (F.ElementExtensions) {\n mergeMethods(ELEMENT_PROTOTYPE, Element.Methods);\n mergeMethods(ELEMENT_PROTOTYPE, Element.Methods.Simulated, true);\n }\n\n if (F.SpecificElementExtensions) {\n for (var tag in Element.Methods.ByTag) {\n var klass = findDOMClass(tag);\n if (Object.isUndefined(klass)) continue;\n mergeMethods(klass.prototype, ByTag[tag]);\n }\n }\n\n Object.extend(Element, Element.Methods);\n Object.extend(Element, Element.Methods.Simulated);\n delete Element.ByTag;\n delete Element.Simulated;\n\n Element.extend.refresh();\n\n ELEMENT_CACHE = {};\n }\n\n Object.extend(GLOBAL.Element, {\n extend: extend,\n addMethods: addMethods\n });\n\n if (extend === Prototype.K) {\n GLOBAL.Element.extend.refresh = Prototype.emptyFunction;\n } else {\n GLOBAL.Element.extend.refresh = function() {\n if (Prototype.BrowserFeatures.ElementExtensions) return;\n Object.extend(Methods, Element.Methods);\n Object.extend(Methods, Element.Methods.Simulated);\n\n EXTENDED = {};\n };\n }\n\n function addFormMethods() {\n Object.extend(Form, Form.Methods);\n Object.extend(Form.Element, Form.Element.Methods);\n Object.extend(Element.Methods.ByTag, {\n \"FORM\": Object.clone(Form.Methods),\n \"INPUT\": Object.clone(Form.Element.Methods),\n \"SELECT\": Object.clone(Form.Element.Methods),\n \"TEXTAREA\": Object.clone(Form.Element.Methods),\n \"BUTTON\": Object.clone(Form.Element.Methods)\n });\n }\n\n Element.addMethods(methods);\n\n function destroyCache_IE() {\n DIV = null;\n ELEMENT_CACHE = null;\n }\n\n if (window.attachEvent)\n window.attachEvent('onunload', destroyCache_IE);\n\n function _escapeXSS(s) {\n if (typeof $.escapeXSS === 'undefined')\n throw new Error('$.escapeXSS must be defined in order to use this version of PrototypeJs.');\n return $.escapeXSS(s);\n }\n\n})(this);\n(function() {\n\n function toDecimal(pctString) {\n var match = pctString.match(/^(\\d+)%?$/i);\n if (!match) return null;\n return (Number(match[1]) / 100);\n }\n\n function getRawStyle(element, style) {\n element = $(element);\n\n var value = element.style[style];\n if (!value || value === 'auto') {\n var css = document.defaultView.getComputedStyle(element, null);\n value = css ? css[style] : null;\n }\n\n if (style === 'opacity') return value ? parseFloat(value) : 1.0;\n return value === 'auto' ? null : value;\n }\n\n function getRawStyle_IE(element, style) {\n var value = element.style[style];\n if (!value && element.currentStyle) {\n value = element.currentStyle[style];\n }\n return value;\n }\n\n function getContentWidth(element, context) {\n var boxWidth = element.offsetWidth;\n\n var bl = getPixelValue(element, 'borderLeftWidth', context) || 0;\n var br = getPixelValue(element, 'borderRightWidth', context) || 0;\n var pl = getPixelValue(element, 'paddingLeft', context) || 0;\n var pr = getPixelValue(element, 'paddingRight', context) || 0;\n\n return boxWidth - bl - br - pl - pr;\n }\n\n if (!Object.isUndefined(document.documentElement.currentStyle) && !Prototype.Browser.Opera) {\n getRawStyle = getRawStyle_IE;\n }\n\n\n function getPixelValue(value, property, context) {\n var element = null;\n if (Object.isElement(value)) {\n element = value;\n value = getRawStyle(element, property);\n }\n\n if (value === null || Object.isUndefined(value)) {\n return null;\n }\n\n if ((/^(?:-)?\\d+(\\.\\d+)?(px)?$/i).test(value)) {\n return window.parseFloat(value);\n }\n\n var isPercentage = value.include('%'), isViewport = (context === document.viewport);\n\n if (/\\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) {\n var style = element.style.left, rStyle = element.runtimeStyle.left;\n element.runtimeStyle.left = element.currentStyle.left;\n element.style.left = value || 0;\n value = element.style.pixelLeft;\n element.style.left = style;\n element.runtimeStyle.left = rStyle;\n\n return value;\n }\n\n if (element && isPercentage) {\n context = context || element.parentNode;\n var decimal = toDecimal(value), whole = null;\n\n var isHorizontal = property.include('left') || property.include('right') ||\n property.include('width');\n\n var isVertical = property.include('top') || property.include('bottom') ||\n property.include('height');\n\n if (context === document.viewport) {\n if (isHorizontal) {\n whole = document.viewport.getWidth();\n } else if (isVertical) {\n whole = document.viewport.getHeight();\n }\n } else {\n if (isHorizontal) {\n whole = $(context).measure('width');\n } else if (isVertical) {\n whole = $(context).measure('height');\n }\n }\n\n return (whole === null) ? 0 : whole * decimal;\n }\n\n return 0;\n }\n\n function toCSSPixels(number) {\n if (Object.isString(number) && number.endsWith('px'))\n return number;\n return number + 'px';\n }\n\n function isDisplayed(element) {\n while (element && element.parentNode) {\n var display = element.getStyle('display');\n if (display === 'none') {\n return false;\n }\n element = $(element.parentNode);\n }\n return true;\n }\n\n var hasLayout = Prototype.K;\n if ('currentStyle' in document.documentElement) {\n hasLayout = function(element) {\n if (!element.currentStyle.hasLayout) {\n element.style.zoom = 1;\n }\n return element;\n };\n }\n\n function cssNameFor(key) {\n if (key.include('border')) key = key + '-width';\n return key.camelize();\n }\n\n Element.Layout = Class.create(Hash, {\n initialize: function($super, element, preCompute) {\n $super();\n this.element = $(element);\n\n Element.Layout.PROPERTIES.each( function(property) {\n this._set(property, null);\n }, this);\n\n if (preCompute) {\n this._preComputing = true;\n this._begin();\n Element.Layout.PROPERTIES.each( this._compute, this );\n this._end();\n this._preComputing = false;\n }\n },\n\n _set: function(property, value) {\n return Hash.prototype.set.call(this, property, value);\n },\n\n set: function(property, value) {\n throw \"Properties of Element.Layout are read-only.\";\n },\n\n get: function($super, property) {\n var value = $super(property);\n return value === null ? this._compute(property) : value;\n },\n\n _begin: function() {\n if (this._isPrepared()) return;\n\n var element = this.element;\n if (isDisplayed(element)) {\n this._setPrepared(true);\n return;\n }\n\n\n var originalStyles = {\n position: element.style.position || '',\n width: element.style.width || '',\n visibility: element.style.visibility || '',\n display: element.style.display || ''\n };\n\n element.store('prototype_original_styles', originalStyles);\n\n var position = getRawStyle(element, 'position'), width = element.offsetWidth;\n\n if (width === 0 || width === null) {\n element.style.display = 'block';\n width = element.offsetWidth;\n }\n\n var context = (position === 'fixed') ? document.viewport :\n element.parentNode;\n\n var tempStyles = {\n visibility: 'hidden',\n display: 'block'\n };\n\n if (position !== 'fixed') tempStyles.position = 'absolute';\n\n element.setStyle(tempStyles);\n\n var positionedWidth = element.offsetWidth, newWidth;\n if (width && (positionedWidth === width)) {\n newWidth = getContentWidth(element, context);\n } else if (position === 'absolute' || position === 'fixed') {\n newWidth = getContentWidth(element, context);\n } else {\n var parent = element.parentNode, pLayout = $(parent).getLayout();\n\n newWidth = pLayout.get('width') -\n this.get('margin-left') -\n this.get('border-left') -\n this.get('padding-left') -\n this.get('padding-right') -\n this.get('border-right') -\n this.get('margin-right');\n }\n\n element.setStyle({ width: newWidth + 'px' });\n\n this._setPrepared(true);\n },\n\n _end: function() {\n var element = this.element;\n var originalStyles = element.retrieve('prototype_original_styles');\n element.store('prototype_original_styles', null);\n element.setStyle(originalStyles);\n this._setPrepared(false);\n },\n\n _compute: function(property) {\n var COMPUTATIONS = Element.Layout.COMPUTATIONS;\n if (!(property in COMPUTATIONS)) {\n throw \"Property not found.\";\n }\n\n return this._set(property, COMPUTATIONS[property].call(this, this.element));\n },\n\n _isPrepared: function() {\n return this.element.retrieve('prototype_element_layout_prepared', false);\n },\n\n _setPrepared: function(bool) {\n return this.element.store('prototype_element_layout_prepared', bool);\n },\n\n toObject: function() {\n var args = $A(arguments);\n var keys = (args.length === 0) ? Element.Layout.PROPERTIES :\n args.join(' ').split(' ');\n var obj = {};\n keys.each( function(key) {\n if (!Element.Layout.PROPERTIES.include(key)) return;\n var value = this.get(key);\n if (value != null) obj[key] = value;\n }, this);\n return obj;\n },\n\n toHash: function() {\n var obj = this.toObject.apply(this, arguments);\n return new Hash(obj);\n },\n\n toCSS: function() {\n var args = $A(arguments);\n var keys = (args.length === 0) ? Element.Layout.PROPERTIES :\n args.join(' ').split(' ');\n var css = {};\n\n keys.each( function(key) {\n if (!Element.Layout.PROPERTIES.include(key)) return;\n if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return;\n\n var value = this.get(key);\n if (value != null) css[cssNameFor(key)] = value + 'px';\n }, this);\n return css;\n },\n\n inspect: function() {\n return \"#\";\n }\n });\n\n Object.extend(Element.Layout, {\n PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'),\n\n COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'),\n\n COMPUTATIONS: {\n 'height': function(element) {\n if (!this._preComputing) this._begin();\n\n var bHeight = this.get('border-box-height');\n if (bHeight <= 0) {\n if (!this._preComputing) this._end();\n return 0;\n }\n\n var bTop = this.get('border-top'),\n bBottom = this.get('border-bottom');\n\n var pTop = this.get('padding-top'),\n pBottom = this.get('padding-bottom');\n\n if (!this._preComputing) this._end();\n\n return bHeight - bTop - bBottom - pTop - pBottom;\n },\n\n 'width': function(element) {\n if (!this._preComputing) this._begin();\n\n var bWidth = this.get('border-box-width');\n if (bWidth <= 0) {\n if (!this._preComputing) this._end();\n return 0;\n }\n\n var bLeft = this.get('border-left'),\n bRight = this.get('border-right');\n\n var pLeft = this.get('padding-left'),\n pRight = this.get('padding-right');\n\n if (!this._preComputing) this._end();\n return bWidth - bLeft - bRight - pLeft - pRight;\n },\n\n 'padding-box-height': function(element) {\n var height = this.get('height'),\n pTop = this.get('padding-top'),\n pBottom = this.get('padding-bottom');\n\n return height + pTop + pBottom;\n },\n\n 'padding-box-width': function(element) {\n var width = this.get('width'),\n pLeft = this.get('padding-left'),\n pRight = this.get('padding-right');\n\n return width + pLeft + pRight;\n },\n\n 'border-box-height': function(element) {\n if (!this._preComputing) this._begin();\n var height = element.offsetHeight;\n if (!this._preComputing) this._end();\n return height;\n },\n\n 'border-box-width': function(element) {\n if (!this._preComputing) this._begin();\n var width = element.offsetWidth;\n if (!this._preComputing) this._end();\n return width;\n },\n\n 'margin-box-height': function(element) {\n var bHeight = this.get('border-box-height'),\n mTop = this.get('margin-top'),\n mBottom = this.get('margin-bottom');\n\n if (bHeight <= 0) return 0;\n\n return bHeight + mTop + mBottom;\n },\n\n 'margin-box-width': function(element) {\n var bWidth = this.get('border-box-width'),\n mLeft = this.get('margin-left'),\n mRight = this.get('margin-right');\n\n if (bWidth <= 0) return 0;\n\n return bWidth + mLeft + mRight;\n },\n\n 'top': function(element) {\n var offset = element.positionedOffset();\n return offset.top;\n },\n\n 'bottom': function(element) {\n var offset = element.positionedOffset(),\n parent = element.getOffsetParent(),\n pHeight = parent.measure('height');\n\n var mHeight = this.get('border-box-height');\n\n return pHeight - mHeight - offset.top;\n },\n\n 'left': function(element) {\n var offset = element.positionedOffset();\n return offset.left;\n },\n\n 'right': function(element) {\n var offset = element.positionedOffset(),\n parent = element.getOffsetParent(),\n pWidth = parent.measure('width');\n\n var mWidth = this.get('border-box-width');\n\n return pWidth - mWidth - offset.left;\n },\n\n 'padding-top': function(element) {\n return getPixelValue(element, 'paddingTop');\n },\n\n 'padding-bottom': function(element) {\n return getPixelValue(element, 'paddingBottom');\n },\n\n 'padding-left': function(element) {\n return getPixelValue(element, 'paddingLeft');\n },\n\n 'padding-right': function(element) {\n return getPixelValue(element, 'paddingRight');\n },\n\n 'border-top': function(element) {\n return getPixelValue(element, 'borderTopWidth');\n },\n\n 'border-bottom': function(element) {\n return getPixelValue(element, 'borderBottomWidth');\n },\n\n 'border-left': function(element) {\n return getPixelValue(element, 'borderLeftWidth');\n },\n\n 'border-right': function(element) {\n return getPixelValue(element, 'borderRightWidth');\n },\n\n 'margin-top': function(element) {\n return getPixelValue(element, 'marginTop');\n },\n\n 'margin-bottom': function(element) {\n return getPixelValue(element, 'marginBottom');\n },\n\n 'margin-left': function(element) {\n return getPixelValue(element, 'marginLeft');\n },\n\n 'margin-right': function(element) {\n return getPixelValue(element, 'marginRight');\n }\n }\n });\n\n if ('getBoundingClientRect' in document.documentElement) {\n Object.extend(Element.Layout.COMPUTATIONS, {\n 'right': function(element) {\n var parent = hasLayout(element.getOffsetParent());\n var rect = element.getBoundingClientRect(),\n pRect = parent.getBoundingClientRect();\n\n return (pRect.right - rect.right).round();\n },\n\n 'bottom': function(element) {\n var parent = hasLayout(element.getOffsetParent());\n var rect = element.getBoundingClientRect(),\n pRect = parent.getBoundingClientRect();\n\n return (pRect.bottom - rect.bottom).round();\n }\n });\n }\n\n Element.Offset = Class.create({\n initialize: function(left, top) {\n this.left = left.round();\n this.top = top.round();\n\n this[0] = this.left;\n this[1] = this.top;\n },\n\n relativeTo: function(offset) {\n return new Element.Offset(\n this.left - offset.left,\n this.top - offset.top\n );\n },\n\n inspect: function() {\n return \"#\".interpolate(this);\n },\n\n toString: function() {\n return \"[#{left}, #{top}]\".interpolate(this);\n },\n\n toArray: function() {\n return [this.left, this.top];\n }\n });\n\n function getLayout(element, preCompute) {\n return new Element.Layout(element, preCompute);\n }\n\n function measure(element, property) {\n return $(element).getLayout().get(property);\n }\n\n function getHeight(element) {\n return Element.getDimensions(element).height;\n }\n\n function getWidth(element) {\n return Element.getDimensions(element).width;\n }\n\n function getDimensions(element) {\n element = $(element);\n var display = Element.getStyle(element, 'display');\n\n if (display && display !== 'none') {\n return { width: element.offsetWidth, height: element.offsetHeight };\n }\n\n var style = element.style;\n var originalStyles = {\n visibility: style.visibility,\n position: style.position,\n display: style.display\n };\n\n var newStyles = {\n visibility: 'hidden',\n display: 'block'\n };\n\n if (originalStyles.position !== 'fixed')\n newStyles.position = 'absolute';\n\n Element.setStyle(element, newStyles);\n\n var dimensions = {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n\n Element.setStyle(element, originalStyles);\n\n return dimensions;\n }\n\n function getOffsetParent(element) {\n element = $(element);\n\n function selfOrBody(element) {\n return isHtml(element) ? $(document.body) : $(element);\n }\n\n if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))\n return $(document.body);\n\n var isInline = (Element.getStyle(element, 'display') === 'inline');\n if (!isInline && element.offsetParent) return selfOrBody(element.offsetParent);\n\n while ((element = element.parentNode) && element !== document.body) {\n if (Element.getStyle(element, 'position') !== 'static') {\n return selfOrBody(element);\n }\n }\n\n return $(document.body);\n }\n\n\n function cumulativeOffset(element) {\n element = $(element);\n var valueT = 0, valueL = 0;\n if (element.parentNode) {\n do {\n valueT += element.offsetTop || 0;\n valueL += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n }\n return new Element.Offset(valueL, valueT);\n }\n\n function positionedOffset(element) {\n element = $(element);\n\n var layout = element.getLayout();\n\n var valueT = 0, valueL = 0;\n do {\n valueT += element.offsetTop || 0;\n valueL += element.offsetLeft || 0;\n element = element.offsetParent;\n if (element) {\n if (isBody(element)) break;\n var p = Element.getStyle(element, 'position');\n if (p !== 'static') break;\n }\n } while (element);\n\n valueL -= layout.get('margin-left');\n valueT -= layout.get('margin-top');\n\n return new Element.Offset(valueL, valueT);\n }\n\n function cumulativeScrollOffset(element) {\n var valueT = 0, valueL = 0;\n do {\n if (element === document.body) {\n var bodyScrollNode = document.documentElement || document.body.parentNode || document.body;\n valueT += !Object.isUndefined(window.pageYOffset) ? window.pageYOffset : bodyScrollNode.scrollTop || 0;\n valueL += !Object.isUndefined(window.pageXOffset) ? window.pageXOffset : bodyScrollNode.scrollLeft || 0;\n break;\n } else {\n valueT += element.scrollTop || 0;\n valueL += element.scrollLeft || 0;\n element = element.parentNode;\n }\n } while (element);\n return new Element.Offset(valueL, valueT);\n }\n\n function viewportOffset(forElement) {\n var valueT = 0, valueL = 0, docBody = document.body;\n\n forElement = $(forElement);\n var element = forElement;\n do {\n valueT += element.offsetTop || 0;\n valueL += element.offsetLeft || 0;\n if (element.offsetParent == docBody &&\n Element.getStyle(element, 'position') == 'absolute') break;\n } while (element = element.offsetParent);\n\n element = forElement;\n do {\n if (element != docBody) {\n valueT -= element.scrollTop || 0;\n valueL -= element.scrollLeft || 0;\n }\n } while (element = element.parentNode);\n return new Element.Offset(valueL, valueT);\n }\n\n function absolutize(element) {\n element = $(element);\n\n if (Element.getStyle(element, 'position') === 'absolute') {\n return element;\n }\n\n var offsetParent = getOffsetParent(element);\n var eOffset = element.viewportOffset(),\n pOffset = offsetParent.viewportOffset();\n\n var offset = eOffset.relativeTo(pOffset);\n var layout = element.getLayout();\n\n element.store('prototype_absolutize_original_styles', {\n position: element.getStyle('position'),\n left: element.getStyle('left'),\n top: element.getStyle('top'),\n width: element.getStyle('width'),\n height: element.getStyle('height')\n });\n\n element.setStyle({\n position: 'absolute',\n top: offset.top + 'px',\n left: offset.left + 'px',\n width: layout.get('width') + 'px',\n height: layout.get('height') + 'px'\n });\n\n return element;\n }\n\n function relativize(element) {\n element = $(element);\n if (Element.getStyle(element, 'position') === 'relative') {\n return element;\n }\n\n var originalStyles =\n element.retrieve('prototype_absolutize_original_styles');\n\n if (originalStyles) element.setStyle(originalStyles);\n return element;\n }\n\n\n function scrollTo(element) {\n element = $(element);\n var pos = Element.cumulativeOffset(element);\n window.scrollTo(pos.left, pos.top);\n return element;\n }\n\n\n function makePositioned(element) {\n element = $(element);\n var position = Element.getStyle(element, 'position'), styles = {};\n if (position === 'static' || !position) {\n styles.position = 'relative';\n if (Prototype.Browser.Opera) {\n styles.top = 0;\n styles.left = 0;\n }\n Element.setStyle(element, styles);\n Element.store(element, 'prototype_made_positioned', true);\n }\n return element;\n }\n\n function undoPositioned(element) {\n element = $(element);\n var storage = Element.getStorage(element),\n madePositioned = storage.get('prototype_made_positioned');\n\n if (madePositioned) {\n storage.unset('prototype_made_positioned');\n Element.setStyle(element, {\n position: '',\n top: '',\n bottom: '',\n left: '',\n right: ''\n });\n }\n return element;\n }\n\n function makeClipping(element) {\n element = $(element);\n\n var storage = Element.getStorage(element),\n madeClipping = storage.get('prototype_made_clipping');\n\n if (Object.isUndefined(madeClipping)) {\n var overflow = Element.getStyle(element, 'overflow');\n storage.set('prototype_made_clipping', overflow);\n if (overflow !== 'hidden')\n element.style.overflow = 'hidden';\n }\n\n return element;\n }\n\n function undoClipping(element) {\n element = $(element);\n var storage = Element.getStorage(element),\n overflow = storage.get('prototype_made_clipping');\n\n if (!Object.isUndefined(overflow)) {\n storage.unset('prototype_made_clipping');\n element.style.overflow = overflow || '';\n }\n\n return element;\n }\n\n function clonePosition(element, source, options) {\n options = Object.extend({\n setLeft: true,\n setTop: true,\n setWidth: true,\n setHeight: true,\n offsetTop: 0,\n offsetLeft: 0\n }, options || {});\n\n var docEl = document.documentElement;\n\n source = $(source);\n element = $(element);\n var p, delta, layout, styles = {};\n\n if (options.setLeft || options.setTop) {\n p = Element.viewportOffset(source);\n delta = [0, 0];\n if (Element.getStyle(element, 'position') === 'absolute') {\n var parent = Element.getOffsetParent(element);\n if (parent !== document.body) delta = Element.viewportOffset(parent);\n }\n }\n\n function pageScrollXY() {\n var x = 0, y = 0;\n if (Object.isNumber(window.pageXOffset)) {\n x = window.pageXOffset;\n y = window.pageYOffset;\n } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {\n x = document.body.scrollLeft;\n y = document.body.scrollTop;\n } else if (docEl && (docEl.scrollLeft || docEl.scrollTop)) {\n x = docEl.scrollLeft;\n y = docEl.scrollTop;\n }\n return { x: x, y: y };\n }\n\n var pageXY = pageScrollXY();\n\n\n if (options.setWidth || options.setHeight) {\n layout = Element.getLayout(source);\n }\n\n if (options.setLeft)\n styles.left = (p[0] + pageXY.x - delta[0] + options.offsetLeft) + 'px';\n if (options.setTop)\n styles.top = (p[1] + pageXY.y - delta[1] + options.offsetTop) + 'px';\n\n var currentLayout = element.getLayout();\n\n if (options.setWidth) {\n styles.width = layout.get('width') + 'px';\n }\n if (options.setHeight) {\n styles.height = layout.get('height') + 'px';\n }\n\n return Element.setStyle(element, styles);\n }\n\n\n if (Prototype.Browser.IE) {\n getOffsetParent = getOffsetParent.wrap(\n function(proceed, element) {\n element = $(element);\n\n if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))\n return $(document.body);\n\n var position = element.getStyle('position');\n if (position !== 'static') return proceed(element);\n\n element.setStyle({ position: 'relative' });\n var value = proceed(element);\n element.setStyle({ position: position });\n return value;\n }\n );\n\n positionedOffset = positionedOffset.wrap(function(proceed, element) {\n element = $(element);\n if (!element.parentNode) return new Element.Offset(0, 0);\n var position = element.getStyle('position');\n if (position !== 'static') return proceed(element);\n\n var offsetParent = element.getOffsetParent();\n if (offsetParent && offsetParent.getStyle('position') === 'fixed')\n hasLayout(offsetParent);\n\n element.setStyle({ position: 'relative' });\n var value = proceed(element);\n element.setStyle({ position: position });\n return value;\n });\n } else if (Prototype.Browser.Webkit) {\n cumulativeOffset = function(element) {\n element = $(element);\n var valueT = 0, valueL = 0;\n do {\n valueT += element.offsetTop || 0;\n valueL += element.offsetLeft || 0;\n if (element.offsetParent == document.body) {\n if (Element.getStyle(element, 'position') == 'absolute') break;\n }\n\n element = element.offsetParent;\n } while (element);\n\n return new Element.Offset(valueL, valueT);\n };\n }\n\n\n Element.addMethods({\n getLayout: getLayout,\n measure: measure,\n getWidth: getWidth,\n getHeight: getHeight,\n getDimensions: getDimensions,\n getOffsetParent: getOffsetParent,\n cumulativeOffset: cumulativeOffset,\n positionedOffset: positionedOffset,\n cumulativeScrollOffset: cumulativeScrollOffset,\n viewportOffset: viewportOffset,\n absolutize: absolutize,\n relativize: relativize,\n scrollTo: scrollTo,\n makePositioned: makePositioned,\n undoPositioned: undoPositioned,\n makeClipping: makeClipping,\n undoClipping: undoClipping,\n clonePosition: clonePosition\n });\n\n function isBody(element) {\n return element.nodeName.toUpperCase() === 'BODY';\n }\n\n function isHtml(element) {\n return element.nodeName.toUpperCase() === 'HTML';\n }\n\n function isDocument(element) {\n return element.nodeType === Node.DOCUMENT_NODE;\n }\n\n function isDetached(element) {\n return element !== document.body &&\n !Element.descendantOf(element, document.body);\n }\n\n if ('getBoundingClientRect' in document.documentElement) {\n Element.addMethods({\n viewportOffset: function(element) {\n element = $(element);\n if (isDetached(element)) return new Element.Offset(0, 0);\n\n var rect = element.getBoundingClientRect(),\n docEl = document.documentElement;\n return new Element.Offset(rect.left - docEl.clientLeft,\n rect.top - docEl.clientTop);\n }\n });\n }\n\n\n})();\n\n(function() {\n\n var IS_OLD_OPERA = Prototype.Browser.Opera &&\n (window.parseFloat(window.opera.version()) < 9.5);\n var ROOT = null;\n function getRootElement() {\n if (ROOT) return ROOT;\n ROOT = IS_OLD_OPERA ? document.body : document.documentElement;\n return ROOT;\n }\n\n function getDimensions() {\n return { width: this.getWidth(), height: this.getHeight() };\n }\n\n function getWidth() {\n return getRootElement().clientWidth;\n }\n\n function getHeight() {\n return getRootElement().clientHeight;\n }\n\n function getScrollOffsets() {\n var x = window.pageXOffset || document.documentElement.scrollLeft ||\n document.body.scrollLeft;\n var y = window.pageYOffset || document.documentElement.scrollTop ||\n document.body.scrollTop;\n\n return new Element.Offset(x, y);\n }\n\n document.viewport = {\n getDimensions: getDimensions,\n getWidth: getWidth,\n getHeight: getHeight,\n getScrollOffsets: getScrollOffsets\n };\n\n})();\nwindow.$$ = function() {\n var expression = $A(arguments).join(', ');\n return Prototype.Selector.select(expression, document);\n};\n\nPrototype.Selector = (function() {\n\n function select() {\n throw new Error('Method \"Prototype.Selector.select\" must be defined.');\n }\n\n function match() {\n throw new Error('Method \"Prototype.Selector.match\" must be defined.');\n }\n\n function find(elements, expression, index) {\n index = index || 0;\n var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i;\n\n for (i = 0; i < length; i++) {\n if (match(elements[i], expression) && index == matchIndex++) {\n return Element.extend(elements[i]);\n }\n }\n }\n\n function extendElements(elements) {\n for (var i = 0, length = elements.length; i < length; i++) {\n Element.extend(elements[i]);\n }\n return elements;\n }\n\n\n var K = Prototype.K;\n\n return {\n select: select,\n match: match,\n find: find,\n extendElements: (Element.extend === K) ? K : extendElements,\n extendElement: Element.extend\n };\n})();\nPrototype._original_property = window.Sizzle;\n\n;(function () {\n function fakeDefine(fn) {\n Prototype._actual_sizzle = fn();\n }\n fakeDefine.amd = true;\n\n if (typeof define !== 'undefined' && define.amd) {\n Prototype._original_define = define;\n Prototype._actual_sizzle = null;\n window.define = fakeDefine;\n }\n})();\n\n/*!\n * Sizzle CSS Selector Engine v1.10.18\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-02-05\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:([*^$|!~]?=)\" + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes.replace( 3, 8 ) + \")*)|.*)\\\\)|)\",\n\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== strundefined && context;\n}\n\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.defaultView;\n\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\tdocumentIsHTML = !isXML( doc );\n\n\tif ( parent && parent !== parent.top ) {\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", function() {\n\t\t\t\tsetDocument();\n\t\t\t}, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", function() {\n\t\t\t\tsetDocument();\n\t\t\t});\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {\n\t\tdiv.innerHTML = \"
\";\n\n\t\tdiv.firstChild.className = \"i\";\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\n\trbuggyMatches = [];\n\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\tassert(function( div ) {\n\t\t\tdiv.innerHTML = \"\";\n\n\t\t\tif ( div.querySelectorAll(\"[t^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t1;\n\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch(e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [elem] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[5] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] && match[4] !== undefined ) {\n\t\t\t\tmatch[2] = match[4];\n\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t[] :\n\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\tif ( match.length === 1 ) {\n\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\nsupport.detectDuplicates = !!hasDuplicate;\n\nsetDocument();\n\nsupport.sortDetached = assert(function( div1 ) {\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine(function() { return Sizzle; });\n} else if ( typeof module !== \"undefined\" && module.exports ) {\n\tmodule.exports = Sizzle;\n} else {\n\twindow.Sizzle = Sizzle;\n}\n\n})( window );\n\n;(function() {\n if (typeof Sizzle !== 'undefined') {\n return;\n }\n\n if (typeof define !== 'undefined' && define.amd) {\n window.Sizzle = Prototype._actual_sizzle;\n window.define = Prototype._original_define;\n delete Prototype._actual_sizzle;\n delete Prototype._original_define;\n } else if (typeof module !== 'undefined' && module.exports) {\n window.Sizzle = module.exports;\n module.exports = {};\n }\n})();\n\n;(function(engine) {\n var extendElements = Prototype.Selector.extendElements;\n\n function select(selector, scope) {\n return extendElements(engine(selector, scope || document));\n }\n\n function match(element, selector) {\n return engine.matches(selector, [element]).length == 1;\n }\n\n Prototype.Selector.engine = engine;\n Prototype.Selector.select = select;\n Prototype.Selector.match = match;\n})(Sizzle);\n\nwindow.Sizzle = Prototype._original_property;\ndelete Prototype._original_property;\n\nvar Form = {\n reset: function(form) {\n form = $(form);\n form.reset();\n return form;\n },\n\n serializeElements: function(elements, options) {\n if (typeof options != 'object') options = { hash: !!options };\n else if (Object.isUndefined(options.hash)) options.hash = true;\n var key, value, submitted = false, submit = options.submit, accumulator, initial;\n\n if (options.hash) {\n initial = {};\n accumulator = function(result, key, value) {\n if (key in result) {\n if (!Object.isArray(result[key])) result[key] = [result[key]];\n result[key] = result[key].concat(value);\n } else result[key] = value;\n return result;\n };\n } else {\n initial = '';\n accumulator = function(result, key, values) {\n if (!Object.isArray(values)) {values = [values];}\n if (!values.length) {return result;}\n var encodedKey = encodeURIComponent(key).gsub(/%20/, '+');\n return result + (result ? \"&\" : \"\") + values.map(function (value) {\n value = value.gsub(/(\\r)?\\n/, '\\r\\n');\n value = encodeURIComponent(value);\n value = value.gsub(/%20/, '+');\n return encodedKey + \"=\" + value;\n }).join(\"&\");\n };\n }\n\n return elements.inject(initial, function(result, element) {\n if (!element.disabled && element.name) {\n key = element.name; value = $(element).getValue();\n if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&\n submit !== false && (!submit || key == submit) && (submitted = true)))) {\n result = accumulator(result, key, value);\n }\n }\n return result;\n });\n }\n};\n\nForm.Methods = {\n serialize: function(form, options) {\n return Form.serializeElements(Form.getElements(form), options);\n },\n\n\n getElements: function(form) {\n var elements = $(form).getElementsByTagName('*');\n var element, results = [], serializers = Form.Element.Serializers;\n\n for (var i = 0; element = elements[i]; i++) {\n if (serializers[element.tagName.toLowerCase()])\n results.push(Element.extend(element));\n }\n return results;\n },\n\n getInputs: function(form, typeName, name) {\n form = $(form);\n var inputs = form.getElementsByTagName('input');\n\n if (!typeName && !name) return $A(inputs).map(Element.extend);\n\n for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {\n var input = inputs[i];\n if ((typeName && input.type != typeName) || (name && input.name != name))\n continue;\n matchingInputs.push(Element.extend(input));\n }\n\n return matchingInputs;\n },\n\n disable: function(form) {\n form = $(form);\n Form.getElements(form).invoke('disable');\n return form;\n },\n\n enable: function(form) {\n form = $(form);\n Form.getElements(form).invoke('enable');\n return form;\n },\n\n findFirstElement: function(form) {\n var elements = $(form).getElements().findAll(function(element) {\n return 'hidden' != element.type && !element.disabled;\n });\n var firstByIndex = elements.findAll(function(element) {\n return element.hasAttribute('tabIndex') && element.tabIndex >= 0;\n }).sortBy(function(element) { return element.tabIndex }).first();\n\n return firstByIndex ? firstByIndex : elements.find(function(element) {\n return /^(?:input|select|textarea)$/i.test(element.tagName);\n });\n },\n\n focusFirstElement: function(form) {\n form = $(form);\n var element = form.findFirstElement();\n if (element) element.activate();\n return form;\n },\n\n request: function(form, options) {\n form = $(form), options = Object.clone(options || { });\n\n var params = options.parameters, action = form.readAttribute('action') || '';\n if (action.blank()) action = window.location.href;\n options.parameters = form.serialize(true);\n\n if (params) {\n if (Object.isString(params)) params = params.toQueryParams();\n Object.extend(options.parameters, params);\n }\n\n if (form.hasAttribute('method') && !options.method)\n options.method = form.method;\n\n return new Ajax.Request(action, options);\n }\n};\n\n/*--------------------------------------------------------------------------*/\n\n\nForm.Element = {\n focus: function(element) {\n $(element).focus();\n return element;\n },\n\n select: function(element) {\n $(element).select();\n return element;\n }\n};\n\nForm.Element.Methods = {\n\n serialize: function(element) {\n element = $(element);\n if (!element.disabled && element.name) {\n var value = element.getValue();\n if (value != undefined) {\n var pair = { };\n pair[element.name] = value;\n return Object.toQueryString(pair);\n }\n }\n return '';\n },\n\n getValue: function(element) {\n element = $(element);\n var method = element.tagName.toLowerCase();\n return Form.Element.Serializers[method](element);\n },\n\n setValue: function(element, value) {\n element = $(element);\n var method = element.tagName.toLowerCase();\n Form.Element.Serializers[method](element, value);\n return element;\n },\n\n clear: function(element) {\n $(element).value = '';\n return element;\n },\n\n present: function(element) {\n return $(element).value != '';\n },\n\n activate: function(element) {\n element = $(element);\n try {\n element.focus();\n if (element.select && (element.tagName.toLowerCase() != 'input' ||\n !(/^(?:button|reset|submit)$/i.test(element.type))))\n element.select();\n } catch (e) { }\n return element;\n },\n\n disable: function(element) {\n element = $(element);\n element.disabled = true;\n return element;\n },\n\n enable: function(element) {\n element = $(element);\n element.disabled = false;\n return element;\n }\n};\n\n/*--------------------------------------------------------------------------*/\n\nvar Field = Form.Element;\n\nvar $F = Form.Element.Methods.getValue;\n\n/*--------------------------------------------------------------------------*/\n\nForm.Element.Serializers = (function() {\n function input(element, value) {\n switch (element.type.toLowerCase()) {\n case 'checkbox':\n case 'radio':\n return inputSelector(element, value);\n default:\n return valueSelector(element, value);\n }\n }\n\n function inputSelector(element, value) {\n if (Object.isUndefined(value))\n return element.checked ? element.value : null;\n else element.checked = !!value;\n }\n\n function valueSelector(element, value) {\n if (Object.isUndefined(value)) return element.value;\n else element.value = value;\n }\n\n function select(element, value) {\n if (Object.isUndefined(value))\n return (element.type === 'select-one' ? selectOne : selectMany)(element);\n\n var opt, currentValue, single = !Object.isArray(value);\n for (var i = 0, length = element.length; i < length; i++) {\n opt = element.options[i];\n currentValue = this.optionValue(opt);\n if (single) {\n if (currentValue == value) {\n opt.selected = true;\n return;\n }\n }\n else opt.selected = value.include(currentValue);\n }\n }\n\n function selectOne(element) {\n var index = element.selectedIndex;\n return index >= 0 ? optionValue(element.options[index]) : null;\n }\n\n function selectMany(element) {\n var values, length = element.length;\n if (!length) return null;\n\n for (var i = 0, values = []; i < length; i++) {\n var opt = element.options[i];\n if (opt.selected) values.push(optionValue(opt));\n }\n return values;\n }\n\n function optionValue(opt) {\n return Element.hasAttribute(opt, 'value') ? opt.value : opt.text;\n }\n\n return {\n input: input,\n inputSelector: inputSelector,\n textarea: valueSelector,\n select: select,\n selectOne: selectOne,\n selectMany: selectMany,\n optionValue: optionValue,\n button: valueSelector\n };\n})();\n\n/*--------------------------------------------------------------------------*/\n\n\nAbstract.TimedObserver = Class.create(PeriodicalExecuter, {\n initialize: function($super, element, frequency, callback) {\n $super(callback, frequency);\n this.element = $(element);\n this.lastValue = this.getValue();\n },\n\n execute: function() {\n var value = this.getValue();\n if (Object.isString(this.lastValue) && Object.isString(value) ?\n this.lastValue != value : String(this.lastValue) != String(value)) {\n this.callback(this.element, value);\n this.lastValue = value;\n }\n }\n});\n\nForm.Element.Observer = Class.create(Abstract.TimedObserver, {\n getValue: function() {\n return Form.Element.getValue(this.element);\n }\n});\n\nForm.Observer = Class.create(Abstract.TimedObserver, {\n getValue: function() {\n return Form.serialize(this.element);\n }\n});\n\n/*--------------------------------------------------------------------------*/\n\nAbstract.EventObserver = Class.create({\n initialize: function(element, callback) {\n this.element = $(element);\n this.callback = callback;\n\n this.lastValue = this.getValue();\n if (this.element.tagName.toLowerCase() == 'form')\n this.registerFormCallbacks();\n else\n this.registerCallback(this.element);\n },\n\n onElementEvent: function() {\n var value = this.getValue();\n if (this.lastValue != value) {\n this.callback(this.element, value);\n this.lastValue = value;\n }\n },\n\n registerFormCallbacks: function() {\n Form.getElements(this.element).each(this.registerCallback, this);\n },\n\n registerCallback: function(element) {\n if (element.type) {\n switch (element.type.toLowerCase()) {\n case 'checkbox':\n case 'radio':\n Event.observe(element, 'click', this.onElementEvent.bind(this));\n break;\n default:\n Event.observe(element, 'change', this.onElementEvent.bind(this));\n break;\n }\n }\n }\n});\n\nForm.Element.EventObserver = Class.create(Abstract.EventObserver, {\n getValue: function() {\n return Form.Element.getValue(this.element);\n }\n});\n\nForm.EventObserver = Class.create(Abstract.EventObserver, {\n getValue: function() {\n return Form.serialize(this.element);\n }\n});\n(function(GLOBAL) {\n var DIV = document.createElement('div');\n var docEl = document.documentElement;\n var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl\n && 'onmouseleave' in docEl;\n\n var Event = {\n KEY_BACKSPACE: 8,\n KEY_TAB: 9,\n KEY_RETURN: 13,\n KEY_ESC: 27,\n KEY_LEFT: 37,\n KEY_UP: 38,\n KEY_RIGHT: 39,\n KEY_DOWN: 40,\n KEY_DELETE: 46,\n KEY_HOME: 36,\n KEY_END: 35,\n KEY_PAGEUP: 33,\n KEY_PAGEDOWN: 34,\n KEY_INSERT: 45\n };\n\n\n var isIELegacyEvent = function(event) { return false; };\n\n if (window.attachEvent) {\n if (window.addEventListener) {\n isIELegacyEvent = function(event) {\n return !(event instanceof window.Event);\n };\n } else {\n isIELegacyEvent = function(event) { return true; };\n }\n }\n\n var _isButton;\n\n function _isButtonForDOMEvents(event, code) {\n return event.which ? (event.which === code + 1) : (event.button === code);\n }\n\n var legacyButtonMap = { 0: 1, 1: 4, 2: 2 };\n function _isButtonForLegacyEvents(event, code) {\n return event.button === legacyButtonMap[code];\n }\n\n function _isButtonForWebKit(event, code) {\n switch (code) {\n case 0: return event.which == 1 && !event.metaKey;\n case 1: return event.which == 2 || (event.which == 1 && event.metaKey);\n case 2: return event.which == 3;\n default: return false;\n }\n }\n\n if (window.attachEvent) {\n if (!window.addEventListener) {\n _isButton = _isButtonForLegacyEvents;\n } else {\n _isButton = function(event, code) {\n return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) :\n _isButtonForDOMEvents(event, code);\n }\n }\n } else if (Prototype.Browser.WebKit) {\n _isButton = _isButtonForWebKit;\n } else {\n _isButton = _isButtonForDOMEvents;\n }\n\n function isLeftClick(event) { return _isButton(event, 0) }\n\n function isMiddleClick(event) { return _isButton(event, 1) }\n\n function isRightClick(event) { return _isButton(event, 2) }\n\n function element(event) {\n return Element.extend(_element(event));\n }\n\n function _element(event) {\n event = Event.extend(event);\n\n var node = event.target, type = event.type,\n currentTarget = event.currentTarget;\n\n if (currentTarget && currentTarget.tagName) {\n if (type === 'load' || type === 'error' ||\n (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'\n && currentTarget.type === 'radio'))\n node = currentTarget;\n }\n\n return node.nodeType == Node.TEXT_NODE ? node.parentNode : node;\n }\n\n function findElement(event, expression) {\n var element = _element(event), selector = Prototype.Selector;\n if (!expression) return Element.extend(element);\n while (element) {\n if (Object.isElement(element) && selector.match(element, expression))\n return Element.extend(element);\n element = element.parentNode;\n }\n }\n\n function pointer(event) {\n return { x: pointerX(event), y: pointerY(event) };\n }\n\n function pointerX(event) {\n var docElement = document.documentElement,\n body = document.body || { scrollLeft: 0 };\n\n if (Prototype.BrowserFeatures.SupportsTouch && ('createTouch' in document) && event.touches) {\n return (event.touches[0] || event).pageX;\n } else {\n return event.pageX || (event.clientX +\n (docElement.scrollLeft || body.scrollLeft) -\n (docElement.clientLeft || 0));\n }\n }\n\n function pointerY(event) {\n var docElement = document.documentElement,\n body = document.body || { scrollTop: 0 };\n\n if (Prototype.BrowserFeatures.SupportsTouch && ('createTouch' in document) && event.touches) {\n return (event.touches[0] || event).pageY;\n } else {\n return event.pageY || (event.clientY +\n (docElement.scrollTop || body.scrollTop) -\n (docElement.clientTop || 0));\n }\n }\n\n\n function stop(event) {\n Event.extend(event);\n event.preventDefault();\n event.stopPropagation();\n\n event.stopped = true;\n }\n\n\n Event.Methods = {\n isLeftClick: isLeftClick,\n isMiddleClick: isMiddleClick,\n isRightClick: isRightClick,\n\n element: element,\n findElement: findElement,\n\n pointer: pointer,\n pointerX: pointerX,\n pointerY: pointerY,\n\n stop: stop\n };\n\n var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {\n m[name] = Event.Methods[name].methodize();\n return m;\n });\n\n if (window.attachEvent) {\n function _relatedTarget(event) {\n var element;\n switch (event.type) {\n case 'mouseover':\n case 'mouseenter':\n element = event.fromElement;\n break;\n case 'mouseout':\n case 'mouseleave':\n element = event.toElement;\n break;\n default:\n return null;\n }\n return Element.extend(element);\n }\n\n var additionalMethods = {\n stopPropagation: function() { this.cancelBubble = true },\n preventDefault: function() { this.returnValue = false },\n inspect: function() { return '[object Event]' }\n };\n\n Event.extend = function(event, element) {\n if (!event) return false;\n\n if (!isIELegacyEvent(event)) return event;\n\n if (event._extendedByPrototype) return event;\n event._extendedByPrototype = Prototype.emptyFunction;\n\n var pointer = Event.pointer(event);\n\n Object.extend(event, {\n target: event.srcElement || element,\n relatedTarget: _relatedTarget(event),\n pageX: pointer.x,\n pageY: pointer.y\n });\n\n Object.extend(event, methods);\n Object.extend(event, additionalMethods);\n\n return event;\n };\n } else {\n Event.extend = Prototype.K;\n }\n\n if (window.addEventListener) {\n Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__;\n Object.extend(Event.prototype, methods);\n }\n\n var EVENT_TRANSLATIONS = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n\n function getDOMEventName(eventName) {\n return EVENT_TRANSLATIONS[eventName] || eventName;\n }\n\n if (MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED)\n getDOMEventName = Prototype.K;\n\n function getUniqueElementID(element) {\n if (element === window) return 0;\n\n if (typeof element._prototypeUID === 'undefined')\n element._prototypeUID = Element.Storage.UID++;\n return element._prototypeUID;\n }\n\n function getUniqueElementID_IE(element) {\n if (element === window) return 0;\n if (element == document) return 1;\n return element.uniqueID;\n }\n\n if ('uniqueID' in DIV)\n getUniqueElementID = getUniqueElementID_IE;\n\n function isCustomEvent(eventName) {\n return eventName.include(':');\n }\n\n Event._isCustomEvent = isCustomEvent;\n\n function getOrCreateRegistryFor(element, uid) {\n var CACHE = GLOBAL.Event.cache;\n if (Object.isUndefined(uid))\n uid = getUniqueElementID(element);\n if (!CACHE[uid]) CACHE[uid] = { element: element };\n return CACHE[uid];\n }\n\n function destroyRegistryForElement(element, uid) {\n if (Object.isUndefined(uid))\n uid = getUniqueElementID(element);\n delete GLOBAL.Event.cache[uid];\n }\n\n\n function register(element, eventName, handler) {\n var registry = getOrCreateRegistryFor(element);\n if (!registry[eventName]) registry[eventName] = [];\n var entries = registry[eventName];\n\n var i = entries.length;\n while (i--)\n if (entries[i].handler === handler) return null;\n\n var uid = getUniqueElementID(element);\n var responder = GLOBAL.Event._createResponder(uid, eventName, handler);\n var entry = {\n responder: responder,\n handler: handler\n };\n\n entries.push(entry);\n return entry;\n }\n\n function unregister(element, eventName, handler) {\n var registry = getOrCreateRegistryFor(element);\n var entries = registry[eventName] || [];\n\n var i = entries.length, entry;\n while (i--) {\n if (entries[i].handler === handler) {\n entry = entries[i];\n break;\n }\n }\n\n if (entry) {\n var index = entries.indexOf(entry);\n entries.splice(index, 1);\n }\n\n if (entries.length === 0) {\n delete registry[eventName];\n if (Object.keys(registry).length === 1 && ('element' in registry))\n destroyRegistryForElement(element);\n }\n\n return entry;\n }\n\n\n function observe(element, eventName, handler) {\n element = $(element);\n var entry = register(element, eventName, handler);\n\n if (entry === null) return element;\n\n var responder = entry.responder;\n if (isCustomEvent(eventName))\n observeCustomEvent(element, eventName, responder);\n else\n observeStandardEvent(element, eventName, responder);\n\n return element;\n }\n\n function observeStandardEvent(element, eventName, responder) {\n var actualEventName = getDOMEventName(eventName);\n if (element.addEventListener) {\n element.addEventListener(actualEventName, responder, false);\n } else {\n element.attachEvent('on' + actualEventName, responder);\n }\n }\n\n function observeCustomEvent(element, eventName, responder) {\n if (element.addEventListener) {\n element.addEventListener('dataavailable', responder, false);\n } else {\n element.attachEvent('ondataavailable', responder);\n element.attachEvent('onlosecapture', responder);\n }\n }\n\n function stopObserving(element, eventName, handler) {\n element = $(element);\n var handlerGiven = !Object.isUndefined(handler),\n eventNameGiven = !Object.isUndefined(eventName);\n\n if (!eventNameGiven && !handlerGiven) {\n stopObservingElement(element);\n return element;\n }\n\n if (!handlerGiven) {\n stopObservingEventName(element, eventName);\n return element;\n }\n\n var entry = unregister(element, eventName, handler);\n\n if (!entry) return element;\n removeEvent(element, eventName, entry.responder);\n return element;\n }\n\n function stopObservingStandardEvent(element, eventName, responder) {\n var actualEventName = getDOMEventName(eventName);\n if (element.removeEventListener) {\n element.removeEventListener(actualEventName, responder, false);\n } else {\n element.detachEvent('on' + actualEventName, responder);\n }\n }\n\n function stopObservingCustomEvent(element, eventName, responder) {\n if (element.removeEventListener) {\n element.removeEventListener('dataavailable', responder, false);\n } else {\n element.detachEvent('ondataavailable', responder);\n element.detachEvent('onlosecapture', responder);\n }\n }\n\n\n\n function stopObservingElement(element) {\n var uid = getUniqueElementID(element), registry = GLOBAL.Event.cache[uid];\n if (!registry) return;\n\n destroyRegistryForElement(element, uid);\n\n var entries, i;\n for (var eventName in registry) {\n if (eventName === 'element') continue;\n\n entries = registry[eventName];\n i = entries.length;\n while (i--)\n removeEvent(element, eventName, entries[i].responder);\n }\n }\n\n function stopObservingEventName(element, eventName) {\n var registry = getOrCreateRegistryFor(element);\n var entries = registry[eventName];\n if (entries) {\n delete registry[eventName];\n }\n\n entries = entries || [];\n\n var i = entries.length;\n while (i--)\n removeEvent(element, eventName, entries[i].responder);\n\n for (var name in registry) {\n if (name === 'element') continue;\n return; // There is another registered event\n }\n\n destroyRegistryForElement(element);\n }\n\n\n function removeEvent(element, eventName, handler) {\n if (isCustomEvent(eventName))\n stopObservingCustomEvent(element, eventName, handler);\n else\n stopObservingStandardEvent(element, eventName, handler);\n }\n\n\n\n function getFireTarget(element) {\n if (element !== document) return element;\n if (document.createEvent && !element.dispatchEvent)\n return document.documentElement;\n return element;\n }\n\n function fire(element, eventName, memo, bubble) {\n element = getFireTarget($(element));\n if (Object.isUndefined(bubble)) bubble = true;\n memo = memo || {};\n\n var event = fireEvent(element, eventName, memo, bubble);\n return Event.extend(event);\n }\n\n function fireEvent_DOM(element, eventName, memo, bubble) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent('dataavailable', bubble, true);\n\n event.eventName = eventName;\n event.memo = memo;\n\n element.dispatchEvent(event);\n return event;\n }\n\n function fireEvent_IE(element, eventName, memo, bubble) {\n var event = document.createEventObject();\n event.eventType = bubble ? 'ondataavailable' : 'onlosecapture';\n\n event.eventName = eventName;\n event.memo = memo;\n\n element.fireEvent(event.eventType, event);\n return event;\n }\n\n var fireEvent = document.createEvent ? fireEvent_DOM : fireEvent_IE;\n\n\n\n Event.Handler = Class.create({\n initialize: function(element, eventName, selector, callback) {\n this.element = $(element);\n this.eventName = eventName;\n this.selector = selector;\n this.callback = callback;\n this.handler = this.handleEvent.bind(this);\n },\n\n\n start: function() {\n Event.observe(this.element, this.eventName, this.handler);\n return this;\n },\n\n stop: function() {\n Event.stopObserving(this.element, this.eventName, this.handler);\n return this;\n },\n\n handleEvent: function(event) {\n var element = Event.findElement(event, this.selector);\n if (element) this.callback.call(this.element, event, element);\n }\n });\n\n function on(element, eventName, selector, callback) {\n element = $(element);\n if (Object.isFunction(selector) && Object.isUndefined(callback)) {\n callback = selector, selector = null;\n }\n\n return new Event.Handler(element, eventName, selector, callback).start();\n }\n\n Object.extend(Event, Event.Methods);\n\n Object.extend(Event, {\n fire: fire,\n observe: observe,\n stopObserving: stopObserving,\n on: on\n });\n\n Element.addMethods({\n fire: fire,\n\n observe: observe,\n\n stopObserving: stopObserving,\n\n on: on\n });\n\n Object.extend(document, {\n fire: fire.methodize(),\n\n observe: observe.methodize(),\n\n stopObserving: stopObserving.methodize(),\n\n on: on.methodize(),\n\n loaded: false\n });\n\n if (GLOBAL.Event) Object.extend(window.Event, Event);\n else GLOBAL.Event = Event;\n\n GLOBAL.Event.cache = {};\n\n function destroyCache_IE() {\n GLOBAL.Event.cache = null;\n }\n\n if (window.attachEvent)\n window.attachEvent('onunload', destroyCache_IE);\n\n DIV = null;\n docEl = null;\n})(this);\n\n(function(GLOBAL) {\n /* Code for creating leak-free event responders is based on work by\n John-David Dalton. */\n\n var docEl = document.documentElement;\n var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl\n && 'onmouseleave' in docEl;\n\n function isSimulatedMouseEnterLeaveEvent(eventName) {\n return !MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&\n (eventName === 'mouseenter' || eventName === 'mouseleave');\n }\n\n function createResponder(uid, eventName, handler) {\n if (Event._isCustomEvent(eventName))\n return createResponderForCustomEvent(uid, eventName, handler);\n if (isSimulatedMouseEnterLeaveEvent(eventName))\n return createMouseEnterLeaveResponder(uid, eventName, handler);\n\n return function(event) {\n if (!Event.cache) return;\n\n var element = Event.cache[uid].element;\n Event.extend(event, element);\n if (!Prototype.isDisabled(event.element())) {\n handler.call(element, event);\n } else if (Prototype.BrowserFeatures.SupportsTouch) {\n event.stop();\n }\n };\n }\n\n function createResponderForCustomEvent(uid, eventName, handler) {\n return function(event) {\n var cache = Event.cache[uid];\n var element = cache && cache.element;\n\n if (Object.isUndefined(event.eventName))\n return false;\n\n if (event.eventName !== eventName)\n return false;\n\n Event.extend(event, element);\n\n !Prototype.isDisabled(event.element()) && handler.call(element, event);\n };\n }\n\n function createMouseEnterLeaveResponder(uid, eventName, handler) {\n return function(event) {\n var element = Event.cache[uid].element;\n\n Event.extend(event, element);\n var parent = event.relatedTarget;\n\n while (parent && parent !== element) {\n try { parent = parent.parentNode; }\n catch(e) { parent = element; }\n }\n\n if (parent === element) return;\n\n if (!Prototype.isDisabled(event.element())) {\n handler.call(element, event);\n } else if (Prototype.BrowserFeatures.SupportsTouch) {\n event.stop();\n }\n }\n }\n\n GLOBAL.Event._createResponder = createResponder;\n docEl = null;\n})(this);\n\n(function(GLOBAL) {\n /* Support for the DOMContentLoaded event is based on work by Dan Webb,\n Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */\n\n var TIMER;\n\n function fireContentLoadedEvent() {\n if (document.loaded) return;\n if (TIMER) window.clearTimeout(TIMER);\n document.loaded = true;\n if (typeof(require) === \"undefined\"){\n document.fire('dom:loaded');\n }\n }\n\n function checkReadyState() {\n if (document.readyState === 'complete') {\n document.detachEvent('onreadystatechange', checkReadyState);\n fireContentLoadedEvent();\n }\n }\n\n function pollDoScroll() {\n try {\n document.documentElement.doScroll('left');\n } catch (e) {\n TIMER = pollDoScroll.defer();\n return;\n }\n\n fireContentLoadedEvent();\n }\n\n\n if (document.readyState === 'complete') {\n fireContentLoadedEvent();\n return;\n }\n\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);\n } else {\n document.attachEvent('onreadystatechange', checkReadyState);\n if (window == top) TIMER = pollDoScroll.defer();\n }\n\n Event.observe(window, 'load', fireContentLoadedEvent);\n})(this);\n\n\nElement.addMethods();\n/*------------------------------- DEPRECATED -------------------------------*/\n\nHash.toQueryString = Object.toQueryString;\n\nvar Toggle = { display: Element.toggle };\n\nElement.addMethods({\n childOf: Element.Methods.descendantOf\n});\n\nvar Insertion = {\n Before: function(element, content) {\n return Element.insert(element, {before:content});\n },\n\n Top: function(element, content) {\n return Element.insert(element, {top:content});\n },\n\n Bottom: function(element, content) {\n return Element.insert(element, {bottom:content});\n },\n\n After: function(element, content) {\n return Element.insert(element, {after:content});\n }\n};\n\nvar $continue = new Error('\"throw $continue\" is deprecated, use \"return\" instead');\n\nvar Position = {\n includeScrollOffsets: false,\n\n prepare: function() {\n this.deltaX = window.pageXOffset\n || document.documentElement.scrollLeft\n || document.body.scrollLeft\n || 0;\n this.deltaY = window.pageYOffset\n || document.documentElement.scrollTop\n || document.body.scrollTop\n || 0;\n },\n\n within: function(element, x, y) {\n if (this.includeScrollOffsets)\n return this.withinIncludingScrolloffsets(element, x, y);\n this.xcomp = x;\n this.ycomp = y;\n this.offset = Element.cumulativeOffset(element);\n\n return (y >= this.offset[1] &&\n y < this.offset[1] + element.offsetHeight &&\n x >= this.offset[0] &&\n x < this.offset[0] + element.offsetWidth);\n },\n\n withinIncludingScrolloffsets: function(element, x, y) {\n var offsetcache = Element.cumulativeScrollOffset(element);\n\n this.xcomp = x + offsetcache[0] - this.deltaX;\n this.ycomp = y + offsetcache[1] - this.deltaY;\n this.offset = Element.cumulativeOffset(element);\n\n return (this.ycomp >= this.offset[1] &&\n this.ycomp < this.offset[1] + element.offsetHeight &&\n this.xcomp >= this.offset[0] &&\n this.xcomp < this.offset[0] + element.offsetWidth);\n },\n\n overlap: function(mode, element) {\n if (!mode) return 0;\n if (mode == 'vertical')\n return ((this.offset[1] + element.offsetHeight) - this.ycomp) /\n element.offsetHeight;\n if (mode == 'horizontal')\n return ((this.offset[0] + element.offsetWidth) - this.xcomp) /\n element.offsetWidth;\n },\n\n\n cumulativeOffset: Element.Methods.cumulativeOffset,\n\n positionedOffset: Element.Methods.positionedOffset,\n\n absolutize: function(element) {\n Position.prepare();\n return Element.absolutize(element);\n },\n\n relativize: function(element) {\n Position.prepare();\n return Element.relativize(element);\n },\n\n realOffset: Element.Methods.cumulativeScrollOffset,\n\n offsetParent: Element.Methods.getOffsetParent,\n\n page: Element.Methods.viewportOffset,\n\n clone: function(source, target, options) {\n options = options || { };\n return Element.clonePosition(target, source, options);\n }\n};\n\n/*--------------------------------------------------------------------------*/\n\nif (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){\n function iter(name) {\n return name.blank() ? null : \"[contains(concat(' ', @class, ' '), ' \" + name + \" ')]\";\n }\n\n instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?\n function(element, className) {\n className = className.toString().strip();\n var cond = /\\s/.test(className) ? $w(className).map(iter).join('') : iter(className);\n return cond ? document._getElementsByXPath('.//*' + cond, element) : [];\n } : function(element, className) {\n className = className.toString().strip();\n var elements = [], classNames = (/\\s/.test(className) ? $w(className) : null);\n if (!classNames && !className) return elements;\n\n var nodes = $(element).getElementsByTagName('*');\n className = ' ' + className + ' ';\n\n for (var i = 0, child, cn; child = nodes[i]; i++) {\n if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||\n (classNames && classNames.all(function(name) {\n return !name.toString().blank() && cn.include(' ' + name + ' ');\n }))))\n elements.push(Element.extend(child));\n }\n return elements;\n };\n\n return function(className, parentElement) {\n return $(parentElement || document.body).getElementsByClassName(className);\n };\n}(Element.Methods);\n\n/*--------------------------------------------------------------------------*/\n\nElement.ClassNames = Class.create();\nElement.ClassNames.prototype = {\n initialize: function(element) {\n this.element = $(element);\n },\n\n _each: function(iterator, context) {\n this.element.className.split(/\\s+/).select(function(name) {\n return name.length > 0;\n })._each(iterator, context);\n },\n\n set: function(className) {\n this.element.className = className;\n },\n\n add: function(classNameToAdd) {\n if (this.include(classNameToAdd)) return;\n this.set($A(this).concat(classNameToAdd).join(' '));\n },\n\n remove: function(classNameToRemove) {\n if (!this.include(classNameToRemove)) return;\n this.set($A(this).without(classNameToRemove).join(' '));\n },\n\n toString: function() {\n return $A(this).join(' ');\n }\n};\n\nObject.extend(Element.ClassNames.prototype, Enumerable);\n\n/*--------------------------------------------------------------------------*/\n\n(function() {\n window.Selector = Class.create({\n initialize: function(expression) {\n this.expression = expression.strip();\n },\n\n findElements: function(rootElement) {\n return Prototype.Selector.select(this.expression, rootElement);\n },\n\n match: function(element) {\n return Prototype.Selector.match(element, this.expression);\n },\n\n toString: function() {\n return this.expression;\n },\n\n inspect: function() {\n return \"#\";\n }\n });\n\n Object.extend(Selector, {\n matchElements: function(elements, expression) {\n var match = Prototype.Selector.match,\n results = [];\n\n for (var i = 0, length = elements.length; i < length; i++) {\n var element = elements[i];\n if (match(element, expression)) {\n results.push(Element.extend(element));\n }\n }\n return results;\n },\n\n findElement: function(elements, expression, index) {\n index = index || 0;\n var matchIndex = 0, element;\n for (var i = 0, length = elements.length; i < length; i++) {\n element = elements[i];\n if (Prototype.Selector.match(element, expression) && index === matchIndex++) {\n return Element.extend(element);\n }\n }\n },\n\n findChildElements: function(element, expressions) {\n var selector = expressions.toArray().join(', ');\n return Prototype.Selector.select(selector, element || document);\n }\n });\n})();\n"],"sourceRoot":""}