From 9341828d6a364e76e31c907843b6e243ecd30411 Mon Sep 17 00:00:00 2001 From: Andrew Abogado Date: Mon, 19 Jan 2015 16:40:20 +0800 Subject: [PATCH] Add Pet Clinic static boilerplate using grunt --- assets/pet-clinic-boilerplate/.gitignore | 17 + assets/pet-clinic-boilerplate/.travis.yml | 5 + assets/pet-clinic-boilerplate/Gruntfile.js | 66 + assets/pet-clinic-boilerplate/LICENSE | 339 + assets/pet-clinic-boilerplate/README.md | 7 + .../css/build/global.css | 3 + .../css/build/global.css.map | 7 + .../css/build/minified/global.css | 0 .../css/build/prefixed/global.css | 1 + assets/pet-clinic-boilerplate/css/global.scss | 0 .../images/home-carousel/owl1.jpg | Bin 0 -> 26904 bytes .../images/home-carousel/owl2.jpg | Bin 0 -> 57969 bytes .../images/home-carousel/owl3.jpg | Bin 0 -> 36507 bytes .../images/home-carousel/owl4.jpg | Bin 0 -> 26911 bytes .../images/home-carousel/owl5.jpg | Bin 0 -> 33537 bytes .../images/home-carousel/owl6.jpg | Bin 0 -> 19293 bytes .../images/home-carousel/owl7.jpg | Bin 0 -> 27498 bytes .../images/home-carousel/owl8.jpg | Bin 0 -> 20313 bytes .../images/libs/AjaxLoader.gif | Bin 0 -> 1517 bytes .../images/libs/grabbing.png | Bin 0 -> 116 bytes assets/pet-clinic-boilerplate/index.html | 0 .../js/build/production.js | 9790 +++++++++++++++++ .../js/build/production.min.js | 3 + assets/pet-clinic-boilerplate/js/global.js | 0 .../pet-clinic-boilerplate/js/libs/jquery.js | 9789 ++++++++++++++++ assets/pet-clinic-boilerplate/package.json | 21 + assets/pet-clinic-boilerplate/tasks/custom.js | 5 + assets/pet-clinic-boilerplate/tasks/dev.js | 3 + .../tasks/options/autoprefixer.js | 11 + .../tasks/options/concat.js | 9 + .../tasks/options/connect.js | 8 + .../tasks/options/cssmin.js | 7 + .../tasks/options/imagemin.js | 10 + .../tasks/options/jshint.js | 3 + .../tasks/options/sass.js | 11 + .../tasks/options/uglify.js | 6 + .../tasks/options/watch.js | 33 + 37 files changed, 20154 insertions(+) create mode 100644 assets/pet-clinic-boilerplate/.gitignore create mode 100644 assets/pet-clinic-boilerplate/.travis.yml create mode 100644 assets/pet-clinic-boilerplate/Gruntfile.js create mode 100644 assets/pet-clinic-boilerplate/LICENSE create mode 100644 assets/pet-clinic-boilerplate/README.md create mode 100644 assets/pet-clinic-boilerplate/css/build/global.css create mode 100644 assets/pet-clinic-boilerplate/css/build/global.css.map create mode 100644 assets/pet-clinic-boilerplate/css/build/minified/global.css create mode 100644 assets/pet-clinic-boilerplate/css/build/prefixed/global.css create mode 100644 assets/pet-clinic-boilerplate/css/global.scss create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl1.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl2.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl3.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl4.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl5.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl6.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl7.jpg create mode 100644 assets/pet-clinic-boilerplate/images/home-carousel/owl8.jpg create mode 100644 assets/pet-clinic-boilerplate/images/libs/AjaxLoader.gif create mode 100644 assets/pet-clinic-boilerplate/images/libs/grabbing.png create mode 100644 assets/pet-clinic-boilerplate/index.html create mode 100644 assets/pet-clinic-boilerplate/js/build/production.js create mode 100644 assets/pet-clinic-boilerplate/js/build/production.min.js create mode 100644 assets/pet-clinic-boilerplate/js/global.js create mode 100644 assets/pet-clinic-boilerplate/js/libs/jquery.js create mode 100644 assets/pet-clinic-boilerplate/package.json create mode 100644 assets/pet-clinic-boilerplate/tasks/custom.js create mode 100644 assets/pet-clinic-boilerplate/tasks/dev.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/autoprefixer.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/concat.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/connect.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/cssmin.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/imagemin.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/jshint.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/sass.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/uglify.js create mode 100644 assets/pet-clinic-boilerplate/tasks/options/watch.js diff --git a/assets/pet-clinic-boilerplate/.gitignore b/assets/pet-clinic-boilerplate/.gitignore new file mode 100644 index 000000000..6e51c1f14 --- /dev/null +++ b/assets/pet-clinic-boilerplate/.gitignore @@ -0,0 +1,17 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log +node_modules + +.sass-cache \ No newline at end of file diff --git a/assets/pet-clinic-boilerplate/.travis.yml b/assets/pet-clinic-boilerplate/.travis.yml new file mode 100644 index 000000000..666f7aa8b --- /dev/null +++ b/assets/pet-clinic-boilerplate/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.8" +before_script: + - npm install -g grunt-cli diff --git a/assets/pet-clinic-boilerplate/Gruntfile.js b/assets/pet-clinic-boilerplate/Gruntfile.js new file mode 100644 index 000000000..440bfc91c --- /dev/null +++ b/assets/pet-clinic-boilerplate/Gruntfile.js @@ -0,0 +1,66 @@ +/* + +TO DO + +1) Reduce CSS duplication + - Ideally just a single build - global.scss turns into /build/global.css + - Can Autoprefixer output minified? + - If it can, is it as good as cssmin? + - Could Sass be used again to minify instead? + - If it can, is it as good as cssmin? + +2) Better JS dependency management + - Require js? + - Can it be like the Asset Pipeline where you just do //= require "whatever.js" + +3) Is HTML minification worth it? + +4) Set up a Jasmine test just to try it. + +5) Can this Gruntfile.js be abstracted into smaller parts? + - https://github.com/cowboy/wesbos/commit/5a2980a7818957cbaeedcd7552af9ce54e05e3fb + +*/ + +module.exports = function(grunt) { + + // Utility to load the different option files + // based on their names + function loadConfig(path) { + var glob = require('glob'); + var object = {}; + var key; + + glob.sync('*', {cwd: path}).forEach(function(option) { + key = option.replace(/\.js$/,''); + object[key] = require(path + option); + }); + + return object; + } + + // Initial config + var config = { + pkg: grunt.file.readJSON('package.json') + } + + // Load tasks from the tasks folder + grunt.loadTasks('tasks'); + + // Load all the tasks options in tasks/options base on the name: + // watch.js => watch{} + grunt.util._.extend(config, loadConfig('./tasks/options/')); + + grunt.initConfig(config); + + require('load-grunt-tasks')(grunt); + + // Default Task is basically a rebuild + grunt.registerTask('default', ['concat', 'uglify', 'sass', 'imagemin', 'autoprefixer', 'cssmin']); + + // Moved to the tasks folder: + // grunt.registerTask('dev', ['connect', 'watch']); + + // Connect to a local server + grunt.loadNpmTasks('grunt-contrib-connect'); +}; diff --git a/assets/pet-clinic-boilerplate/LICENSE b/assets/pet-clinic-boilerplate/LICENSE new file mode 100644 index 000000000..d7f105139 --- /dev/null +++ b/assets/pet-clinic-boilerplate/LICENSE @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/assets/pet-clinic-boilerplate/README.md b/assets/pet-clinic-boilerplate/README.md new file mode 100644 index 000000000..a8f4dc003 --- /dev/null +++ b/assets/pet-clinic-boilerplate/README.md @@ -0,0 +1,7 @@ +Pet-Clinic-Grunt-Boilerplate +==================== + +This repo is the static file generator for [Spring Pet Clinic repo](https://github.com/singularity-sg/spring-petclinic), plus a bit more. + +Pet-Clinic-Grunt-Boilerplate is based on Cris Coyer's [My-Grunt-Boilerplate](https://github.com/chriscoyier/My-Grunt-Boilerplate) repo + diff --git a/assets/pet-clinic-boilerplate/css/build/global.css b/assets/pet-clinic-boilerplate/css/build/global.css new file mode 100644 index 000000000..1f8f8588d --- /dev/null +++ b/assets/pet-clinic-boilerplate/css/build/global.css @@ -0,0 +1,3 @@ + + +/*# sourceMappingURL=global.css.map */ diff --git a/assets/pet-clinic-boilerplate/css/build/global.css.map b/assets/pet-clinic-boilerplate/css/build/global.css.map new file mode 100644 index 000000000..c91aa4da1 --- /dev/null +++ b/assets/pet-clinic-boilerplate/css/build/global.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "", +"sources": [], +"names": [], +"file": "global.css" +} diff --git a/assets/pet-clinic-boilerplate/css/build/minified/global.css b/assets/pet-clinic-boilerplate/css/build/minified/global.css new file mode 100644 index 000000000..e69de29bb diff --git a/assets/pet-clinic-boilerplate/css/build/prefixed/global.css b/assets/pet-clinic-boilerplate/css/build/prefixed/global.css new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/assets/pet-clinic-boilerplate/css/build/prefixed/global.css @@ -0,0 +1 @@ + diff --git a/assets/pet-clinic-boilerplate/css/global.scss b/assets/pet-clinic-boilerplate/css/global.scss new file mode 100644 index 000000000..e69de29bb diff --git a/assets/pet-clinic-boilerplate/images/home-carousel/owl1.jpg b/assets/pet-clinic-boilerplate/images/home-carousel/owl1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8917052f607fd900389a5695b0e9d9dd51a0bf5 GIT binary patch literal 26904 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 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/images/home-carousel/owl2.jpg b/assets/pet-clinic-boilerplate/images/home-carousel/owl2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4008eb4f0143a13c6834e36a30b7d67d490b2eb3 GIT binary patch literal 57969 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 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/images/home-carousel/owl3.jpg b/assets/pet-clinic-boilerplate/images/home-carousel/owl3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dcd40d4b6024e2e6ba278a1c08381a720e42baf GIT binary patch literal 36507 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 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/images/home-carousel/owl4.jpg b/assets/pet-clinic-boilerplate/images/home-carousel/owl4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04de1297a78621ab28e7e14f68f0119e52458746 GIT binary patch literal 26911 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 z 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

  • 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 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/images/home-carousel/owl5.jpg b/assets/pet-clinic-boilerplate/images/home-carousel/owl5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0939f7aa94cd2deb54afb0081681713b7328e5fa GIT binary patch literal 33537 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Ǝx_n1<^wPq<00m*H=9vR@Mz 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 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/images/libs/grabbing.png b/assets/pet-clinic-boilerplate/images/libs/grabbing.png new file mode 100644 index 0000000000000000000000000000000000000000..85491df031bdb6d8751b1f42880bfe59a7b189d9 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)}AhoAr_~T6C}zW*o!<)eteCG z`NxePJiq)o4qORH;jm-=7o2pUK8V4U?ZTP=E|N|@Q3tX)?(!_qXJE)POI@jNQ?wFj O41=eupUXO@geCxI;3TR5 literal 0 HcmV?d00001 diff --git a/assets/pet-clinic-boilerplate/index.html b/assets/pet-clinic-boilerplate/index.html new file mode 100644 index 000000000..e69de29bb diff --git a/assets/pet-clinic-boilerplate/js/build/production.js b/assets/pet-clinic-boilerplate/js/build/production.js new file mode 100644 index 000000000..9c14fc2c1 --- /dev/null +++ b/assets/pet-clinic-boilerplate/js/build/production.js @@ -0,0 +1,9790 @@ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
    "; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = "
    "; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
    a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + col: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("