├── CNAME ├── adobe.ico ├── img ├── star.ai ├── .DS_Store ├── chrome.png ├── filter.ai ├── logo.jpg ├── logo_m.jpg ├── firefox.png ├── phonegap.ai ├── phonegap.png ├── Adobe-logo.png ├── AngularJS.png ├── adobe-tag.png ├── zurb-yeti.png ├── Adobe-Tag-Logo.png ├── adobe_research.png ├── adobe_research.psd ├── schema_adobe_open_source.png ├── star_off.svg ├── star_on.svg ├── filter.svg ├── photoshop_logo.svg ├── github_logo.svg ├── snapsvg.svg ├── brackets_logo.svg ├── brackets_inspect.svg ├── brackets_edge.svg ├── phonegap.svg └── brackets_plus.svg ├── robots.txt ├── .gitignore ├── stylesheets ├── print.css ├── sass │ ├── print.scss │ ├── ie.scss │ ├── screen.scss │ ├── _mixincss3.scss │ └── _normalize.scss ├── ie.css ├── main.css ├── clastyles.css ├── screen.css ├── syntax.css └── styles.css ├── humans.txt ├── views ├── stats.html ├── loading.html ├── org.html └── project.html ├── config.rb ├── MIT-LICENSE.txt ├── data ├── featured.json └── org.json ├── js ├── foundation │ ├── foundation.alerts.js │ ├── foundation.cookie.js │ ├── foundation.placeholder.js │ ├── foundation.dropdown.js │ ├── foundation.tooltips.js │ ├── foundation.abide.js │ ├── foundation.interchange.js │ ├── foundation.reveal.js │ ├── foundation.topbar.js │ ├── foundation.js │ ├── foundation.orbit.js │ └── foundation.section.js ├── dcjs │ └── crossfilter.min.js └── vendor │ └── custom.modernizr.js ├── offline.html ├── README.md ├── params.json └── cla.html /CNAME: -------------------------------------------------------------------------------- 1 | opensource.adobe.com -------------------------------------------------------------------------------- /adobe.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/adobe.ico -------------------------------------------------------------------------------- /img/star.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/star.ai -------------------------------------------------------------------------------- /img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/.DS_Store -------------------------------------------------------------------------------- /img/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/chrome.png -------------------------------------------------------------------------------- /img/filter.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/filter.ai -------------------------------------------------------------------------------- /img/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/logo.jpg -------------------------------------------------------------------------------- /img/logo_m.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/logo_m.jpg -------------------------------------------------------------------------------- /img/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/firefox.png -------------------------------------------------------------------------------- /img/phonegap.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/phonegap.ai -------------------------------------------------------------------------------- /img/phonegap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/phonegap.png -------------------------------------------------------------------------------- /img/Adobe-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/Adobe-logo.png -------------------------------------------------------------------------------- /img/AngularJS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/AngularJS.png -------------------------------------------------------------------------------- /img/adobe-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/adobe-tag.png -------------------------------------------------------------------------------- /img/zurb-yeti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/zurb-yeti.png -------------------------------------------------------------------------------- /img/Adobe-Tag-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/Adobe-Tag-Logo.png -------------------------------------------------------------------------------- /img/adobe_research.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/adobe_research.png -------------------------------------------------------------------------------- /img/adobe_research.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/adobe_research.psd -------------------------------------------------------------------------------- /img/schema_adobe_open_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe/adobe.github.com/master/img/schema_adobe_open_source.png -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache/ 3 | .sublime-workspace 4 | .sublime-project 5 | .DS_Store 6 | node_modules/ 7 | package-lock.json 8 | -------------------------------------------------------------------------------- /img/star_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/star_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /stylesheets/print.css: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to define print styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 4 | -------------------------------------------------------------------------------- /stylesheets/sass/print.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to define print styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 4 | -------------------------------------------------------------------------------- /humans.txt: -------------------------------------------------------------------------------- 1 | /* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */ 2 | /* zurb.com */ 3 | /* humanstxt.org */ 4 | 5 | /* SITE */ 6 | Standards: HTML5, CSS3 7 | Components: jQuery, Orbit, Reveal 8 | Software: Coda, Textmate, Git -------------------------------------------------------------------------------- /stylesheets/ie.css: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to write IE specific override styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 6 | -------------------------------------------------------------------------------- /stylesheets/main.css: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to write IE specific override styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 6 | -------------------------------------------------------------------------------- /stylesheets/sass/ie.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to write IE specific override styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 6 | -------------------------------------------------------------------------------- /stylesheets/sass/screen.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. 2 | * In this file you should write your main styles. (or centralize your imports) 3 | * Import this file using the following HTML or equivalent: 4 | * */ 5 | 6 | @import "compass/reset"; 7 | -------------------------------------------------------------------------------- /views/stats.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /stylesheets/clastyles.css: -------------------------------------------------------------------------------- 1 | /* CSS! */ 2 | 3 | body, html { 4 | width: 100%; 5 | height: 100%; 6 | margin: 0; 7 | padding: 0 8 | } 9 | 10 | body { 11 | overflow: auto; 12 | } 13 | 14 | iframe { 15 | padding-top:5%; 16 | overflow: auto; 17 | height: 100%; 18 | width: 100%; 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | } 23 | -------------------------------------------------------------------------------- /views/loading.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Loading 16 |
17 |
-------------------------------------------------------------------------------- /views/org.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |

{{org.name}}

6 |
7 |
8 |
9 |
10 |

{{org.desc | shortenStr}}

11 |

Learn more...

12 |
13 |
-------------------------------------------------------------------------------- /img/filter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | # Require any additional compass plugins here. 2 | require "zurb-foundation" 3 | 4 | # Set this to the root of your project when deployed: 5 | http_path = "/" 6 | css_dir = "stylesheets" 7 | sass_dir = "stylesheets/sass" 8 | images_dir = "img" 9 | javascripts_dir = "js" 10 | 11 | # You can select your preferred output style here (can be overridden via the command line): 12 | # output_style = :expanded or :nested or :compact or :compressed 13 | 14 | # To enable relative paths to assets via compass helper functions. Uncomment: 15 | # relative_assets = true 16 | 17 | # To disable debugging comments that display the original location of your selectors. Uncomment: 18 | # line_comments = false 19 | 20 | 21 | # If you prefer the indented syntax, you might want to regenerate this 22 | # project again passing --syntax sass, or you can uncomment this: 23 | # preferred_syntax = :sass 24 | # and then run: 25 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass 26 | -------------------------------------------------------------------------------- /stylesheets/sass/_mixincss3.scss: -------------------------------------------------------------------------------- 1 | @mixin animation ($name, $duration, $iterations) { 2 | -webkit-animation-duration: $duration; 3 | -webkit-animation-name: $name; 4 | -webkit-animation-iteration-count: $iterations; 5 | 6 | -moz-animation-duration: $duration; 7 | -moz-animation-name: $name; 8 | -moz-animation-iteration-count: $iterations; 9 | 10 | -o-animation-duration: $duration; 11 | -o-animation-name: $name; 12 | -o-animation-iteration-count: $iterations; 13 | 14 | animation-duration: $duration; 15 | animation-name: $name; 16 | animation-iteration-count: $iterations; 17 | } 18 | 19 | @mixin animation-delay($name) { 20 | -webkit-animation-delay: $name; 21 | -moz-animation-delay: $name; 22 | -ms-animation-delay: $name; 23 | animation-delay: $name; 24 | } 25 | 26 | @mixin keyframes($name) { 27 | @-webkit-keyframes $name { @content; } 28 | @-moz-keyframes $name { @content; } 29 | @-ms-keyframes $name { @content; } 30 | @keyframes $name { @content; } 31 | } -------------------------------------------------------------------------------- /MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 ZURB, http://www.zurb.com/ 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /data/featured.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "projects": [ 4 | { 5 | "title": "Snap.svg", 6 | "logo": "img/snapsvg.svg", 7 | "textHeader": [ 8 | "

Snap.svg

", 9 | "

The JavaScript SVG library for the modern web.
", 10 | "Learn more...

" 11 | ] 12 | } 13 | ], 14 | "orgs": [ 15 | { 16 | "title": "Adobe Research", 17 | "logo": "img/adobe_research.png", 18 | "textHeader": [ 19 | "

Adobe Research

", 20 | "

Open-source published code from cutting-edge research at Adobe.
", 21 | "Learn more..." 22 | ] 23 | }, 24 | { 25 | "title": "Photoshop", 26 | "logo": "img/photoshop_logo.svg", 27 | "textHeader": [ 28 | "

Photoshop

", 29 | "

Code produced by the Adobe Photoshop team
", 30 | "View on github..." 31 | ] 32 | } 33 | ] 34 | } 35 | ] 36 | -------------------------------------------------------------------------------- /js/foundation/foundation.alerts.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.alerts = { 7 | name : 'alerts', 8 | 9 | version : '4.2.2', 10 | 11 | settings : { 12 | speed: 300, // fade out speed 13 | callback: function (){} 14 | }, 15 | 16 | init : function (scope, method, options) { 17 | this.scope = scope || this.scope; 18 | 19 | if (typeof method === 'object') { 20 | $.extend(true, this.settings, method); 21 | } 22 | 23 | if (typeof method !== 'string') { 24 | if (!this.settings.init) { this.events(); } 25 | 26 | return this.settings.init; 27 | } else { 28 | return this[method].call(this, options); 29 | } 30 | }, 31 | 32 | events : function () { 33 | var self = this; 34 | 35 | $(this.scope).on('click.fndtn.alerts', '[data-alert] a.close', function (e) { 36 | e.preventDefault(); 37 | $(this).closest("[data-alert]").fadeOut(self.speed, function () { 38 | $(this).remove(); 39 | self.settings.callback(); 40 | }); 41 | }); 42 | 43 | this.settings.init = true; 44 | }, 45 | 46 | off : function () { 47 | $(this.scope).off('.fndtn.alerts'); 48 | }, 49 | 50 | reflow : function () {} 51 | }; 52 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /img/photoshop_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/project.html: -------------------------------------------------------------------------------- 1 | 2 |

3 |
4 |
5 |

{{project.name}}

6 |
7 |
8 |
9 | 10 |
11 | 12 |
{{project.watchers_count | niceNum}}
13 |
14 |
15 |
16 |

{{project.languages[language].name}}, Unknown

17 |

{{project.org}}

18 |
19 |

{{project.description | shortenStr}}

20 |
21 |

Last pushed: {{project.pushed_at | timeDiff }}

22 | 23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /img/github_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/snapsvg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/org.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "userName": "adobe", 4 | "name": "Adobe Systems", 5 | "desc": "Repository for certain Adobe Open Source releases" 6 | }, 7 | { 8 | "userName": "adobe-webplatform", 9 | "name": "Adobe Web Platform", 10 | "desc": "We work with standards bodies to advance technologies that let you create ever-more compelling experiences for the web." 11 | }, 12 | { 13 | "userName": "adobe-research", 14 | "name": "Adobe Research", 15 | "desc": "We create innovative technologies relevant to our software products." 16 | }, 17 | { 18 | "userName": "adobe-photoshop", 19 | "name": "Adobe Photoshop", 20 | "desc": "Just about every creative digital project has Photoshop CC at its core." 21 | }, 22 | { 23 | "userName": "adobe-fonts", 24 | "name": "Adobe Fonts", 25 | "desc": "Releases from the Adobe Font teams" 26 | }, 27 | { 28 | "userName": "typekit", 29 | "name": "Adobe Typekit", 30 | "desc": "Open source projects by Adobe Typekit" 31 | }, 32 | { 33 | "userName": "adobe-consulting-services", 34 | "name": "Adobe Consulting Services", 35 | "desc": "Adobe Consulting's open source projects" 36 | }, 37 | { 38 | "userName": "adobe-marketing-cloud", 39 | "name": "Adobe Marketing Cloud", 40 | "desc": "The most comprehensive set of marketing solutions." 41 | }, 42 | { 43 | "userName": "adobe-apiplatform", 44 | "name": "Adobe API Platform", 45 | "desc": "Home of projects that are part of the API Platform." 46 | }, 47 | { 48 | "userName": "adobe-sign", 49 | "name": "Adobe Sign", 50 | "desc": "SDK to integrate with Adobe Sign. Send documents for signature and manage them using the Adobe Sign APIs." 51 | }, 52 | { 53 | "userName": "magento", 54 | "name": "Magento", 55 | "desc": "open-source e-commerce platform" 56 | }, 57 | { 58 | "userName": "adobexd", 59 | "name": "Adobe XD", 60 | "desc": "Docs and Samples for Adobe XD Plugins" 61 | } 62 | ] 63 | -------------------------------------------------------------------------------- /js/foundation/foundation.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.3 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2011, Klaus Hartl 6 | * Dual licensed under the MIT or GPL Version 2 licenses. 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * http://www.opensource.org/licenses/GPL-2.0 9 | * 10 | * Modified to work with Zepto.js by ZURB 11 | */ 12 | (function ($, document, undefined) { 13 | 14 | var pluses = /\+/g; 15 | 16 | function raw(s) { 17 | return s; 18 | } 19 | 20 | function decoded(s) { 21 | return decodeURIComponent(s.replace(pluses, ' ')); 22 | } 23 | 24 | var config = $.cookie = function (key, value, options) { 25 | 26 | // write 27 | if (value !== undefined) { 28 | options = $.extend({}, config.defaults, options); 29 | 30 | if (value === null) { 31 | options.expires = -1; 32 | } 33 | 34 | if (typeof options.expires === 'number') { 35 | var days = options.expires, t = options.expires = new Date(); 36 | t.setDate(t.getDate() + days); 37 | } 38 | 39 | value = config.json ? JSON.stringify(value) : String(value); 40 | 41 | return (document.cookie = [ 42 | encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), 43 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 44 | options.path ? '; path=' + options.path : '', 45 | options.domain ? '; domain=' + options.domain : '', 46 | options.secure ? '; secure' : '' 47 | ].join('')); 48 | } 49 | 50 | // read 51 | var decode = config.raw ? raw : decoded; 52 | var cookies = document.cookie.split('; '); 53 | for (var i = 0, l = cookies.length; i < l; i++) { 54 | var parts = cookies[i].split('='); 55 | if (decode(parts.shift()) === key) { 56 | var cookie = decode(parts.join('=')); 57 | return config.json ? JSON.parse(cookie) : cookie; 58 | } 59 | } 60 | 61 | return null; 62 | }; 63 | 64 | config.defaults = {}; 65 | 66 | $.removeCookie = function (key, options) { 67 | if ($.cookie(key) !== null) { 68 | $.cookie(key, null, options); 69 | return true; 70 | } 71 | return false; 72 | }; 73 | 74 | })(Foundation.zj, document); -------------------------------------------------------------------------------- /offline.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Adobe Open Source - Offline pull 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | Loading... 20 |
21 | 22 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /stylesheets/screen.css: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. 2 | * In this file you should write your main styles. (or centralize your imports) 3 | * Import this file using the following HTML or equivalent: 4 | * */ 5 | /* line 17, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font: inherit; 23 | font-size: 100%; 24 | vertical-align: baseline; 25 | } 26 | 27 | /* line 22, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 28 | html { 29 | line-height: 1; 30 | } 31 | 32 | /* line 24, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 33 | ol, ul { 34 | list-style: none; 35 | } 36 | 37 | /* line 26, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 38 | table { 39 | border-collapse: collapse; 40 | border-spacing: 0; 41 | } 42 | 43 | /* line 28, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 44 | caption, th, td { 45 | text-align: left; 46 | font-weight: normal; 47 | vertical-align: middle; 48 | } 49 | 50 | /* line 30, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 51 | q, blockquote { 52 | quotes: none; 53 | } 54 | /* line 103, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 55 | q:before, q:after, blockquote:before, blockquote:after { 56 | content: ""; 57 | content: none; 58 | } 59 | 60 | /* line 32, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 61 | a img { 62 | border: none; 63 | } 64 | 65 | /* line 116, ../../../../../../Users/chouard/.rvm/gems/ruby-2.0.0-p195/gems/compass-0.13.alpha.4/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ 66 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { 67 | display: block; 68 | } 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [Adobe Open Source](http://adobe.github.com) 2 | ======================= 3 | 4 | Presenting [Adobe GitHub Homepage v2.0](http://adobe.github.com), the new central hub for **Adobe Open sources** projects. 5 | 6 | Allowing you to **search through Adobe GitHub repositories**, you can focus on what you are really passionate about. 7 | 8 | - Are you a *web developer*? Search the repositories only containing *Javascript* code, because it rocks! 9 | - Love doing *technology watching*? Order by *Popularity*, by *Last Push* or select only the *5 stars (>1k followers)* projects to get the hottest repos! 10 | - Are you a *web designer* and want the perfect code editor? Search *brackets* and get all the repositories related to this awesome project! 11 | - Are you a *researcher*? Check out the project pushed in Open Source by the *Adobe Research* organization! 12 | 13 |

Adobe + Open Source = ♥

14 | 15 | That's why we built this project on top of cutting-edge technologies like: 16 | 17 | - [AngularJS](http://angularjs.org/), 18 | - [Foundation](http://foundation.zurb.com/), 19 | - [Github Pages](http://pages.github.com/) and [API](http://developer.github.com/v3/), 20 | - [NodeJS](http://nodejs.org) 21 | - [D3](http://d3js.org/) 22 | - and many more! 23 | 24 | The [Adobe Creative Cloud](http://www.adobe.com/products/creativecloud.html) is also a great asset for [designing](http://photoshop.com) and [coding](http://brackets.io) purposes. 25 | 26 | ## Be in touch! 27 | 28 | We hope you love this new homepage. Any feedback, ideas or bugfixes are very much welcome. Here is the [Trello board](https://trello.com/b/eLlfvaVe/adobe-github-com) on which you can add your ideas. You can also check out the [wiki page](https://github.com/adobe/adobe.github.com/wiki) to know how to update the page easily. 29 | 30 | All this seems interesting to you? Want to start contributing to the web with Adobe? 31 | 32 |

Join the team!

33 | 34 | ## Architecture 35 | 36 | Hummm... want to learn more about how all this is structured? A good sketch is better than a long speech, so here is a little schema: 37 | 38 |

Adobe Open Source schema

39 | 40 | The information is pulled directly from the [Github API](http://developer.github.com/v3/) and aggregated by a [NodeJS](http://nodejs.org) server (its code source is available [in this repository](https://github.com/adobe/server.adobe.github.com)). It is available through an simple REST API, thanks to [restify](http://mcavage.me/node-restify/). 41 | 42 | [AngularJS](http://angularjs.org/) then makes a unique API call to the server and inject the data on your browser, based on the [Foundation](http://foundation.zurb.com/) CSS framework and using [dc.js](http://nickqizhu.github.io/dc.js/) for the graphs. The filtering engine for the repositories was built on top of Angular. 43 | 44 | ## Deploying Locally 45 | 46 | Install local web server globally 47 | 48 | ``` 49 | npm i -g local-web-server 50 | ``` 51 | 52 | Run `ws` command in your terminal in the root of this project to lauch a local web server showing the site 53 | 54 | Site should be running on `http://localhost:8000/` 55 | -------------------------------------------------------------------------------- /img/brackets_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /params.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Adobe Open Source", 3 | "tagline": "Advancing technology through open initiatives", 4 | "body": "### Welcome to Adobe's open source on GitHub ![Adobe standard logo]( http://adobe.github.com/img/adobe_logo_standard_png.png)\r\n\r\n##**New and Noteworthy**:\r\n\r\n[**Cordova 3.3:** ](http://projects.apache.org/projects/cordova.html) Cordova 3.3 released (leaves the github site)\r\n\r\n[**ActionScript® 4 specification:** ](https://github.com/adobe-research/ActionScript4) The ActionScript® 4.0 Language Specification \r\n\r\n[**ShaderDSL**: ](https://github.com/adobe-webplatform/shaderdsl) is a compiler from a subset of JavaScript to GLSL. ShaderDSL.js allows you to write GLSL shaders in plain JavaScript, instead of the C like (GLSL) language used today.\r\n\r\n\r\n\r\n## **Organizations:**\r\n(Adobe groups that are releasing technology under open source. There may be multiple projects under each organization)\r\n\r\n[**Adobe:** ](https://github.com/adobe) Repository for certain Adobe Open Source releases\r\n\r\n[**Adobe Muse:** ](https://github.com/Adobe-Muse) Repository for releases from the Adobe Muse team\r\n\r\n[**Adobe Marketing Cloud:** ](https://github.com/organizations/Adobe-Marketing-Cloud/) Open source SDKs. samples and boilerplate from the Adobe Marketing Cloud\r\n\r\n[**Adobe Security:** ](https://github.com/adobe-security) Tools and techniques from Adobe Security\r\n\r\n[**Adobe Research:** ](https://github.com/adobe-research) Technology and cool stuff from Adobe Research\r\n\r\n[**Adobe Web Platform:** ](https://github.com/adobe-Webplatform) Technology relating to the web from Adobe Web Platform\r\n\r\n[**Adobe Fonts:** ](https://github.com/adobe-fonts) Open fonts and related technology from the Adobe Font teams\r\n\r\n[**Adobe CloudOps:** ](https://github.com/Adobe-CloudOps) Techniques and technology from the Adobe Cloud Operations\r\n\r\n[**Brackets:** ](http://www.brackets.io/) An open source code editor for the web, written in JavaScript, HTML and CSS\r\n\r\n[**Edge Code:** ](https://github.com/edge-code) The source for Edge code related technology\r\n\r\n[**Topcoat**: ](https://github.com/topcoat/topcoat) UI Library for creating beautiful and responsive applications using web standards\r\n\r\n[**Adobe Flash**: ](https://github.com/adobe-flash) Technology releases relating to Adobe Flash\r\n\r\n[**Adobe Photoshop**: ](https://github.com/adobe-photoshop) Adobe Photoshop teams open source technology releases\r\n\r\n## **Popular Projects**:\r\n\r\n[**Brackets:** ](http://www.brackets.io/) An open source code editor for the web, written in JavaScript, HTML and CSS\r\n\r\n[**Source Sans Pro:** ](https://github.com/adobe/source-sans-pro) OpenType fonts that have been designed to work well in user interface (UI) environments\r\n\r\n[**Source Code Pro:** ](https://github.com/adobe/source-code-pro) OpenType fonts that have been designed to work well in code environments\r\n\r\n[**CSS Filterlab:** ](https://github.com/adobe/cssfilterlab) Browser-based tool that lets you use and modify CSS filters and see the effects in real time \r\n\r\n[**Balanced Text:** ](https://github.com/adobe-webplatform/balance-text) jQuery plugin for implementing balancing of wrapping text in a web page\r\n\r\n[**Generator**: ](https://github.com/adobe-photoshop) is a JavaScript-based extensibility technology for Adobe Photoshop CC.\r\n\r\n[**Theseus**: ](https://github.com/adobe-research/theseus) is a new type of JavaScript debugger for Node.js, Chrome, and both simultaneously. It is an extension for the Brackets code editor. Theseus is part of a collaboration between the User Interface Design Group at MIT CSAIL and Adobe Research.\r\n\r\n***", 5 | "google": "UA-40048712-1", 6 | "note": "Don't delete this file! It's used internally to help with page regeneration." 7 | } 8 | -------------------------------------------------------------------------------- /stylesheets/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #0086B3 } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #008080 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #d14 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #009926 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #d14 } /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ 61 | -------------------------------------------------------------------------------- /cla.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | Adobe Contributor License Agreement 14 | 15 | 16 | 20 | 21 | 22 | 49 | 50 | 88 | 89 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /img/brackets_inspect.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/brackets_edge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/foundation/foundation.placeholder.js: -------------------------------------------------------------------------------- 1 | /*! http://mths.be/placeholder v2.0.7 by @mathias 2 | Modified to work with Zepto.js by ZURB 3 | */ 4 | ;(function(window, document, $) { 5 | 6 | var isInputSupported = 'placeholder' in document.createElement('input'), 7 | isTextareaSupported = 'placeholder' in document.createElement('textarea'), 8 | prototype = $.fn, 9 | valHooks = $.valHooks, 10 | hooks, 11 | placeholder; 12 | 13 | if (isInputSupported && isTextareaSupported) { 14 | 15 | placeholder = prototype.placeholder = function() { 16 | return this; 17 | }; 18 | 19 | placeholder.input = placeholder.textarea = true; 20 | 21 | } else { 22 | 23 | placeholder = prototype.placeholder = function() { 24 | var $this = this; 25 | $this 26 | .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]') 27 | .not('.placeholder') 28 | .bind({ 29 | 'focus.placeholder': clearPlaceholder, 30 | 'blur.placeholder': setPlaceholder 31 | }) 32 | .data('placeholder-enabled', true) 33 | .trigger('blur.placeholder'); 34 | return $this; 35 | }; 36 | 37 | placeholder.input = isInputSupported; 38 | placeholder.textarea = isTextareaSupported; 39 | 40 | hooks = { 41 | 'get': function(element) { 42 | var $element = $(element); 43 | return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value; 44 | }, 45 | 'set': function(element, value) { 46 | var $element = $(element); 47 | if (!$element.data('placeholder-enabled')) { 48 | return element.value = value; 49 | } 50 | if (value == '') { 51 | element.value = value; 52 | // Issue #56: Setting the placeholder causes problems if the element continues to have focus. 53 | if (element != document.activeElement) { 54 | // We can't use `triggerHandler` here because of dummy text/password inputs :( 55 | setPlaceholder.call(element); 56 | } 57 | } else if ($element.hasClass('placeholder')) { 58 | clearPlaceholder.call(element, true, value) || (element.value = value); 59 | } else { 60 | element.value = value; 61 | } 62 | // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363 63 | return $element; 64 | } 65 | }; 66 | 67 | isInputSupported || (valHooks.input = hooks); 68 | isTextareaSupported || (valHooks.textarea = hooks); 69 | 70 | $(function() { 71 | // Look for forms 72 | $(document).delegate('form', 'submit.placeholder', function() { 73 | // Clear the placeholder values so they don't get submitted 74 | var $inputs = $('.placeholder', this).each(clearPlaceholder); 75 | setTimeout(function() { 76 | $inputs.each(setPlaceholder); 77 | }, 10); 78 | }); 79 | }); 80 | 81 | // Clear placeholder values upon page reload 82 | $(window).bind('beforeunload.placeholder', function() { 83 | $('.placeholder').each(function() { 84 | this.value = ''; 85 | }); 86 | }); 87 | 88 | } 89 | 90 | function args(elem) { 91 | // Return an object of element attributes 92 | var newAttrs = {}, 93 | rinlinejQuery = /^jQuery\d+$/; 94 | $.each(elem.attributes, function(i, attr) { 95 | if (attr.specified && !rinlinejQuery.test(attr.name)) { 96 | newAttrs[attr.name] = attr.value; 97 | } 98 | }); 99 | return newAttrs; 100 | } 101 | 102 | function clearPlaceholder(event, value) { 103 | var input = this, 104 | $input = $(input); 105 | if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { 106 | if ($input.data('placeholder-password')) { 107 | $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); 108 | // If `clearPlaceholder` was called from `$.valHooks.input.set` 109 | if (event === true) { 110 | return $input[0].value = value; 111 | } 112 | $input.focus(); 113 | } else { 114 | input.value = ''; 115 | $input.removeClass('placeholder'); 116 | input == document.activeElement && input.select(); 117 | } 118 | } 119 | } 120 | 121 | function setPlaceholder() { 122 | var $replacement, 123 | input = this, 124 | $input = $(input), 125 | $origInput = $input, 126 | id = this.id; 127 | if (input.value == '') { 128 | if (input.type == 'password') { 129 | if (!$input.data('placeholder-textinput')) { 130 | try { 131 | $replacement = $input.clone().attr({ 'type': 'text' }); 132 | } catch(e) { 133 | $replacement = $('').attr($.extend(args(this), { 'type': 'text' })); 134 | } 135 | $replacement 136 | .removeAttr('name') 137 | .data({ 138 | 'placeholder-password': true, 139 | 'placeholder-id': id 140 | }) 141 | .bind('focus.placeholder', clearPlaceholder); 142 | $input 143 | .data({ 144 | 'placeholder-textinput': $replacement, 145 | 'placeholder-id': id 146 | }) 147 | .before($replacement); 148 | } 149 | $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); 150 | // Note: `$input[0] != input` now! 151 | } 152 | $input.addClass('placeholder'); 153 | $input[0].value = $input.attr('placeholder'); 154 | } else { 155 | $input.removeClass('placeholder'); 156 | } 157 | } 158 | 159 | }(this, document, Foundation.zj)); 160 | 161 | ;(function ($, window, document, undefined) { 162 | 'use strict'; 163 | 164 | Foundation.libs.placeholder = { 165 | name : 'placeholder', 166 | 167 | version : '4.2.2', 168 | 169 | init : function (scope, method, options) { 170 | this.scope = scope || this.scope; 171 | 172 | if (typeof method !== 'string') { 173 | window.onload = function () { 174 | $('input, textarea').placeholder(); 175 | } 176 | } 177 | } 178 | }; 179 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.dropdown.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.dropdown = { 7 | name : 'dropdown', 8 | 9 | version : '4.3.0', 10 | 11 | settings : { 12 | activeClass: 'open', 13 | is_hover: false, 14 | opened: function(){}, 15 | closed: function(){} 16 | }, 17 | 18 | init : function (scope, method, options) { 19 | this.scope = scope || this.scope; 20 | Foundation.inherit(this, 'throttle scrollLeft data_options'); 21 | 22 | if (typeof method === 'object') { 23 | $.extend(true, this.settings, method); 24 | } 25 | 26 | if (typeof method !== 'string') { 27 | 28 | if (!this.settings.init) { 29 | this.events(); 30 | } 31 | 32 | return this.settings.init; 33 | } else { 34 | return this[method].call(this, options); 35 | } 36 | }, 37 | 38 | events : function () { 39 | var self = this; 40 | 41 | $(this.scope) 42 | .on('click.fndtn.dropdown', '[data-dropdown]', function (e) { 43 | var settings = $.extend({}, self.settings, self.data_options($(this))); 44 | e.preventDefault(); 45 | 46 | if (!settings.is_hover) self.toggle($(this)); 47 | }) 48 | .on('mouseenter', '[data-dropdown]', function (e) { 49 | var settings = $.extend({}, self.settings, self.data_options($(this))); 50 | if (settings.is_hover) self.toggle($(this)); 51 | }) 52 | .on('mouseleave', '[data-dropdown-content]', function (e) { 53 | var target = $('[data-dropdown="' + $(this).attr('id') + '"]'), 54 | settings = $.extend({}, self.settings, self.data_options(target)); 55 | if (settings.is_hover) self.close.call(self, $(this)); 56 | }) 57 | .on('opened.fndtn.dropdown', '[data-dropdown-content]', this.settings.opened) 58 | .on('closed.fndtn.dropdown', '[data-dropdown-content]', this.settings.closed); 59 | 60 | $(document).on('click.fndtn.dropdown', function (e) { 61 | var parent = $(e.target).closest('[data-dropdown-content]'); 62 | 63 | if ($(e.target).data('dropdown')) { 64 | return; 65 | } 66 | if (parent.length > 0 && ($(e.target).is('[data-dropdown-content]') || $.contains(parent.first()[0], e.target))) { 67 | e.stopPropagation(); 68 | return; 69 | } 70 | 71 | self.close.call(self, $('[data-dropdown-content]')); 72 | }); 73 | 74 | $(window).on('resize.fndtn.dropdown', self.throttle(function () { 75 | self.resize.call(self); 76 | }, 50)).trigger('resize'); 77 | 78 | this.settings.init = true; 79 | }, 80 | 81 | close: function (dropdown) { 82 | var self = this; 83 | dropdown.each(function () { 84 | if ($(this).hasClass(self.settings.activeClass)) { 85 | $(this) 86 | .css(Foundation.rtl ? 'right':'left', '-99999px') 87 | .removeClass(self.settings.activeClass); 88 | $(this).trigger('closed'); 89 | } 90 | }); 91 | }, 92 | 93 | open: function (dropdown, target) { 94 | this 95 | .css(dropdown 96 | .addClass(this.settings.activeClass), target); 97 | dropdown.trigger('opened'); 98 | }, 99 | 100 | toggle : function (target) { 101 | var dropdown = $('#' + target.data('dropdown')); 102 | 103 | this.close.call(this, $('[data-dropdown-content]').not(dropdown)); 104 | 105 | if (dropdown.hasClass(this.settings.activeClass)) { 106 | this.close.call(this, dropdown); 107 | } else { 108 | this.close.call(this, $('[data-dropdown-content]')) 109 | this.open.call(this, dropdown, target); 110 | } 111 | }, 112 | 113 | resize : function () { 114 | var dropdown = $('[data-dropdown-content].open'), 115 | target = $("[data-dropdown='" + dropdown.attr('id') + "']"); 116 | 117 | if (dropdown.length && target.length) { 118 | this.css(dropdown, target); 119 | } 120 | }, 121 | 122 | css : function (dropdown, target) { 123 | var offset_parent = dropdown.offsetParent(); 124 | // if (offset_parent.length > 0 && /body/i.test(dropdown.offsetParent()[0].nodeName)) { 125 | var position = target.offset(); 126 | position.top -= offset_parent.offset().top; 127 | position.left -= offset_parent.offset().left; 128 | // } else { 129 | // var position = target.position(); 130 | // } 131 | 132 | if (this.small()) { 133 | dropdown.css({ 134 | position : 'absolute', 135 | width: '95%', 136 | left: '2.5%', 137 | 'max-width': 'none', 138 | top: position.top + this.outerHeight(target) 139 | }); 140 | } else { 141 | if (!Foundation.rtl && $(window).width() > this.outerWidth(dropdown) + target.offset().left) { 142 | var left = position.left; 143 | if (dropdown.hasClass('right')) { 144 | dropdown.removeClass('right'); 145 | } 146 | } else { 147 | if (!dropdown.hasClass('right')) { 148 | dropdown.addClass('right'); 149 | } 150 | var left = position.left - (this.outerWidth(dropdown) - this.outerWidth(target)); 151 | } 152 | 153 | dropdown.attr('style', '').css({ 154 | position : 'absolute', 155 | top: position.top + this.outerHeight(target), 156 | left: left 157 | }); 158 | } 159 | 160 | return dropdown; 161 | }, 162 | 163 | small : function () { 164 | return $(window).width() < 768 || $('html').hasClass('lt-ie9'); 165 | }, 166 | 167 | off: function () { 168 | $(this.scope).off('.fndtn.dropdown'); 169 | $('html, body').off('.fndtn.dropdown'); 170 | $(window).off('.fndtn.dropdown'); 171 | $('[data-dropdown-content]').off('.fndtn.dropdown'); 172 | this.settings.init = false; 173 | }, 174 | 175 | reflow : function () {} 176 | }; 177 | }(Foundation.zj, this, this.document)); 178 | -------------------------------------------------------------------------------- /img/phonegap.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/foundation/foundation.tooltips.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.tooltips = { 7 | name : 'tooltips', 8 | 9 | version : '4.2.2', 10 | 11 | settings : { 12 | selector : '.has-tip', 13 | additionalInheritableClasses : [], 14 | tooltipClass : '.tooltip', 15 | appendTo: 'body', 16 | 'disable-for-touch': false, 17 | tipTemplate : function (selector, content) { 18 | return '' + content + ''; 21 | } 22 | }, 23 | 24 | cache : {}, 25 | 26 | init : function (scope, method, options) { 27 | Foundation.inherit(this, 'data_options'); 28 | var self = this; 29 | 30 | if (typeof method === 'object') { 31 | $.extend(true, this.settings, method); 32 | } else if (typeof options !== 'undefined') { 33 | $.extend(true, this.settings, options); 34 | } 35 | 36 | if (typeof method !== 'string') { 37 | if (Modernizr.touch) { 38 | $(this.scope) 39 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 40 | '[data-tooltip]', function (e) { 41 | var settings = $.extend({}, self.settings, self.data_options($(this))); 42 | if (!settings['disable-for-touch']) { 43 | e.preventDefault(); 44 | $(settings.tooltipClass).hide(); 45 | self.showOrCreateTip($(this)); 46 | } 47 | }) 48 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 49 | this.settings.tooltipClass, function (e) { 50 | e.preventDefault(); 51 | $(this).fadeOut(150); 52 | }); 53 | } else { 54 | $(this.scope) 55 | .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip', 56 | '[data-tooltip]', function (e) { 57 | var $this = $(this); 58 | 59 | if (/enter|over/i.test(e.type)) { 60 | self.showOrCreateTip($this); 61 | } else if (e.type === 'mouseout' || e.type === 'mouseleave') { 62 | self.hide($this); 63 | } 64 | }); 65 | } 66 | 67 | // $(this.scope).data('fndtn-tooltips', true); 68 | } else { 69 | return this[method].call(this, options); 70 | } 71 | 72 | }, 73 | 74 | showOrCreateTip : function ($target) { 75 | var $tip = this.getTip($target); 76 | 77 | if ($tip && $tip.length > 0) { 78 | return this.show($target); 79 | } 80 | 81 | return this.create($target); 82 | }, 83 | 84 | getTip : function ($target) { 85 | var selector = this.selector($target), 86 | tip = null; 87 | 88 | if (selector) { 89 | tip = $('span[data-selector="' + selector + '"]' + this.settings.tooltipClass); 90 | } 91 | 92 | return (typeof tip === 'object') ? tip : false; 93 | }, 94 | 95 | selector : function ($target) { 96 | var id = $target.attr('id'), 97 | dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector'); 98 | 99 | if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') { 100 | dataSelector = 'tooltip' + Math.random().toString(36).substring(7); 101 | $target.attr('data-selector', dataSelector); 102 | } 103 | 104 | return (id && id.length > 0) ? id : dataSelector; 105 | }, 106 | 107 | create : function ($target) { 108 | var $tip = $(this.settings.tipTemplate(this.selector($target), $('
').html($target.attr('title')).html())), 109 | classes = this.inheritable_classes($target); 110 | 111 | $tip.addClass(classes).appendTo(this.settings.appendTo); 112 | if (Modernizr.touch) { 113 | $tip.append('tap to close '); 114 | } 115 | $target.removeAttr('title').attr('title',''); 116 | this.show($target); 117 | }, 118 | 119 | reposition : function (target, tip, classes) { 120 | var width, nub, nubHeight, nubWidth, column, objPos; 121 | 122 | tip.css('visibility', 'hidden').show(); 123 | 124 | width = target.data('width'); 125 | nub = tip.children('.nub'); 126 | nubHeight = this.outerHeight(nub); 127 | nubWidth = this.outerHeight(nub); 128 | 129 | objPos = function (obj, top, right, bottom, left, width) { 130 | return obj.css({ 131 | 'top' : (top) ? top : 'auto', 132 | 'bottom' : (bottom) ? bottom : 'auto', 133 | 'left' : (left) ? left : 'auto', 134 | 'right' : (right) ? right : 'auto', 135 | 'width' : (width) ? width : 'auto' 136 | }).end(); 137 | }; 138 | 139 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width); 140 | 141 | if ($(window).width() < 767) { 142 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width()); 143 | tip.addClass('tip-override'); 144 | objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); 145 | } else { 146 | var left = target.offset().left; 147 | if (Foundation.rtl) { 148 | left = target.offset().left + target.offset().width - this.outerWidth(tip); 149 | } 150 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', left, width); 151 | tip.removeClass('tip-override'); 152 | if (classes && classes.indexOf('tip-top') > -1) { 153 | objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', left, width) 154 | .removeClass('tip-override'); 155 | } else if (classes && classes.indexOf('tip-left') > -1) { 156 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width) 157 | .removeClass('tip-override'); 158 | } else if (classes && classes.indexOf('tip-right') > -1) { 159 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left + this.outerWidth(target) + nubHeight), width) 160 | .removeClass('tip-override'); 161 | } 162 | } 163 | 164 | tip.css('visibility', 'visible').hide(); 165 | }, 166 | 167 | inheritable_classes : function (target) { 168 | var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses), 169 | classes = target.attr('class'), 170 | filtered = classes ? $.map(classes.split(' '), function (el, i) { 171 | if ($.inArray(el, inheritables) !== -1) { 172 | return el; 173 | } 174 | }).join(' ') : ''; 175 | 176 | return $.trim(filtered); 177 | }, 178 | 179 | show : function ($target) { 180 | var $tip = this.getTip($target); 181 | 182 | this.reposition($target, $tip, $target.attr('class')); 183 | $tip.fadeIn(150); 184 | }, 185 | 186 | hide : function ($target) { 187 | var $tip = this.getTip($target); 188 | 189 | $tip.fadeOut(150); 190 | }, 191 | 192 | // deprecate reload 193 | reload : function () { 194 | var $self = $(this); 195 | 196 | return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init'); 197 | }, 198 | 199 | off : function () { 200 | $(this.scope).off('.fndtn.tooltip'); 201 | $(this.settings.tooltipClass).each(function (i) { 202 | $('[data-tooltip]').get(i).attr('title', $(this).text()); 203 | }).remove(); 204 | }, 205 | 206 | reflow : function () {} 207 | }; 208 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/dcjs/crossfilter.min.js: -------------------------------------------------------------------------------- 1 | (function(r){function n(r){return r}function t(r,n){for(var t=0,e=n.length,u=Array(e);e>t;++t)u[t]=r[n[t]];return u}function e(r){function n(n,t,e,u){for(;u>e;){var f=e+u>>>1;r(n[f])e;){var f=e+u>>>1;t>>1)+1;--f>0;)e(r,f,u,n);return r}function t(r,n,t){for(var u,f=t-n;--f>0;)u=r[n],r[n]=r[n+f],r[n+f]=u,e(r,1,f,n);return r}function e(n,t,e,u){for(var f,o=n[--u+t],i=r(o);(f=t<<1)<=e&&(e>f&&r(n[u+f])>r(n[u+f+1])&&f++,!(i<=r(n[u+f])));)n[u+t]=n[u+f],t=f;n[u+t]=o}return n.sort=t,n}function f(r){function n(n,e,u,f){var o,i,a,c,l=Array(f=Math.min(u-e,f));for(i=0;f>i;++i)l[i]=n[e++];if(t(l,0,f),u>e){o=r(l[0]);do(a=r(c=n[e])>o)&&(l[0]=c,o=r(t(l,0,f)[0]));while(++eu;++u){for(var f=u,o=n[u],i=r(o);f>t&&r(n[f-1])>i;--f)n[f]=n[f-1];n[f]=o}return n}return n}function i(r){function n(r,n,u){return(U>u-n?e:t)(r,n,u)}function t(t,e,u){var f,o=0|(u-e)/6,i=e+o,a=u-1-o,c=e+u-1>>1,l=c-o,v=c+o,s=t[i],h=r(s),d=t[l],p=r(d),g=t[c],y=r(g),m=t[v],b=r(m),A=t[a],k=r(A);h>p&&(f=s,s=d,d=f,f=h,h=p,p=f),b>k&&(f=m,m=A,A=f,f=b,b=k,k=f),h>y&&(f=s,s=g,g=f,f=h,h=y,y=f),p>y&&(f=d,d=g,g=f,f=p,p=y,y=f),h>b&&(f=s,s=m,m=f,f=h,h=b,b=f),y>b&&(f=g,g=m,m=f,f=y,y=b,b=f),p>k&&(f=d,d=A,A=f,f=p,p=k,k=f),p>y&&(f=d,d=g,g=f,f=p,p=y,y=f),b>k&&(f=m,m=A,A=f,f=b,b=k,k=f);var x=d,w=p,E=m,O=b;t[i]=s,t[l]=t[e],t[c]=g,t[v]=t[u-1],t[a]=A;var M=e+1,U=u-2,z=O>=w&&w>=O;if(z)for(var N=M;U>=N;++N){var C=t[N],S=r(C);if(w>S)N!==M&&(t[N]=t[M],t[M]=C),++M;else if(S>w)for(;;){var q=r(t[U]);{if(!(q>w)){if(w>q){t[N]=t[M],t[M++]=t[U],t[U--]=C;break}t[N]=t[U],t[U--]=C;break}U--}}}else for(var N=M;U>=N;N++){var C=t[N],S=r(C);if(w>S)N!==M&&(t[N]=t[M],t[M]=C),++M;else if(S>O)for(;;){var q=r(t[U]);{if(!(q>O)){w>q?(t[N]=t[M],t[M++]=t[U],t[U--]=C):(t[N]=t[U],t[U--]=C);break}if(U--,N>U)break}}}if(t[e]=t[M-1],t[M-1]=x,t[u-1]=t[U+1],t[U+1]=E,n(t,e,M-1),n(t,U+2,u),z)return t;if(i>M&&U>a){for(var F,q;(F=r(t[M]))<=w&&F>=w;)++M;for(;(q=r(t[U]))<=O&&q>=O;)--U;for(var N=M;U>=N;N++){var C=t[N],S=r(C);if(w>=S&&S>=w)N!==M&&(t[N]=t[M],t[M]=C),M++;else if(O>=S&&S>=O)for(;;){var q=r(t[U]);{if(!(O>=q&&q>=O)){w>q?(t[N]=t[M],t[M++]=t[U],t[U--]=C):(t[N]=t[U],t[U--]=C);break}if(U--,N>U)break}}}}return n(t,M,U+1)}var e=o(r);return n}function a(r){return Array(r)}function c(r,n){return function(t){var e=t.length;return[r.left(t,n,0,e),r.right(t,n,0,e)]}}function l(r,n){var t=n[0],e=n[1];return function(n){var u=n.length;return[r.left(n,t,0,u),r.left(n,e,0,u)]}}function v(r){return[0,r.length]}function s(){return null}function h(){return 0}function d(r){return r+1}function p(r){return r-1}function g(r){return function(n,t){return n+ +r(t)}}function y(r){return function(n,t){return n-r(t)}}function m(){function r(r){var n=E,t=r.length;return t&&(w=w.concat(r),U=S(U,E+=t),C.forEach(function(e){e(r,n,t)})),m}function e(r){function e(n,e,u){P=n.map(r),Q=Y(A(u),0,u),P=t(P,Q);var f,o,i=Z(P),a=i[0],c=i[1];if(T)for(f=0;u>f;++f)T(P[f],o=Q[f]+e)||(U[o]|=W);else{for(f=0;a>f;++f)U[Q[f]+e]|=W;for(f=c;u>f;++f)U[Q[f]+e]|=W}if(!e)return K=P,L=Q,rn=a,nn=c,void 0;var l=K,v=L,s=0,h=0;for(K=Array(E),L=b(E,E),f=0;e>s&&u>h;++f)l[s]s;++s,++f)K[f]=l[s],L[f]=v[s];for(;u>h;++h,++f)K[f]=P[h],L[f]=Q[h]+e;i=Z(K),rn=i[0],nn=i[1]}function o(r,n,t){$.forEach(function(r){r(P,Q,n,t)}),P=Q=null}function a(r){var n=r[0],t=r[1];if(T)return T=null,B(function(r,e){return e>=n&&t>e}),rn=n,nn=t,V;var e,u,f,o=[],i=[];if(rn>n)for(e=n,u=Math.min(rn,t);u>e;++e)U[f=L[e]]^=W,o.push(f);else if(n>rn)for(e=rn,u=Math.min(n,nn);u>e;++e)U[f=L[e]]^=W,i.push(f);if(t>nn)for(e=Math.max(n,nn),u=t;u>e;++e)U[f=L[e]]^=W,o.push(f);else if(nn>t)for(e=Math.max(rn,t),u=nn;u>e;++e)U[f=L[e]]^=W,i.push(f);return rn=n,nn=t,N.forEach(function(r){r(W,o,i)}),V}function m(r){return null==r?R():Array.isArray(r)?F(r):"function"==typeof r?j(r):z(r)}function z(r){return a((Z=c(x,r))(K))}function F(r){return a((Z=l(x,r))(K))}function R(){return a((Z=v)(K))}function j(r){return Z=v,B(T=r),rn=0,nn=E,V}function B(r){var n,t,e,u=[],f=[];for(n=0;E>n;++n)!(U[t=L[n]]&W)^(e=r(K[n],t))&&(e?(U[t]&=X,u.push(t)):(U[t]|=W,f.push(t)));N.forEach(function(r){r(W,u,f)})}function D(r){for(var n,t=[],e=nn;--e>=rn&&r>0;)U[n=L[e]]||(t.push(w[n]),--r);return t}function G(r){for(var n,t=[],e=rn;nn>e&&r>0;)U[n=L[e]]||(t.push(w[n]),--r),e++;return t}function H(r){function t(n,t,u,f){function c(){++P===J&&(m=q(m,I<<=1),R=q(R,I),J=k(I))}var l,v,h,d,p,g,y=F,m=b(P,J),A=D,x=H,O=P,M=0,z=0;for(V&&(A=x=s),F=Array(P),P=0,R=O>1?S(R,E):b(E,J),O&&(h=(v=y[0]).key);f>z&&!((d=r(n[z]))>=d);)++z;for(;f>z;){for(v&&d>=h?(p=v,g=h,m[M]=P,(v=y[++M])&&(h=v.key)):(p={key:d,value:x()},g=d),F[P]=p;!(d>g||(R[l=t[z]+u]=P,U[l]&X||(p.value=A(p.value,w[l])),++z>=f));)d=r(n[z]);c()}for(;O>M;)F[m[M]=P]=y[M++],c();if(P>M)for(M=0;u>M;++M)R[M]=m[R[M]];l=N.indexOf(Q),P>1?(Q=e,T=i):(1===P?(Q=o,T=a):(Q=s,T=s),R=null),N[l]=Q}function e(r,n,t){if(r!==W&&!V){var e,u,f,o;for(e=0,f=n.length;f>e;++e)U[u=n[e]]&X||(o=F[R[u]],o.value=D(o.value,w[u]));for(e=0,f=t.length;f>e;++e)(U[u=t[e]]&X)===r&&(o=F[R[u]],o.value=G(o.value,w[u]))}}function o(r,n,t){if(r!==W&&!V){var e,u,f,o=F[0];for(e=0,f=n.length;f>e;++e)U[u=n[e]]&X||(o.value=D(o.value,w[u]));for(e=0,f=t.length;f>e;++e)(U[u=t[e]]&X)===r&&(o.value=G(o.value,w[u]))}}function i(){var r,n;for(r=0;P>r;++r)F[r].value=H();for(r=0;E>r;++r)U[r]&X||(n=F[R[r]],n.value=D(n.value,w[r]))}function a(){var r,n=F[0];for(n.value=H(),r=0;E>r;++r)U[r]&X||(n.value=D(n.value,w[r]))}function c(){return V&&(T(),V=!1),F}function l(r){var n=j(c(),0,F.length,r);return B.sort(n,0,n.length)}function v(r,n,t){return D=r,G=n,H=t,V=!0,C}function m(){return v(d,p,h)}function A(r){return v(g(r),y(r),h)}function x(r){function n(n){return r(n.value)}return j=f(n),B=u(n),C}function O(){return x(n)}function M(){return P}function z(){var r=N.indexOf(Q);return r>=0&&N.splice(r,1),r=$.indexOf(t),r>=0&&$.splice(r,1),C}var C={top:l,all:c,reduce:v,reduceCount:m,reduceSum:A,order:x,orderNatural:O,size:M,remove:z};_.push(C);var F,R,j,B,D,G,H,I=8,J=k(I),P=0,Q=s,T=s,V=!0;return arguments.length<1&&(r=n),N.push(Q),$.push(t),t(K,L,0,E),m().orderNatural()}function I(){var r=H(s),n=r.all;return delete r.all,delete r.top,delete r.order,delete r.orderNatural,delete r.size,r.value=function(){return n()[0].value},r}function J(){_.forEach(function(r){r.remove()});var r=C.indexOf(e);for(r>=0&&C.splice(r,1),r=C.indexOf(o),r>=0&&C.splice(r,1),r=0;E>r;++r)U[r]&=X;return O&=X,V}var K,L,P,Q,T,V={filter:m,filterExact:z,filterRange:F,filterFunction:j,filterAll:R,top:D,bottom:G,group:H,groupAll:I,remove:J},W=~O&-~O,X=~W,Y=i(function(r){return P[r]}),Z=v,$=[],_=[],rn=0,nn=0;return C.unshift(e),C.push(o),O|=W,(M>=32?!W:O&(1<t;++t)U[t]||(a=c(a,w[t]))}function n(r,n,t){var e,u,f;if(!m){for(e=0,f=n.length;f>e;++e)U[u=n[e]]||(a=c(a,w[u]));for(e=0,f=t.length;f>e;++e)U[u=t[e]]===r&&(a=l(a,w[u]))}}function t(){var r;for(a=v(),r=0;E>r;++r)U[r]||(a=c(a,w[r]))}function e(r,n,t){return c=r,l=n,v=t,m=!0,s}function u(){return e(d,p,h)}function f(r){return e(g(r),y(r),h)}function o(){return m&&(t(),m=!1),a}function i(){var t=N.indexOf(n);return t>=0&&N.splice(t),t=C.indexOf(r),t>=0&&C.splice(t),s}var a,c,l,v,s={reduce:e,reduceCount:u,reduceSum:f,value:o,remove:i},m=!0;return N.push(n),C.push(r),r(w,0,E),u()}function a(){return E}var m={add:r,dimension:e,groupAll:o,size:a},w=[],E=0,O=0,M=8,U=z(0),N=[],C=[];return arguments.length?r(arguments[0]):m}function b(r,n){return(257>n?z:65537>n?N:C)(r)}function A(r){for(var n=b(r,r),t=-1;++t= 0; i--) { 118 | el_patterns.push(this.pattern(els[i])); 119 | } 120 | 121 | return this.check_validation_and_apply_styles(el_patterns); 122 | }, 123 | 124 | pattern : function (el) { 125 | var type = el.getAttribute('type'), 126 | required = typeof el.getAttribute('required') === 'string'; 127 | 128 | if (this.settings.patterns.hasOwnProperty(type)) { 129 | return [el, this.settings.patterns[type], required]; 130 | } 131 | 132 | var pattern = el.getAttribute('pattern') || ''; 133 | 134 | if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) { 135 | return [el, this.settings.patterns[pattern], required]; 136 | } else if (pattern.length > 0) { 137 | return [el, new RegExp(pattern), required]; 138 | } 139 | 140 | pattern = /.*/; 141 | 142 | return [el, pattern, required]; 143 | }, 144 | 145 | check_validation_and_apply_styles : function (el_patterns) { 146 | var count = el_patterns.length, 147 | validations = []; 148 | 149 | for (var i = count - 1; i >= 0; i--) { 150 | var el = el_patterns[i][0], 151 | required = el_patterns[i][2], 152 | value = el.value, 153 | is_radio = el.type === "radio", 154 | valid_length = (required) ? (el.value.length > 0) : true; 155 | 156 | if (is_radio && required) { 157 | validations.push(this.valid_radio(el, required)); 158 | } else { 159 | if (el_patterns[i][1].test(value) && valid_length || 160 | !required && el.value.length < 1) { 161 | $(el).removeAttr('data-invalid').parent().removeClass('error'); 162 | validations.push(true); 163 | } else { 164 | $(el).attr('data-invalid', '').parent().addClass('error'); 165 | validations.push(false); 166 | } 167 | } 168 | } 169 | 170 | return validations; 171 | }, 172 | 173 | valid_radio : function (el, required) { 174 | var name = el.getAttribute('name'), 175 | group = document.getElementsByName(name), 176 | count = group.length, 177 | valid = false; 178 | 179 | for (var i=0; i < count; i++) { 180 | if (group[i].checked) valid = true; 181 | } 182 | 183 | for (var i=0; i < count; i++) { 184 | if (valid) { 185 | $(group[i]).removeAttr('data-invalid').parent().removeClass('error'); 186 | } else { 187 | $(group[i]).attr('data-invalid', '').parent().addClass('error'); 188 | } 189 | } 190 | 191 | return valid; 192 | } 193 | }; 194 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.interchange.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.interchange = { 7 | name : 'interchange', 8 | 9 | version : '4.2.4', 10 | 11 | cache : {}, 12 | 13 | images_loaded : false, 14 | 15 | settings : { 16 | load_attr : 'interchange', 17 | 18 | named_queries : { 19 | 'default' : 'only screen and (min-width: 1px)', 20 | small : 'only screen and (min-width: 768px)', 21 | medium : 'only screen and (min-width: 1280px)', 22 | large : 'only screen and (min-width: 1440px)', 23 | landscape : 'only screen and (orientation: landscape)', 24 | portrait : 'only screen and (orientation: portrait)', 25 | retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 26 | 'only screen and (min--moz-device-pixel-ratio: 2),' + 27 | 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 28 | 'only screen and (min-device-pixel-ratio: 2),' + 29 | 'only screen and (min-resolution: 192dpi),' + 30 | 'only screen and (min-resolution: 2dppx)' 31 | }, 32 | 33 | directives : { 34 | replace: function (el, path) { 35 | if (/IMG/.test(el[0].nodeName)) { 36 | var orig_path = el[0].src; 37 | 38 | if (new RegExp(path, 'i').test(orig_path)) return; 39 | 40 | el[0].src = path; 41 | 42 | return el.trigger('replace', [el[0].src, orig_path]); 43 | } 44 | } 45 | } 46 | }, 47 | 48 | init : function (scope, method, options) { 49 | Foundation.inherit(this, 'throttle'); 50 | 51 | if (typeof method === 'object') { 52 | $.extend(true, this.settings, method); 53 | } 54 | 55 | this.events(); 56 | this.images(); 57 | 58 | if (typeof method !== 'string') { 59 | return this.settings.init; 60 | } else { 61 | return this[method].call(this, options); 62 | } 63 | }, 64 | 65 | events : function () { 66 | var self = this; 67 | 68 | $(window).on('resize.fndtn.interchange', self.throttle(function () { 69 | self.resize.call(self); 70 | }, 50)); 71 | }, 72 | 73 | resize : function () { 74 | var cache = this.cache; 75 | 76 | if(!this.images_loaded) { 77 | setTimeout($.proxy(this.resize, this), 50); 78 | return; 79 | } 80 | 81 | for (var uuid in cache) { 82 | if (cache.hasOwnProperty(uuid)) { 83 | var passed = this.results(uuid, cache[uuid]); 84 | 85 | if (passed) { 86 | this.settings.directives[passed 87 | .scenario[1]](passed.el, passed.scenario[0]); 88 | } 89 | } 90 | } 91 | 92 | }, 93 | 94 | results : function (uuid, scenarios) { 95 | var count = scenarios.length; 96 | 97 | if (count > 0) { 98 | var el = $('[data-uuid="' + uuid + '"]'); 99 | 100 | for (var i = count - 1; i >= 0; i--) { 101 | var mq, rule = scenarios[i][2]; 102 | if (this.settings.named_queries.hasOwnProperty(rule)) { 103 | mq = matchMedia(this.settings.named_queries[rule]); 104 | } else { 105 | mq = matchMedia(rule); 106 | } 107 | if (mq.matches) { 108 | return {el: el, scenario: scenarios[i]}; 109 | } 110 | } 111 | } 112 | 113 | return false; 114 | }, 115 | 116 | images : function (force_update) { 117 | if (typeof this.cached_images === 'undefined' || force_update) { 118 | return this.update_images(); 119 | } 120 | 121 | return this.cached_images; 122 | }, 123 | 124 | update_images : function () { 125 | var images = document.getElementsByTagName('img'), 126 | count = images.length, 127 | loaded_count = 0, 128 | data_attr = 'data-' + this.settings.load_attr; 129 | 130 | this.cached_images = []; 131 | this.images_loaded = false; 132 | 133 | for (var i = count - 1; i >= 0; i--) { 134 | this.loaded($(images[i]), function (image) { 135 | loaded_count++; 136 | if (image) { 137 | var str = image.getAttribute(data_attr) || ''; 138 | 139 | if (str.length > 0) { 140 | this.cached_images.push(image); 141 | } 142 | } 143 | 144 | if(loaded_count === count) { 145 | this.images_loaded = true; 146 | this.enhance(); 147 | } 148 | }.bind(this)); 149 | } 150 | 151 | return 'deferred'; 152 | }, 153 | 154 | // based on jquery.imageready.js 155 | // @weblinc, @jsantell, (c) 2012 156 | 157 | loaded : function (image, callback) { 158 | function loaded () { 159 | callback(image[0]); 160 | } 161 | 162 | function bindLoad () { 163 | this.one('load', loaded); 164 | 165 | if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 166 | var src = this.attr( 'src' ), 167 | param = src.match( /\?/ ) ? '&' : '?'; 168 | 169 | param += 'random=' + (new Date()).getTime(); 170 | this.attr('src', src + param); 171 | } 172 | } 173 | 174 | if (!image.attr('src')) { 175 | loaded(); 176 | return; 177 | } 178 | 179 | if (image[0].complete || image[0].readyState === 4) { 180 | loaded(); 181 | } else { 182 | bindLoad.call(image); 183 | } 184 | }, 185 | 186 | enhance : function () { 187 | var count = this.images().length; 188 | 189 | for (var i = count - 1; i >= 0; i--) { 190 | this._object($(this.images()[i])); 191 | } 192 | 193 | return $(window).trigger('resize'); 194 | }, 195 | 196 | parse_params : function (path, directive, mq) { 197 | return [this.trim(path), this.convert_directive(directive), this.trim(mq)]; 198 | }, 199 | 200 | convert_directive : function (directive) { 201 | var trimmed = this.trim(directive); 202 | 203 | if (trimmed.length > 0) { 204 | return trimmed; 205 | } 206 | 207 | return 'replace'; 208 | }, 209 | 210 | _object : function(el) { 211 | var raw_arr = this.parse_data_attr(el), 212 | scenarios = [], count = raw_arr.length; 213 | 214 | if (count > 0) { 215 | for (var i = count - 1; i >= 0; i--) { 216 | var split = raw_arr[i].split(/\((.*?)(\))$/); 217 | 218 | if (split.length > 1) { 219 | var cached_split = split[0].split(','), 220 | params = this.parse_params(cached_split[0], 221 | cached_split[1], split[1]); 222 | 223 | scenarios.push(params); 224 | } 225 | } 226 | } 227 | 228 | return this.store(el, scenarios); 229 | }, 230 | 231 | uuid : function (separator) { 232 | var delim = separator || "-"; 233 | 234 | function S4() { 235 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 236 | } 237 | 238 | return (S4() + S4() + delim + S4() + delim + S4() 239 | + delim + S4() + delim + S4() + S4() + S4()); 240 | }, 241 | 242 | store : function (el, scenarios) { 243 | var uuid = this.uuid(), 244 | current_uuid = el.data('uuid'); 245 | 246 | if (current_uuid) return this.cache[current_uuid]; 247 | 248 | el.attr('data-uuid', uuid); 249 | 250 | return this.cache[uuid] = scenarios; 251 | }, 252 | 253 | trim : function(str) { 254 | if (typeof str === 'string') { 255 | return $.trim(str); 256 | } 257 | 258 | return str; 259 | }, 260 | 261 | parse_data_attr : function (el) { 262 | var raw = el.data(this.settings.load_attr).split(/\[(.*?)\]/), 263 | count = raw.length, output = []; 264 | 265 | for (var i = count - 1; i >= 0; i--) { 266 | if (raw[i].replace(/[\W\d]+/, '').length > 4) { 267 | output.push(raw[i]); 268 | } 269 | } 270 | 271 | return output; 272 | }, 273 | 274 | reflow : function () { 275 | this.images(true); 276 | } 277 | 278 | }; 279 | 280 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /stylesheets/styles.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Arvo:400,700,400italic); 2 | 3 | /* MeyerWeb Reset */ 4 | 5 | html, body, div, span, applet, object, iframe, 6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7 | a, abbr, acronym, address, big, cite, code, 8 | del, dfn, em, img, ins, kbd, q, s, samp, 9 | small, strike, strong, sub, sup, tt, var, 10 | b, u, i, center, 11 | dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td, 14 | article, aside, canvas, details, embed, 15 | figure, figcaption, footer, header, hgroup, 16 | menu, nav, output, ruby, section, summary, 17 | time, mark, audio, video { 18 | margin: 0; 19 | padding: 0; 20 | border: 0; 21 | font: inherit; 22 | vertical-align: baseline; 23 | } 24 | 25 | 26 | /* Base text styles */ 27 | 28 | body { 29 | padding:10px 50px 0 0; 30 | font-family:"Helvetica Neue", Helvetica, Arial, sans-serif; 31 | font-size: 14px; 32 | color: #232323; 33 | background-color: #FBFAF7; 34 | margin: 0; 35 | line-height: 1.8em; 36 | -webkit-font-smoothing: antialiased; 37 | 38 | } 39 | 40 | h1, h2, h3, h4, h5, h6 { 41 | color:#232323; 42 | margin:36px 0 10px; 43 | } 44 | 45 | p, ul, ol, table, dl { 46 | margin:0 0 22px; 47 | } 48 | 49 | h1, h2, h3 { 50 | font-family: Arvo, Monaco, serif; 51 | line-height:1.3; 52 | font-weight: normal; 53 | } 54 | 55 | h1,h2, h3 { 56 | display: block; 57 | border-bottom: 1px solid #ccc; 58 | padding-bottom: 5px; 59 | } 60 | 61 | h1 { 62 | font-size: 30px; 63 | } 64 | 65 | h2 { 66 | font-size: 24px; 67 | } 68 | 69 | h3 { 70 | font-size: 18px; 71 | } 72 | 73 | h4, h5, h6 { 74 | font-family: Arvo, Monaco, serif; 75 | font-weight: 700; 76 | } 77 | 78 | a { 79 | color:#C30000; 80 | font-weight:200; 81 | text-decoration:none; 82 | } 83 | 84 | a:hover { 85 | text-decoration: underline; 86 | } 87 | 88 | a small { 89 | font-size: 12px; 90 | } 91 | 92 | em { 93 | font-style: italic; 94 | } 95 | 96 | strong { 97 | font-weight:700; 98 | } 99 | 100 | ul { 101 | list-style: inside; 102 | padding-left: 25px; 103 | } 104 | 105 | ol { 106 | list-style: decimal inside; 107 | padding-left: 20px; 108 | } 109 | 110 | blockquote { 111 | margin: 0; 112 | padding: 0 0 0 20px; 113 | font-style: italic; 114 | } 115 | 116 | dl, dt, dd, dl p { 117 | font-color: #444; 118 | } 119 | 120 | dl dt { 121 | font-weight: bold; 122 | } 123 | 124 | dl dd { 125 | padding-left: 20px; 126 | font-style: italic; 127 | } 128 | 129 | dl p { 130 | padding-left: 20px; 131 | font-style: italic; 132 | } 133 | 134 | hr { 135 | border:0; 136 | background:#ccc; 137 | height:1px; 138 | margin:0 0 24px; 139 | } 140 | 141 | /* Images */ 142 | 143 | img { 144 | position: relative; 145 | margin: 0 auto; 146 | max-width: 650px; 147 | padding: 5px; 148 | margin: 10px 0 32px 0; 149 | border: 1px solid #ccc; 150 | } 151 | 152 | p img { 153 | display: inline; 154 | margin: 0; 155 | padding: 0; 156 | vertical-align: middle; 157 | text-align: center; 158 | border: none; 159 | } 160 | 161 | /* Code blocks */ 162 | 163 | code, pre { 164 | font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; 165 | color:#000; 166 | font-size:14px; 167 | } 168 | 169 | pre { 170 | padding: 4px 12px; 171 | background: #FDFEFB; 172 | border-radius:4px; 173 | border:1px solid #D7D8C8; 174 | overflow: auto; 175 | overflow-y: hidden; 176 | margin-bottom: 32px; 177 | } 178 | 179 | 180 | /* Tables */ 181 | 182 | table { 183 | width:100%; 184 | } 185 | 186 | table { 187 | border: 1px solid #ccc; 188 | margin-bottom: 32px; 189 | text-align: left; 190 | } 191 | 192 | th { 193 | font-family: 'Arvo', Helvetica, Arial, sans-serif; 194 | font-size: 18px; 195 | font-weight: normal; 196 | padding: 10px; 197 | background: #232323; 198 | color: #FDFEFB; 199 | } 200 | 201 | td { 202 | padding: 10px; 203 | background: #ccc; 204 | } 205 | 206 | 207 | /* Wrapper */ 208 | .wrapper { 209 | width:960px; 210 | } 211 | 212 | 213 | /* Header */ 214 | 215 | header { 216 | background-color: #171717; 217 | color: #FDFDFB; 218 | width:170px; 219 | float:left; 220 | position:fixed; 221 | border: 1px solid #000; 222 | -webkit-border-top-right-radius: 4px; 223 | -webkit-border-bottom-right-radius: 4px; 224 | -moz-border-radius-topright: 4px; 225 | -moz-border-radius-bottomright: 4px; 226 | border-top-right-radius: 4px; 227 | border-bottom-right-radius: 4px; 228 | padding: 34px 25px 22px 50px; 229 | margin: 30px 25px 0 0; 230 | -webkit-font-smoothing: antialiased; 231 | } 232 | 233 | p.header { 234 | font-size: 16px; 235 | } 236 | 237 | h1.header { 238 | font-family: Arvo, sans-serif; 239 | font-size: 30px; 240 | font-weight: 300; 241 | line-height: 1.3em; 242 | border-bottom: none; 243 | margin-top: 0; 244 | } 245 | 246 | 247 | h1.header, a.header, a.name, header a{ 248 | color: #fff; 249 | } 250 | 251 | a.header { 252 | text-decoration: underline; 253 | } 254 | 255 | a.name { 256 | white-space: nowrap; 257 | } 258 | 259 | header ul { 260 | list-style:none; 261 | padding:0; 262 | } 263 | 264 | header li { 265 | list-style-type: none; 266 | width:132px; 267 | height:15px; 268 | margin-bottom: 12px; 269 | line-height: 1em; 270 | padding: 6px 6px 6px 7px; 271 | 272 | background: #AF0011; 273 | background: -moz-linear-gradient(top, #AF0011 0%, #820011 100%); 274 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd)); 275 | background: -webkit-linear-gradient(top, #AF0011 0%,#820011 100%); 276 | background: -o-linear-gradient(top, #AF0011 0%,#820011 100%); 277 | background: -ms-linear-gradient(top, #AF0011 0%,#820011 100%); 278 | background: linear-gradient(top, #AF0011 0%,#820011 100%); 279 | 280 | border-radius:4px; 281 | border:1px solid #0D0D0D; 282 | 283 | -webkit-box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1); 284 | box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1); 285 | 286 | } 287 | 288 | header li:hover { 289 | background: #C3001D; 290 | background: -moz-linear-gradient(top, #C3001D 0%, #950119 100%); 291 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd)); 292 | background: -webkit-linear-gradient(top, #C3001D 0%,#950119 100%); 293 | background: -o-linear-gradient(top, #C3001D 0%,#950119 100%); 294 | background: -ms-linear-gradient(top, #C3001D 0%,#950119 100%); 295 | background: linear-gradient(top, #C3001D 0%,#950119 100%); 296 | } 297 | 298 | a.buttons { 299 | -webkit-font-smoothing: antialiased; 300 | background: url(../images/arrow-down.png) no-repeat; 301 | font-weight: normal; 302 | text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0; 303 | padding: 2px 2px 2px 22px; 304 | height: 30px; 305 | } 306 | 307 | a.github { 308 | background: url(../images/octocat-small.png) no-repeat 1px; 309 | } 310 | 311 | a.buttons:hover { 312 | color: #fff; 313 | text-decoration: none; 314 | } 315 | 316 | 317 | /* Section - for main page content */ 318 | 319 | section { 320 | width:650px; 321 | float:right; 322 | padding-bottom:50px; 323 | } 324 | 325 | 326 | /* Footer */ 327 | 328 | footer { 329 | width:170px; 330 | float:left; 331 | position:fixed; 332 | bottom:10px; 333 | padding-left: 50px; 334 | } 335 | 336 | @media print, screen and (max-width: 960px) { 337 | 338 | div.wrapper { 339 | width:auto; 340 | margin:0; 341 | } 342 | 343 | header, section, footer { 344 | float:none; 345 | position:static; 346 | width:auto; 347 | } 348 | 349 | footer { 350 | border-top: 1px solid #ccc; 351 | margin:0 84px 0 50px; 352 | padding:0; 353 | } 354 | 355 | header { 356 | padding-right:320px; 357 | } 358 | 359 | section { 360 | padding:20px 84px 20px 50px; 361 | margin:0 0 20px; 362 | } 363 | 364 | header a small { 365 | display:inline; 366 | } 367 | 368 | header ul { 369 | position:absolute; 370 | right:130px; 371 | top:84px; 372 | } 373 | } 374 | 375 | @media print, screen and (max-width: 720px) { 376 | body { 377 | word-wrap:break-word; 378 | } 379 | 380 | header { 381 | padding:10px 20px 0; 382 | margin-right: 0; 383 | } 384 | 385 | section { 386 | padding:10px 0 10px 20px; 387 | margin:0 0 30px; 388 | } 389 | 390 | footer { 391 | margin: 0 0 0 30px; 392 | } 393 | 394 | header ul, header p.view { 395 | position:static; 396 | } 397 | } 398 | 399 | @media print, screen and (max-width: 480px) { 400 | 401 | header ul li.download { 402 | display:none; 403 | } 404 | 405 | footer { 406 | margin: 0 0 0 20px; 407 | } 408 | 409 | footer a{ 410 | display:block; 411 | } 412 | 413 | } 414 | 415 | @media print { 416 | body { 417 | padding:0.4in; 418 | font-size:12pt; 419 | color:#444; 420 | } 421 | } -------------------------------------------------------------------------------- /js/vendor/custom.modernizr.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD 2 | * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f