diff --git a/Styles/Interface/Behavior.HtmlTable.less b/Styles/Interface/Behavior.HtmlTable.less new file mode 100644 index 0000000..242f8e3 --- /dev/null +++ b/Styles/Interface/Behavior.HtmlTable.less @@ -0,0 +1,121 @@ +table[data-filters*=HtmlTable] { + width: 100%; +} +table[data-filters*=HtmlTable] thead, table[data-filters*=HtmlTable] tfoot { + background: url(th_back.png); +} +table[data-filters*=HtmlTable] thead th, table[data-filters*=HtmlTable] tfoot th { + text-align: left; + white-space: nowrap; + padding: 0px 6px; + border: 1px solid #b2b2b2; + border-width: 0px 1px 1px 0px; + height: 16px !important; + line-height: 16px !important; + font-size: 12px; + font-weight: normal; + overflow: hidden; +} +table[data-filters*=HtmlTable] th:last-child { + border-right: none; +} + +table[data-filters*=HtmlTable] td { + white-space: nowrap; + padding: 0px 8px; + height: 20px; + line-height: 20px; + background: #fff; + border: none; + overflow: hidden; +} +table[data-filters*=HtmlTable] tr.table-tr-odd td { + background-color: #f3f3f3; +} +table.jframe-bordered-table { + width: 98%; + margin: 4px 1%; + border: 1px solid #888; +} + +table[data-filters*=HtmlTable].selectable tr:hover > td, table[data-filters*=HtmlTable].selectable tr.table-tr-hovered td, + table[data-filters*=HtmlTable].multiselect tr:hover > td, table[data-filters*=HtmlTable].multiselect tr.table-tr-hovered td, + table[data-filters*=HtmlTable].selectable tr:hover > td a, table[data-filters*=HtmlTable].selectable tr.table-tr-hovered td a, + table[data-filters*=HtmlTable].multiselect tr:hover > td a, table[data-filters*=HtmlTable].multiselect tr.table-tr-hovered td a { + background-color: #d4e7f8; + color: #000; + cursor: pointer; +} + +table[data-filters*=HtmlTable] tr.selected td, + table[data-filters*=HtmlTable] tr.table-tr-selected td, + table[data-filters*=HtmlTable] tr.selected td a, + table[data-filters*=HtmlTable] tr.table-tr-selected td a, + table[data-filters*=HtmlTable] tr.selected:hover td, + table[data-filters*=HtmlTable] tr.table-tr-selected:hover td, + table[data-filters*=HtmlTable] tr.selected:hover td a, + table[data-filters*=HtmlTable] tr.table-tr-selected:hover td a { + background-color: #3875d7; + color: #fff; +} +table.table-sortable th { + cursor: pointer; +} +table.table-sortable th div { + position: relative; + padding-right: 10px; +} +span.table-th-sort-span { + width: 7px; + height: 16px; + display: block; + cursor: pointer; + position: absolute; + right: -2px; + top: 0px; +} +.table-th-sort span.table-th-sort-span { + background: url(bullet_arrow_down.png) -4px top no-repeat; +} +.table-th-sort-rev span.table-th-sort-span { + background: url(bullet_arrow_up.png) -4px top no-repeat; +} +table[data-filters*=HtmlTable].treeView tr.hidden { + display: none; +} +table[data-filters*=HtmlTable].treeView tr a.expand { + display: block; + float: left; + width: 10px; + height: 10px; + background: url(divots.png); + position: relative; + top: 4px; + left: -4px; + text-indent: -200px; + overflow: hidden; +} +table[data-filters*=HtmlTable].treeView tr.table-expanded a.expand { + background: url(divots.png) 0px -14px; +} +table[data-filters*=HtmlTable].treeView tbody tr > td:first-child { + padding-right: 20px; +} +.table-th-resizable.table-th-sort span.table-th-sort-span, .table-th-resizable.table-th-sort-rev span.table-th-sort-span { + padding-right: 13px; +} + +table.table-resizable th div { + position: relative; + padding-right: 0px; +} +span.table-th-resizer { + position: absolute; + cursor: col-resize; + right: 9px; + width: 6px; + top: 0px; + display: block; + height: 100%; + z-index: 1; +} \ No newline at end of file diff --git a/Styles/Interface/bullet_arrow_down.png b/Styles/Interface/bullet_arrow_down.png new file mode 100644 index 0000000..9b23c06 Binary files /dev/null and b/Styles/Interface/bullet_arrow_down.png differ diff --git a/Styles/Interface/bullet_arrow_up.png b/Styles/Interface/bullet_arrow_up.png new file mode 100644 index 0000000..24df0f4 Binary files /dev/null and b/Styles/Interface/bullet_arrow_up.png differ diff --git a/Styles/Interface/divots.png b/Styles/Interface/divots.png new file mode 100644 index 0000000..c889574 Binary files /dev/null and b/Styles/Interface/divots.png differ diff --git a/Styles/Interface/th_back.png b/Styles/Interface/th_back.png new file mode 100644 index 0000000..51fa538 Binary files /dev/null and b/Styles/Interface/th_back.png differ diff --git a/Tests/Behaviors/Behavior.FormRequest.html b/Tests/Behaviors/Behavior.FormRequest.html index c0d9a5f..12d6db9 100644 --- a/Tests/Behaviors/Behavior.FormRequest.html +++ b/Tests/Behaviors/Behavior.FormRequest.html @@ -1,20 +1,30 @@ -

Click either submit button to update the box below. The box should have an ajax spinner and then update with the content in the button.

+ + + + Behavior.FormRequest + + + + - +

Click either submit button to update the box below. The box should have an ajax spinner and then update with the content in the button.

-
- - -
-
-
- this box should get new text when you click the input above. -
-
+
+ + +
- - +
+
+ this box should get new text when you click the input above. +
+
+ + + + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.FormValidator.html b/Tests/Behaviors/Behavior.FormValidator.html index 09fee51..d5701a7 100644 --- a/Tests/Behaviors/Behavior.FormValidator.html +++ b/Tests/Behaviors/Behavior.FormValidator.html @@ -1,55 +1,66 @@ - + + + + Behavior.FormValidator + + + + -

Validates that a form's inputs are correct. Fill out the form as described and submit it. Errors should be displayed as you enter invalid values.

-
-
-
this cannot be empty
-
-
this must be an integer (-1,0,1,2,3, etc)
-
-
this must be numeric (0, 1.3, -5.2, 10, etc)
-
-
this must be between 3 and 6 characters long
-
-
this must be numbers only, but punctuation and spaces are ok
-
-
this must be only letters
-
-
this must be letters and/or numbers
-
-
this must be a date; try lots of combos
-
-
this must be an email address
-
-
this must be a url
-
-
this must be a dollar currency ($1.00, $1,000.00, $100)
-
-
this one of these must be checked
-
a: - b: c:
-
- -
+

Validates that a form's inputs are correct. Fill out the form as described and submit it. Errors should be displayed as you enter invalid values.

- - +
+
+
this cannot be empty
+
+
this must be an integer (-1,0,1,2,3, etc)
+
+
this must be numeric (0, 1.3, -5.2, 10, etc)
+
+
this must be between 3 and 6 characters long
+
+
this must be numbers only, but punctuation and spaces are ok
+
+
this must be only letters
+
+
this must be letters and/or numbers
+
+
this must be a date; try lots of combos
+
+
this must be an email address
+
+
this must be a url
+
+
this must be a dollar currency ($1.00, $1,000.00, $100)
+
+
this one of these must be checked
+
a: + b: c:
+
+ +
+ + + + + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.FxAccordion.html b/Tests/Behaviors/Behavior.FxAccordion.html index 1618996..d5630c8 100644 --- a/Tests/Behaviors/Behavior.FxAccordion.html +++ b/Tests/Behaviors/Behavior.FxAccordion.html @@ -1,15 +1,23 @@ -

Below is an accordion, only one of the target areas should be visible at a time, dependent on which toggle was clicked last.

-
-
Toggle 1
-
This area is controlled by Toggle 1.
-
Toggle 2
-
This area is controlled by Toggle 2.
-
Toggle 3
-
This area is controlled by Toggle 3.
-
+ + + + Behavior.FxAccordion + + + +

Below is an accordion, only one of the target areas should be visible at a time, dependent on which toggle was clicked last.

+
+
Toggle 1
+
This area is controlled by Toggle 1.
+
Toggle 2
+
This area is controlled by Toggle 2.
+
Toggle 3
+
This area is controlled by Toggle 3.
+
+ - - + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.HtmlTable.html b/Tests/Behaviors/Behavior.HtmlTable.html index d12602d..0502105 100644 --- a/Tests/Behaviors/Behavior.HtmlTable.html +++ b/Tests/Behaviors/Behavior.HtmlTable.html @@ -1,719 +1,686 @@ - + + + + Behavior.HtmlTable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ID + + TimeZone + + Name + + GEO Latitude + + GEO Longitude +
+ 22 + + New York City + + America/New_York + + 40.7255 + + -73.9983 +
+ 23 + + San Francisco + + America/Los_Angeles + + 37.7587 + + -122.433 +
+ 24 + + Boston + + America/New_York + + 42.3583 + + -71.0603 +
+ 25 + + Denver + + America/Denver + + 39.734 + + -105.026 +
+ 31 + + Washington, DC + + America/New_York + + 38.8964 + + -77.0447 +
+ 32 + + Chicago + + America/Chicago + + 41.8858 + + -87.6181 +
+ 33 + + Philadelphia + + America/New_York + + 39.8694 + + -75.2731 +
+ 34 + + Los Angeles + + America/Los_Angeles + + 34.0443 + + -118.251 +
+ 37 + + Portland + + America/Los_Angeles + + 45.527 + + -122.685 +
+ 38 + + San Diego + + America/Los_Angeles + + 32.7153 + + -117.156 +
+ 39 + + Miami + + America/New_York + + 25.7323 + + -80.2436 +
+ 41 + + Seattle + + America/Los_Angeles + + 47.6036 + + -122.326 +
+ 42 + + Austin + + America/Chicago + + 30.2669 + + -97.7428 +
+ 43 + + Dallas / Fort Worth + + America/Chicago + + 32.7887 + + -96.7676 +
+ 46 + + Atlanta + + America/New_York + + 33.7525 + + -84.3888 +
+ 47 + + Detroit + + America/New_York + + 42.3333 + + -83.0484 +
+ 48 + + Houston + + America/Chicago + + 29.7594 + + -95.3594 +
+ 49 + + Las Vegas + + America/Los_Angeles + + 36.1721 + + -115.122 +
+ 51 + + Minneapolis / St. Paul + + America/Chicago + + 44.9609 + + -93.2642 +
+ 52 + + New Orleans + + America/Chicago + + 29.9544 + + -90.075 +
+ 53 + + Phoenix + + America/Phoenix + + 33.4483 + + -112.073 +
+ 56 + + Amsterdam + + Europe/Amsterdam + + 52.3789 + + 4.90067 +
+ 57 + + Raleigh / Durham + + America/New_York + + 35.7797 + + -78.6434 +
+ 59 + + Vancouver + + America/Vancouver + + 49.259515 + + -123.103867 +
+ 60 + + Pittsburgh + + America/New_York + + 40.4405 + + -79.9961 +
+ 61 + + London + + Europe/London + + 51.50714 + + -0.126171 +
+ 62 + + St. Louis + + America/Chicago + + 38.627491 + + -90.198417 +
+ 63 + + Baltimore + + America/New_York + + 39.294255 + + -76.614275 +
+ 64 + + Cleveland + + America/New_York + + 41.499819 + + -81.693716 +
+ 65 + + Kansas City + + America/Chicago + + 39.090431 + + -94.583644 +
+ 66 + + Indianapolis + + America/New_York + + 39.767016 + + -86.156255 +
+ 67 + + Milwaukee + + America/Chicago + + 43.038902 + + -87.906474 +
+ 68 + + San Antonio + + America/Chicago + + 29.424122 + + -98.493628 +
+ 69 + + Toronto + + America/New_York + + 43.670233 + + -79.386755 +
+ 70 + + Montreal + + America/New_York + + 45.545447 + + -73.639076 +
+ 71 + + Salt Lake City + + America/Denver + + 40.760779 + + -111.891047 +
+ 72 + + Omaha + + America/Chicago + + 41.254006 + + -95.999258 +
+ 73 + + Richmond + + America/New_York + + 37.542979 + + -77.469092 +
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - TimeZone - - Name - - GEO Latitude - - GEO Longitude -
- 22 - - New York City - - America/New_York - - 40.7255 - - -73.9983 -
- 23 - - San Francisco - - America/Los_Angeles - - 37.7587 - - -122.433 -
- 24 - - Boston - - America/New_York - - 42.3583 - - -71.0603 -
- 25 - - Denver - - America/Denver - - 39.734 - - -105.026 -
- 31 - - Washington, DC - - America/New_York - - 38.8964 - - -77.0447 -
- 32 - - Chicago - - America/Chicago - - 41.8858 - - -87.6181 -
- 33 - - Philadelphia - - America/New_York - - 39.8694 - - -75.2731 -
- 34 - - Los Angeles - - America/Los_Angeles - - 34.0443 - - -118.251 -
- 37 - - Portland - - America/Los_Angeles - - 45.527 - - -122.685 -
- 38 - - San Diego - - America/Los_Angeles - - 32.7153 - - -117.156 -
- 39 - - Miami - - America/New_York - - 25.7323 - - -80.2436 -
- 41 - - Seattle - - America/Los_Angeles - - 47.6036 - - -122.326 -
- 42 - - Austin - - America/Chicago - - 30.2669 - - -97.7428 -
- 43 - - Dallas / Fort Worth - - America/Chicago - - 32.7887 - - -96.7676 -
- 46 - - Atlanta - - America/New_York - - 33.7525 - - -84.3888 -
- 47 - - Detroit - - America/New_York - - 42.3333 - - -83.0484 -
- 48 - - Houston - - America/Chicago - - 29.7594 - - -95.3594 -
- 49 - - Las Vegas - - America/Los_Angeles - - 36.1721 - - -115.122 -
- 51 - - Minneapolis / St. Paul - - America/Chicago - - 44.9609 - - -93.2642 -
- 52 - - New Orleans - - America/Chicago - - 29.9544 - - -90.075 -
- 53 - - Phoenix - - America/Phoenix - - 33.4483 - - -112.073 -
- 56 - - Amsterdam - - Europe/Amsterdam - - 52.3789 - - 4.90067 -
- 57 - - Raleigh / Durham - - America/New_York - - 35.7797 - - -78.6434 -
- 59 - - Vancouver - - America/Vancouver - - 49.259515 - - -123.103867 -
- 60 - - Pittsburgh - - America/New_York - - 40.4405 - - -79.9961 -
- 61 - - London - - Europe/London - - 51.50714 - - -0.126171 -
- 62 - - St. Louis - - America/Chicago - - 38.627491 - - -90.198417 -
- 63 - - Baltimore - - America/New_York - - 39.294255 - - -76.614275 -
- 64 - - Cleveland - - America/New_York - - 41.499819 - - -81.693716 -
- 65 - - Kansas City - - America/Chicago - - 39.090431 - - -94.583644 -
- 66 - - Indianapolis - - America/New_York - - 39.767016 - - -86.156255 -
- 67 - - Milwaukee - - America/Chicago - - 43.038902 - - -87.906474 -
- 68 - - San Antonio - - America/Chicago - - 29.424122 - - -98.493628 -
- 69 - - Toronto - - America/New_York - - 43.670233 - - -79.386755 -
- 70 - - Montreal - - America/New_York - - 45.545447 - - -73.639076 -
- 71 - - Salt Lake City - - America/Denver - - 40.760779 - - -111.891047 -
- 72 - - Omaha - - America/Chicago - - 41.254006 - - -95.999258 -
- 73 - - Richmond - - America/New_York - - 37.542979 - - -77.469092 -
- - + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.HtmlTable_(tree_view).html b/Tests/Behaviors/Behavior.HtmlTable_(tree_view).html index 4d83a77..a032203 100644 --- a/Tests/Behaviors/Behavior.HtmlTable_(tree_view).html +++ b/Tests/Behaviors/Behavior.HtmlTable_(tree_view).html @@ -1,290 +1,252 @@ - -

The table below will appear to be a tree view table immediately, even before scripts are loaded. It will become interactive once the scripts have loaded. You should be able to click a section's expand arrow to expand it. Keys should work - up and down to navigate, shift + up and down to multiselect, left and right to collapse and expand sections.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

The table below will appear to be a tree view table immediately, even before scripts are loaded. It will become interactive once the scripts have loaded. You should be able to click a section's expand arrow to expand it. Keys should work - up and down to navigate, shift + up and down to multiselect, left and right to collapse and expand sections.

+
NameDate ModifiedSize
- - Documents - Jul 10, 2010 1:39pm--
+ + + + + + + + + + + + + - - + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - -
NameDate ModifiedSize
+ + Documents + Jul 10, 2010 1:39pm--
- Bar.txt + Foo.txt Jul 10, 2010 1:39pm --
- Foo.txt - Jul 10, 2010 1:39pm--
+ + -

The table below will turn into a treeview on startup. It will appear to be a normal table until then. The add row link above the table will add a new item inside the Documents folder.

-Add Row to Documents - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

The table below will turn into a treeview on startup. It will appear to be a normal table until then. The add row link above the table will add a new item inside the Documents folder.

+ Add Row to Documents +
NameDate ModifiedSize
- Documents - Jul 10, 2010 1:39pm--
Resume.pdfJul 10, 2010 1:39pm--
notes.txtJul 10, 2010 1:39pm--
- Receipts - Jul 10, 2010 1:39pm--
starbucks.txtJul 10, 2010 1:39pm--
safeway.txtJul 10, 2010 1:39pm--
movies.txtJul 10, 2010 1:39pm--
- Taxes - Jul 10, 2010 1:39pm--
- 2008 Taxes.pdf - Jul 10, 2010 1:39pm--
- 2009 Taxes.pdf - Jul 10, 2010 1:39pm--
- 2010 Taxes.pdf - Jul 10, 2010 1:39pm--
Pictures
+ + + + + + + + + + + + + - - + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - -
NameDate ModifiedSize
+ Documents + Jul 10, 2010 1:39pm--
Resume.pdf Jul 10, 2010 1:39pm --
- Baby.jpg -
notes.txt Jul 10, 2010 1:39pm --
- Bar.txt + Receipts Jul 10, 2010 1:39pm --
- Candy - Jul 10, 2010 1:39pm--
starbucks.txtJul 10, 2010 1:39pm--
safeway.txtJul 10, 2010 1:39pm--
movies.txtJul 10, 2010 1:39pm--
+ Taxes + Jul 10, 2010 1:39pm--
+ 2008 Taxes.pdf + Jul 10, 2010 1:39pm--
+ 2009 Taxes.pdf + Jul 10, 2010 1:39pm--
+ 2010 Taxes.pdf + Jul 10, 2010 1:39pm--
PicturesJul 10, 2010 1:39pm--
+ Baby.jpg + Jul 10, 2010 1:39pm--
+ Bar.txt + Jul 10, 2010 1:39pm--
+ Candy + Jul 10, 2010 1:39pm--
+ Snickers.txt + Jul 10, 2010 1:39pm--
- Snickers.txt + Foo.txt Jul 10, 2010 1:39pm --
- Foo.txt - Jul 10, 2010 1:39pm--
+ + - - \ No newline at end of file + + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.OverText.html b/Tests/Behaviors/Behavior.OverText.html index 6c8a203..351791f 100644 --- a/Tests/Behaviors/Behavior.OverText.html +++ b/Tests/Behaviors/Behavior.OverText.html @@ -1,24 +1,32 @@ -
-

- The input below should have some text on top of it that goes away when you click it and enter a value. -

- -
-detach | attach - - + + +
+

+ The input below should have some text on top of it that goes away when you click it and enter a value. +

+ +
+ detach | attach + \ No newline at end of file + $('detach').addEvent('click', function(){ + b.cleanup(document.body); + }); + $('attach').addEvent('click', function(){ + b.apply(document.body); + }); + })(); + + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.Resizable.html b/Tests/Behaviors/Behavior.Resizable.html index b8da457..0149363 100644 --- a/Tests/Behaviors/Behavior.Resizable.html +++ b/Tests/Behaviors/Behavior.Resizable.html @@ -1,29 +1,37 @@ -

You should be able to resize the box below by dragging the grey handle.

- -
- -
-
- - \ No newline at end of file + + + + Behavior.Resizable + + + +

You should be able to resize the box below by dragging the grey handle.

+ +
+ +
+
+ + + \ No newline at end of file diff --git a/Tests/Behaviors/Behavior.Sortable.html b/Tests/Behaviors/Behavior.Sortable.html index dbe6a21..fbcc72b 100644 --- a/Tests/Behaviors/Behavior.Sortable.html +++ b/Tests/Behaviors/Behavior.Sortable.html @@ -1,68 +1,77 @@ -

You can reorder the list below. When you do the sort order will be displayed in the box below

- -

You should be able to reorder the list by dragging. The new order displays below the list when you release an item. If you scroll the list down a bit it should still let you sort correctly. Dragging an element that contains a radio that is selected to a new location should keep the radio selected when it's dropped. If you drag an element to the top or bottom of the list, it should scroll.

+ + + + Autocomplete + + + + + +

You can reorder the list below. When you do the sort order will be displayed in the box below

+

You should be able to reorder the list by dragging. The new order displays below the list when you release an item. If you scroll the list down a bit it should still let you sort correctly. Dragging an element that contains a radio that is selected to a new location should keep the radio selected when it's dropped. If you drag an element to the top or bottom of the list, it should scroll.

-
- -
-
+
+ +
+
-

You should be able to reorder the list by dragging. The new order displays below the list. You should be able to move items from one list to another.

+

You should be able to reorder the list by dragging. The new order displays below the list. You should be able to move items from one list to another.

-
- - - -
-
+
+ + + +
+
- - + + + \ No newline at end of file diff --git a/Tests/_assets/Styles b/Tests/_assets/Styles new file mode 120000 index 0000000..e67b460 --- /dev/null +++ b/Tests/_assets/Styles @@ -0,0 +1 @@ +../../Styles \ No newline at end of file diff --git a/Tests/_assets/less-1.0.41.min.js b/Tests/_assets/less-1.0.41.min.js new file mode 100644 index 0000000..005eb99 --- /dev/null +++ b/Tests/_assets/less-1.0.41.min.js @@ -0,0 +1,69 @@ +// +// LESS - Leaner CSS v1.0.41 +// http://lesscss.org +// +// Copyright (c) 2010, Alexis Sellier +// Licensed under the Apache 2.0 License. +// +(function(z){function s(d){return z.less[d.split("/")[1]]}function U(){for(var d=document.getElementsByTagName("style"),b=0;b0)g.firstChild.nodeValue!==k.nodeValue&&g.replaceChild(k,g.firstChild);else g.appendChild(k)})(document.createTextNode(d));if(a&&B){H("saving "+e+" to cache.");B.setItem(e,d);B.setItem(e+":timestamp",a)}}function Z(d,b,a,g){function e(k,n,r){if(k.status>=200&&k.status<300)n(k.responseText,k.getResponseHeader("Last-Modified"));else typeof r==="function"&&r(k.status,d)}var h=$(),i=P?false:o.async; +typeof h.overrideMimeType==="function"&&h.overrideMimeType("text/css");h.open("GET",d,i);h.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5");h.send(null);if(P)h.status===0?a(h.responseText):g(h.status,d);else if(i)h.onreadystatechange=function(){h.readyState==4&&e(h,a,g)};else e(h,a,g)}function $(){if(z.XMLHttpRequest)return new XMLHttpRequest;else try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(d){H("browser doesn't support AJAX.");return null}}function H(d){o.env== +"development"&&typeof console!=="undefined"&&console.log("less: "+d)}function Q(d,b){var a="less-error-message:"+R(b),g=document.createElement("div"),e,h;g.id=a;g.className="less-error-message";h="

"+(d.message||"There is an error in your .less file")+'

'+b+" ";if(d.extract)h+="on line "+d.line+", column "+(d.column+1)+":

"+''.replace(/\[(-?\d)\]/g, +function(i,k){return parseInt(d.line)+parseInt(k)||""}).replace(/\{(\d)\}/g,function(i,k){return d.extract[parseInt(k)]||""}).replace(/\{current\}/,d.extract[1].slice(0,d.column)+''+d.extract[1].slice(d.column)+"");g.innerHTML=h;N(".less-error-message ul, .less-error-message li {\nlist-style-type: none;\nmargin-right: 15px;\npadding: 4px 0;\nmargin: 0;\n}\n.less-error-message label {\nfont-size: 12px;\nmargin-right: 15px;\npadding: 4px 0;\ncolor: #cc7777;\n}\n.less-error-message pre {\ncolor: #ee4444;\npadding: 4px 0;\nmargin: 0;\ndisplay: inline-block;\n}\n.less-error-message pre.ctx {\ncolor: #dd4444;\n}\n.less-error-message h3 {\nfont-size: 20px;\nfont-weight: bold;\npadding: 15px 0 5px 0;\nmargin: 0;\n}\n.less-error-message a {\ncolor: #10a\n}\n.less-error-message .error {\ncolor: red;\nfont-weight: bold;\npadding-bottom: 2px;\nborder-bottom: 1px dashed red;\n}", +{title:"error-message"});g.style.cssText="font-family: Arial, sans-serif;border: 1px solid #e00;background-color: #eee;border-radius: 5px;-webkit-border-radius: 5px;-moz-border-radius: 5px;color: #e00;padding: 15px;margin-bottom: 15px";if(o.env=="development")e=setInterval(function(){if(document.body){document.getElementById(a)?document.body.replaceChild(g,document.getElementById(a)):document.body.insertBefore(g,document.body.firstChild);clearInterval(e)}},10)}if(!Array.isArray)Array.isArray=function(d){return Object.prototype.toString.call(d)=== +"[object Array]"||d instanceof Array};if(!Array.prototype.forEach)Array.prototype.forEach=function(d,b){for(var a=this.length>>>0,g=0;g>>0,g=Array(a),e=0;e>>0,a=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var g=arguments[1];else{do{if(a in this){g=this[a++];break}if(++a>=b)throw new TypeError;}while(1)}for(;a=a)return-1;if(g<0)g+=a;for(;gt){p[i]=p[i].slice(h-t);t=h}}function a(f){var j,l,q;if(f instanceof Function)return f.call(K.parsers); +else if(typeof f==="string"){f=e.charAt(h)===f?f:null;j=1;b()}else{b();if(f=f.exec(p[i]))j=f[0].length;else return null}if(f){mem=h+=j;for(q=h+p[i].length-j;h0)throw{type:"Syntax",message:"Missing closing `}`",filename:d.filename};return L.map(function(C){return C.join("")})}([[]]); +l=new m.Ruleset([],a(this.parsers.primary));l.root=true;l.toCSS=function(L){var D,E;return function(G,A){function w(v){return v?(e.slice(0,v).match(/\n/g)||"").length:null}var x=[];G=G||{};if(typeof A==="object"&&!Array.isArray(A)){A=Object.keys(A).map(function(v){var C=A[v];if(!(C instanceof m.Value)){C instanceof m.Expression||(C=new m.Expression([C]));C=new m.Value([C])}return new m.Rule("@"+v,C,false,0)});x=[new m.Ruleset(null,A)]}try{var y=L.call(this,{frames:x}).toCSS([],{compress:G.compress|| +false})}catch(u){E=e.split("\n");D=w(u.index);x=u.index;for(y=-1;x>=0&&e.charAt(x)!=="\n";x--)y++;throw{type:u.type,message:u.message,filename:d.filename,index:u.index,line:typeof D==="number"?D+1:null,callLine:u.call&&w(u.call)+1,callExtract:E[w(u.call)],stack:u.stack,column:y,extract:[E[D-1],E[D],E[D+1]]};}return G.compress?y.replace(/(\s)+/g,"$1"):y}}(l.eval);if(h=0&&e.charAt(T)!=="\n";T--)Y++;S={name:"ParseError", +message:"Syntax Error on line "+q,filename:d.filename,line:q,column:Y,extract:[I[q-2],I[q-1],I[q]]}}if(this.imports.queue.length>0)O=function(){j(S,l)};else j(S,l)},parsers:{primary:function(){for(var f,j=[];(f=a(this.mixin.definition)||a(this.rule)||a(this.ruleset)||a(this.mixin.call)||a(this.comment)||a(this.directive))||a(/^[\s\n]+/);)f&&j.push(f);return j},comment:function(){var f;if(e.charAt(h)==="/")if(e.charAt(h+1)==="/")return new m.Comment(a(/^\/\/.*/),true);else if(f=a(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new m.Comment(f)}, +entities:{quoted:function(){var f;if(!(e.charAt(h)!=='"'&&e.charAt(h)!=="'"))if(f=a(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new m.Quoted(f[0],f[1]||f[2])},keyword:function(){var f;if(f=a(/^[A-Za-z-]+/))return new m.Keyword(f)},call:function(){var f,j;if(f=/^([\w-]+|%)\(/.exec(p[i])){f=f[1].toLowerCase();if(f==="url")return null;else h+=f.length+1;if(f==="alpha")return a(this.alpha);j=a(this.entities.arguments);if(a(")"))if(f)return new m.Call(f,j)}},arguments:function(){for(var f= +[],j;j=a(this.expression);){f.push(j);if(!a(","))break}return f},literal:function(){return a(this.entities.dimension)||a(this.entities.color)||a(this.entities.quoted)},url:function(){var f;if(!(e.charAt(h)!=="u"||!a(/^url\(/))){f=a(this.entities.quoted)||a(this.entities.variable)||a(this.entities.dataURI)||a(/^[-\w%@$\/.&=:;#+?]+/)||"";if(!a(")"))throw Error("missing closing ) for url()");return new m.URL(f.value||f.data||f instanceof m.Variable?f:new m.Anonymous(f),F.paths)}},dataURI:function(){var f; +if(a(/^data:/)){f={};f.mime=a(/^[^\/]+\/[^,;)]+/)||"";f.charset=a(/^;\s*charset=[^,;)]+/)||"";f.base64=a(/^;\s*base64/)||"";f.data=a(/^,\s*[^)]+/);if(f.data)return f}},variable:function(){var f,j=h;if(e.charAt(h)==="@"&&(f=a(/^@[\w-]+/)))return new m.Variable(f,j)},color:function(){var f;if(e.charAt(h)==="#"&&(f=a(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new m.Color(f[1])},dimension:function(){var f;f=e.charCodeAt(h);if(!(f>57||f<45||f===47))if(f=a(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new m.Dimension(f[1], +f[2])},javascript:function(){var f;if(e.charAt(h)==="`")if(f=a(/^`([^`]*)`/))return new m.JavaScript(f[1],h)}},variable:function(){var f;if(e.charAt(h)==="@"&&(f=a(/^(@[\w-]+)\s*:/)))return f[1]},shorthand:function(){var f,j;if(g(/^[@\w.%-]+\/[@\w.-]+/))if((f=a(this.entity))&&a("/")&&(j=a(this.entity)))return new m.Shorthand(f,j)},mixin:{call:function(){var f=[],j,l,q,I=h;j=e.charAt(h);if(!(j!=="."&&j!=="#")){for(;j=a(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/);){f.push(new m.Element(l, +j));l=a(">")}a("(")&&(q=a(this.entities.arguments))&&a(")");if(f.length>0&&(a(";")||g("}")))return new m.mixin.Call(f,q,I)}},definition:function(){var f,j=[],l,q;if(!(e.charAt(h)!=="."&&e.charAt(h)!=="#"||g(/^[^{]*(;|})/)))if(f=a(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){for(f=f[1];l=a(this.entities.variable)||a(this.entities.literal)||a(this.entities.keyword);){if(l instanceof m.Variable)if(a(":"))if(q=a(this.expression))j.push({name:l.name,value:q});else throw Error("Expected value"); +else j.push({name:l.name});else j.push({value:l});if(!a(","))break}if(!a(")"))throw Error("Expected )");if(l=a(this.block))return new m.mixin.Definition(f,j,l)}}},entity:function(){return a(this.entities.literal)||a(this.entities.variable)||a(this.entities.url)||a(this.entities.call)||a(this.entities.keyword)||a(this.entities.javascript)},end:function(){return a(";")||g("}")},alpha:function(){var f;if(a(/^opacity=/i))if(f=a(/^\d+/)||a(this.entities.variable)){if(!a(")"))throw Error("missing closing ) for alpha()"); +return new m.Alpha(f)}},element:function(){var f;c=a(this.combinator);if(f=a(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||a("*")||a(this.attribute)||a(/^\([^)@]+\)/))return new m.Element(c,f)},combinator:function(){var f=e.charAt(h);if(f===">"||f==="&"||f==="+"||f==="~"){for(h++;e.charAt(h)===" ";)h++;return new m.Combinator(f)}else if(f===":"&&e.charAt(h+1)===":"){for(h+=2;e.charAt(h)===" ";)h++;return new m.Combinator("::")}else return e.charAt(h-1)===" "?new m.Combinator(" "): +new m.Combinator(null)},selector:function(){for(var f,j=[],l;f=a(this.element);){l=e.charAt(h);j.push(f);if(l==="{"||l==="}"||l===";"||l===",")break}if(j.length>0)return new m.Selector(j)},tag:function(){return a(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||a("*")},attribute:function(){var f="",j,l,q;if(a("[")){if(j=a(/^[a-zA-Z-]+/)||a(this.entities.quoted))f=(q=a(/^[|~*$^]?=/))&&(l=a(this.entities.quoted)||a(/^[\w-]+/))?[j,q,l.toCSS?l.toCSS():l].join(""):j;if(a("]"))if(f)return"["+f+"]"}},block:function(){var f; +if(a("{")&&(f=a(this.primary))&&a("}"))return f},ruleset:function(){var f=[],j,l;k=p[i];t=n=h;if(j=/^([.#: \w-]+)[\s\n]*\{/.exec(p[i])){h+=j[0].length-1;f=[new m.Selector([new m.Element(null,j[1])])]}else{for(;j=a(this.selector);){f.push(j);if(!a(","))break}j&&a(this.comment)}if(f.length>0&&(l=a(this.block)))return new m.Ruleset(f,l);else{r=h;p[i]=k;t=h=n}},rule:function(){var f,j;f=e.charAt(h);var l;k=p[i];t=n=h;if(!(f==="."||f==="#"||f==="&"))if(f=a(this.variable)||a(this.property)){if(f.charAt(0)!= +"@"&&(match=/^([^@+\/'"*`(;{}-]*);/.exec(p[i]))){h+=match[0].length-1;j=new m.Anonymous(match[1])}else j=f==="font"?a(this.font):a(this.value);l=a(this.important);if(j&&a(this.end))return new m.Rule(f,j,l,n);else{r=h;p[i]=k;t=h=n}}},"import":function(){var f;if(a(/^@import\s+/)&&(f=a(this.entities.quoted)||a(this.entities.url))&&a(";"))return new m.Import(f,F)},directive:function(){var f,j,l;if(e.charAt(h)==="@")if(j=a(this["import"]))return j;else if(f=a(/^@media|@page/)){l=(a(/^[^{]+/)||"").trim(); +if(j=a(this.block))return new m.Directive(f+" "+l,j)}else if(f=a(/^@[-a-z]+/))if(f==="@font-face"){if(j=a(this.block))return new m.Directive(f,j)}else if((j=a(this.entity))&&a(";"))return new m.Directive(f,j)},font:function(){for(var f=[],j=[],l;l=a(this.shorthand)||a(this.entity);)j.push(l);f.push(new m.Expression(j));if(a(","))for(;l=a(this.expression);){f.push(l);if(!a(","))break}return new m.Value(f)},value:function(){for(var f,j=[];f=a(this.expression);){j.push(f);if(!a(","))break}if(j.length> +0)return new m.Value(j)},important:function(){if(e.charAt(h)==="!")return a(/^! *important/)},sub:function(){var f;if(a("(")&&(f=a(this.expression))&&a(")"))return f},multiplication:function(){var f,j,l,q;if(f=a(this.operand)){for(;(l=a("/")||a("*"))&&(j=a(this.operand));)q=new m.Operation(l,[q||f,j]);return q||f}},addition:function(){var f,j,l,q;if(f=a(this.multiplication)){for(;(l=a(/^[-+]\s+/)||e.charAt(h-1)!=" "&&(a("+")||a("-")))&&(j=a(this.multiplication));)q=new m.Operation(l,[q||f,j]);return q|| +f}},operand:function(){return a(this.sub)||a(this.entities.dimension)||a(this.entities.color)||a(this.entities.variable)||a(this.entities.call)},expression:function(){for(var f,j=[];f=a(this.addition)||a(this.entity);)j.push(f);if(j.length>0)return new m.Expression(j)},property:function(){var f;if(f=a(/^(\*?-?[-a-z_0-9]+)\s*:/))return f[1]}}}};if(typeof z!=="undefined")o.Parser.importer=function(d,b,a,g){if(d.charAt(0)!=="/"&&b.length>0)d=b[0]+d;X({href:d,title:d,type:g.mime},a,true)};(function(d){function b(e){return d.functions.hsla(e.h, +e.s,e.l,e.a)}function a(e){if(e instanceof d.Dimension)return parseFloat(e.unit=="%"?e.value/100:e.value);else if(typeof e==="number")return e;else throw{error:"RuntimeError",message:"color functions take numbers as parameters"};}function g(e){return Math.min(1,Math.max(0,e))}d.functions={rgb:function(e,h,i){return this.rgba(e,h,i,1)},rgba:function(e,h,i,k){e=[e,h,i].map(function(n){return a(n)});k=a(k);return new d.Color(e,k)},hsl:function(e,h,i){return this.hsla(e,h,i,1)},hsla:function(e,h,i,k){function n(t){t= +t<0?t+1:t>1?t-1:t;return t*6<1?p+(r-p)*t*6:t*2<1?r:t*3<2?p+(r-p)*(2/3-t)*6:p}e=a(e)%360/360;h=a(h);i=a(i);k=a(k);var r=i<=0.5?i*(h+1):i+h-i*h,p=i*2-r;return this.rgba(n(e+1/3)*255,n(e)*255,n(e-1/3)*255,k)},hue:function(e){return new d.Dimension(Math.round(e.toHSL().h))},saturation:function(e){return new d.Dimension(Math.round(e.toHSL().s*100),"%")},lightness:function(e){return new d.Dimension(Math.round(e.toHSL().l*100),"%")},alpha:function(e){return new d.Dimension(e.toHSL().a)},saturate:function(e, +h){var i=e.toHSL();i.s+=h.value/100;i.s=g(i.s);return b(i)},desaturate:function(e,h){var i=e.toHSL();i.s-=h.value/100;i.s=g(i.s);return b(i)},lighten:function(e,h){var i=e.toHSL();i.l+=h.value/100;i.l=g(i.l);return b(i)},darken:function(e,h){var i=e.toHSL();i.l-=h.value/100;i.l=g(i.l);return b(i)},fadein:function(e,h){var i=e.toHSL();i.a+=h.value/100;i.a=g(i.a);return b(i)},fadeout:function(e,h){var i=e.toHSL();i.a-=h.value/100;i.a=g(i.a);return b(i)},spin:function(e,h){var i=e.toHSL(),k=(i.h+h.value)% +360;i.h=k<0?360+k:k;return b(i)},mix:function(e,h,i){i=i.value/100;var k=i*2-1,n=e.toHSL().a-h.toHSL().a;k=((k*n==-1?k:(k+n)/(1+k*n))+1)/2;n=1-k;return new d.Color([e.rgb[0]*k+h.rgb[0]*n,e.rgb[1]*k+h.rgb[1]*n,e.rgb[2]*k+h.rgb[2]*n],e.alpha*i+h.alpha*(1-i))},greyscale:function(e){return this.desaturate(e,new d.Dimension(100))},e:function(e){return new d.Anonymous(e instanceof d.JavaScript?e.evaluated:e)},"%":function(e){for(var h=Array.prototype.slice.call(arguments,1),i=e.value,k=0;k255?255:b<0?0:b).toString(16);return b.length===1?"0"+b:b}).join("")},operate:function(b,a){var g=[];a instanceof d.Color||(a=a.toColor());for(var e=0;e<3;e++)g[e]=d.operate(b,this.rgb[e], +a.rgb[e]);return new d.Color(g)},toHSL:function(){var b=this.rgb[0]/255,a=this.rgb[1]/255,g=this.rgb[2]/255,e=this.alpha,h=Math.max(b,a,g),i=Math.min(b,a,g),k,n=(h+i)/2,r=h-i;if(h===i)k=i=0;else{i=n>0.5?r/(2-h-i):r/(h+i);switch(h){case b:k=(a-g)/r+(a":b.compress?">":" > "}[this.value]}})(s("less/tree"));(function(d){d.Expression=function(b){this.value=b};d.Expression.prototype={eval:function(b){return this.value.length>1?new d.Expression(this.value.map(function(a){return a.eval(b)})):this.value[0].eval(b)},toCSS:function(b){return this.value.map(function(a){return a.toCSS(b)}).join(" ")}}})(s("less/tree"));(function(d){d.Import=function(b,a){var g=this;this._path=b;this.path=b instanceof d.Quoted?/\.(le?|c)ss$/.test(b.value)?b.value:b.value+ +".less":b.value.value||b.value;(this.css=/css$/.test(this.path))||a.push(this.path,function(e){if(!e)throw Error("Error parsing "+g.path);g.root=e})};d.Import.prototype={toCSS:function(){return this.css?"@import "+this._path.toCSS()+";\n":""},eval:function(b){var a;if(this.css)return this;else{a=new d.Ruleset(null,this.root.rules.slice(0));for(var g=0;g0){for(h=0;h0&&g>this.params.length)return false;g= +Math.min(g,this.arity);for(var e=0;e1?Array.prototype.push.apply(g,h.find(new d.Selector(b.elements.slice(1)),a)):g.push(h);break}});return this._lookups[e]=g},toCSS:function(b,a){var g=[],e=[],h=[],i=[],k;if(!this.root)if(b.length=== +0)i=this.selectors.map(function(r){return[r]});else for(k=0;k0){i=i.map(function(r){return r.map(function(p){return p.toCSS(a)}).join("").trim()}).join(a.compress?",":i.length>3?",\n":", ");g.push(i,(a.compress?"{":" {\n ")+e.join(a.compress?"":"\n ")+(a.compress?"}":"\n}\n"))}g.push(h);return g.join("")+(a.compress?"\n":"")}}})(s("less/tree"));(function(d){d.Selector=function(b){this.elements=b;if(this.elements[0].combinator.value==="")this.elements[0].combinator.value=" "};d.Selector.prototype.match=function(b){return this.elements[0].value=== +b.elements[0].value?true:false};d.Selector.prototype.toCSS=function(b){if(this._css)return this._css;return this._css=this.elements.map(function(a){return typeof a==="string"?" "+a.trim():a.toCSS(b)}).join("")}})(s("less/tree"));(function(d){d.URL=function(b,a){if(b.data)this.attrs=b;else{if(!/^(?:https?:\/|file:\/)?\//.test(b.value)&&a.length>0&&typeof z!=="undefined")b.value=a[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value);this.value=b;this.paths=a}};d.URL.prototype={toCSS:function(){return"url("+ +(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(b){return this.attrs?this:new d.URL(this.value.eval(b),this.paths)}}})(s("less/tree"));(function(d){d.Value=function(b){this.value=b;this.is="value"};d.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new d.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(b){return this.value.map(function(a){return a.toCSS(b)}).join(b.compress? +",":", ")}}})(s("less/tree"));(function(d){d.Variable=function(b,a){this.name=b;this.index=a};d.Variable.prototype={eval:function(b){var a,g,e=this.name;if(a=d.find(b.frames,function(h){if(g=h.variable(e))return g.value.eval(b)}))return a;else throw{message:"variable "+this.name+" is undefined",index:this.index};}}})(s("less/tree"));s("less/tree").find=function(d,b){for(var a=0,g;a0||P?"development":"production");o.async=false;o.poll=o.poll||(P?1E3:1500);o.watch=function(){return this.watchMode=true};o.unwatch=function(){return this.watchMode=false};if(o.env==="development"){o.optimization=0;/!watch/.test(location.hash)&&o.watch();o.watchTimer=setInterval(function(){o.watchMode&&W(function(d,b,a){d&&N(d.toCSS(),b,a.lastModified)})}, +o.poll)}else o.optimization=3;var B;try{B=typeof z.localStorage==="undefined"?null:z.localStorage}catch(aa){B=null}var M=document.getElementsByTagName("link"),V=/^text\/(x-)?less$/;o.sheets=[];for(var J=0;J