diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..cc48978 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "assets/vendor" +} diff --git a/.gitignore b/.gitignore index a0346a7..394ad62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,12 @@ .DS_Store /_site /node_modules +/.bundle +assets/vendor/zeroclipboard/docs +assets/vendor/zeroclipboard/src +assets/vendor/zeroclipboard/test +assets/vendor/selectivizr/tests +assets/vendor/qtip2/basic +/vendor +Gemfile.lock +/.sass-cache diff --git a/.travis.yml b/.travis.yml index 1b743c0..d15e661 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,3 +14,10 @@ branches: notifications: email: false + +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true + +sudo: false +cache: bundler diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04435d9..a4434c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,12 +24,12 @@ The easiest way to make a change is to simply edit a file from your browser. When you click the edit button, it will fork the repository under your account. Note what issue/issues your patch fixes in the commit message. -For example, to [change this file](https://github.com/github/choosealicense.com/blob/master/CONTRIBUTING.md), +For example, to [change this file](/CONTRIBUTING.md), find it in the GitHub repository. Then click the `Edit` button. Make your changes, type in a commit message, and click the `Propose File Change` button. That’s it! -For more advanced changes, check out [the bootstrap instructions](https://github.com/github/choosealicense.com#run-it-on-your-machine) in the [project's readme](https://github.com/github/choosealicense.com/blob/master/README.md). +For more advanced changes, check out [the bootstrap instructions](https://github.com/github/choosealicense.com#run-it-on-your-machine) in the [project's readme](/README.md). ## Testing diff --git a/Gemfile b/Gemfile index b89849d..d94f79e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,9 +2,9 @@ source "https://rubygems.org" ruby File.read(".ruby-version").strip gem "github-pages" -gem "ffi", "1.9.0" group :test do gem "html-proofer" gem "rake" + gem "rspec" end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index d0e4c0c..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,82 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.2.9) - blankslate (2.1.2.4) - classifier (1.3.3) - fast-stemmer (>= 1.0.0) - colorator (0.1) - colored (1.2) - commander (4.1.5) - highline (~> 1.6.11) - ethon (0.6.1) - ffi (>= 1.3.0) - mime-types (~> 1.18) - fast-stemmer (1.0.2) - ffi (1.9.0) - github-pages (12) - RedCloth (= 4.2.9) - jekyll (= 1.4.2) - kramdown (= 1.2.0) - liquid (= 2.5.4) - maruku (= 0.7.0) - rdiscount (= 2.1.7) - redcarpet (= 2.3.0) - highline (1.6.20) - html-proofer (0.3.0) - colored (~> 1.2) - mercenary (~> 0.2.0) - nokogiri (~> 1.6.0) - typhoeus (~> 0.6.3) - jekyll (1.4.2) - classifier (~> 1.3) - colorator (~> 0.1) - commander (~> 4.1.3) - liquid (~> 2.5.2) - listen (~> 1.3) - maruku (~> 0.7.0) - pygments.rb (~> 0.5.0) - redcarpet (~> 2.3.0) - safe_yaml (~> 0.9.7) - toml (~> 0.1.0) - kramdown (1.2.0) - liquid (2.5.4) - listen (1.3.1) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - rb-kqueue (>= 0.2) - maruku (0.7.0) - mercenary (0.2.0) - mime-types (1.25.1) - mini_portile (0.5.2) - nokogiri (1.6.1) - mini_portile (~> 0.5.0) - parslet (1.5.0) - blankslate (~> 2.0) - posix-spawn (0.3.8) - pygments.rb (0.5.4) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.1.0) - rake (10.1.0) - rb-fsevent (0.9.3) - rb-inotify (0.9.3) - ffi (>= 0.5.0) - rb-kqueue (0.2.0) - ffi (>= 0.5.0) - rdiscount (2.1.7) - redcarpet (2.3.0) - safe_yaml (0.9.7) - toml (0.1.0) - parslet (~> 1.5.0) - typhoeus (0.6.6) - ethon (~> 0.6.1) - yajl-ruby (1.1.0) - -PLATFORMS - ruby - -DEPENDENCIES - ffi (= 1.9.0) - github-pages - html-proofer - rake diff --git a/README.md b/README.md index ee2b8ff..e78057a 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,24 @@ -# Choose a License Web Site [![Build Status](https://travis-ci.org/github/choosealicense.com.png?branch=gh-pages)](https://travis-ci.org/github/choosealicense.com) +# Choosealicense.com + +[![Build Status](https://travis-ci.org/github/choosealicense.com.png?branch=gh-pages)](https://travis-ci.org/github/choosealicense.com) Like a Choose Your Own Adventure site, but only much less interesting. -# Intro +## Intro -A lot of repositories on GitHub.com don't have a license. GitHub provides -a license chooser, but if you don't know anything about licenses, how are you -supposed to make an informed decision? +A lot of repositories on GitHub.com don't have a license. GitHub provides a license chooser, but if you don't know anything about licenses, how are you supposed to make an informed decision? -ChooseALicense.com is designed to help people make an informed decision about -licenses. +[ChooseALicense.com](http://www.choosealicense.com "Choose A Licence website") is designed to help people make an informed decision about licenses. -# Immediate Goals +## Immediate Goals -* Politics Free - Let's just not get into it. +* Non-partisan. Our goal is to help you find a license that meets *your* goals. * Well designed, but that goes without saying. * The homepage should have just enough to help 99% of folks make a decision. -* For the 1%, the site will contain a list of licenses common to specific -communities and situations. -* Not comprehensive. Seems like an odd goal, but there are a bajillion -licenses out there. We're going to have to filter that down to a -small list of those that matter. +* For the 1%, the site will contain a list of licenses common to specific communities and situations. +* Not comprehensive. Seems like an odd goal, but there are a bajillion licenses out there. We're going to have to filter that down to a small list of those that matter. -# Run It On Your Machine +## Run It On Your Machine ```bash git clone https://github.com/github/choosealicense.com.git @@ -32,49 +28,80 @@ script/server ``` Open `http://localhost:4000` in your favorite browser. -# Adding a license +## Adding a license -The text of the license should be wrapped to a 78 character width. +Licenses sit in the `/_licenses` folder. The text of the license should be wrapped to a 78 character width. Each license has YAML front matter describing the license's properties. The body of the file should be the text of the license in plain text. The available metadata fields are: -Licenses sit in the `/licenses` folder. Each license has YAML front matter -describing the license's properties. The body of the file should be the text -of the license in plain text. The available metadata fields are: +### YAML front matter -* `title` - The name of the license -* `layout` - This should be `license` -* `permalink` - The absolute URL to the license, beginning with `/licenses/` -* `source` - URL to the license source text -* `note` - The note field in the sidebar (optional) -* `how` - How to use the license, also in the sidebar -* `required`, `permitted`, `forbidden` - bulleted list of rules applicable to the license (see below) -* `filename` - The filename to be created on GitHub.com when a repository is initialized with this license. +#### Required fields -The licenses on choosealicense.com are regularly imported to GitHub.com to be -used as the list of licenses available when creating a repository. When we -create a repository, we will replace certain strings in the license with -variables from the repository. These can be used to create accurate copyright -notices. The available variables are: +* `title` - The SPDX-compliant, human-readable license name +* `source` - The URL to the license source text +* `description` - A human-readable description of the license +* `how` - Instructions on how to implement the license +* `required` - Bulleted list of required rules +* `permitted` - Bulleted list of permitted rules +* `forbidden` - Bulleted list of forbidden rules -* `[fullname]` - The full name or username of the repository owner -* `[login]` - The repository owner's username -* `[email]` - The repository owner's primary email address -* `[project]` - The repository name -* `[description]` - The description of the repository -* `[year]` - The current year +#### Optional fields -# Rules +* `note` - Additional information about the licenses +* `using` - A list of notable projects using the license in the form of `project_name: "url"` +* `hidden` - Whether the license is hidden from the license list (defaults to false) +* `redirect_from` - Relative path(s) to redirect to the license from +* `featured` - Whether the license should be featured on the main page (defaults to false) +* `nickname` - A shorter, human-readable license name where the SPDX license name is long +* `variant` - Whether the license is a variant of a family of licenses (e.g., GPL) +* `category` - If part of a license family, the name of the license family (e.g., `GPL`) +* `tab-slug` - If part of a license family, a license slug containing only `a-z`, `0-9`, and `_` characters -Rules (the license's properties) are stored as a bulleted list within the -licenses YAML front matter. A full list of rules can be found in the -repository's `_config.yml` file. Each rule has a name e.g., -`include-copyright`, a human-readable label, e.g., `Copyright inclusion`, -and a description `Include the original copyright with the code`. -To add a new rule, simply add it to `config.yml` and reference it in the -appropriate license. +### Auto-populated fields -# License +The licenses on choosealicense.com are regularly imported to GitHub.com to be used as the list of licenses available when creating a repository. When we create a repository, we will replace certain strings in the license with variables from the repository. These can be used to create accurate copyright notices. The available variables are: -The content of this project itself is licensed under the -[Creative Commons Attribution 3.0 license](http://creativecommons.org/licenses/by/3.0/us/deed.en_US), -and the underlying source code used to format and display that content -is licensed under the [MIT license](http://opensource.org/licenses/mit-license.php). +#### Fields + +* `fullname` - The full name or username of the repository owner +* `login` - The repository owner's username +* `email` - The repository owner's primary email address +* `project` - The repository name +* `description` - The description of the repository +* `year` - The current year + +## License properties + +The license properties (rules) are stored as a bulleted list within the licenses YAML front matter. Each rule has a name e.g., `include-copyright`, a human-readable label, e.g., `Copyright inclusion`, and a description `Include the original copyright with the code`. To add a new rule, simply add it to `_data/rules.yml` and reference it in the appropriate license. + +### Rules + +#### Required + +* `include-copyright` - Include a copy of the license and copyright notice with the code. +* `document-changes` - Indicate significant changes made to the code. +* `disclose-source` - Source code must be made available when distributing the software. In the case of LGPL and OSL 3.0, the source for the library (and not the entire program) must be made available. +* `network-use-disclose` - Users who interact with the software via network are given the right to receive a copy of the corresponding source code. +* `library-usage` - The library may be used within a non-open-source application. +* `rename` - You must change the name of the software if you modify it. + +#### Permitted + +* `commercial-use` - This software and derivatives may be used for commercial purposes. +* `modifications` - This software may be modified. +* `distribution` - You may distribute this software. +* `sublicense` - You may grant a sublicense to modify and distribute this software to third parties not included in the license. +* `private-use` - You may use and modify the software without distributing it. +* `patent-grant` - This license provides an express grant of patent rights from the contributor to the recipient. + +#### Forbidden + +* `trademark-use` - While this may be implicitly true of all licenses, this license explicitly states that you may NOT use the names, logos, or trademarks of contributors. +* `no-liability` - Software is provided without warranty and the software author/license owner cannot be held liable for damages. +* `no-sublicense` - You may not grant a sublicense to modify and distribute this software to third parties not included in the license. +* `modifications` - This software may not be modified. +* `distribution` - You may not distribute this software. +* `sublicense` - You may not grant a sublicense to modify and distribute this software to third parties not included in the license. + +## License + +The content of this project itself is licensed under the [Creative Commons Attribution 3.0 license](http://creativecommons.org/licenses/by/3.0/us/deed.en_US), and the underlying source code used to format and display that content is licensed under the [MIT license](http://opensource.org/licenses/mit-license.php). diff --git a/Rakefile b/Rakefile index ed29cdb..fea4552 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,14 @@ require "html/proofer" +require 'rspec/core/rake_task' + +desc "Run specs" +RSpec::Core::RakeTask.new do |t| + t.pattern = 'spec/**/*_spec.rb' + t.rspec_opts = ["--order", "rand", "--color"] +end task :test do sh "bundle exec jekyll build --trace" - # ignore href="#" for the "Copy to clipboard" button - HTML::Proofer.new("./_site").run + HTML::Proofer.new("./_site", :check_html => true).run + Rake::Task["spec"].invoke end diff --git a/_config.yml b/_config.yml index fa6bc0a..167a0e1 100644 --- a/_config.yml +++ b/_config.yml @@ -2,75 +2,44 @@ title: ChooseALicense.com relative_permalinks: false markdown: kramdown +url: "http://choosealicense.com" -rules: +collections: + licenses: + output: true + permalink: /licenses/:path/ - required: - - description: Include a copy of the license and copyright notice with the code. - label: License and copyright notice - tag: include-copyright - - description: Indicate significant changes made to the code. - label: State Changes - tag: document-changes - - description: Source code must be made available when distributing the software. In the case of LGPL, the source for the library (and not the entire program) must be made available. - label: Disclose Source - tag: disclose-source - - description: The library may be used within a non-open-source application. - label: Library usage - tag: library-usage - - description: You must change the name of the software if you modify it. - label: Rename - tag: rename - - permitted: - - description: This software and derivatives may be used for commercial purposes. - label: Commercial Use - tag: commercial-use - - description: This software may be modified. - label: Modification - tag: modifications - - description: You may distribute this software. - label: Distribution - tag: distribution - - description: You may grant a sublicense to modify and distribute this software to third parties not included in the license. - label: Sublicensing - tag: sublicense - - description: You may use and modify the software without distributing it. - label: Private Use - tag: private-use - - description: This license provides an express grant of patent rights from the contributor to the recipient. - label: Patent Grant - tag: patent-grant - - forbidden: - - description: While this may be implicitly true of all licenses, this license explicitly states that you may NOT use the names, logos, or trademarks of contributors. - label: Use Trademark - tag: trademark-use - - description: Software is provided without warranty and the software author/license owner cannot be held liable for damages. - label: Hold Liable - tag: no-liability - - description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license. - label: Sublicensing - tag: no-sublicense - - description: This software may not be modified. - label: Modification - tag: modifications - - description: You may not distribute this software. - label: Distribution - tag: distribution - - description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license. - label: Sublicensing - tag: sublicense +defaults: + - + scope: + path: "" + type: "licenses" + values: + layout: license + featured: false + hidden: false + variant: false exclude: -- app.coffee -- CNAME -- CONTRIBUTING.md -- Gemfile -- Gemfile.lock -- LICENSE.md -- licenses.json -- Rakefile -- README.md -- script -- vendor + - app.coffee + - CNAME + - CONTRIBUTING.md + - Gemfile + - Gemfile.lock + - LICENSE.md + - Rakefile + - README.md + - script + - vendor/bundle + - test + - tests + - assets/vendor/selectivizr/tests + - assets/vendor/zeroclipboard/test + +gems: + - jekyll-sitemap + - jekyll-redirect-from + +sass: + sass_dir: _sass + style: :compressed diff --git a/_data/fields.yml b/_data/fields.yml new file mode 100644 index 0000000..0b5f45d --- /dev/null +++ b/_data/fields.yml @@ -0,0 +1,23 @@ +# The licenses on choosealicense.com are regularly imported to GitHub.com to +# be used as the list of licenses available when creating a repository. When +# we create a repository, we will replace certain strings in the license with +# variables from the repository. These can be used to create accurate copyright +# notices. The available variables are: + +- name: fullname + description: The full name or username of the repository owner + +- name: login + description: The repository owner's username + +- name: email + description: The repository owner's primary email address + +- name: project + description: The repository name + +- name: description + description: The description of the repository + +- name: year + description: The current year diff --git a/_data/meta.yml b/_data/meta.yml new file mode 100644 index 0000000..99b1d01 --- /dev/null +++ b/_data/meta.yml @@ -0,0 +1,68 @@ +# Each license has YAML front matter describing the license's properties. +# The available fields are: + +- name: title + description: The SPDX-compliant, human-readable license name + required: true + +- name: source + description: The URL to the license source text + required: true + +- name: description + description: A human-readable description of the license + required: true + +- name: how + description: Instructions on how to implement the license + required: true + +- name: required + description: Bulleted list of required rules + required: true + +- name: permitted + description: Bulleted list of permitted rules + required: true + +- name: forbidden + description: Bulleted list of forbidden rules + required: true + +# Optional fields + +- name: note + description: Additional information about the licenses + required: false + +- name: using + description: 'A list of notable projects using the license in the form of `project_name: "url"`' + required: false + +- name: hidden + description: Whether the license is hidden from the license list (defaults to false) + required: false + +- name: redirect_from + description: Relative path(s) to redirect to the license from + required: false + +- name: featured + description: Whether the license should be featured on the main page (defaults to false) + required: false + +- name: nickname + description: A shorter, human-readable license name where the SPDX license name is long + required: false + +- name: variant + description: Whether the license is a variant of a family of licenses (e.g., GPL) + required: false + +- name: category + description: If part of a license family, the name of the license family (e.g., `GPL`) + required: false + +- name: tab-slug + description: If part of a license family, a license slug containing only `a-z`, `0-9`, and `_` characters + required: false diff --git a/_data/rules.yml b/_data/rules.yml new file mode 100644 index 0000000..0570871 --- /dev/null +++ b/_data/rules.yml @@ -0,0 +1,59 @@ +required: +- description: Include a copy of the license and copyright notice with the code. + label: License and copyright notice + tag: include-copyright +- description: Indicate significant changes made to the code. + label: State Changes + tag: document-changes +- description: Source code must be made available when distributing the software. In the case of LGPL and OSL 3.0, the source for the library (and not the entire program) must be made available. + label: Disclose Source + tag: disclose-source +- description: Users who interact with the software via network are given the right to receive a copy of the corresponding source code. + label: Network Use is Distribution + tag: network-use-disclose +- description: The library may be used within a non-open-source application. + label: Library usage + tag: library-usage +- description: You must change the name of the software if you modify it. + label: Rename + tag: rename + +permitted: +- description: This software and derivatives may be used for commercial purposes. + label: Commercial Use + tag: commercial-use +- description: This software may be modified. + label: Modification + tag: modifications +- description: You may distribute this software. + label: Distribution + tag: distribution +- description: You may grant a sublicense to modify and distribute this software to third parties not included in the license. + label: Sublicensing + tag: sublicense +- description: You may use and modify the software without distributing it. + label: Private Use + tag: private-use +- description: This license provides an express grant of patent rights from the contributor to the recipient. + label: Patent Grant + tag: patent-grant + +forbidden: +- description: While this may be implicitly true of all licenses, this license explicitly states that you may NOT use the names, logos, or trademarks of contributors. + label: Use Trademark + tag: trademark-use +- description: Software is provided without warranty and the software author/license owner cannot be held liable for damages. + label: Hold Liable + tag: no-liability +- description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license. + label: Sublicensing + tag: no-sublicense +- description: This software may not be modified. + label: Modification + tag: modifications +- description: You may not distribute this software. + label: Distribution + tag: distribution +- description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license. + label: Sublicensing + tag: sublicense diff --git a/_includes/css/normalize.min.css b/_includes/css/normalize.min.css deleted file mode 100644 index 680db58..0000000 --- a/_includes/css/normalize.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html index 0cbe58b..d36ac59 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -15,19 +15,25 @@ - {% if page.layout == "license" or page.class == "license-types" %} - + {% if page.collection == "licenses" or page.class == "license-types" %} + + + + + {% endif %} - \ No newline at end of file + diff --git a/_includes/header.html b/_includes/header.html index c12a75d..118b2c9 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -3,13 +3,14 @@ - {% if page.title %}{{ page.title }} - {% endif %}{{ site.title}} - {% if page.description %}{% endif %} + {% if page.title %}{{ page.title | markdownify | strip_html | strip_newlines }} - {% endif %}{{ site.title}} + {% if page.description %}{% endif %} - + @@ -19,5 +20,5 @@ {% include breadcrumbs.html %} {% if page.title %} -

{{ page.title }}

+

{{ page.title | markdownify | strip_html | strip_newlines }}

{% endif %} diff --git a/_includes/js/ZeroClipboard.min.js b/_includes/js/ZeroClipboard.min.js deleted file mode 100644 index bfea725..0000000 --- a/_includes/js/ZeroClipboard.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* ZeroClipboard -* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface. -* Copyright (c) 2013 Jon Rohan, James M. Greene -* Licensed MIT -* http://zeroclipboard.org/ -* v1.2.3 -*/ -!function(){"use strict";var a,b=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),c=function(a,c){var d,e,f,g,h,i;if(window.getComputedStyle?d=window.getComputedStyle(a,null).getPropertyValue(c):(e=b(c),d=a.currentStyle?a.currentStyle[e]:a.style[e]),"cursor"===c&&(!d||"auto"===d))for(f=a.tagName.toLowerCase(),g=["a"],h=0,i=g.length;i>h;h++)if(f===g[h])return"pointer";return d},d=function(a){if(p.prototype._singleton){a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),p.prototype._singleton.setCurrent(b)}},e=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},f=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},g=function(a,b){if(a.addClass)return a.addClass(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},h=function(a,b){if(a.removeClass)return a.removeClass(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},i=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(100*(b/c))/100),d},j=function(a){var b={left:0,top:0,width:0,height:0,zIndex:999999999},d=c(a,"z-index");if(d&&"auto"!==d&&(b.zIndex=parseInt(d,10)),a.getBoundingClientRect){var e,f,g,h=a.getBoundingClientRect();"pageXOffset"in window&&"pageYOffset"in window?(e=window.pageXOffset,f=window.pageYOffset):(g=i(),e=Math.round(document.documentElement.scrollLeft/g),f=Math.round(document.documentElement.scrollTop/g));var j=document.documentElement.clientLeft||0,k=document.documentElement.clientTop||0;b.left=h.left+e-j,b.top=h.top+f-k,b.width="width"in h?h.width:h.right-h.left,b.height="height"in h?h.height:h.bottom-h.top}return b},k=function(a,b){var c=!(b&&b.useNoCache===!1);return c?(-1===a.indexOf("?")?"?":"&")+"nocache="+(new Date).getTime():""},l=function(a){var b=[],c=[];return a.trustedOrigins&&("string"==typeof a.trustedOrigins?c.push(a.trustedOrigins):"object"==typeof a.trustedOrigins&&"length"in a.trustedOrigins&&(c=c.concat(a.trustedOrigins))),a.trustedDomains&&("string"==typeof a.trustedDomains?c.push(a.trustedDomains):"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(c=c.concat(a.trustedDomains))),c.length&&b.push("trustedOrigins="+encodeURIComponent(c.join(","))),"string"==typeof a.amdModuleId&&a.amdModuleId&&b.push("amdModuleId="+encodeURIComponent(a.amdModuleId)),"string"==typeof a.cjsModuleId&&a.cjsModuleId&&b.push("cjsModuleId="+encodeURIComponent(a.cjsModuleId)),b.join("&")},m=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;d>c;c++)if(b[c]===a)return c;return-1},n=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},o=function(a,b,c,d,e){e?window.setTimeout(function(){a.call(b,c,d)},0):a.call(b,c,d)},p=function(a,b){if(a&&(p.prototype._singleton||this).glue(a),p.prototype._singleton)return p.prototype._singleton;p.prototype._singleton=this,this.options={};for(var c in s)this.options[c]=s[c];for(var d in b)this.options[d]=b[d];this.handlers={},p.detectFlashSupport()&&v()},q=[];p.prototype.setCurrent=function(b){a=b,this.reposition();var d=b.getAttribute("title");d&&this.setTitle(d);var e=this.options.forceHandCursor===!0||"pointer"===c(b,"cursor");return r.call(this,e),this},p.prototype.setText=function(a){return a&&""!==a&&(this.options.text=a,this.ready()&&this.flashBridge.setText(a)),this},p.prototype.setTitle=function(a){return a&&""!==a&&this.htmlBridge.setAttribute("title",a),this},p.prototype.setSize=function(a,b){return this.ready()&&this.flashBridge.setSize(a,b),this},p.prototype.setHandCursor=function(a){return a="boolean"==typeof a?a:!!a,r.call(this,a),this.options.forceHandCursor=a,this};var r=function(a){this.ready()&&this.flashBridge.setHandCursor(a)};p.version="1.2.3";var s={moviePath:"ZeroClipboard.swf",trustedOrigins:null,text:null,hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",allowScriptAccess:"sameDomain",useNoCache:!0,forceHandCursor:!1};p.setDefaults=function(a){for(var b in a)s[b]=a[b]},p.destroy=function(){p.prototype._singleton.unglue(q);var a=p.prototype._singleton.htmlBridge;a.parentNode.removeChild(a),delete p.prototype._singleton},p.detectFlashSupport=function(){var a=!1;if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}return!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0),a};var t=null,u=null,v=function(){var a,b,c=p.prototype._singleton,d=document.getElementById("global-zeroclipboard-html-bridge");if(!d){var e={};for(var f in c.options)e[f]=c.options[f];e.amdModuleId=t,e.cjsModuleId=u;var g=l(e),h=' ';d=document.createElement("div"),d.id="global-zeroclipboard-html-bridge",d.setAttribute("class","global-zeroclipboard-container"),d.setAttribute("data-clipboard-ready",!1),d.style.position="absolute",d.style.left="-9999px",d.style.top="-9999px",d.style.width="15px",d.style.height="15px",d.style.zIndex="9999",d.innerHTML=h,document.body.appendChild(d)}c.htmlBridge=d,a=document["global-zeroclipboard-flash-bridge"],a&&(b=a.length)&&(a=a[b-1]),c.flashBridge=a||d.children[0].lastElementChild};p.prototype.resetBridge=function(){return this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),h(a,this.options.activeClass),a=null,this.options.text=null,this},p.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return"true"===a||a===!0},p.prototype.reposition=function(){if(!a)return!1;var b=j(a);return this.htmlBridge.style.top=b.top+"px",this.htmlBridge.style.left=b.left+"px",this.htmlBridge.style.width=b.width+"px",this.htmlBridge.style.height=b.height+"px",this.htmlBridge.style.zIndex=b.zIndex+1,this.setSize(b.width,b.height),this},p.dispatch=function(a,b){p.prototype._singleton.receiveEvent(a,b)},p.prototype.on=function(a,b){for(var c=a.toString().split(/\s/g),d=0;d 0 %},{% endif %} - {% endfor %} - }{% if forloop.rindex0 > 0 %},{% endif %} -{% endfor %} -}; diff --git a/_includes/js/app.js b/_includes/js/app.js deleted file mode 100644 index 71e3686..0000000 --- a/_includes/js/app.js +++ /dev/null @@ -1,131 +0,0 @@ -// Generated by CoffeeScript 1.6.3 -(function() { - var Choosealicense; - - Choosealicense = (function() { - Choosealicense.prototype.flashAvailable = function() { - if (typeof ActiveXObject !== "undefined" && ActiveXObject !== null) { - return !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")); - } else { - return !!navigator.mimeTypes["application/x-shockwave-flash"]; - } - }; - - Choosealicense.prototype.selectText = function(element) { - var range, selection; - if (document.body.createTextRange) { - range = document.body.createTextRange(); - range.moveToElementText(element); - return range.select(); - } else if (window.getSelection) { - selection = window.getSelection(); - range = document.createRange(); - range.selectNodeContents(element); - selection.removeAllRanges(); - return selection.addRange(range); - } - }; - - Choosealicense.prototype.qtip_position = { - my: "top center", - at: "bottom center" - }; - - Choosealicense.prototype.categories = { - required: "Required", - permitted: "Permitted", - forbidden: "Forbidden" - }; - - function Choosealicense() { - this.initTooltips(); - this.initClipboard(); - this.initLicenseVariationNav(); - } - - Choosealicense.prototype.initTooltips = function() { - var category, label, rules, text, _ref; - for (category in annotations) { - rules = annotations[category]; - for (label in rules) { - text = rules[label]; - $(".license-rules ul.license-" + category + " li." + label).attr("title", text); - } - } - _ref = this.categories; - for (category in _ref) { - label = _ref[category]; - $(".license-" + category + " li").qtip({ - content: { - text: false, - title: { - text: label - } - }, - position: this.qtip_position, - style: { - classes: "qtip-shadow qtip-" + category - } - }); - } - return false; - }; - - Choosealicense.prototype.initZeroClipboard = function() { - var clip; - $(".js-clipboard-button").data("clipboard-prompt", $(".js-clipboard-button").text()); - clip = new ZeroClipboard($(".js-clipboard-button"), { - moviePath: "/js/ZeroClipboard.swf" - }); - clip.on("mouseout", this.clipboardMouseout); - clip.on("complete", this.clipboardComplete); - return clip; - }; - - Choosealicense.prototype.initAlternativeClipboard = function() { - var _this = this; - return $(".js-clipboard-button").click(function(e) { - var target; - target = "#" + $(e.target).data("clipboard-target"); - return _this.selectText($(target)[0]); - }); - }; - - Choosealicense.prototype.initClipboard = function() { - if ((typeof ZeroClipboard !== "undefined" && ZeroClipboard !== null) && this.flashAvailable()) { - return this.initZeroClipboard(); - } else { - return this.initAlternativeClipboard(); - } - }; - - Choosealicense.prototype.clipboardMouseout = function(client, args) { - return this.innerText = $(this).data("clipboard-prompt"); - }; - - Choosealicense.prototype.clipboardComplete = function(client, args) { - return this.innerText = "Copied!"; - }; - - Choosealicense.prototype.initLicenseVariationNav = function() { - return $(".js-nav-pills a").click(function(e) { - var nav, selectedTab; - selectedTab = $(this).data("selected-tab"); - nav = $(this).closest(".js-nav-pills"); - nav.find("li").removeClass("active"); - nav.closest(".js-license-variations").siblings(".js-variation-tab").removeClass("active"); - $(this).parent("li").addClass("active"); - $("." + selectedTab).addClass("active"); - return e.preventDefault(); - }); - }; - - return Choosealicense; - - })(); - - $(function() { - return new Choosealicense(); - }); - -}).call(this); diff --git a/_includes/js/jquery-1.10.2.min.js b/_includes/js/jquery-1.10.2.min.js deleted file mode 100644 index da41706..0000000 --- a/_includes/js/jquery-1.10.2.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-1.10.2.min.map -*/ -(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.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%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t -}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); -u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("'; + +function Ie6(api, qtip) { + this._ns = 'ie6'; + this.init( (this.qtip = api) ); +} + +$.extend(Ie6.prototype, { + _scroll : function() { + var overlay = this.qtip.elements.overlay; + overlay && (overlay[0].style.top = $(window).scrollTop() + 'px'); + }, + + init: function(qtip) { + var tooltip = qtip.tooltip, + scroll; + + // Create the BGIFrame element if needed + if($('select, object').length < 1) { + this.bgiframe = qtip.elements.bgiframe = $(BGIFRAME).appendTo(tooltip); + + // Update BGIFrame on tooltip move + qtip._bind(tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this); + } + + // redraw() container for width/height calculations + this.redrawContainer = $('
', { id: NAMESPACE+'-rcontainer' }) + .appendTo(document.body); + + // Fixup modal plugin if present too + if( qtip.elements.overlay && qtip.elements.overlay.addClass('qtipmodal-ie6fix') ) { + qtip._bind(window, ['scroll', 'resize'], this._scroll, this._ns, this); + qtip._bind(tooltip, ['tooltipshow'], this._scroll, this._ns, this); + } + + // Set dimensions + this.redraw(); + }, + + adjustBGIFrame: function() { + var tooltip = this.qtip.tooltip, + dimensions = { + height: tooltip.outerHeight(FALSE), + width: tooltip.outerWidth(FALSE) + }, + plugin = this.qtip.plugins.tip, + tip = this.qtip.elements.tip, + tipAdjust, offset; + + // Adjust border offset + offset = parseInt(tooltip.css('borderLeftWidth'), 10) || 0; + offset = { left: -offset, top: -offset }; + + // Adjust for tips plugin + if(plugin && tip) { + tipAdjust = (plugin.corner.precedance === 'x') ? [WIDTH, LEFT] : [HEIGHT, TOP]; + offset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ](); + } + + // Update bgiframe + this.bgiframe.css(offset).css(dimensions); + }, + + // Max/min width simulator function + redraw: function() { + if(this.qtip.rendered < 1 || this.drawing) { return this; } + + var tooltip = this.qtip.tooltip, + style = this.qtip.options.style, + container = this.qtip.options.position.container, + perc, width, max, min; + + // Set drawing flag + this.qtip.drawing = 1; + + // If tooltip has a set height/width, just set it... like a boss! + if(style.height) { tooltip.css(HEIGHT, style.height); } + if(style.width) { tooltip.css(WIDTH, style.width); } + + // Simulate max/min width if not set width present... + else { + // Reset width and add fluid class + tooltip.css(WIDTH, '').appendTo(this.redrawContainer); + + // Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!) + width = tooltip.width(); + if(width % 2 < 1) { width += 1; } + + // Grab our max/min properties + max = tooltip.css('maxWidth') || ''; + min = tooltip.css('minWidth') || ''; + + // Parse into proper pixel values + perc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0; + max = ((max.indexOf('%') > -1 ? perc : 1) * parseInt(max, 10)) || width; + min = ((min.indexOf('%') > -1 ? perc : 1) * parseInt(min, 10)) || 0; + + // Determine new dimension size based on max/min/current values + width = max + min ? Math.min(Math.max(width, min), max) : width; + + // Set the newly calculated width and remvoe fluid class + tooltip.css(WIDTH, Math.round(width)).appendTo(container); + } + + // Set drawing flag + this.drawing = 0; + + return this; + }, + + destroy: function() { + // Remove iframe + this.bgiframe && this.bgiframe.remove(); + + // Remove bound events + this.qtip._unbind([window, this.qtip.tooltip], this._ns); + } +}); + +IE6 = PLUGINS.ie6 = function(api) { + // Proceed only if the browser is IE6 + return BROWSER.ie === 6 ? new Ie6(api) : FALSE; +}; + +IE6.initialize = 'render'; + +CHECKS.ie6 = { + '^content|style$': function() { + this.redraw(); + } +};;})); +}( window, document )); + + diff --git a/_includes/css/jquery.qtip.min.css b/assets/vendor/qtip2/jquery.qtip.min.css similarity index 99% rename from _includes/css/jquery.qtip.min.css rename to assets/vendor/qtip2/jquery.qtip.min.css index fc172a4..a5fd8d2 100644 --- a/_includes/css/jquery.qtip.min.css +++ b/assets/vendor/qtip2/jquery.qtip.min.css @@ -1,2 +1,2 @@ -/* qTip2 v2.2.0 basic css3 | qtip2.com | Licensed MIT, GPL | Thu Nov 21 2013 20:35:00 */ +/* qTip2 v2.2.0 basic css3 | qtip2.com | Licensed MIT, GPL | Mon Nov 25 2013 11:54:50 */ .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111} .qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1} .qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030} .qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0} .qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon{border-color:#D95252}.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252} .qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0} .qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important} \ No newline at end of file diff --git a/_includes/js/jquery.qtip.min.js b/assets/vendor/qtip2/jquery.qtip.min.js similarity index 87% rename from _includes/js/jquery.qtip.min.js rename to assets/vendor/qtip2/jquery.qtip.min.js index 3ae7bbe..9105b84 100644 --- a/_includes/js/jquery.qtip.min.js +++ b/assets/vendor/qtip2/jquery.qtip.min.js @@ -1,4 +1,4 @@ -/* qTip2 v2.2.0 tips modal viewport svg imagemap ie6 | qtip2.com | Licensed MIT, GPL | Thu Nov 21 2013 20:34:59 */ -(function(t,e,i){(function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):jQuery&&!jQuery.fn.qtip&&t(jQuery)})(function(s){"use strict";function o(t,e,i,o){this.id=i,this.target=t,this.tooltip=E,this.elements={target:t},this._id=X+"-"+i,this.timers={img:{}},this.options=e,this.plugins={},this.cache={event:{},target:s(),disabled:k,attr:o,onTooltip:k,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=k}function n(t){return t===E||"object"!==s.type(t)}function r(t){return!(s.isFunction(t)||t&&t.attr||t.length||"object"===s.type(t)&&(t.jquery||t.then))}function a(t){var e,i,o,a;return n(t)?k:(n(t.metadata)&&(t.metadata={type:t.metadata}),"content"in t&&(e=t.content,n(e)||e.jquery||e.done?e=t.content={text:i=r(e)?k:e}:i=e.text,"ajax"in e&&(o=e.ajax,a=o&&o.once!==k,delete e.ajax,e.text=function(t,e){var n=i||s(this).attr(e.options.content.attr)||"Loading...",r=s.ajax(s.extend({},o,{context:e})).then(o.success,E,o.error).then(function(t){return t&&a&&e.set("content.text",t),t},function(t,i,s){e.destroyed||0===t.status||e.set("content.text",i+": "+s)});return a?n:(e.set("content.text",n),r)}),"title"in e&&(n(e.title)||(e.button=e.title.button,e.title=e.title.text),r(e.title||k)&&(e.title=k))),"position"in t&&n(t.position)&&(t.position={my:t.position,at:t.position}),"show"in t&&n(t.show)&&(t.show=t.show.jquery?{target:t.show}:t.show===W?{ready:W}:{event:t.show}),"hide"in t&&n(t.hide)&&(t.hide=t.hide.jquery?{target:t.hide}:{event:t.hide}),"style"in t&&n(t.style)&&(t.style={classes:t.style}),s.each(R,function(){this.sanitize&&this.sanitize(t)}),t)}function h(t,e){for(var i,s=0,o=t,n=e.split(".");o=o[n[s++]];)n.length>s&&(i=o);return[i||t,n.pop()]}function l(t,e){var i,s,o;for(i in this.checks)for(s in this.checks[i])(o=RegExp(s,"i").exec(t))&&(e.push(o),("builtin"===i||this.plugins[i])&&this.checks[i][s].apply(this.plugins[i]||this,e))}function c(t){return G.concat("").join(t?"-"+t+" ":" ")}function d(i){return i&&{type:i.type,pageX:i.pageX,pageY:i.pageY,target:i.target,relatedTarget:i.relatedTarget,scrollX:i.scrollX||t.pageXOffset||e.body.scrollLeft||e.documentElement.scrollLeft,scrollY:i.scrollY||t.pageYOffset||e.body.scrollTop||e.documentElement.scrollTop}||{}}function p(t,e){return e>0?setTimeout(s.proxy(t,this),e):(t.call(this),i)}function u(t){return this.tooltip.hasClass(ee)?k:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=p.call(this,function(){this.toggle(W,t)},this.options.show.delay),i)}function f(t){if(this.tooltip.hasClass(ee))return k;var e=s(t.relatedTarget),i=e.closest(U)[0]===this.tooltip[0],o=e[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==e[0]&&"mouse"===this.options.position.target&&i||this.options.hide.fixed&&/mouse(out|leave|move)/.test(t.type)&&(i||o))try{t.preventDefault(),t.stopImmediatePropagation()}catch(n){}else this.timers.hide=p.call(this,function(){this.toggle(k,t)},this.options.hide.delay,this)}function g(t){return this.tooltip.hasClass(ee)||!this.options.hide.inactive?k:(clearTimeout(this.timers.inactive),this.timers.inactive=p.call(this,function(){this.hide(t)},this.options.hide.inactive),i)}function m(t){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(t)}function v(t,i,o){s(e.body).delegate(t,(i.split?i:i.join(he+" "))+he,function(){var t=T.api[s.attr(this,H)];t&&!t.disabled&&o.apply(t,arguments)})}function y(t,i,n){var r,h,l,c,d,p=s(e.body),u=t[0]===e?p:t,f=t.metadata?t.metadata(n.metadata):E,g="html5"===n.metadata.type&&f?f[n.metadata.name]:E,m=t.data(n.metadata.name||"qtipopts");try{m="string"==typeof m?s.parseJSON(m):m}catch(v){}if(c=s.extend(W,{},T.defaults,n,"object"==typeof m?a(m):E,a(g||f)),h=c.position,c.id=i,"boolean"==typeof c.content.text){if(l=t.attr(c.content.attr),c.content.attr===k||!l)return k;c.content.text=l}if(h.container.length||(h.container=p),h.target===k&&(h.target=u),c.show.target===k&&(c.show.target=u),c.show.solo===W&&(c.show.solo=h.container.closest("body")),c.hide.target===k&&(c.hide.target=u),c.position.viewport===W&&(c.position.viewport=h.container),h.container=h.container.eq(0),h.at=new z(h.at,W),h.my=new z(h.my),t.data(X))if(c.overwrite)t.qtip("destroy",!0);else if(c.overwrite===k)return k;return t.attr(Y,i),c.suppress&&(d=t.attr("title"))&&t.removeAttr("title").attr(se,d).attr("title",""),r=new o(t,c,i,!!l),t.data(X,r),t.one("remove.qtip-"+i+" removeqtip.qtip-"+i,function(){var t;(t=s(this).data(X))&&t.destroy(!0)}),r}function b(t){return t.charAt(0).toUpperCase()+t.slice(1)}function w(t,e){var s,o,n=e.charAt(0).toUpperCase()+e.slice(1),r=(e+" "+be.join(n+" ")+n).split(" "),a=0;if(ye[e])return t.css(ye[e]);for(;s=r[a++];)if((o=t.css(s))!==i)return ye[e]=s,o}function _(t,e){return Math.ceil(parseFloat(w(t,e)))}function x(t,e){this._ns="tip",this.options=e,this.offset=e.offset,this.size=[e.width,e.height],this.init(this.qtip=t)}function q(t,e){this.options=e,this._ns="-modal",this.init(this.qtip=t)}function C(t){this._ns="ie6",this.init(this.qtip=t)}var T,j,z,M,I,W=!0,k=!1,E=null,S="x",L="y",A="width",B="height",D="top",F="left",O="bottom",P="right",N="center",$="flipinvert",V="shift",R={},X="qtip",Y="data-hasqtip",H="data-qtip-id",G=["ui-widget","ui-tooltip"],U="."+X,Q="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),J=X+"-fixed",K=X+"-default",Z=X+"-focus",te=X+"-hover",ee=X+"-disabled",ie="_replacedByqTip",se="oldtitle",oe={ie:function(){for(var t=3,i=e.createElement("div");(i.innerHTML="")&&i.getElementsByTagName("i")[0];);return t>4?t:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||k};j=o.prototype,j._when=function(t){return s.when.apply(s,t)},j.render=function(t){if(this.rendered||this.destroyed)return this;var e,i=this,o=this.options,n=this.cache,r=this.elements,a=o.content.text,h=o.content.title,l=o.content.button,c=o.position,d=("."+this._id+" ",[]);return s.attr(this.target[0],"aria-describedby",this._id),this.tooltip=r.tooltip=e=s("
",{id:this._id,"class":[X,K,o.style.classes,X+"-pos-"+o.position.my.abbrev()].join(" "),width:o.style.width||"",height:o.style.height||"",tracking:"mouse"===c.target&&c.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":k,"aria-describedby":this._id+"-content","aria-hidden":W}).toggleClass(ee,this.disabled).attr(H,this.id).data(X,this).appendTo(c.container).append(r.content=s("
",{"class":X+"-content",id:this._id+"-content","aria-atomic":W})),this.rendered=-1,this.positioning=W,h&&(this._createTitle(),s.isFunction(h)||d.push(this._updateTitle(h,k))),l&&this._createButton(),s.isFunction(a)||d.push(this._updateContent(a,k)),this.rendered=W,this._setWidget(),s.each(R,function(t){var e;"render"===this.initialize&&(e=this(i))&&(i.plugins[t]=e)}),this._unassignEvents(),this._assignEvents(),this._when(d).then(function(){i._trigger("render"),i.positioning=k,i.hiddenDuringWait||!o.show.ready&&!t||i.toggle(W,n.event,k),i.hiddenDuringWait=k}),T.api[this.id]=this,this},j.destroy=function(t){function e(){if(!this.destroyed){this.destroyed=W;var t=this.target,e=t.attr(se);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),s.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),t.removeData(X).removeAttr(H).removeAttr(Y).removeAttr("aria-describedby"),this.options.suppress&&e&&t.attr("title",e).removeAttr(se),this._unbind(t),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=E,delete T.api[this.id]}}return this.destroyed?this.target:(t===W&&"hide"!==this.triggering||!this.rendered?e.call(this):(this.tooltip.one("tooltiphidden",s.proxy(e,this)),!this.triggering&&this.hide()),this.target)},M=j.checks={builtin:{"^id$":function(t,e,i,o){var n=i===W?T.nextid:i,r=X+"-"+n;n!==k&&n.length>0&&!s("#"+r).length?(this._id=r,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):t[e]=o},"^prerender":function(t,e,i){i&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(t,e,i){this._updateContent(i)},"^content.attr$":function(t,e,i,s){this.options.content.text===this.target.attr(s)&&this._updateContent(this.target.attr(i))},"^content.title$":function(t,e,s){return s?(s&&!this.elements.title&&this._createTitle(),this._updateTitle(s),i):this._removeTitle()},"^content.button$":function(t,e,i){this._updateButton(i)},"^content.title.(text|button)$":function(t,e,i){this.set("content."+e,i)},"^position.(my|at)$":function(t,e,i){"string"==typeof i&&(t[e]=new z(i,"at"===e))},"^position.container$":function(t,e,i){this.rendered&&this.tooltip.appendTo(i)},"^show.ready$":function(t,e,i){i&&(!this.rendered&&this.render(W)||this.toggle(W))},"^style.classes$":function(t,e,i,s){this.rendered&&this.tooltip.removeClass(s).addClass(i)},"^style.(width|height)":function(t,e,i){this.rendered&&this.tooltip.css(e,i)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(t,e,i){this.rendered&&this.tooltip.toggleClass(K,!!i)},"^events.(render|show|move|hide|focus|blur)$":function(t,e,i){this.rendered&&this.tooltip[(s.isFunction(i)?"":"un")+"bind"]("tooltip"+e,i)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var t=this.options.position;this.tooltip.attr("tracking","mouse"===t.target&&t.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},j.get=function(t){if(this.destroyed)return this;var e=h(this.options,t.toLowerCase()),i=e[0][e[1]];return i.precedance?i.string():i};var ne=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,re=/^prerender|show\.ready/i;j.set=function(t,e){if(this.destroyed)return this;var o,n=this.rendered,r=k,c=this.options;return this.checks,"string"==typeof t?(o=t,t={},t[o]=e):t=s.extend({},t),s.each(t,function(e,o){if(n&&re.test(e))return delete t[e],i;var a,l=h(c,e.toLowerCase());a=l[0][l[1]],l[0][l[1]]=o&&o.nodeType?s(o):o,r=ne.test(e)||r,t[e]=[l[0],l[1],o,a]}),a(c),this.positioning=W,s.each(t,s.proxy(l,this)),this.positioning=k,this.rendered&&this.tooltip[0].offsetWidth>0&&r&&this.reposition("mouse"===c.position.target?E:this.cache.event),this},j._update=function(t,e){var i=this,o=this.cache;return this.rendered&&t?(s.isFunction(t)&&(t=t.call(this.elements.target,o.event,this)||""),s.isFunction(t.then)?(o.waiting=W,t.then(function(t){return o.waiting=k,i._update(t,e)},E,function(t){return i._update(t,e)})):t===k||!t&&""!==t?k:(t.jquery&&t.length>0?e.empty().append(t.css({display:"block",visibility:"visible"})):e.html(t),this._waitForContent(e).then(function(t){t.images&&t.images.length&&i.rendered&&i.tooltip[0].offsetWidth>0&&i.reposition(o.event,!t.length)}))):k},j._waitForContent=function(t){var e=this.cache;return e.waiting=W,(s.fn.imagesLoaded?t.imagesLoaded():s.Deferred().resolve([])).done(function(){e.waiting=k}).promise()},j._updateContent=function(t,e){this._update(t,this.elements.content,e)},j._updateTitle=function(t,e){this._update(t,this.elements.title,e)===k&&this._removeTitle(k)},j._createTitle=function(){var t=this.elements,e=this._id+"-title";t.titlebar&&this._removeTitle(),t.titlebar=s("
",{"class":X+"-titlebar "+(this.options.style.widget?c("header"):"")}).append(t.title=s("
",{id:e,"class":X+"-title","aria-atomic":W})).insertBefore(t.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(t){s(this).toggleClass("ui-state-active ui-state-focus","down"===t.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(t){s(this).toggleClass("ui-state-hover","mouseover"===t.type)}),this.options.content.button&&this._createButton()},j._removeTitle=function(t){var e=this.elements;e.title&&(e.titlebar.remove(),e.titlebar=e.title=e.button=E,t!==k&&this.reposition())},j.reposition=function(i,o){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=W;var n,r,a=this.cache,h=this.tooltip,l=this.options.position,c=l.target,d=l.my,p=l.at,u=l.viewport,f=l.container,g=l.adjust,m=g.method.split(" "),v=h.outerWidth(k),y=h.outerHeight(k),b=0,w=0,_=h.css("position"),x={left:0,top:0},q=h[0].offsetWidth>0,C=i&&"scroll"===i.type,T=s(t),j=f[0].ownerDocument,z=this.mouse;if(s.isArray(c)&&2===c.length)p={x:F,y:D},x={left:c[0],top:c[1]};else if("mouse"===c)p={x:F,y:D},!z||!z.pageX||!g.mouse&&i&&i.pageX?i&&i.pageX||((!g.mouse||this.options.show.distance)&&a.origin&&a.origin.pageX?i=a.origin:(!i||i&&("resize"===i.type||"scroll"===i.type))&&(i=a.event)):i=z,"static"!==_&&(x=f.offset()),j.body.offsetWidth!==(t.innerWidth||j.documentElement.clientWidth)&&(r=s(e.body).offset()),x={left:i.pageX-x.left+(r&&r.left||0),top:i.pageY-x.top+(r&&r.top||0)},g.mouse&&C&&z&&(x.left-=(z.scrollX||0)-T.scrollLeft(),x.top-=(z.scrollY||0)-T.scrollTop());else{if("event"===c?i&&i.target&&"scroll"!==i.type&&"resize"!==i.type?a.target=s(i.target):i.target||(a.target=this.elements.target):"event"!==c&&(a.target=s(c.jquery?c:this.elements.target)),c=a.target,c=s(c).eq(0),0===c.length)return this;c[0]===e||c[0]===t?(b=oe.iOS?t.innerWidth:c.width(),w=oe.iOS?t.innerHeight:c.height(),c[0]===t&&(x={top:(u||c).scrollTop(),left:(u||c).scrollLeft()})):R.imagemap&&c.is("area")?n=R.imagemap(this,c,p,R.viewport?m:k):R.svg&&c&&c[0].ownerSVGElement?n=R.svg(this,c,p,R.viewport?m:k):(b=c.outerWidth(k),w=c.outerHeight(k),x=c.offset()),n&&(b=n.width,w=n.height,r=n.offset,x=n.position),x=this.reposition.offset(c,x,f),(oe.iOS>3.1&&4.1>oe.iOS||oe.iOS>=4.3&&4.33>oe.iOS||!oe.iOS&&"fixed"===_)&&(x.left-=T.scrollLeft(),x.top-=T.scrollTop()),(!n||n&&n.adjustable!==k)&&(x.left+=p.x===P?b:p.x===N?b/2:0,x.top+=p.y===O?w:p.y===N?w/2:0)}return x.left+=g.x+(d.x===P?-v:d.x===N?-v/2:0),x.top+=g.y+(d.y===O?-y:d.y===N?-y/2:0),R.viewport?(x.adjusted=R.viewport(this,x,l,b,w,v,y),r&&x.adjusted.left&&(x.left+=r.left),r&&x.adjusted.top&&(x.top+=r.top)):x.adjusted={left:0,top:0},this._trigger("move",[x,u.elem||u],i)?(delete x.adjusted,o===k||!q||isNaN(x.left)||isNaN(x.top)||"mouse"===c||!s.isFunction(l.effect)?h.css(x):s.isFunction(l.effect)&&(l.effect.call(h,this,s.extend({},x)),h.queue(function(t){s(this).css({opacity:"",height:""}),oe.ie&&this.style.removeAttribute("filter"),t()})),this.positioning=k,this):this},j.reposition.offset=function(t,i,o){function n(t,e){i.left+=e*t.scrollLeft(),i.top+=e*t.scrollTop()}if(!o[0])return i;var r,a,h,l,c=s(t[0].ownerDocument),d=!!oe.ie&&"CSS1Compat"!==e.compatMode,p=o[0];do"static"!==(a=s.css(p,"position"))&&("fixed"===a?(h=p.getBoundingClientRect(),n(c,-1)):(h=s(p).position(),h.left+=parseFloat(s.css(p,"borderLeftWidth"))||0,h.top+=parseFloat(s.css(p,"borderTopWidth"))||0),i.left-=h.left+(parseFloat(s.css(p,"marginLeft"))||0),i.top-=h.top+(parseFloat(s.css(p,"marginTop"))||0),r||"hidden"===(l=s.css(p,"overflow"))||"visible"===l||(r=s(p)));while(p=p.offsetParent);return r&&(r[0]!==c[0]||d)&&n(r,1),i};var ae=(z=j.reposition.Corner=function(t,e){t=(""+t).replace(/([A-Z])/," $1").replace(/middle/gi,N).toLowerCase(),this.x=(t.match(/left|right/i)||t.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(t.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!e;var i=t.charAt(0);this.precedance="t"===i||"b"===i?L:S}).prototype;ae.invert=function(t,e){this[t]=this[t]===F?P:this[t]===P?F:e||this[t]},ae.string=function(){var t=this.x,e=this.y;return t===e?t:this.precedance===L||this.forceY&&"center"!==e?e+" "+t:t+" "+e},ae.abbrev=function(){var t=this.string().split(" ");return t[0].charAt(0)+(t[1]&&t[1].charAt(0)||"")},ae.clone=function(){return new z(this.string(),this.forceY)},j.toggle=function(t,i){var o=this.cache,n=this.options,r=this.tooltip;if(i){if(/over|enter/.test(i.type)&&/out|leave/.test(o.event.type)&&n.show.target.add(i.target).length===n.show.target.length&&r.has(i.relatedTarget).length)return this;o.event=d(i)}if(this.waiting&&!t&&(this.hiddenDuringWait=W),!this.rendered)return t?this.render(1):this;if(this.destroyed||this.disabled)return this;var a,h,l,c=t?"show":"hide",p=this.options[c],u=(this.options[t?"hide":"show"],this.options.position),f=this.options.content,g=this.tooltip.css("width"),m=this.tooltip.is(":visible"),v=t||1===p.target.length,y=!i||2>p.target.length||o.target[0]===i.target;return(typeof t).search("boolean|number")&&(t=!m),a=!r.is(":animated")&&m===t&&y,h=a?E:!!this._trigger(c,[90]),this.destroyed?this:(h!==k&&t&&this.focus(i),!h||a?this:(s.attr(r[0],"aria-hidden",!t),t?(o.origin=d(this.mouse),s.isFunction(f.text)&&this._updateContent(f.text,k),s.isFunction(f.title)&&this._updateTitle(f.title,k),!I&&"mouse"===u.target&&u.adjust.mouse&&(s(e).bind("mousemove."+X,this._storeMouse),I=W),g||r.css("width",r.outerWidth(k)),this.reposition(i,arguments[2]),g||r.css("width",""),p.solo&&("string"==typeof p.solo?s(p.solo):s(U,p.solo)).not(r).not(p.target).qtip("hide",s.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete o.origin,I&&!s(U+'[tracking="true"]:visible',p.solo).not(r).length&&(s(e).unbind("mousemove."+X),I=k),this.blur(i)),l=s.proxy(function(){t?(oe.ie&&r[0].style.removeAttribute("filter"),r.css("overflow",""),"string"==typeof p.autofocus&&s(this.options.show.autofocus,r).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):r.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(t?"visible":"hidden")},this),p.effect===k||v===k?(r[c](),l()):s.isFunction(p.effect)?(r.stop(1,1),p.effect.call(r,this),r.queue("fx",function(t){l(),t()})):r.fadeTo(90,t?1:0,l),t&&p.target.trigger("qtip-"+this.id+"-inactive"),this))},j.show=function(t){return this.toggle(W,t)},j.hide=function(t){return this.toggle(k,t)},j.focus=function(t){if(!this.rendered||this.destroyed)return this;var e=s(U),i=this.tooltip,o=parseInt(i[0].style.zIndex,10),n=T.zindex+e.length;return i.hasClass(Z)||this._trigger("focus",[n],t)&&(o!==n&&(e.each(function(){this.style.zIndex>o&&(this.style.zIndex=this.style.zIndex-1)}),e.filter("."+Z).qtip("blur",t)),i.addClass(Z)[0].style.zIndex=n),this},j.blur=function(t){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(Z),this._trigger("blur",[this.tooltip.css("zIndex")],t),this)},j.disable=function(t){return this.destroyed?this:("toggle"===t?t=!(this.rendered?this.tooltip.hasClass(ee):this.disabled):"boolean"!=typeof t&&(t=W),this.rendered&&this.tooltip.toggleClass(ee,t).attr("aria-disabled",t),this.disabled=!!t,this)},j.enable=function(){return this.disable(k)},j._createButton=function(){var t=this,e=this.elements,i=e.tooltip,o=this.options.content.button,n="string"==typeof o,r=n?o:"Close tooltip";e.button&&e.button.remove(),e.button=o.jquery?o:s("",{"class":"qtip-close "+(this.options.style.widget?"":X+"-icon"),title:r,"aria-label":r}).prepend(s("",{"class":"ui-icon ui-icon-close",html:"×"})),e.button.appendTo(e.titlebar||i).attr("role","button").click(function(e){return i.hasClass(ee)||t.hide(e),k})},j._updateButton=function(t){if(!this.rendered)return k;var e=this.elements.button;t?this._createButton():e.remove()},j._setWidget=function(){var t=this.options.style.widget,e=this.elements,i=e.tooltip,s=i.hasClass(ee);i.removeClass(ee),ee=t?"ui-state-disabled":"qtip-disabled",i.toggleClass(ee,s),i.toggleClass("ui-helper-reset "+c(),t).toggleClass(K,this.options.style.def&&!t),e.content&&e.content.toggleClass(c("content"),t),e.titlebar&&e.titlebar.toggleClass(c("header"),t),e.button&&e.button.toggleClass(X+"-icon",!t)},j._storeMouse=function(t){(this.mouse=d(t)).type="mousemove"},j._bind=function(t,e,i,o,n){var r="."+this._id+(o?"-"+o:"");e.length&&s(t).bind((e.split?e:e.join(r+" "))+r,s.proxy(i,n||this))},j._unbind=function(t,e){s(t).unbind("."+this._id+(e?"-"+e:""))};var he="."+X;s(function(){v(U,["mouseenter","mouseleave"],function(t){var e="mouseenter"===t.type,i=s(t.currentTarget),o=s(t.relatedTarget||t.target),n=this.options;e?(this.focus(t),i.hasClass(J)&&!i.hasClass(ee)&&clearTimeout(this.timers.hide)):"mouse"===n.position.target&&n.hide.event&&n.show.target&&!o.closest(n.show.target[0]).length&&this.hide(t),i.toggleClass(te,e)}),v("["+H+"]",Q,g)}),j._trigger=function(t,e,i){var o=s.Event("tooltip"+t);return o.originalEvent=i&&s.extend({},i)||this.cache.event||E,this.triggering=t,this.tooltip.trigger(o,[this].concat(e||[])),this.triggering=k,!o.isDefaultPrevented()},j._bindEvents=function(t,e,o,n,r,a){if(n.add(o).length===n.length){var h=[];e=s.map(e,function(e){var o=s.inArray(e,t);return o>-1?(h.push(t.splice(o,1)[0]),i):e}),h.length&&this._bind(o,h,function(t){var e=this.rendered?this.tooltip[0].offsetWidth>0:!1;(e?a:r).call(this,t)})}this._bind(o,t,r),this._bind(n,e,a)},j._assignInitialEvents=function(t){function e(t){return this.disabled||this.destroyed?k:(this.cache.event=d(t),this.cache.target=t?s(t.target):[i],clearTimeout(this.timers.show),this.timers.show=p.call(this,function(){this.render("object"==typeof t||o.show.ready)},o.show.delay),i)}var o=this.options,n=o.show.target,r=o.hide.target,a=o.show.event?s.trim(""+o.show.event).split(" "):[],h=o.hide.event?s.trim(""+o.hide.event).split(" "):[];/mouse(over|enter)/i.test(o.show.event)&&!/mouse(out|leave)/i.test(o.hide.event)&&h.push("mouseleave"),this._bind(n,"mousemove",function(t){this._storeMouse(t),this.cache.onTarget=W}),this._bindEvents(a,h,n,r,e,function(){clearTimeout(this.timers.show)}),(o.show.ready||o.prerender)&&e.call(this,t)},j._assignEvents=function(){var i=this,o=this.options,n=o.position,r=this.tooltip,a=o.show.target,h=o.hide.target,l=n.container,c=n.viewport,d=s(e),p=(s(e.body),s(t)),v=o.show.event?s.trim(""+o.show.event).split(" "):[],y=o.hide.event?s.trim(""+o.hide.event).split(" "):[];s.each(o.events,function(t,e){i._bind(r,"toggle"===t?["tooltipshow","tooltiphide"]:["tooltip"+t],e,null,r)}),/mouse(out|leave)/i.test(o.hide.event)&&"window"===o.hide.leave&&this._bind(d,["mouseout","blur"],function(t){/select|option/.test(t.target.nodeName)||t.relatedTarget||this.hide(t)}),o.hide.fixed?h=h.add(r.addClass(J)):/mouse(over|enter)/i.test(o.show.event)&&this._bind(h,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+o.hide.event).indexOf("unfocus")>-1&&this._bind(l.closest("html"),["mousedown","touchstart"],function(t){var e=s(t.target),i=this.rendered&&!this.tooltip.hasClass(ee)&&this.tooltip[0].offsetWidth>0,o=e.parents(U).filter(this.tooltip[0]).length>0;e[0]===this.target[0]||e[0]===this.tooltip[0]||o||this.target.has(e[0]).length||!i||this.hide(t)}),"number"==typeof o.hide.inactive&&(this._bind(a,"qtip-"+this.id+"-inactive",g),this._bind(h.add(r),T.inactiveEvents,g,"-inactive")),this._bindEvents(v,y,a,h,u,f),this._bind(a.add(r),"mousemove",function(t){if("number"==typeof o.hide.distance){var e=this.cache.origin||{},i=this.options.hide.distance,s=Math.abs;(s(t.pageX-e.pageX)>=i||s(t.pageY-e.pageY)>=i)&&this.hide(t)}this._storeMouse(t)}),"mouse"===n.target&&n.adjust.mouse&&(o.hide.event&&this._bind(a,["mouseenter","mouseleave"],function(t){this.cache.onTarget="mouseenter"===t.type}),this._bind(d,"mousemove",function(t){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ee)&&this.tooltip[0].offsetWidth>0&&this.reposition(t)})),(n.adjust.resize||c.length)&&this._bind(s.event.special.resize?c:p,"resize",m),n.adjust.scroll&&this._bind(p.add(n.container),"scroll",m)},j._unassignEvents=function(){var i=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],t,e];this._unbind(s([]).pushStack(s.grep(i,function(t){return"object"==typeof t})))},T=s.fn.qtip=function(t,e,o){var n=(""+t).toLowerCase(),r=E,h=s.makeArray(arguments).slice(1),l=h[h.length-1],c=this[0]?s.data(this[0],X):E;return!arguments.length&&c||"api"===n?c:"string"==typeof t?(this.each(function(){var t=s.data(this,X);if(!t)return W;if(l&&l.timeStamp&&(t.cache.event=l),!e||"option"!==n&&"options"!==n)t[n]&&t[n].apply(t,h);else{if(o===i&&!s.isPlainObject(e))return r=t.get(e),k;t.set(e,o)}}),r!==E?r:this):"object"!=typeof t&&arguments.length?i:(c=a(s.extend(W,{},t)),this.each(function(t){var e,o;return o=s.isArray(c.id)?c.id[t]:c.id,o=!o||o===k||1>o.length||T.api[o]?T.nextid++:o,e=y(s(this),o,c),e===k?W:(T.api[o]=e,s.each(R,function(){"initialize"===this.initialize&&this(e)}),e._assignInitialEvents(l),i)}))},s.qtip=o,T.api={},s.each({attr:function(t,e){if(this.length){var i=this[0],o="title",n=s.data(i,"qtip");if(t===o&&n&&"object"==typeof n&&n.options.suppress)return 2>arguments.length?s.attr(i,se):(n&&n.options.content.attr===o&&n.cache.attr&&n.set("content.text",e),this.attr(se,e))}return s.fn["attr"+ie].apply(this,arguments)},clone:function(t){var e=(s([]),s.fn["clone"+ie].apply(this,arguments));return t||e.filter("["+se+"]").attr("title",function(){return s.attr(this,se)}).removeAttr(se),e}},function(t,e){if(!e||s.fn[t+ie])return W;var i=s.fn[t+ie]=s.fn[t];s.fn[t]=function(){return e.apply(this,arguments)||i.apply(this,arguments)}}),s.ui||(s["cleanData"+ie]=s.cleanData,s.cleanData=function(t){for(var e,i=0;(e=s(t[i])).length;i++)if(e.attr(Y))try{e.triggerHandler("removeqtip")}catch(o){}s["cleanData"+ie].apply(this,arguments)}),T.version="2.2.0",T.nextid=0,T.inactiveEvents=Q,T.zindex=15e3,T.defaults={prerender:k,id:k,overwrite:W,suppress:W,content:{text:W,attr:"title",title:k,button:k},position:{my:"top left",at:"bottom right",target:k,container:k,viewport:k,adjust:{x:0,y:0,mouse:W,scroll:W,resize:W,method:"flipinvert flipinvert"},effect:function(t,e){s(this).animate(e,{duration:200,queue:k})}},show:{target:k,event:"mouseenter",effect:W,delay:90,solo:k,ready:k,autofocus:k},hide:{target:k,event:"mouseleave",effect:W,delay:0,fixed:k,inactive:k,leave:"window",distance:k},style:{classes:"",widget:k,width:k,height:k,def:W},events:{render:E,move:E,show:E,hide:E,toggle:E,visible:E,hidden:E,focus:E,blur:E}};var le,ce="margin",de="border",pe="color",ue="background-color",fe="transparent",ge=" !important",me=!!e.createElement("canvas").getContext,ve=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,ye={},be=["Webkit","O","Moz","ms"];if(me)var we=t.devicePixelRatio||1,_e=function(){var t=e.createElement("canvas").getContext("2d");return t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||1}(),xe=we/_e;else var qe=function(t,e,i){return"'};s.extend(x.prototype,{init:function(t){var e,i;i=this.element=t.elements.tip=s("
",{"class":X+"-tip"}).prependTo(t.tooltip),me?(e=s("").appendTo(this.element)[0].getContext("2d"),e.lineJoin="miter",e.miterLimit=1e5,e.save()):(e=qe("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(e+e),t._bind(s("*",i).add(i),["click","mousedown"],function(t){t.stopPropagation()},this._ns)),t._bind(t.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(t){var e=this.qtip.elements.titlebar;return e&&(t.y===D||t.y===N&&this.element.position().top+this.size[1]/2+this.options.offsetoe.ie?0:_(this._useTitle(t)&&e.titlebar||e.content,i)||_(e.tooltip,i)||0},_invalidColour:function(t,e,i){var s=t.css(e);return!s||i&&s===t.css(i)||ve.test(s)?k:s},_parseColours:function(t){var e=this.qtip.elements,i=this.element.css("cssText",""),o=de+b(t[t.precedance])+b(pe),n=this._useTitle(t)&&e.titlebar||e.content,r=this._invalidColour,a=[];return a[0]=r(i,ue)||r(n,ue)||r(e.content,ue)||r(e.tooltip,ue)||i.css(ue),a[1]=r(i,o,pe)||r(n,o,pe)||r(e.content,o,pe)||r(e.tooltip,o,pe)||e.tooltip.css(o),s("*",i).add(i).css("cssText",ue+":"+fe+ge+";"+de+":0"+ge+";"),a},_calculateSize:function(t){var e,i,s,o=t.precedance===L,n=this.options.width,r=this.options.height,a="c"===t.abbrev(),h=(o?n:r)*(a?.5:1),l=Math.pow,c=Math.round,d=Math.sqrt(l(h,2)+l(r,2)),p=[this.border/h*d,this.border/r*d];return p[2]=Math.sqrt(l(p[0],2)-l(this.border,2)),p[3]=Math.sqrt(l(p[1],2)-l(this.border,2)),e=d+p[2]+p[3]+(a?0:p[0]),i=e/d,s=[c(i*n),c(i*r)],o?s:s.reverse()},_calculateTip:function(t,e,i){i=i||1,e=e||this.size;var s=e[0]*i,o=e[1]*i,n=Math.ceil(s/2),r=Math.ceil(o/2),a={br:[0,0,s,o,s,0],bl:[0,0,s,0,0,o],tr:[0,o,s,0,s,o],tl:[0,0,0,o,s,o],tc:[0,o,n,0,s,o],bc:[0,0,s,0,n,o],rc:[0,0,s,r,0,o],lc:[s,0,s,o,0,r]};return a.lt=a.br,a.rt=a.bl,a.lb=a.tr,a.rb=a.tl,a[t.abbrev()]},_drawCoords:function(t,e){t.beginPath(),t.moveTo(e[0],e[1]),t.lineTo(e[2],e[3]),t.lineTo(e[4],e[5]),t.closePath()},create:function(){var t=this.corner=(me||oe.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=t.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(e,i){if(!this.enabled)return this;var o,n,r,a,h,l,c,d,p=this.qtip.elements,u=this.element,f=u.children(),g=this.options,m=this.size,v=g.mimic,y=Math.round;e||(e=this.qtip.cache.corner||this.corner),v===k?v=e:(v=new z(v),v.precedance=e.precedance,"inherit"===v.x?v.x=e.x:"inherit"===v.y?v.y=e.y:v.x===v.y&&(v[e.precedance]=e[e.precedance])),n=v.precedance,e.precedance===S?this._swapDimensions():this._resetDimensions(),o=this.color=this._parseColours(e),o[1]!==fe?(d=this.border=this._parseWidth(e,e[e.precedance]),g.border&&1>d&&!ve.test(o[1])&&(o[0]=o[1]),this.border=d=g.border!==W?g.border:d):this.border=d=0,c=this.size=this._calculateSize(e),u.css({width:c[0],height:c[1],lineHeight:c[1]+"px"}),l=e.precedance===L?[y(v.x===F?d:v.x===P?c[0]-m[0]-d:(c[0]-m[0])/2),y(v.y===D?c[1]-m[1]:0)]:[y(v.x===F?c[0]-m[0]:0),y(v.y===D?d:v.y===O?c[1]-m[1]-d:(c[1]-m[1])/2)],me?(r=f[0].getContext("2d"),r.restore(),r.save(),r.clearRect(0,0,6e3,6e3),a=this._calculateTip(v,m,xe),h=this._calculateTip(v,this.size,xe),f.attr(A,c[0]*xe).attr(B,c[1]*xe),f.css(A,c[0]).css(B,c[1]),this._drawCoords(r,h),r.fillStyle=o[1],r.fill(),r.translate(l[0]*xe,l[1]*xe),this._drawCoords(r,a),r.fillStyle=o[0],r.fill()):(a=this._calculateTip(v),a="m"+a[0]+","+a[1]+" l"+a[2]+","+a[3]+" "+a[4]+","+a[5]+" xe",l[2]=d&&/^(r|b)/i.test(e.string())?8===oe.ie?2:1:0,f.css({coordsize:c[0]+d+" "+(c[1]+d),antialias:""+(v.string().indexOf(N)>-1),left:l[0]-l[2]*Number(n===S),top:l[1]-l[2]*Number(n===L),width:c[0]+d,height:c[1]+d}).each(function(t){var e=s(this);e[e.prop?"prop":"attr"]({coordsize:c[0]+d+" "+(c[1]+d),path:a,fillcolor:o[0],filled:!!t,stroked:!t}).toggle(!(!d&&!t)),!t&&e.html(qe("stroke",'weight="'+2*d+'px" color="'+o[1]+'" miterlimit="1000" joinstyle="miter"'))})),t.opera&&setTimeout(function(){p.tip.css({display:"inline-block",visibility:"visible"})},1),i!==k&&this.calculate(e,c)},calculate:function(t,e){if(!this.enabled)return k;var i,o,n=this,r=this.qtip.elements,a=this.element,h=this.options.offset,l=(r.tooltip.hasClass("ui-widget"),{});return t=t||this.corner,i=t.precedance,e=e||this._calculateSize(t),o=[t.x,t.y],i===S&&o.reverse(),s.each(o,function(s,o){var a,c,d;o===N?(a=i===L?F:D,l[a]="50%",l[ce+"-"+a]=-Math.round(e[i===L?0:1]/2)+h):(a=n._parseWidth(t,o,r.tooltip),c=n._parseWidth(t,o,r.content),d=n._parseRadius(t),l[o]=Math.max(-n.border,s?c:h+(d>a?d:-a))) -}),l[t[i]]-=e[i===S?0:1],a.css({margin:"",top:"",bottom:"",left:"",right:""}).css(l),l},reposition:function(t,e,s){function o(t,e,i,s,o){t===V&&l.precedance===e&&c[s]&&l[i]!==N?l.precedance=l.precedance===S?L:S:t!==V&&c[s]&&(l[e]=l[e]===N?c[s]>0?s:o:l[e]===s?o:s)}function n(t,e,o){l[t]===N?g[ce+"-"+e]=f[t]=r[ce+"-"+e]-c[e]:(a=r[o]!==i?[c[e],-r[e]]:[-c[e],r[e]],(f[t]=Math.max(a[0],a[1]))>a[0]&&(s[e]-=c[e],f[e]=k),g[r[o]!==i?o:e]=f[t])}if(this.enabled){var r,a,h=e.cache,l=this.corner.clone(),c=s.adjusted,d=e.options.position.adjust.method.split(" "),p=d[0],u=d[1]||d[0],f={left:k,top:k,x:0,y:0},g={};this.corner.fixed!==W&&(o(p,S,L,F,P),o(u,L,S,D,O),l.string()===h.corner.string()||h.cornerTop===c.top&&h.cornerLeft===c.left||this.update(l,k)),r=this.calculate(l),r.right!==i&&(r.left=-r.right),r.bottom!==i&&(r.top=-r.bottom),r.user=this.offset,(f.left=p===V&&!!c.left)&&n(S,F,P),(f.top=u===V&&!!c.top)&&n(L,D,O),this.element.css(g).toggle(!(f.x&&f.y||l.x===N&&f.y||l.y===N&&f.x)),s.left-=r.left.charAt?r.user:p!==V||f.top||!f.left&&!f.top?r.left+this.border:0,s.top-=r.top.charAt?r.user:u!==V||f.left||!f.left&&!f.top?r.top+this.border:0,h.cornerLeft=c.left,h.cornerTop=c.top,h.corner=l.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),le=R.tip=function(t){return new x(t,t.options.style.tip)},le.initialize="render",le.sanitize=function(t){if(t.style&&"tip"in t.style){var e=t.style.tip;"object"!=typeof e&&(e=t.style.tip={corner:e}),/string|boolean/i.test(typeof e.corner)||(e.corner=W)}},M.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(t){this.size=[t.width,t.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},s.extend(W,T.defaults,{style:{tip:{corner:W,mimic:k,width:6,height:6,border:W,offset:0}}});var Ce,Te,je="qtip-modal",ze="."+je;Te=function(){function t(t){if(s.expr[":"].focusable)return s.expr[":"].focusable;var e,i,o,n=!isNaN(s.attr(t,"tabindex")),r=t.nodeName&&t.nodeName.toLowerCase();return"area"===r?(e=t.parentNode,i=e.name,t.href&&i&&"map"===e.nodeName.toLowerCase()?(o=s("img[usemap=#"+i+"]")[0],!!o&&o.is(":visible")):!1):/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||n:n}function i(t){1>c.length&&t.length?t.not("body").blur():c.first().focus()}function o(t){if(h.is(":visible")){var e,o=s(t.target),a=n.tooltip,l=o.closest(U);e=1>l.length?k:parseInt(l[0].style.zIndex,10)>parseInt(a[0].style.zIndex,10),e||o.closest(U)[0]===a[0]||i(o),r=t.target===c[c.length-1]}}var n,r,a,h,l=this,c={};s.extend(l,{init:function(){return h=l.elem=s("
",{id:"qtip-overlay",html:"
",mousedown:function(){return k}}).hide(),s(e.body).bind("focusin"+ze,o),s(e).bind("keydown"+ze,function(t){n&&n.options.show.modal.escape&&27===t.keyCode&&n.hide(t)}),h.bind("click"+ze,function(t){n&&n.options.show.modal.blur&&n.hide(t)}),l},update:function(e){n=e,c=e.options.show.modal.stealfocus!==k?e.tooltip.find("*").filter(function(){return t(this)}):[]},toggle:function(t,o,r){var c=(s(e.body),t.tooltip),d=t.options.show.modal,p=d.effect,u=o?"show":"hide",f=h.is(":visible"),g=s(ze).filter(":visible:not(:animated)").not(c);return l.update(t),o&&d.stealfocus!==k&&i(s(":focus")),h.toggleClass("blurs",d.blur),o&&h.appendTo(e.body),h.is(":animated")&&f===o&&a!==k||!o&&g.length?l:(h.stop(W,k),s.isFunction(p)?p.call(h,o):p===k?h[u]():h.fadeTo(parseInt(r,10)||90,o?1:0,function(){o||h.hide()}),o||h.queue(function(t){h.css({left:"",top:""}),s(ze).length||h.detach(),t()}),a=o,n.destroyed&&(n=E),l)}}),l.init()},Te=new Te,s.extend(q.prototype,{init:function(t){var e=t.tooltip;return this.options.on?(t.elements.overlay=Te.elem,e.addClass(je).css("z-index",T.modal_zindex+s(ze).length),t._bind(e,["tooltipshow","tooltiphide"],function(t,i,o){var n=t.originalEvent;if(t.target===e[0])if(n&&"tooltiphide"===t.type&&/mouse(leave|enter)/.test(n.type)&&s(n.relatedTarget).closest(Te.elem[0]).length)try{t.preventDefault()}catch(r){}else(!n||n&&"tooltipsolo"!==n.type)&&this.toggle(t,"tooltipshow"===t.type,o)},this._ns,this),t._bind(e,"tooltipfocus",function(t,i){if(!t.isDefaultPrevented()&&t.target===e[0]){var o=s(ze),n=T.modal_zindex+o.length,r=parseInt(e[0].style.zIndex,10);Te.elem[0].style.zIndex=n-1,o.each(function(){this.style.zIndex>r&&(this.style.zIndex-=1)}),o.filter("."+Z).qtip("blur",t.originalEvent),e.addClass(Z)[0].style.zIndex=n,Te.update(i);try{t.preventDefault()}catch(a){}}},this._ns,this),t._bind(e,"tooltiphide",function(t){t.target===e[0]&&s(ze).filter(":visible").not(e).last().qtip("focus",t)},this._ns,this),i):this},toggle:function(t,e,s){return t&&t.isDefaultPrevented()?this:(Te.toggle(this.qtip,!!e,s),i)},destroy:function(){this.qtip.tooltip.removeClass(je),this.qtip._unbind(this.qtip.tooltip,this._ns),Te.toggle(this.qtip,k),delete this.qtip.elements.overlay}}),Ce=R.modal=function(t){return new q(t,t.options.show.modal)},Ce.sanitize=function(t){t.show&&("object"!=typeof t.show.modal?t.show.modal={on:!!t.show.modal}:t.show.modal.on===i&&(t.show.modal.on=W))},T.modal_zindex=T.zindex-200,Ce.initialize="render",M.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},s.extend(W,T.defaults,{show:{modal:{on:k,effect:W,blur:W,stealfocus:W,escape:W}}}),R.viewport=function(i,s,o,n,r,a,h){function l(t,e,i,o,n,r,a,h,l){var c=s[n],p=_[t],b=x[t],w=i===V,q=p===n?l:p===r?-l:-l/2,C=b===n?h:b===r?-h:-h/2,T=v[n]+y[n]-(f?0:u[n]),j=T-c,z=c+l-(a===A?g:m)-T,M=q-(_.precedance===t||p===_[e]?C:0)-(b===N?h/2:0);return w?(M=(p===n?1:-1)*q,s[n]+=j>0?j:z>0?-z:0,s[n]=Math.max(-u[n]+y[n],c-M,Math.min(Math.max(-u[n]+y[n]+(a===A?g:m),c+M),s[n],"center"===p?c-q:1e9))):(o*=i===$?2:0,j>0&&(p!==n||z>0)?(s[n]-=M+o,d.invert(t,n)):z>0&&(p!==r||j>0)&&(s[n]-=(p===N?-M:M)+o,d.invert(t,r)),v>s[n]&&-s[n]>z&&(s[n]=c,d=_.clone())),s[n]-c}var c,d,p,u,f,g,m,v,y,b=o.target,w=i.elements.tooltip,_=o.my,x=o.at,q=o.adjust,C=q.method.split(" "),T=C[0],j=C[1]||C[0],z=o.viewport,M=o.container,I=i.cache,W={left:0,top:0};return z.jquery&&b[0]!==t&&b[0]!==e.body&&"none"!==q.method?(u=M.offset()||W,f="static"===M.css("position"),c="fixed"===w.css("position"),g=z[0]===t?z.width():z.outerWidth(k),m=z[0]===t?z.height():z.outerHeight(k),v={left:c?0:z.scrollLeft(),top:c?0:z.scrollTop()},y=z.offset()||W,("shift"!==T||"shift"!==j)&&(d=_.clone()),W={left:"none"!==T?l(S,L,T,q.x,F,P,A,n,a):0,top:"none"!==j?l(L,S,j,q.y,D,O,B,r,h):0},d&&I.lastClass!==(p=X+"-pos-"+d.abbrev())&&w.removeClass(i.cache.lastClass).addClass(i.cache.lastClass=p),W):W},R.polys={polygon:function(t,e){var i,s,o,n={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:k},r=0,a=[],h=1,l=1,c=0,d=0;for(r=t.length;r--;)i=[parseInt(t[--r],10),parseInt(t[r+1],10)],i[0]>n.position.right&&(n.position.right=i[0]),i[0]n.position.bottom&&(n.position.bottom=i[1]),i[1]0&&o>0&&h>0&&l>0;)for(s=Math.floor(s/2),o=Math.floor(o/2),e.x===F?h=s:e.x===P?h=n.width-s:h+=Math.floor(s/2),e.y===D?l=o:e.y===O?l=n.height-o:l+=Math.floor(o/2),r=a.length;r--&&!(2>a.length);)c=a[r][0]-n.position.left,d=a[r][1]-n.position.top,(e.x===F&&c>=h||e.x===P&&h>=c||e.x===N&&(h>c||c>n.width-h)||e.y===D&&d>=l||e.y===O&&l>=d||e.y===N&&(l>d||d>n.height-l))&&a.splice(r,1);n.position={left:a[0][0],top:a[0][1]}}return n},rect:function(t,e,i,s){return{width:Math.abs(i-t),height:Math.abs(s-e),position:{left:Math.min(t,i),top:Math.min(e,s)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(t,e,i,s,o){var n=R.polys._angles[o.abbrev()],r=0===n?0:i*Math.cos(n*Math.PI),a=s*Math.sin(n*Math.PI);return{width:2*i-Math.abs(r),height:2*s-Math.abs(a),position:{left:t+r,top:e+a},adjustable:k}},circle:function(t,e,i,s){return R.polys.ellipse(t,e,i,i,s)}},R.svg=function(t,i,o){for(var n,r,a,h,l,c,d,p,u,f,g,m=s(e),v=i[0],y=s(v.ownerSVGElement),b=1,w=1,_=!0;!v.getBBox;)v=v.parentNode;if(!v.getBBox||!v.parentNode)return k;n=y.attr("width")||y.width()||parseInt(y.css("width"),10),r=y.attr("height")||y.height()||parseInt(y.css("height"),10);var x=(parseInt(i.css("stroke-width"),10)||0)/2;switch(x&&(b+=x/n,w+=x/r),v.nodeName){case"ellipse":case"circle":f=R.polys.ellipse(v.cx.baseVal.value,v.cy.baseVal.value,(v.rx||v.r).baseVal.value+x,(v.ry||v.r).baseVal.value+x,o);break;case"line":case"polygon":case"polyline":for(u=v.points||[{x:v.x1.baseVal.value,y:v.y1.baseVal.value},{x:v.x2.baseVal.value,y:v.y2.baseVal.value}],f=[],p=-1,c=u.numberOfItems||u.length;c>++p;)d=u.getItem?u.getItem(p):u[p],f.push.apply(f,[d.x,d.y]);f=R.polys.polygon(f,o);break;default:f=v.getBoundingClientRect(),f={width:f.width,height:f.height,position:{left:f.left,top:f.top}},_=!1}return g=f.position,y=y[0],_&&(y.createSVGPoint&&(a=v.getScreenCTM(),u=y.createSVGPoint(),u.x=g.left,u.y=g.top,h=u.matrixTransform(a),g.left=h.x,g.top=h.y),y.viewBox&&(l=y.viewBox.baseVal)&&l.width&&l.height&&(b*=n/l.width,w*=r/l.height)),g.left+=m.scrollLeft(),g.top+=m.scrollTop(),f},R.imagemap=function(t,e,i){e.jquery||(e=s(e));var o,n,r,a,h,l=e.attr("shape").toLowerCase().replace("poly","polygon"),c=s('img[usemap="#'+e.parent("map").attr("name")+'"]'),d=s.trim(e.attr("coords")),p=d.replace(/,$/,"").split(",");if(!c.length)return k;if("polygon"===l)a=R.polys.polygon(p,i);else{if(!R.polys[l])return k;for(r=-1,h=p.length,n=[];h>++r;)n.push(parseInt(p[r],10));a=R.polys[l].apply(this,n.concat(i))}return o=c.offset(),o.left+=Math.ceil((c.outerWidth(k)-c.width())/2),o.top+=Math.ceil((c.outerHeight(k)-c.height())/2),a.position.left+=o.left,a.position.top+=o.top,a};var Me,Ie='';s.extend(C.prototype,{_scroll:function(){var e=this.qtip.elements.overlay;e&&(e[0].style.top=s(t).scrollTop()+"px")},init:function(i){var o=i.tooltip;1>s("select, object").length&&(this.bgiframe=i.elements.bgiframe=s(Ie).appendTo(o),i._bind(o,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=s("
",{id:X+"-rcontainer"}).appendTo(e.body),i.elements.overlay&&i.elements.overlay.addClass("qtipmodal-ie6fix")&&(i._bind(t,["scroll","resize"],this._scroll,this._ns,this),i._bind(o,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var t,e,i=this.qtip.tooltip,s={height:i.outerHeight(k),width:i.outerWidth(k)},o=this.qtip.plugins.tip,n=this.qtip.elements.tip;e=parseInt(i.css("borderLeftWidth"),10)||0,e={left:-e,top:-e},o&&n&&(t="x"===o.corner.precedance?[A,F]:[B,D],e[t[1]]-=n[t[0]]()),this.bgiframe.css(e).css(s)},redraw:function(){if(1>this.qtip.rendered||this.drawing)return this;var t,e,i,s,o=this.qtip.tooltip,n=this.qtip.options.style,r=this.qtip.options.position.container;return this.qtip.drawing=1,n.height&&o.css(B,n.height),n.width?o.css(A,n.width):(o.css(A,"").appendTo(this.redrawContainer),e=o.width(),1>e%2&&(e+=1),i=o.css("maxWidth")||"",s=o.css("minWidth")||"",t=(i+s).indexOf("%")>-1?r.width()/100:0,i=(i.indexOf("%")>-1?t:1)*parseInt(i,10)||e,s=(s.indexOf("%")>-1?t:1)*parseInt(s,10)||0,e=i+s?Math.min(Math.max(e,s),i):e,o.css(A,Math.round(e)).appendTo(r)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([t,this.qtip.tooltip],this._ns)}}),Me=R.ie6=function(t){return 6===oe.ie?new C(t):k},Me.initialize="render",M.ie6={"^content|style$":function(){this.redraw()}}})})(window,document); +/* qTip2 v2.2.0 tips modal viewport svg imagemap ie6 | qtip2.com | Licensed MIT, GPL | Mon Nov 25 2013 11:54:49 */ +(function(t,e,i){(function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):jQuery&&!jQuery.fn.qtip&&t(jQuery)})(function(s){"use strict";function o(t,e,i,o){this.id=i,this.target=t,this.tooltip=E,this.elements={target:t},this._id=X+"-"+i,this.timers={img:{}},this.options=e,this.plugins={},this.cache={event:{},target:s(),disabled:k,attr:o,onTooltip:k,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=k}function n(t){return t===E||"object"!==s.type(t)}function r(t){return!(s.isFunction(t)||t&&t.attr||t.length||"object"===s.type(t)&&(t.jquery||t.then))}function a(t){var e,i,o,a;return n(t)?k:(n(t.metadata)&&(t.metadata={type:t.metadata}),"content"in t&&(e=t.content,n(e)||e.jquery||e.done?e=t.content={text:i=r(e)?k:e}:i=e.text,"ajax"in e&&(o=e.ajax,a=o&&o.once!==k,delete e.ajax,e.text=function(t,e){var n=i||s(this).attr(e.options.content.attr)||"Loading...",r=s.ajax(s.extend({},o,{context:e})).then(o.success,E,o.error).then(function(t){return t&&a&&e.set("content.text",t),t},function(t,i,s){e.destroyed||0===t.status||e.set("content.text",i+": "+s)});return a?n:(e.set("content.text",n),r)}),"title"in e&&(n(e.title)||(e.button=e.title.button,e.title=e.title.text),r(e.title||k)&&(e.title=k))),"position"in t&&n(t.position)&&(t.position={my:t.position,at:t.position}),"show"in t&&n(t.show)&&(t.show=t.show.jquery?{target:t.show}:t.show===W?{ready:W}:{event:t.show}),"hide"in t&&n(t.hide)&&(t.hide=t.hide.jquery?{target:t.hide}:{event:t.hide}),"style"in t&&n(t.style)&&(t.style={classes:t.style}),s.each(R,function(){this.sanitize&&this.sanitize(t)}),t)}function h(t,e){for(var i,s=0,o=t,n=e.split(".");o=o[n[s++]];)n.length>s&&(i=o);return[i||t,n.pop()]}function l(t,e){var i,s,o;for(i in this.checks)for(s in this.checks[i])(o=RegExp(s,"i").exec(t))&&(e.push(o),("builtin"===i||this.plugins[i])&&this.checks[i][s].apply(this.plugins[i]||this,e))}function c(t){return G.concat("").join(t?"-"+t+" ":" ")}function d(i){return i&&{type:i.type,pageX:i.pageX,pageY:i.pageY,target:i.target,relatedTarget:i.relatedTarget,scrollX:i.scrollX||t.pageXOffset||e.body.scrollLeft||e.documentElement.scrollLeft,scrollY:i.scrollY||t.pageYOffset||e.body.scrollTop||e.documentElement.scrollTop}||{}}function p(t,e){return e>0?setTimeout(s.proxy(t,this),e):(t.call(this),i)}function u(t){return this.tooltip.hasClass(ee)?k:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=p.call(this,function(){this.toggle(W,t)},this.options.show.delay),i)}function f(t){if(this.tooltip.hasClass(ee))return k;var e=s(t.relatedTarget),i=e.closest(U)[0]===this.tooltip[0],o=e[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==e[0]&&"mouse"===this.options.position.target&&i||this.options.hide.fixed&&/mouse(out|leave|move)/.test(t.type)&&(i||o))try{t.preventDefault(),t.stopImmediatePropagation()}catch(n){}else this.timers.hide=p.call(this,function(){this.toggle(k,t)},this.options.hide.delay,this)}function g(t){return this.tooltip.hasClass(ee)||!this.options.hide.inactive?k:(clearTimeout(this.timers.inactive),this.timers.inactive=p.call(this,function(){this.hide(t)},this.options.hide.inactive),i)}function m(t){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(t)}function v(t,i,o){s(e.body).delegate(t,(i.split?i:i.join(he+" "))+he,function(){var t=T.api[s.attr(this,H)];t&&!t.disabled&&o.apply(t,arguments)})}function y(t,i,n){var r,h,l,c,d,p=s(e.body),u=t[0]===e?p:t,f=t.metadata?t.metadata(n.metadata):E,g="html5"===n.metadata.type&&f?f[n.metadata.name]:E,m=t.data(n.metadata.name||"qtipopts");try{m="string"==typeof m?s.parseJSON(m):m}catch(v){}if(c=s.extend(W,{},T.defaults,n,"object"==typeof m?a(m):E,a(g||f)),h=c.position,c.id=i,"boolean"==typeof c.content.text){if(l=t.attr(c.content.attr),c.content.attr===k||!l)return k;c.content.text=l}if(h.container.length||(h.container=p),h.target===k&&(h.target=u),c.show.target===k&&(c.show.target=u),c.show.solo===W&&(c.show.solo=h.container.closest("body")),c.hide.target===k&&(c.hide.target=u),c.position.viewport===W&&(c.position.viewport=h.container),h.container=h.container.eq(0),h.at=new z(h.at,W),h.my=new z(h.my),t.data(X))if(c.overwrite)t.qtip("destroy",!0);else if(c.overwrite===k)return k;return t.attr(Y,i),c.suppress&&(d=t.attr("title"))&&t.removeAttr("title").attr(se,d).attr("title",""),r=new o(t,c,i,!!l),t.data(X,r),t.one("remove.qtip-"+i+" removeqtip.qtip-"+i,function(){var t;(t=s(this).data(X))&&t.destroy(!0)}),r}function b(t){return t.charAt(0).toUpperCase()+t.slice(1)}function w(t,e){var s,o,n=e.charAt(0).toUpperCase()+e.slice(1),r=(e+" "+be.join(n+" ")+n).split(" "),a=0;if(ye[e])return t.css(ye[e]);for(;s=r[a++];)if((o=t.css(s))!==i)return ye[e]=s,o}function _(t,e){return Math.ceil(parseFloat(w(t,e)))}function x(t,e){this._ns="tip",this.options=e,this.offset=e.offset,this.size=[e.width,e.height],this.init(this.qtip=t)}function q(t,e){this.options=e,this._ns="-modal",this.init(this.qtip=t)}function C(t){this._ns="ie6",this.init(this.qtip=t)}var T,j,z,M,I,W=!0,k=!1,E=null,S="x",L="y",D="width",A="height",F="top",O="left",B="bottom",P="right",N="center",$="flipinvert",V="shift",R={},X="qtip",Y="data-hasqtip",H="data-qtip-id",G=["ui-widget","ui-tooltip"],U="."+X,Q="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),J=X+"-fixed",K=X+"-default",Z=X+"-focus",te=X+"-hover",ee=X+"-disabled",ie="_replacedByqTip",se="oldtitle",oe={ie:function(){for(var t=3,i=e.createElement("div");(i.innerHTML="")&&i.getElementsByTagName("i")[0];);return t>4?t:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||k};j=o.prototype,j._when=function(t){return s.when.apply(s,t)},j.render=function(t){if(this.rendered||this.destroyed)return this;var e,i=this,o=this.options,n=this.cache,r=this.elements,a=o.content.text,h=o.content.title,l=o.content.button,c=o.position,d=("."+this._id+" ",[]);return s.attr(this.target[0],"aria-describedby",this._id),this.tooltip=r.tooltip=e=s("
",{id:this._id,"class":[X,K,o.style.classes,X+"-pos-"+o.position.my.abbrev()].join(" "),width:o.style.width||"",height:o.style.height||"",tracking:"mouse"===c.target&&c.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":k,"aria-describedby":this._id+"-content","aria-hidden":W}).toggleClass(ee,this.disabled).attr(H,this.id).data(X,this).appendTo(c.container).append(r.content=s("
",{"class":X+"-content",id:this._id+"-content","aria-atomic":W})),this.rendered=-1,this.positioning=W,h&&(this._createTitle(),s.isFunction(h)||d.push(this._updateTitle(h,k))),l&&this._createButton(),s.isFunction(a)||d.push(this._updateContent(a,k)),this.rendered=W,this._setWidget(),s.each(R,function(t){var e;"render"===this.initialize&&(e=this(i))&&(i.plugins[t]=e)}),this._unassignEvents(),this._assignEvents(),this._when(d).then(function(){i._trigger("render"),i.positioning=k,i.hiddenDuringWait||!o.show.ready&&!t||i.toggle(W,n.event,k),i.hiddenDuringWait=k}),T.api[this.id]=this,this},j.destroy=function(t){function e(){if(!this.destroyed){this.destroyed=W;var t=this.target,e=t.attr(se);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),s.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),t.removeData(X).removeAttr(H).removeAttr(Y).removeAttr("aria-describedby"),this.options.suppress&&e&&t.attr("title",e).removeAttr(se),this._unbind(t),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=E,delete T.api[this.id]}}return this.destroyed?this.target:(t===W&&"hide"!==this.triggering||!this.rendered?e.call(this):(this.tooltip.one("tooltiphidden",s.proxy(e,this)),!this.triggering&&this.hide()),this.target)},M=j.checks={builtin:{"^id$":function(t,e,i,o){var n=i===W?T.nextid:i,r=X+"-"+n;n!==k&&n.length>0&&!s("#"+r).length?(this._id=r,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):t[e]=o},"^prerender":function(t,e,i){i&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(t,e,i){this._updateContent(i)},"^content.attr$":function(t,e,i,s){this.options.content.text===this.target.attr(s)&&this._updateContent(this.target.attr(i))},"^content.title$":function(t,e,s){return s?(s&&!this.elements.title&&this._createTitle(),this._updateTitle(s),i):this._removeTitle()},"^content.button$":function(t,e,i){this._updateButton(i)},"^content.title.(text|button)$":function(t,e,i){this.set("content."+e,i)},"^position.(my|at)$":function(t,e,i){"string"==typeof i&&(t[e]=new z(i,"at"===e))},"^position.container$":function(t,e,i){this.rendered&&this.tooltip.appendTo(i)},"^show.ready$":function(t,e,i){i&&(!this.rendered&&this.render(W)||this.toggle(W))},"^style.classes$":function(t,e,i,s){this.rendered&&this.tooltip.removeClass(s).addClass(i)},"^style.(width|height)":function(t,e,i){this.rendered&&this.tooltip.css(e,i)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(t,e,i){this.rendered&&this.tooltip.toggleClass(K,!!i)},"^events.(render|show|move|hide|focus|blur)$":function(t,e,i){this.rendered&&this.tooltip[(s.isFunction(i)?"":"un")+"bind"]("tooltip"+e,i)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var t=this.options.position;this.tooltip.attr("tracking","mouse"===t.target&&t.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},j.get=function(t){if(this.destroyed)return this;var e=h(this.options,t.toLowerCase()),i=e[0][e[1]];return i.precedance?i.string():i};var ne=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,re=/^prerender|show\.ready/i;j.set=function(t,e){if(this.destroyed)return this;var o,n=this.rendered,r=k,c=this.options;return this.checks,"string"==typeof t?(o=t,t={},t[o]=e):t=s.extend({},t),s.each(t,function(e,o){if(n&&re.test(e))return delete t[e],i;var a,l=h(c,e.toLowerCase());a=l[0][l[1]],l[0][l[1]]=o&&o.nodeType?s(o):o,r=ne.test(e)||r,t[e]=[l[0],l[1],o,a]}),a(c),this.positioning=W,s.each(t,s.proxy(l,this)),this.positioning=k,this.rendered&&this.tooltip[0].offsetWidth>0&&r&&this.reposition("mouse"===c.position.target?E:this.cache.event),this},j._update=function(t,e){var i=this,o=this.cache;return this.rendered&&t?(s.isFunction(t)&&(t=t.call(this.elements.target,o.event,this)||""),s.isFunction(t.then)?(o.waiting=W,t.then(function(t){return o.waiting=k,i._update(t,e)},E,function(t){return i._update(t,e)})):t===k||!t&&""!==t?k:(t.jquery&&t.length>0?e.empty().append(t.css({display:"block",visibility:"visible"})):e.html(t),this._waitForContent(e).then(function(t){t.images&&t.images.length&&i.rendered&&i.tooltip[0].offsetWidth>0&&i.reposition(o.event,!t.length)}))):k},j._waitForContent=function(t){var e=this.cache;return e.waiting=W,(s.fn.imagesLoaded?t.imagesLoaded():s.Deferred().resolve([])).done(function(){e.waiting=k}).promise()},j._updateContent=function(t,e){this._update(t,this.elements.content,e)},j._updateTitle=function(t,e){this._update(t,this.elements.title,e)===k&&this._removeTitle(k)},j._createTitle=function(){var t=this.elements,e=this._id+"-title";t.titlebar&&this._removeTitle(),t.titlebar=s("
",{"class":X+"-titlebar "+(this.options.style.widget?c("header"):"")}).append(t.title=s("
",{id:e,"class":X+"-title","aria-atomic":W})).insertBefore(t.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(t){s(this).toggleClass("ui-state-active ui-state-focus","down"===t.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(t){s(this).toggleClass("ui-state-hover","mouseover"===t.type)}),this.options.content.button&&this._createButton()},j._removeTitle=function(t){var e=this.elements;e.title&&(e.titlebar.remove(),e.titlebar=e.title=e.button=E,t!==k&&this.reposition())},j.reposition=function(i,o){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=W;var n,r,a=this.cache,h=this.tooltip,l=this.options.position,c=l.target,d=l.my,p=l.at,u=l.viewport,f=l.container,g=l.adjust,m=g.method.split(" "),v=h.outerWidth(k),y=h.outerHeight(k),b=0,w=0,_=h.css("position"),x={left:0,top:0},q=h[0].offsetWidth>0,C=i&&"scroll"===i.type,T=s(t),j=f[0].ownerDocument,z=this.mouse;if(s.isArray(c)&&2===c.length)p={x:O,y:F},x={left:c[0],top:c[1]};else if("mouse"===c)p={x:O,y:F},!z||!z.pageX||!g.mouse&&i&&i.pageX?i&&i.pageX||((!g.mouse||this.options.show.distance)&&a.origin&&a.origin.pageX?i=a.origin:(!i||i&&("resize"===i.type||"scroll"===i.type))&&(i=a.event)):i=z,"static"!==_&&(x=f.offset()),j.body.offsetWidth!==(t.innerWidth||j.documentElement.clientWidth)&&(r=s(e.body).offset()),x={left:i.pageX-x.left+(r&&r.left||0),top:i.pageY-x.top+(r&&r.top||0)},g.mouse&&C&&z&&(x.left-=(z.scrollX||0)-T.scrollLeft(),x.top-=(z.scrollY||0)-T.scrollTop());else{if("event"===c?i&&i.target&&"scroll"!==i.type&&"resize"!==i.type?a.target=s(i.target):i.target||(a.target=this.elements.target):"event"!==c&&(a.target=s(c.jquery?c:this.elements.target)),c=a.target,c=s(c).eq(0),0===c.length)return this;c[0]===e||c[0]===t?(b=oe.iOS?t.innerWidth:c.width(),w=oe.iOS?t.innerHeight:c.height(),c[0]===t&&(x={top:(u||c).scrollTop(),left:(u||c).scrollLeft()})):R.imagemap&&c.is("area")?n=R.imagemap(this,c,p,R.viewport?m:k):R.svg&&c&&c[0].ownerSVGElement?n=R.svg(this,c,p,R.viewport?m:k):(b=c.outerWidth(k),w=c.outerHeight(k),x=c.offset()),n&&(b=n.width,w=n.height,r=n.offset,x=n.position),x=this.reposition.offset(c,x,f),(oe.iOS>3.1&&4.1>oe.iOS||oe.iOS>=4.3&&4.33>oe.iOS||!oe.iOS&&"fixed"===_)&&(x.left-=T.scrollLeft(),x.top-=T.scrollTop()),(!n||n&&n.adjustable!==k)&&(x.left+=p.x===P?b:p.x===N?b/2:0,x.top+=p.y===B?w:p.y===N?w/2:0)}return x.left+=g.x+(d.x===P?-v:d.x===N?-v/2:0),x.top+=g.y+(d.y===B?-y:d.y===N?-y/2:0),R.viewport?(x.adjusted=R.viewport(this,x,l,b,w,v,y),r&&x.adjusted.left&&(x.left+=r.left),r&&x.adjusted.top&&(x.top+=r.top)):x.adjusted={left:0,top:0},this._trigger("move",[x,u.elem||u],i)?(delete x.adjusted,o===k||!q||isNaN(x.left)||isNaN(x.top)||"mouse"===c||!s.isFunction(l.effect)?h.css(x):s.isFunction(l.effect)&&(l.effect.call(h,this,s.extend({},x)),h.queue(function(t){s(this).css({opacity:"",height:""}),oe.ie&&this.style.removeAttribute("filter"),t()})),this.positioning=k,this):this},j.reposition.offset=function(t,i,o){function n(t,e){i.left+=e*t.scrollLeft(),i.top+=e*t.scrollTop()}if(!o[0])return i;var r,a,h,l,c=s(t[0].ownerDocument),d=!!oe.ie&&"CSS1Compat"!==e.compatMode,p=o[0];do"static"!==(a=s.css(p,"position"))&&("fixed"===a?(h=p.getBoundingClientRect(),n(c,-1)):(h=s(p).position(),h.left+=parseFloat(s.css(p,"borderLeftWidth"))||0,h.top+=parseFloat(s.css(p,"borderTopWidth"))||0),i.left-=h.left+(parseFloat(s.css(p,"marginLeft"))||0),i.top-=h.top+(parseFloat(s.css(p,"marginTop"))||0),r||"hidden"===(l=s.css(p,"overflow"))||"visible"===l||(r=s(p)));while(p=p.offsetParent);return r&&(r[0]!==c[0]||d)&&n(r,1),i};var ae=(z=j.reposition.Corner=function(t,e){t=(""+t).replace(/([A-Z])/," $1").replace(/middle/gi,N).toLowerCase(),this.x=(t.match(/left|right/i)||t.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(t.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!e;var i=t.charAt(0);this.precedance="t"===i||"b"===i?L:S}).prototype;ae.invert=function(t,e){this[t]=this[t]===O?P:this[t]===P?O:e||this[t]},ae.string=function(){var t=this.x,e=this.y;return t===e?t:this.precedance===L||this.forceY&&"center"!==e?e+" "+t:t+" "+e},ae.abbrev=function(){var t=this.string().split(" ");return t[0].charAt(0)+(t[1]&&t[1].charAt(0)||"")},ae.clone=function(){return new z(this.string(),this.forceY)},j.toggle=function(t,i){var o=this.cache,n=this.options,r=this.tooltip;if(i){if(/over|enter/.test(i.type)&&/out|leave/.test(o.event.type)&&n.show.target.add(i.target).length===n.show.target.length&&r.has(i.relatedTarget).length)return this;o.event=d(i)}if(this.waiting&&!t&&(this.hiddenDuringWait=W),!this.rendered)return t?this.render(1):this;if(this.destroyed||this.disabled)return this;var a,h,l,c=t?"show":"hide",p=this.options[c],u=(this.options[t?"hide":"show"],this.options.position),f=this.options.content,g=this.tooltip.css("width"),m=this.tooltip.is(":visible"),v=t||1===p.target.length,y=!i||2>p.target.length||o.target[0]===i.target;return(typeof t).search("boolean|number")&&(t=!m),a=!r.is(":animated")&&m===t&&y,h=a?E:!!this._trigger(c,[90]),this.destroyed?this:(h!==k&&t&&this.focus(i),!h||a?this:(s.attr(r[0],"aria-hidden",!t),t?(o.origin=d(this.mouse),s.isFunction(f.text)&&this._updateContent(f.text,k),s.isFunction(f.title)&&this._updateTitle(f.title,k),!I&&"mouse"===u.target&&u.adjust.mouse&&(s(e).bind("mousemove."+X,this._storeMouse),I=W),g||r.css("width",r.outerWidth(k)),this.reposition(i,arguments[2]),g||r.css("width",""),p.solo&&("string"==typeof p.solo?s(p.solo):s(U,p.solo)).not(r).not(p.target).qtip("hide",s.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete o.origin,I&&!s(U+'[tracking="true"]:visible',p.solo).not(r).length&&(s(e).unbind("mousemove."+X),I=k),this.blur(i)),l=s.proxy(function(){t?(oe.ie&&r[0].style.removeAttribute("filter"),r.css("overflow",""),"string"==typeof p.autofocus&&s(this.options.show.autofocus,r).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):r.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(t?"visible":"hidden")},this),p.effect===k||v===k?(r[c](),l()):s.isFunction(p.effect)?(r.stop(1,1),p.effect.call(r,this),r.queue("fx",function(t){l(),t()})):r.fadeTo(90,t?1:0,l),t&&p.target.trigger("qtip-"+this.id+"-inactive"),this))},j.show=function(t){return this.toggle(W,t)},j.hide=function(t){return this.toggle(k,t)},j.focus=function(t){if(!this.rendered||this.destroyed)return this;var e=s(U),i=this.tooltip,o=parseInt(i[0].style.zIndex,10),n=T.zindex+e.length;return i.hasClass(Z)||this._trigger("focus",[n],t)&&(o!==n&&(e.each(function(){this.style.zIndex>o&&(this.style.zIndex=this.style.zIndex-1)}),e.filter("."+Z).qtip("blur",t)),i.addClass(Z)[0].style.zIndex=n),this},j.blur=function(t){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(Z),this._trigger("blur",[this.tooltip.css("zIndex")],t),this)},j.disable=function(t){return this.destroyed?this:("toggle"===t?t=!(this.rendered?this.tooltip.hasClass(ee):this.disabled):"boolean"!=typeof t&&(t=W),this.rendered&&this.tooltip.toggleClass(ee,t).attr("aria-disabled",t),this.disabled=!!t,this)},j.enable=function(){return this.disable(k)},j._createButton=function(){var t=this,e=this.elements,i=e.tooltip,o=this.options.content.button,n="string"==typeof o,r=n?o:"Close tooltip";e.button&&e.button.remove(),e.button=o.jquery?o:s("",{"class":"qtip-close "+(this.options.style.widget?"":X+"-icon"),title:r,"aria-label":r}).prepend(s("",{"class":"ui-icon ui-icon-close",html:"×"})),e.button.appendTo(e.titlebar||i).attr("role","button").click(function(e){return i.hasClass(ee)||t.hide(e),k})},j._updateButton=function(t){if(!this.rendered)return k;var e=this.elements.button;t?this._createButton():e.remove()},j._setWidget=function(){var t=this.options.style.widget,e=this.elements,i=e.tooltip,s=i.hasClass(ee);i.removeClass(ee),ee=t?"ui-state-disabled":"qtip-disabled",i.toggleClass(ee,s),i.toggleClass("ui-helper-reset "+c(),t).toggleClass(K,this.options.style.def&&!t),e.content&&e.content.toggleClass(c("content"),t),e.titlebar&&e.titlebar.toggleClass(c("header"),t),e.button&&e.button.toggleClass(X+"-icon",!t)},j._storeMouse=function(t){(this.mouse=d(t)).type="mousemove"},j._bind=function(t,e,i,o,n){var r="."+this._id+(o?"-"+o:"");e.length&&s(t).bind((e.split?e:e.join(r+" "))+r,s.proxy(i,n||this))},j._unbind=function(t,e){s(t).unbind("."+this._id+(e?"-"+e:""))};var he="."+X;s(function(){v(U,["mouseenter","mouseleave"],function(t){var e="mouseenter"===t.type,i=s(t.currentTarget),o=s(t.relatedTarget||t.target),n=this.options;e?(this.focus(t),i.hasClass(J)&&!i.hasClass(ee)&&clearTimeout(this.timers.hide)):"mouse"===n.position.target&&n.hide.event&&n.show.target&&!o.closest(n.show.target[0]).length&&this.hide(t),i.toggleClass(te,e)}),v("["+H+"]",Q,g)}),j._trigger=function(t,e,i){var o=s.Event("tooltip"+t);return o.originalEvent=i&&s.extend({},i)||this.cache.event||E,this.triggering=t,this.tooltip.trigger(o,[this].concat(e||[])),this.triggering=k,!o.isDefaultPrevented()},j._bindEvents=function(t,e,o,n,r,a){if(n.add(o).length===n.length){var h=[];e=s.map(e,function(e){var o=s.inArray(e,t);return o>-1?(h.push(t.splice(o,1)[0]),i):e}),h.length&&this._bind(o,h,function(t){var e=this.rendered?this.tooltip[0].offsetWidth>0:!1;(e?a:r).call(this,t)})}this._bind(o,t,r),this._bind(n,e,a)},j._assignInitialEvents=function(t){function e(t){return this.disabled||this.destroyed?k:(this.cache.event=d(t),this.cache.target=t?s(t.target):[i],clearTimeout(this.timers.show),this.timers.show=p.call(this,function(){this.render("object"==typeof t||o.show.ready)},o.show.delay),i)}var o=this.options,n=o.show.target,r=o.hide.target,a=o.show.event?s.trim(""+o.show.event).split(" "):[],h=o.hide.event?s.trim(""+o.hide.event).split(" "):[];/mouse(over|enter)/i.test(o.show.event)&&!/mouse(out|leave)/i.test(o.hide.event)&&h.push("mouseleave"),this._bind(n,"mousemove",function(t){this._storeMouse(t),this.cache.onTarget=W}),this._bindEvents(a,h,n,r,e,function(){clearTimeout(this.timers.show)}),(o.show.ready||o.prerender)&&e.call(this,t)},j._assignEvents=function(){var i=this,o=this.options,n=o.position,r=this.tooltip,a=o.show.target,h=o.hide.target,l=n.container,c=n.viewport,d=s(e),p=(s(e.body),s(t)),v=o.show.event?s.trim(""+o.show.event).split(" "):[],y=o.hide.event?s.trim(""+o.hide.event).split(" "):[];s.each(o.events,function(t,e){i._bind(r,"toggle"===t?["tooltipshow","tooltiphide"]:["tooltip"+t],e,null,r)}),/mouse(out|leave)/i.test(o.hide.event)&&"window"===o.hide.leave&&this._bind(d,["mouseout","blur"],function(t){/select|option/.test(t.target.nodeName)||t.relatedTarget||this.hide(t)}),o.hide.fixed?h=h.add(r.addClass(J)):/mouse(over|enter)/i.test(o.show.event)&&this._bind(h,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+o.hide.event).indexOf("unfocus")>-1&&this._bind(l.closest("html"),["mousedown","touchstart"],function(t){var e=s(t.target),i=this.rendered&&!this.tooltip.hasClass(ee)&&this.tooltip[0].offsetWidth>0,o=e.parents(U).filter(this.tooltip[0]).length>0;e[0]===this.target[0]||e[0]===this.tooltip[0]||o||this.target.has(e[0]).length||!i||this.hide(t)}),"number"==typeof o.hide.inactive&&(this._bind(a,"qtip-"+this.id+"-inactive",g),this._bind(h.add(r),T.inactiveEvents,g,"-inactive")),this._bindEvents(v,y,a,h,u,f),this._bind(a.add(r),"mousemove",function(t){if("number"==typeof o.hide.distance){var e=this.cache.origin||{},i=this.options.hide.distance,s=Math.abs;(s(t.pageX-e.pageX)>=i||s(t.pageY-e.pageY)>=i)&&this.hide(t)}this._storeMouse(t)}),"mouse"===n.target&&n.adjust.mouse&&(o.hide.event&&this._bind(a,["mouseenter","mouseleave"],function(t){this.cache.onTarget="mouseenter"===t.type}),this._bind(d,"mousemove",function(t){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ee)&&this.tooltip[0].offsetWidth>0&&this.reposition(t)})),(n.adjust.resize||c.length)&&this._bind(s.event.special.resize?c:p,"resize",m),n.adjust.scroll&&this._bind(p.add(n.container),"scroll",m)},j._unassignEvents=function(){var i=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],t,e];this._unbind(s([]).pushStack(s.grep(i,function(t){return"object"==typeof t})))},T=s.fn.qtip=function(t,e,o){var n=(""+t).toLowerCase(),r=E,h=s.makeArray(arguments).slice(1),l=h[h.length-1],c=this[0]?s.data(this[0],X):E;return!arguments.length&&c||"api"===n?c:"string"==typeof t?(this.each(function(){var t=s.data(this,X);if(!t)return W;if(l&&l.timeStamp&&(t.cache.event=l),!e||"option"!==n&&"options"!==n)t[n]&&t[n].apply(t,h);else{if(o===i&&!s.isPlainObject(e))return r=t.get(e),k;t.set(e,o)}}),r!==E?r:this):"object"!=typeof t&&arguments.length?i:(c=a(s.extend(W,{},t)),this.each(function(t){var e,o;return o=s.isArray(c.id)?c.id[t]:c.id,o=!o||o===k||1>o.length||T.api[o]?T.nextid++:o,e=y(s(this),o,c),e===k?W:(T.api[o]=e,s.each(R,function(){"initialize"===this.initialize&&this(e)}),e._assignInitialEvents(l),i)}))},s.qtip=o,T.api={},s.each({attr:function(t,e){if(this.length){var i=this[0],o="title",n=s.data(i,"qtip");if(t===o&&n&&"object"==typeof n&&n.options.suppress)return 2>arguments.length?s.attr(i,se):(n&&n.options.content.attr===o&&n.cache.attr&&n.set("content.text",e),this.attr(se,e))}return s.fn["attr"+ie].apply(this,arguments)},clone:function(t){var e=(s([]),s.fn["clone"+ie].apply(this,arguments));return t||e.filter("["+se+"]").attr("title",function(){return s.attr(this,se)}).removeAttr(se),e}},function(t,e){if(!e||s.fn[t+ie])return W;var i=s.fn[t+ie]=s.fn[t];s.fn[t]=function(){return e.apply(this,arguments)||i.apply(this,arguments)}}),s.ui||(s["cleanData"+ie]=s.cleanData,s.cleanData=function(t){for(var e,i=0;(e=s(t[i])).length;i++)if(e.attr(Y))try{e.triggerHandler("removeqtip")}catch(o){}s["cleanData"+ie].apply(this,arguments)}),T.version="2.2.0",T.nextid=0,T.inactiveEvents=Q,T.zindex=15e3,T.defaults={prerender:k,id:k,overwrite:W,suppress:W,content:{text:W,attr:"title",title:k,button:k},position:{my:"top left",at:"bottom right",target:k,container:k,viewport:k,adjust:{x:0,y:0,mouse:W,scroll:W,resize:W,method:"flipinvert flipinvert"},effect:function(t,e){s(this).animate(e,{duration:200,queue:k})}},show:{target:k,event:"mouseenter",effect:W,delay:90,solo:k,ready:k,autofocus:k},hide:{target:k,event:"mouseleave",effect:W,delay:0,fixed:k,inactive:k,leave:"window",distance:k},style:{classes:"",widget:k,width:k,height:k,def:W},events:{render:E,move:E,show:E,hide:E,toggle:E,visible:E,hidden:E,focus:E,blur:E}};var le,ce="margin",de="border",pe="color",ue="background-color",fe="transparent",ge=" !important",me=!!e.createElement("canvas").getContext,ve=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,ye={},be=["Webkit","O","Moz","ms"];if(me)var we=t.devicePixelRatio||1,_e=function(){var t=e.createElement("canvas").getContext("2d");return t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||1}(),xe=we/_e;else var qe=function(t,e,i){return"'};s.extend(x.prototype,{init:function(t){var e,i;i=this.element=t.elements.tip=s("
",{"class":X+"-tip"}).prependTo(t.tooltip),me?(e=s("").appendTo(this.element)[0].getContext("2d"),e.lineJoin="miter",e.miterLimit=1e5,e.save()):(e=qe("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(e+e),t._bind(s("*",i).add(i),["click","mousedown"],function(t){t.stopPropagation()},this._ns)),t._bind(t.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(t){var e=this.qtip.elements.titlebar;return e&&(t.y===F||t.y===N&&this.element.position().top+this.size[1]/2+this.options.offsetoe.ie?0:_(this._useTitle(t)&&e.titlebar||e.content,i)||_(e.tooltip,i)||0},_invalidColour:function(t,e,i){var s=t.css(e);return!s||i&&s===t.css(i)||ve.test(s)?k:s},_parseColours:function(t){var e=this.qtip.elements,i=this.element.css("cssText",""),o=de+b(t[t.precedance])+b(pe),n=this._useTitle(t)&&e.titlebar||e.content,r=this._invalidColour,a=[];return a[0]=r(i,ue)||r(n,ue)||r(e.content,ue)||r(e.tooltip,ue)||i.css(ue),a[1]=r(i,o,pe)||r(n,o,pe)||r(e.content,o,pe)||r(e.tooltip,o,pe)||e.tooltip.css(o),s("*",i).add(i).css("cssText",ue+":"+fe+ge+";"+de+":0"+ge+";"),a},_calculateSize:function(t){var e,i,s,o=t.precedance===L,n=this.options.width,r=this.options.height,a="c"===t.abbrev(),h=(o?n:r)*(a?.5:1),l=Math.pow,c=Math.round,d=Math.sqrt(l(h,2)+l(r,2)),p=[this.border/h*d,this.border/r*d];return p[2]=Math.sqrt(l(p[0],2)-l(this.border,2)),p[3]=Math.sqrt(l(p[1],2)-l(this.border,2)),e=d+p[2]+p[3]+(a?0:p[0]),i=e/d,s=[c(i*n),c(i*r)],o?s:s.reverse()},_calculateTip:function(t,e,i){i=i||1,e=e||this.size;var s=e[0]*i,o=e[1]*i,n=Math.ceil(s/2),r=Math.ceil(o/2),a={br:[0,0,s,o,s,0],bl:[0,0,s,0,0,o],tr:[0,o,s,0,s,o],tl:[0,0,0,o,s,o],tc:[0,o,n,0,s,o],bc:[0,0,s,0,n,o],rc:[0,0,s,r,0,o],lc:[s,0,s,o,0,r]};return a.lt=a.br,a.rt=a.bl,a.lb=a.tr,a.rb=a.tl,a[t.abbrev()]},_drawCoords:function(t,e){t.beginPath(),t.moveTo(e[0],e[1]),t.lineTo(e[2],e[3]),t.lineTo(e[4],e[5]),t.closePath()},create:function(){var t=this.corner=(me||oe.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=t.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(e,i){if(!this.enabled)return this;var o,n,r,a,h,l,c,d,p=this.qtip.elements,u=this.element,f=u.children(),g=this.options,m=this.size,v=g.mimic,y=Math.round;e||(e=this.qtip.cache.corner||this.corner),v===k?v=e:(v=new z(v),v.precedance=e.precedance,"inherit"===v.x?v.x=e.x:"inherit"===v.y?v.y=e.y:v.x===v.y&&(v[e.precedance]=e[e.precedance])),n=v.precedance,e.precedance===S?this._swapDimensions():this._resetDimensions(),o=this.color=this._parseColours(e),o[1]!==fe?(d=this.border=this._parseWidth(e,e[e.precedance]),g.border&&1>d&&!ve.test(o[1])&&(o[0]=o[1]),this.border=d=g.border!==W?g.border:d):this.border=d=0,c=this.size=this._calculateSize(e),u.css({width:c[0],height:c[1],lineHeight:c[1]+"px"}),l=e.precedance===L?[y(v.x===O?d:v.x===P?c[0]-m[0]-d:(c[0]-m[0])/2),y(v.y===F?c[1]-m[1]:0)]:[y(v.x===O?c[0]-m[0]:0),y(v.y===F?d:v.y===B?c[1]-m[1]-d:(c[1]-m[1])/2)],me?(r=f[0].getContext("2d"),r.restore(),r.save(),r.clearRect(0,0,6e3,6e3),a=this._calculateTip(v,m,xe),h=this._calculateTip(v,this.size,xe),f.attr(D,c[0]*xe).attr(A,c[1]*xe),f.css(D,c[0]).css(A,c[1]),this._drawCoords(r,h),r.fillStyle=o[1],r.fill(),r.translate(l[0]*xe,l[1]*xe),this._drawCoords(r,a),r.fillStyle=o[0],r.fill()):(a=this._calculateTip(v),a="m"+a[0]+","+a[1]+" l"+a[2]+","+a[3]+" "+a[4]+","+a[5]+" xe",l[2]=d&&/^(r|b)/i.test(e.string())?8===oe.ie?2:1:0,f.css({coordsize:c[0]+d+" "+(c[1]+d),antialias:""+(v.string().indexOf(N)>-1),left:l[0]-l[2]*Number(n===S),top:l[1]-l[2]*Number(n===L),width:c[0]+d,height:c[1]+d}).each(function(t){var e=s(this);e[e.prop?"prop":"attr"]({coordsize:c[0]+d+" "+(c[1]+d),path:a,fillcolor:o[0],filled:!!t,stroked:!t}).toggle(!(!d&&!t)),!t&&e.html(qe("stroke",'weight="'+2*d+'px" color="'+o[1]+'" miterlimit="1000" joinstyle="miter"'))})),t.opera&&setTimeout(function(){p.tip.css({display:"inline-block",visibility:"visible"})},1),i!==k&&this.calculate(e,c)},calculate:function(t,e){if(!this.enabled)return k;var i,o,n=this,r=this.qtip.elements,a=this.element,h=this.options.offset,l=(r.tooltip.hasClass("ui-widget"),{});return t=t||this.corner,i=t.precedance,e=e||this._calculateSize(t),o=[t.x,t.y],i===S&&o.reverse(),s.each(o,function(s,o){var a,c,d;o===N?(a=i===L?O:F,l[a]="50%",l[ce+"-"+a]=-Math.round(e[i===L?0:1]/2)+h):(a=n._parseWidth(t,o,r.tooltip),c=n._parseWidth(t,o,r.content),d=n._parseRadius(t),l[o]=Math.max(-n.border,s?c:h+(d>a?d:-a))) +}),l[t[i]]-=e[i===S?0:1],a.css({margin:"",top:"",bottom:"",left:"",right:""}).css(l),l},reposition:function(t,e,s){function o(t,e,i,s,o){t===V&&l.precedance===e&&c[s]&&l[i]!==N?l.precedance=l.precedance===S?L:S:t!==V&&c[s]&&(l[e]=l[e]===N?c[s]>0?s:o:l[e]===s?o:s)}function n(t,e,o){l[t]===N?g[ce+"-"+e]=f[t]=r[ce+"-"+e]-c[e]:(a=r[o]!==i?[c[e],-r[e]]:[-c[e],r[e]],(f[t]=Math.max(a[0],a[1]))>a[0]&&(s[e]-=c[e],f[e]=k),g[r[o]!==i?o:e]=f[t])}if(this.enabled){var r,a,h=e.cache,l=this.corner.clone(),c=s.adjusted,d=e.options.position.adjust.method.split(" "),p=d[0],u=d[1]||d[0],f={left:k,top:k,x:0,y:0},g={};this.corner.fixed!==W&&(o(p,S,L,O,P),o(u,L,S,F,B),l.string()===h.corner.string()||h.cornerTop===c.top&&h.cornerLeft===c.left||this.update(l,k)),r=this.calculate(l),r.right!==i&&(r.left=-r.right),r.bottom!==i&&(r.top=-r.bottom),r.user=this.offset,(f.left=p===V&&!!c.left)&&n(S,O,P),(f.top=u===V&&!!c.top)&&n(L,F,B),this.element.css(g).toggle(!(f.x&&f.y||l.x===N&&f.y||l.y===N&&f.x)),s.left-=r.left.charAt?r.user:p!==V||f.top||!f.left&&!f.top?r.left+this.border:0,s.top-=r.top.charAt?r.user:u!==V||f.left||!f.left&&!f.top?r.top+this.border:0,h.cornerLeft=c.left,h.cornerTop=c.top,h.corner=l.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),le=R.tip=function(t){return new x(t,t.options.style.tip)},le.initialize="render",le.sanitize=function(t){if(t.style&&"tip"in t.style){var e=t.style.tip;"object"!=typeof e&&(e=t.style.tip={corner:e}),/string|boolean/i.test(typeof e.corner)||(e.corner=W)}},M.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(t){this.size=[t.width,t.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},s.extend(W,T.defaults,{style:{tip:{corner:W,mimic:k,width:6,height:6,border:W,offset:0}}});var Ce,Te,je="qtip-modal",ze="."+je;Te=function(){function t(t){if(s.expr[":"].focusable)return s.expr[":"].focusable;var e,i,o,n=!isNaN(s.attr(t,"tabindex")),r=t.nodeName&&t.nodeName.toLowerCase();return"area"===r?(e=t.parentNode,i=e.name,t.href&&i&&"map"===e.nodeName.toLowerCase()?(o=s("img[usemap=#"+i+"]")[0],!!o&&o.is(":visible")):!1):/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||n:n}function i(t){1>c.length&&t.length?t.not("body").blur():c.first().focus()}function o(t){if(h.is(":visible")){var e,o=s(t.target),a=n.tooltip,l=o.closest(U);e=1>l.length?k:parseInt(l[0].style.zIndex,10)>parseInt(a[0].style.zIndex,10),e||o.closest(U)[0]===a[0]||i(o),r=t.target===c[c.length-1]}}var n,r,a,h,l=this,c={};s.extend(l,{init:function(){return h=l.elem=s("
",{id:"qtip-overlay",html:"
",mousedown:function(){return k}}).hide(),s(e.body).bind("focusin"+ze,o),s(e).bind("keydown"+ze,function(t){n&&n.options.show.modal.escape&&27===t.keyCode&&n.hide(t)}),h.bind("click"+ze,function(t){n&&n.options.show.modal.blur&&n.hide(t)}),l},update:function(e){n=e,c=e.options.show.modal.stealfocus!==k?e.tooltip.find("*").filter(function(){return t(this)}):[]},toggle:function(t,o,r){var c=(s(e.body),t.tooltip),d=t.options.show.modal,p=d.effect,u=o?"show":"hide",f=h.is(":visible"),g=s(ze).filter(":visible:not(:animated)").not(c);return l.update(t),o&&d.stealfocus!==k&&i(s(":focus")),h.toggleClass("blurs",d.blur),o&&h.appendTo(e.body),h.is(":animated")&&f===o&&a!==k||!o&&g.length?l:(h.stop(W,k),s.isFunction(p)?p.call(h,o):p===k?h[u]():h.fadeTo(parseInt(r,10)||90,o?1:0,function(){o||h.hide()}),o||h.queue(function(t){h.css({left:"",top:""}),s(ze).length||h.detach(),t()}),a=o,n.destroyed&&(n=E),l)}}),l.init()},Te=new Te,s.extend(q.prototype,{init:function(t){var e=t.tooltip;return this.options.on?(t.elements.overlay=Te.elem,e.addClass(je).css("z-index",T.modal_zindex+s(ze).length),t._bind(e,["tooltipshow","tooltiphide"],function(t,i,o){var n=t.originalEvent;if(t.target===e[0])if(n&&"tooltiphide"===t.type&&/mouse(leave|enter)/.test(n.type)&&s(n.relatedTarget).closest(Te.elem[0]).length)try{t.preventDefault()}catch(r){}else(!n||n&&"tooltipsolo"!==n.type)&&this.toggle(t,"tooltipshow"===t.type,o)},this._ns,this),t._bind(e,"tooltipfocus",function(t,i){if(!t.isDefaultPrevented()&&t.target===e[0]){var o=s(ze),n=T.modal_zindex+o.length,r=parseInt(e[0].style.zIndex,10);Te.elem[0].style.zIndex=n-1,o.each(function(){this.style.zIndex>r&&(this.style.zIndex-=1)}),o.filter("."+Z).qtip("blur",t.originalEvent),e.addClass(Z)[0].style.zIndex=n,Te.update(i);try{t.preventDefault()}catch(a){}}},this._ns,this),t._bind(e,"tooltiphide",function(t){t.target===e[0]&&s(ze).filter(":visible").not(e).last().qtip("focus",t)},this._ns,this),i):this},toggle:function(t,e,s){return t&&t.isDefaultPrevented()?this:(Te.toggle(this.qtip,!!e,s),i)},destroy:function(){this.qtip.tooltip.removeClass(je),this.qtip._unbind(this.qtip.tooltip,this._ns),Te.toggle(this.qtip,k),delete this.qtip.elements.overlay}}),Ce=R.modal=function(t){return new q(t,t.options.show.modal)},Ce.sanitize=function(t){t.show&&("object"!=typeof t.show.modal?t.show.modal={on:!!t.show.modal}:t.show.modal.on===i&&(t.show.modal.on=W))},T.modal_zindex=T.zindex-200,Ce.initialize="render",M.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},s.extend(W,T.defaults,{show:{modal:{on:k,effect:W,blur:W,stealfocus:W,escape:W}}}),R.viewport=function(i,s,o,n,r,a,h){function l(t,e,i,o,n,r,a,h,l){var c=s[n],p=_[t],b=x[t],w=i===V,q=p===n?l:p===r?-l:-l/2,C=b===n?h:b===r?-h:-h/2,T=v[n]+y[n]-(f?0:u[n]),j=T-c,z=c+l-(a===D?g:m)-T,M=q-(_.precedance===t||p===_[e]?C:0)-(b===N?h/2:0);return w?(M=(p===n?1:-1)*q,s[n]+=j>0?j:z>0?-z:0,s[n]=Math.max(-u[n]+y[n],c-M,Math.min(Math.max(-u[n]+y[n]+(a===D?g:m),c+M),s[n],"center"===p?c-q:1e9))):(o*=i===$?2:0,j>0&&(p!==n||z>0)?(s[n]-=M+o,d.invert(t,n)):z>0&&(p!==r||j>0)&&(s[n]-=(p===N?-M:M)+o,d.invert(t,r)),v>s[n]&&-s[n]>z&&(s[n]=c,d=_.clone())),s[n]-c}var c,d,p,u,f,g,m,v,y,b=o.target,w=i.elements.tooltip,_=o.my,x=o.at,q=o.adjust,C=q.method.split(" "),T=C[0],j=C[1]||C[0],z=o.viewport,M=o.container,I=i.cache,W={left:0,top:0};return z.jquery&&b[0]!==t&&b[0]!==e.body&&"none"!==q.method?(u=M.offset()||W,f="static"===M.css("position"),c="fixed"===w.css("position"),g=z[0]===t?z.width():z.outerWidth(k),m=z[0]===t?z.height():z.outerHeight(k),v={left:c?0:z.scrollLeft(),top:c?0:z.scrollTop()},y=z.offset()||W,("shift"!==T||"shift"!==j)&&(d=_.clone()),W={left:"none"!==T?l(S,L,T,q.x,O,P,D,n,a):0,top:"none"!==j?l(L,S,j,q.y,F,B,A,r,h):0},d&&I.lastClass!==(p=X+"-pos-"+d.abbrev())&&w.removeClass(i.cache.lastClass).addClass(i.cache.lastClass=p),W):W},R.polys={polygon:function(t,e){var i,s,o,n={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:k},r=0,a=[],h=1,l=1,c=0,d=0;for(r=t.length;r--;)i=[parseInt(t[--r],10),parseInt(t[r+1],10)],i[0]>n.position.right&&(n.position.right=i[0]),i[0]n.position.bottom&&(n.position.bottom=i[1]),i[1]0&&o>0&&h>0&&l>0;)for(s=Math.floor(s/2),o=Math.floor(o/2),e.x===O?h=s:e.x===P?h=n.width-s:h+=Math.floor(s/2),e.y===F?l=o:e.y===B?l=n.height-o:l+=Math.floor(o/2),r=a.length;r--&&!(2>a.length);)c=a[r][0]-n.position.left,d=a[r][1]-n.position.top,(e.x===O&&c>=h||e.x===P&&h>=c||e.x===N&&(h>c||c>n.width-h)||e.y===F&&d>=l||e.y===B&&l>=d||e.y===N&&(l>d||d>n.height-l))&&a.splice(r,1);n.position={left:a[0][0],top:a[0][1]}}return n},rect:function(t,e,i,s){return{width:Math.abs(i-t),height:Math.abs(s-e),position:{left:Math.min(t,i),top:Math.min(e,s)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(t,e,i,s,o){var n=R.polys._angles[o.abbrev()],r=0===n?0:i*Math.cos(n*Math.PI),a=s*Math.sin(n*Math.PI);return{width:2*i-Math.abs(r),height:2*s-Math.abs(a),position:{left:t+r,top:e+a},adjustable:k}},circle:function(t,e,i,s){return R.polys.ellipse(t,e,i,i,s)}},R.svg=function(t,i,o){for(var n,r,a,h,l,c,d,p,u,f=(s(e),i[0]),g=s(f.ownerSVGElement),m=f.ownerDocument,v=(parseInt(i.css("stroke-width"),10)||0)/2,y=!0;!f.getBBox;)f=f.parentNode;if(!f.getBBox||!f.parentNode)return k;switch(f.nodeName){case"ellipse":case"circle":p=R.polys.ellipse(f.cx.baseVal.value,f.cy.baseVal.value,(f.rx||f.r).baseVal.value+v,(f.ry||f.r).baseVal.value+v,o);break;case"line":case"polygon":case"polyline":for(d=f.points||[{x:f.x1.baseVal.value,y:f.y1.baseVal.value},{x:f.x2.baseVal.value,y:f.y2.baseVal.value}],p=[],c=-1,h=d.numberOfItems||d.length;h>++c;)l=d.getItem?d.getItem(c):d[c],p.push.apply(p,[l.x,l.y]);p=R.polys.polygon(p,o);break;default:p=f.getBoundingClientRect(),p={width:p.width,height:p.height,position:{left:p.left,top:p.top}},y=!1}if(u=p.position,g=g[0],y&&g.createSVGPoint&&(r=f.getScreenCTM(),d=g.createSVGPoint(),d.x=u.left,d.y=u.top,a=d.matrixTransform(r),u.left=a.x,u.top=a.y),m!==e){var n=s((m.defaultView||m.parentWindow).frameElement).offset();n&&(u.left+=n.left,u.top+=n.top)}return m=s(m),u.left+=m.scrollLeft(),u.top+=m.scrollTop(),p},R.imagemap=function(t,e,i){e.jquery||(e=s(e));var o,n,r,a,h,l=e.attr("shape").toLowerCase().replace("poly","polygon"),c=s('img[usemap="#'+e.parent("map").attr("name")+'"]'),d=s.trim(e.attr("coords")),p=d.replace(/,$/,"").split(",");if(!c.length)return k;if("polygon"===l)a=R.polys.polygon(p,i);else{if(!R.polys[l])return k;for(r=-1,h=p.length,n=[];h>++r;)n.push(parseInt(p[r],10));a=R.polys[l].apply(this,n.concat(i))}return o=c.offset(),o.left+=Math.ceil((c.outerWidth(k)-c.width())/2),o.top+=Math.ceil((c.outerHeight(k)-c.height())/2),a.position.left+=o.left,a.position.top+=o.top,a};var Me,Ie='';s.extend(C.prototype,{_scroll:function(){var e=this.qtip.elements.overlay;e&&(e[0].style.top=s(t).scrollTop()+"px")},init:function(i){var o=i.tooltip;1>s("select, object").length&&(this.bgiframe=i.elements.bgiframe=s(Ie).appendTo(o),i._bind(o,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=s("
",{id:X+"-rcontainer"}).appendTo(e.body),i.elements.overlay&&i.elements.overlay.addClass("qtipmodal-ie6fix")&&(i._bind(t,["scroll","resize"],this._scroll,this._ns,this),i._bind(o,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var t,e,i=this.qtip.tooltip,s={height:i.outerHeight(k),width:i.outerWidth(k)},o=this.qtip.plugins.tip,n=this.qtip.elements.tip;e=parseInt(i.css("borderLeftWidth"),10)||0,e={left:-e,top:-e},o&&n&&(t="x"===o.corner.precedance?[D,O]:[A,F],e[t[1]]-=n[t[0]]()),this.bgiframe.css(e).css(s)},redraw:function(){if(1>this.qtip.rendered||this.drawing)return this;var t,e,i,s,o=this.qtip.tooltip,n=this.qtip.options.style,r=this.qtip.options.position.container;return this.qtip.drawing=1,n.height&&o.css(A,n.height),n.width?o.css(D,n.width):(o.css(D,"").appendTo(this.redrawContainer),e=o.width(),1>e%2&&(e+=1),i=o.css("maxWidth")||"",s=o.css("minWidth")||"",t=(i+s).indexOf("%")>-1?r.width()/100:0,i=(i.indexOf("%")>-1?t:1)*parseInt(i,10)||e,s=(s.indexOf("%")>-1?t:1)*parseInt(s,10)||0,e=i+s?Math.min(Math.max(e,s),i):e,o.css(D,Math.round(e)).appendTo(r)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([t,this.qtip.tooltip],this._ns)}}),Me=R.ie6=function(t){return 6===oe.ie?new C(t):k},Me.initialize="render",M.ie6={"^content|style$":function(){this.redraw()}}})})(window,document); //@ sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.map \ No newline at end of file diff --git a/assets/vendor/qtip2/jquery.qtip.min.map b/assets/vendor/qtip2/jquery.qtip.min.map new file mode 100644 index 0000000..8f7285d --- /dev/null +++ b/assets/vendor/qtip2/jquery.qtip.min.map @@ -0,0 +1 @@ +{"version":3,"file":"dist/jquery.qtip.min.js","sources":["dist/jquery.qtip.js"],"names":["window","document","undefined","factory","define","amd","jQuery","fn","qtip","$","QTip","target","options","id","attr","this","tooltip","NULL","elements","_id","NAMESPACE","timers","img","plugins","cache","event","disabled","FALSE","onTooltip","lastClass","rendered","destroyed","waiting","hiddenDuringWait","positioning","triggering","invalidOpt","a","type","invalidContent","c","isFunction","length","jquery","then","sanitizeOptions","opts","content","text","ajax","once","metadata","done","api","loading","deferred","extend","context","success","error","set","xhr","status","title","button","position","my","at","show","TRUE","ready","hide","style","classes","each","PLUGINS","sanitize","convertNotation","notation","obj","i","option","levels","split","pop","setCallback","args","category","rule","match","checks","RegExp","exec","push","apply","createWidgetClass","cls","WIDGET","concat","join","cloneEvent","pageX","pageY","relatedTarget","scrollX","pageXOffset","body","scrollLeft","documentElement","scrollY","pageYOffset","scrollTop","delay","callback","duration","setTimeout","proxy","call","showMethod","hasClass","CLASS_DISABLED","clearTimeout","toggle","hideMethod","ontoTooltip","closest","SELECTOR","ontoTarget","fixed","test","preventDefault","stopImmediatePropagation","e","inactiveMethod","inactive","repositionMethod","offsetWidth","reposition","delegate","selector","events","method","ns","QTIP","ATTR_ID","arguments","init","elem","posOptions","config","docBody","newTarget","metadata5","name","html5","data","parseJSON","defaults","container","solo","viewport","eq","CORNER","overwrite","ATTR_HAS","suppress","removeAttr","oldtitle","one","destroy","camel","s","charAt","toUpperCase","slice","vendorCss","prop","cur","val","ucProp","props","cssPrefixes","cssProps","css","intCss","Math","ceil","parseFloat","Tip","_ns","offset","size","width","height","Modal","Ie6","PROTOTYPE","CHECKS","trackingBound","X","Y","WIDTH","HEIGHT","TOP","LEFT","BOTTOM","RIGHT","CENTER","FLIPINVERT","SHIFT","INACTIVE_EVENTS","CLASS_FIXED","CLASS_DEFAULT","CLASS_FOCUS","CLASS_HOVER","replaceSuffix","BROWSER","ie","v","div","createElement","innerHTML","getElementsByTagName","NaN","iOS","navigator","userAgent","replace","prototype","_when","deferreds","when","render","self","class","abbrev","tracking","adjust","mouse","role","aria-live","aria-atomic","aria-describedby","aria-hidden","toggleClass","appendTo","append","_createTitle","_updateTitle","_createButton","_updateContent","_setWidget","instance","initialize","_unassignEvents","_assignEvents","_trigger","immediate","process","stop","find","remove","end","removeData","_unbind","builtin","^id$","o","prev","nextid","new_id","^prerender","^content.text$","^content.attr$","^content.title$","_removeTitle","^content.button$","_updateButton","^content.title.(text|button)$","^position.(my|at)$","^position.container$","^show.ready$","^style.classes$","p","removeClass","addClass","^style.(width|height)","^style.widget|content.title","^style.def","^events.(render|show|move|hide|focus|blur)$","^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)","get","toLowerCase","result","precedance","string","rmove","rrender","value","previous","nodeType","_update","element","empty","display","visibility","html","_waitForContent","images","imagesLoaded","Deferred","resolve","promise","titlebar","widget","insertBefore","substr","effect","pluginCalculations","tooltipWidth","outerWidth","tooltipHeight","outerHeight","targetWidth","targetHeight","left","top","visible","isScroll","win","doc","ownerDocument","isArray","x","y","distance","origin","innerWidth","clientWidth","innerHeight","imagemap","is","svg","ownerSVGElement","adjustable","adjusted","isNaN","queue","next","opacity","removeAttribute","pos","scroll","scrolled","parentOffset","overflow","quirks","compatMode","parent","getBoundingClientRect","offsetParent","C","Corner","corner","forceY","f","invert","z","center","clone","state","add","has","identicalState","allow","after","contentOptions","animate","sameTarget","search","focus","bind","_storeMouse","not","Event","unbind","blur","autofocus","trigger","n","fadeTo","qtips","curIndex","parseInt","zIndex","newIndex","zindex","filter","disable","enable","isString","close","aria-label","prepend","click","on","def","_bind","targets","suffix","currentTarget","originalEvent","isDefaultPrevented","_bindEvents","showEvents","hideEvents","showTarget","hideTarget","toggleEvents","map","showIndex","inArray","splice","_assignInitialEvents","hoverIntent","trim","onTarget","prerender","containerTarget","viewportTarget","documentTarget","windowTarget","leave","nodeName","indexOf","enabled","isAncestor","parents","inactiveEvents","limit","abs","resize","special","pushStack","grep","newValue","command","returned","makeArray","timeStamp","isPlainObject","keepData","elems","func","old","ui","cleanData","triggerHandler","version","move","hidden","TIP","MARGIN","BORDER","COLOR","BG_COLOR","TRANSPARENT","IMPORTANT","HASCANVAS","getContext","INVALID","PIXEL_RATIO","devicePixelRatio","BACKING_STORE_RATIO","backingStorePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","SCALE","createVML","tag","tip","prependTo","lineJoin","miterLimit","save","stopPropagation","create","_swapDimensions","_resetDimensions","_useTitle","_parseCorner","_parseWidth","side","use","_parseRadius","_invalidColour","compare","_parseColours","borderSide","colorElem","color","_calculateSize","bigHyp","ratio","isCenter","base","pow","round","smallHyp","sqrt","hyp","border","reverse","_calculateTip","scale","width2","height2","tips","br","bl","tr","tl","tc","bc","rc","lc","lt","rt","lb","rb","_drawCoords","coords","beginPath","moveTo","lineTo","closePath","update","bigCoords","translate","newSize","inner","children","curSize","mimic","lineHeight","restore","clearRect","fillStyle","fill","coordsize","antialias","Number","$this","path","fillcolor","filled","stroked","opera","calculate","corners","userOffset","b","max","margin","bottom","right","shiftflip","direction","popposite","opposite","newCorner","shiftonly","xy","shift","horizontal","vertical","cornerTop","cornerLeft","user","^position.my|style.tip.(corner|mimic|border)$","^style.tip.(height|width)$","^content.title|style.(classes|widget)$","MODAL","OVERLAY","MODALCLASS","MODALSELECTOR","focusable","expr","mapName","isTabIndexNotNaN","parentNode","href","focusInputs","blurElems","focusableElems","first","stealFocus","targetOnTop","current","onLast","prevState","mousedown","modal","escape","keyCode","stealfocus","visibleModals","detach","overlay","modal_zindex","oEvent","last","^show.modal.(on|blur)$","elemWidth","elemHeight","otherSide","side1","side2","lengthName","targetLength","elemLength","initialPos","mySide","atSide","isShift","myLength","atLength","sideOffset","viewportScroll","viewportOffset","containerStatic","containerOffset","overflow1","overflow2","viewportWidth","viewportHeight","min","newMy","newClass","methodX","methodY","polys","polygon","baseCoords","newWidth","newHeight","compareX","compareY","realX","realY","floor","rect","ax","ay","bx","by","_angles","ellipse","cx","cy","rx","ry","rxc","cos","PI","rys","sin","circle","r","frameOffset","mtx","transformed","len","points","root","strokeWidth2","complex","getBBox","baseVal","x1","y1","x2","y2","numberOfItems","getItem","createSVGPoint","getScreenCTM","matrixTransform","defaultView","parentWindow","frameElement","area","imageOffset","shape","image","coordsString","coordsArray","IE6","BGIFRAME","_scroll","bgiframe","adjustBGIFrame","redrawContainer","redraw","tipAdjust","dimensions","plugin","drawing","perc","ie6","^content|style$"],"mappings":"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"} \ No newline at end of file diff --git a/assets/vendor/selectivizr/.bower.json b/assets/vendor/selectivizr/.bower.json new file mode 100644 index 0000000..897619c --- /dev/null +++ b/assets/vendor/selectivizr/.bower.json @@ -0,0 +1,14 @@ +{ + "name": "selectivizr", + "homepage": "https://github.com/keithclark/selectivizr", + "version": "1.0.2", + "_release": "1.0.2", + "_resolution": { + "type": "version", + "tag": "1.0.2", + "commit": "994f65755ac4e7ead1d14534f6eeb90cda21e909" + }, + "_source": "git://github.com/keithclark/selectivizr.git", + "_target": "~1.0.2", + "_originalSource": "selectivizr" +} \ No newline at end of file diff --git a/assets/vendor/selectivizr/README.markdown b/assets/vendor/selectivizr/README.markdown new file mode 100644 index 0000000..cec432c --- /dev/null +++ b/assets/vendor/selectivizr/README.markdown @@ -0,0 +1,29 @@ +Selectivizr +----------- + +**CSS3 selectors for IE** + + +_selectivizr_ is a JavaScript utility that emulates CSS3 pseudo-classes +and attribute selectors in Internet Explorer 6-8. Simply include the +script in your pages and selectivizr will do the rest. + +To use the library, you'll need to include one of the supported libraries: + + * jQuery (1.3+/1.4+) + * Dojo (1.5.0+) + * Prototype (1.6.1+) + * Yahoo UI Library (2.8.0+) + * DOMAssistant (2.8.0+) + * MooTools (1.3+) + * NWMatcher (1.2.3+) + +Then add the following conditional comment: + + + +This adds the `selectivizr.js` and fallback CSS file to IE6-8 while hiding +for other browsers. \ No newline at end of file diff --git a/assets/vendor/selectivizr/changelog.txt b/assets/vendor/selectivizr/changelog.txt new file mode 100644 index 0000000..7ee8dd5 --- /dev/null +++ b/assets/vendor/selectivizr/changelog.txt @@ -0,0 +1,112 @@ +selectivizr - change log +======================== + + +v1.0.2 +------ + + * BUG - fixed Google Closure Compiler issue that added 2 global vars - sorry about that! + * NEW - removed the eval() from determineSelectorMethod() + * BUG - selectivizr incorrectly detects Yahoo! profiler as YUI selector library + * NEW - selectivizr can now be "lazy-loaded" + * NEW - switched DOMReady back to Diego Perini's (new) ContentLoaded. + * BUG - asset urls using the 'data:' scheme (i.e. background-image) resolved to a path (Chris Korhonen) + * BUG - resolveUrl() failed if the context url contained a hash followed by a '/' (Zee Agency) + * BUG - IE version detection wasn't IE>9 friendly (reported by Paul Irish) + + + +v1.0.1 +------ + + * BUG - @import urls not wrapped with "url()" are now correctly processed + * BUG - relative urls are now correctly resolved + * BUG - patched [*=""] selector in IE8 (returns elements it shouldn't) + + + +v1.0.0 +------ + +ie-css3.js is now stable enough to be released with out a beta suffix - say hello to selectivizr v1! + + + +v0.9.7b +------- + + * NEW - Complete rewrite of the stylesheet parser. + * NEW - :not() pseudo support. + * NEW - Attribute selector support in IE6 [att] [att="x"] [att~="x"] [att^="x"] [att$="x"] [att*="x"] and [att|="x"] + * NEW - Fixes native empty attribute selector support in IE7 [att^=""] [att$=""] [att*=""] and IE8 [att^=""] [att$=""] + * BUG - :enabled and :disabled elements now change state properly. (Uses polling) + * BUG - Emulation no longer fails in IE6 when more than 2 classes are applied to an element + + + +v0.9.6b +------- + + * BUG - IE8 :target pseudo-class emulation fails with jQuery (but not with Sizzle) (reported by Tom Law) + * BUG - ie-css3.js won't run if page is in an iframe (switched DOM Load detection to Dean Edwards defered script method) + * BUG - A selector that begins with a attribute selector incorrected parsed (reported by Stephanie Sullivan) + + + +v0.9.5b +------- + + * NEW - Reworked DOM Load detection (using a cut down version of Diego Perini's ContentLoaded technique) + * NEW - Enabled Dojo detection (lowest priority) - Warning: some of Dojo's CSS3 selectors seem very buggy! + * BUG - Fixed mixed content warning when using over SSL + * NEW - :target pseudo for IE8 when running standards mode. Sorry, no support for pre-IE8 or quirks mode + * NWMatcher now higher priority that DOMAssistant when auto-detecting best library + * Internal rewrites / refactoring - more features, but a smaller file :o) + + + +v0.9.4b +------- + + * NEW - added support for :hover (for IE 5.5 - 6) and :focus (for IE 5.5 - 7) + * NEW - added support for ::first-child and ::first-letter (suggested by Philip Renich) + * BUG - style sheets without href values shouldn't get parsed (reported by Jeff Smith) + * BUG - remotely hosted style sheets are now ignored when used in @imports + * BUG - @import rules now honor the href if its specified (reported by Andrea and Tim) + * BUG - various minor bug fixes + + + +v0.9.3b +------- + + * No longer dependent on DOMAssistant. + * Auto-detects best suited selector library from these: + - DOMAssistant (recommended) + - NWmatcher + - Prototype + - YUI 2 + - MooTools + - Sizzle / jQuery + * NEW - pseudo selectors :enabled, :disabled, :checked and :root. + * BUG - Fixed IE 5.5/6 issue with illegal character in replacement class name. + * BUG - Fixed extra spaces issue with modified class names. + * BUG - Stopped triggering a DOM redraw when there are no className changes + * Dynamic building of CSS_PSEUDOS regexp based on IE version so we only patch what's needed. + * XHR compatability test (reported from twitter.com/kangax). + * Reworked DOMLoaded detection. + + + +v0.9.2b +------- + + * CSS parser updated to crawl @import statements (suggested by Andy "Malarkey" Clarke). + * @font rules support. + + + +v0.9.1b +------- + + * Public beta release. \ No newline at end of file diff --git a/assets/vendor/selectivizr/selectivizr.js b/assets/vendor/selectivizr/selectivizr.js new file mode 100644 index 0000000..98b8306 --- /dev/null +++ b/assets/vendor/selectivizr/selectivizr.js @@ -0,0 +1,561 @@ +/* +selectivizr v1.0.2b - (c) Keith Clark, freely distributable under the terms +of the MIT license. + +selectivizr.com +*/ +/* + +Notes about this source +----------------------- + + * The #DEBUG_START and #DEBUG_END comments are used to mark blocks of code + that will be removed prior to building a final release version (using a + pre-compression script) + + +References: +----------- + + * CSS Syntax : http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#style + * Selectors : http://www.w3.org/TR/css3-selectors/#selectors + * IE Compatability : http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx + * W3C Selector Tests : http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/ + +*/ + +(function(win) { + + // If browser isn't IE, then stop execution! This handles the script + // being loaded by non IE browsers because the developer didn't use + // conditional comments. + if (/*@cc_on!@*/true) return; + + // =========================== Init Objects ============================ + + var doc = document; + var root = doc.documentElement; + var xhr = getXHRObject(); + var ieVersion = /MSIE (\d+)/.exec(navigator.userAgent)[1]; + + // If were not in standards mode, IE is too old / new or we can't create + // an XMLHttpRequest object then we should get out now. + if (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) { + return; + } + + + // ========================= Common Objects ============================ + + // Compatiable selector engines in order of CSS3 support. Note: '*' is + // a placholder for the object key name. (basically, crude compression) + var selectorEngines = { + "NW" : "*.Dom.select", + "MooTools" : "$$", + "DOMAssistant" : "*.$", + "Prototype" : "$$", + "YAHOO" : "*.util.Selector.query", + "Sizzle" : "*", + "jQuery" : "*", + "dojo" : "*.query" + }; + + var selectorMethod; + var enabledWatchers = []; // array of :enabled/:disabled elements to poll + var ie6PatchID = 0; // used to solve ie6's multiple class bug + var patchIE6MultipleClasses = true; // if true adds class bloat to ie6 + var namespace = "slvzr"; + + // Stylesheet parsing regexp's + var RE_COMMENT = /(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g; + var RE_IMPORT = /@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g; + var RE_ASSET_URL = /\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g; + var RE_PSEUDO_STRUCTURAL = /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/; + var RE_PSEUDO_ELEMENTS = /:(:first-(?:line|letter))/g; + var RE_SELECTOR_GROUP = /(^|})\s*([^\{]*?[\[:][^{]+)/g; + var RE_SELECTOR_PARSE = /([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g; + var RE_LIBRARY_INCOMPATIBLE_PSEUDOS = /(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g; + var RE_PATCH_CLASS_NAME_REPLACE = /[^\w-]/g; + + // HTML UI element regexp's + var RE_INPUT_ELEMENTS = /^(INPUT|SELECT|TEXTAREA|BUTTON)$/; + var RE_INPUT_CHECKABLE_TYPES = /^(checkbox|radio)$/; + + // Broken attribute selector implementations (IE7/8 native [^=""], [$=""] and [*=""]) + var BROKEN_ATTR_IMPLEMENTATIONS = ieVersion>6 ? /[\$\^*]=(['"])\1/ : null; + + // Whitespace normalization regexp's + var RE_TIDY_TRAILING_WHITESPACE = /([(\[+~])\s+/g; + var RE_TIDY_LEADING_WHITESPACE = /\s+([)\]+~])/g; + var RE_TIDY_CONSECUTIVE_WHITESPACE = /\s+/g; + var RE_TIDY_TRIM_WHITESPACE = /^\s*((?:[\S\s]*\S)?)\s*$/; + + // String constants + var EMPTY_STRING = ""; + var SPACE_STRING = " "; + var PLACEHOLDER_STRING = "$1"; + + // =========================== Patching ================================ + + // --[ patchStyleSheet() ]---------------------------------------------- + // Scans the passed cssText for selectors that require emulation and + // creates one or more patches for each matched selector. + function patchStyleSheet( cssText ) { + return cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING). + replace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) { + var selectorGroups = selectorText.split(","); + for (var c = 0, cs = selectorGroups.length; c < cs; c++) { + var selector = normalizeSelectorWhitespace(selectorGroups[c]) + SPACE_STRING; + var patches = []; + selectorGroups[c] = selector.replace(RE_SELECTOR_PARSE, + function(match, combinator, pseudo, attribute, index) { + if (combinator) { + if (patches.length>0) { + applyPatches( selector.substring(0, index), patches ); + patches = []; + } + return combinator; + } + else { + var patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute ); + if (patch) { + patches.push(patch); + return "." + patch.className; + } + return match; + } + } + ); + } + return prefix + selectorGroups.join(","); + }); + }; + + // --[ patchAttribute() ]----------------------------------------------- + // returns a patch for an attribute selector. + function patchAttribute( attr ) { + return (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ? + { className: createClassName(attr), applyClass: true } : null; + }; + + // --[ patchPseudoClass() ]--------------------------------------------- + // returns a patch for a pseudo-class + function patchPseudoClass( pseudo ) { + + var applyClass = true; + var className = createClassName(pseudo.slice(1)); + var isNegated = pseudo.substring(0, 5) == ":not("; + var activateEventName; + var deactivateEventName; + + // if negated, remove :not() + if (isNegated) { + pseudo = pseudo.slice(5, -1); + } + + // bracket contents are irrelevant - remove them + var bracketIndex = pseudo.indexOf("(") + if (bracketIndex > -1) { + pseudo = pseudo.substring(0, bracketIndex); + } + + // check we're still dealing with a pseudo-class + if (pseudo.charAt(0) == ":") { + switch (pseudo.slice(1)) { + + case "root": + applyClass = function(e) { + return isNegated ? e != root : e == root; + } + break; + + case "target": + // :target is only supported in IE8 + if (ieVersion == 8) { + applyClass = function(e) { + var handler = function() { + var hash = location.hash; + var hashID = hash.slice(1); + return isNegated ? (hash == EMPTY_STRING || e.id != hashID) : (hash != EMPTY_STRING && e.id == hashID); + }; + addEvent( win, "hashchange", function() { + toggleElementClass(e, className, handler()); + }) + return handler(); + } + break; + } + return false; + + case "checked": + applyClass = function(e) { + if (RE_INPUT_CHECKABLE_TYPES.test(e.type)) { + addEvent( e, "propertychange", function() { + if (event.propertyName == "checked") { + toggleElementClass( e, className, e.checked !== isNegated ); + } + }) + } + return e.checked !== isNegated; + } + break; + + case "disabled": + isNegated = !isNegated; + + case "enabled": + applyClass = function(e) { + if (RE_INPUT_ELEMENTS.test(e.tagName)) { + addEvent( e, "propertychange", function() { + if (event.propertyName == "$disabled") { + toggleElementClass( e, className, e.$disabled === isNegated ); + } + }); + enabledWatchers.push(e); + e.$disabled = e.disabled; + return e.disabled === isNegated; + } + return pseudo == ":enabled" ? isNegated : !isNegated; + } + break; + + case "focus": + activateEventName = "focus"; + deactivateEventName = "blur"; + + case "hover": + if (!activateEventName) { + activateEventName = "mouseenter"; + deactivateEventName = "mouseleave"; + } + applyClass = function(e) { + addEvent( e, isNegated ? deactivateEventName : activateEventName, function() { + toggleElementClass( e, className, true ); + }) + addEvent( e, isNegated ? activateEventName : deactivateEventName, function() { + toggleElementClass( e, className, false ); + }) + return isNegated; + } + break; + + // everything else + default: + // If we don't support this pseudo-class don't create + // a patch for it + if (!RE_PSEUDO_STRUCTURAL.test(pseudo)) { + return false; + } + break; + } + } + return { className: className, applyClass: applyClass }; + }; + + // --[ applyPatches() ]------------------------------------------------- + // uses the passed selector text to find DOM nodes and patch them + function applyPatches(selectorText, patches) { + var elms; + + // Although some selector libraries can find :checked :enabled etc. + // we need to find all elements that could have that state because + // it can be changed by the user. + var domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING); + + // If the dom selector equates to an empty string or ends with + // whitespace then we need to append a universal selector (*) to it. + if (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length - 1) == SPACE_STRING) { + domSelectorText += "*"; + } + + // Ensure we catch errors from the selector library + try { + elms = selectorMethod( domSelectorText ); + } catch (ex) { + // #DEBUG_START + log( "Selector '" + selectorText + "' threw exception '" + ex + "'" ); + // #DEBUG_END + } + + + if (elms) { + for (var d = 0, dl = elms.length; d < dl; d++) { + var elm = elms[d]; + var cssClasses = elm.className; + for (var f = 0, fl = patches.length; f < fl; f++) { + var patch = patches[f]; + + if (!hasPatch(elm, patch)) { + if (patch.applyClass && (patch.applyClass === true || patch.applyClass(elm) === true)) { + cssClasses = toggleClass(cssClasses, patch.className, true ); + } + } + } + elm.className = cssClasses; + } + } + }; + + // --[ hasPatch() ]----------------------------------------------------- + // checks for the exsistence of a patch on an element + function hasPatch( elm, patch ) { + return new RegExp("(^|\\s)" + patch.className + "(\\s|$)").test(elm.className); + }; + + + // =========================== Utility ================================= + + function createClassName( className ) { + return namespace + "-" + ((ieVersion == 6 && patchIE6MultipleClasses) ? + ie6PatchID++ + : + className.replace(RE_PATCH_CLASS_NAME_REPLACE, function(a) { return a.charCodeAt(0) })); + }; + + // --[ log() ]---------------------------------------------------------- + // #DEBUG_START + function log( message ) { + if (win.console) { + win.console.log(message); + } + }; + // #DEBUG_END + + // --[ trim() ]--------------------------------------------------------- + // removes leading, trailing whitespace from a string + function trim( text ) { + return text.replace(RE_TIDY_TRIM_WHITESPACE, PLACEHOLDER_STRING); + }; + + // --[ normalizeWhitespace() ]------------------------------------------ + // removes leading, trailing and consecutive whitespace from a string + function normalizeWhitespace( text ) { + return trim(text).replace(RE_TIDY_CONSECUTIVE_WHITESPACE, SPACE_STRING); + }; + + // --[ normalizeSelectorWhitespace() ]---------------------------------- + // tidies whitespace around selector brackets and combinators + function normalizeSelectorWhitespace( selectorText ) { + return normalizeWhitespace(selectorText. + replace(RE_TIDY_TRAILING_WHITESPACE, PLACEHOLDER_STRING). + replace(RE_TIDY_LEADING_WHITESPACE, PLACEHOLDER_STRING) + ); + }; + + // --[ toggleElementClass() ]------------------------------------------- + // toggles a single className on an element + function toggleElementClass( elm, className, on ) { + var oldClassName = elm.className; + var newClassName = toggleClass(oldClassName, className, on); + if (newClassName != oldClassName) { + elm.className = newClassName; + elm.parentNode.className += EMPTY_STRING; + } + }; + + // --[ toggleClass() ]-------------------------------------------------- + // adds / removes a className from a string of classNames. Used to + // manage multiple class changes without forcing a DOM redraw + function toggleClass( classList, className, on ) { + var re = RegExp("(^|\\s)" + className + "(\\s|$)"); + var classExists = re.test(classList); + if (on) { + return classExists ? classList : classList + SPACE_STRING + className; + } else { + return classExists ? trim(classList.replace(re, PLACEHOLDER_STRING)) : classList; + } + }; + + // --[ addEvent() ]----------------------------------------------------- + function addEvent(elm, eventName, eventHandler) { + elm.attachEvent("on" + eventName, eventHandler); + }; + + // --[ getXHRObject() ]------------------------------------------------- + function getXHRObject() + { + if (win.XMLHttpRequest) { + return new XMLHttpRequest; + } + try { + return new ActiveXObject('Microsoft.XMLHTTP'); + } catch(e) { + return null; + } + }; + + // --[ loadStyleSheet() ]----------------------------------------------- + function loadStyleSheet( url ) { + xhr.open("GET", url, false); + xhr.send(); + return (xhr.status==200) ? xhr.responseText : EMPTY_STRING; + }; + + // --[ resolveUrl() ]--------------------------------------------------- + // Converts a URL fragment to a fully qualified URL using the specified + // context URL. Returns null if same-origin policy is broken + function resolveUrl( url, contextUrl ) { + + function getProtocolAndHost( url ) { + return url.substring(0, url.indexOf("/", 8)); + }; + + // absolute path + if (/^https?:\/\//i.test(url)) { + return getProtocolAndHost(contextUrl) == getProtocolAndHost(url) ? url : null; + } + + // root-relative path + if (url.charAt(0)=="/") { + return getProtocolAndHost(contextUrl) + url; + } + + // relative path + var contextUrlPath = contextUrl.split(/[?#]/)[0]; // ignore query string in the contextUrl + if (url.charAt(0) != "?" && contextUrlPath.charAt(contextUrlPath.length - 1) != "/") { + contextUrlPath = contextUrlPath.substring(0, contextUrlPath.lastIndexOf("/") + 1); + } + + return contextUrlPath + url; + }; + + // --[ parseStyleSheet() ]---------------------------------------------- + // Downloads the stylesheet specified by the URL, removes it's comments + // and recursivly replaces @import rules with their contents, ultimately + // returning the full cssText. + function parseStyleSheet( url ) { + if (url) { + return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING). + replace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2 ) { + return parseStyleSheet(resolveUrl(importUrl || importUrl2, url)); + }). + replace(RE_ASSET_URL, function( match, quoteChar, assetUrl ) { + quoteChar = quoteChar || EMPTY_STRING; + return " url(" + quoteChar + resolveUrl(assetUrl, url) + quoteChar + ") "; + }); + } + return EMPTY_STRING; + }; + + // --[ init() ]--------------------------------------------------------- + function init() { + // honour the tag + var url, stylesheet; + var baseTags = doc.getElementsByTagName("BASE"); + var baseUrl = (baseTags.length > 0) ? baseTags[0].href : doc.location.href; + + /* Note: This code prevents IE from freezing / crashing when using + @font-face .eot files but it modifies the tag and could + trigger the IE stylesheet limit. It will also cause FOUC issues. + If you choose to use it, make sure you comment out the for loop + directly below this comment. + + var head = doc.getElementsByTagName("head")[0]; + for (var c=doc.styleSheets.length-1; c>=0; c--) { + stylesheet = doc.styleSheets[c] + head.appendChild(doc.createElement("style")) + var patchedStylesheet = doc.styleSheets[doc.styleSheets.length-1]; + + if (stylesheet.href != EMPTY_STRING) { + url = resolveUrl(stylesheet.href, baseUrl) + if (url) { + patchedStylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) ) + stylesheet.disabled = true + setTimeout( function () { + stylesheet.owningElement.parentNode.removeChild(stylesheet.owningElement) + }) + } + } + } + */ + + for (var c = 0; c < doc.styleSheets.length; c++) { + stylesheet = doc.styleSheets[c] + if (stylesheet.href != EMPTY_STRING) { + url = resolveUrl(stylesheet.href, baseUrl); + if (url) { + stylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) ); + } + } + } + + // :enabled & :disabled polling script (since we can't hook + // onpropertychange event when an element is disabled) + if (enabledWatchers.length > 0) { + setInterval( function() { + for (var c = 0, cl = enabledWatchers.length; c < cl; c++) { + var e = enabledWatchers[c]; + if (e.disabled !== e.$disabled) { + if (e.disabled) { + e.disabled = false; + e.$disabled = true; + e.disabled = true; + } + else { + e.$disabled = e.disabled; + } + } + } + },250) + } + }; + + // Bind selectivizr to the ContentLoaded event. + ContentLoaded(win, function() { + // Determine the "best fit" selector engine + for (var engine in selectorEngines) { + var members, member, context = win; + if (win[engine]) { + members = selectorEngines[engine].replace("*", engine).split("."); + while ((member = members.shift()) && (context = context[member])) {} + if (typeof context == "function") { + selectorMethod = context; + init(); + return; + } + } + } + }); + + + /*! + * ContentLoaded.js by Diego Perini, modified for IE<9 only (to save space) + * + * Author: Diego Perini (diego.perini at gmail.com) + * Summary: cross-browser wrapper for DOMContentLoaded + * Updated: 20101020 + * License: MIT + * Version: 1.2 + * + * URL: + * http://javascript.nwbox.com/ContentLoaded/ + * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE + * + */ + + // @w window reference + // @f function reference + function ContentLoaded(win, fn) { + + var done = false, top = true, + init = function(e) { + if (e.type == "readystatechange" && doc.readyState != "complete") return; + (e.type == "load" ? win : doc).detachEvent("on" + e.type, init, false); + if (!done && (done = true)) fn.call(win, e.type || e); + }, + poll = function() { + try { root.doScroll("left"); } catch(e) { setTimeout(poll, 50); return; } + init('poll'); + }; + + if (doc.readyState == "complete") fn.call(win, EMPTY_STRING); + else { + if (doc.createEventObject && root.doScroll) { + try { top = !win.frameElement; } catch(e) { } + if (top) poll(); + } + addEvent(doc,"readystatechange", init); + addEvent(win,"load", init); + } + }; +})(this); \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/.bower.json b/assets/vendor/zeroclipboard/.bower.json new file mode 100644 index 0000000..7cf75f6 --- /dev/null +++ b/assets/vendor/zeroclipboard/.bower.json @@ -0,0 +1,46 @@ +{ + "name": "zeroclipboard", + "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", + "version": "1.3.2", + "main": [ + "./ZeroClipboard.js", + "./ZeroClipboard.swf" + ], + "keywords": [ + "flash", + "clipboard", + "copy", + "cut", + "paste", + "zclip", + "clip", + "clippy" + ], + "license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE", + "authors": [ + { + "name": "Jon Rohan", + "url": "http://jonrohan.me/" + }, + { + "name": "James M. Greene", + "email": "james.m.greene@gmail.com", + "url": "http://jamesgreene.net/" + } + ], + "homepage": "http://zeroclipboard.org/", + "repository": { + "type": "git", + "url": "https://github.com/zeroclipboard/zeroclipboard.git" + }, + "location": "git://github.com/zeroclipboard/zeroclipboard.git", + "_release": "1.3.2", + "_resolution": { + "type": "version", + "tag": "v1.3.2", + "commit": "028ce9abf2f2960fd79e0fae13b3446924be0e8c" + }, + "_source": "git://github.com/zeroclipboard/zeroclipboard.git", + "_target": "~1.3.2", + "_originalSource": "zeroclipboard" +} \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/.gitignore b/assets/vendor/zeroclipboard/.gitignore new file mode 100644 index 0000000..b5b7a44 --- /dev/null +++ b/assets/vendor/zeroclipboard/.gitignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log +bin/* diff --git a/assets/vendor/zeroclipboard/.jshintrc b/assets/vendor/zeroclipboard/.jshintrc new file mode 100644 index 0000000..86358c6 --- /dev/null +++ b/assets/vendor/zeroclipboard/.jshintrc @@ -0,0 +1,13 @@ +{ + "boss": true, + "browser": true, + "camelcase": true, + "eqeqeq": true, + "eqnull": true, + "es3": true, + "es5": false, + "indent": 2, + "multistr": true, + "strict": false, + "trailing": true +} \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/.npmignore b/assets/vendor/zeroclipboard/.npmignore new file mode 100644 index 0000000..6ea8c7b --- /dev/null +++ b/assets/vendor/zeroclipboard/.npmignore @@ -0,0 +1,3 @@ +docs/ +test/ +.DS_Store \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/.travis.yml b/assets/vendor/zeroclipboard/.travis.yml new file mode 100644 index 0000000..6ef04eb --- /dev/null +++ b/assets/vendor/zeroclipboard/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.10" +before_script: + - npm install -g grunt-cli diff --git a/assets/vendor/zeroclipboard/CONTRIBUTING.md b/assets/vendor/zeroclipboard/CONTRIBUTING.md new file mode 100644 index 0000000..5fa38f8 --- /dev/null +++ b/assets/vendor/zeroclipboard/CONTRIBUTING.md @@ -0,0 +1,25 @@ +Contributing +============== + +If you find an issue, submitting a pull request is always better than a bug report! Please fork and submit your code fixes. + +If you want to build some new features, we have a [roadmap.md](docs/roadmap.md) of features we want. You can add features you want there, or just code the feature and send a pull request. + +### Cloning + + $ git clone https://github.com/zeroclipboard/zeroclipboard.git + $ cd zeroclipboard/ + $ npm install -g grunt-cli + $ npm install + $ grunt + + +### Developing + + $ npm install + $ grunt + + +### Testing + + $ grunt test diff --git a/assets/vendor/zeroclipboard/Gruntfile.js b/assets/vendor/zeroclipboard/Gruntfile.js new file mode 100644 index 0000000..aacf696 --- /dev/null +++ b/assets/vendor/zeroclipboard/Gruntfile.js @@ -0,0 +1,176 @@ +/*jshint -W106 */ +/*jshint node:true */ +module.exports = function(grunt) { + 'use strict'; + + // Metadata + var pkg = grunt.file.readJSON('package.json'); + + // Shared configuration + var localPort = 7320; // "ZERO" + + // Project configuration. + grunt.initConfig({ + // Task configuration + jshint: { + options: { + jshintrc: '.jshintrc' + }, + Gruntfile: ['Gruntfile.js'], + js: ['src/javascript/ZeroClipboard/**/*.js'], + test: { + options: { + jshintrc: 'test/.jshintrc' + }, + src: ['test/*.js'] + } + }, + clean: { + src: ['ZeroClipboard.*'], + meta: ['bower.json', 'composer.json', 'LICENSE'] + }, + concat: { + options: { + stripBanners: true, + process: { + data: pkg + } + }, + js: { + src: [ + 'src/meta/source-banner.tmpl', + 'src/javascript/start.js', + 'src/javascript/ZeroClipboard/state.js', + 'src/javascript/ZeroClipboard/utils.js', + 'src/javascript/ZeroClipboard/flash.js', + 'src/javascript/ZeroClipboard/client.js', + 'src/javascript/ZeroClipboard/core.js', + 'src/javascript/ZeroClipboard/dom.js', + 'src/javascript/ZeroClipboard/event.js', + 'src/javascript/ZeroClipboard/deprecated.js', + 'src/javascript/end.js' + ], + dest: 'ZeroClipboard.js' + } + }, + uglify: { + options: { + preserveComments: 'some', + report: 'min' + }, + js: { + options: { + beautify: { + beautify: true, + // `indent_level` requires jshint -W106 + indent_level: 2 + }, + mangle: false, + compress: false + }, + src: ['ZeroClipboard.js'], + dest: 'ZeroClipboard.js' + }, + minjs: { + src: ['ZeroClipboard.js'], + dest: 'ZeroClipboard.min.js' + } + }, + mxmlc: { + options: { + rawConfig: '-static-link-runtime-shared-libraries=true' + }, + swf: { + files: { + 'ZeroClipboard.swf': ['src/flash/ZeroClipboard.as'] + } + } + }, + template: { + options: { + data: pkg + }, + bower: { + files: { + 'bower.json': ['src/meta/bower.json.tmpl'] + } + }, + composer: { + files: { + 'composer.json': ['src/meta/composer.json.tmpl'] + } + }, + LICENSE: { + files: { + 'LICENSE': ['src/meta/LICENSE.tmpl'] + } + } + }, + chmod: { + options: { + mode: '444' + }, + src: ['ZeroClipboard.*'], + meta: ['bower.json', 'composer.json', 'LICENSE'] + }, + connect: { + server: { + options: { + port: localPort + } + } + }, + qunit: { + file: ['test/**/*.js.html'], + http: { + options: { + urls: grunt.file.expand(['test/**/*.js.html']).map(function(testPage) { + return 'http://localhost:' + localPort + '/' + testPage + '?noglobals=true'; + }) + } + } + }, + watch: { + options: { + spawn: false + }, + Gruntfile: { + files: '<%= jshint.Gruntfile %>', + tasks: ['jshint:Gruntfile'] + }, + js: { + files: '<%= jshint.js %>', + tasks: ['jshint:js', 'unittest'] + }, + test: { + files: '<%= jshint.test %>', + tasks: ['jshint:test', 'unittest'] + } + } + }); + + // These plugins provide necessary tasks + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-mxmlc'); + grunt.loadNpmTasks('grunt-template'); + grunt.loadNpmTasks('grunt-chmod'); + grunt.loadNpmTasks('grunt-contrib-connect'); + grunt.loadNpmTasks('grunt-contrib-qunit'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + + // + // Task aliases and chains + // + + grunt.registerTask('unittest', ['connect', 'qunit']); + grunt.registerTask('test', ['jshint', 'clean:src', 'concat', 'mxmlc', 'chmod:src', 'unittest']); + grunt.registerTask('travis', ['test']); + + // Default task + grunt.registerTask('default', ['jshint', 'clean', 'concat', 'uglify', 'mxmlc', 'template', 'chmod', 'unittest']); + +}; diff --git a/assets/vendor/zeroclipboard/LICENSE b/assets/vendor/zeroclipboard/LICENSE new file mode 100644 index 0000000..6909399 --- /dev/null +++ b/assets/vendor/zeroclipboard/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2014 Jon Rohan, James M. Greene + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/assets/vendor/zeroclipboard/README.md b/assets/vendor/zeroclipboard/README.md new file mode 100644 index 0000000..7418418 --- /dev/null +++ b/assets/vendor/zeroclipboard/README.md @@ -0,0 +1,71 @@ +# ZeroClipboard + +The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible [Adobe Flash](http://en.wikipedia.org/wiki/Adobe_Flash) movie and a [JavaScript](http://en.wikipedia.org/wiki/JavaScript) interface. The "Zero" signifies that the library is invisible and the user interface is left entirely up to you. + + +## Simple Example + +``` html + + + + + + + +``` + +``` js +// main.js +var client = new ZeroClipboard( document.getElementById("copy-button"), { + moviePath: "/path/to/ZeroClipboard.swf" +} ); + +client.on( "load", function(client) { + // alert( "movie is loaded" ); + + client.on( "complete", function(client, args) { + // `this` is the element that was clicked + this.style.display = "none"; + alert("Copied text to clipboard: " + args.text ); + } ); +} ); +``` + +See the [instructions](docs/instructions.md) for more advanced options in using the library on your site. + +Here is a working [test page](http://zeroclipboard.org/#demo) where you can try out ZeroClipboard in your browser. + + +## Testing ZeroClipboard Locally + +To test the page [demo page](http://zeroclipboard.org/#demo) locally, clone the [website repo](https://github.com/zeroclipboard/zeroclipboard.org). + + +## Support + +This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie. This is achieved by automatically floating the invisible movie on top of a [DOM](http://en.wikipedia.org/wiki/Document_Object_Model) element of your choice. Standard mouse events are even propagated out to your DOM element, so you can still have rollover and mouse down effects. + +Works in IE7+ and all of the evergreen browsers. + + +## Contributing + +see [CONTRIBUTING.md](CONTRIBUTING.md) + + +## Releases + +Starting with version [1.1.7](https://github.com/zeroclipboard/zeroclipboard/releases/tag/v1.1.7), ZeroClipboard uses [semantic versioning](http://semver.org/). + +see [releases](https://github.com/zeroclipboard/zeroclipboard/releases) + + +## Roadmap + +see [roadmap.md](docs/roadmap.md) + + +## Last Build + +[![Build Status](https://secure.travis-ci.org/zeroclipboard/zeroclipboard.png?branch=master)](https://travis-ci.org/zeroclipboard/zeroclipboard) diff --git a/assets/vendor/zeroclipboard/ZeroClipboard.js b/assets/vendor/zeroclipboard/ZeroClipboard.js new file mode 100644 index 0000000..7706edc --- /dev/null +++ b/assets/vendor/zeroclipboard/ZeroClipboard.js @@ -0,0 +1,1010 @@ +/*! +* ZeroClipboard +* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface. +* Copyright (c) 2014 Jon Rohan, James M. Greene +* Licensed MIT +* http://zeroclipboard.org/ +* v1.3.2 +*/ +(function() { + "use strict"; + var currentElement; + var flashState = { + bridge: null, + version: "0.0.0", + disabled: null, + outdated: null, + ready: null + }; + var _clipData = {}; + var clientIdCounter = 0; + var _clientMeta = {}; + var elementIdCounter = 0; + var _elementMeta = {}; + var _amdModuleId = null; + var _cjsModuleId = null; + var _swfPath = function() { + var i, jsDir, tmpJsPath, jsPath, swfPath = "ZeroClipboard.swf"; + if (document.currentScript && (jsPath = document.currentScript.src)) {} else { + var scripts = document.getElementsByTagName("script"); + if ("readyState" in scripts[0]) { + for (i = scripts.length; i--; ) { + if (scripts[i].readyState === "interactive" && (jsPath = scripts[i].src)) { + break; + } + } + } else if (document.readyState === "loading") { + jsPath = scripts[scripts.length - 1].src; + } else { + for (i = scripts.length; i--; ) { + tmpJsPath = scripts[i].src; + if (!tmpJsPath) { + jsDir = null; + break; + } + tmpJsPath = tmpJsPath.split("#")[0].split("?")[0]; + tmpJsPath = tmpJsPath.slice(0, tmpJsPath.lastIndexOf("/") + 1); + if (jsDir == null) { + jsDir = tmpJsPath; + } else if (jsDir !== tmpJsPath) { + jsDir = null; + break; + } + } + if (jsDir !== null) { + jsPath = jsDir; + } + } + } + if (jsPath) { + jsPath = jsPath.split("#")[0].split("?")[0]; + swfPath = jsPath.slice(0, jsPath.lastIndexOf("/") + 1) + swfPath; + } + return swfPath; + }(); + var _camelizeCssPropName = function() { + var matcherRegex = /\-([a-z])/g, replacerFn = function(match, group) { + return group.toUpperCase(); + }; + return function(prop) { + return prop.replace(matcherRegex, replacerFn); + }; + }(); + var _getStyle = function(el, prop) { + var value, camelProp, tagName, possiblePointers, i, len; + if (window.getComputedStyle) { + value = window.getComputedStyle(el, null).getPropertyValue(prop); + } else { + camelProp = _camelizeCssPropName(prop); + if (el.currentStyle) { + value = el.currentStyle[camelProp]; + } else { + value = el.style[camelProp]; + } + } + if (prop === "cursor") { + if (!value || value === "auto") { + tagName = el.tagName.toLowerCase(); + if (tagName === "a") { + return "pointer"; + } + } + } + return value; + }; + var _elementMouseOver = function(event) { + if (!event) { + event = window.event; + } + var target; + if (this !== window) { + target = this; + } else if (event.target) { + target = event.target; + } else if (event.srcElement) { + target = event.srcElement; + } + ZeroClipboard.activate(target); + }; + var _addEventHandler = function(element, method, func) { + if (!element || element.nodeType !== 1) { + return; + } + if (element.addEventListener) { + element.addEventListener(method, func, false); + } else if (element.attachEvent) { + element.attachEvent("on" + method, func); + } + }; + var _removeEventHandler = function(element, method, func) { + if (!element || element.nodeType !== 1) { + return; + } + if (element.removeEventListener) { + element.removeEventListener(method, func, false); + } else if (element.detachEvent) { + element.detachEvent("on" + method, func); + } + }; + var _addClass = function(element, value) { + if (!element || element.nodeType !== 1) { + return element; + } + if (element.classList) { + if (!element.classList.contains(value)) { + element.classList.add(value); + } + return element; + } + if (value && typeof value === "string") { + var classNames = (value || "").split(/\s+/); + if (element.nodeType === 1) { + if (!element.className) { + element.className = value; + } else { + var className = " " + element.className + " ", setClass = element.className; + for (var c = 0, cl = classNames.length; c < cl; c++) { + if (className.indexOf(" " + classNames[c] + " ") < 0) { + setClass += " " + classNames[c]; + } + } + element.className = setClass.replace(/^\s+|\s+$/g, ""); + } + } + } + return element; + }; + var _removeClass = function(element, value) { + if (!element || element.nodeType !== 1) { + return element; + } + if (element.classList) { + if (element.classList.contains(value)) { + element.classList.remove(value); + } + return element; + } + if (value && typeof value === "string" || value === undefined) { + var classNames = (value || "").split(/\s+/); + if (element.nodeType === 1 && element.className) { + if (value) { + var className = (" " + element.className + " ").replace(/[\n\t]/g, " "); + for (var c = 0, cl = classNames.length; c < cl; c++) { + className = className.replace(" " + classNames[c] + " ", " "); + } + element.className = className.replace(/^\s+|\s+$/g, ""); + } else { + element.className = ""; + } + } + } + return element; + }; + var _getZoomFactor = function() { + var rect, physicalWidth, logicalWidth, zoomFactor = 1; + if (typeof document.body.getBoundingClientRect === "function") { + rect = document.body.getBoundingClientRect(); + physicalWidth = rect.right - rect.left; + logicalWidth = document.body.offsetWidth; + zoomFactor = Math.round(physicalWidth / logicalWidth * 100) / 100; + } + return zoomFactor; + }; + var _getDOMObjectPosition = function(obj, defaultZIndex) { + var info = { + left: 0, + top: 0, + width: 0, + height: 0, + zIndex: _getSafeZIndex(defaultZIndex) - 1 + }; + if (obj.getBoundingClientRect) { + var rect = obj.getBoundingClientRect(); + var pageXOffset, pageYOffset, zoomFactor; + if ("pageXOffset" in window && "pageYOffset" in window) { + pageXOffset = window.pageXOffset; + pageYOffset = window.pageYOffset; + } else { + zoomFactor = _getZoomFactor(); + pageXOffset = Math.round(document.documentElement.scrollLeft / zoomFactor); + pageYOffset = Math.round(document.documentElement.scrollTop / zoomFactor); + } + var leftBorderWidth = document.documentElement.clientLeft || 0; + var topBorderWidth = document.documentElement.clientTop || 0; + info.left = rect.left + pageXOffset - leftBorderWidth; + info.top = rect.top + pageYOffset - topBorderWidth; + info.width = "width" in rect ? rect.width : rect.right - rect.left; + info.height = "height" in rect ? rect.height : rect.bottom - rect.top; + } + return info; + }; + var _cacheBust = function(path, options) { + var cacheBust = options == null || options && options.cacheBust === true && options.useNoCache === true; + if (cacheBust) { + return (path.indexOf("?") === -1 ? "?" : "&") + "noCache=" + new Date().getTime(); + } else { + return ""; + } + }; + var _vars = function(options) { + var i, len, domain, str = [], domains = [], trustedOriginsExpanded = []; + if (options.trustedOrigins) { + if (typeof options.trustedOrigins === "string") { + domains.push(options.trustedOrigins); + } else if (typeof options.trustedOrigins === "object" && "length" in options.trustedOrigins) { + domains = domains.concat(options.trustedOrigins); + } + } + if (options.trustedDomains) { + if (typeof options.trustedDomains === "string") { + domains.push(options.trustedDomains); + } else if (typeof options.trustedDomains === "object" && "length" in options.trustedDomains) { + domains = domains.concat(options.trustedDomains); + } + } + if (domains.length) { + for (i = 0, len = domains.length; i < len; i++) { + if (domains.hasOwnProperty(i) && domains[i] && typeof domains[i] === "string") { + domain = _extractDomain(domains[i]); + if (!domain) { + continue; + } + if (domain === "*") { + trustedOriginsExpanded = [ domain ]; + break; + } + trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [ domain, "//" + domain, window.location.protocol + "//" + domain ]); + } + } + } + if (trustedOriginsExpanded.length) { + str.push("trustedOrigins=" + encodeURIComponent(trustedOriginsExpanded.join(","))); + } + if (typeof options.jsModuleId === "string" && options.jsModuleId) { + str.push("jsModuleId=" + encodeURIComponent(options.jsModuleId)); + } + return str.join("&"); + }; + var _inArray = function(elem, array, fromIndex) { + if (typeof array.indexOf === "function") { + return array.indexOf(elem, fromIndex); + } + var i, len = array.length; + if (typeof fromIndex === "undefined") { + fromIndex = 0; + } else if (fromIndex < 0) { + fromIndex = len + fromIndex; + } + for (i = fromIndex; i < len; i++) { + if (array.hasOwnProperty(i) && array[i] === elem) { + return i; + } + } + return -1; + }; + var _prepClip = function(elements) { + if (typeof elements === "string") throw new TypeError("ZeroClipboard doesn't accept query strings."); + if (!elements.length) return [ elements ]; + return elements; + }; + var _dispatchCallback = function(func, context, args, async) { + if (async) { + window.setTimeout(function() { + func.apply(context, args); + }, 0); + } else { + func.apply(context, args); + } + }; + var _getSafeZIndex = function(val) { + var zIndex, tmp; + if (val) { + if (typeof val === "number" && val > 0) { + zIndex = val; + } else if (typeof val === "string" && (tmp = parseInt(val, 10)) && !isNaN(tmp) && tmp > 0) { + zIndex = tmp; + } + } + if (!zIndex) { + if (typeof _globalConfig.zIndex === "number" && _globalConfig.zIndex > 0) { + zIndex = _globalConfig.zIndex; + } else if (typeof _globalConfig.zIndex === "string" && (tmp = parseInt(_globalConfig.zIndex, 10)) && !isNaN(tmp) && tmp > 0) { + zIndex = tmp; + } + } + return zIndex || 0; + }; + var _deprecationWarning = function(deprecatedApiName, debugEnabled) { + if (deprecatedApiName && debugEnabled !== false && typeof console !== "undefined" && console && (console.warn || console.log)) { + var deprecationWarning = "`" + deprecatedApiName + "` is deprecated. See docs for more info:\n" + " https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations"; + if (console.warn) { + console.warn(deprecationWarning); + } else { + console.log(deprecationWarning); + } + } + }; + var _extend = function() { + var i, len, arg, prop, src, copy, target = arguments[0] || {}; + for (i = 1, len = arguments.length; i < len; i++) { + if ((arg = arguments[i]) != null) { + for (prop in arg) { + if (arg.hasOwnProperty(prop)) { + src = target[prop]; + copy = arg[prop]; + if (target === copy) { + continue; + } + if (copy !== undefined) { + target[prop] = copy; + } + } + } + } + } + return target; + }; + var _extractDomain = function(originOrUrl) { + if (originOrUrl == null || originOrUrl === "") { + return null; + } + originOrUrl = originOrUrl.replace(/^\s+|\s+$/g, ""); + if (originOrUrl === "") { + return null; + } + var protocolIndex = originOrUrl.indexOf("//"); + originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2); + var pathIndex = originOrUrl.indexOf("/"); + originOrUrl = pathIndex === -1 ? originOrUrl : protocolIndex === -1 || pathIndex === 0 ? null : originOrUrl.slice(0, pathIndex); + if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === ".swf") { + return null; + } + return originOrUrl || null; + }; + var _determineScriptAccess = function() { + var _extractAllDomains = function(origins, resultsArray) { + var i, len, tmp; + if (origins != null && resultsArray[0] !== "*") { + if (typeof origins === "string") { + origins = [ origins ]; + } + if (typeof origins === "object" && "length" in origins) { + for (i = 0, len = origins.length; i < len; i++) { + if (origins.hasOwnProperty(i)) { + tmp = _extractDomain(origins[i]); + if (tmp) { + if (tmp === "*") { + resultsArray.length = 0; + resultsArray.push("*"); + break; + } + if (_inArray(tmp, resultsArray) === -1) { + resultsArray.push(tmp); + } + } + } + } + } + } + }; + var _accessLevelLookup = { + always: "always", + samedomain: "sameDomain", + never: "never" + }; + return function(currentDomain, configOptions) { + var asaLower, allowScriptAccess = configOptions.allowScriptAccess; + if (typeof allowScriptAccess === "string" && (asaLower = allowScriptAccess.toLowerCase()) && /^always|samedomain|never$/.test(asaLower)) { + return _accessLevelLookup[asaLower]; + } + var swfDomain = _extractDomain(configOptions.moviePath); + if (swfDomain === null) { + swfDomain = currentDomain; + } + var trustedDomains = []; + _extractAllDomains(configOptions.trustedOrigins, trustedDomains); + _extractAllDomains(configOptions.trustedDomains, trustedDomains); + var len = trustedDomains.length; + if (len > 0) { + if (len === 1 && trustedDomains[0] === "*") { + return "always"; + } + if (_inArray(currentDomain, trustedDomains) !== -1) { + if (len === 1 && currentDomain === swfDomain) { + return "sameDomain"; + } + return "always"; + } + } + return "never"; + }; + }(); + var _objectKeys = function(obj) { + if (obj == null) { + return []; + } + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + keys.push(prop); + } + } + return keys; + }; + var _deleteOwnProperties = function(obj) { + if (obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + delete obj[prop]; + } + } + } + return obj; + }; + var _detectFlashSupport = function() { + var hasFlash = false; + if (typeof flashState.disabled === "boolean") { + hasFlash = flashState.disabled === false; + } else { + if (typeof ActiveXObject === "function") { + try { + if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) { + hasFlash = true; + } + } catch (error) {} + } + if (!hasFlash && navigator.mimeTypes["application/x-shockwave-flash"]) { + hasFlash = true; + } + } + return hasFlash; + }; + function _parseFlashVersion(flashVersion) { + return flashVersion.replace(/,/g, ".").replace(/[^0-9\.]/g, ""); + } + function _isFlashVersionSupported(flashVersion) { + return parseFloat(_parseFlashVersion(flashVersion)) >= 10; + } + var ZeroClipboard = function(elements, options) { + if (!(this instanceof ZeroClipboard)) { + return new ZeroClipboard(elements, options); + } + this.id = "" + clientIdCounter++; + _clientMeta[this.id] = { + instance: this, + elements: [], + handlers: {} + }; + if (elements) { + this.clip(elements); + } + if (typeof options !== "undefined") { + _deprecationWarning("new ZeroClipboard(elements, options)", _globalConfig.debug); + ZeroClipboard.config(options); + } + this.options = ZeroClipboard.config(); + if (typeof flashState.disabled !== "boolean") { + flashState.disabled = !_detectFlashSupport(); + } + if (flashState.disabled === false && flashState.outdated !== true) { + if (flashState.bridge === null) { + flashState.outdated = false; + flashState.ready = false; + _bridge(); + } + } + }; + ZeroClipboard.prototype.setText = function(newText) { + if (newText && newText !== "") { + _clipData["text/plain"] = newText; + if (flashState.ready === true && flashState.bridge) { + flashState.bridge.setText(newText); + } else {} + } + return this; + }; + ZeroClipboard.prototype.setSize = function(width, height) { + if (flashState.ready === true && flashState.bridge) { + flashState.bridge.setSize(width, height); + } else {} + return this; + }; + var _setHandCursor = function(enabled) { + if (flashState.ready === true && flashState.bridge) { + flashState.bridge.setHandCursor(enabled); + } else {} + }; + ZeroClipboard.prototype.destroy = function() { + this.unclip(); + this.off(); + delete _clientMeta[this.id]; + }; + var _getAllClients = function() { + var i, len, client, clients = [], clientIds = _objectKeys(_clientMeta); + for (i = 0, len = clientIds.length; i < len; i++) { + client = _clientMeta[clientIds[i]].instance; + if (client && client instanceof ZeroClipboard) { + clients.push(client); + } + } + return clients; + }; + ZeroClipboard.version = "1.3.2"; + var _globalConfig = { + swfPath: _swfPath, + trustedDomains: window.location.host ? [ window.location.host ] : [], + cacheBust: true, + forceHandCursor: false, + zIndex: 999999999, + debug: true, + title: null, + autoActivate: true + }; + ZeroClipboard.config = function(options) { + if (typeof options === "object" && options !== null) { + _extend(_globalConfig, options); + } + if (typeof options === "string" && options) { + if (_globalConfig.hasOwnProperty(options)) { + return _globalConfig[options]; + } + return; + } + var copy = {}; + for (var prop in _globalConfig) { + if (_globalConfig.hasOwnProperty(prop)) { + if (typeof _globalConfig[prop] === "object" && _globalConfig[prop] !== null) { + if ("length" in _globalConfig[prop]) { + copy[prop] = _globalConfig[prop].slice(0); + } else { + copy[prop] = _extend({}, _globalConfig[prop]); + } + } else { + copy[prop] = _globalConfig[prop]; + } + } + } + return copy; + }; + ZeroClipboard.destroy = function() { + ZeroClipboard.deactivate(); + for (var clientId in _clientMeta) { + if (_clientMeta.hasOwnProperty(clientId) && _clientMeta[clientId]) { + var client = _clientMeta[clientId].instance; + if (client && typeof client.destroy === "function") { + client.destroy(); + } + } + } + var htmlBridge = _getHtmlBridge(flashState.bridge); + if (htmlBridge && htmlBridge.parentNode) { + htmlBridge.parentNode.removeChild(htmlBridge); + flashState.ready = null; + flashState.bridge = null; + } + }; + ZeroClipboard.activate = function(element) { + if (currentElement) { + _removeClass(currentElement, _globalConfig.hoverClass); + _removeClass(currentElement, _globalConfig.activeClass); + } + currentElement = element; + _addClass(element, _globalConfig.hoverClass); + _reposition(); + var newTitle = _globalConfig.title || element.getAttribute("title"); + if (newTitle) { + var htmlBridge = _getHtmlBridge(flashState.bridge); + if (htmlBridge) { + htmlBridge.setAttribute("title", newTitle); + } + } + var useHandCursor = _globalConfig.forceHandCursor === true || _getStyle(element, "cursor") === "pointer"; + _setHandCursor(useHandCursor); + }; + ZeroClipboard.deactivate = function() { + var htmlBridge = _getHtmlBridge(flashState.bridge); + if (htmlBridge) { + htmlBridge.style.left = "0px"; + htmlBridge.style.top = "-9999px"; + htmlBridge.removeAttribute("title"); + } + if (currentElement) { + _removeClass(currentElement, _globalConfig.hoverClass); + _removeClass(currentElement, _globalConfig.activeClass); + currentElement = null; + } + }; + var _bridge = function() { + var flashBridge, len; + var container = document.getElementById("global-zeroclipboard-html-bridge"); + if (!container) { + var opts = ZeroClipboard.config(); + opts.jsModuleId = typeof _amdModuleId === "string" && _amdModuleId || typeof _cjsModuleId === "string" && _cjsModuleId || null; + var allowScriptAccess = _determineScriptAccess(window.location.host, _globalConfig); + var flashvars = _vars(opts); + var swfUrl = _globalConfig.moviePath + _cacheBust(_globalConfig.moviePath, _globalConfig); + var html = ' '; + container = document.createElement("div"); + container.id = "global-zeroclipboard-html-bridge"; + container.setAttribute("class", "global-zeroclipboard-container"); + container.style.position = "absolute"; + container.style.left = "0px"; + container.style.top = "-9999px"; + container.style.width = "15px"; + container.style.height = "15px"; + container.style.zIndex = "" + _getSafeZIndex(_globalConfig.zIndex); + document.body.appendChild(container); + container.innerHTML = html; + } + flashBridge = document["global-zeroclipboard-flash-bridge"]; + if (flashBridge && (len = flashBridge.length)) { + flashBridge = flashBridge[len - 1]; + } + flashState.bridge = flashBridge || container.children[0].lastElementChild; + }; + var _getHtmlBridge = function(flashBridge) { + var isFlashElement = /^OBJECT|EMBED$/; + var htmlBridge = flashBridge && flashBridge.parentNode; + while (htmlBridge && isFlashElement.test(htmlBridge.nodeName) && htmlBridge.parentNode) { + htmlBridge = htmlBridge.parentNode; + } + return htmlBridge || null; + }; + var _reposition = function() { + if (currentElement) { + var pos = _getDOMObjectPosition(currentElement, _globalConfig.zIndex); + var htmlBridge = _getHtmlBridge(flashState.bridge); + if (htmlBridge) { + htmlBridge.style.top = pos.top + "px"; + htmlBridge.style.left = pos.left + "px"; + htmlBridge.style.width = pos.width + "px"; + htmlBridge.style.height = pos.height + "px"; + htmlBridge.style.zIndex = pos.zIndex + 1; + } + if (flashState.ready === true && flashState.bridge) { + flashState.bridge.setSize(pos.width, pos.height); + } + } + return this; + }; + ZeroClipboard.prototype.on = function(eventName, func) { + var i, len, events, added = {}, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers; + if (typeof eventName === "string" && eventName) { + events = eventName.toLowerCase().split(/\s+/); + } else if (typeof eventName === "object" && eventName && typeof func === "undefined") { + for (i in eventName) { + if (eventName.hasOwnProperty(i) && typeof i === "string" && i && typeof eventName[i] === "function") { + this.on(i, eventName[i]); + } + } + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventName = events[i].replace(/^on/, ""); + added[eventName] = true; + if (!handlers[eventName]) { + handlers[eventName] = []; + } + handlers[eventName].push(func); + } + if (added.noflash && flashState.disabled) { + _receiveEvent.call(this, "noflash", {}); + } + if (added.wrongflash && flashState.outdated) { + _receiveEvent.call(this, "wrongflash", { + flashVersion: flashState.version + }); + } + if (added.load && flashState.ready) { + _receiveEvent.call(this, "load", { + flashVersion: flashState.version + }); + } + } + return this; + }; + ZeroClipboard.prototype.off = function(eventName, func) { + var i, len, foundIndex, events, perEventHandlers, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers; + if (arguments.length === 0) { + events = _objectKeys(handlers); + } else if (typeof eventName === "string" && eventName) { + events = eventName.split(/\s+/); + } else if (typeof eventName === "object" && eventName && typeof func === "undefined") { + for (i in eventName) { + if (eventName.hasOwnProperty(i) && typeof i === "string" && i && typeof eventName[i] === "function") { + this.off(i, eventName[i]); + } + } + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventName = events[i].toLowerCase().replace(/^on/, ""); + perEventHandlers = handlers[eventName]; + if (perEventHandlers && perEventHandlers.length) { + if (func) { + foundIndex = _inArray(func, perEventHandlers); + while (foundIndex !== -1) { + perEventHandlers.splice(foundIndex, 1); + foundIndex = _inArray(func, perEventHandlers, foundIndex); + } + } else { + handlers[eventName].length = 0; + } + } + } + } + return this; + }; + ZeroClipboard.prototype.handlers = function(eventName) { + var prop, copy = null, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers; + if (handlers) { + if (typeof eventName === "string" && eventName) { + return handlers[eventName] ? handlers[eventName].slice(0) : null; + } + copy = {}; + for (prop in handlers) { + if (handlers.hasOwnProperty(prop) && handlers[prop]) { + copy[prop] = handlers[prop].slice(0); + } + } + } + return copy; + }; + var _dispatchClientCallbacks = function(eventName, context, args, async) { + var handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers[eventName]; + if (handlers && handlers.length) { + var i, len, func, originalContext = context || this; + for (i = 0, len = handlers.length; i < len; i++) { + func = handlers[i]; + context = originalContext; + if (typeof func === "string" && typeof window[func] === "function") { + func = window[func]; + } + if (typeof func === "object" && func && typeof func.handleEvent === "function") { + context = func; + func = func.handleEvent; + } + if (typeof func === "function") { + _dispatchCallback(func, context, args, async); + } + } + } + return this; + }; + ZeroClipboard.prototype.clip = function(elements) { + elements = _prepClip(elements); + for (var i = 0; i < elements.length; i++) { + if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) { + if (!elements[i].zcClippingId) { + elements[i].zcClippingId = "zcClippingId_" + elementIdCounter++; + _elementMeta[elements[i].zcClippingId] = [ this.id ]; + if (_globalConfig.autoActivate === true) { + _addEventHandler(elements[i], "mouseover", _elementMouseOver); + } + } else if (_inArray(this.id, _elementMeta[elements[i].zcClippingId]) === -1) { + _elementMeta[elements[i].zcClippingId].push(this.id); + } + var clippedElements = _clientMeta[this.id].elements; + if (_inArray(elements[i], clippedElements) === -1) { + clippedElements.push(elements[i]); + } + } + } + return this; + }; + ZeroClipboard.prototype.unclip = function(elements) { + var meta = _clientMeta[this.id]; + if (meta) { + var clippedElements = meta.elements; + var arrayIndex; + if (typeof elements === "undefined") { + elements = clippedElements.slice(0); + } else { + elements = _prepClip(elements); + } + for (var i = elements.length; i--; ) { + if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) { + arrayIndex = 0; + while ((arrayIndex = _inArray(elements[i], clippedElements, arrayIndex)) !== -1) { + clippedElements.splice(arrayIndex, 1); + } + var clientIds = _elementMeta[elements[i].zcClippingId]; + if (clientIds) { + arrayIndex = 0; + while ((arrayIndex = _inArray(this.id, clientIds, arrayIndex)) !== -1) { + clientIds.splice(arrayIndex, 1); + } + if (clientIds.length === 0) { + if (_globalConfig.autoActivate === true) { + _removeEventHandler(elements[i], "mouseover", _elementMouseOver); + } + delete elements[i].zcClippingId; + } + } + } + } + } + return this; + }; + ZeroClipboard.prototype.elements = function() { + var meta = _clientMeta[this.id]; + return meta && meta.elements ? meta.elements.slice(0) : []; + }; + var _getAllClientsClippedToElement = function(element) { + var elementMetaId, clientIds, i, len, client, clients = []; + if (element && element.nodeType === 1 && (elementMetaId = element.zcClippingId) && _elementMeta.hasOwnProperty(elementMetaId)) { + clientIds = _elementMeta[elementMetaId]; + if (clientIds && clientIds.length) { + for (i = 0, len = clientIds.length; i < len; i++) { + client = _clientMeta[clientIds[i]].instance; + if (client && client instanceof ZeroClipboard) { + clients.push(client); + } + } + } + } + return clients; + }; + _globalConfig.hoverClass = "zeroclipboard-is-hover"; + _globalConfig.activeClass = "zeroclipboard-is-active"; + _globalConfig.trustedOrigins = null; + _globalConfig.allowScriptAccess = null; + _globalConfig.useNoCache = true; + _globalConfig.moviePath = "ZeroClipboard.swf"; + ZeroClipboard.detectFlashSupport = function() { + _deprecationWarning("ZeroClipboard.detectFlashSupport", _globalConfig.debug); + return _detectFlashSupport(); + }; + ZeroClipboard.dispatch = function(eventName, args) { + if (typeof eventName === "string" && eventName) { + var cleanEventName = eventName.toLowerCase().replace(/^on/, ""); + if (cleanEventName) { + var clients = currentElement ? _getAllClientsClippedToElement(currentElement) : _getAllClients(); + for (var i = 0, len = clients.length; i < len; i++) { + _receiveEvent.call(clients[i], cleanEventName, args); + } + } + } + }; + ZeroClipboard.prototype.setHandCursor = function(enabled) { + _deprecationWarning("ZeroClipboard.prototype.setHandCursor", _globalConfig.debug); + enabled = typeof enabled === "boolean" ? enabled : !!enabled; + _setHandCursor(enabled); + _globalConfig.forceHandCursor = enabled; + return this; + }; + ZeroClipboard.prototype.reposition = function() { + _deprecationWarning("ZeroClipboard.prototype.reposition", _globalConfig.debug); + return _reposition(); + }; + ZeroClipboard.prototype.receiveEvent = function(eventName, args) { + _deprecationWarning("ZeroClipboard.prototype.receiveEvent", _globalConfig.debug); + if (typeof eventName === "string" && eventName) { + var cleanEventName = eventName.toLowerCase().replace(/^on/, ""); + if (cleanEventName) { + _receiveEvent.call(this, cleanEventName, args); + } + } + }; + ZeroClipboard.prototype.setCurrent = function(element) { + _deprecationWarning("ZeroClipboard.prototype.setCurrent", _globalConfig.debug); + ZeroClipboard.activate(element); + return this; + }; + ZeroClipboard.prototype.resetBridge = function() { + _deprecationWarning("ZeroClipboard.prototype.resetBridge", _globalConfig.debug); + ZeroClipboard.deactivate(); + return this; + }; + ZeroClipboard.prototype.setTitle = function(newTitle) { + _deprecationWarning("ZeroClipboard.prototype.setTitle", _globalConfig.debug); + newTitle = newTitle || _globalConfig.title || currentElement && currentElement.getAttribute("title"); + if (newTitle) { + var htmlBridge = _getHtmlBridge(flashState.bridge); + if (htmlBridge) { + htmlBridge.setAttribute("title", newTitle); + } + } + return this; + }; + ZeroClipboard.setDefaults = function(options) { + _deprecationWarning("ZeroClipboard.setDefaults", _globalConfig.debug); + ZeroClipboard.config(options); + }; + ZeroClipboard.prototype.addEventListener = function(eventName, func) { + _deprecationWarning("ZeroClipboard.prototype.addEventListener", _globalConfig.debug); + return this.on(eventName, func); + }; + ZeroClipboard.prototype.removeEventListener = function(eventName, func) { + _deprecationWarning("ZeroClipboard.prototype.removeEventListener", _globalConfig.debug); + return this.off(eventName, func); + }; + ZeroClipboard.prototype.ready = function() { + _deprecationWarning("ZeroClipboard.prototype.ready", _globalConfig.debug); + return flashState.ready === true; + }; + var _receiveEvent = function(eventName, args) { + eventName = eventName.toLowerCase().replace(/^on/, ""); + var cleanVersion = args && args.flashVersion && _parseFlashVersion(args.flashVersion) || null; + var element = currentElement; + var performCallbackAsync = true; + switch (eventName) { + case "load": + if (cleanVersion) { + if (!_isFlashVersionSupported(cleanVersion)) { + _receiveEvent.call(this, "onWrongFlash", { + flashVersion: cleanVersion + }); + return; + } + flashState.outdated = false; + flashState.ready = true; + flashState.version = cleanVersion; + } + break; + + case "wrongflash": + if (cleanVersion && !_isFlashVersionSupported(cleanVersion)) { + flashState.outdated = true; + flashState.ready = false; + flashState.version = cleanVersion; + } + break; + + case "mouseover": + _addClass(element, _globalConfig.hoverClass); + break; + + case "mouseout": + if (_globalConfig.autoActivate === true) { + ZeroClipboard.deactivate(); + } + break; + + case "mousedown": + _addClass(element, _globalConfig.activeClass); + break; + + case "mouseup": + _removeClass(element, _globalConfig.activeClass); + break; + + case "datarequested": + var targetId = element.getAttribute("data-clipboard-target"), targetEl = !targetId ? null : document.getElementById(targetId); + if (targetEl) { + var textContent = targetEl.value || targetEl.textContent || targetEl.innerText; + if (textContent) { + this.setText(textContent); + } + } else { + var defaultText = element.getAttribute("data-clipboard-text"); + if (defaultText) { + this.setText(defaultText); + } + } + performCallbackAsync = false; + break; + + case "complete": + _deleteOwnProperties(_clipData); + break; + } + var context = element; + var eventArgs = [ this, args ]; + return _dispatchClientCallbacks.call(this, eventName, context, eventArgs, performCallbackAsync); + }; + if (typeof define === "function" && define.amd) { + define([ "require", "exports", "module" ], function(require, exports, module) { + _amdModuleId = module && module.id || null; + return ZeroClipboard; + }); + } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) { + _cjsModuleId = module.id || null; + module.exports = ZeroClipboard; + } else { + window.ZeroClipboard = ZeroClipboard; + } +})(); \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/ZeroClipboard.min.js b/assets/vendor/zeroclipboard/ZeroClipboard.min.js new file mode 100644 index 0000000..434299b --- /dev/null +++ b/assets/vendor/zeroclipboard/ZeroClipboard.min.js @@ -0,0 +1,9 @@ +/*! +* ZeroClipboard +* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface. +* Copyright (c) 2014 Jon Rohan, James M. Greene +* Licensed MIT +* http://zeroclipboard.org/ +* v1.3.2 +*/ +!function(){"use strict";function a(a){return a.replace(/,/g,".").replace(/[^0-9\.]/g,"")}function b(b){return parseFloat(a(b))>=10}var c,d={bridge:null,version:"0.0.0",disabled:null,outdated:null,ready:null},e={},f=0,g={},h=0,i={},j=null,k=null,l=function(){var a,b,c,d,e="ZeroClipboard.swf";if(document.currentScript&&(d=document.currentScript.src));else{var f=document.getElementsByTagName("script");if("readyState"in f[0])for(a=f.length;a--&&("interactive"!==f[a].readyState||!(d=f[a].src)););else if("loading"===document.readyState)d=f[f.length-1].src;else{for(a=f.length;a--;){if(c=f[a].src,!c){b=null;break}if(c=c.split("#")[0].split("?")[0],c=c.slice(0,c.lastIndexOf("/")+1),null==b)b=c;else if(b!==c){b=null;break}}null!==b&&(d=b)}}return d&&(d=d.split("#")[0].split("?")[0],e=d.slice(0,d.lastIndexOf("/")+1)+e),e}(),m=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),n=function(a,b){var c,d,e;return window.getComputedStyle?c=window.getComputedStyle(a,null).getPropertyValue(b):(d=m(b),c=a.currentStyle?a.currentStyle[d]:a.style[d]),"cursor"!==b||c&&"auto"!==c||(e=a.tagName.toLowerCase(),"a"!==e)?c:"pointer"},o=function(a){a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),I.activate(b)},p=function(a,b,c){a&&1===a.nodeType&&(a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c))},q=function(a,b,c){a&&1===a.nodeType&&(a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c))},r=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)||a.classList.add(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},s=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)&&a.classList.remove(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},t=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(b/c*100)/100),d},u=function(a,b){var c={left:0,top:0,width:0,height:0,zIndex:A(b)-1};if(a.getBoundingClientRect){var d,e,f,g=a.getBoundingClientRect();"pageXOffset"in window&&"pageYOffset"in window?(d=window.pageXOffset,e=window.pageYOffset):(f=t(),d=Math.round(document.documentElement.scrollLeft/f),e=Math.round(document.documentElement.scrollTop/f));var h=document.documentElement.clientLeft||0,i=document.documentElement.clientTop||0;c.left=g.left+d-h,c.top=g.top+e-i,c.width="width"in g?g.width:g.right-g.left,c.height="height"in g?g.height:g.bottom-g.top}return c},v=function(a,b){var c=null==b||b&&b.cacheBust===!0&&b.useNoCache===!0;return c?(-1===a.indexOf("?")?"?":"&")+"noCache="+(new Date).getTime():""},w=function(a){var b,c,d,e=[],f=[],g=[];if(a.trustedOrigins&&("string"==typeof a.trustedOrigins?f.push(a.trustedOrigins):"object"==typeof a.trustedOrigins&&"length"in a.trustedOrigins&&(f=f.concat(a.trustedOrigins))),a.trustedDomains&&("string"==typeof a.trustedDomains?f.push(a.trustedDomains):"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(f=f.concat(a.trustedDomains))),f.length)for(b=0,c=f.length;c>b;b++)if(f.hasOwnProperty(b)&&f[b]&&"string"==typeof f[b]){if(d=D(f[b]),!d)continue;if("*"===d){g=[d];break}g.push.apply(g,[d,"//"+d,window.location.protocol+"//"+d])}return g.length&&e.push("trustedOrigins="+encodeURIComponent(g.join(","))),"string"==typeof a.jsModuleId&&a.jsModuleId&&e.push("jsModuleId="+encodeURIComponent(a.jsModuleId)),e.join("&")},x=function(a,b,c){if("function"==typeof b.indexOf)return b.indexOf(a,c);var d,e=b.length;for("undefined"==typeof c?c=0:0>c&&(c=e+c),d=c;e>d;d++)if(b.hasOwnProperty(d)&&b[d]===a)return d;return-1},y=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},z=function(a,b,c,d){d?window.setTimeout(function(){a.apply(b,c)},0):a.apply(b,c)},A=function(a){var b,c;return a&&("number"==typeof a&&a>0?b=a:"string"==typeof a&&(c=parseInt(a,10))&&!isNaN(c)&&c>0&&(b=c)),b||("number"==typeof L.zIndex&&L.zIndex>0?b=L.zIndex:"string"==typeof L.zIndex&&(c=parseInt(L.zIndex,10))&&!isNaN(c)&&c>0&&(b=c)),b||0},B=function(a,b){if(a&&b!==!1&&"undefined"!=typeof console&&console&&(console.warn||console.log)){var c="`"+a+"` is deprecated. See docs for more info:\n https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations";console.warn?console.warn(c):console.log(c)}},C=function(){var a,b,c,d,e,f,g=arguments[0]||{};for(a=1,b=arguments.length;b>a;a++)if(null!=(c=arguments[a]))for(d in c)if(c.hasOwnProperty(d)){if(e=g[d],f=c[d],g===f)continue;void 0!==f&&(g[d]=f)}return g},D=function(a){if(null==a||""===a)return null;if(a=a.replace(/^\s+|\s+$/g,""),""===a)return null;var b=a.indexOf("//");a=-1===b?a:a.slice(b+2);var c=a.indexOf("/");return a=-1===c?a:-1===b||0===c?null:a.slice(0,c),a&&".swf"===a.slice(-4).toLowerCase()?null:a||null},E=function(){var a=function(a,b){var c,d,e;if(null!=a&&"*"!==b[0]&&("string"==typeof a&&(a=[a]),"object"==typeof a&&"length"in a))for(c=0,d=a.length;d>c;c++)if(a.hasOwnProperty(c)&&(e=D(a[c]))){if("*"===e){b.length=0,b.push("*");break}-1===x(e,b)&&b.push(e)}},b={always:"always",samedomain:"sameDomain",never:"never"};return function(c,d){var e,f=d.allowScriptAccess;if("string"==typeof f&&(e=f.toLowerCase())&&/^always|samedomain|never$/.test(e))return b[e];var g=D(d.moviePath);null===g&&(g=c);var h=[];a(d.trustedOrigins,h),a(d.trustedDomains,h);var i=h.length;if(i>0){if(1===i&&"*"===h[0])return"always";if(-1!==x(c,h))return 1===i&&c===g?"sameDomain":"always"}return"never"}}(),F=function(a){if(null==a)return[];if(Object.keys)return Object.keys(a);var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},G=function(a){if(a)for(var b in a)a.hasOwnProperty(b)&&delete a[b];return a},H=function(){var a=!1;if("boolean"==typeof d.disabled)a=d.disabled===!1;else{if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}return a},I=function(a,b){return this instanceof I?(this.id=""+f++,g[this.id]={instance:this,elements:[],handlers:{}},a&&this.clip(a),"undefined"!=typeof b&&(B("new ZeroClipboard(elements, options)",L.debug),I.config(b)),this.options=I.config(),"boolean"!=typeof d.disabled&&(d.disabled=!H()),d.disabled===!1&&d.outdated!==!0&&null===d.bridge&&(d.outdated=!1,d.ready=!1,M()),void 0):new I(a,b)};I.prototype.setText=function(a){return a&&""!==a&&(e["text/plain"]=a,d.ready===!0&&d.bridge&&d.bridge.setText(a)),this},I.prototype.setSize=function(a,b){return d.ready===!0&&d.bridge&&d.bridge.setSize(a,b),this};var J=function(a){d.ready===!0&&d.bridge&&d.bridge.setHandCursor(a)};I.prototype.destroy=function(){this.unclip(),this.off(),delete g[this.id]};var K=function(){var a,b,c,d=[],e=F(g);for(a=0,b=e.length;b>a;a++)c=g[e[a]].instance,c&&c instanceof I&&d.push(c);return d};I.version="1.3.2";var L={swfPath:l,trustedDomains:window.location.host?[window.location.host]:[],cacheBust:!0,forceHandCursor:!1,zIndex:999999999,debug:!0,title:null,autoActivate:!0};I.config=function(a){"object"==typeof a&&null!==a&&C(L,a);{if("string"!=typeof a||!a){var b={};for(var c in L)L.hasOwnProperty(c)&&(b[c]="object"==typeof L[c]&&null!==L[c]?"length"in L[c]?L[c].slice(0):C({},L[c]):L[c]);return b}if(L.hasOwnProperty(a))return L[a]}},I.destroy=function(){I.deactivate();for(var a in g)if(g.hasOwnProperty(a)&&g[a]){var b=g[a].instance;b&&"function"==typeof b.destroy&&b.destroy()}var c=N(d.bridge);c&&c.parentNode&&(c.parentNode.removeChild(c),d.ready=null,d.bridge=null)},I.activate=function(a){c&&(s(c,L.hoverClass),s(c,L.activeClass)),c=a,r(a,L.hoverClass),O();var b=L.title||a.getAttribute("title");if(b){var e=N(d.bridge);e&&e.setAttribute("title",b)}var f=L.forceHandCursor===!0||"pointer"===n(a,"cursor");J(f)},I.deactivate=function(){var a=N(d.bridge);a&&(a.style.left="0px",a.style.top="-9999px",a.removeAttribute("title")),c&&(s(c,L.hoverClass),s(c,L.activeClass),c=null)};var M=function(){var a,b,c=document.getElementById("global-zeroclipboard-html-bridge");if(!c){var e=I.config();e.jsModuleId="string"==typeof j&&j||"string"==typeof k&&k||null;var f=E(window.location.host,L),g=w(e),h=L.moviePath+v(L.moviePath,L),i=' ';c=document.createElement("div"),c.id="global-zeroclipboard-html-bridge",c.setAttribute("class","global-zeroclipboard-container"),c.style.position="absolute",c.style.left="0px",c.style.top="-9999px",c.style.width="15px",c.style.height="15px",c.style.zIndex=""+A(L.zIndex),document.body.appendChild(c),c.innerHTML=i}a=document["global-zeroclipboard-flash-bridge"],a&&(b=a.length)&&(a=a[b-1]),d.bridge=a||c.children[0].lastElementChild},N=function(a){for(var b=/^OBJECT|EMBED$/,c=a&&a.parentNode;c&&b.test(c.nodeName)&&c.parentNode;)c=c.parentNode;return c||null},O=function(){if(c){var a=u(c,L.zIndex),b=N(d.bridge);b&&(b.style.top=a.top+"px",b.style.left=a.left+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.zIndex=a.zIndex+1),d.ready===!0&&d.bridge&&d.bridge.setSize(a.width,a.height)}return this};I.prototype.on=function(a,b){var c,e,f,h={},i=g[this.id]&&g[this.id].handlers;if("string"==typeof a&&a)f=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.on(c,a[c]);if(f&&f.length){for(c=0,e=f.length;e>c;c++)a=f[c].replace(/^on/,""),h[a]=!0,i[a]||(i[a]=[]),i[a].push(b);h.noflash&&d.disabled&&R.call(this,"noflash",{}),h.wrongflash&&d.outdated&&R.call(this,"wrongflash",{flashVersion:d.version}),h.load&&d.ready&&R.call(this,"load",{flashVersion:d.version})}return this},I.prototype.off=function(a,b){var c,d,e,f,h,i=g[this.id]&&g[this.id].handlers;if(0===arguments.length)f=F(i);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),h=i[a],h&&h.length)if(b)for(e=x(b,h);-1!==e;)h.splice(e,1),e=x(b,h,e);else i[a].length=0;return this},I.prototype.handlers=function(a){var b,c=null,d=g[this.id]&&g[this.id].handlers;if(d){if("string"==typeof a&&a)return d[a]?d[a].slice(0):null;c={};for(b in d)d.hasOwnProperty(b)&&d[b]&&(c[b]=d[b].slice(0))}return c};var P=function(a,b,c,d){var e=g[this.id]&&g[this.id].handlers[a];if(e&&e.length){var f,h,i,j=b||this;for(f=0,h=e.length;h>f;f++)i=e[f],b=j,"string"==typeof i&&"function"==typeof window[i]&&(i=window[i]),"object"==typeof i&&i&&"function"==typeof i.handleEvent&&(b=i,i=i.handleEvent),"function"==typeof i&&z(i,b,c,d)}return this};I.prototype.clip=function(a){a=y(a);for(var b=0;bd;d++)f=g[c[d]].instance,f&&f instanceof I&&h.push(f);return h};L.hoverClass="zeroclipboard-is-hover",L.activeClass="zeroclipboard-is-active",L.trustedOrigins=null,L.allowScriptAccess=null,L.useNoCache=!0,L.moviePath="ZeroClipboard.swf",I.detectFlashSupport=function(){return B("ZeroClipboard.detectFlashSupport",L.debug),H()},I.dispatch=function(a,b){if("string"==typeof a&&a){var d=a.toLowerCase().replace(/^on/,"");if(d)for(var e=c?Q(c):K(),f=0,g=e.length;g>f;f++)R.call(e[f],d,b)}},I.prototype.setHandCursor=function(a){return B("ZeroClipboard.prototype.setHandCursor",L.debug),a="boolean"==typeof a?a:!!a,J(a),L.forceHandCursor=a,this},I.prototype.reposition=function(){return B("ZeroClipboard.prototype.reposition",L.debug),O()},I.prototype.receiveEvent=function(a,b){if(B("ZeroClipboard.prototype.receiveEvent",L.debug),"string"==typeof a&&a){var c=a.toLowerCase().replace(/^on/,"");c&&R.call(this,c,b)}},I.prototype.setCurrent=function(a){return B("ZeroClipboard.prototype.setCurrent",L.debug),I.activate(a),this},I.prototype.resetBridge=function(){return B("ZeroClipboard.prototype.resetBridge",L.debug),I.deactivate(),this},I.prototype.setTitle=function(a){if(B("ZeroClipboard.prototype.setTitle",L.debug),a=a||L.title||c&&c.getAttribute("title")){var b=N(d.bridge);b&&b.setAttribute("title",a)}return this},I.setDefaults=function(a){B("ZeroClipboard.setDefaults",L.debug),I.config(a)},I.prototype.addEventListener=function(a,b){return B("ZeroClipboard.prototype.addEventListener",L.debug),this.on(a,b)},I.prototype.removeEventListener=function(a,b){return B("ZeroClipboard.prototype.removeEventListener",L.debug),this.off(a,b)},I.prototype.ready=function(){return B("ZeroClipboard.prototype.ready",L.debug),d.ready===!0};var R=function(f,g){f=f.toLowerCase().replace(/^on/,"");var h=g&&g.flashVersion&&a(g.flashVersion)||null,i=c,j=!0;switch(f){case"load":if(h){if(!b(h))return R.call(this,"onWrongFlash",{flashVersion:h}),void 0;d.outdated=!1,d.ready=!0,d.version=h}break;case"wrongflash":h&&!b(h)&&(d.outdated=!0,d.ready=!1,d.version=h);break;case"mouseover":r(i,L.hoverClass);break;case"mouseout":L.autoActivate===!0&&I.deactivate();break;case"mousedown":r(i,L.activeClass);break;case"mouseup":s(i,L.activeClass);break;case"datarequested":var k=i.getAttribute("data-clipboard-target"),l=k?document.getElementById(k):null;if(l){var m=l.value||l.textContent||l.innerText;m&&this.setText(m)}else{var n=i.getAttribute("data-clipboard-text");n&&this.setText(n)}j=!1;break;case"complete":G(e)}var o=i,p=[this,g];return P.call(this,f,o,p,j)};"function"==typeof define&&define.amd?define(["require","exports","module"],function(a,b,c){return j=c&&c.id||null,I}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports?(k=module.id||null,module.exports=I):window.ZeroClipboard=I}(); \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/ZeroClipboard.swf b/assets/vendor/zeroclipboard/ZeroClipboard.swf new file mode 100644 index 0000000..ed962a5 Binary files /dev/null and b/assets/vendor/zeroclipboard/ZeroClipboard.swf differ diff --git a/assets/vendor/zeroclipboard/bower.json b/assets/vendor/zeroclipboard/bower.json new file mode 100644 index 0000000..6000154 --- /dev/null +++ b/assets/vendor/zeroclipboard/bower.json @@ -0,0 +1,12 @@ +{ + "name": "zeroclipboard", + "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", + "version": "1.3.2", + "main": ["./ZeroClipboard.js", "./ZeroClipboard.swf"], + "keywords": ["flash","clipboard","copy","cut","paste","zclip","clip","clippy"], + "license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE", + "authors": [{"name":"Jon Rohan","url":"http://jonrohan.me/"},{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://jamesgreene.net/"}], + "homepage": "http://zeroclipboard.org/", + "repository": {"type":"git","url":"https://github.com/zeroclipboard/zeroclipboard.git"}, + "location": "git://github.com/zeroclipboard/zeroclipboard.git" +} \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/composer.json b/assets/vendor/zeroclipboard/composer.json new file mode 100644 index 0000000..552074f --- /dev/null +++ b/assets/vendor/zeroclipboard/composer.json @@ -0,0 +1,14 @@ +{ + "name": "zeroclipboard/zeroclipboard", + "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", + "version": "1.3.2", + "type": "library", + "keywords": ["flash","clipboard","copy","cut","paste","zclip","clip","clippy"], + "license": "MIT", + "authors": [{"name":"Jon Rohan","homepage":"http://jonrohan.me/","role":"Developer"},{"name":"James M. Greene","email":"james.m.greene@gmail.com","homepage":"http://jamesgreene.net/","role":"Developer"}], + "homepage": "http://zeroclipboard.org/", + "support": { + "source": "https://github.com/zeroclipboard/zeroclipboard.git", + "issues": "https://github.com/zeroclipboard/zeroclipboard/issues" + } +} \ No newline at end of file diff --git a/assets/vendor/zeroclipboard/index.js b/assets/vendor/zeroclipboard/index.js new file mode 100644 index 0000000..77acc86 --- /dev/null +++ b/assets/vendor/zeroclipboard/index.js @@ -0,0 +1,31 @@ + +/** + * Module exports. + */ + +exports = module.exports = setup; + +/** + * Module dependencies. + */ + +var http = require('http'); +var send = require('send'); +var root = __dirname; +var swf = '/ZeroClipboard.swf'; + +function setup () { + return http.createServer(onReq); +} + +function onReq (req, res) { + send(req, swf) + .root(root) + .on('error', onError) + .pipe(res); +} + +function onError (err) { + res.statusCode = err.status || 500; + res.end(err.message); +} diff --git a/assets/vendor/zeroclipboard/package.json b/assets/vendor/zeroclipboard/package.json new file mode 100644 index 0000000..7455a74 --- /dev/null +++ b/assets/vendor/zeroclipboard/package.json @@ -0,0 +1,68 @@ +{ + "name": "zeroclipboard", + "title": "ZeroClipboard", + "version": "1.3.2", + "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", + "keywords": [ + "flash", + "clipboard", + "copy", + "cut", + "paste", + "zclip", + "clip", + "clippy" + ], + "homepage": "http://zeroclipboard.org/", + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE" + } + ], + "contributors": [ + { + "name": "Jon Rohan", + "url": "http://jonrohan.me/" + }, + { + "name": "James M. Greene", + "email": "james.m.greene@gmail.com", + "url": "http://jamesgreene.net/" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/zeroclipboard/zeroclipboard.git" + }, + "bugs": { + "url": "https://github.com/zeroclipboard/zeroclipboard/issues" + }, + "dependencies": { + "send": "0" + }, + "devDependencies": { + "qunitjs": "~1.12.0", + "qunit-composite": "~1.0.1", + "grunt": "~0.4.2", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-jshint": "~0.7.2", + "grunt-contrib-connect": "~0.5.0", + "grunt-contrib-qunit": "~0.3.0", + "grunt-contrib-concat": "~0.3.0", + "grunt-contrib-uglify": "~0.2.7", + "grunt-chmod": "~1.0.3", + "grunt-mxmlc": "~0.2.0", + "grunt-template": "~0.2.1", + "grunt-contrib-watch": "~0.5.3" + }, + "main": "./ZeroClipboard.js", + "component": { + "scripts": { + "zeroclipboard": "ZeroClipboard.js" + } + }, + "scripts": { + "test": "grunt travis --verbose" + } +} diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..4209383 --- /dev/null +++ b/bower.json @@ -0,0 +1,19 @@ +{ + "name": "choosealicense.com", + "version": "0.0.1", + "homepage": "choosealicense.com", + "authors": [ + "GitHub Inc." + ], + "description": "A site to provide non-judgmental guidance on choosing a license for your open source project", + "main": "index.html", + "license": "MIT", + "dependencies": { + "zeroclipboard": "~1.3.2", + "jquery": "~1.11.0", + "html5shiv": "~3.7.0", + "selectivizr": "~1.0.2", + "qtip2": "~2.2.0", + "normalize-css": "~3.0.0" + } +} diff --git a/index.html b/index.html index 5fbd345..fbef291 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ class: home hide_breadcrumbs: true title: Choosing an OSS license doesn’t need to be scary description: A site to provide non-judgmental guidance on choosing a license for your open source project +permalink: / ---

@@ -12,7 +13,7 @@ description: A site to provide non-judgmental guidance on choosing a license for }

    -
  • +
  • I want it simple and permissive.

    @@ -25,24 +26,24 @@ description: A site to provide non-judgmental guidance on choosing a license for

  • - +

    I’m concerned about patents.

    - The Apache License is a permissive license similar to the MIT License, but also provides an express grant of patent rights from contributors to users. + The Apache License is a permissive license similar to the MIT License, but also provides an express grant of patent rights from contributors to users.

    Apache, SVN, and NuGet use the Apache License.

  • - +

    I care about sharing improvements.

    - The GPL (V2 or V3) is a copyleft license that requires anyone who distributes your code or a derivative work to make the source available under the same terms. V3 is similar to V2, but further restricts use in hardware that forbids software alterations. + The GPL (V2 or V3) is a copyleft license that requires anyone who distributes your code or a derivative work to make the source available under the same terms. V3 is similar to V2, but further restricts use in hardware that forbids software alterations.

    Linux, Git, and WordPress use the GPL. @@ -55,8 +56,8 @@ description: A site to provide non-judgmental guidance on choosing a license for }

      -
    • -

      My content isn't code.

      +
    • +

      My content isn’t code.

      Check out Creative Commons.

      @@ -68,9 +69,9 @@ description: A site to provide non-judgmental guidance on choosing a license for

    • -

      I don't want to choose a license.

      +

      I don’t want to choose a license.

      - You don't have to. + You don’t have to.

    diff --git a/js/ZeroClipboard.swf b/js/ZeroClipboard.swf deleted file mode 100644 index a3aaa20..0000000 Binary files a/js/ZeroClipboard.swf and /dev/null differ diff --git a/js/javascript.js b/js/javascript.js deleted file mode 100644 index 39b2a06..0000000 --- a/js/javascript.js +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: nil ---- - -{% include js/jquery-1.10.2.min.js %} -{% include js/jquery.qtip.min.js %} -{% include js/ZeroClipboard.min.js %} -{% include js/annotations.js %} -{% include js/app.js %} diff --git a/licenses.html b/licenses.html index 0445a54..e517497 100644 --- a/licenses.html +++ b/licenses.html @@ -7,14 +7,9 @@ title: Licenses

    Featured Licenses

    -{% assign sorted_pages = site.pages | sort: 'path' %} - -{% for page in sorted_pages %} - {% if page.layout == "license" %} - {% if page.featured %} - {% include license-overview.html %} - {% endif %} - {% endif %} +{% assign featured_licenses = site.licenses | where:"featured",true %} +{% for license in featured_licenses | sort: 'path' %} + {% include license-overview.html license=license %} {% endfor %}

    Other licenses

    @@ -22,11 +17,7 @@ title: Licenses Some communities tend to have specific licenses preferred by the community. For example, Perl developers often choose the Artistic License.

    - -{% for page in sorted_pages %} - {% if page.layout == "license" %} - {% if page.featured != true and page.hide-from-license-list != true %} - {% include license-overview.html %} - {% endif %} - {% endif %} +{% assign licenses = site.licenses | where:"featured",false | where:"hidden",false | where:"variant",false %} +{% for license in licenses %} + {% include license-overview.html license=license %} {% endfor %} diff --git a/licenses.json b/licenses.json deleted file mode 100644 index edf1a4c..0000000 --- a/licenses.json +++ /dev/null @@ -1,28 +0,0 @@ ---- -comment: \ - because the for loop is being filtered by layout, the normal rindex0 check - for the trailing comma doesn't work. Count the number of licenses and manually - increment an index to see if we're on the true last iteration. ---- -{% assign count = 0 %}{% for page in site.pages %}{% if page.layout == "license" %}{% assign count = count | plus: 1 %}{% endif %}{% endfor %}{% assign i = 0 %} -[ -{% for page in site.pages %}{% if page.layout == "license" %} - { - "title": "{{ page.title }}", - "permalink": "{{ page.permalink }}", - "featured": {% if page.featured %}true{% else %}false{% endif %}, - "description": "{{ page.description | replace: '"', '\"' }}", - "how": "{{ page.how | replace: '"', '\"' }}", - "rules": { - {% for category in site.rules %} - {% assign cat = category[0] %} - "{{ cat }}": [ - {% for rule in page[cat] %} - "{{ rule }}"{% if forloop.rindex0 > 0 %},{% endif %} - {% endfor %} - ]{% if forloop.rindex0 > 0 %},{% endif %} - {% endfor %} - }{% assign i = i | plus: 1 %} - }{% if i < count %},{% endif %} - {% endif %}{% endfor %} -] diff --git a/no-license.md b/no-license.md index aeccd0d..298e7ae 100644 --- a/no-license.md +++ b/no-license.md @@ -6,8 +6,8 @@ title: No License You're under no obligation to choose a license and it's your right not to include one with your code or project. But please note that opting out of open source licenses doesn't mean you're opting out of copyright law. -You'll have to check with your own legal counsel regarding your particular project, but generally speaking, the absence of a license means that default copyright laws apply. This means that you retain all rights to your source code and that nobody else may reproduce, distribute, or create derivative works from your work. This might not be what you intend. +You'll have to check with your own legal counsel regarding your particular project, but generally speaking, the absence of a license means that default copyright laws apply. This means that you retain all rights to your source code and that nobody else may reproduce, distribute, or create derivative works from your work. + +Disallowing use of your code might not be what you intend by "no license." An [open-source license](/) allows reuse of your code while maintaining copyright. If your goal is to explicitly opt-out of copyright protections, try a public domain dedication like the [Unlicense](/licenses/unlicense/) or [CC0](/licenses/cc0). If you want to share your work with others, you must opt into it. Even in the absence of a license file, you may grant some rights in cases where you publish your source code to a site that requires accepting terms of service. For example, if you publish your source code in a public repository on GitHub, you have accepted the [Terms of Service](https://help.github.com/articles/github-terms-of-service) which do allow other GitHub users some rights. Specifically, you allow others to view and fork your repository. - -If you want to share your work with others, please consider choosing an open source license. diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..aef3fa1 --- /dev/null +++ b/robots.txt @@ -0,0 +1,9 @@ +--- +--- + +# www.robotstxt.org/ + +# Allow crawling of all content +User-agent: * +Disallow: +Sitemap: {{ site.url }}/sitemap.xml diff --git a/script/bootstrap b/script/bootstrap index 8a6128e..b659455 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -6,8 +6,5 @@ echo "bundling installin'" gem install bundler bundle install -echo "npm installin'" -npm install coffee-script - echo -echo "You're all set. Just run script/server and you can play license roulette!" \ No newline at end of file +echo "You're all set. Just run script/server and you can play license roulette!" diff --git a/script/cibuild b/script/cibuild index f0647b6..241f1f7 100755 --- a/script/cibuild +++ b/script/cibuild @@ -2,8 +2,5 @@ set -e -echo "compiling javascript..." -./node_modules/.bin/coffee -c _includes/js/app.coffee - echo "building the site..." bundle exec rake test diff --git a/script/downcase b/script/downcase new file mode 100755 index 0000000..9939e87 --- /dev/null +++ b/script/downcase @@ -0,0 +1,7 @@ +#! /usr/bin/env ruby +# downcases all licenses in a git-friendly way + +Dir["_licenses/*"].each do |file| + system "git mv #{file} #{file.downcase}2" + system "git mv #{file.downcase}2 #{file.downcase}" +end diff --git a/script/generate-docs b/script/generate-docs new file mode 100755 index 0000000..bf3b8da --- /dev/null +++ b/script/generate-docs @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby +# Usage: script/generate-docs +# Reads in the fields, meta, and rules YAML files and produces markdown output +# suitable for documenting in the project's README + +require 'yaml' + +fields = YAML.load_file("_data/fields.yml") +meta = YAML.load_file("_data/meta.yml") +rules = YAML.load_file("_data/rules.yml") + +puts "\n### Fields\n\n" +fields.each do |field| + puts "* `#{field["name"]}` - #{field["description"]}" +end + +puts "\n### YAML front matter\n" +meta = meta.group_by { |m| m["required"] } + +puts "\n#### Required fields\n\n" +meta[true].each do |meta| + puts "* `#{meta["name"]}` - #{meta["description"]}" +end + +puts "\n#### Optional fields\n\n" +meta[false].each do |meta| + puts "* `#{meta["name"]}` - #{meta["description"]}" +end + +puts "\n### Rules\n" +rules.each do |group, rules| + puts "\n#### #{group.capitalize}\n\n" + rules.each do |rule| + puts "* `#{rule["tag"]}` - #{rule["description"]}" + end +end diff --git a/script/server b/script/server index 901dd03..987b025 100755 --- a/script/server +++ b/script/server @@ -2,11 +2,8 @@ set -e -echo "compiling javascript..." -./node_modules/.bin/coffee -c _includes/js/app.coffee - echo "spinning up the server..." bundle exec jekyll serve -w echo "cleaning up..." -rm -Rf _site \ No newline at end of file +rm -Rf _site diff --git a/spec/license_category_spec.rb b/spec/license_category_spec.rb new file mode 100644 index 0000000..2e5e9f8 --- /dev/null +++ b/spec/license_category_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' + +categories.each do |category| + describe "the #{category} category" do + category_licenses = licenses.select { |l| l["category"] == category } + primary = category_licenses.select { |l| l["variant"] == false } + variants = category_licenses.select { |l| l["variant"] == true } + + it "should only have one primary license" do + expect(primary.count).to eql(1) + end + + it "all other licenses should be variants" do + expected = category_licenses.count - 1 + expect(variants.count).to eql(expected) + end + + category_licenses.each do |license| + describe "the #{license["title"]} license" do + it "should have a unique slug" do + dupes = category_licenses.select { |l| l["tab-slug"] == license["tab-slug"] }.count + expect(dupes).to eql(1) + end + + it "should have a valid tab-slug" do + expect(license["tab-slug"]).to match(/[a-z0-9_]/) + end + end + end + end +end diff --git a/spec/license_fields_spec.rb b/spec/license_fields_spec.rb new file mode 100644 index 0000000..5ea79d6 --- /dev/null +++ b/spec/license_fields_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +licenses.each do |license| + describe "The #{license["title"]} license" do + it "should only contain supported fields" do + matches = license["content"].scan /\[([a-z]+)\]/ + extra_fields = matches.flatten - fields.map { |f| f["name"] } + expect(extra_fields).to be_empty + end + end +end diff --git a/spec/license_meta_spec.rb b/spec/license_meta_spec.rb new file mode 100644 index 0000000..796b7eb --- /dev/null +++ b/spec/license_meta_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +licenses.each do |license| + + # Manually load the raw license so we don't get thed defaults + raw_fields = SafeYAML.load_file("_licenses/#{license["id"]}.txt") + + describe "The #{license["title"]} license" do + it "should only contain supported meta fields" do + extra_fields = raw_fields.keys - meta.map { |m| m["name"] } + expect(extra_fields).to be_empty + end + + it "should contain all required meta fields" do + required = meta.select { |m| m["required"] }.map { |m| m["name"] } + missing = required - raw_fields.keys + expect(missing).to be_empty + end + + if license["category"] + it "should contain the required license variant fields" do + missing = ["category", "tab-slug"] - license.keys + expect(missing).to be_empty + end + else + it "should not contain license family specific fields" do + extra = ["variant", "category", "tab-slug"].select{ |f| raw_fields.keys.include?(f) } + expect(extra).to be_empty + end + end + end +end diff --git a/spec/license_rules_spec.rb b/spec/license_rules_spec.rb new file mode 100644 index 0000000..5049bea --- /dev/null +++ b/spec/license_rules_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +licenses.each do |license| + + groups = rules.keys + + describe "The #{license["title"]} license" do + groups.each do |group| + + valid_tags = rules[group].map { |r| r["tag"] } + + describe "the #{group} group" do + it "should exist" do + expect(license[group]).to_not be_nil + end + + it "should only contain valid tags" do + extra = license[group] - valid_tags + expect(extra).to be_empty + end + end + end + end +end diff --git a/spec/license_spec.rb b/spec/license_spec.rb new file mode 100644 index 0000000..fe4b73b --- /dev/null +++ b/spec/license_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +# List of licenses that need not be OSI approved +LICENSE_WHITELIST = %w[ + unlicense + cc0-1.0 + wtfpl + bsd-3-clause-clear +] + +licenses.each do |license| + describe "The #{license["title"]} license" do + describe "SPDX compliance" do + # "No license" isn't really a license, so no need to test + unless license["id"] == "no-license" + it "#{license["id"]} should be a valid SPDX ID" do + expect(find_spdx(license["id"])).to_not be_nil + end + + it "should be the proper SPDX name" do + spdx = find_spdx(license["id"]) + expect(spdx[1]["name"].gsub(/ only$/,"")).to eql(license["title"]) + end + + # CC0 and Unlicense are not OSI approved, but that's okay + unless LICENSE_WHITELIST.include? license["id"] + it "should be OSI approved" do + spdx = find_spdx(license["id"]) + approved = spdx[1]["osiApproved"] + expect(approved).to eql(true) + end + end + end + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..ddf381e --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,59 @@ +require 'jekyll' +require 'open-uri' +require 'json' + +def config_file + File.expand_path "./_config.yml", source +end + +def source + File.expand_path("../", File.dirname(__FILE__)) +end + +def config + config = Jekyll::Configuration.new.read_config_file config_file + config = Jekyll::Utils.deep_merge_hashes(config, {:source => source}) + Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, config) +end + +def licenses + site.collections["licenses"].docs.map { |l| l.to_liquid.merge("id" => l.basename(".txt")) } +end + +def categories + licenses.map { |l| l["category"] }.compact.uniq +end + +def site + $site ||= begin + site = Jekyll::Site.new(config) + site.reset + site.read + site + end +end + +def rules + site.data["rules"] +end + +def fields + site.data["fields"] +end + +def meta + site.data["meta"] +end + +def rule?(tag, group) + rules[group].any? { |r| r["tag"] == tag } +end + +def spdx_list + url = "https://raw.githubusercontent.com/sindresorhus/spdx-license-list/master/spdx.json" + $spdx ||= JSON.parse(open(url).read) +end + +def find_spdx(license) + spdx_list.find { |name, properties| name.downcase == license } +end diff --git a/terms-of-service.md b/terms-of-service.md index 4181269..e2d6036 100644 --- a/terms-of-service.md +++ b/terms-of-service.md @@ -6,31 +6,31 @@ permalink: /terms-of-service/ --- ### 1. Introduction -Welcome to Choosealicense.com (the “Site”). The Site is operated by GitHub, Inc. (“GitHub” or “we”), a Delaware corporation headquartered in lovely San Francisco, California. This document – the Site’s terms of service – is an agreement between you, the beloved user, and GitHub. It’s referred to as the “Terms” or the “Agreement.” -These Terms govern your use of the Site and this Site only. The Terms neither relate to any other GitHub website, service or property nor your use of any other GitHub website, service or property. For example, these Terms don’t govern your use of www.github.com. +Welcome to Choosealicense.com (the "Site"). The Site is operated by GitHub, Inc. ("GitHub" or "we"), a Delaware corporation headquartered in lovely San Francisco, California. This document – the Site's terms of service – is an agreement between you, the beloved user, and GitHub. It's referred to as the "Terms" or the "Agreement". +These Terms govern your use of the Site and this Site only. The Terms neither relate to any other GitHub website, service or property nor your use of any other GitHub website, service or property. For example, these Terms don't govern your use of www.github.com. ### 2. Agreement to the Terms Terms of service agreements are contracts. That means that this Agreement is a contract between you and GitHub for the limited purpose of laying out what our respective rights and obligations are with respect to Choosealicense.com. -If there’s something in these Terms you don’t agree with or don’t understand, please don’t use the Site. By accessing or using the Site, you signal your agreement with and consent to the Terms. By accessing or using any Website or Service you also represent that you have the legal authority to accept the Terms on behalf of yourself and any party you represent in connection with your use of any Website or Service. +If there's something in these Terms you don't agree with or don't understand, please don't use the Site. By accessing or using the Site, you signal your agreement with and consent to the Terms. By accessing or using any Website or Service you also represent that you have the legal authority to accept the Terms on behalf of yourself and any party you represent in connection with your use of any Website or Service. Unless otherwise agreed to in writing with GitHub, your use of any Website or Service will always be subject to, at a minimum, the terms and conditions set out in this document. ### 3. No legal advice is being provided -GitHub is a lot of things, but it’s not a law firm. GitHub does not provide legal advice. Using the Site or sending us an email about the Site does not create an attorney-client relationship. Use of Choosealicense.com does not constitute legal advice nor does it create an attorney-client relationship. If you have any questions about the Site or its content, you should consult with your own legal counsel before moving forward with your project. In fact, you should always consult with your own lawyer before making any decisions that might have legal ramifications or that may impact your legal rights. +GitHub is a lot of things, but it's not a law firm. GitHub does not provide legal advice. Using the Site or sending us an email about the Site does not create an attorney-client relationship. Use of Choosealicense.com does not constitute legal advice nor does it create an attorney-client relationship. If you have any questions about the Site or its content, you should consult with your own legal counsel before moving forward with your project. In fact, you should always consult with your own lawyer before making any decisions that might have legal ramifications or that may impact your legal rights. -GitHub created the Site to help users get started with their open source projects. And we do hope it helps. But please keep in mind that we’re not lawyers (at least not most of us) and that we make mistakes like everyone else. For that reason, GitHub provides the Site on an “as-is” basis. GitHub makes no warranties regarding any information or licenses provided on or through the Site, and disclaims liability for damages resulting from use of the Site. +GitHub created the Site to help users get started with their open source projects. And we do hope it helps. But please keep in mind that we're not lawyers (at least not most of us) and that we make mistakes like everyone else. For that reason, GitHub provides the Site on an "as-is" basis. GitHub makes no warranties regarding any information or licenses provided on or through the Site, and disclaims liability for damages resulting from use of the Site. -The next few sections of these Terms go into greater detail on these disclaimers and lack of warranties. They’re in caps so that you notice them. +The next few sections of these Terms go into greater detail on these disclaimers and lack of warranties. They're in caps so that you notice them. ### 4. DISCLAIMER OF WARRANTIES -TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, GITHUB OFFERS THE SITE ON AN AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WEBSITES OR SERVICES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. GITHUB DOES NOT WARRANT THAT THE FUNCTIONS OR CONTENT CONTAINED ON THE WEBSITE OR SERVICES WILL BE ERROR-FREE, THAT DEFECTS WILL BE CORRECTED, OR THAT GITHUB’S SERVERS ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. GITHUB DOES NOT WARRANT OR MAKE ANY REPRESENTATION REGARDING USE OR THE RESULT OF USE OF THE CONTENT IN TERMS OF ACCURACY, RELIABILITY, OR OTHERWISE. +TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, GITHUB OFFERS THE SITE ON AN AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WEBSITES OR SERVICES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. GITHUB DOES NOT WARRANT THAT THE FUNCTIONS OR CONTENT CONTAINED ON THE WEBSITE OR SERVICES WILL BE ERROR-FREE, THAT DEFECTS WILL BE CORRECTED, OR THAT GITHUB'S SERVERS ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. GITHUB DOES NOT WARRANT OR MAKE ANY REPRESENTATION REGARDING USE OR THE RESULT OF USE OF THE CONTENT IN TERMS OF ACCURACY, RELIABILITY, OR OTHERWISE. ### 5. LIMITATION OF LIABILITY -EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW AND THEN ONLY TO THAT EXTENT, IN NO EVENT WILL GITHUB, ITS EMPLOYEES, OFFICERS, DIRECTORS, AFFILIATES OR AGENTS (“THE GITHUB PARTIES”) BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY INCIDENTAL, DIRECT, INDIRECT, PUNITIVE, ACTUAL, CONSEQUENTIAL, SPECIAL, EXEMPLARY OR OTHER DAMAGES, INCLUDING WITHOUT LIMITATION, LOSS OF REVENUE OR INCOME, LOST PROFITS, PAIN AND SUFFERING, EMOTIONAL DISTRESS, COST OF SUBSTITUTE GOODS OR SERVICES, OR SIMILAR DAMAGES SUFFERED OR INCURRED BY YOU OR ANY THIRD PARTY THAT ARISE IN CONNECTION WITH THE WEBSITES OR SERVICES (OR THE TERMINATION THEREOF FOR ANY REASON), EVEN IF THE GITHUB PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW AND THEN ONLY TO THAT EXTENT, IN NO EVENT WILL GITHUB, ITS EMPLOYEES, OFFICERS, DIRECTORS, AFFILIATES OR AGENTS ("THE GITHUB PARTIES") BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY INCIDENTAL, DIRECT, INDIRECT, PUNITIVE, ACTUAL, CONSEQUENTIAL, SPECIAL, EXEMPLARY OR OTHER DAMAGES, INCLUDING WITHOUT LIMITATION, LOSS OF REVENUE OR INCOME, LOST PROFITS, PAIN AND SUFFERING, EMOTIONAL DISTRESS, COST OF SUBSTITUTE GOODS OR SERVICES, OR SIMILAR DAMAGES SUFFERED OR INCURRED BY YOU OR ANY THIRD PARTY THAT ARISE IN CONNECTION WITH THE WEBSITES OR SERVICES (OR THE TERMINATION THEREOF FOR ANY REASON), EVEN IF THE GITHUB PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE GITHUB PARTIES SHALL NOT BE RESPONSIBLE OR LIABLE WHATSOEVER IN ANY MANNER FOR ANY CONTENT POSTED ON THE SITE (INCLUDING CLAIMS OF INFRINGEMENT RELATING TO CONTENT POSTED ON THE WEBSITES OR SERVICES, FOR YOUR USE OF THE WEBSITES AND SERVICES, OR FOR THE CONDUCT OF THIRD PARTIES WHETHER ON THE WEBSITES, IN CONNECTION WITH THE SERVICES OR OTHERWISE RELATING TO THE WEBSITES OR SERVICES. @@ -47,7 +47,7 @@ The disclaimer of warranties, the limitation of liability and the jurisdiction a These Terms are governed by and construed by the laws of the State of California, in the United States, exclusive of its choice of law rules. -The parties agree that any disputes or proceedings between GitHub and you concerning these Terms or the Site shall be brought in a federal or state court of competent jurisdiction sitting in the Northern District of California, and hereby consent to the personal jurisdiction and venue of such court. Either party’s failure to insist on or enforce strict performance of any of the Terms shall not be construed as a waiver of any provision or right. +The parties agree that any disputes or proceedings between GitHub and you concerning these Terms or the Site shall be brought in a federal or state court of competent jurisdiction sitting in the Northern District of California, and hereby consent to the personal jurisdiction and venue of such court. Either party's failure to insist on or enforce strict performance of any of the Terms shall not be construed as a waiver of any provision or right. If any term or part of the Terms is held to be invalid or unenforceable by any law or regulation or final determination of a competent court or tribunal, that provision will be deemed severable and will not affect the validity and enforceability of any remaining provisions.