").append( jQuery.parseHTML( responseText ) ).find( selector ) :
63 |
64 | // Otherwise use the full result
65 | responseText );
66 |
67 | }).complete( callback && function( jqXHR, status ) {
68 | self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
69 | });
70 | }
71 |
72 | return this;
73 | };
74 |
75 | });
76 |
--------------------------------------------------------------------------------
/app/bower_components/angular-route/README.md:
--------------------------------------------------------------------------------
1 | # bower-angular-route
2 |
3 | This repo is for distribution on `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngRoute).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | Install with `bower`:
10 |
11 | ```shell
12 | bower install angular-route
13 | ```
14 |
15 | Add a `
19 | ```
20 |
21 | And add `ngRoute` as a dependency for your app:
22 |
23 | ```javascript
24 | angular.module('myApp', ['ngRoute']);
25 | ```
26 |
27 | ## Documentation
28 |
29 | Documentation is available on the
30 | [AngularJS docs site](http://docs.angularjs.org/api/ngRoute).
31 |
32 | ## License
33 |
34 | The MIT License
35 |
36 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
37 |
38 | Permission is hereby granted, free of charge, to any person obtaining a copy
39 | of this software and associated documentation files (the "Software"), to deal
40 | in the Software without restriction, including without limitation the rights
41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42 | copies of the Software, and to permit persons to whom the Software is
43 | furnished to do so, subject to the following conditions:
44 |
45 | The above copyright notice and this permission notice shall be included in
46 | all copies or substantial portions of the Software.
47 |
48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54 | THE SOFTWARE.
55 |
--------------------------------------------------------------------------------
/app/bower_components/angular-animate/README.md:
--------------------------------------------------------------------------------
1 | # bower-angular-animate
2 |
3 | This repo is for distribution on `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | Install with `bower`:
10 |
11 | ```shell
12 | bower install angular-animate
13 | ```
14 |
15 | Add a `
19 | ```
20 |
21 | And add `ngAnimate` as a dependency for your app:
22 |
23 | ```javascript
24 | angular.module('myApp', ['ngAnimate']);
25 | ```
26 |
27 | ## Documentation
28 |
29 | Documentation is available on the
30 | [AngularJS docs site](http://docs.angularjs.org/api/ngAnimate).
31 |
32 | ## License
33 |
34 | The MIT License
35 |
36 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
37 |
38 | Permission is hereby granted, free of charge, to any person obtaining a copy
39 | of this software and associated documentation files (the "Software"), to deal
40 | in the Software without restriction, including without limitation the rights
41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42 | copies of the Software, and to permit persons to whom the Software is
43 | furnished to do so, subject to the following conditions:
44 |
45 | The above copyright notice and this permission notice shall be included in
46 | all copies or substantial portions of the Software.
47 |
48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54 | THE SOFTWARE.
55 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/css/defaultDisplay.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../manipulation" // appendTo
4 | ], function( jQuery ) {
5 |
6 | var iframe,
7 | elemdisplay = {};
8 |
9 | /**
10 | * Retrieve the actual display of a element
11 | * @param {String} name nodeName of the element
12 | * @param {Object} doc Document object
13 | */
14 | // Called only from within defaultDisplay
15 | function actualDisplay( name, doc ) {
16 | var style,
17 | elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
18 |
19 | // getDefaultComputedStyle might be reliably used only on attached element
20 | display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
21 |
22 | // Use of this method is a temporary fix (more like optmization) until something better comes along,
23 | // since it was removed from specification and supported only in FF
24 | style.display : jQuery.css( elem[ 0 ], "display" );
25 |
26 | // We don't have any data stored on the element,
27 | // so use "detach" method as fast way to get rid of the element
28 | elem.detach();
29 |
30 | return display;
31 | }
32 |
33 | /**
34 | * Try to determine the default display value of an element
35 | * @param {String} nodeName
36 | */
37 | function defaultDisplay( nodeName ) {
38 | var doc = document,
39 | display = elemdisplay[ nodeName ];
40 |
41 | if ( !display ) {
42 | display = actualDisplay( nodeName, doc );
43 |
44 | // If the simple way fails, read from inside an iframe
45 | if ( display === "none" || !display ) {
46 |
47 | // Use the already-created iframe if possible
48 | iframe = (iframe || jQuery( "
" )).appendTo( doc.documentElement );
49 |
50 | // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
51 | doc = iframe[ 0 ].contentDocument;
52 |
53 | // Support: IE
54 | doc.write();
55 | doc.close();
56 |
57 | display = actualDisplay( nodeName, doc );
58 | iframe.detach();
59 | }
60 |
61 | // Store the correct default display
62 | elemdisplay[ nodeName ] = display;
63 | }
64 |
65 | return display;
66 | }
67 |
68 | return defaultDisplay;
69 |
70 | });
71 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/plugins.js:
--------------------------------------------------------------------------------
1 | /*! http://mths.be/placeholder v2.0.7 by @mathias */
2 | ;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder');l==h.activeElement&&l.select()}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('
').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
3 |
4 | // place any jQuery/helper plugins in here, instead of separate, slower script files.
5 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/libs/ui/gumby.tabs.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gumby Tabs
3 | */
4 | !function($) {
5 |
6 | 'use strict';
7 |
8 | function Tabs($el) {
9 |
10 | Gumby.debug('Initializing Tabs', $el);
11 |
12 | this.$el = $el;
13 | this.$nav = this.$el.find('> ul.tab-nav > li');
14 | this.$content = this.$el.children('.tab-content');
15 |
16 | var scope = this;
17 |
18 | // listen for click event on tab nav and custom gumby set event
19 | this.$nav.children('a').on(Gumby.click, function(e) {
20 | e.preventDefault();
21 | scope.click($(this));
22 | });
23 |
24 | // listen for gumby.set value for dynamically set tabs
25 | this.$el.on('gumby.set', function(e, index) {
26 | Gumby.debug('Set event triggered', scope.$el);
27 | scope.set(e, index);
28 | });
29 | }
30 |
31 | // handle tab nav click event
32 | Tabs.prototype.click = function($this) {
33 | // index of item to activate
34 | var index = $this.parent().index();
35 |
36 | if(this.$nav.eq(index).add(this.$content.eq(index)).hasClass('active')) {
37 | return;
38 | }
39 |
40 | Gumby.debug('Setting active tab to '+index, this.$el);
41 |
42 | // deactivate other tab navigation and content
43 | this.$nav.add(this.$content).removeClass('active');
44 |
45 | // activate this tab nav link and content
46 | this.$nav.eq(index).add(this.$content.eq(index)).addClass('active');
47 |
48 | // trigger gumby.change event and pass current active tab index
49 | Gumby.debug('Triggering onChange event', this.$el);
50 | this.$el.trigger('gumby.onChange', index);
51 | };
52 |
53 | // set specific tab
54 | Tabs.prototype.set = function(e, index) {
55 | this.$nav.eq(index).find('a').trigger(Gumby.click);
56 | };
57 |
58 | // add initialisation
59 | Gumby.addInitalisation('tabs', function() {
60 | $('.tabs').each(function() {
61 | var $this = $(this);
62 | // this element has already been initialized
63 | if($this.data('isTabs')) {
64 | return true;
65 | }
66 | // mark element as initialized
67 | $this.data('isTabs', true);
68 | new Tabs($this);
69 | });
70 | });
71 |
72 | // register UI module
73 | Gumby.UIModule({
74 | module: 'tabs',
75 | events: ['onChange', 'set'],
76 | init: function() {
77 | Gumby.initialize('tabs');
78 | }
79 | });
80 | }(jQuery);
81 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/libs/ui/gumby.retina.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gumby Retina
3 | */
4 | !function($) {
5 |
6 | 'use strict';
7 |
8 | function Retina($el) {
9 |
10 | Gumby.debug('Initializing Retina', $el);
11 |
12 | this.$el = $el;
13 | this.imageSrc = this.$el.attr('src');
14 | this.retinaSrc = this.fetchRetinaImage();
15 | this.$retinaImg = $(new Image());
16 |
17 | var scope = this;
18 |
19 | // image src not valid
20 | if(!this.retinaSrc) {
21 | return false;
22 | }
23 |
24 | // load retina image
25 | this.$retinaImg.attr('src', this.retinaSrc).load(function() {
26 | scope.retinaImageLoaded();
27 | }).error(function() {
28 | Gumby.error('Couln\'t load retina image: '+scope.retinaSrc);
29 | });
30 | }
31 |
32 | // fetch retina src by appending '@2x' to image string before extension
33 | Retina.prototype.fetchRetinaImage = function() {
34 | var imgSrc = this.imageSrc,
35 | index = this.imageSrc.search(/(\.|\/)(gif|jpe?g|png)$/i);
36 |
37 | // image src is not valid
38 | if(index < 0) {
39 | return false;
40 | }
41 |
42 | // return retina src
43 | return imgSrc.substr(0, index) + '@2x' + imgSrc.substr(index, imgSrc.length);
44 | };
45 |
46 | // once retina image loaded swap original src
47 | Retina.prototype.retinaImageLoaded = function() {
48 | Gumby.debug('Swapping image for retina version', this.$el);
49 | Gumby.debug('Triggering onRetina event', this.$el);
50 | this.$el.attr('src', this.$retinaImg.attr('src')).trigger('gumby.onRetina');
51 | };
52 |
53 | // add initialisation
54 | Gumby.addInitalisation('retina', function() {
55 |
56 | // this module is for retina devices only
57 | if(!window.devicePixelRatio || window.devicePixelRatio <= 1) {
58 | return;
59 | }
60 |
61 | $('img[data-retina],img[gumby-retina],img[retina]').each(function() {
62 | var $this = $(this);
63 | // this element has already been initialized
64 | if($this.data('isRetina')) {
65 | return true;
66 | }
67 | // mark element as initialized
68 | $this.data('isRetina', true);
69 | new Retina($this);
70 | });
71 | });
72 |
73 | // register UI module
74 | Gumby.UIModule({
75 | module: 'retina',
76 | events: ['onRetina'],
77 | init: function() {
78 | Gumby.initialize('retina');
79 | }
80 | });
81 | }(jQuery);
82 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/functions/_palette.scss:
--------------------------------------------------------------------------------
1 | // Color Pallete
2 |
3 | @function getColor($key, $state: false, $list: $ui-coloring) {
4 | @each $color in $list {
5 | @if $key == nth($color, 1) and $state == default {
6 | @return nth($color, 2);
7 | }
8 | @else if $key == nth($color, 1) and $state == hover {
9 | @return nth($color, 3);
10 | }
11 | @else if $key == nth($color, 1) {
12 | @return nth($color, 1);
13 | }
14 | }
15 | @return false;
16 | }
17 |
18 | @mixin palette($shade, $palette-text-color:false) {
19 | @if $shade == getColor($shade) {
20 | @if $palette-text-color != false {
21 | color: $palette-text-color;
22 | }
23 | @else {
24 | color: lighten(getColor($shade, default), 80%);
25 | }
26 | background: getColor($shade, default);
27 | border: 1px solid getColor($shade, default);
28 | &:hover {
29 | background: getColor($shade, hover);
30 | border: 1px solid darken(getColor($shade, hover), 3%);
31 | }
32 | &:active {
33 | background: darken(getColor($shade, default), 10%);
34 | border: 1px solid darken(getColor($shade, default), 10%);
35 | }
36 |
37 | @if $shade == default {
38 | @if $palette-text-color != false {
39 | color: $palette-text-color;
40 | }
41 | @else {
42 | color: darken(getColor($shade, default), 61.5%);
43 | }
44 | border: 1px solid getColor($shade, default);
45 | &:hover {
46 | border: 1px solid darken(getColor($shade, hover), 5%);
47 | }
48 | }
49 | @if $shade == warning {
50 | @if $palette-text-color != false {
51 | color: $palette-text-color;
52 | }
53 | @else {
54 | color: darken(getColor($shade, hover), 40%);
55 | }
56 | }
57 | }
58 | @else {
59 | @if $palette-text-color != false {
60 | color: $palette-text-color;
61 | }
62 | @else {
63 | color: lighten($shade, 80%);
64 | }
65 | background: $shade;
66 | border: 1px solid $shade;
67 | &:hover {
68 | background: lighten($shade, 30%);
69 | border: 1px solid lighten($shade, 27%);
70 | }
71 | &:active {
72 | background: darken($shade, 10%);
73 | border: 1px solid darken($shade, 10%);
74 | }
75 | }
76 | }
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/ui/_tables.scss:
--------------------------------------------------------------------------------
1 | /* Tables */
2 |
3 | table {
4 | display: table;
5 | background-color: $table-bgcolor;
6 | border-collapse: collapse;
7 | border-spacing: 0;
8 | margin-bottom: 20px;
9 | width: 100%;
10 | border: $table-border-size $table-border-style $table-border-color;
11 |
12 | caption {
13 | text-align: center;
14 | font-size: $larger;
15 | padding: .75em;
16 | }
17 |
18 | thead th,
19 | tbody td,
20 | tr td {
21 | display: table-cell;
22 | padding: 10px;
23 | vertical-align: top;
24 | text-align: left;
25 | border-top: $table-cell-border-size $table-cell-border-style $table-cell-border-color;
26 | }
27 |
28 | tr td, tbody tr td {
29 | font-size: $norm;
30 | }
31 |
32 | tr td:first-child {
33 | font-weight: $table-row-first-cell-font-weight;
34 | }
35 |
36 | thead {
37 | background-color: $table-thead-bgcolor;
38 | color: #fff;
39 |
40 | tr th {
41 | font-size: $norm;
42 | font-weight: bold;
43 | vertical-align: bottom;
44 | }
45 | }
46 |
47 | &.striped tr:nth-of-type(even),
48 | table tr.stripe,
49 | table tr.striped {
50 | background-color: $table-stripe-bgcolor;
51 | }
52 |
53 | &.rounded {
54 | border-radius: $table-border-radius;
55 | border-collapse: separate;
56 |
57 | caption + thead tr:first-child th:first-child,
58 | caption + tr td:first-child,
59 | > thead tr:first-child th:first-child,
60 | > thead tr:first-child td:first-child,
61 | > tr:first-child td:first-child {
62 | border-top-left-radius: $table-border-radius;
63 | }
64 |
65 | caption + thead tr:first-child th:last-child,
66 | caption + tr td:last-child,
67 | > thead tr:first-child th:last-child,
68 | > thead tr:first-child td:last-child,
69 | > tr:first-child td:last-child {
70 | border-top-right-radius: $table-border-radius;
71 | }
72 |
73 | thead ~ tr:last-child td:last-child,
74 | tbody tr:last-child td:last-child {
75 | border-bottom-right-radius: $table-border-radius;
76 | }
77 |
78 | thead ~ tr:last-child td:first-child,
79 | tbody tr:last-child td:first-child {
80 | border-bottom-left-radius: $table-border-radius;
81 | }
82 |
83 | thead th, thead td,
84 | caption + tbody tr:first-child td,
85 | > tbody:first-child tr:first-child td {
86 | border-top: 0;
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/ui/_labels.scss:
--------------------------------------------------------------------------------
1 | /* Labels */
2 |
3 | .badge, .label {
4 | height: 20px;
5 | display: inline-block;
6 | font-family: Helvetica, arial, verdana, sans-serif;
7 | font-weight: bold;
8 | line-height: 20px;
9 | text-align:center;
10 | color: #fff;
11 | a {
12 | color: #fff;
13 | }
14 | @each $shade in $ui-coloring {
15 | &.#{nth($shade, 1)} {
16 | background: nth($shade, 2);
17 | border: 1px solid nth($shade, 2);
18 | @if nth($shade, 1) == default {
19 | color: darken(nth($shade, 2), 61.5%);
20 | &:hover {
21 | border-color: darken(nth($shade, 2), 5%);
22 | }
23 | a {
24 | color: darken(nth($shade, 2), 61.5%);
25 | }
26 | }
27 | @if nth($shade, 1) == warning {
28 | color: darken(nth($shade, 2), 40%);
29 | a {
30 | color: darken(nth($shade, 2), 40%);
31 | }
32 | }
33 | }
34 | }
35 | &.light {
36 | background: #fff;
37 | color: $body-font-color;
38 | border: 1px solid $default-color;
39 | a {
40 | color: $body-link-color;
41 | }
42 | }
43 | &.dark {
44 | background: #212121;
45 | border: 1px solid #212121;
46 | }
47 | }
48 |
49 | .badge {
50 | padding: 0 10px;
51 | @include font-size(ms(0, 14px));
52 | @include border-radius(10px);
53 | }
54 |
55 | .label {
56 | padding: 0 10px;
57 | @include font-size(ms(0, 12px));
58 | @include border-radius(2px);
59 | }
60 |
61 | .alert {
62 | padding: 0 10px;
63 | font-family: $font-family;
64 | font-weight: $font-weight-semibold;
65 | list-style-type: none;
66 | word-wrap: break-word;
67 | margin-bottom: $norm / 2;
68 | @include font-size(ms(0, 14px));
69 | @include border-radius($button-radius);
70 | @each $shade in $ui-coloring {
71 | &.#{nth($shade, 1)} {
72 | background: lighten(nth($shade, 2), 20%);
73 | border: 1px solid nth($shade, 2);
74 | color: darken(nth($shade, 2), 20%);
75 | @if nth($shade, 1) == info {
76 | color: $default-color;
77 | }
78 | @if nth($shade, 1) == default {
79 | color: darken(nth($shade, 2), 61.5%);
80 | border: 1px solid nth($shade, 2);
81 | }
82 | @if nth($shade, 1) == warning {
83 | color: darken(nth($shade, 2), 40%);
84 | }
85 | }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/attributes/prop.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../core/access",
4 | "./support"
5 | ], function( jQuery, access, support ) {
6 |
7 | var rfocusable = /^(?:input|select|textarea|button)$/i;
8 |
9 | jQuery.fn.extend({
10 | prop: function( name, value ) {
11 | return access( this, jQuery.prop, name, value, arguments.length > 1 );
12 | },
13 |
14 | removeProp: function( name ) {
15 | return this.each(function() {
16 | delete this[ jQuery.propFix[ name ] || name ];
17 | });
18 | }
19 | });
20 |
21 | jQuery.extend({
22 | propFix: {
23 | "for": "htmlFor",
24 | "class": "className"
25 | },
26 |
27 | prop: function( elem, name, value ) {
28 | var ret, hooks, notxml,
29 | nType = elem.nodeType;
30 |
31 | // don't get/set properties on text, comment and attribute nodes
32 | if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
33 | return;
34 | }
35 |
36 | notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
37 |
38 | if ( notxml ) {
39 | // Fix name and attach hooks
40 | name = jQuery.propFix[ name ] || name;
41 | hooks = jQuery.propHooks[ name ];
42 | }
43 |
44 | if ( value !== undefined ) {
45 | return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
46 | ret :
47 | ( elem[ name ] = value );
48 |
49 | } else {
50 | return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
51 | ret :
52 | elem[ name ];
53 | }
54 | },
55 |
56 | propHooks: {
57 | tabIndex: {
58 | get: function( elem ) {
59 | return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
60 | elem.tabIndex :
61 | -1;
62 | }
63 | }
64 | }
65 | });
66 |
67 | // Support: IE9+
68 | // Selectedness for an option in an optgroup can be inaccurate
69 | if ( !support.optSelected ) {
70 | jQuery.propHooks.selected = {
71 | get: function( elem ) {
72 | var parent = elem.parentNode;
73 | if ( parent && parent.parentNode ) {
74 | parent.parentNode.selectedIndex;
75 | }
76 | return null;
77 | }
78 | };
79 | }
80 |
81 | jQuery.each([
82 | "tabIndex",
83 | "readOnly",
84 | "maxLength",
85 | "cellSpacing",
86 | "cellPadding",
87 | "rowSpan",
88 | "colSpan",
89 | "useMap",
90 | "frameBorder",
91 | "contentEditable"
92 | ], function() {
93 | jQuery.propFix[ this.toLowerCase() ] = this;
94 | });
95 |
96 | });
97 |
--------------------------------------------------------------------------------
/app/bower_components/angularjs-geolocation/src/geolocation.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('geolocation',[]).constant('geolocation_msgs', {
4 | 'errors.location.unsupportedBrowser':'Browser does not support location services',
5 | 'errors.location.permissionDenied':'You have rejected access to your location',
6 | 'errors.location.positionUnavailable':'Unable to determine your location',
7 | 'errors.location.timeout':'Service timeout has been reached'
8 | });
9 |
10 | angular.module('geolocation')
11 | .factory('geolocation', ['$q','$rootScope','$window','geolocation_msgs',function ($q,$rootScope,$window,geolocation_msgs) {
12 | return {
13 | getLocation: function (opts) {
14 | var deferred = $q.defer();
15 | if ($window.navigator && $window.navigator.geolocation) {
16 | $window.navigator.geolocation.getCurrentPosition(function(position){
17 | $rootScope.$apply(function(){deferred.resolve(position);});
18 | }, function(error) {
19 | switch (error.code) {
20 | case 1:
21 | $rootScope.$broadcast('error',geolocation_msgs['errors.location.permissionDenied']);
22 | $rootScope.$apply(function() {
23 | deferred.reject(geolocation_msgs['errors.location.permissionDenied']);
24 | });
25 | break;
26 | case 2:
27 | $rootScope.$broadcast('error',geolocation_msgs['errors.location.positionUnavailable']);
28 | $rootScope.$apply(function() {
29 | deferred.reject(geolocation_msgs['errors.location.positionUnavailable']);
30 | });
31 | break;
32 | case 3:
33 | $rootScope.$broadcast('error',geolocation_msgs['errors.location.timeout']);
34 | $rootScope.$apply(function() {
35 | deferred.reject(geolocation_msgs['errors.location.timeout']);
36 | });
37 | break;
38 | }
39 | }, opts);
40 | }
41 | else
42 | {
43 | $rootScope.$broadcast('error',geolocation_msgs['errors.location.unsupportedBrowser']);
44 | $rootScope.$apply(function(){deferred.reject(geolocation_msgs['errors.location.unsupportedBrowser']);});
45 | }
46 | return deferred.promise;
47 | }
48 | };
49 | }]);
50 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | // Include gulp
2 | var gulp = require('gulp');
3 | var connect = require('gulp-connect');
4 | var uglify = require('gulp-uglify');
5 | var minifyHtml = require('gulp-minify-html');
6 | var minifyCss = require('gulp-minify-css');
7 | var usemin = require('gulp-usemin');
8 | var clean = require('gulp-clean');
9 | var critical = require('critical'); // new
10 | var rename = require('gulp-rename'); // new
11 | var ngAnnotate = require('gulp-ng-annotate'); // new
12 | var clean = require('gulp-clean'); // new
13 | var del = require('del'); // new
14 | var runSequence = require('run-sequence');
15 |
16 | gulp.task('clean', del.bind(null, ['.tmp', 'dist']));
17 |
18 | gulp.task('copy-html-files', function () {
19 | return gulp.src(['./app/**/*.html', './app/owm-cities.json', '!./app/index.html'], {base: './app'})
20 | .pipe(gulp.dest('build/'));
21 | });
22 |
23 | gulp.task('copy-font-files', function () {
24 | return gulp.src(['./app/bower_components/font-awesome/fonts/*.*'])
25 | .pipe(gulp.dest('build/fonts/'));
26 | });
27 |
28 | gulp.task('usemin', function () {
29 | return gulp.src('./app/index.html')
30 | .pipe(usemin({
31 | css: [minifyCss(), 'concat'],
32 | js: [ngAnnotate(), uglify()]
33 | }))
34 | .pipe(gulp.dest('build/'));
35 | });
36 |
37 | gulp.task('connect', function () {
38 | connect.server({
39 | root: 'app/'
40 | });
41 | });
42 |
43 | // Default Task
44 | gulp.task('default', ['connect']);
45 |
46 | gulp.task('build', ['clean'], function () {
47 | runSequence('copy-html-files', 'copy-font-files', 'usemin');
48 | });
49 |
50 | // Critical-path CSS
51 | gulp.task('copystyles', function () {
52 | return gulp.src('./build/assets/combined.css')
53 | .pipe(rename({
54 | basename: "site" // site.css
55 | }))
56 | .pipe(gulp.dest('./build/assets/'));
57 | });
58 |
59 | gulp.task('criticalcss', function (cb) {
60 | critical.generateInline({
61 | base: './build/',
62 | src: 'index.html',
63 | styleTarget: './assets/combined.css',
64 | htmlTarget: 'index.html',
65 | width: 960,
66 | height: 600,
67 | minify: true
68 | }, cb.bind(cb));
69 | });
70 |
71 | gulp.task('critical', ['clean'], function () {
72 | runSequence('build', 'copystyles', function(){
73 | // Note this is a temporary hack.
74 | setTimeout(function(){
75 | gulp.start('criticalcss');
76 | }, 5000);
77 | });
78 | });
79 | // end critical-path css
80 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/README.md:
--------------------------------------------------------------------------------
1 | Gumby Framework [](https://travis-ci.org/GumbyFramework/Gumby)
2 | =====================
3 |
4 | Gumby Framework is a flexible, responsive CSS Framework, Powered by SASS. Create rapid and logical page layout and app
5 | prototypes with a flexible and responsive grid system and UI kit.
6 |
7 | Full documentation can be found at [http://gumbyframework.com](http://gumbyframework.com/docs).
8 |
9 | More information, including our changelog, can be found in the [Wiki](https://github.com/GumbyFramework/Gumby/wiki).
10 |
11 | Our [Google Plus Community](https://plus.google.com/u/0/communities/108760896951473344451) is rapidly growing, we recommend heading over there with any questions you may have or to geek out and discuss the framework and rwd in general.
12 |
13 | Gumby is developed with love by your friends at [Digital Surgeons](http://www.digitalsurgeons.com).
14 |
15 | Gumby has a few dependencies. Big thank you to the innovative geniuses behind these awesome technologies.
16 |
17 | - [Sass](https://github.com/nex3/sass) - Nathan Weizenbaum
18 | - [Compass](https://github.com/chriseppstein/compass) - Chris Eppstein
19 | - [Modular Scale](https://github.com/Team-Sass/modular-scale) - Scott Kellum *Note: Please use modular scale 1.0.6, 2.x has not been integrated yet*
20 | - [FitText](http://fittextjs.com/) - Paravel
21 | - [jQuery](http://jquery.com/)
22 | - [Modernizr](http://modernizr.com/)
23 |
24 | **MIT Open Source License**
25 |
26 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
27 | documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
28 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
29 | persons to whom the Software is furnished to do so, subject to the following conditions:
30 |
31 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
32 | Software.
33 |
34 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
35 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
36 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
37 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/humans.txt:
--------------------------------------------------------------------------------
1 | /* TEAM */
2 |
3 | Digital Surgeons
4 | Twitter: @digitalsurgeons
5 | Twitter: @gumbycss
6 | Web: www.digitalsurgeons.com
7 | Web: www.gumbyframework.com
8 |
9 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
10 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
11 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
12 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:~~~====~,,,,,,,,,,,,,
13 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,=================+,,,,,,,,,,,,,
14 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,:==================,,,,,,,,,,,,,
15 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+=================:,,,,,,,,,,,,
16 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================:,,,,,,,,,,,,
17 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~=================~,,,,,,,,,,,,
18 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~=================~,,,,,,,,,,,,
19 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,=================~,,,,,,,,,,,,
20 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================,,,,,,,,,,,,
21 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================,,,,,,,,,,,,
22 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================,,,,,,,,,,,,
23 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================,,,,,,,,,,,,
24 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==================,,,,,,,,,,,,
25 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~==============:,,,,,,,,,,,,,,
26 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,==========:,,,,,,,,,,,,,,,,,,,
27 | ,,,,,,,,,,,,,,,,,,,,,,,,:~=========:,,,,,,,,,,,,,,,,,,,,,,,,
28 | ,,,,,,,,,,,,,,,,,:================,,,,,,,,,,,,,,,,,,,,,,,,,,
29 | ,,,,,,,,,,,,:=====================,,,,,,,,,,,,,,,,,,,,,,,,,,
30 | ,,,,,,,,,,,=======================,,,,,,,,,,,,,,,,,,,,,,,,,,
31 | ,,,,,,,,,,,=======================:,,,,,,,,,,,,,,,,,,,,,,,,,
32 | ,,,,,,,,,,,=======================~,,,,,,,,,,,,,,,,,,,,,,,,,
33 | ,,,,,,,,,,,,=~====================~,,,,,,,,,,,,,,,,,,,,,,,,,
34 | ,,,,,,,,,,,,=~~~~~~~~~~~~~~~~~~~~~=,,,,,,,,,,,,,,,,,,,,,,,,,
35 | ,,,,,,,,,,,,~~==~~~~~~~~~~~~~~=====,,,,,,,,,,,,,,,,,,,,,,,,,
36 | ,,,,,,,,,,,,,=~~~~~~~~~~~~~~~~~~~~~,,,,,,,,,,,,,,,,,,,,,,,,,
37 | ,,,,,,,,,,,,,=~~~~~~~~~~~~~~~~~~~~~,,,,,,,,,,,,,,,,,,,,,,,,,
38 | ,,,,,,,,,,,,,,~~~~~~~~~~~~~~~~~~~~,,,,,,,,,,,,,,,,,,,,,,,,,,
39 | ,,,,,,,,,,,,,,~~~~~~~~~~~~~~~~:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
40 | ,,,,,,,,,,,,,,~~~~~~~~~~~~~:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
41 | ,,,,,,,,,,,,,,,~~~~~~~~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
42 | ,,,,,,,,,,,,,,,~~~~:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
43 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
44 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..
45 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....
46 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....
47 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/libs/ui/gumby.radiobtn.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gumby RadioBtn
3 | */
4 | !function($) {
5 |
6 | 'use strict';
7 |
8 | function RadioBtn($el) {
9 |
10 | Gumby.debug('Initializing Radio Button', $el);
11 |
12 | this.$el = $el;
13 | this.$input = this.$el.find('input[type=radio]');
14 |
15 | var scope = this;
16 |
17 | // listen for click event and custom gumby check event
18 | this.$el.on(Gumby.click, function(e) {
19 | // prevent radio button checking, we'll do that manually
20 | e.preventDefault();
21 |
22 | // do nothing if radio is disabled
23 | if (scope.$input.is('[disabled]')) {
24 | return;
25 | }
26 |
27 | // check radio button
28 | scope.update();
29 | }).on('gumby.check', function() {
30 | Gumby.debug('Check event triggered', scope.$el);
31 | scope.update();
32 | });
33 |
34 | // update any prechecked on load
35 | if(this.$input.prop('checked') || this.$el.hasClass('checked')) {
36 | scope.update(true);
37 | }
38 | }
39 |
40 | // check radio button, uncheck all others in name group
41 | RadioBtn.prototype.update = function() {
42 |
43 | // already checked so no need to update
44 | if(this.$el.hasClass('checked') && this.$input.prop('checked') && this.$el.find('i.icon-dot').length) {
45 | return;
46 | }
47 |
48 | Gumby.debug('Updating Radio Button group', this.$el);
49 |
50 | var $span = this.$el.find('span'),
51 | // the group of radio buttons
52 | group = 'input[name="'+this.$input.attr('name')+'"]';
53 |
54 | // uncheck radio buttons in same group - uncheck input, remove checked class, remove
55 | $('.radio').has(group).removeClass('checked')
56 | .find('input').prop('checked', false).end()
57 | .find('i').remove();
58 |
59 | // check this radio button - check input, add checked class, append
60 | this.$input.prop('checked', true);
61 | $span.append('');
62 |
63 | Gumby.debug('Triggering onCheck event', this.$el);
64 |
65 | this.$el.addClass('checked').trigger('gumby.onCheck');
66 | };
67 |
68 | // add initialisation
69 | Gumby.addInitalisation('radiobtn', function() {
70 | $('.radio').each(function() {
71 | var $this = $(this);
72 | // this element has already been initialized
73 | if($this.data('isRadioBtn')) {
74 | return true;
75 | }
76 | // mark element as initialized
77 | $this.data('isRadioBtn', true);
78 | new RadioBtn($this);
79 | });
80 | });
81 |
82 | // register UI module
83 | Gumby.UIModule({
84 | module: 'radiobtn',
85 | events: ['onCheck', 'check'],
86 | init: function() {
87 | Gumby.initialize('radiobtn');
88 | }
89 | });
90 | }(jQuery);
91 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/core/ready.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../core/init",
4 | "../deferred"
5 | ], function( jQuery ) {
6 |
7 | // The deferred used on DOM ready
8 | var readyList;
9 |
10 | jQuery.fn.ready = function( fn ) {
11 | // Add the callback
12 | jQuery.ready.promise().done( fn );
13 |
14 | return this;
15 | };
16 |
17 | jQuery.extend({
18 | // Is the DOM ready to be used? Set to true once it occurs.
19 | isReady: false,
20 |
21 | // A counter to track how many items to wait for before
22 | // the ready event fires. See #6781
23 | readyWait: 1,
24 |
25 | // Hold (or release) the ready event
26 | holdReady: function( hold ) {
27 | if ( hold ) {
28 | jQuery.readyWait++;
29 | } else {
30 | jQuery.ready( true );
31 | }
32 | },
33 |
34 | // Handle when the DOM is ready
35 | ready: function( wait ) {
36 |
37 | // Abort if there are pending holds or we're already ready
38 | if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
39 | return;
40 | }
41 |
42 | // Remember that the DOM is ready
43 | jQuery.isReady = true;
44 |
45 | // If a normal DOM Ready event fired, decrement, and wait if need be
46 | if ( wait !== true && --jQuery.readyWait > 0 ) {
47 | return;
48 | }
49 |
50 | // If there are functions bound, to execute
51 | readyList.resolveWith( document, [ jQuery ] );
52 |
53 | // Trigger any bound ready events
54 | if ( jQuery.fn.triggerHandler ) {
55 | jQuery( document ).triggerHandler( "ready" );
56 | jQuery( document ).off( "ready" );
57 | }
58 | }
59 | });
60 |
61 | /**
62 | * The ready event handler and self cleanup method
63 | */
64 | function completed() {
65 | document.removeEventListener( "DOMContentLoaded", completed, false );
66 | window.removeEventListener( "load", completed, false );
67 | jQuery.ready();
68 | }
69 |
70 | jQuery.ready.promise = function( obj ) {
71 | if ( !readyList ) {
72 |
73 | readyList = jQuery.Deferred();
74 |
75 | // Catch cases where $(document).ready() is called after the browser event has already occurred.
76 | // we once tried to use readyState "interactive" here, but it caused issues like the one
77 | // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
78 | if ( document.readyState === "complete" ) {
79 | // Handle it asynchronously to allow scripts the opportunity to delay ready
80 | setTimeout( jQuery.ready );
81 |
82 | } else {
83 |
84 | // Use the handy event callback
85 | document.addEventListener( "DOMContentLoaded", completed, false );
86 |
87 | // A fallback to window.onload, that will always work
88 | window.addEventListener( "load", completed, false );
89 | }
90 | }
91 | return readyList.promise( obj );
92 | };
93 |
94 | // Kick off the DOM ready check even if the user does not
95 | jQuery.ready.promise();
96 |
97 | });
98 |
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Open Weather Map Application
12 |
13 |
14 |
15 |
21 |
22 |
23 |
24 |
25 | Home
26 |
27 |
28 | Near Me
29 |
30 |
31 | {{ listing.name }}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/ajax/jsonp.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "./var/nonce",
4 | "./var/rquery",
5 | "../ajax"
6 | ], function( jQuery, nonce, rquery ) {
7 |
8 | var oldCallbacks = [],
9 | rjsonp = /(=)\?(?=&|$)|\?\?/;
10 |
11 | // Default jsonp settings
12 | jQuery.ajaxSetup({
13 | jsonp: "callback",
14 | jsonpCallback: function() {
15 | var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
16 | this[ callback ] = true;
17 | return callback;
18 | }
19 | });
20 |
21 | // Detect, normalize options and install callbacks for jsonp requests
22 | jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
23 |
24 | var callbackName, overwritten, responseContainer,
25 | jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
26 | "url" :
27 | typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
28 | );
29 |
30 | // Handle iff the expected data type is "jsonp" or we have a parameter to set
31 | if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
32 |
33 | // Get callback name, remembering preexisting value associated with it
34 | callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
35 | s.jsonpCallback() :
36 | s.jsonpCallback;
37 |
38 | // Insert callback into url or form data
39 | if ( jsonProp ) {
40 | s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
41 | } else if ( s.jsonp !== false ) {
42 | s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
43 | }
44 |
45 | // Use data converter to retrieve json after script execution
46 | s.converters["script json"] = function() {
47 | if ( !responseContainer ) {
48 | jQuery.error( callbackName + " was not called" );
49 | }
50 | return responseContainer[ 0 ];
51 | };
52 |
53 | // force json dataType
54 | s.dataTypes[ 0 ] = "json";
55 |
56 | // Install callback
57 | overwritten = window[ callbackName ];
58 | window[ callbackName ] = function() {
59 | responseContainer = arguments;
60 | };
61 |
62 | // Clean-up function (fires after converters)
63 | jqXHR.always(function() {
64 | // Restore preexisting value
65 | window[ callbackName ] = overwritten;
66 |
67 | // Save back as free
68 | if ( s[ callbackName ] ) {
69 | // make sure that re-using the options doesn't screw things around
70 | s.jsonpCallback = originalSettings.jsonpCallback;
71 |
72 | // save the callback name for future use
73 | oldCallbacks.push( callbackName );
74 | }
75 |
76 | // Call if it was a function and we have a response
77 | if ( responseContainer && jQuery.isFunction( overwritten ) ) {
78 | overwritten( responseContainer[ 0 ] );
79 | }
80 |
81 | responseContainer = overwritten = undefined;
82 | });
83 |
84 | // Delegate to script
85 | return "script";
86 | }
87 | });
88 |
89 | });
90 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/traversing/findFilter.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../var/indexOf",
4 | "./var/rneedsContext",
5 | "../selector"
6 | ], function( jQuery, indexOf, rneedsContext ) {
7 |
8 | var risSimple = /^.[^:#\[\.,]*$/;
9 |
10 | // Implement the identical functionality for filter and not
11 | function winnow( elements, qualifier, not ) {
12 | if ( jQuery.isFunction( qualifier ) ) {
13 | return jQuery.grep( elements, function( elem, i ) {
14 | /* jshint -W018 */
15 | return !!qualifier.call( elem, i, elem ) !== not;
16 | });
17 |
18 | }
19 |
20 | if ( qualifier.nodeType ) {
21 | return jQuery.grep( elements, function( elem ) {
22 | return ( elem === qualifier ) !== not;
23 | });
24 |
25 | }
26 |
27 | if ( typeof qualifier === "string" ) {
28 | if ( risSimple.test( qualifier ) ) {
29 | return jQuery.filter( qualifier, elements, not );
30 | }
31 |
32 | qualifier = jQuery.filter( qualifier, elements );
33 | }
34 |
35 | return jQuery.grep( elements, function( elem ) {
36 | return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
37 | });
38 | }
39 |
40 | jQuery.filter = function( expr, elems, not ) {
41 | var elem = elems[ 0 ];
42 |
43 | if ( not ) {
44 | expr = ":not(" + expr + ")";
45 | }
46 |
47 | return elems.length === 1 && elem.nodeType === 1 ?
48 | jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
49 | jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
50 | return elem.nodeType === 1;
51 | }));
52 | };
53 |
54 | jQuery.fn.extend({
55 | find: function( selector ) {
56 | var i,
57 | len = this.length,
58 | ret = [],
59 | self = this;
60 |
61 | if ( typeof selector !== "string" ) {
62 | return this.pushStack( jQuery( selector ).filter(function() {
63 | for ( i = 0; i < len; i++ ) {
64 | if ( jQuery.contains( self[ i ], this ) ) {
65 | return true;
66 | }
67 | }
68 | }) );
69 | }
70 |
71 | for ( i = 0; i < len; i++ ) {
72 | jQuery.find( selector, self[ i ], ret );
73 | }
74 |
75 | // Needed because $( selector, context ) becomes $( context ).find( selector )
76 | ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
77 | ret.selector = this.selector ? this.selector + " " + selector : selector;
78 | return ret;
79 | },
80 | filter: function( selector ) {
81 | return this.pushStack( winnow(this, selector || [], false) );
82 | },
83 | not: function( selector ) {
84 | return this.pushStack( winnow(this, selector || [], true) );
85 | },
86 | is: function( selector ) {
87 | return !!winnow(
88 | this,
89 |
90 | // If this is a positional/relative selector, check membership in the returned set
91 | // so $("p:first").is("p:last") won't return true for a doc with two "p".
92 | typeof selector === "string" && rneedsContext.test( selector ) ?
93 | jQuery( selector ) :
94 | selector || [],
95 | false
96 | ).length;
97 | }
98 | });
99 |
100 | });
101 |
--------------------------------------------------------------------------------
/app/owm-cities.json:
--------------------------------------------------------------------------------
1 | [
2 | "New York, New York",
3 | "Los Angeles, California",
4 | "Chicago, Illinois",
5 | "Houston, Texas",
6 | "Philadelphia, Pennsylvania",
7 | "Phoenix, Arizona",
8 | "San Diego, California",
9 | "San Antonio, Texas",
10 | "Dallas, Texas",
11 | "Detroit, Michigan",
12 | "San Jose, California",
13 | "Indianapolis, Indiana",
14 | "Jacksonville, Florida",
15 | "San Francisco, California",
16 | "Columbus, Ohio",
17 | "Austin, Texas",
18 | "Memphis, Tennessee",
19 | "Baltimore, Maryland",
20 | "Charlotte, North Carolina",
21 | "Fort Worth, Texas",
22 | "Boston, Massachusetts",
23 | "Milwaukee, Wisconsin",
24 | "El Paso, Texas",
25 | "Washington, District of Columbia",
26 | "Nashville-Davidson, Tennessee",
27 | "Seattle, Washington",
28 | "Denver, Colorado",
29 | "Las Vegas, Nevada",
30 | "Portland, Oregon",
31 | "Oklahoma City, Oklahoma",
32 | "Tucson, Arizona",
33 | "Albuquerque, New Mexico",
34 | "Atlanta, Georgia",
35 | "Long Beach, California",
36 | "Kansas City, Missouri",
37 | "Fresno, California",
38 | "New Orleans, Louisiana",
39 | "Cleveland, Ohio",
40 | "Sacramento, California",
41 | "Mesa, Arizona",
42 | "Virginia Beach, Virginia",
43 | "Omaha, Nebraska",
44 | "Colorado Springs, Colorado",
45 | "Oakland, California",
46 | "Miami, Florida",
47 | "Tulsa, Oklahoma",
48 | "Minneapolis, Minnesota",
49 | "Honolulu, Hawaii",
50 | "Arlington, Texas",
51 | "Wichita, Kansas",
52 | "St. Louis, Missouri",
53 | "Raleigh, North Carolina",
54 | "Santa Ana, California",
55 | "Cincinnati, Ohio",
56 | "Anaheim, California",
57 | "Tampa, Florida",
58 | "Toledo, Ohio",
59 | "Pittsburgh, Pennsylvania",
60 | "Aurora, Colorado",
61 | "Bakersfield, California",
62 | "Riverside, California",
63 | "Stockton, California",
64 | "Corpus Christi, Texas",
65 | "Lexington-Fayette, Kentucky",
66 | "Buffalo, New York",
67 | "St. Paul, Minnesota",
68 | "Anchorage, Alaska",
69 | "Newark, New Jersey",
70 | "Plano, Texas",
71 | "Fort Wayne, Indiana",
72 | "St. Petersburg, Florida",
73 | "Glendale, Arizona",
74 | "Lincoln, Nebraska",
75 | "Norfolk, Virginia",
76 | "Jersey City, New Jersey",
77 | "Greensboro, North Carolina",
78 | "Chandler, Arizona",
79 | "Birmingham, Alabama",
80 | "Henderson, Nevada",
81 | "Scottsdale, Arizona",
82 | "North Hempstead, New York",
83 | "Madison, Wisconsin",
84 | "Hialeah, Florida",
85 | "Baton Rouge, Louisiana",
86 | "Chesapeake, Virginia",
87 | "Orlando, Florida",
88 | "Lubbock, Texas",
89 | "Garland, Texas",
90 | "Akron, Ohio",
91 | "Rochester, New York",
92 | "Chula Vista, California",
93 | "Reno, Nevada",
94 | "Laredo, Texas",
95 | "Durham, North Carolina",
96 | "Modesto, California",
97 | "Huntington, New York",
98 | "Montgomery, Alabama",
99 | "Boise, Idaho",
100 | "Arlington, Virginia",
101 | "San Bernardino, California"
102 | ]
103 |
--------------------------------------------------------------------------------
/output/critical/owm-cities.json:
--------------------------------------------------------------------------------
1 | [
2 | "New York, New York",
3 | "Los Angeles, California",
4 | "Chicago, Illinois",
5 | "Houston, Texas",
6 | "Philadelphia, Pennsylvania",
7 | "Phoenix, Arizona",
8 | "San Diego, California",
9 | "San Antonio, Texas",
10 | "Dallas, Texas",
11 | "Detroit, Michigan",
12 | "San Jose, California",
13 | "Indianapolis, Indiana",
14 | "Jacksonville, Florida",
15 | "San Francisco, California",
16 | "Columbus, Ohio",
17 | "Austin, Texas",
18 | "Memphis, Tennessee",
19 | "Baltimore, Maryland",
20 | "Charlotte, North Carolina",
21 | "Fort Worth, Texas",
22 | "Boston, Massachusetts",
23 | "Milwaukee, Wisconsin",
24 | "El Paso, Texas",
25 | "Washington, District of Columbia",
26 | "Nashville-Davidson, Tennessee",
27 | "Seattle, Washington",
28 | "Denver, Colorado",
29 | "Las Vegas, Nevada",
30 | "Portland, Oregon",
31 | "Oklahoma City, Oklahoma",
32 | "Tucson, Arizona",
33 | "Albuquerque, New Mexico",
34 | "Atlanta, Georgia",
35 | "Long Beach, California",
36 | "Kansas City, Missouri",
37 | "Fresno, California",
38 | "New Orleans, Louisiana",
39 | "Cleveland, Ohio",
40 | "Sacramento, California",
41 | "Mesa, Arizona",
42 | "Virginia Beach, Virginia",
43 | "Omaha, Nebraska",
44 | "Colorado Springs, Colorado",
45 | "Oakland, California",
46 | "Miami, Florida",
47 | "Tulsa, Oklahoma",
48 | "Minneapolis, Minnesota",
49 | "Honolulu, Hawaii",
50 | "Arlington, Texas",
51 | "Wichita, Kansas",
52 | "St. Louis, Missouri",
53 | "Raleigh, North Carolina",
54 | "Santa Ana, California",
55 | "Cincinnati, Ohio",
56 | "Anaheim, California",
57 | "Tampa, Florida",
58 | "Toledo, Ohio",
59 | "Pittsburgh, Pennsylvania",
60 | "Aurora, Colorado",
61 | "Bakersfield, California",
62 | "Riverside, California",
63 | "Stockton, California",
64 | "Corpus Christi, Texas",
65 | "Lexington-Fayette, Kentucky",
66 | "Buffalo, New York",
67 | "St. Paul, Minnesota",
68 | "Anchorage, Alaska",
69 | "Newark, New Jersey",
70 | "Plano, Texas",
71 | "Fort Wayne, Indiana",
72 | "St. Petersburg, Florida",
73 | "Glendale, Arizona",
74 | "Lincoln, Nebraska",
75 | "Norfolk, Virginia",
76 | "Jersey City, New Jersey",
77 | "Greensboro, North Carolina",
78 | "Chandler, Arizona",
79 | "Birmingham, Alabama",
80 | "Henderson, Nevada",
81 | "Scottsdale, Arizona",
82 | "North Hempstead, New York",
83 | "Madison, Wisconsin",
84 | "Hialeah, Florida",
85 | "Baton Rouge, Louisiana",
86 | "Chesapeake, Virginia",
87 | "Orlando, Florida",
88 | "Lubbock, Texas",
89 | "Garland, Texas",
90 | "Akron, Ohio",
91 | "Rochester, New York",
92 | "Chula Vista, California",
93 | "Reno, Nevada",
94 | "Laredo, Texas",
95 | "Durham, North Carolina",
96 | "Modesto, California",
97 | "Huntington, New York",
98 | "Montgomery, Alabama",
99 | "Boise, Idaho",
100 | "Arlington, Virginia",
101 | "San Bernardino, California"
102 | ]
103 |
--------------------------------------------------------------------------------
/output/normal/owm-cities.json:
--------------------------------------------------------------------------------
1 | [
2 | "New York, New York",
3 | "Los Angeles, California",
4 | "Chicago, Illinois",
5 | "Houston, Texas",
6 | "Philadelphia, Pennsylvania",
7 | "Phoenix, Arizona",
8 | "San Diego, California",
9 | "San Antonio, Texas",
10 | "Dallas, Texas",
11 | "Detroit, Michigan",
12 | "San Jose, California",
13 | "Indianapolis, Indiana",
14 | "Jacksonville, Florida",
15 | "San Francisco, California",
16 | "Columbus, Ohio",
17 | "Austin, Texas",
18 | "Memphis, Tennessee",
19 | "Baltimore, Maryland",
20 | "Charlotte, North Carolina",
21 | "Fort Worth, Texas",
22 | "Boston, Massachusetts",
23 | "Milwaukee, Wisconsin",
24 | "El Paso, Texas",
25 | "Washington, District of Columbia",
26 | "Nashville-Davidson, Tennessee",
27 | "Seattle, Washington",
28 | "Denver, Colorado",
29 | "Las Vegas, Nevada",
30 | "Portland, Oregon",
31 | "Oklahoma City, Oklahoma",
32 | "Tucson, Arizona",
33 | "Albuquerque, New Mexico",
34 | "Atlanta, Georgia",
35 | "Long Beach, California",
36 | "Kansas City, Missouri",
37 | "Fresno, California",
38 | "New Orleans, Louisiana",
39 | "Cleveland, Ohio",
40 | "Sacramento, California",
41 | "Mesa, Arizona",
42 | "Virginia Beach, Virginia",
43 | "Omaha, Nebraska",
44 | "Colorado Springs, Colorado",
45 | "Oakland, California",
46 | "Miami, Florida",
47 | "Tulsa, Oklahoma",
48 | "Minneapolis, Minnesota",
49 | "Honolulu, Hawaii",
50 | "Arlington, Texas",
51 | "Wichita, Kansas",
52 | "St. Louis, Missouri",
53 | "Raleigh, North Carolina",
54 | "Santa Ana, California",
55 | "Cincinnati, Ohio",
56 | "Anaheim, California",
57 | "Tampa, Florida",
58 | "Toledo, Ohio",
59 | "Pittsburgh, Pennsylvania",
60 | "Aurora, Colorado",
61 | "Bakersfield, California",
62 | "Riverside, California",
63 | "Stockton, California",
64 | "Corpus Christi, Texas",
65 | "Lexington-Fayette, Kentucky",
66 | "Buffalo, New York",
67 | "St. Paul, Minnesota",
68 | "Anchorage, Alaska",
69 | "Newark, New Jersey",
70 | "Plano, Texas",
71 | "Fort Wayne, Indiana",
72 | "St. Petersburg, Florida",
73 | "Glendale, Arizona",
74 | "Lincoln, Nebraska",
75 | "Norfolk, Virginia",
76 | "Jersey City, New Jersey",
77 | "Greensboro, North Carolina",
78 | "Chandler, Arizona",
79 | "Birmingham, Alabama",
80 | "Henderson, Nevada",
81 | "Scottsdale, Arizona",
82 | "North Hempstead, New York",
83 | "Madison, Wisconsin",
84 | "Hialeah, Florida",
85 | "Baton Rouge, Louisiana",
86 | "Chesapeake, Virginia",
87 | "Orlando, Florida",
88 | "Lubbock, Texas",
89 | "Garland, Texas",
90 | "Akron, Ohio",
91 | "Rochester, New York",
92 | "Chula Vista, California",
93 | "Reno, Nevada",
94 | "Laredo, Texas",
95 | "Durham, North Carolina",
96 | "Modesto, California",
97 | "Huntington, New York",
98 | "Montgomery, Alabama",
99 | "Boise, Idaho",
100 | "Arlington, Virginia",
101 | "San Bernardino, California"
102 | ]
103 |
--------------------------------------------------------------------------------
/app/owm-app.css:
--------------------------------------------------------------------------------
1 | /* C00014 */
2 | .row, .container {
3 | width:auto!important;
4 | min-width:auto!important;
5 | max-width:100%!important;
6 | }
7 |
8 | .owm-body {
9 | height:100%;
10 | position:relative;
11 | }
12 | .owm-navigation {
13 | z-index:100;
14 | position:fixed;
15 | top:0;
16 | left:0;
17 | right:0;
18 | margin-bottom:0;
19 | }
20 | .owm-history {
21 | position:absolute;
22 | top:60px;
23 | background:#666;
24 | left:0;
25 | right:0;
26 | min-height:40px;
27 | z-index:99;
28 | margin-bottom:0;
29 | }
30 | .owm-history,
31 | .owm-history a {
32 | color:white;
33 | }
34 | .owm-history-listing {
35 | display:inline-block;
36 | padding:10px;
37 | }
38 | .owm-history-listing + .owm-history-listing:before {
39 | content:">>";
40 | }
41 | .owm-view {
42 | position:relative;
43 | min-height:100%;
44 | padding:150px 20px 20px;
45 | }
46 | .omw-detail-panel {
47 | border-left:1px solid #ddd;
48 | padding-left:20px;
49 | background:#eee;
50 | position:absolute;
51 | top:100px;
52 | padding-top:20px;
53 | right:0;
54 | left:50%;
55 | bottom:0;
56 | overflow:auto;
57 | }
58 | .owm-weather-entries {
59 | margin-bottom:20px;
60 | border-top:2px solid #ddd;
61 | margin-top:20px;
62 | padding:10px 0;
63 | position:relative;
64 | }
65 | .owm-weather-entries:after {
66 | content:"";
67 | position:absolute;
68 | top:-20px;
69 | left:20px;
70 | border-width:10px;
71 | border-style:solid;
72 | border-color:transparent transparent #ddd;
73 | }
74 | .owm-weather-item-listing {
75 | overflow:auto;
76 | padding:8px 0;
77 | }
78 | .owm-stop-route-listing + .owm-stop-route-listing {
79 | border-top:1px solid #ddd;
80 | }
81 | .owm-weather-item-listing time {
82 | font-size:30px;
83 | margin-right:20px;
84 | font-weight:bold;
85 | }
86 |
87 | @media (max-width: 600px) {
88 | .tcc-detail-panel {
89 | margin-top:20px;
90 | position:static;
91 | }
92 | }
93 | .owm-searcher {
94 | width:100%;
95 | box-sizing:border-box;
96 | font-size:20px;
97 | padding:10px;
98 | border:2px solid #999;
99 | }
100 |
101 |
102 | /*overrides*/
103 | @media only screen and (max-width: 767px){
104 | .navbar ul {
105 | position: absolute;
106 | display: inline-table;
107 | width: 100% !important;
108 | left: 0;
109 | text-align: center;
110 | background: #3e4043;
111 | margin-top: -60px;
112 | }
113 |
114 | .navbar ul li {
115 | display: inline-block;
116 | position: relative;
117 | min-height: 50px;
118 | max-height: 320px;
119 | height: auto;
120 | width: 40%;
121 | border-right: 0 !important;
122 | -webkit-box-shadow: none;
123 | -moz-box-shadow: none;
124 | box-shadow: none;
125 | -webkit-transition-duration: 0.5s;
126 | -moz-transition-duration: 0.5s;
127 | -o-transition-duration: 0.5s;
128 | transition-duration: 0.5s;
129 | }
130 |
131 | .omw-detail-panel {
132 | position: initial;
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/libs/ui/gumby.navbar.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gumby Navbar
3 | */
4 | !function($) {
5 |
6 | 'use strict';
7 |
8 | // define and init module on touch enabled devices only
9 | if(!Gumby.gumbyTouch) {
10 | return;
11 | }
12 |
13 | function Navbar($el) {
14 |
15 | Gumby.debug('Initializing Navbar', $el);
16 |
17 | this.$el = $el;
18 | this.$dropDowns = this.$el.find('li:has(.dropdown)');
19 | var scope = this;
20 |
21 | var persist = this.$el.attr('gumby-persist');
22 | if(typeof persist === 'undefined' && persist !== 'false') {
23 | this.$el.find('li:not(:has(.dropdown)) a').on(Gumby.click, function() {
24 | scope.$el.find('ul').removeClass('active');
25 | });
26 | }
27 |
28 | // when navbar items
29 | this.$dropDowns
30 | // are tapped hide/show dropdowns
31 | .on(Gumby.click, this.toggleDropdown)
32 | // are swiped right open link
33 | .on('swiperight', this.openLink);
34 |
35 | // if there's a link set
36 | if(this.$dropDowns.children('a').attr('href') !== '#') {
37 | // append an icon
38 | this.$dropDowns.children('a').append('').children('i')
39 | // and bind to click event to open link
40 | .on(Gumby.click, this.openLink);
41 | }
42 |
43 | // override with childlinks
44 | this.$el.find('li:not(:has(.dropdown)) a[href]').on(Gumby.click, this.openLink);
45 | }
46 |
47 | Navbar.prototype.toggleDropdown = function(e) {
48 | e.preventDefault();
49 |
50 | if($(this).parents('.dropdown')) {
51 | e.stopImmediatePropagation();
52 | }
53 |
54 | if($(e.target).is('i')) {
55 | return;
56 | }
57 |
58 | var $this = $(this);
59 |
60 | if($this.hasClass('active')) {
61 | $this.removeClass('active');
62 | } else {
63 | $this.addClass('active');
64 | }
65 | };
66 |
67 | // handle opening list item link
68 | Navbar.prototype.openLink = function(e) {
69 | e.preventDefault();
70 |
71 | var $this = $(this),
72 | $el = $this, href;
73 |
74 | // tapped icon
75 | if($this.is('i')) {
76 | $el = $this.parent('a');
77 | // swiped li
78 | } else if($this.is('li')) {
79 | $el = $this.children('a');
80 | }
81 |
82 | href = $el.attr('href');
83 |
84 | // open in new window
85 | if($el.attr('target') == 'blank') {
86 | window.open(href);
87 | // regular relocation
88 | } else {
89 | window.location = href;
90 | }
91 | };
92 |
93 | // add initialisation
94 | Gumby.addInitalisation('navbar', function() {
95 | $('.navbar').each(function() {
96 | var $this = $(this);
97 | // this element has already been initialized
98 | if($this.data('isNavbar')) {
99 | return true;
100 | }
101 | // mark element as initialized
102 | $this.data('isNavbar', true);
103 | new Navbar($this);
104 | });
105 | });
106 |
107 | // register UI module
108 | Gumby.UIModule({
109 | module: 'navbar',
110 | events: [],
111 | init: function() {
112 | Gumby.initialize('navbar');
113 | }
114 | });
115 | }(jQuery);
116 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/js/libs/ui/gumby.checkbox.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gumby Checkbox
3 | */
4 | !function($) {
5 |
6 | 'use strict';
7 |
8 | function Checkbox($el) {
9 |
10 | Gumby.debug('Initializing Checkbox', $el);
11 |
12 | this.$el = $el;
13 | this.$input = this.$el.find('input[type=checkbox]');
14 |
15 | var scope = this;
16 |
17 | // listen for click event and custom gumby check/uncheck events
18 | this.$el.on(Gumby.click, function(e) {
19 | // prevent checkbox checking, we'll do that manually
20 | e.preventDefault();
21 |
22 | // do nothing if checkbox is disabled
23 | if(scope.$input.is('[disabled]')) {
24 | return;
25 | }
26 |
27 | // check/uncheck
28 | if(scope.$el.hasClass('checked')) {
29 | scope.update(false);
30 | } else {
31 | scope.update(true);
32 | }
33 | }).on('gumby.check', function() {
34 | Gumby.debug('Check event triggered', scope.$el);
35 | scope.update(true);
36 | }).on('gumby.uncheck', function() {
37 | Gumby.debug('Uncheck event triggered', scope.$el);
38 | scope.update(false);
39 | });
40 |
41 | // update any prechecked on load
42 | if(this.$input.prop('checked') || this.$el.hasClass('checked')) {
43 | scope.update(true);
44 | }
45 | }
46 |
47 | // update checkbox, check equals true/false to sepcify check/uncheck
48 | Checkbox.prototype.update = function(check) {
49 | var $span = this.$el.find('span');
50 |
51 | // check checkbox - check input, add checked class, append
52 | if(check) {
53 |
54 | Gumby.debug('Checking Checkbox', this.$el);
55 |
56 | $span.append('');
57 | this.$input.prop('checked', true);
58 |
59 | Gumby.debug('Triggering onCheck event', this.$el);
60 | Gumby.debug('Triggering onChange event', this.$el);
61 |
62 | this.$el.addClass('checked').trigger('gumby.onCheck').trigger('gumby.onChange');
63 |
64 | // uncheck checkbox - uncheck input, remove checked class, remove
65 | } else {
66 |
67 | Gumby.debug('Unchecking Checkbox', this.$el);
68 |
69 | this.$input.prop('checked', false);
70 | $span.find('i').remove();
71 |
72 | Gumby.debug('Triggering onUncheck event', this.$el);
73 | Gumby.debug('Triggering onChange event', this.$el);
74 |
75 | this.$el.removeClass('checked').trigger('gumby.onUncheck').trigger('gumby.onChange');
76 | }
77 | };
78 |
79 | // add initialisation
80 | Gumby.addInitalisation('checkbox', function() {
81 | $('.checkbox').each(function() {
82 | var $this = $(this);
83 | // this element has already been initialized
84 | if($this.data('isCheckbox')) {
85 | return true;
86 | }
87 | // mark element as initialized
88 | $this.data('isCheckbox', true);
89 | new Checkbox($this);
90 | });
91 | });
92 |
93 | // register UI module
94 | Gumby.UIModule({
95 | module: 'checkbox',
96 | events: ['onCheck', 'onUncheck', 'onChange', 'check', 'uncheck'],
97 | init: function() {
98 | Gumby.initialize('checkbox');
99 | }
100 | });
101 | }(jQuery);
102 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/functions/_tooltips.scss:
--------------------------------------------------------------------------------
1 | // CSS Tooltips
2 |
3 | @mixin tooltip($tt-min-width, $tt-bgcolor, $tt-position, $tt-align) {
4 | position: relative;
5 |
6 | &:after {
7 | display: block;
8 | background: $tt-bgcolor;
9 | border: 1px solid $tt-bgcolor;
10 | border-bottom: 0;
11 | @include border-radius(3px);
12 | padding: em(8) em(12);
13 | width: auto;
14 | min-width: $tt-min-width;
15 | max-width: 500px;
16 | position: absolute;
17 | @if $tt-position == "bottom" {
18 | @if $tt-align == "right" { right: 0 } @else { left: 0; }
19 | top: 101%;
20 | margin-top: 8px;
21 | } @else if $tt-position == "top" {
22 | @if $tt-align == "right" { right: 0 } @else { left: 0; }
23 | bottom: 101%;
24 | margin-bottom: 8px;
25 | } @else if $tt-position == "left" {
26 | right: 101%;
27 | top: -35%;
28 | margin-right: 8px;
29 | } @else if $tt-position == "right" {
30 | left: 101%;
31 | top: -35%;
32 | margin-left: 8px;
33 | }
34 |
35 | @if $tt-align == "right" {
36 | text-align: right;
37 | } @else if $tt-align == "left" {
38 | text-align: left;
39 | }
40 |
41 | color: #fff;
42 | content: attr(data-tooltip);
43 | line-height: 1.5;
44 | font-size: $norm;
45 | font-weight: normal;
46 | font-style: normal;
47 |
48 | @include transition(opacity 0.1s ease);
49 | @include opacity(0);
50 | pointer-events: none;
51 |
52 | @if $tt-pretty != "no" {
53 | @include background-image(linear-gradient($tt-position, lighten($tt-bgcolor, 12.5%), $tt-bgcolor));
54 | @include box-shadow(0 0 5px 0 rgba($tt-bgcolor,.25));
55 | }
56 | }
57 |
58 | &:before {
59 | content: " ";
60 | width: 0;
61 | height: 0;
62 | position: absolute;
63 | @if $tt-position == "bottom" {
64 | top: 101%;
65 | @if $tt-align == "right" { right: 8px } @else { left: 8px; }
66 | border-bottom: 9px solid $tt-bgcolor !important;
67 | border-left: 9px solid transparent;
68 | border-right: 9px solid transparent;
69 | } @else if $tt-position == "top" {
70 | bottom: 101%;
71 | @if $tt-align == "right" { right: 8px } @else { left: 8px; }
72 | border-top: 9px solid $tt-bgcolor !important;
73 | border-left: 9px solid transparent;
74 | border-right: 9px solid transparent;
75 | } @else if $tt-position == "left" {
76 | top: 3px;
77 | right: 101%;
78 | border-left: 9px solid $tt-bgcolor !important;
79 | border-top: 9px solid transparent;
80 | border-bottom: 9px solid transparent;
81 | } @else if $tt-position == "right" {
82 | top: 3px;
83 | left: 101%;
84 | border-right: 9px solid $tt-bgcolor !important;
85 | border-top: 9px solid transparent;
86 | border-bottom: 9px solid transparent;
87 | }
88 | @include transition(opacity 0.1s ease);
89 | @include opacity(0);
90 | pointer-events: none;
91 | }
92 |
93 | &:hover:after,
94 | &:hover:before {
95 | @include transition(opacity 0.1s ease);
96 | @include opacity(1);
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/css/support.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../var/support"
4 | ], function( jQuery, support ) {
5 |
6 | (function() {
7 | var pixelPositionVal, boxSizingReliableVal,
8 | docElem = document.documentElement,
9 | container = document.createElement( "div" ),
10 | div = document.createElement( "div" );
11 |
12 | if ( !div.style ) {
13 | return;
14 | }
15 |
16 | div.style.backgroundClip = "content-box";
17 | div.cloneNode( true ).style.backgroundClip = "";
18 | support.clearCloneStyle = div.style.backgroundClip === "content-box";
19 |
20 | container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
21 | "position:absolute";
22 | container.appendChild( div );
23 |
24 | // Executing both pixelPosition & boxSizingReliable tests require only one layout
25 | // so they're executed at the same time to save the second computation.
26 | function computePixelPositionAndBoxSizingReliable() {
27 | div.style.cssText =
28 | // Support: Firefox<29, Android 2.3
29 | // Vendor-prefix box-sizing
30 | "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
31 | "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
32 | "border:1px;padding:1px;width:4px;position:absolute";
33 | div.innerHTML = "";
34 | docElem.appendChild( container );
35 |
36 | var divStyle = window.getComputedStyle( div, null );
37 | pixelPositionVal = divStyle.top !== "1%";
38 | boxSizingReliableVal = divStyle.width === "4px";
39 |
40 | docElem.removeChild( container );
41 | }
42 |
43 | // Support: node.js jsdom
44 | // Don't assume that getComputedStyle is a property of the global object
45 | if ( window.getComputedStyle ) {
46 | jQuery.extend( support, {
47 | pixelPosition: function() {
48 | // This test is executed only once but we still do memoizing
49 | // since we can use the boxSizingReliable pre-computing.
50 | // No need to check if the test was already performed, though.
51 | computePixelPositionAndBoxSizingReliable();
52 | return pixelPositionVal;
53 | },
54 | boxSizingReliable: function() {
55 | if ( boxSizingReliableVal == null ) {
56 | computePixelPositionAndBoxSizingReliable();
57 | }
58 | return boxSizingReliableVal;
59 | },
60 | reliableMarginRight: function() {
61 | // Support: Android 2.3
62 | // Check if div with explicit width and no margin-right incorrectly
63 | // gets computed margin-right based on width of container. (#3333)
64 | // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
65 | // This support function is only executed once so no memoizing is needed.
66 | var ret,
67 | marginDiv = div.appendChild( document.createElement( "div" ) );
68 |
69 | // Reset CSS: box-sizing; display; margin; border; padding
70 | marginDiv.style.cssText = div.style.cssText =
71 | // Support: Firefox<29, Android 2.3
72 | // Vendor-prefix box-sizing
73 | "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
74 | "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
75 | marginDiv.style.marginRight = marginDiv.style.width = "0";
76 | div.style.width = "1px";
77 | docElem.appendChild( container );
78 |
79 | ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
80 |
81 | docElem.removeChild( container );
82 |
83 | return ret;
84 | }
85 | });
86 | }
87 | })();
88 |
89 | return support;
90 |
91 | });
92 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/functions/_grid-calc.scss:
--------------------------------------------------------------------------------
1 | // Calculate grid values
2 | $gutter: percentage($gutter-in-px / $row-max-width); // 2.1276596
3 |
4 | // Return single column width
5 | @function oneCol($hybrid-grid: false) {
6 | @if ($hybrid-grid == true){
7 | @return (100% - ($gutter * ($hybrid - 1))) / $hybrid;
8 | }
9 | @else{
10 | @return (100% - ($gutter * ($cols - 1))) / $cols;
11 | }
12 | }
13 |
14 | // Calculate Grid Column Widths
15 | @function columns($num, $hybrid-grid: false){
16 | @if ($hybrid-grid == true) {
17 | @return (oneCol(true) * $num) + ($gutter * ($num - 1));
18 | }
19 | @else {
20 | @return (oneCol() * $num) + ($gutter * ($num - 1)); // (One column * 'x') + (gutter * ('x' - 1)) = Column Width
21 | }
22 | }
23 |
24 |
25 | // Calculate the width required to acheive a desired global column number within a nested grid
26 | @function global-columns($desired_cols, $container_cols, $hybrid-grid: false){
27 | @if ($hybrid-grid == true) {
28 | @return (100% * (columns($desired_cols, true) / columns($container_cols, true)));
29 | }
30 | @else {
31 | @return (100% * (columns($desired_cols) / columns($container_cols)));
32 | }
33 | }
34 |
35 | // Calculate Push Class Margins
36 | @function push_x($num, $first-child: false, $is-hybrid: false) {
37 | @if $first-child and $is-hybrid {
38 | @return (oneCol(true) * $num) + ($gutter * ($num - 1)) + $gutter; // Column width + gutter
39 | }
40 | @else if $first-child != true and $is_hybrid{
41 | @return (oneCol(true) * $num) + ($gutter * ($num - 1)) + ($gutter * 2); // Column width + (gutter * 2)
42 | }
43 | @else if $first-child and $is_hybrid != true{
44 | @return (oneCol() * $num) + ($gutter * ($num - 1)) + $gutter;
45 | }
46 | @else {
47 | @return (oneCol() * $num) + ($gutter * ($num - 1)) + ($gutter * 2); // Column width + (gutter * 2)
48 | }
49 | }
50 |
51 | // Calculate Pull Class Margins
52 | // note absence of first-child; first-child column containers should not be pulled
53 | // $num is number of columns to be pulled
54 | // $width is number of columns of container that is being pulled
55 | @function pull_x($num, $width, $is-hybrid: false) {
56 | @if $is-hybrid {
57 | @return -((oneCol(true) * $num) + ($gutter * ($num - 1)) + (oneCol(true) * $width) + ($gutter * ($width - 1)) + $gutter); // Pull width + column width + gutter
58 | }
59 | @else {
60 | @return -((oneCol() * $num) + ($gutter * ($num - 1)) + (oneCol() * $width) + ($gutter * ($width - 1)) + $gutter); // Pull width + column width + gutter
61 | }
62 | }
63 |
64 | // Calculate Centered Class Margins
65 | @function centered($num, $hybrid-grid: false) {
66 | @if $hybrid-grid{
67 | @return 50% - ((($num * (oneCol(true))) + (($num - 1) * $gutter)) / 2);
68 | }
69 | @else{
70 | @return 50% - ((($num * (oneCol())) + (($num - 1) * $gutter)) / 2);
71 | }
72 | }
73 |
74 | // Create class names from column count integers
75 | @function number-as-word($number){
76 | $w: "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven",
77 | "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
78 | "twenty", "twenty-one", "twenty-two", "twenty-three", "twenty-four", "twenty-five", "twenty-six", "twenty-seven",
79 | "twenty-eight", "twenty-nine", "thirty", "thirty-one", "thirty-two", "thirty-three",
80 | "thirty-four", "thirty-five", "thirty-six";
81 | @return nth($w, $number);
82 | }
83 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/effects/Tween.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../css"
4 | ], function( jQuery ) {
5 |
6 | function Tween( elem, options, prop, end, easing ) {
7 | return new Tween.prototype.init( elem, options, prop, end, easing );
8 | }
9 | jQuery.Tween = Tween;
10 |
11 | Tween.prototype = {
12 | constructor: Tween,
13 | init: function( elem, options, prop, end, easing, unit ) {
14 | this.elem = elem;
15 | this.prop = prop;
16 | this.easing = easing || "swing";
17 | this.options = options;
18 | this.start = this.now = this.cur();
19 | this.end = end;
20 | this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
21 | },
22 | cur: function() {
23 | var hooks = Tween.propHooks[ this.prop ];
24 |
25 | return hooks && hooks.get ?
26 | hooks.get( this ) :
27 | Tween.propHooks._default.get( this );
28 | },
29 | run: function( percent ) {
30 | var eased,
31 | hooks = Tween.propHooks[ this.prop ];
32 |
33 | if ( this.options.duration ) {
34 | this.pos = eased = jQuery.easing[ this.easing ](
35 | percent, this.options.duration * percent, 0, 1, this.options.duration
36 | );
37 | } else {
38 | this.pos = eased = percent;
39 | }
40 | this.now = ( this.end - this.start ) * eased + this.start;
41 |
42 | if ( this.options.step ) {
43 | this.options.step.call( this.elem, this.now, this );
44 | }
45 |
46 | if ( hooks && hooks.set ) {
47 | hooks.set( this );
48 | } else {
49 | Tween.propHooks._default.set( this );
50 | }
51 | return this;
52 | }
53 | };
54 |
55 | Tween.prototype.init.prototype = Tween.prototype;
56 |
57 | Tween.propHooks = {
58 | _default: {
59 | get: function( tween ) {
60 | var result;
61 |
62 | if ( tween.elem[ tween.prop ] != null &&
63 | (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
64 | return tween.elem[ tween.prop ];
65 | }
66 |
67 | // passing an empty string as a 3rd parameter to .css will automatically
68 | // attempt a parseFloat and fallback to a string if the parse fails
69 | // so, simple values such as "10px" are parsed to Float.
70 | // complex values such as "rotate(1rad)" are returned as is.
71 | result = jQuery.css( tween.elem, tween.prop, "" );
72 | // Empty strings, null, undefined and "auto" are converted to 0.
73 | return !result || result === "auto" ? 0 : result;
74 | },
75 | set: function( tween ) {
76 | // use step hook for back compat - use cssHook if its there - use .style if its
77 | // available and use plain properties where available
78 | if ( jQuery.fx.step[ tween.prop ] ) {
79 | jQuery.fx.step[ tween.prop ]( tween );
80 | } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
81 | jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
82 | } else {
83 | tween.elem[ tween.prop ] = tween.now;
84 | }
85 | }
86 | }
87 | };
88 |
89 | // Support: IE9
90 | // Panic based approach to setting things on disconnected nodes
91 |
92 | Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
93 | set: function( tween ) {
94 | if ( tween.elem.nodeType && tween.elem.parentNode ) {
95 | tween.elem[ tween.prop ] = tween.now;
96 | }
97 | }
98 | };
99 |
100 | jQuery.easing = {
101 | linear: function( p ) {
102 | return p;
103 | },
104 | swing: function( p ) {
105 | return 0.5 - Math.cos( p * Math.PI ) / 2;
106 | }
107 | };
108 |
109 | jQuery.fx = Tween.prototype.init;
110 |
111 | // Back Compat <1.8 extension point
112 | jQuery.fx.step = {};
113 |
114 | });
115 |
--------------------------------------------------------------------------------
/filter.js:
--------------------------------------------------------------------------------
1 | [
2 | "New York, New York",
3 | "Los Angeles, California",
4 | "Chicago, Illinois",
5 | "Houston, Texas",
6 | "Philadelphia, Pennsylvania",
7 | "Phoenix, Arizona",
8 | "San Diego, California",
9 | "San Antonio, Texas",
10 | "Dallas, Texas",
11 | "Detroit, Michigan",
12 | "San Jose, California",
13 | "Indianapolis, Indiana",
14 | "Jacksonville, Florida",
15 | "San Francisco, California",
16 | "Columbus, Ohio",
17 | "Austin, Texas",
18 | "Memphis, Tennessee",
19 | "Baltimore, Maryland",
20 | "Charlotte, North Carolina",
21 | "Fort Worth, Texas",
22 | "Boston, Massachusetts",
23 | "Milwaukee, Wisconsin",
24 | "El Paso, Texas",
25 | "Washington, District of Columbia",
26 | "Nashville-Davidson, Tennessee",
27 | "Seattle, Washington",
28 | "Denver, Colorado",
29 | "Las Vegas, Nevada",
30 | "Portland, Oregon",
31 | "Oklahoma City, Oklahoma",
32 | "Tucson, Arizona",
33 | "Albuquerque, New Mexico",
34 | "Atlanta, Georgia",
35 | "Long Beach, California",
36 | "Kansas City, Missouri",
37 | "Fresno, California",
38 | "New Orleans, Louisiana",
39 | "Cleveland, Ohio",
40 | "Sacramento, California",
41 | "Mesa, Arizona",
42 | "Virginia Beach, Virginia",
43 | "Omaha, Nebraska",
44 | "Colorado Springs, Colorado",
45 | "Oakland, California",
46 | "Miami, Florida",
47 | "Tulsa, Oklahoma",
48 | "Minneapolis, Minnesota",
49 | "Honolulu, Hawaii",
50 | "Arlington, Texas",
51 | "Wichita, Kansas",
52 | "St. Louis, Missouri",
53 | "Raleigh, North Carolina",
54 | "Santa Ana, California",
55 | "Cincinnati, Ohio",
56 | "Anaheim, California",
57 | "Tampa, Florida",
58 | "Toledo, Ohio",
59 | "Pittsburgh, Pennsylvania",
60 | "Aurora, Colorado",
61 | "Bakersfield, California",
62 | "Riverside, California",
63 | "Stockton, California",
64 | "Corpus Christi, Texas",
65 | "Lexington-Fayette, Kentucky",
66 | "Buffalo, New York",
67 | "St. Paul, Minnesota",
68 | "Anchorage, Alaska",
69 | "Newark, New Jersey",
70 | "Plano, Texas",
71 | "Fort Wayne, Indiana",
72 | "St. Petersburg, Florida",
73 | "Glendale, Arizona",
74 | "Lincoln, Nebraska",
75 | "Norfolk, Virginia",
76 | "Jersey City, New Jersey",
77 | "Greensboro, North Carolina",
78 | "Chandler, Arizona",
79 | "Birmingham, Alabama",
80 | "Henderson, Nevada",
81 | "Scottsdale, Arizona",
82 | "North Hempstead, New York",
83 | "Madison, Wisconsin",
84 | "Hialeah, Florida",
85 | "Baton Rouge, Louisiana",
86 | "Chesapeake, Virginia",
87 | "Orlando, Florida",
88 | "Lubbock, Texas",
89 | "Garland, Texas",
90 | "Akron, Ohio",
91 | "Rochester, New York",
92 | "Chula Vista, California",
93 | "Reno, Nevada",
94 | "Laredo, Texas",
95 | "Durham, North Carolina",
96 | "Modesto, California",
97 | "Huntington, New York",
98 | "Montgomery, Alabama",
99 | "Boise, Idaho",
100 | "Arlington, Virginia",
101 | "San Bernardino, California"
102 | ]
103 |
104 | var http = require('http');
105 |
106 | //The url we want is: 'www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
107 | var options = {
108 | host: 'api.openweathermap.org',
109 | path: '/data/2.5/forecast?q={Q}'
110 | };
111 |
112 | callback = function(response) {
113 | var str = '';
114 |
115 | //another chunk of data has been recieved, so append it to `str`
116 | response.on('data', function (chunk) {
117 | str += chunk;
118 | });
119 |
120 | //the whole response has been recieved, so we just print it out here
121 | response.on('end', function () {
122 | console.log(str);
123 | });
124 | }
125 |
126 | http.request(options, callback).end();
127 |
--------------------------------------------------------------------------------
/app/bower_components/jquery/src/serialize.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./manipulation/var/rcheckableType",
4 | "./core/init",
5 | "./traversing", // filter
6 | "./attributes/prop"
7 | ], function( jQuery, rcheckableType ) {
8 |
9 | var r20 = /%20/g,
10 | rbracket = /\[\]$/,
11 | rCRLF = /\r?\n/g,
12 | rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
13 | rsubmittable = /^(?:input|select|textarea|keygen)/i;
14 |
15 | function buildParams( prefix, obj, traditional, add ) {
16 | var name;
17 |
18 | if ( jQuery.isArray( obj ) ) {
19 | // Serialize array item.
20 | jQuery.each( obj, function( i, v ) {
21 | if ( traditional || rbracket.test( prefix ) ) {
22 | // Treat each array item as a scalar.
23 | add( prefix, v );
24 |
25 | } else {
26 | // Item is non-scalar (array or object), encode its numeric index.
27 | buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
28 | }
29 | });
30 |
31 | } else if ( !traditional && jQuery.type( obj ) === "object" ) {
32 | // Serialize object item.
33 | for ( name in obj ) {
34 | buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
35 | }
36 |
37 | } else {
38 | // Serialize scalar item.
39 | add( prefix, obj );
40 | }
41 | }
42 |
43 | // Serialize an array of form elements or a set of
44 | // key/values into a query string
45 | jQuery.param = function( a, traditional ) {
46 | var prefix,
47 | s = [],
48 | add = function( key, value ) {
49 | // If value is a function, invoke it and return its value
50 | value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
51 | s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
52 | };
53 |
54 | // Set traditional to true for jQuery <= 1.3.2 behavior.
55 | if ( traditional === undefined ) {
56 | traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
57 | }
58 |
59 | // If an array was passed in, assume that it is an array of form elements.
60 | if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
61 | // Serialize the form elements
62 | jQuery.each( a, function() {
63 | add( this.name, this.value );
64 | });
65 |
66 | } else {
67 | // If traditional, encode the "old" way (the way 1.3.2 or older
68 | // did it), otherwise encode params recursively.
69 | for ( prefix in a ) {
70 | buildParams( prefix, a[ prefix ], traditional, add );
71 | }
72 | }
73 |
74 | // Return the resulting serialization
75 | return s.join( "&" ).replace( r20, "+" );
76 | };
77 |
78 | jQuery.fn.extend({
79 | serialize: function() {
80 | return jQuery.param( this.serializeArray() );
81 | },
82 | serializeArray: function() {
83 | return this.map(function() {
84 | // Can add propHook for "elements" to filter or add form elements
85 | var elements = jQuery.prop( this, "elements" );
86 | return elements ? jQuery.makeArray( elements ) : this;
87 | })
88 | .filter(function() {
89 | var type = this.type;
90 |
91 | // Use .is( ":disabled" ) so that fieldset[disabled] works
92 | return this.name && !jQuery( this ).is( ":disabled" ) &&
93 | rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
94 | ( this.checked || !rcheckableType.test( type ) );
95 | })
96 | .map(function( i, elem ) {
97 | var val = jQuery( this ).val();
98 |
99 | return val == null ?
100 | null :
101 | jQuery.isArray( val ) ?
102 | jQuery.map( val, function( val ) {
103 | return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
104 | }) :
105 | { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
106 | }).get();
107 | }
108 | });
109 |
110 | return jQuery;
111 | });
112 |
--------------------------------------------------------------------------------
/app/bower_components/gumby/sass/extensions/modular-scale/lib/modular-scale.rb:
--------------------------------------------------------------------------------
1 | require 'compass'
2 | # require 'sassy-math'
3 |
4 | # This tells Compass what your Compass extension is called, and where to find
5 | # its files
6 | # Replace 'extension' with the name of your extension. Spaces allowed.
7 | extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
8 | Compass::Frameworks.register('modular-scale', :path => extension_path)
9 |
10 | # Version and date of version for your Compass extension.
11 | # Replace Extension with the name of your extension
12 | # Letters, numbers, and underscores only
13 | # Version is a number. If a version contains alphas, it will be created as
14 | # a prerelease version
15 | # Date is in the form of YYYY-MM-DD
16 | module ModularScale
17 | VERSION = "1.0.6"
18 | DATE = "2012-08-13"
19 | end
20 |
21 | # This is where any custom SassScript should be placed. The functions will be
22 | # available on require of your extension without the need for users to import
23 | # any partials. Uncomment below.
24 |
25 | # Modular Scale Sass Script
26 | module Sass::Script
27 | class Number < Literal
28 | # Comparison
29 | def <=>(other)
30 | value <=> other.value
31 | end
32 | end
33 | end
34 |
35 | module Sass::Script::Functions
36 | # Modular Scale
37 | def double_octave
38 | value = 4 / 1.0
39 | Sass::Script::Number.new(value)
40 | end
41 | def major_twelfth
42 | value = 3 / 1.0
43 | Sass::Script::Number.new(value)
44 | end
45 | def major_eleventh
46 | value = 8 / 3.0
47 | Sass::Script::Number.new(value)
48 | end
49 | def major_tenth
50 | value = 5 / 2.0
51 | Sass::Script::Number.new(value)
52 | end
53 | def octave
54 | value = 2 / 1.0
55 | Sass::Script::Number.new(value)
56 | end
57 | def major_seventh
58 | value = 15 / 8.0
59 | Sass::Script::Number.new(value)
60 | end
61 | def minor_seventh
62 | value = 16 /9.0
63 | Sass::Script::Number.new(value)
64 | end
65 | def major_sixth
66 | value = 5 / 3.0
67 | Sass::Script::Number.new(value)
68 | end
69 | def minor_sixth
70 | value = 8 / 5.0
71 | Sass::Script::Number.new(value)
72 | end
73 | def fifth
74 | value = 3 / 2.0
75 | Sass::Script::Number.new(value)
76 | end
77 | def augmented_fourth
78 | value = Math.sqrt(2) / 1.0
79 | Sass::Script::Number.new(value)
80 | end
81 | def fourth
82 | value = 4 / 3.0
83 | Sass::Script::Number.new(value)
84 | end
85 | def major_third
86 | value = 5 / 4.0
87 | Sass::Script::Number.new(value)
88 | end
89 | def minor_third
90 | value = 6 / 5.0
91 | Sass::Script::Number.new(value)
92 | end
93 | def major_second
94 | value = 9 / 8.0
95 | Sass::Script::Number.new(value)
96 | end
97 | def minor_second
98 | value = 16 / 15.0
99 | Sass::Script::Number.new(value)
100 | end
101 |
102 | # Lists
103 | def sort_list(list)
104 | sep = list.separator if list.is_a?(Sass::Script::List)
105 | list = list.to_a.sort
106 | Sass::Script::List.new(list, sep)
107 | end
108 | def reverse_list(list)
109 | sep = list.separator if list.is_a?(Sass::Script::List)
110 | list = list.to_a.reverse
111 | Sass::Script::List.new(list, sep)
112 | end
113 | def trim_list(list, threshold, ascending)
114 | # remove list items above or below a threshold
115 | sep = list.separator if list.is_a?(Sass::Script::List)
116 | list = list.to_a
117 | if ascending.value
118 | list = list.delete_if {
119 | |x| x.value <= threshold.value
120 | }
121 | else
122 | list = list.delete_if {
123 | |x| x.value >= threshold.value
124 | }
125 | end
126 | Sass::Script::List.new(list, sep)
127 | end
128 | end
129 |
--------------------------------------------------------------------------------