├── .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 | 29 | 30 | 31 | 32 | 33 | 39 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
FilesLocation
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 |
40 |
41 | Your SASS directory

42 | Your CSS directory 43 |
The contents of the js folderYour javascript directory
resourcesYour root
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 | 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 | 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 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 |
Previous Card
Next Card
Flip Card// Return / Space
Show/Hide Keyboard Shortcuts?
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 | Creative Commons License
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 |

Flash Cards by curtisblackwell

23 | 24 | 52 | 53 | 58 | 59 |
60 |

Keyboard Shortcuts

61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
Previous Card
Next Card
Flip Card// Return / Space
Show/Hide Keyboard Shortcuts?
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(;c
a",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="
t
",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>");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>");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=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); -------------------------------------------------------------------------------- /js/vendor/modernizr-2.5.3.min.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.5.3 (Custom Build) | MIT & BSD 2 | * Build: http://www.modernizr.com/download/#-csstransforms3d-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­",""].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e});var G=function(a,c){var d=a.join(""),f=c.length;w(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d?d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"":"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.csstransforms3d=(i.csstransforms3d&&i.csstransforms3d.offsetLeft)===9&&i.csstransforms3d.offsetHeight===3},f,c)}([,["@media (",m.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join("")],[,"csstransforms3d"]);q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a};for(var H in q)y(q,H)&&(v=H.toLowerCase(),e[v]=q[H](),t.push((e[v]?"":"no-")+v));return z(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | -------------------------------------------------------------------------------- /resources/fonts/flash_cards/flash_cards.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/curtisblackwell/flash_cards/bbfa9a0c1a6167b7d1ccf6d5d396906ecfa5d5d3/resources/fonts/flash_cards/flash_cards.ttf -------------------------------------------------------------------------------- /resources/fonts/flash_cards/flash_cards.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/curtisblackwell/flash_cards/bbfa9a0c1a6167b7d1ccf6d5d396906ecfa5d5d3/resources/fonts/flash_cards/flash_cards.woff --------------------------------------------------------------------------------