README: where did website go? (#2677)
- Includes removal of website directory
|
@ -48,3 +48,9 @@ Volunteer-maintained projects that may be used to execute Test262 in various ECM
|
|||
### How To Read CI Results
|
||||
|
||||
Test262 runs CI tests against every PR and commit. The only tests that are required to pass are visibly flagged as **REQUIRED**. The CI test results that are attributed to specific runs against specific engines should not be perceived as meaningful to anyone but the person that is reviewing the test material contained within the contributed changeset. These tests are almost always expected to fail, especially in the case of tests for new features. They _may_ be helpful in determining whether or not a regression occurred, but that can only be determined by an actual human reviewing the results and comparing those outcomes to the expected outcomes of the tests.
|
||||
|
||||
|
||||
|
||||
### Where did `website/` go?
|
||||
|
||||
It's been removed. If you need to access the code that contained in that directory, we've preserved it in a branch, [available here](https://github.com/tc39/test262/compare/preserved-website-directory).
|
||||
|
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 235 B |
Before Width: | Height: | Size: 349 B |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 963 B |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 966 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 962 B |
Before Width: | Height: | Size: 1.4 KiB |
|
@ -1,320 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<esSpec name="ECMA-262" version="5">
|
||||
<sec id="7" name="Lexical Conventions">
|
||||
<sec id="7.0" name="Introduction"/>
|
||||
<sec id="7.1" name="Unicode Format-Control Characters"/>
|
||||
<sec id="7.2" name="White Space"/>
|
||||
<sec id="7.3" name="Line Terminators"/>
|
||||
<sec id="7.4" name="Comments"/>
|
||||
<sec id="7.5" name="Tokens"/>
|
||||
<sec id="7.6" name="Identifier Names and Identifiers">
|
||||
<sec id="7.6.1" name="Reserved Words"/>
|
||||
</sec>
|
||||
<sec id="7.7" name="Punctuators"/>
|
||||
<sec id="7.8" name="Literals">
|
||||
<sec id="7.8.1" name="Null Literals"/>>
|
||||
<sec id="7.8.2" name="Boolean Literals"/>
|
||||
<sec id="7.8.3" name="Numeric Literals"/>
|
||||
<sec id="7.8.4" name="String Literals"/>
|
||||
<sec id="7.8.5" name="Regular Expression Literals"/>
|
||||
</sec>
|
||||
<sec id="7.9" name="Automatic Semicolon Insertion">
|
||||
<sec id="7.9.1" name="Rules of Automatic Semicolon Insertion"/>
|
||||
<sec id="7.9.2" name="Examples of Automatic Semicolon Insertion"/>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="8" name="Types">
|
||||
<sec id="8.0" name="Introduction"/>
|
||||
<sec id="8.1" name="The Undefined Type"/>
|
||||
<sec id="8.2" name="The Null Type"/>
|
||||
<sec id="8.3" name="The Boolean Type"/>
|
||||
<sec id="8.4" name="The String Type"/>
|
||||
<sec id="8.5" name="The Number Type"/>
|
||||
<sec id="8.6" name="The Object Type">
|
||||
<sec id="8.6.1" name="Property Attributes"/>
|
||||
<sec id="8.6.2" name="Object Internal Properties and Methods"/>
|
||||
</sec>
|
||||
<sec id="8.7" name="The Reference Specification Type">
|
||||
<sec id="8.7.1" name="GetValue (V)"/>
|
||||
<sec id="8.7.2" name="PutValue (V, W)"/>
|
||||
</sec>
|
||||
<sec id="8.8" name="The List Specification Type"/>
|
||||
<sec id="8.9" name="The Completion Specification Type"/>
|
||||
<sec id="8.10" name="The Property Descriptor and Property Identifier Specification Types">
|
||||
<sec id="8.10.1" name="IsAccessorDescriptor ( Desc )"/>
|
||||
<sec id="8.10.2" name="IsDataDescriptor ( Desc )"/>
|
||||
<sec id="8.10.3" name="IsGenericDescriptor ( Desc )"/>
|
||||
<sec id="8.10.4" name="FromPropertyDescriptor ( Desc )"/>
|
||||
<sec id="8.10.5" name="ToPropertyDescriptor ( Obj )"/>
|
||||
</sec>
|
||||
<sec id="8.11" name="The Lexical Environment and Environment Record Specification Types"/>
|
||||
<sec id="8.12" name="Algorithms for Object Internal Methods">
|
||||
<sec id="8.12.1" name="[[GetOwnProperty]] (P)"/>
|
||||
<sec id="8.12.2" name="[[GetProperty]] (P)"/>
|
||||
<sec id="8.12.3" name="[[Get]] (P)"/>
|
||||
<sec id="8.12.4" name="[[CanPut]] (P)"/>
|
||||
<sec id="8.12.5" name="[[Put]] ( P, V, Throw )"/>
|
||||
<sec id="8.12.6" name="[[HasProperty]] (P)"/>
|
||||
<sec id="8.12.7" name="[[Delete]] (P, Throw)"/>
|
||||
<sec id="8.12.8" name="[[DefaultValue]] (hint)"/>
|
||||
<sec id="8.12.9" name="[[DefineOwnProperty]] (P, Desc, Throw)"/>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="9" name="Type Conversion and Testing">
|
||||
<sec id="9.0" name="Introduction"/>
|
||||
<sec id="9.1" name="ToPrimitive"/>
|
||||
<sec id="9.2" name="ToBoolean"/>
|
||||
<sec id="9.3" name="ToNumber">
|
||||
<sec id="9.3.1" name="ToNumber Applied to the String Type"/>
|
||||
</sec>
|
||||
<sec id="9.4" name="ToInteger"/>
|
||||
<sec id="9.5" name="ToInt32: (Signed 32 Bit Integer)"/>
|
||||
<sec id="9.6" name="ToUint32: (Unsigned 32 Bit Integer)"/>
|
||||
<sec id="9.7" name="ToUint16: (Unsigned 16 Bit Integer)"/>
|
||||
<sec id="9.8" name="ToString">
|
||||
<sec id="9.8.1" name="ToString Applied to the Number Type"/>
|
||||
</sec>
|
||||
<sec id="9.9" name="ToObject"/>
|
||||
<sec id="9.10" name="CheckObjectCoercible"/>
|
||||
<sec id="9.11" name="IsCallable"/>
|
||||
<sec id="9.12" name="The SameValue Algorithm"/>
|
||||
</sec>
|
||||
<sec id="10" name="Executable Code and Execution Contexts">
|
||||
<sec id="10.0" name="Introduction"/>
|
||||
<sec id="10.1" name="Types of Executable Code">
|
||||
<sec id="10.1.1" name="Strict Mode Code"/>
|
||||
</sec>
|
||||
<sec id="10.2" name="Lexical Environments">
|
||||
<sec id="10.2.1" name="Environment Records"/>
|
||||
<sec id="10.2.2" name="Lexical Environment Operations"/>
|
||||
<sec id="10.2.3" name="The Global Environment"/>
|
||||
</sec>
|
||||
<sec id="10.3" name="Execution Contexts">
|
||||
<sec id="10.3.1" name="Identifier Resolution"/>
|
||||
</sec>
|
||||
<sec id="10.4" name="Establishing an Execution Context">
|
||||
<sec id="10.4.1" name="Entering Global Code"/>
|
||||
<sec id="10.4.2" name="Entering Eval Code"/>
|
||||
<sec id="10.4.3" name="Entering Function Code"/>
|
||||
</sec>
|
||||
<sec id="10.5" name="Declaration Binding Instantiation"/>
|
||||
<sec id="10.6" name="Arguments Object"/>
|
||||
</sec>
|
||||
<sec id="11" name="Expressions">
|
||||
<sec id="11.0" name="Introduction"/>
|
||||
<sec id="11.1" name="Primary Expressions">
|
||||
<sec id="11.1.1" name="The this Keyword"/>
|
||||
<sec id="11.1.2" name="Identifier Reference"/>
|
||||
<sec id="11.1.3" name="Literal Reference"/>
|
||||
<sec id="11.1.4" name="Array Initialiser"/>
|
||||
<sec id="11.1.5" name="Object Initialiser"/>
|
||||
<sec id="11.1.6" name="The Grouping Operator"/>
|
||||
</sec>
|
||||
<sec id="11.2" name="Left-Hand-Side Expressions">
|
||||
<sec id="11.2.1" name="Property Accessors"/>
|
||||
<sec id="11.2.2" name="The new Operator"/>
|
||||
<sec id="11.2.3" name="Function Calls"/>
|
||||
<sec id="11.2.4" name="Argument Lists"/>
|
||||
<sec id="11.2.5" name="Function Expressions"/>
|
||||
</sec>
|
||||
<sec id="11.3" name="Postfix Expressions">
|
||||
<sec id="11.3.1" name="Postfix Increment Operator"/>
|
||||
<sec id="11.3.2" name="Postfix Decrement Operator"/>
|
||||
</sec>
|
||||
<sec id="11.4" name="Unary Operators">
|
||||
<sec id="11.4.1" name="The delete Operator"/>
|
||||
<sec id="11.4.2" name="The void Operator"/>
|
||||
<sec id="11.4.3" name="The typeof Operator"/>
|
||||
<sec id="11.4.4" name="Prefix Increment Operator"/>
|
||||
<sec id="11.4.5" name="Prefix Decrement Operator"/>
|
||||
<sec id="11.4.6" name="Unary + Operator"/>
|
||||
<sec id="11.4.7" name="Unary - Operator"/>
|
||||
<sec id="11.4.8" name="Bitwise NOT Operator ( ~ )"/>
|
||||
<sec id="11.4.9" name="Logical NOT Operator ( ! )"/>
|
||||
</sec>
|
||||
<sec id="11.5" name="Multiplicative Operators">
|
||||
<sec id="11.5.1" name="Applying the * Operator"/>
|
||||
<sec id="11.5.2" name="Applying the / Operator"/>
|
||||
<sec id="11.5.3" name="Applying the % Operator"/>
|
||||
</sec>
|
||||
<sec id="11.6" name="Additive Operators">
|
||||
<sec id="11.6.1" name="The Addition operator ( + )"/>
|
||||
<sec id="11.6.2" name="The Subtraction Operator ( - )"/>
|
||||
<sec id="11.6.3" name="Applying the Additive Operators to Numbers"/>
|
||||
</sec>
|
||||
<sec id="11.7" name="Bitwise Shift Operators">
|
||||
<sec id="11.7.1" name="The Left Shift Operator"/>
|
||||
<sec id="11.7.2" name="The Signed Right Shift Operator ( >> )"/>
|
||||
<sec id="11.7.3" name="The Unsigned Right Shift Operator ( >>> )"/>
|
||||
</sec>
|
||||
<sec id="11.8" name="Relational Operators">
|
||||
<sec id="11.8.1" name="The Less-than Operator"/>
|
||||
<sec id="11.8.2" name="The Greater-than Operator"/>
|
||||
<sec id="11.8.3" name="The Less-than-or-equal Operator"/>
|
||||
<sec id="11.8.4" name="The Greater-than-or-equal Operator"/>
|
||||
<sec id="11.8.5" name="The Abstract Relational Comparison Algorithm"/>
|
||||
<sec id="11.8.6" name="The instanceof operator"/>
|
||||
<sec id="11.8.7" name="The in operator"/>
|
||||
</sec>
|
||||
<sec id="11.9" name="Equality Operators">
|
||||
<sec id="11.9.1" name="The Equals Operator ( == )"/>
|
||||
<sec id="11.9.2" name="The Does-not-equals Operator ( != )"/>
|
||||
<sec id="11.9.3" name="The Abstract Equality Comparison Algorithm"/>
|
||||
<sec id="11.9.4" name="The Strict Equals Operator ( === )"/>
|
||||
<sec id="11.9.5" name="The Strict Does-not-equal Operator ( !== )"/>
|
||||
<sec id="11.9.6" name="The Strict Equality Comparison Algorithm"/>
|
||||
</sec>
|
||||
<sec id="11.10" name="Binary Bitwise Operators"/>
|
||||
<sec id="11.11" name="Binary Logical Operators"/>
|
||||
<sec id="11.12" name="Conditional Operator ( ? : )"/>
|
||||
<sec id="11.13" name="Assignment Operators">
|
||||
<sec id="11.13.1" name="Simple Assignment ( = )"/>
|
||||
<sec id="11.13.2" name="Compound Assignment ( op= )"/>
|
||||
</sec>
|
||||
<sec id="11.14" name="Comma Operator ( , )"/>
|
||||
</sec>
|
||||
<sec id="12" name="Statements">
|
||||
<sec id="12.0" name="Introduction"/>
|
||||
<sec id="12.1" name="Block"/>
|
||||
<sec id="12.2" name="Variable Statement">
|
||||
<sec id="12.2.1" name="Strict Mode Restrictions"/>
|
||||
</sec>
|
||||
<sec id="12.3" name="Empty Statement"/>
|
||||
<sec id="12.4" name="Expression Statement"/>
|
||||
<sec id="12.5" name="The if Statement"/>
|
||||
<sec id="12.6" name="Iteration Statements">
|
||||
<sec id="12.6.1" name="The do-while Statement"/>
|
||||
<sec id="12.6.2" name="The while Statement"/>
|
||||
<sec id="12.6.3" name="The for Statement"/>
|
||||
<sec id="12.6.4" name="The for-in Statement"/>
|
||||
</sec>
|
||||
<sec id="12.7" name="The continue Statement"/>
|
||||
<sec id="12.8" name="The break Statement"/>
|
||||
<sec id="12.9" name="The return Statement"/>
|
||||
<sec id="12.10" name="The with Statement">
|
||||
<sec id="12.10.1" name="Strict Mode Restrictions"/>
|
||||
</sec>
|
||||
<sec id="12.11" name="The switch Statement"/>
|
||||
<sec id="12.12" name="Labelled Statements"/>
|
||||
<sec id="12.13" name="The throw Statement"/>
|
||||
<sec id="12.14" name="The try Statement">
|
||||
<sec id="12.14.1" name="Strict Mode Restrictions">
|
||||
</sec>
|
||||
<sec id="12.15" name="The debugger statement"/>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="13" name="Function Definition">
|
||||
<sec id="13.0" name="Introduction"/>
|
||||
<sec id="13.1" name="Strict Mode Restrictions"/>
|
||||
<sec id="13.2" name="Creating Function Objects">
|
||||
<sec id="13.2.1" name="[[Call]]"/>
|
||||
<sec id="13.2.2" name="[[Construct]]"/>
|
||||
<sec id="13.2.3" name="The [[ThrowTypeError]] Function Object"/>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="14" name="Program">
|
||||
<sec id="14.0" name="Introduction"/>
|
||||
<sec id="14.1" name="Directive Prologues and the Use Strict Directive"/>
|
||||
</sec>
|
||||
<sec id="15" name="Standard Built-in ECMAScript Objects">
|
||||
<sec id="15.0" name="Introduction"/>
|
||||
<sec id="15.1" name="The Global Object">
|
||||
<sec id="15.1.1" name="Value Properties of the Global Object"/>
|
||||
<sec id="15.1.2" name="Function Properties of the Global Object"/>
|
||||
<sec id="15.1.3" name="URI Handling Function Properties"/>
|
||||
<sec id="15.1.4" name="Constructor Properties of the Global Object"/>
|
||||
<sec id="15.1.5" name="Other Properties of the Global Object"/>
|
||||
</sec>
|
||||
<sec id="15.2" name="Object Objects">
|
||||
<sec id="15.2.1" name="The Object Constructor Called as a Function"/>
|
||||
<sec id="15.2.2" name="The Object Constructor"/>
|
||||
<sec id="15.2.3" name="Properties of the Object Constructor"/>
|
||||
<sec id="15.2.4" name="Properties of the Object Prototype Object"/>
|
||||
<sec id="15.2.5" name="Properties of Object Instances"/>
|
||||
</sec>
|
||||
<sec id="15.3" name="Function Objects">
|
||||
<sec id="15.3.1" name="The Function Constructor Called as a Function"/>
|
||||
<sec id="15.3.2" name="The Function Constructor"/>
|
||||
<sec id="15.3.3" name="Properties of the Function Constructor"/>
|
||||
<sec id="15.3.4" name="Properties of the Function Prototype Object"/>
|
||||
<sec id="15.3.5" name="Properties of Function Instances"/>
|
||||
</sec>
|
||||
<sec id="15.4" name="Array Objects">
|
||||
<sec id="15.4.1" name="The Array Constructor Called as a Function"/>
|
||||
<sec id="15.4.2" name="The Array Constructor"/>
|
||||
<sec id="15.4.3" name="Properties of the Array Constructor"/>
|
||||
<sec id="15.4.4" name="Properties of the Array Prototype Object"/>
|
||||
<sec id="15.4.5" name="Properties of Array Instances"/>
|
||||
</sec>
|
||||
<sec id="15.5" name="String Objects">
|
||||
<sec id="15.5.1" name="The String Constructor Called as a Function"/>
|
||||
<sec id="15.5.2" name="The String Constructor"/>
|
||||
<sec id="15.5.3" name="Properties of the String Constructor"/>
|
||||
<sec id="15.5.4" name="Properties of the String Prototype Object"/>
|
||||
<sec id="15.5.5" name="Properties of String Instances"/>
|
||||
</sec>
|
||||
<sec id="15.6" name="Boolean Objects">
|
||||
<sec id="15.6.1" name="The Boolean Constructor Called as a Function"/>
|
||||
<sec id="15.6.2" name="The Boolean Constructor"/>
|
||||
<sec id="15.6.3" name="Properties of the Boolean Constructor"/>
|
||||
<sec id="15.6.4" name="Properties of the Boolean Prototype Object"/>
|
||||
<sec id="15.6.5" name="Properties of Boolean Instances"/>
|
||||
</sec>
|
||||
<sec id="15.7" name="Number Objects">
|
||||
<sec id="15.7.1" name="The Number Constructor Called as a Function"/>
|
||||
<sec id="15.7.2" name="The Number Constructor"/>
|
||||
<sec id="15.7.3" name="Properties of the Number Constructor"/>
|
||||
<sec id="15.7.4" name="Properties of the Number Prototype Object"/>
|
||||
<sec id="15.7.5" name="Properties of Number Instances"/>
|
||||
</sec>
|
||||
<sec id="15.8" name="The Math Object">
|
||||
<sec id="15.8.1" name="Value Properties of the Math Object"/>
|
||||
<sec id="15.8.2" name="Function Properties of the Math Object"/>
|
||||
</sec>
|
||||
<sec id="15.9" name="Date Objects">
|
||||
<sec id="15.9.1" name="Overview of Date Objects and Definitions of Abstract Operators"/>
|
||||
<sec id="15.9.2" name="The Date Constructor Called as a Function"/>
|
||||
<sec id="15.9.3" name="The Date Constructor"/>
|
||||
<sec id="15.9.4" name="Properties of the Date Constructor"/>
|
||||
<sec id="15.9.5" name="Properties of the Date Prototype Object"/>
|
||||
<sec id="15.9.6" name="Properties of Date Instances"/>
|
||||
</sec>
|
||||
<sec id="15.10" name="RegExp (Regular Expression) Objects">
|
||||
<sec id="15.10.1" name="Patterns"/>
|
||||
<sec id="15.10.2" name="Pattern Semantics"/>
|
||||
<sec id="15.10.3" name="The RegExp Constructor Called as a Function"/>
|
||||
<sec id="15.10.4" name="The RegExp Constructor"/>
|
||||
<sec id="15.10.5" name="Properties of the RegExp Constructor"/>
|
||||
<sec id="15.10.6" name="Properties of the RegExp Prototype Object"/>
|
||||
<sec id="15.10.7" name="Properties of RegExp Instances"/>
|
||||
</sec>
|
||||
<sec id="15.11" name="Error Objects">
|
||||
<sec id="15.11.1" name="The Error Constructor Called as a Function"/>
|
||||
<sec id="15.11.2" name="The Error Constructor"/>
|
||||
<sec id="15.11.3" name="Properties of the Error Constructor"/>
|
||||
<sec id="15.11.4" name="Properties of the Error Prototype Object"/>
|
||||
<sec id="15.11.5" name="Properties of Error Instances"/>
|
||||
<sec id="15.11.6" name="Native Error Types Used in This Standard"/>
|
||||
<sec id="15.11.7" name="NativeError Object Structure"/>
|
||||
</sec>
|
||||
<sec id="15.12" name="The JSON Object">
|
||||
<sec id="15.12.1" name="The JSON Grammar"/>
|
||||
<sec id="15.12.2" name="parse ( text [ , reviver ] )"/>
|
||||
<sec id="15.12.3" name="stringify ( value [ , replacer [ , space ] ] )"/>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="B" name="Annex B (informative) Compatibility">
|
||||
<sec id="B.1" name="Additional Syntax">
|
||||
<sec id="B.1.1" name="Numeric Literals"/>
|
||||
<sec id="B.1.2" name="String Literals"/>
|
||||
</sec>
|
||||
<sec id="B.2" name="Additional Properties">
|
||||
<sec id="B.2.1" name="escape"/>
|
||||
<sec id="B.2.2" name="unescape"/>
|
||||
<sec id="B.2.3" name="String.prototype.substr"/>
|
||||
<sec id="B.2.4" name="Date.prototype.getYear"/>
|
||||
<sec id="B.2.5" name="Date.prototype.setYear"/>
|
||||
<sec id="B.2.6" name="Date.prototype.toGMTString"/>
|
||||
</sec>
|
||||
</sec>
|
||||
</esSpec>
|
|
@ -1,158 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<esSpec name="ECMA-402" version="1">
|
||||
<sec id="6" name="Identification of Locales, Time Zones, and Currencies">
|
||||
<sec id="6.1" name="Case Sensitivity and Case Mapping">
|
||||
</sec>
|
||||
<sec id="6.2" name="Language Tags">
|
||||
<sec id="6.2.1" name="Unicode Locale Extension Sequences">
|
||||
</sec>
|
||||
<sec id="6.2.2" name="IsStructurallyValidLanguageTag (locale)">
|
||||
</sec>
|
||||
<sec id="6.2.3" name="CanonicalizeLanguageTag (locale)">
|
||||
</sec>
|
||||
<sec id="6.2.4" name="DefaultLocale ()">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="6.3" name="Currency Codes">
|
||||
<sec id="6.3.1" name="IsWellFormedCurrencyCode (currency)">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="6.4" name="Time Zone Names">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="7" name="Requirements for Standard Built-in ECMAScript Objects">
|
||||
</sec>
|
||||
<sec id="8" name="The Intl Object">
|
||||
<sec id="8.1" name="Properties of the Intl Object">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="9" name="Locale and Parameter Negotiation">
|
||||
<sec id="9.1" name="Internal Properties of Service Constructors">
|
||||
</sec>
|
||||
<sec id="9.2" name="Abstract Operations">
|
||||
<sec id="9.2.1" name="CanonicalizeLocaleList (locales)">
|
||||
</sec>
|
||||
<sec id="9.2.2" name="BestAvailableLocale (availableLocales, locale)">
|
||||
</sec>
|
||||
<sec id="9.2.3" name="LookupMatcher (availableLocales, requestedLocales)">
|
||||
</sec>
|
||||
<sec id="9.2.4" name="BestFitMatcher (availableLocales, requestedLocales)">
|
||||
</sec>
|
||||
<sec id="9.2.5" name="ResolveLocale (availableLocales, requestedLocales, options, relevantExtensionKeys, localeData)">
|
||||
</sec>
|
||||
<sec id="9.2.6" name="LookupSupportedLocales (availableLocales, requestedLocales)">
|
||||
</sec>
|
||||
<sec id="9.2.7" name="BestFitSupportedLocales (availableLocales, requestedLocales)">
|
||||
</sec>
|
||||
<sec id="9.2.8" name="SupportedLocales (availableLocales, requestedLocales, options)">
|
||||
</sec>
|
||||
<sec id="9.2.9" name="GetOption (options, property, type, values, fallback)">
|
||||
</sec>
|
||||
<sec id="9.2.10" name="GetNumberOption (options, property, minimum, maximum, fallback)">
|
||||
</sec>
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="10" name="Collator Objects">
|
||||
<sec id="10.1" name="The Intl.Collator Constructor">
|
||||
<sec id="10.1.1" name="Initializing an Object as a Collator">
|
||||
</sec>
|
||||
<sec id="10.1.2" name="The Intl.Collator Constructor Called as a Function">
|
||||
</sec>
|
||||
<sec id="10.1.3" name="The Intl.Collator Constructor Used in a new Expression">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="10.2" name="Properties of the Intl.Collator Constructor">
|
||||
<sec id="10.2.1" name="Intl.Collator.prototype">
|
||||
</sec>
|
||||
<sec id="10.2.2" name="Intl.Collator.supportedLocalesOf (locales [, options])">
|
||||
</sec>
|
||||
<sec id="10.2.3" name="Internal Properties">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="10.3" name="Properties of the Intl.Collator Prototype Object">
|
||||
<sec id="10.3.1" name="Intl.Collator.prototype.constructor">
|
||||
</sec>
|
||||
<sec id="10.3.2" name="Intl.Collator.prototype.compare">
|
||||
</sec>
|
||||
<sec id="10.3.3" name="Intl.Collator.prototype.resolvedOptions ()">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="10.4" name="Properties of Intl.Collator Instances">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="11" name="NumberFormat Objects">
|
||||
<sec id="11.1" name="The Intl.NumberFormat Constructor">
|
||||
<sec id="11.1.1" name="Initializing an Object as a NumberFormat">
|
||||
</sec>
|
||||
<sec id="11.1.2" name="The Intl.NumberFormat Constructor Called as a Function">
|
||||
</sec>
|
||||
<sec id="11.1.3" name="The Intl.NumberFormat Constructor Used in a new Expression">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="11.2" name="Properties of the Intl.NumberFormat Constructor">
|
||||
<sec id="11.2.1" name="Intl.NumberFormat.prototype">
|
||||
</sec>
|
||||
<sec id="11.2.2" name="Intl.NumberFormat.supportedLocalesOf (locales [, options])">
|
||||
</sec>
|
||||
<sec id="11.2.3" name="Internal Properties">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="11.3" name="Properties of the Intl.NumberFormat Prototype Object">
|
||||
<sec id="11.3.1" name="Intl.NumberFormat.prototype.constructor">
|
||||
</sec>
|
||||
<sec id="11.3.2" name="Intl.NumberFormat.prototype.compare">
|
||||
</sec>
|
||||
<sec id="11.3.3" name="Intl.NumberFormat.prototype.resolvedOptions ()">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="11.4" name="Properties of Intl.NumberFormat Instances">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="12" name="DateTimeFormat Objects">
|
||||
<sec id="12.1" name="The Intl.DateTimeFormat Constructor">
|
||||
<sec id="12.1.1" name="Initializing an Object as a DateTimeFormat">
|
||||
</sec>
|
||||
<sec id="12.1.2" name="The Intl.DateTimeFormat Constructor Called as a Function">
|
||||
</sec>
|
||||
<sec id="12.1.3" name="The Intl.DateTimeFormat Constructor Used in a new Expression">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="12.2" name="Properties of the Intl.DateTimeFormat Constructor">
|
||||
<sec id="12.2.1" name="Intl.DateTimeFormat.prototype">
|
||||
</sec>
|
||||
<sec id="12.2.2" name="Intl.DateTimeFormat.supportedLocalesOf (locales [, options])">
|
||||
</sec>
|
||||
<sec id="12.2.3" name="Internal Properties">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="12.3" name="Properties of the Intl.DateTimeFormat Prototype Object">
|
||||
<sec id="12.3.1" name="Intl.DateTimeFormat.prototype.constructor">
|
||||
</sec>
|
||||
<sec id="12.3.2" name="Intl.DateTimeFormat.prototype.compare">
|
||||
</sec>
|
||||
<sec id="12.3.3" name="Intl.DateTimeFormat.prototype.resolvedOptions ()">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="12.4" name="Properties of Intl.DateTimeFormat Instances">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="13" name="Locale Sensitive Functions of the ECMAScript Language Specification">
|
||||
<sec id="13.1" name="Properties of the String Prototype Object">
|
||||
<sec id="13.1.1" name="String.prototype.localeCompare (that [, locales [, options]])">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="13.2" name="Properties of the Number Prototype Object">
|
||||
<sec id="13.2.1" name="Number.prototype.toLocaleString ([locales [, options]])">
|
||||
</sec>
|
||||
</sec>
|
||||
<sec id="13.3" name="Properties of the Date Prototype Object">
|
||||
<sec id="13.3.1" name="Date.prototype.toLocaleString ([locales [, options]])">
|
||||
</sec>
|
||||
<sec id="13.3.2" name="Date.prototype.toLocaleDateString ([locales [, options]])">
|
||||
</sec>
|
||||
<sec id="13.3.3" name="Date.prototype.toLocaleTimeString ([locales [, options]])">
|
||||
</sec>
|
||||
</sec>
|
||||
</sec>
|
||||
</esSpec>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
//Error Detector
|
||||
if (this.window!==undefined) { //for console support
|
||||
this.window.onerror = function(errorMsg, url, lineNumber, colNumber, error) {
|
||||
var cookedError;
|
||||
|
||||
if (error) {
|
||||
cookedError = error.toString();
|
||||
} else {
|
||||
if (/Error:/.test(errorMsg)) {
|
||||
cookedError = errorMsg;
|
||||
} else {
|
||||
cookedError = "UnknownError: " + errorMsg;
|
||||
}
|
||||
}
|
||||
|
||||
$DONE(cookedError);
|
||||
};
|
||||
}
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
//Global Scope Test Case Validator
|
||||
var doneCalled;
|
||||
function $DONE(argError) {
|
||||
|
||||
var testError;
|
||||
var result, resultError;
|
||||
|
||||
if (argError) {
|
||||
testError = argError.toString();
|
||||
}
|
||||
|
||||
if (doneCalled) {
|
||||
// ? log called twice
|
||||
return;
|
||||
}
|
||||
doneCalled = true;
|
||||
|
||||
//An exception is expected
|
||||
if (testDescrip.negative !== undefined) {
|
||||
//TODO - come up with a generic way of catching the error type
|
||||
//from this.onerror
|
||||
|
||||
var negRegexp = new RegExp(testDescrip.negative, "i"),
|
||||
unkRegexp = /^UnknownError:/;
|
||||
|
||||
|
||||
if (!testError) { //no exception was thrown
|
||||
result = 'fail';
|
||||
resultError = Error('No exception was thrown; expected an error "message"' +
|
||||
' property matching the regular expression "' +
|
||||
testDescrip.negative + '".');
|
||||
} else if (!negRegexp.test(testError) &&
|
||||
!unkRegexp.test(testError)) {
|
||||
//wrong type of exception thrown
|
||||
result = 'fail';
|
||||
resultError = Error('Expected an exception with a "message"' +
|
||||
' property matching the regular expression "' +
|
||||
testDescrip.negative +
|
||||
'" to be thrown; actual was "' +
|
||||
testError + '".');
|
||||
|
||||
} else {
|
||||
result = 'pass';
|
||||
resultError = 'undefined';
|
||||
}
|
||||
} else if (testError) {
|
||||
//Exception was not expected to be thrown
|
||||
result = 'fail';
|
||||
resultError = Error('Unexpected exception, "' + testError + '" was thrown.');
|
||||
} else {
|
||||
result = 'pass';
|
||||
resultError = undefined;
|
||||
}
|
||||
|
||||
testRun(testDescrip.id,
|
||||
testDescrip.path,
|
||||
testDescrip.description,
|
||||
testDescrip.code,
|
||||
result,
|
||||
resultError);
|
||||
|
||||
//teardown
|
||||
testFinished();
|
||||
}
|
|
@ -1,444 +0,0 @@
|
|||
/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/* Handles updating the page with information from the runner. */
|
||||
function Presenter() {
|
||||
var altStyle = '',
|
||||
logger,
|
||||
date,
|
||||
version,
|
||||
table,
|
||||
backLink,
|
||||
|
||||
globalSection = new Section(null, "0", STANDARD),
|
||||
currentSection = globalSection,
|
||||
tests = {},
|
||||
totalTests = 0;
|
||||
|
||||
var progressBar;
|
||||
TOCFILEPATH = "metadata/" + STANDARD.toLowerCase() + "-toc.xml";
|
||||
//**INTERFACE****************************************************************
|
||||
/* Updates progress with the given test, which should have its results in it as well. */
|
||||
this.addTestResult = function(test) {
|
||||
tests[test.id] = test;
|
||||
getSectionById(test.id).addTest(test);
|
||||
|
||||
updateCounts();
|
||||
|
||||
//TODO: eventually remove this guard.
|
||||
if(test.result === 'fail') {
|
||||
logResult(test);
|
||||
}
|
||||
}
|
||||
|
||||
/* Updates the displayed version. */
|
||||
this.setVersion = function(v) {
|
||||
version = v;
|
||||
$(".targetTestSuiteVersion").text(v);
|
||||
}
|
||||
|
||||
/* Updates the displayed date. */
|
||||
this.setDate = function(d) {
|
||||
date = d;
|
||||
$(".targetTestSuiteDate").text(d);
|
||||
}
|
||||
|
||||
/* Updates the displayed number of tests to run. */
|
||||
this.setTotalTests = function(tests) {
|
||||
totalTests = tests;
|
||||
$('#testsToRun').text(tests);
|
||||
}
|
||||
|
||||
/* Write status to the activity bar. */
|
||||
this.updateStatus = function (str) {
|
||||
this.activityBar.text(str);
|
||||
}
|
||||
|
||||
/* When starting to load a test, create a table row entry and buttons. Display file path. */
|
||||
this.setTestWaiting = function(index, path) {
|
||||
var appendMsg = '<tr class="waiting"><td height="29" class="chapterName">Waiting to load test file: ' + path + '</td>';
|
||||
appendMsg += '<td width="83"><img src="images/select.png" alt="Select" title="Toggle the selection of this chapter." /></td>';
|
||||
appendMsg += '<td width="83"><img src="images/run.png" alt="Run" title="Run this chapter individually." /></td></tr>';
|
||||
|
||||
$('#chapterSelector table').append(appendMsg);
|
||||
// Find the table row
|
||||
var tr = $('#chapterSelector table tr').filter(":last-child");
|
||||
|
||||
// Attach click listeners to the buttons
|
||||
tr.find("img").filter('[alt="Select"]').bind("click", {tr: tr, index: index}, function(event) {
|
||||
controller.toggleSelection(event.data.index);
|
||||
// Deselect row
|
||||
if(event.data.tr.hasClass("selectedChapter")) {
|
||||
event.data.tr.removeClass("selectedChapter");
|
||||
event.data.tr.find('img').filter('[alt="Selected"]').attr({
|
||||
src: 'images/select.png',
|
||||
alt: 'Select'
|
||||
});
|
||||
}
|
||||
// Select row
|
||||
else {
|
||||
event.data.tr.addClass("selectedChapter");
|
||||
event.data.tr.find('img').filter('[alt="Select"]').attr({
|
||||
src: 'images/selected.png',
|
||||
alt: 'Selected'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.setTestLoading = function(index, path) {
|
||||
var tr = $('#chapterSelector table tr').filter(":nth-child(" + (index+1) + ")");
|
||||
tr.removeClass("waiting");
|
||||
tr.addClass("loading");
|
||||
tr.find(":first-child").html("Loading test file: " + path);
|
||||
};
|
||||
|
||||
/* On test loaded, display the chapter name and the number of tests */
|
||||
this.setTestLoaded = function(index, name, numTests) {
|
||||
var tr = $('#chapterSelector table tr').filter(":nth-child(" + (index+1) + ")");
|
||||
tr.removeClass("loading");
|
||||
tr.find("td").filter(":first-child").html(name + " (" + numTests + " tests)");
|
||||
}
|
||||
|
||||
/* Called when the tests finish executing. */
|
||||
this.finished = function(elapsed) {
|
||||
progressBar.find(".text").html("Testing complete!");
|
||||
if (isSiteDebugMode()) {
|
||||
this.activityBar.text('Overall Execution Time: ' + elapsed + ' minutes');
|
||||
} else {
|
||||
this.activityBar.text('');
|
||||
}
|
||||
}
|
||||
|
||||
this.reset = function () {
|
||||
globalSection.reset();
|
||||
updateCounts();
|
||||
this.activityBar.text('');
|
||||
logger.empty();
|
||||
|
||||
currentSection = globalSection;
|
||||
renderCurrentSection();
|
||||
}
|
||||
|
||||
|
||||
/* Do some setup tasks. */
|
||||
this.setup = function() {
|
||||
backLink = $('#backlinkDiv');
|
||||
backLink.click(goBack);
|
||||
table = $('.results-data-table');
|
||||
|
||||
logger = $("#tableLogger");
|
||||
progressBar = $('#progressbar');
|
||||
this.activityBar = $('#nextActivity');
|
||||
|
||||
$('a.showSource', logger).live("click", openSourceWindow);
|
||||
$('a.showError', logger).live("click", openErrorWindow);
|
||||
$('#ancGenXMLReport').click(createXMLReportWindow);
|
||||
}
|
||||
|
||||
/* Refresh display of the report */
|
||||
this.refresh = function() {
|
||||
renderCurrentSection();
|
||||
}
|
||||
|
||||
/* The state machine for the button display. */
|
||||
this.setState = function(state) {
|
||||
// Hide all the buttons
|
||||
$('.progressBarButtons img').addClass("hide");
|
||||
// Only show what is needed.
|
||||
if(state == 'loading') {
|
||||
$('#btnRunAll').removeClass('hide');
|
||||
$('#btnRunSelected').removeClass('hide');
|
||||
}
|
||||
else if(state == 'paused') {
|
||||
$('#btnResume').removeClass('hide');
|
||||
$('#btnReset').removeClass('hide');
|
||||
}
|
||||
else if(state == 'running') {
|
||||
$('#btnPause').removeClass('hide');
|
||||
}
|
||||
else if(state == 'loaded') {
|
||||
$('#btnRunAll').removeClass('hide');
|
||||
$('#btnRunSelected').removeClass('hide');
|
||||
}
|
||||
};
|
||||
|
||||
//**IMPLEMENTATION DETAILS***************************************************
|
||||
|
||||
/* Renders the current section into the report window. */
|
||||
function renderCurrentSection() {
|
||||
renderBreadcrumbs();
|
||||
if(globalSection.totalTests === 0) {
|
||||
$('#resultMessage').show();
|
||||
} else {
|
||||
$('#resultMessage').hide();
|
||||
}
|
||||
|
||||
$('.totalCases').text(currentSection.totalTests);
|
||||
$('.passedCases').text(currentSection.totalPassed);
|
||||
$('.failedCases').text(currentSection.totalFailed);
|
||||
$('#failedToLoadCounterDetails').text(currentSection.totalFailedToLoad);
|
||||
table.empty();
|
||||
table.append(currentSection.toHTML());
|
||||
// Observe section selection and show source links
|
||||
$('a.section', table).click(sectionSelected);
|
||||
$('a.showSource', table).click(openSourceWindow);
|
||||
}
|
||||
|
||||
/* Opens a window with a test's source code. */
|
||||
function openSourceWindow(e) {
|
||||
var test = tests[e.target.href.match(/#(.+)$/)[1]],
|
||||
popWnd = window.open("", "", "scrollbars=1, resizable=1"),
|
||||
innerHTML = '';
|
||||
|
||||
innerHTML += '<b>Test </b>';
|
||||
innerHTML += '<b>' + test.id + '</b> <br /><br />\n';
|
||||
|
||||
if (test.description) {
|
||||
innerHTML += '<b>Description</b>';
|
||||
innerHTML += '<pre>' +
|
||||
test.description.replace(/</g, '<').replace(/>/g, '>') +
|
||||
' </pre>\n';
|
||||
}
|
||||
|
||||
innerHTML += '<br /><br /><br /><b>Testcase</b>';
|
||||
innerHTML += '<pre>' + test.code + '</pre>\n';
|
||||
|
||||
innerHTML += '<br /><b>Path</b>';
|
||||
innerHTML += '<pre>' + test.path + '</pre>';
|
||||
innerHTML += '<br /><a href="javascript:void(window.open(\'https://github.com/tc39/test262/raw/master/test'
|
||||
innerHTML += test.path.replace("TestCases", "") + '\'));">' + 'GitHub source' + '</a> (might be newer than the testcase source shown above)\n'
|
||||
|
||||
popWnd.document.write(innerHTML);
|
||||
}
|
||||
|
||||
/* Opens a window with a test's failure message. */
|
||||
function openErrorWindow(e) {
|
||||
var test = tests[e.target.href.match(/#(.+)$/)[1]],
|
||||
popWnd = window.open("", "", "scrollbars=1, resizable=1"),
|
||||
innerHTML = '';
|
||||
|
||||
var bugDetails = "";
|
||||
bugDetails += "DESCRIPTION\n*Please insert your description here!*\n\n";
|
||||
bugDetails += "------------------\n";
|
||||
bugDetails += "TEST: " + test.path + "\n";
|
||||
bugDetails += "SOURCE: https://github.com/tc39/test262/raw/master/test" + test.path.replace("TestCases", "") + "\n";
|
||||
bugDetails += "TEST SUITE DATE: " + date + "\n";
|
||||
bugDetails += "PLATFORM: " + navigator.userAgent + "\n";
|
||||
bugDetails += "ERROR: " + test.error + "\n\n";
|
||||
|
||||
|
||||
var bugTemplate = 'https://bugs.ecmascript.org/enter_bug.cgi?product=Test262&bug_severity=normal&component=Tests&short_desc=';
|
||||
bugTemplate += encodeURIComponent('Invalid test? ' + test.id) + "&comment=";
|
||||
bugTemplate += encodeURIComponent(bugDetails);
|
||||
|
||||
innerHTML += '<b>Test </b>';
|
||||
innerHTML += '<b>' + test.id + '</b> <br /><br />\n';
|
||||
|
||||
innerHTML += '<b>Failure</b>';
|
||||
innerHTML += '<pre>' + test.error + '</pre>\n';
|
||||
|
||||
innerHTML += '<br /><br /><b>Testcase</b>';
|
||||
innerHTML += '<pre>' + test.code + '</pre>\n';
|
||||
|
||||
innerHTML += '<br /><br /><b>Broken test?</b>';
|
||||
innerHTML += '<p>If you have reason to believe the JavaScript engine being tested<br />\n';
|
||||
innerHTML += 'is actually OK and there\'s instead something wrong with the test<br />\n';
|
||||
innerHTML += 'itself, please <a href="' + bugTemplate + '" onclick="window.moveTo(0,0);window.resizeTo(screen.width, screen.height);">file a bug.</a></p>\n'
|
||||
|
||||
popWnd.document.write(innerHTML);
|
||||
}
|
||||
|
||||
/* Returns the section object for the specified section id
|
||||
* (eg. "7.1" or "15.4.4.12").
|
||||
*/
|
||||
function getSectionById(id) {
|
||||
if(id == 0)
|
||||
return globalSection;
|
||||
|
||||
var match = id.match(/\d+|[A-F](?=\.)/g);
|
||||
var section = globalSection;
|
||||
|
||||
if (match === null)
|
||||
return section;
|
||||
|
||||
for(var i = 0; i < match.length; i++) {
|
||||
if(typeof section.subsections[match[i]] !== "undefined") {
|
||||
section = section.subsections[match[i]];
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return section;
|
||||
}
|
||||
|
||||
/* Update the page with current status */
|
||||
function updateCounts() {
|
||||
$('#Pass').text(globalSection.totalPassed);
|
||||
$('#Fail').text(globalSection.totalFailed);
|
||||
$('#totalCounter').text(globalSection.totalTests);
|
||||
$('#failedToLoadCounter1').text(globalSection.totalFailedToLoad);
|
||||
$('#failedToLoadCounter').text(globalSection.totalFailedToLoad);
|
||||
progressBar.reportprogress(globalSection.totalTests, totalTests);
|
||||
}
|
||||
|
||||
/* Append a result to the run page's result log. */
|
||||
function logResult(test) {
|
||||
var appendStr = "";
|
||||
altStyle = (altStyle !== ' ') ? ' ' : 'alternate';
|
||||
if (test.result==="fail") {
|
||||
appendStr += '<tbody>';
|
||||
appendStr += '<tr class=\"' + altStyle + '\">';
|
||||
|
||||
appendStr += '<td width=\"20%\">';
|
||||
appendStr += "<a class='showSource' href='#" + test.id + "'>";
|
||||
appendStr += test.id + "</a>";
|
||||
appendStr += '</td>';
|
||||
|
||||
appendStr += '<td>' + test.description + '</td>';
|
||||
|
||||
appendStr += '<td align="right">';
|
||||
appendStr += '<span class=\"Fail\">' + "<a class='showError' href='#" + test.id + "'>";
|
||||
appendStr += 'Fail</a></span></td></tr></tbody>';
|
||||
}
|
||||
|
||||
else if (test.result==="pass") {
|
||||
if (! isSiteDebugMode()) { return;}
|
||||
appendStr += '<tbody><tr class=\"' + altStyle + '\"><td width=\"20%\">';
|
||||
appendStr += "<a class='showSource' href='#" + test.id + "'>";
|
||||
appendStr += test.id + "</a>" + '</td><td>' + test.description;
|
||||
appendStr += '</td><td align="right"><span class=\"Fail\">';
|
||||
appendStr += 'Pass</span></td></tr></tbody>';
|
||||
}
|
||||
else {
|
||||
throw "Result for '" + test.id + "' must either be 'pass' or 'fail', not '" + test.result + "'!";
|
||||
}
|
||||
|
||||
|
||||
logger.append(appendStr);
|
||||
logger.parent().attr("scrollTop", logger.parent().attr("scrollHeight"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
/* Go back to the previous section */
|
||||
function goBack(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if(currentSection === globalSection)
|
||||
return;
|
||||
|
||||
currentSection = currentSection.parentSection;
|
||||
|
||||
// Since users click directly on sub-chapters of the main chapters, don't go back to main
|
||||
// chapters.
|
||||
if(currentSection.parentSection === globalSection)
|
||||
currentSection = globalSection;
|
||||
|
||||
renderCurrentSection();
|
||||
}
|
||||
|
||||
/* Load the table of contents xml to populate the sections. */
|
||||
function loadSections() {
|
||||
var sectionsLoader = new XMLHttpRequest();
|
||||
sectionsLoader.open("GET", TOCFILEPATH, false);
|
||||
sectionsLoader.send();
|
||||
var xmlDoc = sectionsLoader.responseXML;
|
||||
var nodes = xmlDoc.documentElement.childNodes;
|
||||
|
||||
addSectionsFromXML(nodes, globalSection);
|
||||
}
|
||||
|
||||
|
||||
/* Recursively parses the TOC xml, producing nested sections. */
|
||||
function addSectionsFromXML(nodes, parentSection){
|
||||
var subsection;
|
||||
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].nodeName === "sec") {
|
||||
subsection = new Section(parentSection, nodes[i].getAttribute('id'), nodes[i].getAttribute('name'));
|
||||
parentSection.subsections[subsection.id.match(/\d+$|[A-F]$/)] = subsection;
|
||||
addSectionsFromXML(nodes[i].childNodes, subsection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Renders the breadcrumbs for report navigation. */
|
||||
function renderBreadcrumbs() {
|
||||
var container = $('div.crumbContainer div.crumbs');
|
||||
var sectionChain = [];
|
||||
|
||||
var current = currentSection;
|
||||
|
||||
// Walk backwards until we reach the global section.
|
||||
while(current !== globalSection && current.parentSection !== globalSection) {
|
||||
sectionChain.push(current);
|
||||
current = current.parentSection;
|
||||
}
|
||||
|
||||
// Reverse the array since we want to print earlier sections first.
|
||||
sectionChain.reverse();
|
||||
|
||||
// Empty any existing breadcrumbs.
|
||||
container.empty();
|
||||
|
||||
// Static first link to go back to the root.
|
||||
var link = $("<a href='#0' class='setBlack'>Test Sections > </a>");
|
||||
link.bind('click', {sectionId: 0}, sectionSelected)
|
||||
container.append(link);
|
||||
|
||||
for(var i = 0; i < sectionChain.length;i++) {
|
||||
link = $("<a href='#" + sectionChain[i].id + "' class='setBlack'>" + sectionChain[i].id + ": " + sectionChain[i].name + " > </a>");
|
||||
link.bind('click', sectionSelected)
|
||||
container.append(link);
|
||||
}
|
||||
|
||||
// If we can go back, show the back link.
|
||||
if(sectionChain.length > 0) {
|
||||
backLink.show();
|
||||
} else {
|
||||
backLink.hide();
|
||||
}
|
||||
};
|
||||
|
||||
/* Pops up a window with an xml dump of the results of a test. */
|
||||
function createXMLReportWindow() {
|
||||
var reportWindow; //window that will output the xml data
|
||||
var xmlData; //array instead of string concatenation
|
||||
var dateNow;
|
||||
var xml; // stop condition of for loop stored in a local variable to improve performance
|
||||
|
||||
dateNow = new Date();
|
||||
|
||||
xml = '<testRun>\r\n' +
|
||||
'<userAgent>' + window.navigator.userAgent + '</userAgent>\r\n' +
|
||||
'<Date>' + dateNow.toDateString() + '</Date>\r\n' +
|
||||
'<targetTestSuiteName>ECMAScript Test262 Site</targetTestSuiteName>\r\n' +
|
||||
'<targetTestSuiteVersion>' + version + '</targetTestSuiteVersion>\r\n' +
|
||||
'<targetTestSuiteDate>' + date + '</targetTestSuiteDate>\r\n' +
|
||||
' <Tests>\r\n\r\n';
|
||||
|
||||
reportWindow = window.open();
|
||||
reportWindow.document.writeln("<title>ECMAScript Test262 XML</title>");
|
||||
reportWindow.document.write("<textarea id='results' style='width: 100%; height: 800px;'>");
|
||||
reportWindow.document.write(xml);
|
||||
reportWindow.document.write(globalSection.toXML());
|
||||
reportWindow.document.write('</Tests>\r\n</testRun>\r\n</textarea>\r\n');
|
||||
reportWindow.document.close();
|
||||
}
|
||||
|
||||
/* Callback for when the user clicks on a section in the report table. */
|
||||
function sectionSelected(e) {
|
||||
e.preventDefault();
|
||||
currentSection = getSectionById(e.target.href.match(/#(.+)$/)[1]);
|
||||
renderCurrentSection();
|
||||
table.attr("scrollTop", 0);
|
||||
};
|
||||
|
||||
//*************************************************************************
|
||||
// Load the sections.
|
||||
loadSections();
|
||||
}
|
||||
|
||||
var presenter = new Presenter();
|
|
@ -1,154 +0,0 @@
|
|||
/*!
|
||||
* jQuery JavaScript Library v1.4.2
|
||||
* http://jquery.com/
|
||||
*
|
||||
* Copyright 2010, John Resig
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* http://sizzlejs.com/
|
||||
* Copyright 2010, The Dojo Foundation
|
||||
* Released under the MIT, BSD, and GPL Licenses.
|
||||
*
|
||||
* Date: Sat Feb 13 22:33:48 2010 -0500
|
||||
*/
|
||||
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
|
||||
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
|
||||
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
|
||||
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
|
||||
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
|
||||
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
|
||||
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
|
||||
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
|
||||
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
|
||||
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
|
||||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
|
||||
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
|
||||
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
|
||||
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
|
||||
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
|
||||
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
|
||||
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
|
||||
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
||||
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
|
||||
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
|
||||
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
|
||||
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
|
||||
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
|
||||
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
|
||||
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
|
||||
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
|
||||
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
|
||||
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
|
||||
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
|
||||
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
|
||||
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
|
||||
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
|
||||
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
|
||||
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
|
||||
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
|
||||
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
|
||||
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
|
||||
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
|
||||
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
|
||||
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
||||
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
|
||||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
|
||||
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
|
||||
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
|
||||
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
|
||||
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
|
||||
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
|
||||
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
|
||||
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
|
||||
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
|
||||
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
|
||||
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
|
||||
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
|
||||
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
|
||||
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
||||
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
|
||||
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
|
||||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
|
||||
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
|
||||
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
||||
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
|
||||
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
|
||||
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
|
||||
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
|
||||
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
|
||||
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
|
||||
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
|
||||
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
|
||||
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
|
||||
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
|
||||
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
|
||||
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
|
||||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
|
||||
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
|
||||
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
|
||||
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
|
||||
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
|
||||
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
|
||||
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
|
||||
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
|
||||
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
|
||||
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
|
||||
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
|
||||
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
|
||||
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
|
||||
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
|
||||
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
|
||||
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
|
||||
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
|
||||
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
|
||||
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
|
||||
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
|
||||
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
|
||||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
|
||||
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
|
||||
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
|
||||
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
|
||||
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
|
||||
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
|
||||
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
|
||||
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
|
||||
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
|
||||
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
|
||||
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
|
||||
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
|
||||
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
|
||||
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
|
||||
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
|
||||
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
|
||||
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
|
||||
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
|
||||
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
|
||||
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
|
||||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
|
||||
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
|
||||
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
|
||||
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
|
||||
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
|
||||
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
|
||||
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
|
||||
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
|
||||
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
|
||||
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
|
||||
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
|
||||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
|
||||
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
|
||||
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
|
||||
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
|
||||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
|
||||
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
|
||||
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
|
||||
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
|
||||
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
|
||||
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
|
||||
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
|
||||
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
|
||||
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
|
||||
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
|
||||
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
|
|
@ -1,156 +0,0 @@
|
|||
|
||||
/**
|
||||
* jQuery BASE64 functions
|
||||
*
|
||||
* <code>
|
||||
* Encodes the given data with base64.
|
||||
* String $.base64Encode ( String str )
|
||||
* <br />
|
||||
* Decodes a base64 encoded data.
|
||||
* String $.base64Decode ( String str )
|
||||
* </code>
|
||||
*
|
||||
* Encodes and Decodes the given data in base64.
|
||||
* This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies.
|
||||
* Base64-encoded data takes about 33% more space than the original data.
|
||||
* This javascript code is used to encode / decode data using base64 (this encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean). Script is fully compatible with UTF-8 encoding. You can use base64 encoded data as simple encryption mechanism.
|
||||
* If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag).
|
||||
* This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
|
||||
*
|
||||
* Example
|
||||
* Code
|
||||
* <code>
|
||||
* $.base64Encode("I'm Persian.");
|
||||
* </code>
|
||||
* Result
|
||||
* <code>
|
||||
* "SSdtIFBlcnNpYW4u"
|
||||
* </code>
|
||||
* Code
|
||||
* <code>
|
||||
* $.base64Decode("SSdtIFBlcnNpYW4u");
|
||||
* </code>
|
||||
* Result
|
||||
* <code>
|
||||
* "I'm Persian."
|
||||
* </code>
|
||||
*
|
||||
* @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
|
||||
* @link http://www.semnanweb.com/jquery-plugin/base64.html
|
||||
* @see http://www.webtoolkit.info/
|
||||
* @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
|
||||
* @param {jQuery} {base64Encode:function(input))
|
||||
* @param {jQuery} {base64Decode:function(input))
|
||||
* @return string
|
||||
*/
|
||||
|
||||
(function($){
|
||||
|
||||
var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
||||
|
||||
var uTF8Encode = function(string) {
|
||||
string = string.replace(/\x0d\x0a/g, "\x0a");
|
||||
var output = "";
|
||||
for (var n = 0; n < string.length; n++) {
|
||||
var c = string.charCodeAt(n);
|
||||
if (c < 128) {
|
||||
output += String.fromCharCode(c);
|
||||
} else if ((c > 127) && (c < 2048)) {
|
||||
output += String.fromCharCode((c >> 6) | 192);
|
||||
output += String.fromCharCode((c & 63) | 128);
|
||||
} else {
|
||||
output += String.fromCharCode((c >> 12) | 224);
|
||||
output += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||
output += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
};
|
||||
|
||||
var uTF8Decode = function(input) {
|
||||
var string = "";
|
||||
var i = 0;
|
||||
var c = c2 = c3 = c4 = 0;
|
||||
while ( i < input.length ) {
|
||||
c = input.charCodeAt(i);
|
||||
if (c < 128) { // 1 byte encoding - ASCII only
|
||||
string += String.fromCharCode(c);
|
||||
i++;
|
||||
} else if ((c >= 192) && (c < 224)) { // 2 byte encoding - max U+07FF
|
||||
c2 = input.charCodeAt(i+1);
|
||||
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
||||
i += 2;
|
||||
} else if ((c >= 224) && (c < 240)) { // 3 byte encoding - max U+FFFF
|
||||
c2 = input.charCodeAt(i+1);
|
||||
c3 = input.charCodeAt(i+2);
|
||||
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
||||
i += 3;
|
||||
} else if ((c >= 240) && (c < 248)){ // 4 byte encoding - max U+10FFFF. Covers all Unicode CodePoints
|
||||
c2 = input.charCodeAt(i+1);
|
||||
c3 = input.charCodeAt(i+2);
|
||||
c4 = input.charCodeAt(i+3);
|
||||
var codePoint = (((c & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63));
|
||||
if (codePoint > 0x10FFFF) {
|
||||
throw new SyntaxError("invalid UTF-8 code unit sequence");
|
||||
}
|
||||
var highSurrogate = (((codePoint - 0x10000) & 0xFFC00) >>> 10) + 0xD800; // Minus 0x10000, then top 10 bits added to 0xD800
|
||||
var lowSurrogate = ((codePoint - 0x10000) & 0x3FF) + 0xDC00; // Minus 0x10000, then low 10 bits added to 0xDC00
|
||||
string += String.fromCharCode(highSurrogate);
|
||||
string += String.fromCharCode(lowSurrogate);
|
||||
i += 4;
|
||||
|
||||
}
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
$.extend({
|
||||
base64Encode: function(input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
input = uTF8Encode(input);
|
||||
while (i < input.length) {
|
||||
chr1 = input.charCodeAt(i++);
|
||||
chr2 = input.charCodeAt(i++);
|
||||
chr3 = input.charCodeAt(i++);
|
||||
enc1 = chr1 >> 2;
|
||||
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
enc4 = chr3 & 63;
|
||||
if (isNaN(chr2)) {
|
||||
enc3 = enc4 = 64;
|
||||
} else if (isNaN(chr3)) {
|
||||
enc4 = 64;
|
||||
}
|
||||
output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4);
|
||||
}
|
||||
return output;
|
||||
},
|
||||
base64Decode: function(input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3;
|
||||
var enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
||||
while (i < input.length) {
|
||||
enc1 = keyString.indexOf(input.charAt(i++));
|
||||
enc2 = keyString.indexOf(input.charAt(i++));
|
||||
enc3 = keyString.indexOf(input.charAt(i++));
|
||||
enc4 = keyString.indexOf(input.charAt(i++));
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
chr3 = ((enc3 & 3) << 6) | enc4;
|
||||
output = output + String.fromCharCode(chr1);
|
||||
if (enc3 != 64) {
|
||||
output = output + String.fromCharCode(chr2);
|
||||
}
|
||||
if (enc4 != 64) {
|
||||
output = output + String.fromCharCode(chr3);
|
||||
}
|
||||
}
|
||||
output = uTF8Decode(output);
|
||||
return output;
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
|
@ -1,53 +0,0 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 2007 Josh Bush (digitalbush.com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Progress Bar Plugin for jQuery
|
||||
* Version: Alpha 2
|
||||
* Release: 2007-02-26
|
||||
*/
|
||||
(function($) {
|
||||
//Main Method
|
||||
$.fn.reportprogress = function(val, maxVal) {
|
||||
var max = 100;
|
||||
if (maxVal) {
|
||||
max = maxVal;
|
||||
}
|
||||
return this.each(
|
||||
function() {
|
||||
var div = $(this);
|
||||
var innerdiv = div.find(".progress");
|
||||
if (innerdiv.length !== 1) {
|
||||
innerdiv = $("<div class='progress'><span class='text'> </span></div>");
|
||||
div.append(innerdiv);
|
||||
}
|
||||
var width = Math.round(val / max * 100);
|
||||
innerdiv.css("width", width + "%");
|
||||
div.find(".text").html(width + " %");
|
||||
}
|
||||
);
|
||||
};
|
||||
})(jQuery);
|
|
@ -1,159 +0,0 @@
|
|||
/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/* A section of the spec. Stores test results and subsections and some rolled up stats on how many tests passed or
|
||||
* failed under that section
|
||||
*/
|
||||
function Section(parentSection, id, name) {
|
||||
this.parentSection = parentSection;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.subsections = {};
|
||||
this.tests = [];
|
||||
this.totalTests = 0;
|
||||
this.totalPassed = 0;
|
||||
this.totalFailed = 0;
|
||||
this.totalFailedToLoad = 0;
|
||||
|
||||
var section = this,
|
||||
RED_LIMIT = 50,
|
||||
YELLOW_LIMIT = 75,
|
||||
GREEN_LIMIT = 99.9;
|
||||
|
||||
/* Get the class for a result cell given the pass percent. */
|
||||
function rollupCellClass(passPercent) {
|
||||
if(passPercent >= GREEN_LIMIT) {
|
||||
return "reportGreen";
|
||||
} else if (passPercent >= YELLOW_LIMIT) {
|
||||
return "reportLightGreen";
|
||||
} else if (passPercent >= RED_LIMIT) {
|
||||
return "reportYellow";
|
||||
}
|
||||
|
||||
return "reportRed";
|
||||
}
|
||||
|
||||
/* Calculate pass percent */
|
||||
this.passPercent = function() {
|
||||
if(this.totalTests === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return Math.round((this.totalPassed / this.totalTests) * 100);
|
||||
};
|
||||
|
||||
/* Add a test result to this section. Pushes the result to the
|
||||
* test array and passes the result to addTestResult to tabulate
|
||||
* pass/fail numbers
|
||||
*/
|
||||
this.addTest = function(test) {
|
||||
this.tests.push(test);
|
||||
this.addTestResult(test);
|
||||
};
|
||||
|
||||
/* Increments the various rollup counters for this section and all
|
||||
* parent sections
|
||||
*/
|
||||
this.addTestResult = function(test) {
|
||||
this.totalTests++;
|
||||
|
||||
if(test.result === "pass")
|
||||
this.totalPassed++;
|
||||
else
|
||||
this.totalFailed++;
|
||||
|
||||
if (test.error === 'Failed to load test case (probable parse error).')
|
||||
this.totalFailedToLoad++;
|
||||
|
||||
if(this.parentSection !== null)
|
||||
this.parentSection.addTestResult(test);
|
||||
};
|
||||
|
||||
/* Renders this section as HTML. Used for the report page.*/
|
||||
this.toHTML = function(options) {
|
||||
var defaultOptions = {header: false, renderSubsections: true};
|
||||
|
||||
if (typeof options === "undefined") {
|
||||
options = defaultOptions;
|
||||
} else {
|
||||
options = $.extend(defaultOptions, options);
|
||||
}
|
||||
|
||||
var html = '<tbody id="section_' + this.id.replace(/\./g, "_") + '">';
|
||||
|
||||
if(options.header) {
|
||||
html += "<tr><td class='tblHeader' colspan='3'>Chapter " + this.id + " - " + this.name + "</td>" +
|
||||
"<td class='" + rollupCellClass(this.passPercent()) + "'>" + this.passPercent() + "%</td></tr>";
|
||||
}
|
||||
|
||||
for(var i = 0; i < this.tests.length;i++) {
|
||||
test = this.tests[i];
|
||||
html += "<tr><td>" + test.id + "</td>" +
|
||||
"<td>" + test.description + "</td>" +
|
||||
"<td><a class='showSource' href='#" + test.id +
|
||||
"'>[source]</a></td>" +
|
||||
"<td class='" + test.result + "'>" + test.result +
|
||||
"</td></tr>";
|
||||
}
|
||||
|
||||
for(var sectionId in this.subsections) {
|
||||
var section = this.subsections[sectionId];
|
||||
|
||||
if(section.totalTests > 0) {
|
||||
if(options.renderSubsections) {
|
||||
html += section.toHTML({
|
||||
header: true,
|
||||
renderSubsections: false});
|
||||
} else {
|
||||
html += "<tr><td colspan='3'><a class='section' href='#" +
|
||||
section.id + "'>Chapter " + section.id + " - " +
|
||||
section.name + "</a></td>" +
|
||||
"<td class='" +
|
||||
rollupCellClass(section.passPercent()) + "'>" +
|
||||
section.passPercent() + "%</td></tr>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return html + "</tbody>";
|
||||
};
|
||||
|
||||
/* Render this section as XML. Used for the report page. */
|
||||
this.toXML = function() {
|
||||
var xml = "";
|
||||
if(this.id != 0) {
|
||||
xml += "<section id='" + this.id + "' name='" + this.name +
|
||||
"'>\r\n";
|
||||
|
||||
for (var i = 0; i < this.tests.length; i++) {
|
||||
xml += '<test>\r\n' +
|
||||
' <testId>' + this.tests[i].id + '</testId>\r\n' +
|
||||
' <res>' + this.tests[i].result + '</res>\r\n' +
|
||||
'</test>\r\n';
|
||||
}
|
||||
}
|
||||
|
||||
for (var subsection in this.subsections) {
|
||||
xml += this.subsections[subsection].toXML();
|
||||
}
|
||||
|
||||
if(this.id != 0) {
|
||||
xml += '</section>\r\n';
|
||||
}
|
||||
|
||||
return xml;
|
||||
};
|
||||
|
||||
/* Reset counts and remove tests. */
|
||||
this.reset = function() {
|
||||
this.tests = [];
|
||||
this.totalTests = 0;
|
||||
this.totalPassed = 0;
|
||||
this.totalFailed = 0;
|
||||
this.totalFailedToLoad = 0;
|
||||
|
||||
for(var subsection in this.subsections) {
|
||||
this.subsections[subsection].reset();
|
||||
}
|
||||
};
|
||||
}
|
|
@ -1,766 +0,0 @@
|
|||
/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
// Do not cache any JSON files - see
|
||||
// https://bugs.ecmascript.org/show_bug.cgi?id=87
|
||||
$.ajaxSetup( {cache:false});
|
||||
|
||||
/*
|
||||
* Run a test in the browser. Works by injecting an iframe with the test code.
|
||||
*
|
||||
* Public Methods:
|
||||
* * run(id, test): Runs the test specified.
|
||||
*
|
||||
* Callbacks:
|
||||
* * onComplete(test): Called when the test is run. Test object
|
||||
* contains result and error strings describing how the
|
||||
* test ran.
|
||||
*/
|
||||
function BrowserRunner() {
|
||||
var iframe, // injected iframe
|
||||
currentTest, // Current test being run.
|
||||
scriptCache = {}, // Holds the various includes required to run certain tests.
|
||||
instance = this,
|
||||
errorDetectorFileContents,
|
||||
simpleTestAPIContents,
|
||||
globalScopeContents,
|
||||
assertContents,
|
||||
timerContents,
|
||||
startTime,
|
||||
harnessDir = "harness/";
|
||||
|
||||
$.ajax({async: false,
|
||||
dataType: "text",
|
||||
success: function(data){errorDetectorFileContents = data;},
|
||||
url:"scripts/ed.js"});
|
||||
|
||||
$.ajax({async: false,
|
||||
dataType: "text",
|
||||
success: function(data){simpleTestAPIContents = data;},
|
||||
url:harnessDir+"sta.js"});
|
||||
|
||||
$.ajax({async: false,
|
||||
dataType: "text",
|
||||
success: function(data){globalScopeContents = data;},
|
||||
url:"scripts/gs.js"});
|
||||
|
||||
$.ajax({async: false,
|
||||
dataType: "text",
|
||||
success: function(data){assertContents = data;},
|
||||
url:harnessDir+"assert.js"});
|
||||
|
||||
$.ajax({async: false,
|
||||
dataType: "text",
|
||||
success: function(data){timerContents = data;},
|
||||
url:harnessDir+"timer.js"});
|
||||
|
||||
/* Called by the child window to notify that the test has
|
||||
* finished. This function call is put in a separate script block
|
||||
* at the end of the page so errors in the test script block
|
||||
* should not prevent this function from being called.
|
||||
*/
|
||||
function testFinished() {
|
||||
if((typeof currentTest.result) === "undefined") {
|
||||
// We didn't get a call to testRun, which likely means the
|
||||
// test failed to load.
|
||||
currentTest.result = "fail";
|
||||
currentTest.error = "Failed to load test case (probable parse error).";
|
||||
currentTest.description = "Failed to load test case!";
|
||||
} else if((typeof currentTest.error) !== "undefined") {
|
||||
// We have an error logged from testRun.
|
||||
if(currentTest.error instanceof Test262Error) {
|
||||
currentTest.error = currentTest.message;
|
||||
} else {
|
||||
currentTest.error = currentTest.error.name + ": " + currentTest.error.message;
|
||||
}
|
||||
} else if ((typeof currentTest.error === "undefined") && (currentTest.result === "fail")) {
|
||||
currentTest.error = "Test case returned non-true value.";
|
||||
}
|
||||
|
||||
document.body.removeChild(iframe);
|
||||
|
||||
instance.onComplete(currentTest);
|
||||
//update elapsed time
|
||||
controller.testElapsedTime(new Date() - startTime);
|
||||
}
|
||||
|
||||
/* Called from the child window after the test has run. */
|
||||
function testRun(id, path, description, codeString, result, error) {
|
||||
currentTest.id = id;
|
||||
currentTest.path = path;
|
||||
currentTest.description = description;
|
||||
currentTest.result = result;
|
||||
currentTest.error = error;
|
||||
currentTest.code = codeString;
|
||||
}
|
||||
|
||||
function isAsyncTest(code) {
|
||||
return /\$DONE()/.test(code);
|
||||
}
|
||||
|
||||
/* Run the test. */
|
||||
this.run = function (test, code) {
|
||||
startTime = new Date();
|
||||
|
||||
//--Detect proper window.onerror support
|
||||
if (instance.supportsWindowOnerror===undefined) {
|
||||
var iframePrereqs = document.createElement("iframe");
|
||||
iframePrereqs.setAttribute("id", "prereqsIframe");
|
||||
if (!/firefox/i.test(navigator.userAgent)) {
|
||||
iframePrereqs.setAttribute("style", "display:none");
|
||||
}
|
||||
document.body.appendChild(iframePrereqs);
|
||||
|
||||
var iwinPrereqs = iframePrereqs.contentWindow;
|
||||
var idocPrereqs = iwinPrereqs.document;
|
||||
idocPrereqs.open();
|
||||
|
||||
iwinPrereqs.failCount = 0;
|
||||
|
||||
var stuff = [
|
||||
"window.onerror = function(a, b, c) { this.failCount++; }",
|
||||
"va xyz =",
|
||||
"throw Error();"
|
||||
];
|
||||
|
||||
for(var i in stuff) {
|
||||
idocPrereqs.writeln("<script type='text/javascript'>");
|
||||
idocPrereqs.writeln(stuff[i]);
|
||||
idocPrereqs.writeln("</script>");
|
||||
}
|
||||
idocPrereqs.close();
|
||||
|
||||
//TODO - 500ms *should* be a sufficient delay
|
||||
setTimeout(function() {
|
||||
instance.supportsWindowOnerror = (iwinPrereqs.failCount === 2);
|
||||
//alert(iwinPrereqs.failCount);
|
||||
document.body.removeChild(iframePrereqs);
|
||||
instance.run(test, code);
|
||||
}, 500);
|
||||
return 0; // initial config, ignore this timing.
|
||||
}
|
||||
|
||||
currentTest = {};
|
||||
for (var tempIndex in test) {
|
||||
if (test.hasOwnProperty(tempIndex)) {
|
||||
currentTest[tempIndex] = test[tempIndex];
|
||||
}
|
||||
}
|
||||
currentTest.code = code;
|
||||
|
||||
iframe = document.createElement("iframe");
|
||||
iframe.setAttribute("id", "runnerIframe");
|
||||
//FireFox has a defect where it doesn't fire window.onerror for an iframe if the iframe
|
||||
//is invisible.
|
||||
if (!/firefox/i.test(navigator.userAgent)) {
|
||||
iframe.setAttribute("style", "display:none");
|
||||
}
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
var iwin = window.frames[window.frames.length - 1];
|
||||
var idoc = iwin.document;
|
||||
idoc.open();
|
||||
|
||||
// Set up some globals.
|
||||
iwin.testRun = testRun;
|
||||
iwin.testFinished = testFinished;
|
||||
|
||||
//TODO: these should be moved to sta.js
|
||||
var includes,
|
||||
include;
|
||||
|
||||
includes = test.includes;
|
||||
if (includes && includes.length) {
|
||||
// We have some includes, so loop through each include and
|
||||
// pull in the dependencies.
|
||||
for (var i = 0; i < includes.length; i++) {
|
||||
include = includes[i].replace(/.*\(('|")(.*)('|")\)/, "$2");
|
||||
|
||||
// First check to see if we have this script cached
|
||||
// already, and if not, grab it.
|
||||
if (typeof scriptCache[include] === "undefined") {
|
||||
$.ajax({
|
||||
async: false,
|
||||
url: 'harness/' + include,
|
||||
success: function (s) { scriptCache[include] = s; }
|
||||
});
|
||||
}
|
||||
|
||||
// Finally, write the required script to the window.
|
||||
idoc.writeln("<script type='text/javascript'>" + scriptCache[include] + "</script>");
|
||||
}
|
||||
}
|
||||
|
||||
//Write out all of our helper functions
|
||||
//idoc.writeln("<script type='text/javascript' src='harness/sta.js'>" + "</script>");
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(simpleTestAPIContents);
|
||||
idoc.writeln("</script>");
|
||||
|
||||
iwin.iframeError = undefined;
|
||||
iwin.onerror = undefined;
|
||||
iwin.testDescrip = currentTest;
|
||||
|
||||
//Add an error handler capable of catching so-called early errors
|
||||
//idoc.writeln("<script type='text/javascript' src='harness/ed.js'>" + "</script>")
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(errorDetectorFileContents);
|
||||
idoc.writeln("</script>");
|
||||
|
||||
//Validate the results
|
||||
//idoc.writeln("<script type='text/javascript' src='harness/gs.js' defer>" + "</script>");
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(globalScopeContents);
|
||||
idoc.writeln("</script>");
|
||||
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(assertContents);
|
||||
idoc.writeln("</script>");
|
||||
|
||||
//this is mainly applicable for consoles that do not have setTimeout support
|
||||
//idoc.writeln("<script type='text/javascript' src='harness/timer.js' defer>" + "</script>");
|
||||
if(setTimeout === undefined && isAsyncTest(code)) {
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(timerContents);
|
||||
idoc.writeln("</script>");
|
||||
}
|
||||
|
||||
//Run the code
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
idoc.writeln(this.compileSource(test, code));
|
||||
idoc.writeln("</script>");
|
||||
|
||||
idoc.writeln("<script type='text/javascript'>");
|
||||
|
||||
if (!isAsyncTest(code)) {
|
||||
//if the test is synchronous - call $DONE immediately
|
||||
idoc.writeln("if(typeof $DONE === 'function') $DONE()");
|
||||
} else {
|
||||
//in case the test does not call $DONE asynchronously then
|
||||
//bailout after 1 min or given bailout time by calling $DONE
|
||||
var asyncval = parseInt(test.timeout);
|
||||
var testTimeout = asyncval !== asyncval ? 2000 : asyncval;
|
||||
idoc.writeln("setTimeout(function() {$ERROR(\" Test Timed Out at " + testTimeout +"\" )} ," + testTimeout + ")");
|
||||
}
|
||||
idoc.writeln("</script>");
|
||||
idoc.close();
|
||||
};
|
||||
|
||||
//--Helper functions-------------------------------------------------------
|
||||
this.convertForEval = function(txt) {
|
||||
txt = txt.replace(/\\/g,"\\\\");
|
||||
txt = txt.replace(/\"/g,"\\\"");
|
||||
txt = txt.replace(/\'/g,"\\\'");
|
||||
txt = txt.replace(/\r/g,"\\r");
|
||||
txt = txt.replace(/\n/g,"\\n");
|
||||
return txt;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform the test source code according to the test metadata and the
|
||||
* capabilities of the current environment.
|
||||
*
|
||||
* @param {object} test - a test object as retrieved by TestLoader
|
||||
* @param {string} code - unmodified test source code
|
||||
*
|
||||
* @returns {string} the transformed source code
|
||||
*/
|
||||
BrowserRunner.prototype.compileSource = function(test, code) {
|
||||
var flags = test.flags;
|
||||
|
||||
if (flags && flags.indexOf("raw") === -1 &&
|
||||
flags.indexOf("onlyStrict") > -1) {
|
||||
code = "'use strict';\n" + code;
|
||||
}
|
||||
|
||||
if (!this.supportsWindowOnerror) {
|
||||
code = "try {eval(\"" + this.convertForEval(code) +
|
||||
"\");} catch(e) {window.onerror(e.toString(), null, null);}";
|
||||
}
|
||||
|
||||
return code;
|
||||
};
|
||||
|
||||
/* Loads tests from the sections specified in testcases.json.
|
||||
* Public Methods:
|
||||
* * getNextTest() - Start loading the next test.
|
||||
* * reset() - Start over at the first test.
|
||||
*
|
||||
* Callbacks:
|
||||
* * onLoadingNextSection(path): Called after a request is sent for the next section json, with the path to that json.
|
||||
* * onInitialized(totalTests): Called after the testcases.json is loaded and parsed.
|
||||
* * onTestReady(id, code): Called when a test is ready with the
|
||||
* test's id and code.
|
||||
* * onTestsExhausted(): Called when there are no more tests to run.
|
||||
*/
|
||||
function TestLoader() {
|
||||
var testGroups = [],
|
||||
testGroupIndex = 0,
|
||||
currentTestIndex = 0,
|
||||
loader = this,
|
||||
mode = "all";
|
||||
|
||||
this.loadedFiles = 0;
|
||||
this.version = undefined;
|
||||
this.date = undefined;
|
||||
this.totalTests = 0;
|
||||
this.runningTests = 0;
|
||||
|
||||
/* Get the XML for the next section */
|
||||
function getNextXML() {
|
||||
currentTestIndex = 0;
|
||||
|
||||
// already loaded this section.
|
||||
if(testGroups[testGroupIndex].status == 'loaded') {
|
||||
testGroups[testGroupIndex].onLoaded = function(){};
|
||||
loader.getNextTest();
|
||||
return;
|
||||
}
|
||||
// not loaded, so we attach a callback to come back here when the file loads.
|
||||
else {
|
||||
presenter.updateStatus("Loading file: " + testGroups[testGroupIndex].path);
|
||||
testGroups[testGroupIndex].onLoaded = getNextXML;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the test list xml */
|
||||
function loadTestXML() {
|
||||
var testsListLoader = new XMLHttpRequest();
|
||||
|
||||
$.ajax({url: TEST_LIST_PATH, dataType: 'json', success: function(data) {
|
||||
var testSuite = data.testSuite;
|
||||
|
||||
loader.version = data.version;
|
||||
loader.date = data.date;
|
||||
loader.totalTests = data.numTests;
|
||||
|
||||
for (var i = 0; i < testSuite.length; i++) {
|
||||
testGroups[i] = {
|
||||
path: testSuite[i],
|
||||
tests: [],
|
||||
selected: false,
|
||||
status: 'waiting',
|
||||
onLoaded: function(){}
|
||||
};
|
||||
presenter.setTestWaiting(i, testSuite[i]);
|
||||
|
||||
var tr = $('#chapterSelector table tr').filter(':nth-child(' + (i+1) + ')');
|
||||
tr.find('img').filter('[alt="Run"]').bind('click', {index:i}, function(event){
|
||||
controller.runIndividualTest(event.data.index);
|
||||
});
|
||||
}
|
||||
loader.onInitialized(loader.totalTests);
|
||||
getFile();
|
||||
}});
|
||||
}
|
||||
|
||||
/* Get the test file. Handles all the logic of figuring out the next file to load. */
|
||||
function getFile(index) {
|
||||
index = (arguments.length == 0) ? -1 : index;
|
||||
|
||||
// Look for selected waiting chapters (priority because you'll probably want to run them soon)
|
||||
for(var i = 0; index == -1 && i < testGroups.length; i++) {
|
||||
if(testGroups[i].status == 'waiting' && testGroups[i].selected) {
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Look for just chapters waiting to be loaded.
|
||||
for(var i = 0; index == -1 && i < testGroups.length; i++) {
|
||||
if(testGroups[i].status == 'waiting') {
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
|
||||
if(index == -1) {
|
||||
// Still -1? No more tests are waiting to be loaded then.
|
||||
if(controller.state == 'loading') {
|
||||
presenter.setState('loaded');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
presenter.setTestLoading(index, testGroups[index].path);
|
||||
// the only other status that should be set when we get here is 'priorityloading'
|
||||
if(testGroups[index].status == 'waiting') {
|
||||
testGroups[index].status = 'loading';
|
||||
}
|
||||
|
||||
loader.onTestStartLoading(index, testGroups[index].path);
|
||||
// Create the AJAX call to grab the file.
|
||||
$.ajax({
|
||||
url: testGroups[index].path,
|
||||
dataType: 'json',
|
||||
// Callback with the chapter name and number of tests.
|
||||
success: function(data, status, xhr) {
|
||||
// Save the data for later usage
|
||||
testGroups[index].tests = data.testsCollection.tests;
|
||||
onTestLoaded(index, data.testsCollection.name, data.testsCollection.tests.length);
|
||||
},
|
||||
error: function(xhr, textStatus, errorThrown) {
|
||||
// TODO: Catch this error and update UI accordingly. Unlikely to happen, but errors would be 404 or 5-- errors.
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* Executes when a test file finishes loading. */
|
||||
function onTestLoaded(index, name, numTests) {
|
||||
presenter.setTestLoaded(index, name, numTests);
|
||||
|
||||
if(testGroups[index].selected && mode == "multiple") {
|
||||
loader.runningTests += numTests;
|
||||
loader.onInitialized( loader.runningTests );
|
||||
}
|
||||
|
||||
// The loading status is only assigned when downloading files in sequence, otherwise it
|
||||
// gets the status of priorityloading. When loading out of order, we only want to download
|
||||
// the single file, so we'll only tell it to get the next file when we see a status of
|
||||
// loading.
|
||||
if(testGroups[index].status == 'loading') {
|
||||
getFile(); // triggers downloading the next file
|
||||
testGroups[index].status = 'loaded';
|
||||
}
|
||||
else if(testGroups[index].status == 'priorityloading') {
|
||||
// Run the test
|
||||
testGroups[index].status = 'loaded';
|
||||
loader.setChapter(index);
|
||||
}
|
||||
|
||||
testGroups[index].onLoaded();
|
||||
};
|
||||
|
||||
function getIdFromPath (path) {
|
||||
//path is of the form "a/b/c.js"
|
||||
|
||||
var id = path.split("/");
|
||||
//id is now of the form ["a", "b", "c.js"];
|
||||
|
||||
id = id[id.length-1];
|
||||
//id is now of the form "c.js"
|
||||
|
||||
id = id.replace(/\.js$/i, "");
|
||||
//id is now of the form "c"
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
/* Move on to the next test */
|
||||
this.getNextTest = function() {
|
||||
// If the file is loaded
|
||||
if(testGroups[testGroupIndex].status == "loaded")
|
||||
{
|
||||
// And if we have tests left in this file
|
||||
if(currentTestIndex < testGroups[testGroupIndex].tests.length) {
|
||||
// Run the next test
|
||||
var test = testGroups[testGroupIndex].tests[currentTestIndex++];
|
||||
var scriptCode = test.code;
|
||||
test.id = getIdFromPath(test.path);
|
||||
|
||||
loader.onTestReady(test, $.base64Decode(scriptCode));
|
||||
}
|
||||
// If there are no tests left and we aren't just running one file
|
||||
else if(testGroupIndex < testGroups.length - 1 && mode !== "one") {
|
||||
// And if we are running multiple chapters
|
||||
if(mode == "multiple") {
|
||||
var i = testGroupIndex + 1;
|
||||
testGroupIndex = -1;
|
||||
for(; i < testGroups.length && testGroupIndex == -1; i++) {
|
||||
if(testGroups[i].selected === true) {
|
||||
testGroupIndex = i;
|
||||
}
|
||||
}
|
||||
if(testGroupIndex == -1) { // we couldn't find a test we haven't run yet
|
||||
loader.onTestsExhausted();
|
||||
return;
|
||||
}
|
||||
}
|
||||
// And if
|
||||
else {
|
||||
// We don't have tests left in this test group, so move on
|
||||
// to the next.
|
||||
testGroupIndex++;
|
||||
}
|
||||
getNextXML();
|
||||
}
|
||||
//
|
||||
else {
|
||||
// We're done.
|
||||
loader.onTestsExhausted();
|
||||
}
|
||||
}
|
||||
else {
|
||||
presenter.updateStatus("Loading test file: " + testGroups[testGroupIndex].path);
|
||||
testGroups[testGroupIndex].onLoaded = getNextXML;
|
||||
}
|
||||
};
|
||||
|
||||
/* Reset counters that track the next test (so we test from the beginning) */
|
||||
this.reset = function() {
|
||||
mode = "all";
|
||||
currentTestIndex = 0;
|
||||
testGroupIndex = 0;
|
||||
};
|
||||
|
||||
/* Begin downloading test files. */
|
||||
this.startLoadingTests = function() {
|
||||
loadTestXML();
|
||||
};
|
||||
|
||||
/* Prepare for testing a single chapter. */
|
||||
this.setChapter = function(index) {
|
||||
currentTestIndex = 0;
|
||||
testGroupIndex = index;
|
||||
mode = "one";
|
||||
|
||||
if(testGroups[index].status == 'loaded') {
|
||||
loader.onInitialized(testGroups[index].tests.length);
|
||||
}
|
||||
else {
|
||||
testGroups[index].status = 'priorityloading';
|
||||
getFile(index);
|
||||
loader.onInitialized(0);
|
||||
}
|
||||
};
|
||||
|
||||
/* Prepare for testing multiple chapters. Returns true if at least one chapter was selected. */
|
||||
this.setMultiple = function() {
|
||||
// Find the index of the first selection
|
||||
var firstSelectedIndex = -1;
|
||||
for(var i = 0; firstSelectedIndex == -1 && i < testGroups.length; i++) {
|
||||
if(testGroups[i].selected) {
|
||||
firstSelectedIndex = i;
|
||||
}
|
||||
}
|
||||
// If we didn't find a selected index, just quit.
|
||||
if(firstSelectedIndex == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Begin loading the file immediately, if necessary
|
||||
if(testGroups[firstSelectedIndex].status == 'waiting') {
|
||||
getFile(firstSelectedIndex);
|
||||
}
|
||||
|
||||
mode = "multiple";
|
||||
testGroupIndex = firstSelectedIndex; // start at this chapter
|
||||
currentTestIndex = 0; // start at test 0
|
||||
|
||||
// Count the number of tests
|
||||
runningTests = 0;
|
||||
for(var i = 0; i < testGroups.length; i++) {
|
||||
runningTests += (testGroups[i].selected && testGroups[i].status == 'loaded') ? testGroups[i].tests.length : 0;
|
||||
}
|
||||
loader.onInitialized(runningTests);
|
||||
return true;
|
||||
};
|
||||
|
||||
this.getNumTestFiles = function() {
|
||||
return testGroups.length;
|
||||
};
|
||||
|
||||
/* Toggle the selection of a file. */
|
||||
this.toggleSelection = function(index) {
|
||||
testGroups[index].selected = !testGroups[index].selected;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Controls test generation and running, and sends results to the presenter. */
|
||||
function Controller() {
|
||||
var state = 'undefined';
|
||||
var runner = new BrowserRunner();
|
||||
var loader = new TestLoader();
|
||||
var controller = this;
|
||||
var startTime;
|
||||
var elapsed = 0;
|
||||
//Hook which allows browser implementers to hook their own test harness API
|
||||
//into this test framework to handle test case failures and passes in their
|
||||
//own way (e.g., logging failures to the filesystem)
|
||||
this.implementerHook = {
|
||||
//Adds a test result
|
||||
addTestResult: function (test) { },
|
||||
|
||||
//Called whenever all tests have finished running. Provided with the
|
||||
//elapsed time in milliseconds.
|
||||
finished: function(elapsed) { }
|
||||
};
|
||||
|
||||
/* Executes when a test case finishes executing. */
|
||||
runner.onComplete = function(test) {
|
||||
presenter.addTestResult(test);
|
||||
try {
|
||||
controller.implementerHook.addTestResult(test);
|
||||
} catch(e) { /*no-op*/}
|
||||
|
||||
if(state === 'running') {
|
||||
setTimeout(loader.getNextTest, 10);
|
||||
}
|
||||
};
|
||||
|
||||
/* Executes when the loader has been initialized. */
|
||||
loader.onInitialized = function(totalTests) {
|
||||
if(arguments.length == 0) {
|
||||
totalTests = loader.totalTests;
|
||||
}
|
||||
presenter.setTotalTests(totalTests);
|
||||
};
|
||||
|
||||
/* Executes when a test file starts loading. */
|
||||
loader.onTestStartLoading = function(index, path) {
|
||||
presenter.setTestLoading(index, path);
|
||||
}
|
||||
|
||||
/* Executes when a test is ready to run. */
|
||||
loader.onTestReady = function(testObj, testSrc) {
|
||||
presenter.updateStatus("Running Test: " + testObj.id);
|
||||
runner.run(testObj, testSrc);
|
||||
};
|
||||
|
||||
/* Executes when there are no more tests to run. */
|
||||
loader.onTestsExhausted = function() {
|
||||
elapsed = elapsed/(1000*60); //minutes
|
||||
elapsed = elapsed.toFixed(3);
|
||||
|
||||
state = (loader.loadedFiles == loader.getNumTestFiles()) ? 'loaded' : 'loading';
|
||||
presenter.setState(state);
|
||||
presenter.finished(elapsed);
|
||||
try {
|
||||
controller.implementerHook.finished(elapsed);
|
||||
} catch(e) { /*no-op*/}
|
||||
};
|
||||
|
||||
/* Start the test execution. */
|
||||
this.start = function() {
|
||||
elapsed = 0;
|
||||
state = 'running';
|
||||
presenter.setState(state);
|
||||
loader.getNextTest();
|
||||
};
|
||||
|
||||
/* Pause the test execution. */
|
||||
this.pause = function() {
|
||||
state = 'paused';
|
||||
presenter.setState(state);
|
||||
};
|
||||
|
||||
/* Reset the testing status. */
|
||||
this.reset = function() {
|
||||
loader.onInitialized();
|
||||
loader.reset();
|
||||
presenter.reset();
|
||||
|
||||
state = (loader.loadedFiles == loader.getNumTestFiles()) ? 'loaded' : 'loading';
|
||||
presenter.setState(state);
|
||||
};
|
||||
|
||||
/* Start loading tests. */
|
||||
this.startLoadingTests = function() {
|
||||
state = 'loading';
|
||||
presenter.setState(state);
|
||||
loader.startLoadingTests();
|
||||
}
|
||||
|
||||
/* Set the individual chapter in the laoder and start the controller. */
|
||||
this.runIndividualTest = function(index) {
|
||||
controller.reset();
|
||||
loader.setChapter(index);
|
||||
controller.start();
|
||||
}
|
||||
|
||||
/* Compile a list of the selected tests and start the controller. */
|
||||
this.runSelected = function() {
|
||||
controller.reset();
|
||||
if(loader.setMultiple()) {
|
||||
controller.start();
|
||||
}
|
||||
}
|
||||
|
||||
this.runAll = function() {
|
||||
controller.reset();
|
||||
controller.start();
|
||||
}
|
||||
|
||||
this.toggleSelection = function(index) {
|
||||
loader.toggleSelection(index);
|
||||
}
|
||||
|
||||
this.testElapsedTime = function(time){
|
||||
elapsed += time;
|
||||
}
|
||||
}
|
||||
|
||||
var controller = new Controller();
|
||||
|
||||
/* Helper function which shows if we're in the 'debug' mode of the Test262 site.
|
||||
This mode is only useful for debugging issues with the test harness and
|
||||
website. */
|
||||
function isSiteDebugMode() {
|
||||
var str=window.location.href.substring(window.location.href.indexOf("?")+1);
|
||||
if(str.indexOf("sitedebug") > -1) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$(function () {
|
||||
presenter.setup();
|
||||
$('.content-home').show();
|
||||
// Adding attribute to the tabs (e.g. Home, Run etc.) and
|
||||
// attaching the click event on buttons (e.g. Reset, Start etc.)
|
||||
$('.nav-link').each(function (index) {
|
||||
//Adding "targetDiv" attribute to the header tab and on that
|
||||
//basis the div related to header tabs are displayed
|
||||
if (index === 0) {
|
||||
$(this).attr('targetDiv', '.content-home');
|
||||
} else if (index === 1) {
|
||||
$(this).attr('targetDiv', '.content-tests');
|
||||
} else if (index === 2) {
|
||||
$(this).attr('targetDiv', '.content-results');
|
||||
$(this).attr('testRunning', 'false');
|
||||
} else if (index === 3) {
|
||||
$(this).attr('targetDiv', '.content-dev');
|
||||
}
|
||||
else {
|
||||
$(this).attr('targetDiv', '.content-browsers');
|
||||
}
|
||||
|
||||
//Attaching the click event to the header tab that shows the
|
||||
//respective div of header
|
||||
$(this).click(function () {
|
||||
var target = $(this).attr('targetDiv');
|
||||
$('#contentContainer > div:visible').hide();
|
||||
$('.navBar .selected').toggleClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$(target).show();
|
||||
|
||||
//If clicked tab is Result, it generates the results.
|
||||
if ($(target).hasClass('content-results')) {
|
||||
presenter.refresh();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Attach click events to all the control buttons.
|
||||
$('#btnRunAll').click(controller.runAll);
|
||||
$('#btnReset').click(controller.reset);
|
||||
$('#btnRunSelected').click(controller.runSelected);
|
||||
$('#btnPause').click(controller.pause);
|
||||
$('#btnResume').click(controller.start);
|
||||
|
||||
var SUITE_DESCRIP_PATH = "json/suiteDescrip.json";
|
||||
$.ajax({ url: SUITE_DESCRIP_PATH, dataType: 'json', success: function (data) {
|
||||
presenter.setVersion(data.version);
|
||||
presenter.setDate(data.date);
|
||||
}
|
||||
});
|
||||
|
||||
// Start loading the files right away.
|
||||
controller.startLoadingTests();
|
||||
|
||||
});
|
|
@ -1,590 +0,0 @@
|
|||
/* CSS Document */
|
||||
|
||||
body
|
||||
{
|
||||
background-color: #fff;
|
||||
font-family: Tahoma, Arial, Helvetica, sans-serif;
|
||||
font-size: 1em;
|
||||
color: #333;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
text-decoration: none;
|
||||
color: #0000FF;
|
||||
cursor: hand;
|
||||
}
|
||||
|
||||
.wrapper, .content-container
|
||||
{
|
||||
width: 800px;
|
||||
max-width: 800px;
|
||||
margin: 0px auto;
|
||||
}
|
||||
|
||||
.mainHeader
|
||||
{
|
||||
display:block;
|
||||
height:50px;
|
||||
}
|
||||
|
||||
.mainHeader p
|
||||
{
|
||||
color: black;
|
||||
margin: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
#ECMAscript
|
||||
{
|
||||
color: #f2a612;
|
||||
}
|
||||
|
||||
#ecmaSCRIPT
|
||||
{
|
||||
color: #868686;
|
||||
}
|
||||
|
||||
#ecmascriptbacklink
|
||||
{
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-top: 1.5em;
|
||||
font-size: 0.4em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.navBar
|
||||
{
|
||||
height: 60px;
|
||||
font-size: 1.3em;
|
||||
background-color: #868686;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 800px;
|
||||
margin-bottom : 20px;
|
||||
}
|
||||
|
||||
.navBar ul
|
||||
{
|
||||
list-style: none;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.navBar li
|
||||
{
|
||||
float: left;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navBar li a
|
||||
{
|
||||
height: 60px;
|
||||
/*display: block; */
|
||||
float: left;
|
||||
line-height: 60px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
/* min-width: 160px; */
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.navBar a:visited
|
||||
{
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.navBar a:hover
|
||||
{
|
||||
text-decoration: none;
|
||||
color: #f5be51;
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.navBar li a.selected
|
||||
{
|
||||
background-color: #434343;
|
||||
color: #f5be51;
|
||||
}
|
||||
|
||||
|
||||
p.headers
|
||||
{
|
||||
color: #f2a612;
|
||||
margin: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
p.content
|
||||
{
|
||||
font-size: 0.9em;
|
||||
color: #444;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
li.content
|
||||
{
|
||||
font-size: 0.9em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.footer
|
||||
{
|
||||
font-size: 0.7em;
|
||||
border-top: 1px solid #f2a612;
|
||||
padding: 5px;
|
||||
text-align: left;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.footer a, #footer a:visited, #footer a:active
|
||||
{
|
||||
color: #0000FF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.footer div.links
|
||||
{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.footer div.copyright
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* Progress Bar Styles - Begin */
|
||||
/* progress bar container */
|
||||
|
||||
.progressBarHolder
|
||||
{
|
||||
text-align: left;
|
||||
height: 25px;
|
||||
margin-bottom: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#progressbar
|
||||
{
|
||||
border: 1px solid #F93;
|
||||
position: relative;
|
||||
color: black;
|
||||
text-align: left;
|
||||
width: 458px;
|
||||
height: 23px;
|
||||
margin-bottom: 5px;
|
||||
float: left;
|
||||
padding: 1px;
|
||||
}
|
||||
/* color bar */
|
||||
#progressbar div.progress
|
||||
{
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
background-image: url(../images/progressbarbg.png);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
/* text on bar */
|
||||
#progressbar div.progress .text
|
||||
{
|
||||
}
|
||||
/* text off bar */
|
||||
#progressbar .text
|
||||
{
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
top: 3px;
|
||||
vertical-align: middle;
|
||||
font-size: 0.8em;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
}
|
||||
/* Progress Bar Styles - End */
|
||||
|
||||
.progressBarButtons
|
||||
{
|
||||
display: inline;
|
||||
float: left;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.progressBarButtons img
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.progressBarButtons img.disabled
|
||||
{
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/*ToDo: to be deleted*/
|
||||
.ProgressBarCounter
|
||||
{}
|
||||
|
||||
.resultsHeader
|
||||
{
|
||||
text-align: left;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.resultsHeader .separator
|
||||
{
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.pass, .passedCases
|
||||
{
|
||||
color: #36a812;
|
||||
}
|
||||
|
||||
.fail, .failedCases
|
||||
{
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.resultsTableHolder
|
||||
{
|
||||
text-align: left;
|
||||
font-size: 0.8em;
|
||||
height: 300px;
|
||||
border: 1px solid #CCC;
|
||||
overflow: auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.reportTableHolder
|
||||
{
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.reportTblHeader
|
||||
{
|
||||
padding: 5px;
|
||||
border-bottom: 1px dotted #999;
|
||||
background-image: url(../images/tblreportheaderbg.png);
|
||||
background-repeat: repeat-x;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.resultsTableHolder a, a:visited
|
||||
{
|
||||
color: #0000FF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.resultsTableHolder td
|
||||
{
|
||||
padding: 5px;
|
||||
border-bottom: 1px dotted #999;
|
||||
}
|
||||
|
||||
.resultsTableHolder tr.alternate td
|
||||
{
|
||||
padding: 5px;
|
||||
border-bottom: 1px dotted #999;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.resultsTableHolder td.tblHeader
|
||||
{
|
||||
padding: 5px;
|
||||
border-bottom: 1px dotted #999;
|
||||
background-image: url(../images/tblheaderbg.png);
|
||||
background-repeat: repeat-x;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.resultsTableHolder td.tblSectionHeader
|
||||
{
|
||||
padding: 5px;
|
||||
border-bottom: 1px dotted #999;
|
||||
background-image: url(images/tblsectionheader.png);
|
||||
background-repeat: repeat-x;
|
||||
color: #f2a612;
|
||||
}
|
||||
|
||||
.reportRed
|
||||
{
|
||||
background-color: #f85050;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.reportGreen
|
||||
{
|
||||
background-color: #63be00;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.reportLightGreen
|
||||
{
|
||||
background-color: #63be7b;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.reportYellow
|
||||
{
|
||||
background-color: #f7ba44;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.downloadLinks, #nextActivity
|
||||
{
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/* New Styles - End */
|
||||
.content-container { color: #444;}
|
||||
.content-home, .content-dev, .content-tests, .content-results, .content-results-detailed, .content-browsers { display: none; }
|
||||
.nav-link { cursor: pointer;}
|
||||
.table-logger { overflow: scroll; }
|
||||
#resultsTableHolder { overflow: auto; }
|
||||
.log-row{ width: 100%; }
|
||||
.log-row-leftcol { width: 104px; font-weight: bold; }
|
||||
.log-row-midcol { font-weight: bold; padding-right: 10px; }
|
||||
.log-row-rightcol { color: #ff0000;font-weight: bold; }
|
||||
.result-fail{ color: #ff0000;font-weight: bold}
|
||||
.result-pass{ color: #008000;font-weight: bold}
|
||||
|
||||
.chaptername
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
background-color: #6699CC;
|
||||
}
|
||||
|
||||
#resultTable
|
||||
{
|
||||
overflow: scroll;
|
||||
height: 460px;
|
||||
}
|
||||
|
||||
.sectionName
|
||||
{}
|
||||
|
||||
.results-detailed-data-table
|
||||
{
|
||||
border: 0px;
|
||||
border-style: solid;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.results-detailed-data-table td
|
||||
{}
|
||||
|
||||
.sectionId
|
||||
{}
|
||||
|
||||
.detailedResult
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#resultDetailTable
|
||||
{
|
||||
width: 100%;
|
||||
height: 450px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.passedTestCases
|
||||
{
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
.failedTestCases
|
||||
{
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.content-results-subSections
|
||||
{}
|
||||
|
||||
.results-SubSections-data-table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 700px;
|
||||
}
|
||||
|
||||
.results-SubSections-data-table .alignBottom
|
||||
{
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.results-SubSections-data-table td
|
||||
{
|
||||
border: 1px solid #000000;
|
||||
padding: 3px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.link1
|
||||
{}
|
||||
|
||||
.link2
|
||||
{}
|
||||
|
||||
.reportNav
|
||||
{}
|
||||
|
||||
.crumbContainer, .setBlack, .setBlue{
|
||||
margin-bottom: 0px;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
.setBlack
|
||||
{
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.setBlue
|
||||
{
|
||||
color: #0000FF;
|
||||
}
|
||||
|
||||
.backlink
|
||||
{
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.crumbs
|
||||
{
|
||||
width: 680px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.downloadLinks a
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.loading
|
||||
{
|
||||
min-height: 300px;
|
||||
background: url(../images/spinner.gif) no-repeat center center;
|
||||
}
|
||||
|
||||
/* <Loading Indicator> */
|
||||
.indicatorContainer
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.busy .indicatorContainer
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
|
||||
.disabledBackground
|
||||
{
|
||||
width: 98%;
|
||||
min-height: 97%;
|
||||
opacity: 0.1;
|
||||
filter: alpha(opacity=10);
|
||||
background-color: #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#loadingIndicator
|
||||
{
|
||||
bottom: 50%;
|
||||
display: block;
|
||||
position: fixed;
|
||||
right: 50%;
|
||||
}
|
||||
|
||||
#loadingIndicator img
|
||||
{
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#loadingIndicator div
|
||||
{
|
||||
background-color: #ECECEB;
|
||||
border: 1px solid gray;
|
||||
left: 50%;
|
||||
padding: 8px;
|
||||
top: 50%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
#loadingIndicator span
|
||||
{
|
||||
padding: 10px;
|
||||
}
|
||||
/* </Loading Indicator> */
|
||||
|
||||
|
||||
/* <Chapter Selection> */
|
||||
div#chapterSelector {
|
||||
text-align: left;
|
||||
font-size: 0.8em;
|
||||
height: 150px;
|
||||
border: 1px solid #CCC;
|
||||
overflow: auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
div#chapterSelector tr.selectedChapter {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
div#chapterSelector img {
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
tr.loading, tr.waiting {
|
||||
color:#999;
|
||||
}
|
||||
|
||||
#chapterSelector .loading {
|
||||
min-height:0;
|
||||
background-position:2px center;
|
||||
}
|
||||
#chapterSelector tr.loading td.chapterName {
|
||||
padding-left:20px;
|
||||
}
|
||||
|
||||
/* </Chapter Selection> */
|
||||
|
||||
|
||||
.hide
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#report table
|
||||
{
|
||||
font-family: Tahoma, Arial, Helvetica, sans-serif;
|
||||
font-size: 1em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#resultMessage
|
||||
{
|
||||
position: relative;
|
||||
top: 50%;
|
||||
text-align: center;
|
||||
width: 99%
|
||||
}
|
||||
|
||||
.targetTestSuiteVersion, .targetTestSuiteDate
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
.projectSection
|
||||
{
|
||||
border-top:1px none #444;
|
||||
border-top-color: #444;
|
||||
border-top-style:solid;
|
||||
}
|