├── .gitignore
├── README.md
├── config.rb
├── css
├── _flash_cards.scss
├── _fonts.scss
├── style.css
└── style.scss
├── index.html
├── js
├── flash_cards.min.js
├── plugins
│ ├── flash_cards.js
│ └── jquery.cycle.js
└── vendor
│ ├── jquery-1.7.2.js
│ ├── jquery-1.7.2.min.js
│ └── modernizr-2.5.3.min.js
└── resources
└── fonts
└── flash_cards
├── flash_cards.eot
├── flash_cards.svg
├── flash_cards.ttf
└── flash_cards.woff
/.gitignore:
--------------------------------------------------------------------------------
1 | # Numerous always-ignore extensions
2 | *.diff
3 | *.err
4 | *.orig
5 | *.log
6 | *.rej
7 | *.swo
8 | *.swp
9 | *.vi
10 | *~
11 | *.sass-cache
12 | .gitattributes
13 |
14 | # OS or Editor folders
15 | .DS_Store
16 | ._*
17 | Thumbs.db
18 | .cache
19 | .project
20 | .settings
21 | .tmproj
22 | nbproject
23 | *.sublime-project
24 | *.sublime-workspace
25 |
26 | # Dreamweaver added files
27 | _notes
28 | dwsync.xml
29 |
30 | # Komodo
31 | *.komodoproject
32 | .komodotools
33 |
34 | # Espresso
35 | *.esproj
36 | *.espressostorage
37 |
38 | # Rubinius
39 | *.rbc
40 |
41 | # Folders to ignore
42 | .hg
43 | .svn
44 | .CVS
45 | intermediate
46 | publish
47 | .idea
48 |
49 | # build script local files
50 | build/buildinfo.properties
51 | build/config/buildinfo.properties
52 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flash Cards
2 | Simple, animated, and imageless flash cards using HTML/CSS/jQuery.
3 |
4 | ## Features
5 |
6 | * Easily tweaked appearance (requires [SASS](http://sass-lang.com)/[Compass](http://compass-style.org) or old-fashioned overrides)
7 | Simply edit variables in [_flash_cards.scss](/curtisblackwell/flash_cards/blob/master/css/_flash_cards.scss) to update dimensions and colors.
8 | * Simple markup
9 | The deck is a list and the cards are list items with a div for each side.
10 | * No images
11 | Cards are 100% CSS, and buttons are an icon font consisting only of the icons used.
12 |
13 | ## Dependencies
14 | * jQuery
15 | * [jQuery Cycle](http://jquery.malsup.com/cycle)
16 | * [Modernizr](http://modernizr.com) (If you want the 3D transforms fallback )
17 |
18 | ## Browser Support
19 | This has been tested only in Chrome (21.0.1155.2 dev) and Firefox (12.0) .
20 |
21 | I plan to support all major browsers, but I haven't had the need yet.
22 |
23 | ## Setup & Usage
24 | 1. ### Put the files in place.
25 |
26 |
27 |
28 | Files
29 | Location
30 |
31 |
32 |
33 |
34 | If you're using SASS /Compass :
35 | _flash_cards.scss
and _fonts.scss
36 | If you're not using SASS/Compass:
37 | style.css
38 |
39 |
40 |
41 | Your SASS directory
42 | Your CSS directory
43 |
44 |
45 |
46 | The contents of the js
folder
47 | Your javascript directory
48 |
49 |
50 | resources
51 | Your root
52 |
53 |
54 |
55 |
56 | 2. ### Include necessary code.
57 | #### .css
58 | If you're SASSin' and Compassin' it up, `@import "flash_cards";` into your `.scss`. If not, use `style.css`.
59 |
60 | #### .js (and font)
61 | Place the following in your ``:
62 |
63 |
64 |
65 |
66 | and the following before ``:
67 |
68 |
69 |
70 | 3. ### The Markup
71 | #### The Deck
72 | The deck is a list with an id of deck. Each card is a list item containing a div for each side,
73 | each div contains a paragraph.
74 |
75 |
76 |
77 |
78 |
79 |
How many licks does it take to get to the center of a Tootsie Pop?
80 |
81 |
82 |
83 |
The world may never know.
84 |
85 |
86 |
87 |
88 |
89 | #### The Navigation
90 | The navigation uses an icon font put together using [IcoMoon](http://keyamoon.com/icomoon/app/),
91 | so it contains only the necessary characters to keep file size down.
92 |
93 | The markup follows Jon Hicks' [data-icon method](http://24ways.org/2011/displaying-icons-with-fonts-and-data-attributes).
94 |
95 |
96 | Previous
97 | Flip
98 | Next
99 |
100 |
101 | #### The Keyboard Shortcuts
102 | I created a table to display the available keyboard shortcuts, accessible via clicking an element with an id of icon
103 | or hitting the forward-slash/question mark key.
104 |
105 |
106 |
Keyboard Shortcuts
107 |
108 |
109 |
110 | Previous Card
111 | ←
112 |
113 |
114 | Next Card
115 | →
116 |
117 |
118 | Flip Card
119 | ↑ / ↓ / Return / Space
120 |
121 |
122 | Show/Hide Keyboard Shortcuts
123 | ?
124 |
125 |
126 |
127 |
128 |
129 | Keyboard Shortcuts
130 |
131 | ## Icons not displaying properly?
132 | Check the paths to the font files in `_fonts.scss` or `style.css`.
133 |
134 | ## License
135 | Flash Cards by Curtis Blackwell is licensed under a Creative Commons Attribution 4.0 International License .
136 |
--------------------------------------------------------------------------------
/config.rb:
--------------------------------------------------------------------------------
1 | # Require any additional compass plugins here.
2 |
3 | # Set this to the root of your project when deployed:
4 | http_path = "/"
5 | css_dir = "css"
6 | sass_dir = "css"
7 | images_dir = "img"
8 | javascripts_dir = "js"
9 |
10 | # You can select your preferred output style here (can be overridden via the command line):
11 | output_style = :compressed
12 |
13 | # To enable relative paths to assets via compass helper functions. Uncomment:
14 | # relative_assets = true
15 |
16 | # To disable debugging comments that display the original location of your selectors. Uncomment:
17 | # line_comments = false
18 |
19 |
20 | # If you prefer the indented syntax, you might want to regenerate this
21 | # project again passing --syntax sass, or you can uncomment this:
22 | # preferred_syntax = :sass
23 | # and then run:
24 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
25 |
--------------------------------------------------------------------------------
/css/_flash_cards.scss:
--------------------------------------------------------------------------------
1 | @import "fonts",
2 | "compass/css3/background-clip",
3 | "compass/css3/border-radius",
4 | "compass/css3/box-shadow",
5 | "compass/css3/images",
6 | "compass/css3/transform",
7 | "compass/css3/transition";
8 |
9 | // Card
10 | $card_color: #fff; // Color of the "paper."
11 | $text_color: #222; // Color of the "writing."
12 | $lines_writing: #0080ff; // Color of the lines on which text is "written."
13 | $line_top: #ff78b4; // Color of the top line.
14 |
15 | $card_font: SchoolBell;
16 |
17 | $drop_shadow: true; // If you want NOT to have a drop-shadow, set this to anything but true (or null, it must have some value).
18 | $drop_shadow_offset_x: 0; // Vertical offset
19 | $drop_shadow_offset_y: 3px; // Horizontal offset
20 | $drop_shadow_blur: 5px;
21 | $drop_shadow_color: #000;
22 |
23 | $card_width: 500px;
24 | $card_height: 300px;
25 | $card_font_size: 30px; // This is also the rule size (space b/w lines).
26 | $neg_space_card_top: 20; // A unitless value representing the negative space (in px) at the top of the card.
27 | $neg_space_default: 15px; // I use this variable throughout my projects. Didn't think of a better way to handle it here.
28 | $transition_default: all .4s ease-in-out;
29 |
30 | // Buttons (Previous / Flip / Next)
31 | $button_text_color: #fff;
32 |
33 | $button_font_size: 30px;
34 | $button_padding: 10px; // For bigger targets!
35 | $button_width: 40px;
36 |
37 | // Keyboard Shortcuts Icon
38 | $kbsi_bg_color: #0080ff;
39 | $kbsi_text_color: #fff;
40 | $kbsi_border: 1px solid #fff;
41 |
42 | $kbsi_font_size: 25px;
43 |
44 | // ==========================================
45 | // You shouldn't need to edit anything below.
46 | // ==========================================
47 | // 1) The vertical center of the card.
48 | // 2) The first blue line above $y_center.
49 | // 3) The total number of lines on which to write. One may be split b/w the top and bottom.
50 | // 4) The location of the top line. If it's too close to the top, we may need to change it.
51 | // 5) Variable initiation.
52 | $y_center: $card_height / 2 - 1;
53 | $rule_center_min: ceil($y_center - $card_font_size / 2);
54 | $total_rules: $card_height / $card_font_size;
55 | $line_top_loc_temp: $rule_center_min - ceil($total_rules / 2 - 1) * $card_font_size;
56 | $line_top_loc: $line_top_loc_temp;
57 |
58 | // If the top line is too close to the top, move it down one blue line.
59 | @if $line_top_loc_temp < $neg_space_card_top {
60 | $line_top_loc: $line_top_loc_temp + $card_font_size;
61 | }
62 |
63 | /* CARDS */
64 | #deck {
65 | height: $card_height;
66 | list-style: none;
67 | margin: $neg_space_default auto;
68 | padding: 0;
69 | position: relative;
70 | text-align: center;
71 | width: $card_width;
72 | }
73 |
74 | .card {
75 | @include perspective(1600);
76 | color: $text_color;
77 | display: none;
78 | font-family: $card_font;
79 | font-size: $card_font_size;
80 | height: $card_height;
81 | line-height: $card_font_size * 2;
82 | position: relative;
83 | width: $card_width;
84 | &:first-child { display: block; }
85 | }
86 |
87 | .side_one, .side_two {
88 | @include backface-visibility(hidden);
89 | @include background-image(linear-gradient($card_color 0px, $card_color ($card_font_size - 1), $lines_writing ($card_font_size)));
90 | @include transition($transition_default);
91 | background-color: $card_color;
92 | background-size: $card_width $card_font_size;
93 | background-position: 50%;
94 | height: inherit;
95 | position: absolute;
96 | width: inherit;
97 | }
98 |
99 | @if $drop_shadow == true {
100 | .current .side_one, .current.flip .side_two { @include box-shadow($drop_shadow_offset_x $drop_shadow_offset_y $drop_shadow_blur $drop_shadow_color); }
101 | .current.flip .side_one { @include box-shadow(none); }
102 | }
103 |
104 | .side_one {
105 | @include rotateX(0deg);
106 | @include transform-style(preserve-3d);
107 | z-index: 900;
108 | }
109 | .flip .side_one {
110 | @include rotateX(180deg);
111 | }
112 |
113 | .side_two {
114 | @include rotateX(-180deg);
115 | @include transform-style(preserve-3d);
116 | z-index: 800;
117 | }
118 | .flip .side_two {
119 | @include rotateX(0deg);
120 | z-index: 1000;
121 | }
122 |
123 | .card p {
124 | @include background-image(linear-gradient($card_color 0px, $card_color $line_top_loc - 1, $line_top $line_top_loc));
125 | background-size: $card_width $line_top_loc + 1;
126 | background-repeat: repeat-x;
127 | display: table-cell;
128 | height: $card_height;
129 | vertical-align: middle;
130 | width: $card_width;
131 | }
132 |
133 | /* NAV */
134 | #nav_deck {
135 | color: $button_text_color;
136 | position: relative;
137 | }
138 | .icon {
139 | cursor: pointer;
140 | &:before {
141 | content: attr(data-icon);
142 | font-family: 'Flash Cards';
143 | visibility: visible;
144 | }
145 | }
146 | .visuallyhidden {
147 | border: 0;
148 | clip: rect(0 0 0 0);
149 | height: 1px;
150 | margin: -1px;
151 | overflow: hidden;
152 | padding: 0;
153 | position: absolute;
154 | width: 1px;
155 | }
156 | #prev:before, #next:before, #flipper:before {
157 | font-size: $button_font_size;
158 | padding: $button_padding;
159 | position: absolute;
160 | width: $button_width;
161 | }
162 | #prev:before { left: 0; }
163 | #next:before { right: 0; }
164 | #flipper:before {
165 | left: 50%;
166 | margin-left: -($button_width/2 + $button_padding);
167 | }
168 |
169 | #keyboard_shortcuts {
170 | background: #000;
171 | display: none;
172 | left: 0;
173 | padding: 20px;
174 | position: absolute;
175 | bottom: 0;
176 | z-index: 99999;
177 | }
178 | #keyboard_shortcuts h1 { text-align: center; }
179 | #keyboard_shortcuts td {
180 | padding: 15px;
181 | text-align: left;
182 | width: 300px;
183 | &:first-child { text-align: right; }
184 | }
185 | .or {
186 | color: $text_color;
187 | padding: 0 10px;
188 | }
189 | #keyboard_shortcuts_toggle {
190 | cursor: pointer;
191 | position: absolute;
192 | right: 25px;
193 | top: 25px;
194 | &:before {
195 | @include border-radius(20px);
196 | @include background-clip(padding-box);
197 | background: $kbsi_bg_color;
198 | border: $kbsi_border;
199 | color: $kbsi_text_color;
200 | font-size: $kbsi_font_size;
201 | height: 20px;
202 | padding: 5px;
203 | width: 20px;
204 | }
205 | }
206 |
207 | // =========
208 | // Fallbacks
209 | // =========
210 | // If the browser can't animate the card flip, fade the text out/in.
211 | .no-csstransforms3d .flip .side_one, .no-csstransforms3d .side_two {
212 | @include transition($transition_default);
213 | opacity: 0;
214 | }
215 | .no-csstransforms3d .flip .side_two {
216 | @include transition($transition_default);
217 | opacity: 1;
218 | }
219 |
--------------------------------------------------------------------------------
/css/_fonts.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Flash Cards';
3 | src: url('../resources/fonts/flash_cards/flash_cards.eot');
4 | src: url('../resources/fonts/flash_cards/flash_cards.eot?#iefix') format('embedded-opentype'),
5 | url('../resources/fonts/flash_cards/flash_cards.svg#flash_cards') format('svg'),
6 | url('../resources/fonts/flash_cards/flash_cards.woff') format('woff'),
7 | url('../resources/fonts/flash_cards/flash_cards.ttf') format('truetype');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
--------------------------------------------------------------------------------
/css/style.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:'Flash Cards';src:url("../resources/fonts/flash_cards/flash_cards.eot");src:url("../resources/fonts/flash_cards/flash_cards.eot?#iefix") format("embedded-opentype"),url("../resources/fonts/flash_cards/flash_cards.svg#flash_cards") format("svg"),url("../resources/fonts/flash_cards/flash_cards.woff") format("woff"),url("../resources/fonts/flash_cards/flash_cards.ttf") format("truetype");font-weight:normal;font-style:normal}#deck{height:300px;list-style:none;margin:15px auto;padding:0;position:relative;text-align:center;width:500px}.card{-webkit-perspective:1600;perspective:1600;color:#222;display:none;font-family:SchoolBell;font-size:30px;height:300px;line-height:60px;position:relative;width:500px}.card:first-child{display:block}.side_one,.side_two{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-image:-webkit-gradient(linear, 50% 0%, 50% 30, color-stop(0%, #ffffff), color-stop(96.667%, #ffffff), color-stop(100%, #0080ff));background-image:-webkit-linear-gradient(#ffffff 0px,#ffffff 29px,#0080ff 30px);background-image:-moz-linear-gradient(#ffffff 0px,#ffffff 29px,#0080ff 30px);background-image:-o-linear-gradient(#ffffff 0px,#ffffff 29px,#0080ff 30px);background-image:-ms-linear-gradient(#ffffff 0px,#ffffff 29px,#0080ff 30px);background-image:linear-gradient(#ffffff 0px,#ffffff 29px,#0080ff 30px);-webkit-transition:all 0.4s ease-in-out;-moz-transition:all 0.4s ease-in-out;-ms-transition:all 0.4s ease-in-out;-o-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out;background-color:#fff;background-size:500px 30px;background-position:50%;height:inherit;position:absolute;width:inherit}.current .side_one,.current.flip .side_two{-webkit-box-shadow:0 3px 5px #000;-moz-box-shadow:0 3px 5px #000;box-shadow:0 3px 5px #000}.current.flip .side_one{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.side_one{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-transform-style:preserve-3d;transform-style:preserve-3d;z-index:900}.flip .side_one{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.side_two{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg);-webkit-transform-style:preserve-3d;transform-style:preserve-3d;z-index:800}.flip .side_two{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);z-index:1000}.card p{background-image:-webkit-gradient(linear, 50% 0%, 50% 44, color-stop(0%, #ffffff), color-stop(97.727%, #ffffff), color-stop(100%, #ff78b4));background-image:-webkit-linear-gradient(#ffffff 0px,#ffffff 43px,#ff78b4 44px);background-image:-moz-linear-gradient(#ffffff 0px,#ffffff 43px,#ff78b4 44px);background-image:-o-linear-gradient(#ffffff 0px,#ffffff 43px,#ff78b4 44px);background-image:-ms-linear-gradient(#ffffff 0px,#ffffff 43px,#ff78b4 44px);background-image:linear-gradient(#ffffff 0px,#ffffff 43px,#ff78b4 44px);background-size:500px 45px;background-repeat:repeat-x;display:table-cell;height:300px;vertical-align:middle;width:500px}#nav_deck{color:#fff;position:relative}.icon{cursor:pointer}.icon:before{content:attr(data-icon);font-family:'Flash Cards';visibility:visible}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#prev:before,#next:before,#flipper:before{font-size:30px;padding:10px;position:absolute;width:40px}#prev:before{left:0}#next:before{right:0}#flipper:before{left:50%;margin-left:-30px}#keyboard_shortcuts{background:#000;display:none;left:0;padding:20px;position:absolute;bottom:0;z-index:99999}#keyboard_shortcuts h1{text-align:center}#keyboard_shortcuts td{padding:15px;text-align:left;width:300px}#keyboard_shortcuts td:first-child{text-align:right}.or{color:#222;padding:0 10px}#keyboard_shortcuts_toggle{cursor:pointer;position:absolute;right:25px;top:25px}#keyboard_shortcuts_toggle:before{-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;-o-border-radius:20px;border-radius:20px;-webkit-background-clip:padding;-moz-background-clip:padding;background-clip:padding-box;background:#0080ff;border:1px solid #fff;color:#fff;font-size:25px;height:20px;padding:5px;width:20px}.no-csstransforms3d .flip .side_one,.no-csstransforms3d .side_two{-webkit-transition:all 0.4s ease-in-out;-moz-transition:all 0.4s ease-in-out;-ms-transition:all 0.4s ease-in-out;-o-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out;opacity:0}.no-csstransforms3d .flip .side_two{-webkit-transition:all 0.4s ease-in-out;-moz-transition:all 0.4s ease-in-out;-ms-transition:all 0.4s ease-in-out;-o-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out;opacity:1}body{background:#222;color:#ccc;font:15px sans-serif;margin:0 auto;text-align:center;width:500px}h1{font-size:30px}a{color:#fff}a:visited{color:#fff}a:hover{color:#fff;text-decoration:none}.card:first-child .side_two{font-family:GungSeo, serif}
2 |
--------------------------------------------------------------------------------
/css/style.scss:
--------------------------------------------------------------------------------
1 | @import "flash_cards";
2 |
3 | $font_size_default: 15px;
4 |
5 | $grey_dark: #222;
6 | $grey_light: #ccc;
7 |
8 | body {
9 | background: $grey_dark;
10 | color: $grey_light;
11 | font: $font_size_default sans-serif;
12 | margin: 0 auto;
13 | text-align: center;
14 | width: $card_width;
15 | }
16 |
17 | h1 { font-size: $font_size_default * 2; }
18 |
19 | a {
20 | color: #fff;
21 | &:visited{ color: #fff; }
22 | &:hover{
23 | color: #fff;
24 | text-decoration: none;
25 | }
26 | }
27 |
28 | .card:first-child .side_two { font-family: GungSeo, serif; }
29 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Flash Cards
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
32 |
33 |
34 |
35 |
36 |
How many licks does it take to get to the center of a Tootsie Pop?
37 |
38 |
39 |
The world may never know.
40 |
41 |
42 |
43 |
44 |
45 |
Have you been an un-American?
46 |
47 |
48 |
Ooh-ooh-hoo-ooh!
49 |
50 |
51 |
52 |
53 |
54 | Previous
55 | Flip
56 | Next
57 |
58 |
59 |
60 |
Keyboard Shortcuts
61 |
62 |
63 |
64 | Previous Card
65 | ←
66 |
67 |
68 | Next Card
69 | →
70 |
71 |
72 | Flip Card
73 | ↑ / ↓ / Return / Space
74 |
75 |
76 | Show/Hide Keyboard Shortcuts
77 | ?
78 |
79 |
80 |
81 |
82 |
83 | Keyboard Shortcuts
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/js/flash_cards.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | * jQuery Cycle
3 | * For unminimized version, see /js/plugins/
4 | * All transitions except shuffle have been removed to reduce file size.
5 | */
6 | (function(a,b){function d(b){if(a.fn.cycle.debug)e(b)}function e(){if(window.console&&console.log)console.log("[cycle] "+Array.prototype.join.call(arguments," "))}function f(b,c,d){var e=a(b).data("cycle.opts");var f=!!b.cyclePause;if(f&&e.paused)e.paused(b,e,c,d);else if(!f&&e.resumed)e.resumed(b,e,c,d)}function g(c,d,g){function k(b,c,d){if(!b&&c===true){var f=a(d).data("cycle.opts");if(!f){e("options not found, can not resume");return false}if(d.cycleTimeout){clearTimeout(d.cycleTimeout);d.cycleTimeout=0}n(f.elements,f,1,!f.backwards)}}if(c.cycleStop===b)c.cycleStop=0;if(d===b||d===null)d={};if(d.constructor==String){switch(d){case"destroy":case"stop":var h=a(c).data("cycle.opts");if(!h)return false;c.cycleStop++;if(c.cycleTimeout)clearTimeout(c.cycleTimeout);c.cycleTimeout=0;if(h.elements)a(h.elements).stop();a(c).removeData("cycle.opts");if(d=="destroy")i(c,h);return false;case"toggle":c.cyclePause=c.cyclePause===1?0:1;k(c.cyclePause,g,c);f(c);return false;case"pause":c.cyclePause=1;f(c);return false;case"resume":c.cyclePause=0;k(false,g,c);f(c);return false;case"prev":case"next":h=a(c).data("cycle.opts");if(!h){e('options not found, "prev/next" ignored');return false}a.fn.cycle[d](h);return false;default:d={fx:d}}return d}else if(d.constructor==Number){var j=d;d=a(c).data("cycle.opts");if(!d){e("options not found, can not advance slide");return false}if(j<0||j>=d.elements.length){e("invalid slide index: "+j);return false}d.nextSlide=j;if(c.cycleTimeout){clearTimeout(c.cycleTimeout);c.cycleTimeout=0}if(typeof g=="string")d.oneTimeFx=g;n(d.elements,d,1,j>=d.currSlide);return false}return d}function h(b,c){if(!a.support.opacity&&c.cleartype&&b.style.filter){try{b.style.removeAttribute("filter")}catch(d){}}}function i(b,c){if(c.next)a(c.next).unbind(c.prevNextEvent);if(c.prev)a(c.prev).unbind(c.prevNextEvent);if(c.pager||c.pagerAnchorBuilder)a.each(c.pagerAnchors||[],function(){this.unbind().remove()});c.pagerAnchors=null;a(b).unbind("mouseenter.cycle mouseleave.cycle");if(c.destroy)c.destroy(c)}function j(c,d,g,i,j){var o;var s=a.extend({},a.fn.cycle.defaults,i||{},a.metadata?c.metadata():a.meta?c.data():{});var t=a.isFunction(c.data)?c.data(s.metaAttr):null;if(t)s=a.extend(s,t);if(s.autostop)s.countdown=s.autostopCount||g.length;var u=c[0];c.data("cycle.opts",s);s.$cont=c;s.stopCount=u.cycleStop;s.elements=g;s.before=s.before?[s.before]:[];s.after=s.after?[s.after]:[];if(!a.support.opacity&&s.cleartype)s.after.push(function(){h(this,s)});if(s.continuous)s.after.push(function(){n(g,s,0,!s.backwards)});k(s);if(!a.support.opacity&&s.cleartype&&!s.cleartypeNoBg)r(d);if(c.css("position")=="static")c.css("position","relative");if(s.width)c.width(s.width);if(s.height&&s.height!="auto")c.height(s.height);if(s.startingSlide!==b){s.startingSlide=parseInt(s.startingSlide,10);if(s.startingSlide>=g.length||s.startSlide<0)s.startingSlide=0;else o=true}else if(s.backwards)s.startingSlide=g.length-1;else s.startingSlide=0;if(s.random){s.randomMap=[];for(var v=0;v=g.length)s.startingSlide=0;s.currSlide=s.startingSlide||0;var x=s.startingSlide;d.css({position:"absolute",top:0,left:0}).hide().each(function(b){var c;if(s.backwards)c=x?b<=x?g.length+(b-x):x-b:g.length-b;else c=x?b>=x?g.length-(b-x):x-b:g.length-b;a(this).css("z-index",c)});a(g[x]).css("opacity",1).show();h(g[x],s);if(s.fit){if(!s.aspect){if(s.width)d.width(s.width);if(s.height&&s.height!="auto")d.height(s.height)}else{d.each(function(){var b=a(this);var c=s.aspect===true?b.width()/b.height():s.aspect;if(s.width&&b.width()!=s.width){b.width(s.width);b.height(s.width/c)}if(s.height&&b.height()z?E:z;A=F>A?F:A}if(z>0&&A>0)c.css({width:z+"px",height:A+"px"})}var G=false;if(s.pause)c.bind("mouseenter.cycle",function(){G=true;this.cyclePause++;f(u,true)}).bind("mouseleave.cycle",function(){if(G)this.cyclePause--;f(u,true)});if(l(s)===false)return false;var H=false;i.requeueAttempts=i.requeueAttempts||0;d.each(function(){var b=a(this);this.cycleH=s.fit&&s.height?s.height:b.height()||this.offsetHeight||this.height||b.attr("height")||0;this.cycleW=s.fit&&s.width?s.width:b.width()||this.offsetWidth||this.width||b.attr("width")||0;if(b.is("img")){var c=a.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete;var d=a.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete;var f=a.browser.opera&&(this.cycleW==42&&this.cycleH==19||this.cycleW==37&&this.cycleH==17)&&!this.complete;var g=this.cycleH===0&&this.cycleW===0&&!this.complete;if(c||d||f||g){if(j.s&&s.requeueOnImageNotLoaded&&++i.requeueAttempts<100){e(i.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){a(j.s,j.c).cycle(i)},s.requeueTimeout);H=true;return false}else{e("could not determine size of image: "+this.src,this.cycleW,this.cycleH)}}}return true});if(H)return false;s.cssBefore=s.cssBefore||{};s.cssAfter=s.cssAfter||{};s.cssFirst=s.cssFirst||{};s.animIn=s.animIn||{};s.animOut=s.animOut||{};d.not(":eq("+x+")").css(s.cssBefore);a(d[x]).css(s.cssFirst);if(s.timeout){s.timeout=parseInt(s.timeout,10);if(s.speed.constructor==String)s.speed=a.fx.speeds[s.speed]||parseInt(s.speed,10);if(!s.sync)s.speed=s.speed/2;var I=s.fx=="none"?0:s.fx=="shuffle"?500:250;while(s.timeout-s.speed=g.length-1?0:s.startingSlide+1;if(!s.multiFx){var J=a.fn.cycle.transitions[s.fx];if(a.isFunction(J))J(c,d,s);else if(s.fx!="custom"&&!s.multiFx){e("unknown transition: "+s.fx,"; slideshow terminating");return false}}var K=d[x];if(!s.skipInitializationCallbacks){if(s.before.length)s.before[0].apply(K,[K,K,s,true]);if(s.after.length)s.after[0].apply(K,[K,K,s,true])}if(s.next)a(s.next).bind(s.prevNextEvent,function(){return p(s,1)});if(s.prev)a(s.prev).bind(s.prevNextEvent,function(){return p(s,0)});if(s.pager||s.pagerAnchorBuilder)q(g,s);m(s,g);return s}function k(b){b.original={before:[],after:[]};b.original.cssBefore=a.extend({},b.cssBefore);b.original.cssAfter=a.extend({},b.cssAfter);b.original.animIn=a.extend({},b.animIn);b.original.animOut=a.extend({},b.animOut);a.each(b.before,function(){b.original.before.push(this)});a.each(b.after,function(){b.original.after.push(this)})}function l(b){var c,f,g=a.fn.cycle.transitions;if(b.fx.indexOf(",")>0){b.multiFx=true;b.fxs=b.fx.replace(/\s*/g,"").split(",");for(c=0;c0)h.cycleTimeout=setTimeout(function(){n(c,e,0,!e.backwards)},a)}var h=e.$cont[0],i=c[e.currSlide],j=c[e.nextSlide];if(f&&e.busy&&e.manualTrump){d("manualTrump in go(), stopping active transition");a(c).stop(true,true);e.busy=0;clearTimeout(h.cycleTimeout)}if(e.busy){d("transition active, ignoring new tx request");return}if(h.cycleStop!=e.stopCount||h.cycleTimeout===0&&!f)return;if(!f&&!h.cyclePause&&!e.bounce&&(e.autostop&&--e.countdown<=0||e.nowrap&&!e.random&&e.nextSlide=e.fxs.length))e.lastFx=0;else if(!g&&(e.lastFx===b||--e.lastFx<0))e.lastFx=e.fxs.length-1;l=e.fxs[e.lastFx]}if(e.oneTimeFx){l=e.oneTimeFx;e.oneTimeFx=null}a.fn.cycle.resetState(e,l);if(e.before.length)a.each(e.before,function(a,b){if(h.cycleStop!=e.stopCount)return;b.apply(j,[i,j,e,g])});var m=function(){e.busy=0;a.each(e.after,function(a,b){if(h.cycleStop!=e.stopCount)return;b.apply(j,[i,j,e,g])});if(!h.cycleStop){q()}};d("tx firing("+l+"); currSlide: "+e.currSlide+"; nextSlide: "+e.nextSlide);e.busy=1;if(e.fxFn)e.fxFn(i,j,e,m,g,f&&e.fastOnEvent);else if(a.isFunction(a.fn.cycle[e.fx]))a.fn.cycle[e.fx](i,j,e,m,g,f&&e.fastOnEvent);else a.fn.cycle.custom(i,j,e,m,g,f&&e.fastOnEvent)}else{q()}if(k||e.nextSlide==e.currSlide){var p;e.lastSlide=e.currSlide;if(e.random){e.currSlide=e.nextSlide;if(++e.randomIndex==c.length){e.randomIndex=0;e.randomMap.sort(function(a,b){return Math.random()-.5})}e.nextSlide=e.randomMap[e.randomIndex];if(e.nextSlide==e.currSlide)e.nextSlide=e.currSlide==e.slideCount-1?0:e.currSlide+1}else if(e.backwards){p=e.nextSlide-1<0;if(p&&e.bounce){e.backwards=!e.backwards;e.nextSlide=1;e.currSlide=0}else{e.nextSlide=p?c.length-1:e.nextSlide-1;e.currSlide=p?0:e.nextSlide+1}}else{p=e.nextSlide+1==c.length;if(p&&e.bounce){e.backwards=!e.backwards;e.nextSlide=c.length-2;e.currSlide=c.length-1}else{e.nextSlide=p?0:e.nextSlide+1;e.currSlide=p?c.length-1:e.nextSlide-1}}}if(k&&e.pager)e.updateActivePagerLink(e.pager,e.currSlide,e.activePagerClass)}function o(a,b,c,e){if(c.timeoutFn){var f=c.timeoutFn.call(a,a,b,c,e);while(c.fx!="none"&&f-c.speed<250)f+=c.speed;d("calculated timeout: "+f+"; speed: "+c.speed);if(f!==false)return f}return c.timeout}function p(b,c){var d=c?1:-1;var e=b.elements;var f=b.$cont[0],g=f.cycleTimeout;if(g){clearTimeout(g);f.cycleTimeout=0}if(b.random&&d<0){b.randomIndex--;if(--b.randomIndex==-2)b.randomIndex=e.length-2;else if(b.randomIndex==-1)b.randomIndex=e.length-1;b.nextSlide=b.randomMap[b.randomIndex]}else if(b.random){b.nextSlide=b.randomMap[b.randomIndex]}else{b.nextSlide=b.currSlide+d;if(b.nextSlide<0){if(b.nowrap)return false;b.nextSlide=e.length-1}else if(b.nextSlide>=e.length){if(b.nowrap)return false;b.nextSlide=0}}var h=b.onPrevNextEvent||b.prevNextClick;if(a.isFunction(h))h(d>0,b.nextSlide,e[b.nextSlide]);n(e,b,1,c);return false}function q(b,c){var d=a(c.pager);a.each(b,function(e,f){a.fn.cycle.createPagerAnchor(e,f,d,b,c)});c.updateActivePagerLink(c.pager,c.startingSlide,c.activePagerClass)}function r(b){function c(a){a=parseInt(a,10).toString(16);return a.length<2?"0"+a:a}function e(b){for(;b&&b.nodeName.toLowerCase()!="html";b=b.parentNode){var d=a.css(b,"background-color");if(d&&d.indexOf("rgb")>=0){var e=d.match(/\d+/g);return"#"+c(e[0])+c(e[1])+c(e[2])}if(d&&d!="transparent")return d}return"#ffffff"}d("applying clearType background-color hack");b.each(function(){a(this).css("background-color",e(this))})}"use strict";var c="2.9999.5";if(a.support===b){a.support={opacity:!a.browser.msie}}a.expr[":"].paused=function(a){return a.cyclePause};a.fn.cycle=function(b,c){var f={s:this.selector,c:this.context};if(this.length===0&&b!="stop"){if(!a.isReady&&f.s){e("DOM not ready, queuing slideshow");a(function(){a(f.s,f.c).cycle(b,c)});return this}e("terminating; zero elements found by selector"+(a.isReady?"":" (DOM not ready)"));return this}return this.each(function(){var h=g(this,b,c);if(h===false)return;h.updateActivePagerLink=h.updateActivePagerLink||a.fn.cycle.updateActivePagerLink;if(this.cycleTimeout)clearTimeout(this.cycleTimeout);this.cycleTimeout=this.cyclePause=0;this.cycleStop=0;var i=a(this);var k=h.slideExpr?a(h.slideExpr,this):i.children();var l=k.get();if(l.length<2){e("terminating; too few slides: "+l.length);return}var m=j(i,k,l,h,f);if(m===false)return;var p=m.continuous?10:o(l[m.currSlide],l[m.nextSlide],m,!m.backwards);if(p){p+=m.delay||0;if(p<10)p=10;d("first timeout: "+p);this.cycleTimeout=setTimeout(function(){n(l,m,0,!h.backwards)},p)}})};a.fn.cycle.resetState=function(b,c){c=c||b.fx;b.before=[];b.after=[];b.cssBefore=a.extend({},b.original.cssBefore);b.cssAfter=a.extend({},b.original.cssAfter);b.animIn=a.extend({},b.original.animIn);b.animOut=a.extend({},b.original.animOut);b.fxFn=null;a.each(b.original.before,function(){b.before.push(this)});a.each(b.original.after,function(){b.after.push(this)});var d=a.fn.cycle.transitions[c];if(a.isFunction(d))d(b.$cont,a(b.elements),b)};a.fn.cycle.updateActivePagerLink=function(b,c,d){a(b).each(function(){a(this).children().removeClass(d).eq(c).addClass(d)})};a.fn.cycle.next=function(a){p(a,1)};a.fn.cycle.prev=function(a){p(a,0)};a.fn.cycle.createPagerAnchor=function(b,c,e,g,h){var i;if(a.isFunction(h.pagerAnchorBuilder)){i=h.pagerAnchorBuilder(b,c);d("pagerAnchorBuilder("+b+", el) returned: "+i)}else i=''+(b+1)+" ";if(!i)return;var j=a(i);if(j.parents("body").length===0){var k=[];if(e.length>1){e.each(function(){var b=j.clone(true);a(this).append(b);k.push(b[0])});j=a(k)}else{j.appendTo(e)}}h.pagerAnchors=h.pagerAnchors||[];h.pagerAnchors.push(j);var l=function(c){c.preventDefault();h.nextSlide=b;var d=h.$cont[0],e=d.cycleTimeout;if(e){clearTimeout(e);d.cycleTimeout=0}var f=h.onPagerEvent||h.pagerClick;if(a.isFunction(f))f(h.nextSlide,g[h.nextSlide]);n(g,h,1,h.currSlided?e-d:a.slideCount-d;else c=e0)d.cssBefore.width=c.cycleW;if(d.slideResize&&f!==false&&c.cycleH>0)d.cssBefore.height=c.cycleH;d.cssAfter=d.cssAfter||{};d.cssAfter.display="none";a(b).css("zIndex",d.slideCount+(g===true?1:0));a(c).css("zIndex",d.slideCount+(g===true?0:1))};a.fn.cycle.custom=function(b,c,d,e,f,g){var h=a(b),i=a(c);var j=d.speedIn,k=d.speedOut,l=d.easeIn,m=d.easeOut;i.css(d.cssBefore);if(g){if(typeof g=="number")j=k=g;else j=k=1;l=m=null}var n=function(){i.animate(d.animIn,j,l,function(){e()})};h.animate(d.animOut,k,m,function(){h.css(d.cssAfter);if(!d.sync)n()});if(d.sync)n()};a.fn.cycle.transitions={fade:function(b,c,d){c.not(":eq("+d.currSlide+")").css("opacity",0);d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d);d.cssBefore.opacity=0});d.animIn={opacity:1};d.animOut={opacity:0};d.cssBefore={top:0,left:0}}};a.fn.cycle.ver=function(){return c};a.fn.cycle.defaults={activePagerClass:"activeSlide",after:null,allowPagerClickBubble:false,animIn:null,animOut:null,aspect:false,autostop:0,autostopCount:0,backwards:false,before:null,center:null,cleartype:!a.support.opacity,cleartypeNoBg:false,containerResize:1,continuous:0,cssAfter:null,cssBefore:null,delay:0,easeIn:null,easeOut:null,easing:null,end:null,fastOnEvent:0,fit:0,fx:"fade",fxFn:null,height:"auto",manualTrump:true,metaAttr:"cycle",next:null,nowrap:0,onPagerEvent:null,onPrevNextEvent:null,pager:null,pagerAnchorBuilder:null,pagerEvent:"click.cycle",pause:0,pauseOnPagerHover:0,prev:null,prevNextEvent:"click.cycle",random:0,randomizeEffects:1,requeueOnImageNotLoaded:true,requeueTimeout:250,rev:0,shuffle:null,skipInitializationCallbacks:false,slideExpr:null,slideResize:1,speed:1e3,speedIn:null,speedOut:null,startingSlide:b,sync:1,timeout:4e3,timeoutFn:null,updateActivePagerLink:null,width:null}})(jQuery);(function(a){"use strict";a.fn.cycle.transitions.shuffle=function(b,c,d){var e,f=b.css("overflow","visible").width();c.css({left:0,top:0});d.before.push(function(b,c,d){a.fn.cycle.commonReset(b,c,d,true,true,true)});if(!d.speedAdjusted){d.speed=d.speed/2;d.speedAdjusted=true}d.random=0;d.shuffle=d.shuffle||{left:-f,top:15};d.els=[];for(e=0;e= options.elements.length) {
171 | log('invalid slide index: ' + num);
172 | return false;
173 | }
174 | options.nextSlide = num;
175 | if (cont.cycleTimeout) {
176 | clearTimeout(cont.cycleTimeout);
177 | cont.cycleTimeout = 0;
178 | }
179 | if (typeof arg2 == 'string')
180 | options.oneTimeFx = arg2;
181 | go(options.elements, options, 1, num >= options.currSlide);
182 | return false;
183 | }
184 | return options;
185 |
186 | function checkInstantResume(isPaused, arg2, cont) {
187 | if (!isPaused && arg2 === true) { // resume now!
188 | var options = $(cont).data('cycle.opts');
189 | if (!options) {
190 | log('options not found, can not resume');
191 | return false;
192 | }
193 | if (cont.cycleTimeout) {
194 | clearTimeout(cont.cycleTimeout);
195 | cont.cycleTimeout = 0;
196 | }
197 | go(options.elements, options, 1, !options.backwards);
198 | }
199 | }
200 | }
201 |
202 | function removeFilter(el, opts) {
203 | if (!$.support.opacity && opts.cleartype && el.style.filter) {
204 | try { el.style.removeAttribute('filter'); }
205 | catch(smother) {} // handle old opera versions
206 | }
207 | }
208 |
209 | // unbind event handlers
210 | function destroy(cont, opts) {
211 | if (opts.next)
212 | $(opts.next).unbind(opts.prevNextEvent);
213 | if (opts.prev)
214 | $(opts.prev).unbind(opts.prevNextEvent);
215 |
216 | if (opts.pager || opts.pagerAnchorBuilder)
217 | $.each(opts.pagerAnchors || [], function() {
218 | this.unbind().remove();
219 | });
220 | opts.pagerAnchors = null;
221 | $(cont).unbind('mouseenter.cycle mouseleave.cycle');
222 | if (opts.destroy) // callback
223 | opts.destroy(opts);
224 | }
225 |
226 | // one-time initialization
227 | function buildOptions($cont, $slides, els, options, o) {
228 | var startingSlideSpecified;
229 | // support metadata plugin (v1.0 and v2.0)
230 | var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
231 | var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null;
232 | if (meta)
233 | opts = $.extend(opts, meta);
234 | if (opts.autostop)
235 | opts.countdown = opts.autostopCount || els.length;
236 |
237 | var cont = $cont[0];
238 | $cont.data('cycle.opts', opts);
239 | opts.$cont = $cont;
240 | opts.stopCount = cont.cycleStop;
241 | opts.elements = els;
242 | opts.before = opts.before ? [opts.before] : [];
243 | opts.after = opts.after ? [opts.after] : [];
244 |
245 | // push some after callbacks
246 | if (!$.support.opacity && opts.cleartype)
247 | opts.after.push(function() { removeFilter(this, opts); });
248 | if (opts.continuous)
249 | opts.after.push(function() { go(els,opts,0,!opts.backwards); });
250 |
251 | saveOriginalOpts(opts);
252 |
253 | // clearType corrections
254 | if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
255 | clearTypeFix($slides);
256 |
257 | // container requires non-static position so that slides can be position within
258 | if ($cont.css('position') == 'static')
259 | $cont.css('position', 'relative');
260 | if (opts.width)
261 | $cont.width(opts.width);
262 | if (opts.height && opts.height != 'auto')
263 | $cont.height(opts.height);
264 |
265 | if (opts.startingSlide !== undefined) {
266 | opts.startingSlide = parseInt(opts.startingSlide,10);
267 | if (opts.startingSlide >= els.length || opts.startSlide < 0)
268 | opts.startingSlide = 0; // catch bogus input
269 | else
270 | startingSlideSpecified = true;
271 | }
272 | else if (opts.backwards)
273 | opts.startingSlide = els.length - 1;
274 | else
275 | opts.startingSlide = 0;
276 |
277 | // if random, mix up the slide array
278 | if (opts.random) {
279 | opts.randomMap = [];
280 | for (var i = 0; i < els.length; i++)
281 | opts.randomMap.push(i);
282 | opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
283 | if (startingSlideSpecified) {
284 | // try to find the specified starting slide and if found set start slide index in the map accordingly
285 | for ( var cnt = 0; cnt < els.length; cnt++ ) {
286 | if ( opts.startingSlide == opts.randomMap[cnt] ) {
287 | opts.randomIndex = cnt;
288 | }
289 | }
290 | }
291 | else {
292 | opts.randomIndex = 1;
293 | opts.startingSlide = opts.randomMap[1];
294 | }
295 | }
296 | else if (opts.startingSlide >= els.length)
297 | opts.startingSlide = 0; // catch bogus input
298 | opts.currSlide = opts.startingSlide || 0;
299 | var first = opts.startingSlide;
300 |
301 | // set position and zIndex on all the slides
302 | $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
303 | var z;
304 | if (opts.backwards)
305 | z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i;
306 | else
307 | z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
308 | $(this).css('z-index', z);
309 | });
310 |
311 | // make sure first slide is visible
312 | $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
313 | removeFilter(els[first], opts);
314 |
315 | // stretch slides
316 | if (opts.fit) {
317 | if (!opts.aspect) {
318 | if (opts.width)
319 | $slides.width(opts.width);
320 | if (opts.height && opts.height != 'auto')
321 | $slides.height(opts.height);
322 | } else {
323 | $slides.each(function(){
324 | var $slide = $(this);
325 | var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect;
326 | if( opts.width && $slide.width() != opts.width ) {
327 | $slide.width( opts.width );
328 | $slide.height( opts.width / ratio );
329 | }
330 |
331 | if( opts.height && $slide.height() < opts.height ) {
332 | $slide.height( opts.height );
333 | $slide.width( opts.height * ratio );
334 | }
335 | });
336 | }
337 | }
338 |
339 | if (opts.center && ((!opts.fit) || opts.aspect)) {
340 | $slides.each(function(){
341 | var $slide = $(this);
342 | $slide.css({
343 | "margin-left": opts.width ?
344 | ((opts.width - $slide.width()) / 2) + "px" :
345 | 0,
346 | "margin-top": opts.height ?
347 | ((opts.height - $slide.height()) / 2) + "px" :
348 | 0
349 | });
350 | });
351 | }
352 |
353 | if (opts.center && !opts.fit && !opts.slideResize) {
354 | $slides.each(function(){
355 | var $slide = $(this);
356 | $slide.css({
357 | "margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
358 | "margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
359 | });
360 | });
361 | }
362 |
363 | // stretch container
364 | var reshape = opts.containerResize && !$cont.innerHeight();
365 | if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
366 | var maxw = 0, maxh = 0;
367 | for(var j=0; j < els.length; j++) {
368 | var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
369 | if (!w) w = e.offsetWidth || e.width || $e.attr('width');
370 | if (!h) h = e.offsetHeight || e.height || $e.attr('height');
371 | maxw = w > maxw ? w : maxw;
372 | maxh = h > maxh ? h : maxh;
373 | }
374 | if (maxw > 0 && maxh > 0)
375 | $cont.css({width:maxw+'px',height:maxh+'px'});
376 | }
377 |
378 | var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
379 | if (opts.pause)
380 | $cont.bind('mouseenter.cycle', function(){
381 | pauseFlag = true;
382 | this.cyclePause++;
383 | triggerPause(cont, true);
384 | }).bind('mouseleave.cycle', function(){
385 | if (pauseFlag)
386 | this.cyclePause--;
387 | triggerPause(cont, true);
388 | });
389 |
390 | if (supportMultiTransitions(opts) === false)
391 | return false;
392 |
393 | // apparently a lot of people use image slideshows without height/width attributes on the images.
394 | // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
395 | var requeue = false;
396 | options.requeueAttempts = options.requeueAttempts || 0;
397 | $slides.each(function() {
398 | // try to get height/width of each slide
399 | var $el = $(this);
400 | this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
401 | this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);
402 |
403 | if ( $el.is('img') ) {
404 | // sigh.. sniffing, hacking, shrugging... this crappy hack tries to account for what browsers do when
405 | // an image is being downloaded and the markup did not include sizing info (height/width attributes);
406 | // there seems to be some "default" sizes used in this situation
407 | var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
408 | var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
409 | var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
410 | var loadingOther = (this.cycleH === 0 && this.cycleW === 0 && !this.complete);
411 | // don't requeue for images that are still loading but have a valid size
412 | if (loadingIE || loadingFF || loadingOp || loadingOther) {
413 | if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
414 | log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
415 | setTimeout(function() {$(o.s,o.c).cycle(options);}, opts.requeueTimeout);
416 | requeue = true;
417 | return false; // break each loop
418 | }
419 | else {
420 | log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
421 | }
422 | }
423 | }
424 | return true;
425 | });
426 |
427 | if (requeue)
428 | return false;
429 |
430 | opts.cssBefore = opts.cssBefore || {};
431 | opts.cssAfter = opts.cssAfter || {};
432 | opts.cssFirst = opts.cssFirst || {};
433 | opts.animIn = opts.animIn || {};
434 | opts.animOut = opts.animOut || {};
435 |
436 | $slides.not(':eq('+first+')').css(opts.cssBefore);
437 | $($slides[first]).css(opts.cssFirst);
438 |
439 | if (opts.timeout) {
440 | opts.timeout = parseInt(opts.timeout,10);
441 | // ensure that timeout and speed settings are sane
442 | if (opts.speed.constructor == String)
443 | opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10);
444 | if (!opts.sync)
445 | opts.speed = opts.speed / 2;
446 |
447 | var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
448 | while((opts.timeout - opts.speed) < buffer) // sanitize timeout
449 | opts.timeout += opts.speed;
450 | }
451 | if (opts.easing)
452 | opts.easeIn = opts.easeOut = opts.easing;
453 | if (!opts.speedIn)
454 | opts.speedIn = opts.speed;
455 | if (!opts.speedOut)
456 | opts.speedOut = opts.speed;
457 |
458 | opts.slideCount = els.length;
459 | opts.currSlide = opts.lastSlide = first;
460 | if (opts.random) {
461 | if (++opts.randomIndex == els.length)
462 | opts.randomIndex = 0;
463 | opts.nextSlide = opts.randomMap[opts.randomIndex];
464 | }
465 | else if (opts.backwards)
466 | opts.nextSlide = opts.startingSlide === 0 ? (els.length-1) : opts.startingSlide-1;
467 | else
468 | opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;
469 |
470 | // run transition init fn
471 | if (!opts.multiFx) {
472 | var init = $.fn.cycle.transitions[opts.fx];
473 | if ($.isFunction(init))
474 | init($cont, $slides, opts);
475 | else if (opts.fx != 'custom' && !opts.multiFx) {
476 | log('unknown transition: ' + opts.fx,'; slideshow terminating');
477 | return false;
478 | }
479 | }
480 |
481 | // fire artificial events
482 | var e0 = $slides[first];
483 | if (!opts.skipInitializationCallbacks) {
484 | if (opts.before.length)
485 | opts.before[0].apply(e0, [e0, e0, opts, true]);
486 | if (opts.after.length)
487 | opts.after[0].apply(e0, [e0, e0, opts, true]);
488 | }
489 | if (opts.next)
490 | $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1);});
491 | if (opts.prev)
492 | $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0);});
493 | if (opts.pager || opts.pagerAnchorBuilder)
494 | buildPager(els,opts);
495 |
496 | exposeAddSlide(opts, els);
497 |
498 | return opts;
499 | }
500 |
501 | // save off original opts so we can restore after clearing state
502 | function saveOriginalOpts(opts) {
503 | opts.original = { before: [], after: [] };
504 | opts.original.cssBefore = $.extend({}, opts.cssBefore);
505 | opts.original.cssAfter = $.extend({}, opts.cssAfter);
506 | opts.original.animIn = $.extend({}, opts.animIn);
507 | opts.original.animOut = $.extend({}, opts.animOut);
508 | $.each(opts.before, function() { opts.original.before.push(this); });
509 | $.each(opts.after, function() { opts.original.after.push(this); });
510 | }
511 |
512 | function supportMultiTransitions(opts) {
513 | var i, tx, txs = $.fn.cycle.transitions;
514 | // look for multiple effects
515 | if (opts.fx.indexOf(',') > 0) {
516 | opts.multiFx = true;
517 | opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
518 | // discard any bogus effect names
519 | for (i=0; i < opts.fxs.length; i++) {
520 | var fx = opts.fxs[i];
521 | tx = txs[fx];
522 | if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
523 | log('discarding unknown transition: ',fx);
524 | opts.fxs.splice(i,1);
525 | i--;
526 | }
527 | }
528 | // if we have an empty list then we threw everything away!
529 | if (!opts.fxs.length) {
530 | log('No valid transitions named; slideshow terminating.');
531 | return false;
532 | }
533 | }
534 | else if (opts.fx == 'all') { // auto-gen the list of transitions
535 | opts.multiFx = true;
536 | opts.fxs = [];
537 | for (var p in txs) {
538 | if (txs.hasOwnProperty(p)) {
539 | tx = txs[p];
540 | if (txs.hasOwnProperty(p) && $.isFunction(tx))
541 | opts.fxs.push(p);
542 | }
543 | }
544 | }
545 | if (opts.multiFx && opts.randomizeEffects) {
546 | // munge the fxs array to make effect selection random
547 | var r1 = Math.floor(Math.random() * 20) + 30;
548 | for (i = 0; i < r1; i++) {
549 | var r2 = Math.floor(Math.random() * opts.fxs.length);
550 | opts.fxs.push(opts.fxs.splice(r2,1)[0]);
551 | }
552 | debug('randomized fx sequence: ',opts.fxs);
553 | }
554 | return true;
555 | }
556 |
557 | // provide a mechanism for adding slides after the slideshow has started
558 | function exposeAddSlide(opts, els) {
559 | opts.addSlide = function(newSlide, prepend) {
560 | var $s = $(newSlide), s = $s[0];
561 | if (!opts.autostopCount)
562 | opts.countdown++;
563 | els[prepend?'unshift':'push'](s);
564 | if (opts.els)
565 | opts.els[prepend?'unshift':'push'](s); // shuffle needs this
566 | opts.slideCount = els.length;
567 |
568 | // add the slide to the random map and resort
569 | if (opts.random) {
570 | opts.randomMap.push(opts.slideCount-1);
571 | opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
572 | }
573 |
574 | $s.css('position','absolute');
575 | $s[prepend?'prependTo':'appendTo'](opts.$cont);
576 |
577 | if (prepend) {
578 | opts.currSlide++;
579 | opts.nextSlide++;
580 | }
581 |
582 | if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
583 | clearTypeFix($s);
584 |
585 | if (opts.fit && opts.width)
586 | $s.width(opts.width);
587 | if (opts.fit && opts.height && opts.height != 'auto')
588 | $s.height(opts.height);
589 | s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
590 | s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();
591 |
592 | $s.css(opts.cssBefore);
593 |
594 | if (opts.pager || opts.pagerAnchorBuilder)
595 | $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);
596 |
597 | if ($.isFunction(opts.onAddSlide))
598 | opts.onAddSlide($s);
599 | else
600 | $s.hide(); // default behavior
601 | };
602 | }
603 |
604 | // reset internal state; we do this on every pass in order to support multiple effects
605 | $.fn.cycle.resetState = function(opts, fx) {
606 | fx = fx || opts.fx;
607 | opts.before = []; opts.after = [];
608 | opts.cssBefore = $.extend({}, opts.original.cssBefore);
609 | opts.cssAfter = $.extend({}, opts.original.cssAfter);
610 | opts.animIn = $.extend({}, opts.original.animIn);
611 | opts.animOut = $.extend({}, opts.original.animOut);
612 | opts.fxFn = null;
613 | $.each(opts.original.before, function() { opts.before.push(this); });
614 | $.each(opts.original.after, function() { opts.after.push(this); });
615 |
616 | // re-init
617 | var init = $.fn.cycle.transitions[fx];
618 | if ($.isFunction(init))
619 | init(opts.$cont, $(opts.elements), opts);
620 | };
621 |
622 | // this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
623 | function go(els, opts, manual, fwd) {
624 | var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];
625 |
626 | // opts.busy is true if we're in the middle of an animation
627 | if (manual && opts.busy && opts.manualTrump) {
628 | // let manual transitions requests trump active ones
629 | debug('manualTrump in go(), stopping active transition');
630 | $(els).stop(true,true);
631 | opts.busy = 0;
632 | clearTimeout(p.cycleTimeout);
633 | }
634 |
635 | // don't begin another timeout-based transition if there is one active
636 | if (opts.busy) {
637 | debug('transition active, ignoring new tx request');
638 | return;
639 | }
640 |
641 |
642 | // stop cycling if we have an outstanding stop request
643 | if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
644 | return;
645 |
646 | // check to see if we should stop cycling based on autostop options
647 | if (!manual && !p.cyclePause && !opts.bounce &&
648 | ((opts.autostop && (--opts.countdown <= 0)) ||
649 | (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
650 | if (opts.end)
651 | opts.end(opts);
652 | return;
653 | }
654 |
655 | // if slideshow is paused, only transition on a manual trigger
656 | var changed = false;
657 | if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
658 | changed = true;
659 | var fx = opts.fx;
660 | // keep trying to get the slide size if we don't have it yet
661 | curr.cycleH = curr.cycleH || $(curr).height();
662 | curr.cycleW = curr.cycleW || $(curr).width();
663 | next.cycleH = next.cycleH || $(next).height();
664 | next.cycleW = next.cycleW || $(next).width();
665 |
666 | // support multiple transition types
667 | if (opts.multiFx) {
668 | if (fwd && (opts.lastFx === undefined || ++opts.lastFx >= opts.fxs.length))
669 | opts.lastFx = 0;
670 | else if (!fwd && (opts.lastFx === undefined || --opts.lastFx < 0))
671 | opts.lastFx = opts.fxs.length - 1;
672 | fx = opts.fxs[opts.lastFx];
673 | }
674 |
675 | // one-time fx overrides apply to: $('div').cycle(3,'zoom');
676 | if (opts.oneTimeFx) {
677 | fx = opts.oneTimeFx;
678 | opts.oneTimeFx = null;
679 | }
680 |
681 | $.fn.cycle.resetState(opts, fx);
682 |
683 | // run the before callbacks
684 | if (opts.before.length)
685 | $.each(opts.before, function(i,o) {
686 | if (p.cycleStop != opts.stopCount) return;
687 | o.apply(next, [curr, next, opts, fwd]);
688 | });
689 |
690 | // stage the after callacks
691 | var after = function() {
692 | opts.busy = 0;
693 | $.each(opts.after, function(i,o) {
694 | if (p.cycleStop != opts.stopCount) return;
695 | o.apply(next, [curr, next, opts, fwd]);
696 | });
697 | if (!p.cycleStop) {
698 | // queue next transition
699 | queueNext();
700 | }
701 | };
702 |
703 | debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
704 |
705 | // get ready to perform the transition
706 | opts.busy = 1;
707 | if (opts.fxFn) // fx function provided?
708 | opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
709 | else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
710 | $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
711 | else
712 | $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
713 | }
714 | else {
715 | queueNext();
716 | }
717 |
718 | if (changed || opts.nextSlide == opts.currSlide) {
719 | // calculate the next slide
720 | var roll;
721 | opts.lastSlide = opts.currSlide;
722 | if (opts.random) {
723 | opts.currSlide = opts.nextSlide;
724 | if (++opts.randomIndex == els.length) {
725 | opts.randomIndex = 0;
726 | opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
727 | }
728 | opts.nextSlide = opts.randomMap[opts.randomIndex];
729 | if (opts.nextSlide == opts.currSlide)
730 | opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
731 | }
732 | else if (opts.backwards) {
733 | roll = (opts.nextSlide - 1) < 0;
734 | if (roll && opts.bounce) {
735 | opts.backwards = !opts.backwards;
736 | opts.nextSlide = 1;
737 | opts.currSlide = 0;
738 | }
739 | else {
740 | opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1;
741 | opts.currSlide = roll ? 0 : opts.nextSlide+1;
742 | }
743 | }
744 | else { // sequence
745 | roll = (opts.nextSlide + 1) == els.length;
746 | if (roll && opts.bounce) {
747 | opts.backwards = !opts.backwards;
748 | opts.nextSlide = els.length-2;
749 | opts.currSlide = els.length-1;
750 | }
751 | else {
752 | opts.nextSlide = roll ? 0 : opts.nextSlide+1;
753 | opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
754 | }
755 | }
756 | }
757 | if (changed && opts.pager)
758 | opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
759 |
760 | function queueNext() {
761 | // stage the next transition
762 | var ms = 0, timeout = opts.timeout;
763 | if (opts.timeout && !opts.continuous) {
764 | ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
765 | if (opts.fx == 'shuffle')
766 | ms -= opts.speedOut;
767 | }
768 | else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
769 | ms = 10;
770 | if (ms > 0)
771 | p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards); }, ms);
772 | }
773 | }
774 |
775 | // invoked after transition
776 | $.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
777 | $(pager).each(function() {
778 | $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
779 | });
780 | };
781 |
782 | // calculate timeout value for current transition
783 | function getTimeout(curr, next, opts, fwd) {
784 | if (opts.timeoutFn) {
785 | // call user provided calc fn
786 | var t = opts.timeoutFn.call(curr,curr,next,opts,fwd);
787 | while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout
788 | t += opts.speed;
789 | debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
790 | if (t !== false)
791 | return t;
792 | }
793 | return opts.timeout;
794 | }
795 |
796 | // expose next/prev function, caller must pass in state
797 | $.fn.cycle.next = function(opts) { advance(opts,1); };
798 | $.fn.cycle.prev = function(opts) { advance(opts,0);};
799 |
800 | // advance slide forward or back
801 | function advance(opts, moveForward) {
802 | var val = moveForward ? 1 : -1;
803 | var els = opts.elements;
804 | var p = opts.$cont[0], timeout = p.cycleTimeout;
805 | if (timeout) {
806 | clearTimeout(timeout);
807 | p.cycleTimeout = 0;
808 | }
809 | if (opts.random && val < 0) {
810 | // move back to the previously display slide
811 | opts.randomIndex--;
812 | if (--opts.randomIndex == -2)
813 | opts.randomIndex = els.length-2;
814 | else if (opts.randomIndex == -1)
815 | opts.randomIndex = els.length-1;
816 | opts.nextSlide = opts.randomMap[opts.randomIndex];
817 | }
818 | else if (opts.random) {
819 | opts.nextSlide = opts.randomMap[opts.randomIndex];
820 | }
821 | else {
822 | opts.nextSlide = opts.currSlide + val;
823 | if (opts.nextSlide < 0) {
824 | if (opts.nowrap) return false;
825 | opts.nextSlide = els.length - 1;
826 | }
827 | else if (opts.nextSlide >= els.length) {
828 | if (opts.nowrap) return false;
829 | opts.nextSlide = 0;
830 | }
831 | }
832 |
833 | var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
834 | if ($.isFunction(cb))
835 | cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
836 | go(els, opts, 1, moveForward);
837 | return false;
838 | }
839 |
840 | function buildPager(els, opts) {
841 | var $p = $(opts.pager);
842 | $.each(els, function(i,o) {
843 | $.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
844 | });
845 | opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
846 | }
847 |
848 | $.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
849 | var a;
850 | if ($.isFunction(opts.pagerAnchorBuilder)) {
851 | a = opts.pagerAnchorBuilder(i,el);
852 | debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
853 | }
854 | else
855 | a = ''+(i+1)+' ';
856 |
857 | if (!a)
858 | return;
859 | var $a = $(a);
860 | // don't reparent if anchor is in the dom
861 | if ($a.parents('body').length === 0) {
862 | var arr = [];
863 | if ($p.length > 1) {
864 | $p.each(function() {
865 | var $clone = $a.clone(true);
866 | $(this).append($clone);
867 | arr.push($clone[0]);
868 | });
869 | $a = $(arr);
870 | }
871 | else {
872 | $a.appendTo($p);
873 | }
874 | }
875 |
876 | opts.pagerAnchors = opts.pagerAnchors || [];
877 | opts.pagerAnchors.push($a);
878 |
879 | var pagerFn = function(e) {
880 | e.preventDefault();
881 | opts.nextSlide = i;
882 | var p = opts.$cont[0], timeout = p.cycleTimeout;
883 | if (timeout) {
884 | clearTimeout(timeout);
885 | p.cycleTimeout = 0;
886 | }
887 | var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
888 | if ($.isFunction(cb))
889 | cb(opts.nextSlide, els[opts.nextSlide]);
890 | go(els,opts,1,opts.currSlide < i); // trigger the trans
891 | // return false; // <== allow bubble
892 | };
893 |
894 | if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) {
895 | $a.hover(pagerFn, function(){/* no-op */} );
896 | }
897 | else {
898 | $a.bind(opts.pagerEvent, pagerFn);
899 | }
900 |
901 | if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
902 | $a.bind('click.cycle', function(){return false;}); // suppress click
903 |
904 | var cont = opts.$cont[0];
905 | var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
906 | if (opts.pauseOnPagerHover) {
907 | $a.hover(
908 | function() {
909 | pauseFlag = true;
910 | cont.cyclePause++;
911 | triggerPause(cont,true,true);
912 | }, function() {
913 | if (pauseFlag)
914 | cont.cyclePause--;
915 | triggerPause(cont,true,true);
916 | }
917 | );
918 | }
919 | };
920 |
921 | // helper fn to calculate the number of slides between the current and the next
922 | $.fn.cycle.hopsFromLast = function(opts, fwd) {
923 | var hops, l = opts.lastSlide, c = opts.currSlide;
924 | if (fwd)
925 | hops = c > l ? c - l : opts.slideCount - l;
926 | else
927 | hops = c < l ? l - c : l + opts.slideCount - c;
928 | return hops;
929 | };
930 |
931 | // fix clearType problems in ie6 by setting an explicit bg color
932 | // (otherwise text slides look horrible during a fade transition)
933 | function clearTypeFix($slides) {
934 | debug('applying clearType background-color hack');
935 | function hex(s) {
936 | s = parseInt(s,10).toString(16);
937 | return s.length < 2 ? '0'+s : s;
938 | }
939 | function getBg(e) {
940 | for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
941 | var v = $.css(e,'background-color');
942 | if (v && v.indexOf('rgb') >= 0 ) {
943 | var rgb = v.match(/\d+/g);
944 | return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
945 | }
946 | if (v && v != 'transparent')
947 | return v;
948 | }
949 | return '#ffffff';
950 | }
951 | $slides.each(function() { $(this).css('background-color', getBg(this)); });
952 | }
953 |
954 | // reset common props before the next transition
955 | $.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
956 | $(opts.elements).not(curr).hide();
957 | if (typeof opts.cssBefore.opacity == 'undefined')
958 | opts.cssBefore.opacity = 1;
959 | opts.cssBefore.display = 'block';
960 | if (opts.slideResize && w !== false && next.cycleW > 0)
961 | opts.cssBefore.width = next.cycleW;
962 | if (opts.slideResize && h !== false && next.cycleH > 0)
963 | opts.cssBefore.height = next.cycleH;
964 | opts.cssAfter = opts.cssAfter || {};
965 | opts.cssAfter.display = 'none';
966 | $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
967 | $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
968 | };
969 |
970 | // the actual fn for effecting a transition
971 | $.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
972 | var $l = $(curr), $n = $(next);
973 | var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
974 | $n.css(opts.cssBefore);
975 | if (speedOverride) {
976 | if (typeof speedOverride == 'number')
977 | speedIn = speedOut = speedOverride;
978 | else
979 | speedIn = speedOut = 1;
980 | easeIn = easeOut = null;
981 | }
982 | var fn = function() {
983 | $n.animate(opts.animIn, speedIn, easeIn, function() {
984 | cb();
985 | });
986 | };
987 | $l.animate(opts.animOut, speedOut, easeOut, function() {
988 | $l.css(opts.cssAfter);
989 | if (!opts.sync)
990 | fn();
991 | });
992 | if (opts.sync) fn();
993 | };
994 |
995 | // transition definitions - only fade is defined here, transition pack defines the rest
996 | $.fn.cycle.transitions = {
997 | fade: function($cont, $slides, opts) {
998 | $slides.not(':eq('+opts.currSlide+')').css('opacity',0);
999 | opts.before.push(function(curr,next,opts) {
1000 | $.fn.cycle.commonReset(curr,next,opts);
1001 | opts.cssBefore.opacity = 0;
1002 | });
1003 | opts.animIn = { opacity: 1 };
1004 | opts.animOut = { opacity: 0 };
1005 | opts.cssBefore = { top: 0, left: 0 };
1006 | }
1007 | };
1008 |
1009 | $.fn.cycle.ver = function() { return ver; };
1010 |
1011 | // override these globally if you like (they are all optional)
1012 | $.fn.cycle.defaults = {
1013 | activePagerClass: 'activeSlide', // class name used for the active pager link
1014 | after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
1015 | allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
1016 | animIn: null, // properties that define how the slide animates in
1017 | animOut: null, // properties that define how the slide animates out
1018 | aspect: false, // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option)
1019 | autostop: 0, // true to end slideshow after X transitions (where X == slide count)
1020 | autostopCount: 0, // number of transitions (optionally used with autostop to define X)
1021 | backwards: false, // true to start slideshow at last slide and move backwards through the stack
1022 | before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
1023 | center: null, // set to true to have cycle add top/left margin to each slide (use with width and height options)
1024 | cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE)
1025 | cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
1026 | containerResize: 1, // resize container to fit largest slide
1027 | continuous: 0, // true to start next transition immediately after current one completes
1028 | cssAfter: null, // properties that defined the state of the slide after transitioning out
1029 | cssBefore: null, // properties that define the initial state of the slide before transitioning in
1030 | delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
1031 | easeIn: null, // easing for "in" transition
1032 | easeOut: null, // easing for "out" transition
1033 | easing: null, // easing method for both in and out transitions
1034 | end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
1035 | fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
1036 | fit: 0, // force slides to fit container
1037 | fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
1038 | fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
1039 | height: 'auto', // container height (if the 'fit' option is true, the slides will be set to this height as well)
1040 | manualTrump: true, // causes manual transition to stop an active transition instead of being ignored
1041 | metaAttr: 'cycle', // data- attribute that holds the option data for the slideshow
1042 | next: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide
1043 | nowrap: 0, // true to prevent slideshow from wrapping
1044 | onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
1045 | onPrevNextEvent: null, // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
1046 | pager: null, // element, jQuery object, or jQuery selector string for the element to use as pager container
1047 | pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement)
1048 | pagerEvent: 'click.cycle', // name of event which drives the pager navigation
1049 | pause: 0, // true to enable "pause on hover"
1050 | pauseOnPagerHover: 0, // true to pause when hovering over pager link
1051 | prev: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide
1052 | prevNextEvent: 'click.cycle',// event which drives the manual transition to the previous or next slide
1053 | random: 0, // true for random, false for sequence (not applicable to shuffle fx)
1054 | randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random
1055 | requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
1056 | requeueTimeout: 250, // ms delay for requeue
1057 | rev: 0, // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
1058 | shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 }
1059 | skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition
1060 | slideExpr: null, // expression for selecting slides (if something other than all children is required)
1061 | slideResize: 1, // force slide width/height to fixed size before every transition
1062 | speed: 1000, // speed of the transition (any valid fx speed value)
1063 | speedIn: null, // speed of the 'in' transition
1064 | speedOut: null, // speed of the 'out' transition
1065 | startingSlide: undefined,// zero-based index of the first slide to be displayed
1066 | sync: 1, // true if in/out transitions should occur simultaneously
1067 | timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
1068 | timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag)
1069 | updateActivePagerLink: null,// callback fn invoked to update the active pager link (adds/removes activePagerClass style)
1070 | width: null // container width (if the 'fit' option is true, the slides will be set to this width as well)
1071 | };
1072 |
1073 | })(jQuery);
1074 |
1075 |
1076 | /*!
1077 | * jQuery Cycle Plugin Transition Definitions
1078 | * This script is a plugin for the jQuery Cycle Plugin
1079 | * Examples and documentation at: http://malsup.com/jquery/cycle/
1080 | * Copyright (c) 2007-2010 M. Alsup
1081 | * Version: 2.73
1082 | * Dual licensed under the MIT and GPL licenses:
1083 | * http://www.opensource.org/licenses/mit-license.php
1084 | * http://www.gnu.org/licenses/gpl.html
1085 | */
1086 | (function($) {
1087 | "use strict";
1088 |
1089 | //
1090 | // These functions define slide initialization and properties for the named
1091 | // transitions. To save file size feel free to remove any of these that you
1092 | // don't need.
1093 | //
1094 |
1095 | // shuffle
1096 | $.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
1097 | var i, w = $cont.css('overflow', 'visible').width();
1098 | $slides.css({left: 0, top: 0});
1099 | opts.before.push(function(curr,next,opts) {
1100 | $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1101 | });
1102 | // only adjust speed once!
1103 | if (!opts.speedAdjusted) {
1104 | opts.speed = opts.speed / 2; // shuffle has 2 transitions
1105 | opts.speedAdjusted = true;
1106 | }
1107 | opts.random = 0;
1108 | opts.shuffle = opts.shuffle || {left:-w, top:15};
1109 | opts.els = [];
1110 | for (i=0; i < $slides.length; i++)
1111 | opts.els.push($slides[i]);
1112 |
1113 | for (i=0; i < opts.currSlide; i++)
1114 | opts.els.push(opts.els.shift());
1115 |
1116 | // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
1117 | opts.fxFn = function(curr, next, opts, cb, fwd) {
1118 | if (opts.rev)
1119 | fwd = !fwd;
1120 | var $el = fwd ? $(curr) : $(next);
1121 | $(next).css(opts.cssBefore);
1122 | var count = opts.slideCount;
1123 | $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
1124 | var hops = $.fn.cycle.hopsFromLast(opts, fwd);
1125 | for (var k=0; k < hops; k++) {
1126 | if (fwd)
1127 | opts.els.push(opts.els.shift());
1128 | else
1129 | opts.els.unshift(opts.els.pop());
1130 | }
1131 | if (fwd) {
1132 | for (var i=0, len=opts.els.length; i < len; i++)
1133 | $(opts.els[i]).css('z-index', len-i+count);
1134 | }
1135 | else {
1136 | var z = $(curr).css('z-index');
1137 | $el.css('z-index', parseInt(z,10)+1+count);
1138 | }
1139 | $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
1140 | $(fwd ? this : curr).hide();
1141 | if (cb) cb();
1142 | });
1143 | });
1144 | };
1145 | $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
1146 | };
1147 |
1148 | })(jQuery);
--------------------------------------------------------------------------------
/js/vendor/jquery-1.7.2.min.js:
--------------------------------------------------------------------------------
1 | /*! jQuery v1.7.2 jquery.com | jquery.org/license */
2 | (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;ca ",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q=""+"",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
3 | a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c ",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=" ",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="
";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/ ]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
4 | .clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>$2>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/