├── preview.jpg ├── .gitignore ├── fonts ├── payment-webfont.eot ├── payment-webfont.ttf └── payment-webfont.woff ├── demo ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.svg ├── css │ └── demo.css ├── demo.html └── js │ ├── bootstrap.min.js │ └── bootstrap.js ├── component.json ├── composer.json ├── bower.json ├── ie7 ├── ie7.js └── ie7.css ├── README.md ├── LICENSE ├── BCMC_consumer_logo_paths.svg └── BCMC_consumer_logo_bw_surface.svg /preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/preview.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .buildpath 3 | .project 4 | .settings 5 | .idea 6 | .DS_Store 7 | *~ 8 | -------------------------------------------------------------------------------- /fonts/payment-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/fonts/payment-webfont.eot -------------------------------------------------------------------------------- /fonts/payment-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/fonts/payment-webfont.ttf -------------------------------------------------------------------------------- /fonts/payment-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/fonts/payment-webfont.woff -------------------------------------------------------------------------------- /demo/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/demo/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /demo/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/demo/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /demo/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creating/payment-webfont/master/demo/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "payment-webfont", 3 | "repo": "orlandotm/payment-webfont", 4 | "version": "0.9.5", 5 | "description": "An SVG webfont full of main payment system icons", 6 | "keywords": [ 7 | "icon", 8 | "font", 9 | "component", 10 | "svg", 11 | "payment" 12 | ], 13 | "fonts": [ 14 | "fonts/payment-webfont.eot", 15 | "fonts/payment-webfont.svg", 16 | "fonts/payment-webfont.ttf", 17 | "fonts/payment-webfont.woff" 18 | ], 19 | "styles": [ 20 | "style.css" 21 | ], 22 | "license": "CC0-1.0" 23 | } 24 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "orlandotm/payment-webfont", 3 | "description": "An SVG webfont full of main payment system icons", 4 | "homepage": "https://github.com/orlandotm/payment-webfont", 5 | "keywords": [ 6 | "font", 7 | "payment", 8 | "icon", 9 | "webfont", 10 | "svg" 11 | ], 12 | "authors": [ 13 | { 14 | "name": "Orlando TM Merone", 15 | "email": "orlando.merone@gmail.com", 16 | "homepage": "http://www.orlandotm.com", 17 | "role": "Developer" 18 | }, 19 | { 20 | "name": "Leo Di Donato", 21 | "email": "leodidonato@gmail.com", 22 | "homepage": "http://github.com/leodido", 23 | "role": "Maintainer" 24 | }, 25 | { 26 | "name": "Leonardo Grasso", 27 | "email": "me@leonardograsso.com", 28 | "homepage": "http://github.com/leogr", 29 | "role": "Maintainer" 30 | } 31 | ], 32 | "license": [ 33 | "CC0-1.0" 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "payment-webfont", 3 | "version": "0.9.5", 4 | "homepage": "https://github.com/orlandotm/payment-webfont", 5 | "authors": [ 6 | { "name": "Orlando TM Merone", "email": "orlando.merone@gmail.com", "homepage": "http://www.orlandotm.com" }, 7 | { "name": "Leo Di Donato", "email": "leodidonato@gmail.com", "homepage": "http://github.com/leodido" }, 8 | { "name": "Leonardo Grasso", "email": "me@leonardograsso.com", "homepage": "http://github.com/leogr" } ], 9 | "description": "An SVG webfont full of main payment system icons", 10 | "main": "style.css", 11 | "moduleType": [ 12 | "globals" 13 | ], 14 | "keywords": [ 15 | "font", 16 | "payment", 17 | "icon", 18 | "webfont", 19 | "svg", 20 | "css", 21 | "vector" 22 | ], 23 | "license": "CC0-1.0", 24 | "ignore": [ 25 | "**/.*", 26 | "node_modules", 27 | "bower_components", 28 | "test", 29 | "tests" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /ie7/ie7.js: -------------------------------------------------------------------------------- 1 | /* To avoid CSS expressions while still supporting IE 7 and IE 6, use this script */ 2 | /* The script tag referring to this file must be placed before the ending body tag. */ 3 | 4 | /* Use conditional comments in order to target IE 7 and older: 5 | 6 | 7 | 8 | */ 9 | 10 | (function() { 11 | function addIcon(el, entity) { 12 | var html = el.innerHTML; 13 | el.innerHTML = '' + entity + '' + html; 14 | } 15 | var icons = { 16 | 'pw-clickandbuy': '', 17 | 'pw-westernunion': '', 18 | 'pw-braintree': '', 19 | 'pw-paysafecard': '', 20 | 'pw-ideal': '', 21 | 'pw-paypal': '', 22 | 'pw-skrill': '', 23 | 'pw-cb': '', 24 | 'pw-gittip': '', 25 | 'pw-flattr': '', 26 | 'pw-ripple': '', 27 | 'pw-sofort': '', 28 | 'pw-bitcoin': '', 29 | 'pw-bitcoin-sign': '', 30 | 'pw-diners': '', 31 | 'pw-mastercard': '', 32 | 'pw-trust-e': '', 33 | 'pw-amazon': '', 34 | 'pw-jcb': '', 35 | 'pw-google-wallet': '', 36 | 'pw-stripe': '', 37 | 'pw-square': '', 38 | 'pw-ogone': '', 39 | 'pw-verisign': '', 40 | 'pw-discover': '', 41 | 'pw-american-express': '', 42 | 'pw-paypal--classic': '', 43 | 'pw-maestro': '', 44 | 'pw-visa': '', 45 | 'pw-visa-electron': '', 46 | 'pw-postepay': '', 47 | 'pw-cartasi': '', 48 | 'pw-unionpay': '', 49 | 'pw-ec': '', 50 | 'pw-bancontact': '', 51 | '0': 0 52 | }, 53 | els = document.getElementsByTagName('*'), 54 | i, c, el; 55 | for (i = 0; ; i += 1) { 56 | el = els[i]; 57 | if(!el) { 58 | break; 59 | } 60 | c = el.className; 61 | c = c.match(/pw-[^\s'"]+/); 62 | if (c && icons[c[0]]) { 63 | addIcon(el, icons[c[0]]); 64 | } 65 | } 66 | }()); 67 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Payment webfont icons 2 | ===================== 3 | 4 | An SVG webfont full of icons of main payment systems. Designed and built in Italy with [Icomoon](http://icomoon.io) by [@orlandotm](http://twitter.com/orlandotm) with help from the [contributors](https://github.com/orlandotm/payment-webfont/graphs/contributors). 5 | If you'd like to see added some other logos, [open an issue](https://github.com/orlandotm/payment-webfont/issues/new) on Github. 6 | 7 | [DEMO](http://www.orlandotm.com/payment-webfont/) 8 | 9 | Webfont use cases 10 | ---------- 11 | * [Solo.sh](http://solo.sh) 12 | 13 | Want to suggest your website? [open an issue](https://github.com/orlandotm/payment-webfont/issues/new) on Github. 14 | 15 | Disclaimer 16 | ---------- 17 | 18 | All trademarks are the property of their respective owners; third-party brands, product names, trade names, corporate names and companies mentioned herein may be the trademarks of their respective owners or registered trademarks of other companies and have been used for purposes of explanation and to the owner's benefit, without implying a violation of copyright law. 19 | 20 | Glyphs available 21 | ------ 22 | 23 | * Mastercard 24 | * Maestro 25 | * Visa 26 | * Visa Electron 27 | * American Express 28 | * Postepay 29 | * Cartasì 30 | * Diners Club 31 | * Discover 32 | * Union Pay 33 | * Electronic Cash 34 | * TrustE 35 | * Amazon 36 | * JCB 37 | * Google Wallet 38 | * Stripe 39 | * Square 40 | * Ogone 41 | * VeriSign 42 | * Bitcoin (2 glyphs) 43 | * Ripple 44 | * Sofortüberweisung 45 | * Gittip 46 | * Flattr 47 | * Skrill Moneybookers 48 | * Cartes Bancaires CB 49 | * Western Union 50 | * Clickandbuy 51 | * Paypal (2 glyphs - old and new logo) 52 | * iDeal 53 | * Paysafecard 54 | * Braintree 55 | * Bacontact / Mr Cash 56 | 57 | Installation 58 | ------------ 59 | 60 | ### Using [Composer](https://github.com/composer/composer) 61 | 62 | To install with [composer](http://packagist.org/packages/orlandotm/payment-webfont) add `orlandotm/payment-webfont` to your `composer.json`. E.g., 63 | 64 | ``` 65 | { 66 | "require": { 67 | "orlandotm/payment-webfont": "*" 68 | } 69 | } 70 | ``` 71 | 72 | ### Using [Component](http://component.io) 73 | 74 | To install as a [component](https://github.com/component/component) just run `component install orlandotm/payment-webfont`. 75 | 76 | Or add `orlandotm/payment-webfont` to the dependencies element into your `component.json`. 77 | 78 | ### Using [Bower](http://bower.io) 79 | 80 | To install with [bower]() just run `bower install payment-webfont`. 81 | 82 | Or add `payment-webfont` to the dependencies element into you `bower.json`. 83 | 84 | --- 85 | 86 | [![Analytics](https://ga-beacon.appspot.com/UA-50602721-1/orlandotm/payment-webfonts)](https://github.com/igrigorik/ga-beacon) 87 | 88 | -------------------------------------------------------------------------------- /demo/css/demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Globals 3 | */ 4 | 5 | /* Links */ 6 | a, 7 | a:focus, 8 | a:hover { 9 | color: #fff; 10 | } 11 | 12 | .payments { 13 | font-size:50px 14 | } 15 | 16 | /* Custom default button */ 17 | .btn-default, 18 | .btn-default:hover, 19 | .btn-default:focus { 20 | color: #333; 21 | text-shadow: none; /* Prevent inheritence from `body` */ 22 | background-color: #fff; 23 | border: 1px solid #fff; 24 | } 25 | 26 | 27 | /* 28 | * Base structure 29 | */ 30 | 31 | html, 32 | body { 33 | height: 100%; 34 | background-color: #333; 35 | } 36 | body { 37 | color: #fff; 38 | text-align: center; 39 | text-shadow: 0 1px 3px rgba(0,0,0,.5); 40 | box-shadow: inset 0 0 100px rgba(0,0,0,.5); 41 | } 42 | 43 | /* Extra markup and styles for table-esque vertical and horizontal centering */ 44 | .site-wrapper { 45 | display: table; 46 | width: 100%; 47 | height: 100%; /* For at least Firefox */ 48 | min-height: 100%; 49 | } 50 | .site-wrapper-inner { 51 | display: table-cell; 52 | vertical-align: top; 53 | } 54 | .cover-container { 55 | margin-right: auto; 56 | margin-left: auto; 57 | } 58 | 59 | /* Padding for spacing */ 60 | .inner { 61 | padding: 30px; 62 | } 63 | 64 | 65 | /* 66 | * Header 67 | */ 68 | .masthead-brand { 69 | margin-top: 10px; 70 | margin-bottom: 10px; 71 | } 72 | 73 | .masthead-nav > li { 74 | display: inline-block; 75 | } 76 | .masthead-nav > li + li { 77 | margin-left: 20px; 78 | } 79 | .masthead-nav > li > a { 80 | padding-right: 0; 81 | padding-left: 0; 82 | font-size: 16px; 83 | font-weight: bold; 84 | color: #fff; /* IE8 proofing */ 85 | color: rgba(255,255,255,.75); 86 | border-bottom: 2px solid transparent; 87 | } 88 | .masthead-nav > li > a:hover, 89 | .masthead-nav > li > a:focus { 90 | background-color: transparent; 91 | border-bottom-color: rgba(255,255,255,.25); 92 | } 93 | .masthead-nav > .active > a, 94 | .masthead-nav > .active > a:hover, 95 | .masthead-nav > .active > a:focus { 96 | color: #fff; 97 | border-bottom-color: #fff; 98 | } 99 | 100 | @media (min-width: 768px) { 101 | .masthead-brand { 102 | float: left; 103 | } 104 | .masthead-nav { 105 | float: right; 106 | } 107 | } 108 | 109 | 110 | /* 111 | * Cover 112 | */ 113 | 114 | .cover { 115 | padding: 0 20px; 116 | } 117 | .cover .btn-lg { 118 | padding: 10px 20px; 119 | font-weight: bold; 120 | } 121 | 122 | 123 | /* 124 | * Footer 125 | */ 126 | 127 | .mastfoot { 128 | color: #999; /* IE8 proofing */ 129 | color: rgba(255,255,255,.5); 130 | } 131 | 132 | 133 | /* 134 | * Affix and center 135 | */ 136 | 137 | @media (min-width: 768px) { 138 | /* Pull out the header and footer */ 139 | .masthead { 140 | position: fixed; 141 | top: 0; 142 | } 143 | .mastfoot { 144 | position: fixed; 145 | bottom: 0; 146 | } 147 | /* Start the vertical centering */ 148 | .site-wrapper-inner { 149 | vertical-align: middle; 150 | } 151 | /* Handle the widths */ 152 | .masthead, 153 | .mastfoot, 154 | .cover-container { 155 | width: 100%; /* Must be percentage or pixels for horizontal alignment */ 156 | } 157 | } 158 | 159 | @media (min-width: 992px) { 160 | .masthead, 161 | .mastfoot, 162 | .cover-container { 163 | width: 700px; 164 | } 165 | } -------------------------------------------------------------------------------- /ie7/ie7.css: -------------------------------------------------------------------------------- 1 | .pw-clickandbuy { 2 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 3 | } 4 | .pw-westernunion { 5 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 6 | } 7 | .pw-braintree { 8 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 9 | } 10 | .pw-paysafecard { 11 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 12 | } 13 | .pw-ideal { 14 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 15 | } 16 | .pw-paypal { 17 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 18 | } 19 | .pw-skrill { 20 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 21 | } 22 | .pw-cb { 23 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 24 | } 25 | .pw-gittip { 26 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 27 | } 28 | .pw-flattr { 29 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 30 | } 31 | .pw-ripple { 32 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 33 | } 34 | .pw-sofort { 35 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 36 | } 37 | .pw-bitcoin { 38 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 39 | } 40 | .pw-bitcoin-sign { 41 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 42 | } 43 | .pw-diners { 44 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 45 | } 46 | .pw-mastercard { 47 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 48 | } 49 | .pw-trust-e { 50 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 51 | } 52 | .pw-amazon { 53 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 54 | } 55 | .pw-jcb { 56 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 57 | } 58 | .pw-google-wallet { 59 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 60 | } 61 | .pw-stripe { 62 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 63 | } 64 | .pw-square { 65 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 66 | } 67 | .pw-ogone { 68 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 69 | } 70 | .pw-verisign { 71 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 72 | } 73 | .pw-discover { 74 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 75 | } 76 | .pw-american-express { 77 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 78 | } 79 | .pw-paypal--classic { 80 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 81 | } 82 | .pw-maestro { 83 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 84 | } 85 | .pw-visa { 86 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 87 | } 88 | .pw-visa-electron { 89 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 90 | } 91 | .pw-postepay { 92 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 93 | } 94 | .pw-cartasi { 95 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 96 | } 97 | .pw-unionpay { 98 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 99 | } 100 | .pw-ec { 101 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 102 | } 103 | .pw-bancontact { 104 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 105 | } 106 | -------------------------------------------------------------------------------- /demo/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Payment Webfont 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 |

Payment Webfont

36 | 39 |
40 |
41 | 42 |
43 |

All trademarks are the property of their respective owners; third-party brands, product names, trade names, corporate names and companies mentioned herein may be the trademarks of their respective owners or registered trademarks of other companies and have been used for purposes of explanation and to the owner's benefit, without implying a violation of copyright law.

44 |
45 |
    46 |
  • 47 |
  • 48 |
  • 49 |
  • 50 |
  • 51 |
  • 52 |
  • 53 |
  • 54 |
  • 55 |
  • 56 |
  • 57 |
  • 58 |
  • 59 |
  • 60 |
  • 61 |
  • 62 |
  • 63 |
  • 64 |
  • 65 |
  • 66 |
  • 67 |
  • 68 |
  • 69 |
  • 70 |
  • 71 |
  • 72 |
  • 73 |
  • 74 |
  • 75 |
  • 76 |
  • 77 |
  • 78 |
  • 79 |
  • 80 |
  • 81 |
82 |
83 |
84 |
85 |

An SVG webfont full of icons of main payment systems created by @orlandotm with iconmoon.io

86 |
87 |
88 | 89 |
90 | 91 |
92 | 93 |
94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | -------------------------------------------------------------------------------- /BCMC_consumer_logo_paths.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /BCMC_consumer_logo_bw_surface.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /demo/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.1.0 (http://getbootstrap.com) 3 | * Copyright 2011-2014 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); -------------------------------------------------------------------------------- /demo/fonts/glyphicons-halflings-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 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 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | -------------------------------------------------------------------------------- /demo/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.1.0 (http://getbootstrap.com) 3 | * Copyright 2011-2014 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | if (typeof jQuery === 'undefined') { throw new Error('Bootstrap requires jQuery') } 8 | 9 | /* ======================================================================== 10 | * Bootstrap: transition.js v3.1.0 11 | * http://getbootstrap.com/javascript/#transitions 12 | * ======================================================================== 13 | * Copyright 2011-2014 Twitter, Inc. 14 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 15 | * ======================================================================== */ 16 | 17 | 18 | +function ($) { 19 | 'use strict'; 20 | 21 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 22 | // ============================================================ 23 | 24 | function transitionEnd() { 25 | var el = document.createElement('bootstrap') 26 | 27 | var transEndEventNames = { 28 | 'WebkitTransition' : 'webkitTransitionEnd', 29 | 'MozTransition' : 'transitionend', 30 | 'OTransition' : 'oTransitionEnd otransitionend', 31 | 'transition' : 'transitionend' 32 | } 33 | 34 | for (var name in transEndEventNames) { 35 | if (el.style[name] !== undefined) { 36 | return { end: transEndEventNames[name] } 37 | } 38 | } 39 | 40 | return false // explicit for ie8 ( ._.) 41 | } 42 | 43 | // http://blog.alexmaccaw.com/css-transitions 44 | $.fn.emulateTransitionEnd = function (duration) { 45 | var called = false, $el = this 46 | $(this).one($.support.transition.end, function () { called = true }) 47 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 48 | setTimeout(callback, duration) 49 | return this 50 | } 51 | 52 | $(function () { 53 | $.support.transition = transitionEnd() 54 | }) 55 | 56 | }(jQuery); 57 | 58 | /* ======================================================================== 59 | * Bootstrap: alert.js v3.1.0 60 | * http://getbootstrap.com/javascript/#alerts 61 | * ======================================================================== 62 | * Copyright 2011-2014 Twitter, Inc. 63 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 64 | * ======================================================================== */ 65 | 66 | 67 | +function ($) { 68 | 'use strict'; 69 | 70 | // ALERT CLASS DEFINITION 71 | // ====================== 72 | 73 | var dismiss = '[data-dismiss="alert"]' 74 | var Alert = function (el) { 75 | $(el).on('click', dismiss, this.close) 76 | } 77 | 78 | Alert.prototype.close = function (e) { 79 | var $this = $(this) 80 | var selector = $this.attr('data-target') 81 | 82 | if (!selector) { 83 | selector = $this.attr('href') 84 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 85 | } 86 | 87 | var $parent = $(selector) 88 | 89 | if (e) e.preventDefault() 90 | 91 | if (!$parent.length) { 92 | $parent = $this.hasClass('alert') ? $this : $this.parent() 93 | } 94 | 95 | $parent.trigger(e = $.Event('close.bs.alert')) 96 | 97 | if (e.isDefaultPrevented()) return 98 | 99 | $parent.removeClass('in') 100 | 101 | function removeElement() { 102 | $parent.trigger('closed.bs.alert').remove() 103 | } 104 | 105 | $.support.transition && $parent.hasClass('fade') ? 106 | $parent 107 | .one($.support.transition.end, removeElement) 108 | .emulateTransitionEnd(150) : 109 | removeElement() 110 | } 111 | 112 | 113 | // ALERT PLUGIN DEFINITION 114 | // ======================= 115 | 116 | var old = $.fn.alert 117 | 118 | $.fn.alert = function (option) { 119 | return this.each(function () { 120 | var $this = $(this) 121 | var data = $this.data('bs.alert') 122 | 123 | if (!data) $this.data('bs.alert', (data = new Alert(this))) 124 | if (typeof option == 'string') data[option].call($this) 125 | }) 126 | } 127 | 128 | $.fn.alert.Constructor = Alert 129 | 130 | 131 | // ALERT NO CONFLICT 132 | // ================= 133 | 134 | $.fn.alert.noConflict = function () { 135 | $.fn.alert = old 136 | return this 137 | } 138 | 139 | 140 | // ALERT DATA-API 141 | // ============== 142 | 143 | $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) 144 | 145 | }(jQuery); 146 | 147 | /* ======================================================================== 148 | * Bootstrap: button.js v3.1.0 149 | * http://getbootstrap.com/javascript/#buttons 150 | * ======================================================================== 151 | * Copyright 2011-2014 Twitter, Inc. 152 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 153 | * ======================================================================== */ 154 | 155 | 156 | +function ($) { 157 | 'use strict'; 158 | 159 | // BUTTON PUBLIC CLASS DEFINITION 160 | // ============================== 161 | 162 | var Button = function (element, options) { 163 | this.$element = $(element) 164 | this.options = $.extend({}, Button.DEFAULTS, options) 165 | this.isLoading = false 166 | } 167 | 168 | Button.DEFAULTS = { 169 | loadingText: 'loading...' 170 | } 171 | 172 | Button.prototype.setState = function (state) { 173 | var d = 'disabled' 174 | var $el = this.$element 175 | var val = $el.is('input') ? 'val' : 'html' 176 | var data = $el.data() 177 | 178 | state = state + 'Text' 179 | 180 | if (!data.resetText) $el.data('resetText', $el[val]()) 181 | 182 | $el[val](data[state] || this.options[state]) 183 | 184 | // push to event loop to allow forms to submit 185 | setTimeout($.proxy(function () { 186 | if (state == 'loadingText') { 187 | this.isLoading = true 188 | $el.addClass(d).attr(d, d) 189 | } else if (this.isLoading) { 190 | this.isLoading = false 191 | $el.removeClass(d).removeAttr(d) 192 | } 193 | }, this), 0) 194 | } 195 | 196 | Button.prototype.toggle = function () { 197 | var changed = true 198 | var $parent = this.$element.closest('[data-toggle="buttons"]') 199 | 200 | if ($parent.length) { 201 | var $input = this.$element.find('input') 202 | if ($input.prop('type') == 'radio') { 203 | if ($input.prop('checked') && this.$element.hasClass('active')) changed = false 204 | else $parent.find('.active').removeClass('active') 205 | } 206 | if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') 207 | } 208 | 209 | if (changed) this.$element.toggleClass('active') 210 | } 211 | 212 | 213 | // BUTTON PLUGIN DEFINITION 214 | // ======================== 215 | 216 | var old = $.fn.button 217 | 218 | $.fn.button = function (option) { 219 | return this.each(function () { 220 | var $this = $(this) 221 | var data = $this.data('bs.button') 222 | var options = typeof option == 'object' && option 223 | 224 | if (!data) $this.data('bs.button', (data = new Button(this, options))) 225 | 226 | if (option == 'toggle') data.toggle() 227 | else if (option) data.setState(option) 228 | }) 229 | } 230 | 231 | $.fn.button.Constructor = Button 232 | 233 | 234 | // BUTTON NO CONFLICT 235 | // ================== 236 | 237 | $.fn.button.noConflict = function () { 238 | $.fn.button = old 239 | return this 240 | } 241 | 242 | 243 | // BUTTON DATA-API 244 | // =============== 245 | 246 | $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { 247 | var $btn = $(e.target) 248 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') 249 | $btn.button('toggle') 250 | e.preventDefault() 251 | }) 252 | 253 | }(jQuery); 254 | 255 | /* ======================================================================== 256 | * Bootstrap: carousel.js v3.1.0 257 | * http://getbootstrap.com/javascript/#carousel 258 | * ======================================================================== 259 | * Copyright 2011-2014 Twitter, Inc. 260 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 261 | * ======================================================================== */ 262 | 263 | 264 | +function ($) { 265 | 'use strict'; 266 | 267 | // CAROUSEL CLASS DEFINITION 268 | // ========================= 269 | 270 | var Carousel = function (element, options) { 271 | this.$element = $(element) 272 | this.$indicators = this.$element.find('.carousel-indicators') 273 | this.options = options 274 | this.paused = 275 | this.sliding = 276 | this.interval = 277 | this.$active = 278 | this.$items = null 279 | 280 | this.options.pause == 'hover' && this.$element 281 | .on('mouseenter', $.proxy(this.pause, this)) 282 | .on('mouseleave', $.proxy(this.cycle, this)) 283 | } 284 | 285 | Carousel.DEFAULTS = { 286 | interval: 5000, 287 | pause: 'hover', 288 | wrap: true 289 | } 290 | 291 | Carousel.prototype.cycle = function (e) { 292 | e || (this.paused = false) 293 | 294 | this.interval && clearInterval(this.interval) 295 | 296 | this.options.interval 297 | && !this.paused 298 | && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) 299 | 300 | return this 301 | } 302 | 303 | Carousel.prototype.getActiveIndex = function () { 304 | this.$active = this.$element.find('.item.active') 305 | this.$items = this.$active.parent().children() 306 | 307 | return this.$items.index(this.$active) 308 | } 309 | 310 | Carousel.prototype.to = function (pos) { 311 | var that = this 312 | var activeIndex = this.getActiveIndex() 313 | 314 | if (pos > (this.$items.length - 1) || pos < 0) return 315 | 316 | if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) 317 | if (activeIndex == pos) return this.pause().cycle() 318 | 319 | return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) 320 | } 321 | 322 | Carousel.prototype.pause = function (e) { 323 | e || (this.paused = true) 324 | 325 | if (this.$element.find('.next, .prev').length && $.support.transition) { 326 | this.$element.trigger($.support.transition.end) 327 | this.cycle(true) 328 | } 329 | 330 | this.interval = clearInterval(this.interval) 331 | 332 | return this 333 | } 334 | 335 | Carousel.prototype.next = function () { 336 | if (this.sliding) return 337 | return this.slide('next') 338 | } 339 | 340 | Carousel.prototype.prev = function () { 341 | if (this.sliding) return 342 | return this.slide('prev') 343 | } 344 | 345 | Carousel.prototype.slide = function (type, next) { 346 | var $active = this.$element.find('.item.active') 347 | var $next = next || $active[type]() 348 | var isCycling = this.interval 349 | var direction = type == 'next' ? 'left' : 'right' 350 | var fallback = type == 'next' ? 'first' : 'last' 351 | var that = this 352 | 353 | if (!$next.length) { 354 | if (!this.options.wrap) return 355 | $next = this.$element.find('.item')[fallback]() 356 | } 357 | 358 | if ($next.hasClass('active')) return this.sliding = false 359 | 360 | var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) 361 | this.$element.trigger(e) 362 | if (e.isDefaultPrevented()) return 363 | 364 | this.sliding = true 365 | 366 | isCycling && this.pause() 367 | 368 | if (this.$indicators.length) { 369 | this.$indicators.find('.active').removeClass('active') 370 | this.$element.one('slid.bs.carousel', function () { 371 | var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) 372 | $nextIndicator && $nextIndicator.addClass('active') 373 | }) 374 | } 375 | 376 | if ($.support.transition && this.$element.hasClass('slide')) { 377 | $next.addClass(type) 378 | $next[0].offsetWidth // force reflow 379 | $active.addClass(direction) 380 | $next.addClass(direction) 381 | $active 382 | .one($.support.transition.end, function () { 383 | $next.removeClass([type, direction].join(' ')).addClass('active') 384 | $active.removeClass(['active', direction].join(' ')) 385 | that.sliding = false 386 | setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) 387 | }) 388 | .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) 389 | } else { 390 | $active.removeClass('active') 391 | $next.addClass('active') 392 | this.sliding = false 393 | this.$element.trigger('slid.bs.carousel') 394 | } 395 | 396 | isCycling && this.cycle() 397 | 398 | return this 399 | } 400 | 401 | 402 | // CAROUSEL PLUGIN DEFINITION 403 | // ========================== 404 | 405 | var old = $.fn.carousel 406 | 407 | $.fn.carousel = function (option) { 408 | return this.each(function () { 409 | var $this = $(this) 410 | var data = $this.data('bs.carousel') 411 | var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) 412 | var action = typeof option == 'string' ? option : options.slide 413 | 414 | if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) 415 | if (typeof option == 'number') data.to(option) 416 | else if (action) data[action]() 417 | else if (options.interval) data.pause().cycle() 418 | }) 419 | } 420 | 421 | $.fn.carousel.Constructor = Carousel 422 | 423 | 424 | // CAROUSEL NO CONFLICT 425 | // ==================== 426 | 427 | $.fn.carousel.noConflict = function () { 428 | $.fn.carousel = old 429 | return this 430 | } 431 | 432 | 433 | // CAROUSEL DATA-API 434 | // ================= 435 | 436 | $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { 437 | var $this = $(this), href 438 | var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 439 | var options = $.extend({}, $target.data(), $this.data()) 440 | var slideIndex = $this.attr('data-slide-to') 441 | if (slideIndex) options.interval = false 442 | 443 | $target.carousel(options) 444 | 445 | if (slideIndex = $this.attr('data-slide-to')) { 446 | $target.data('bs.carousel').to(slideIndex) 447 | } 448 | 449 | e.preventDefault() 450 | }) 451 | 452 | $(window).on('load', function () { 453 | $('[data-ride="carousel"]').each(function () { 454 | var $carousel = $(this) 455 | $carousel.carousel($carousel.data()) 456 | }) 457 | }) 458 | 459 | }(jQuery); 460 | 461 | /* ======================================================================== 462 | * Bootstrap: collapse.js v3.1.0 463 | * http://getbootstrap.com/javascript/#collapse 464 | * ======================================================================== 465 | * Copyright 2011-2014 Twitter, Inc. 466 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 467 | * ======================================================================== */ 468 | 469 | 470 | +function ($) { 471 | 'use strict'; 472 | 473 | // COLLAPSE PUBLIC CLASS DEFINITION 474 | // ================================ 475 | 476 | var Collapse = function (element, options) { 477 | this.$element = $(element) 478 | this.options = $.extend({}, Collapse.DEFAULTS, options) 479 | this.transitioning = null 480 | 481 | if (this.options.parent) this.$parent = $(this.options.parent) 482 | if (this.options.toggle) this.toggle() 483 | } 484 | 485 | Collapse.DEFAULTS = { 486 | toggle: true 487 | } 488 | 489 | Collapse.prototype.dimension = function () { 490 | var hasWidth = this.$element.hasClass('width') 491 | return hasWidth ? 'width' : 'height' 492 | } 493 | 494 | Collapse.prototype.show = function () { 495 | if (this.transitioning || this.$element.hasClass('in')) return 496 | 497 | var startEvent = $.Event('show.bs.collapse') 498 | this.$element.trigger(startEvent) 499 | if (startEvent.isDefaultPrevented()) return 500 | 501 | var actives = this.$parent && this.$parent.find('> .panel > .in') 502 | 503 | if (actives && actives.length) { 504 | var hasData = actives.data('bs.collapse') 505 | if (hasData && hasData.transitioning) return 506 | actives.collapse('hide') 507 | hasData || actives.data('bs.collapse', null) 508 | } 509 | 510 | var dimension = this.dimension() 511 | 512 | this.$element 513 | .removeClass('collapse') 514 | .addClass('collapsing') 515 | [dimension](0) 516 | 517 | this.transitioning = 1 518 | 519 | var complete = function () { 520 | this.$element 521 | .removeClass('collapsing') 522 | .addClass('collapse in') 523 | [dimension]('auto') 524 | this.transitioning = 0 525 | this.$element.trigger('shown.bs.collapse') 526 | } 527 | 528 | if (!$.support.transition) return complete.call(this) 529 | 530 | var scrollSize = $.camelCase(['scroll', dimension].join('-')) 531 | 532 | this.$element 533 | .one($.support.transition.end, $.proxy(complete, this)) 534 | .emulateTransitionEnd(350) 535 | [dimension](this.$element[0][scrollSize]) 536 | } 537 | 538 | Collapse.prototype.hide = function () { 539 | if (this.transitioning || !this.$element.hasClass('in')) return 540 | 541 | var startEvent = $.Event('hide.bs.collapse') 542 | this.$element.trigger(startEvent) 543 | if (startEvent.isDefaultPrevented()) return 544 | 545 | var dimension = this.dimension() 546 | 547 | this.$element 548 | [dimension](this.$element[dimension]()) 549 | [0].offsetHeight 550 | 551 | this.$element 552 | .addClass('collapsing') 553 | .removeClass('collapse') 554 | .removeClass('in') 555 | 556 | this.transitioning = 1 557 | 558 | var complete = function () { 559 | this.transitioning = 0 560 | this.$element 561 | .trigger('hidden.bs.collapse') 562 | .removeClass('collapsing') 563 | .addClass('collapse') 564 | } 565 | 566 | if (!$.support.transition) return complete.call(this) 567 | 568 | this.$element 569 | [dimension](0) 570 | .one($.support.transition.end, $.proxy(complete, this)) 571 | .emulateTransitionEnd(350) 572 | } 573 | 574 | Collapse.prototype.toggle = function () { 575 | this[this.$element.hasClass('in') ? 'hide' : 'show']() 576 | } 577 | 578 | 579 | // COLLAPSE PLUGIN DEFINITION 580 | // ========================== 581 | 582 | var old = $.fn.collapse 583 | 584 | $.fn.collapse = function (option) { 585 | return this.each(function () { 586 | var $this = $(this) 587 | var data = $this.data('bs.collapse') 588 | var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) 589 | 590 | if (!data && options.toggle && option == 'show') option = !option 591 | if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) 592 | if (typeof option == 'string') data[option]() 593 | }) 594 | } 595 | 596 | $.fn.collapse.Constructor = Collapse 597 | 598 | 599 | // COLLAPSE NO CONFLICT 600 | // ==================== 601 | 602 | $.fn.collapse.noConflict = function () { 603 | $.fn.collapse = old 604 | return this 605 | } 606 | 607 | 608 | // COLLAPSE DATA-API 609 | // ================= 610 | 611 | $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { 612 | var $this = $(this), href 613 | var target = $this.attr('data-target') 614 | || e.preventDefault() 615 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 616 | var $target = $(target) 617 | var data = $target.data('bs.collapse') 618 | var option = data ? 'toggle' : $this.data() 619 | var parent = $this.attr('data-parent') 620 | var $parent = parent && $(parent) 621 | 622 | if (!data || !data.transitioning) { 623 | if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') 624 | $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') 625 | } 626 | 627 | $target.collapse(option) 628 | }) 629 | 630 | }(jQuery); 631 | 632 | /* ======================================================================== 633 | * Bootstrap: dropdown.js v3.1.0 634 | * http://getbootstrap.com/javascript/#dropdowns 635 | * ======================================================================== 636 | * Copyright 2011-2014 Twitter, Inc. 637 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 638 | * ======================================================================== */ 639 | 640 | 641 | +function ($) { 642 | 'use strict'; 643 | 644 | // DROPDOWN CLASS DEFINITION 645 | // ========================= 646 | 647 | var backdrop = '.dropdown-backdrop' 648 | var toggle = '[data-toggle=dropdown]' 649 | var Dropdown = function (element) { 650 | $(element).on('click.bs.dropdown', this.toggle) 651 | } 652 | 653 | Dropdown.prototype.toggle = function (e) { 654 | var $this = $(this) 655 | 656 | if ($this.is('.disabled, :disabled')) return 657 | 658 | var $parent = getParent($this) 659 | var isActive = $parent.hasClass('open') 660 | 661 | clearMenus() 662 | 663 | if (!isActive) { 664 | if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { 665 | // if mobile we use a backdrop because click events don't delegate 666 | $('