├── .gitignore
├── main.pyc
├── favicon.ico
├── img
├── video.png
├── google.png
├── video-over.png
├── google-black.png
├── AngularJS-large.png
├── AngularJS-small.png
├── glyphicons-halflings.png
└── glyphicons-halflings-white.png
├── docs
└── mockups
│ ├── bwa-05.png
│ └── bwa-10.png
├── projects
├── 24me
│ └── thumb.png
├── 5by
│ └── thumb.png
├── doz
│ └── thumb.png
├── pac2
│ └── thumb.png
├── ptr
│ └── thumb.png
├── ssc
│ └── thumb.png
├── vevo
│ └── thumb.png
├── Hatch
│ └── thumb.png
├── apwgl
│ └── thumb.png
├── bitgg
│ └── thumb.png
├── confr
│ └── thumb.png
├── cropup
│ └── thumb.png
├── dustr
│ └── thumb.png
├── dynofy
│ └── thumb.png
├── eshell
│ └── thumb.png
├── fluid
│ └── thumb.png
├── ga.me
│ └── thumb.png
├── goutec
│ └── thumb.png
├── hawtio
│ └── thumb.png
├── hikeio
│ └── thumb.png
├── holly
│ └── thumb.png
├── hya.io
│ └── thumb.png
├── isabel
│ └── thumb.png
├── loggi
│ └── thumb.png
├── meomap
│ └── thumb.png
├── msnbc
│ └── thumb.png
├── oppia
│ └── thumb.png
├── posse
│ └── thumb.png
├── remeio
│ └── thumb.png
├── ringmd
│ └── thumb.png
├── room77
│ └── thumb.png
├── scamp
│ └── thumb.png
├── seevl
│ └── thumb.png
├── stoic
│ └── thumb.png
├── topoi
│ └── thumb.png
├── yt-ps3
│ └── thumb.png
├── zoggle
│ └── thumb.png
├── Cloudtub
│ └── thumb.png
├── HackyNote
│ └── thumb.png
├── SongPane
│ └── thumb.png
├── appear.in
│ └── thumb.png
├── behrisbaf
│ └── thumb.png
├── betrend
│ └── thumb.png
├── boticca
│ └── thumb.png
├── buzzlike
│ └── thumb.png
├── coevery
│ └── thumb.png
├── corabbit
│ └── thumb.png
├── cpresent
│ └── thumb.png
├── debuggex
│ └── thumb.png
├── educando
│ └── thumb.png
├── ermahgerd
│ └── thumb.png
├── etunebook
│ └── thumb.png
├── firepoker
│ └── thumb.png
├── fitblok
│ └── thumb.png
├── foldnfly
│ └── thumb.png
├── fontdragr
│ └── thumb.jpg
├── formcraft
│ └── thumb.png
├── framefish
│ └── thumb.png
├── fusteeno
│ └── thumb.png
├── gallery
│ └── thumb.png
├── grubsmart
│ └── thumb.png
├── hatjitsu
│ └── thumb.png
├── huracan
│ └── thumb.jpg
├── illico_tv
│ └── thumb.png
├── interalia
│ └── thumb.png
├── jobs-cz
│ └── thumb.png
├── jobvite
│ └── thumb.png
├── kangaroom
│ └── thumb.png
├── kickdex
│ └── thumb.png
├── kodigon
│ └── thumb.png
├── lokaligo
│ └── thumb.png
├── mallzee
│ └── thumb.png
├── matigeni
│ └── thumb.png
├── metronome
│ └── thumb.png
├── music-db
│ └── thumb.png
├── musik365
│ └── thumb.jpg
├── nameokay
│ └── thumb.png
├── nba-wowy
│ └── thumb.png
├── nearbox
│ └── thumb.png
├── neobazaar
│ └── thumb.png
├── newlywish
│ └── thumb.png
├── nextbus
│ └── thumb.png
├── opentaste
│ └── thumb.png
├── overtask
│ └── thumb.png
├── phonecat
│ └── thumb.png
├── phpregex
│ └── thumb.png
├── plunker
│ └── thumb.png
├── pouchsg
│ └── thumb.png
├── provok-in
│ └── thumb.png
├── punchplay
│ └── thumb.png
├── quofucius
│ └── thumb.png
├── renovatd
│ └── thumb.png
├── roadrat
│ └── thumb.png
├── rot13.io
│ └── thumb.png
├── skystore
│ └── thumb.png
├── slovari
│ └── thumb.png
├── smoothie
│ └── thumb.png
├── sourcey
│ └── thumb.png
├── spectator
│ └── thumb.png
├── tagcloud
│ └── thumb.png
├── tasktub
│ └── thumb.png
├── taverdon
│ └── thumb.png
├── timelify
│ └── thumb.png
├── toogles
│ └── thumb.png
├── worktile
│ └── thumb.png
├── wreader
│ └── thumb.png
├── zaptravel
│ └── thumb.png
├── affablebean
│ └── thumb.png
├── appcatalog
│ └── thumb.png
├── cardforest
│ └── thumb.png
├── color-game
│ └── thumb.png
├── dailybreak
│ └── thumb.jpg
├── dbfreebies
│ └── thumb.png
├── dealmarket
│ └── thumb.png
├── doubleclick
│ └── thumb.png
├── fabienzibi
│ └── thumb.png
├── filekeeper
│ └── thumb.png
├── gameclipse
│ └── thumb.png
├── html5-ninja
│ └── thumb.png
├── hyperstage
│ └── thumb.png
├── jamstreams
│ └── thumb.png
├── jukenetbox
│ └── thumb.png
├── kinetoscope
│ └── thumb.png
├── lookaround
│ └── thumb.png
├── m.wamba.com
│ └── thumb.png
├── mealshaker
│ └── thumb.png
├── memory-game
│ └── thumb.png
├── metawidget
│ └── thumb.png
├── myresumejs
│ └── thumb.png
├── paragrabbr
│ └── thumb.jpg
├── piechopper
│ └── thumb.png
├── pso-trieste
│ └── thumb.png
├── pubnub-chat
│ └── thumb.png
├── redbysfr-re
│ └── thumb.png
├── regexworks
│ └── thumb.png
├── restclient
│ └── thumb.png
├── rodereisen
│ └── thumb.png
├── sendmachine
│ └── thumb.png
├── snarkhunter
│ └── thumb.png
├── socialblood
│ └── thumb.png
├── taketracker
│ └── thumb.png
├── trendycams
│ └── thumb.png
├── tripinview
│ └── thumb.png
├── wanderlust
│ └── thumb.png
├── weather.com
│ └── thumb.png
├── wundergram
│ └── thumb.png
├── angular_sudoku
│ └── thumb.png
├── angularjs-docs
│ └── thumb.png
├── australia-post
│ └── thumb.png
├── base64-image
│ └── thumb.png
├── cafetownsend
│ └── thumb.png
├── cities-in-motion
│ ├── cim.jpg
│ └── cim.png
├── clickortreat
│ └── thumb.png
├── contact-path
│ └── thumb.png
├── crunchinator
│ └── thumb.png
├── cvsintellect
│ └── thumb.jpg
├── dematerializer
│ └── thumb.png
├── directiveMaker
│ └── thumb.png
├── discoverwiki
│ └── thumb.png
├── everymote
│ └── EM_angular.png
├── flat-todo-app
│ └── thumb.png
├── kontaktkarte
│ └── thumb.png
├── louis-cruises
│ └── thumb.png
├── nodetetrinet
│ └── thumb.png
├── octopusdeploy
│ └── thumb.png
├── ons-floorplan
│ └── thumb.png
├── opendatasoft
│ └── thumb.png
├── oregongridiron
│ └── thumb.png
├── peepcode-tunes
│ └── thumb.png
├── reddit-reader
│ └── thumb.png
├── sliding-puzzle
│ └── thumb.png
├── supermuni
│ └── supermuni.png
├── tuftandneedle
│ └── thumb.jpg
├── twitter-search
│ └── thumb.png
├── verticalchange
│ └── thumb.png
├── whichairline
│ └── thumb.png
├── whitetruffle
│ └── thumb.png
├── widelinky.com
│ └── thumb.png
├── workhourglass
│ └── thumb.png
├── worldcup2015
│ └── thumb.png
├── yapTV-facebook
│ └── thumb.png
├── beavercoin-wheel
│ └── thumb.png
├── cardsforhumanity
│ └── thumb.png
├── goodfilms-mobile
│ └── thumb.png
├── mycolorpalettes
│ └── thumb.png
├── registre-foncier
│ └── thumb.png
├── shortkeys-chrome
│ └── thumb.png
├── watchmelater.net
│ └── thumb.png
├── angular-google-maps
│ └── thumb.png
├── angular-invoicing
│ └── thumb.png
├── balance-projector
│ └── thumb.png
├── drugsearch-android
│ └── thumb.jpg
├── folderchute
│ └── FolderChute.png
├── github-contributors
│ └── thumb.png
├── mini-configurator
│ └── thumb.png
├── mswordcharconvertor
│ └── thumb.png
├── redbeacon-experts
│ └── thumb.png
├── tetractis-olympics
│ └── thumb.png
├── angular-audio-player
│ └── thumb.png
├── awesome-new-tab-page
│ └── thumb.png
├── cryptography-project
│ └── thumb.png
├── naver-webtoon-editor
│ └── thumb.png
├── semantic-body-browser
│ └── thumb.png
├── trailers-for-netflix
│ └── thumb.png
├── angular-appengine-seed
│ └── thumb.png
├── bootstrap-grid-builder
│ └── thumb.png
├── graphical-query-builder
│ └── thumb.png
├── employee-training-tracker
│ └── thumb.png
├── deadbolt-password-generator
│ └── thumb.png
├── eddytools-assessment-system
│ └── thumb.png
├── html5-canvas-gradient-creator
│ └── thumb.png
├── thoughtcast-snippet-manager
│ └── thumb.png
├── untamed-a-digital-photo-installation
│ └── thumb.png
└── bingo-card-club
│ └── printable-bingo-card-creator.png
├── font
├── fontawesome-webfont.eot
├── fontawesome-webfont.ttf
├── fontawesome-webfont.svgz
└── fontawesome-webfont.woff
├── .htaccess
├── index.yaml
├── gitFetchSite.php
├── app.yaml
├── main.py
├── README.md
├── css
├── bwa.css
├── docs.css
├── bootstrap-responsive.min.css
├── font-awesome.css
└── bootstrap-responsive.css
├── js
├── bwa.js
├── bootstrap.min.js
└── bootstrap.js
├── web-server.js
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | gitFetchSite.log
2 | .DS_Store
3 |
--------------------------------------------------------------------------------
/main.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/main.pyc
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/favicon.ico
--------------------------------------------------------------------------------
/img/video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/video.png
--------------------------------------------------------------------------------
/img/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/google.png
--------------------------------------------------------------------------------
/img/video-over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/video-over.png
--------------------------------------------------------------------------------
/img/google-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/google-black.png
--------------------------------------------------------------------------------
/docs/mockups/bwa-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/docs/mockups/bwa-05.png
--------------------------------------------------------------------------------
/docs/mockups/bwa-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/docs/mockups/bwa-10.png
--------------------------------------------------------------------------------
/img/AngularJS-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/AngularJS-large.png
--------------------------------------------------------------------------------
/img/AngularJS-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/AngularJS-small.png
--------------------------------------------------------------------------------
/projects/24me/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/24me/thumb.png
--------------------------------------------------------------------------------
/projects/5by/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/5by/thumb.png
--------------------------------------------------------------------------------
/projects/doz/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/doz/thumb.png
--------------------------------------------------------------------------------
/projects/pac2/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/pac2/thumb.png
--------------------------------------------------------------------------------
/projects/ptr/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ptr/thumb.png
--------------------------------------------------------------------------------
/projects/ssc/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ssc/thumb.png
--------------------------------------------------------------------------------
/projects/vevo/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/vevo/thumb.png
--------------------------------------------------------------------------------
/projects/Hatch/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/Hatch/thumb.png
--------------------------------------------------------------------------------
/projects/apwgl/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/apwgl/thumb.png
--------------------------------------------------------------------------------
/projects/bitgg/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/bitgg/thumb.png
--------------------------------------------------------------------------------
/projects/confr/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/confr/thumb.png
--------------------------------------------------------------------------------
/projects/cropup/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cropup/thumb.png
--------------------------------------------------------------------------------
/projects/dustr/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dustr/thumb.png
--------------------------------------------------------------------------------
/projects/dynofy/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dynofy/thumb.png
--------------------------------------------------------------------------------
/projects/eshell/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/eshell/thumb.png
--------------------------------------------------------------------------------
/projects/fluid/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/fluid/thumb.png
--------------------------------------------------------------------------------
/projects/ga.me/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ga.me/thumb.png
--------------------------------------------------------------------------------
/projects/goutec/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/goutec/thumb.png
--------------------------------------------------------------------------------
/projects/hawtio/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/hawtio/thumb.png
--------------------------------------------------------------------------------
/projects/hikeio/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/hikeio/thumb.png
--------------------------------------------------------------------------------
/projects/holly/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/holly/thumb.png
--------------------------------------------------------------------------------
/projects/hya.io/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/hya.io/thumb.png
--------------------------------------------------------------------------------
/projects/isabel/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/isabel/thumb.png
--------------------------------------------------------------------------------
/projects/loggi/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/loggi/thumb.png
--------------------------------------------------------------------------------
/projects/meomap/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/meomap/thumb.png
--------------------------------------------------------------------------------
/projects/msnbc/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/msnbc/thumb.png
--------------------------------------------------------------------------------
/projects/oppia/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/oppia/thumb.png
--------------------------------------------------------------------------------
/projects/posse/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/posse/thumb.png
--------------------------------------------------------------------------------
/projects/remeio/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/remeio/thumb.png
--------------------------------------------------------------------------------
/projects/ringmd/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ringmd/thumb.png
--------------------------------------------------------------------------------
/projects/room77/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/room77/thumb.png
--------------------------------------------------------------------------------
/projects/scamp/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/scamp/thumb.png
--------------------------------------------------------------------------------
/projects/seevl/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/seevl/thumb.png
--------------------------------------------------------------------------------
/projects/stoic/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/stoic/thumb.png
--------------------------------------------------------------------------------
/projects/topoi/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/topoi/thumb.png
--------------------------------------------------------------------------------
/projects/yt-ps3/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/yt-ps3/thumb.png
--------------------------------------------------------------------------------
/projects/zoggle/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/zoggle/thumb.png
--------------------------------------------------------------------------------
/font/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/font/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/font/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/font/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/projects/Cloudtub/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/Cloudtub/thumb.png
--------------------------------------------------------------------------------
/projects/HackyNote/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/HackyNote/thumb.png
--------------------------------------------------------------------------------
/projects/SongPane/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/SongPane/thumb.png
--------------------------------------------------------------------------------
/projects/appear.in/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/appear.in/thumb.png
--------------------------------------------------------------------------------
/projects/behrisbaf/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/behrisbaf/thumb.png
--------------------------------------------------------------------------------
/projects/betrend/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/betrend/thumb.png
--------------------------------------------------------------------------------
/projects/boticca/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/boticca/thumb.png
--------------------------------------------------------------------------------
/projects/buzzlike/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/buzzlike/thumb.png
--------------------------------------------------------------------------------
/projects/coevery/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/coevery/thumb.png
--------------------------------------------------------------------------------
/projects/corabbit/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/corabbit/thumb.png
--------------------------------------------------------------------------------
/projects/cpresent/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cpresent/thumb.png
--------------------------------------------------------------------------------
/projects/debuggex/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/debuggex/thumb.png
--------------------------------------------------------------------------------
/projects/educando/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/educando/thumb.png
--------------------------------------------------------------------------------
/projects/ermahgerd/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ermahgerd/thumb.png
--------------------------------------------------------------------------------
/projects/etunebook/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/etunebook/thumb.png
--------------------------------------------------------------------------------
/projects/firepoker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/firepoker/thumb.png
--------------------------------------------------------------------------------
/projects/fitblok/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/fitblok/thumb.png
--------------------------------------------------------------------------------
/projects/foldnfly/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/foldnfly/thumb.png
--------------------------------------------------------------------------------
/projects/fontdragr/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/fontdragr/thumb.jpg
--------------------------------------------------------------------------------
/projects/formcraft/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/formcraft/thumb.png
--------------------------------------------------------------------------------
/projects/framefish/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/framefish/thumb.png
--------------------------------------------------------------------------------
/projects/fusteeno/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/fusteeno/thumb.png
--------------------------------------------------------------------------------
/projects/gallery/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/gallery/thumb.png
--------------------------------------------------------------------------------
/projects/grubsmart/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/grubsmart/thumb.png
--------------------------------------------------------------------------------
/projects/hatjitsu/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/hatjitsu/thumb.png
--------------------------------------------------------------------------------
/projects/huracan/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/huracan/thumb.jpg
--------------------------------------------------------------------------------
/projects/illico_tv/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/illico_tv/thumb.png
--------------------------------------------------------------------------------
/projects/interalia/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/interalia/thumb.png
--------------------------------------------------------------------------------
/projects/jobs-cz/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/jobs-cz/thumb.png
--------------------------------------------------------------------------------
/projects/jobvite/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/jobvite/thumb.png
--------------------------------------------------------------------------------
/projects/kangaroom/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/kangaroom/thumb.png
--------------------------------------------------------------------------------
/projects/kickdex/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/kickdex/thumb.png
--------------------------------------------------------------------------------
/projects/kodigon/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/kodigon/thumb.png
--------------------------------------------------------------------------------
/projects/lokaligo/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/lokaligo/thumb.png
--------------------------------------------------------------------------------
/projects/mallzee/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/mallzee/thumb.png
--------------------------------------------------------------------------------
/projects/matigeni/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/matigeni/thumb.png
--------------------------------------------------------------------------------
/projects/metronome/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/metronome/thumb.png
--------------------------------------------------------------------------------
/projects/music-db/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/music-db/thumb.png
--------------------------------------------------------------------------------
/projects/musik365/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/musik365/thumb.jpg
--------------------------------------------------------------------------------
/projects/nameokay/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/nameokay/thumb.png
--------------------------------------------------------------------------------
/projects/nba-wowy/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/nba-wowy/thumb.png
--------------------------------------------------------------------------------
/projects/nearbox/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/nearbox/thumb.png
--------------------------------------------------------------------------------
/projects/neobazaar/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/neobazaar/thumb.png
--------------------------------------------------------------------------------
/projects/newlywish/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/newlywish/thumb.png
--------------------------------------------------------------------------------
/projects/nextbus/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/nextbus/thumb.png
--------------------------------------------------------------------------------
/projects/opentaste/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/opentaste/thumb.png
--------------------------------------------------------------------------------
/projects/overtask/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/overtask/thumb.png
--------------------------------------------------------------------------------
/projects/phonecat/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/phonecat/thumb.png
--------------------------------------------------------------------------------
/projects/phpregex/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/phpregex/thumb.png
--------------------------------------------------------------------------------
/projects/plunker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/plunker/thumb.png
--------------------------------------------------------------------------------
/projects/pouchsg/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/pouchsg/thumb.png
--------------------------------------------------------------------------------
/projects/provok-in/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/provok-in/thumb.png
--------------------------------------------------------------------------------
/projects/punchplay/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/punchplay/thumb.png
--------------------------------------------------------------------------------
/projects/quofucius/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/quofucius/thumb.png
--------------------------------------------------------------------------------
/projects/renovatd/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/renovatd/thumb.png
--------------------------------------------------------------------------------
/projects/roadrat/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/roadrat/thumb.png
--------------------------------------------------------------------------------
/projects/rot13.io/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/rot13.io/thumb.png
--------------------------------------------------------------------------------
/projects/skystore/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/skystore/thumb.png
--------------------------------------------------------------------------------
/projects/slovari/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/slovari/thumb.png
--------------------------------------------------------------------------------
/projects/smoothie/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/smoothie/thumb.png
--------------------------------------------------------------------------------
/projects/sourcey/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/sourcey/thumb.png
--------------------------------------------------------------------------------
/projects/spectator/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/spectator/thumb.png
--------------------------------------------------------------------------------
/projects/tagcloud/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/tagcloud/thumb.png
--------------------------------------------------------------------------------
/projects/tasktub/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/tasktub/thumb.png
--------------------------------------------------------------------------------
/projects/taverdon/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/taverdon/thumb.png
--------------------------------------------------------------------------------
/projects/timelify/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/timelify/thumb.png
--------------------------------------------------------------------------------
/projects/toogles/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/toogles/thumb.png
--------------------------------------------------------------------------------
/projects/worktile/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/worktile/thumb.png
--------------------------------------------------------------------------------
/projects/wreader/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/wreader/thumb.png
--------------------------------------------------------------------------------
/projects/zaptravel/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/zaptravel/thumb.png
--------------------------------------------------------------------------------
/font/fontawesome-webfont.svgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/font/fontawesome-webfont.svgz
--------------------------------------------------------------------------------
/font/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/font/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/projects/affablebean/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/affablebean/thumb.png
--------------------------------------------------------------------------------
/projects/appcatalog/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/appcatalog/thumb.png
--------------------------------------------------------------------------------
/projects/cardforest/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cardforest/thumb.png
--------------------------------------------------------------------------------
/projects/color-game/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/color-game/thumb.png
--------------------------------------------------------------------------------
/projects/dailybreak/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dailybreak/thumb.jpg
--------------------------------------------------------------------------------
/projects/dbfreebies/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dbfreebies/thumb.png
--------------------------------------------------------------------------------
/projects/dealmarket/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dealmarket/thumb.png
--------------------------------------------------------------------------------
/projects/doubleclick/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/doubleclick/thumb.png
--------------------------------------------------------------------------------
/projects/fabienzibi/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/fabienzibi/thumb.png
--------------------------------------------------------------------------------
/projects/filekeeper/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/filekeeper/thumb.png
--------------------------------------------------------------------------------
/projects/gameclipse/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/gameclipse/thumb.png
--------------------------------------------------------------------------------
/projects/html5-ninja/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/html5-ninja/thumb.png
--------------------------------------------------------------------------------
/projects/hyperstage/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/hyperstage/thumb.png
--------------------------------------------------------------------------------
/projects/jamstreams/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/jamstreams/thumb.png
--------------------------------------------------------------------------------
/projects/jukenetbox/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/jukenetbox/thumb.png
--------------------------------------------------------------------------------
/projects/kinetoscope/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/kinetoscope/thumb.png
--------------------------------------------------------------------------------
/projects/lookaround/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/lookaround/thumb.png
--------------------------------------------------------------------------------
/projects/m.wamba.com/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/m.wamba.com/thumb.png
--------------------------------------------------------------------------------
/projects/mealshaker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/mealshaker/thumb.png
--------------------------------------------------------------------------------
/projects/memory-game/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/memory-game/thumb.png
--------------------------------------------------------------------------------
/projects/metawidget/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/metawidget/thumb.png
--------------------------------------------------------------------------------
/projects/myresumejs/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/myresumejs/thumb.png
--------------------------------------------------------------------------------
/projects/paragrabbr/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/paragrabbr/thumb.jpg
--------------------------------------------------------------------------------
/projects/piechopper/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/piechopper/thumb.png
--------------------------------------------------------------------------------
/projects/pso-trieste/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/pso-trieste/thumb.png
--------------------------------------------------------------------------------
/projects/pubnub-chat/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/pubnub-chat/thumb.png
--------------------------------------------------------------------------------
/projects/redbysfr-re/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/redbysfr-re/thumb.png
--------------------------------------------------------------------------------
/projects/regexworks/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/regexworks/thumb.png
--------------------------------------------------------------------------------
/projects/restclient/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/restclient/thumb.png
--------------------------------------------------------------------------------
/projects/rodereisen/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/rodereisen/thumb.png
--------------------------------------------------------------------------------
/projects/sendmachine/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/sendmachine/thumb.png
--------------------------------------------------------------------------------
/projects/snarkhunter/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/snarkhunter/thumb.png
--------------------------------------------------------------------------------
/projects/socialblood/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/socialblood/thumb.png
--------------------------------------------------------------------------------
/projects/taketracker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/taketracker/thumb.png
--------------------------------------------------------------------------------
/projects/trendycams/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/trendycams/thumb.png
--------------------------------------------------------------------------------
/projects/tripinview/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/tripinview/thumb.png
--------------------------------------------------------------------------------
/projects/wanderlust/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/wanderlust/thumb.png
--------------------------------------------------------------------------------
/projects/weather.com/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/weather.com/thumb.png
--------------------------------------------------------------------------------
/projects/wundergram/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/wundergram/thumb.png
--------------------------------------------------------------------------------
/projects/angular_sudoku/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angular_sudoku/thumb.png
--------------------------------------------------------------------------------
/projects/angularjs-docs/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angularjs-docs/thumb.png
--------------------------------------------------------------------------------
/projects/australia-post/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/australia-post/thumb.png
--------------------------------------------------------------------------------
/projects/base64-image/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/base64-image/thumb.png
--------------------------------------------------------------------------------
/projects/cafetownsend/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cafetownsend/thumb.png
--------------------------------------------------------------------------------
/projects/cities-in-motion/cim.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cities-in-motion/cim.jpg
--------------------------------------------------------------------------------
/projects/cities-in-motion/cim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cities-in-motion/cim.png
--------------------------------------------------------------------------------
/projects/clickortreat/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/clickortreat/thumb.png
--------------------------------------------------------------------------------
/projects/contact-path/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/contact-path/thumb.png
--------------------------------------------------------------------------------
/projects/crunchinator/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/crunchinator/thumb.png
--------------------------------------------------------------------------------
/projects/cvsintellect/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cvsintellect/thumb.jpg
--------------------------------------------------------------------------------
/projects/dematerializer/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/dematerializer/thumb.png
--------------------------------------------------------------------------------
/projects/directiveMaker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/directiveMaker/thumb.png
--------------------------------------------------------------------------------
/projects/discoverwiki/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/discoverwiki/thumb.png
--------------------------------------------------------------------------------
/projects/everymote/EM_angular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/everymote/EM_angular.png
--------------------------------------------------------------------------------
/projects/flat-todo-app/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/flat-todo-app/thumb.png
--------------------------------------------------------------------------------
/projects/kontaktkarte/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/kontaktkarte/thumb.png
--------------------------------------------------------------------------------
/projects/louis-cruises/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/louis-cruises/thumb.png
--------------------------------------------------------------------------------
/projects/nodetetrinet/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/nodetetrinet/thumb.png
--------------------------------------------------------------------------------
/projects/octopusdeploy/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/octopusdeploy/thumb.png
--------------------------------------------------------------------------------
/projects/ons-floorplan/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/ons-floorplan/thumb.png
--------------------------------------------------------------------------------
/projects/opendatasoft/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/opendatasoft/thumb.png
--------------------------------------------------------------------------------
/projects/oregongridiron/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/oregongridiron/thumb.png
--------------------------------------------------------------------------------
/projects/peepcode-tunes/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/peepcode-tunes/thumb.png
--------------------------------------------------------------------------------
/projects/reddit-reader/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/reddit-reader/thumb.png
--------------------------------------------------------------------------------
/projects/sliding-puzzle/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/sliding-puzzle/thumb.png
--------------------------------------------------------------------------------
/projects/supermuni/supermuni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/supermuni/supermuni.png
--------------------------------------------------------------------------------
/projects/tuftandneedle/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/tuftandneedle/thumb.jpg
--------------------------------------------------------------------------------
/projects/twitter-search/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/twitter-search/thumb.png
--------------------------------------------------------------------------------
/projects/verticalchange/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/verticalchange/thumb.png
--------------------------------------------------------------------------------
/projects/whichairline/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/whichairline/thumb.png
--------------------------------------------------------------------------------
/projects/whitetruffle/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/whitetruffle/thumb.png
--------------------------------------------------------------------------------
/projects/widelinky.com/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/widelinky.com/thumb.png
--------------------------------------------------------------------------------
/projects/workhourglass/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/workhourglass/thumb.png
--------------------------------------------------------------------------------
/projects/worldcup2015/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/worldcup2015/thumb.png
--------------------------------------------------------------------------------
/projects/yapTV-facebook/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/yapTV-facebook/thumb.png
--------------------------------------------------------------------------------
/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/projects/beavercoin-wheel/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/beavercoin-wheel/thumb.png
--------------------------------------------------------------------------------
/projects/cardsforhumanity/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cardsforhumanity/thumb.png
--------------------------------------------------------------------------------
/projects/goodfilms-mobile/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/goodfilms-mobile/thumb.png
--------------------------------------------------------------------------------
/projects/mycolorpalettes/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/mycolorpalettes/thumb.png
--------------------------------------------------------------------------------
/projects/registre-foncier/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/registre-foncier/thumb.png
--------------------------------------------------------------------------------
/projects/shortkeys-chrome/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/shortkeys-chrome/thumb.png
--------------------------------------------------------------------------------
/projects/watchmelater.net/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/watchmelater.net/thumb.png
--------------------------------------------------------------------------------
/projects/angular-google-maps/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angular-google-maps/thumb.png
--------------------------------------------------------------------------------
/projects/angular-invoicing/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angular-invoicing/thumb.png
--------------------------------------------------------------------------------
/projects/balance-projector/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/balance-projector/thumb.png
--------------------------------------------------------------------------------
/projects/drugsearch-android/thumb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/drugsearch-android/thumb.jpg
--------------------------------------------------------------------------------
/projects/folderchute/FolderChute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/folderchute/FolderChute.png
--------------------------------------------------------------------------------
/projects/github-contributors/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/github-contributors/thumb.png
--------------------------------------------------------------------------------
/projects/mini-configurator/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/mini-configurator/thumb.png
--------------------------------------------------------------------------------
/projects/mswordcharconvertor/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/mswordcharconvertor/thumb.png
--------------------------------------------------------------------------------
/projects/redbeacon-experts/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/redbeacon-experts/thumb.png
--------------------------------------------------------------------------------
/projects/tetractis-olympics/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/tetractis-olympics/thumb.png
--------------------------------------------------------------------------------
/projects/angular-audio-player/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angular-audio-player/thumb.png
--------------------------------------------------------------------------------
/projects/awesome-new-tab-page/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/awesome-new-tab-page/thumb.png
--------------------------------------------------------------------------------
/projects/cryptography-project/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/cryptography-project/thumb.png
--------------------------------------------------------------------------------
/projects/naver-webtoon-editor/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/naver-webtoon-editor/thumb.png
--------------------------------------------------------------------------------
/projects/semantic-body-browser/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/semantic-body-browser/thumb.png
--------------------------------------------------------------------------------
/projects/trailers-for-netflix/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/trailers-for-netflix/thumb.png
--------------------------------------------------------------------------------
/projects/angular-appengine-seed/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/angular-appengine-seed/thumb.png
--------------------------------------------------------------------------------
/projects/bootstrap-grid-builder/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/bootstrap-grid-builder/thumb.png
--------------------------------------------------------------------------------
/projects/graphical-query-builder/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/graphical-query-builder/thumb.png
--------------------------------------------------------------------------------
/projects/employee-training-tracker/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/employee-training-tracker/thumb.png
--------------------------------------------------------------------------------
/projects/deadbolt-password-generator/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/deadbolt-password-generator/thumb.png
--------------------------------------------------------------------------------
/projects/eddytools-assessment-system/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/eddytools-assessment-system/thumb.png
--------------------------------------------------------------------------------
/projects/html5-canvas-gradient-creator/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/html5-canvas-gradient-creator/thumb.png
--------------------------------------------------------------------------------
/projects/thoughtcast-snippet-manager/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/thoughtcast-snippet-manager/thumb.png
--------------------------------------------------------------------------------
/projects/untamed-a-digital-photo-installation/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/untamed-a-digital-photo-installation/thumb.png
--------------------------------------------------------------------------------
/projects/bingo-card-club/printable-bingo-card-creator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naver/builtwith.angularjs.org/master/projects/bingo-card-club/printable-bingo-card-creator.png
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine on
2 |
3 | ## HTML5 URL Support ##
4 | RewriteRule ^(project)(/.*)?$ index.html
5 |
6 | # content-type mappings
7 | AddType application/javascript .js
8 | AddType text/cache-manifest .manifest
9 |
10 | # cache stuff for 60 minutes
11 | ExpiresActive On
12 | ExpiresDefault "access plus 120 minutes"
13 |
14 | # compression
15 | SetOutputFilter DEFLATE
16 | Header set Vary "Accept-Encoding"
17 |
--------------------------------------------------------------------------------
/index.yaml:
--------------------------------------------------------------------------------
1 | indexes:
2 |
3 | # AUTOGENERATED
4 |
5 | # This index.yaml is automatically updated whenever the dev_appserver
6 | # detects that a new type of query is run. If you want to manage the
7 | # index.yaml file manually, remove the above marker line (the line
8 | # saying "# AUTOGENERATED"). If you want to manage some indexes
9 | # manually, move them above the marker line. The index.yaml file is
10 | # automatically uploaded to the admin console when you next deploy
11 | # your application using appcfg.py.
12 |
13 |
--------------------------------------------------------------------------------
/gitFetchSite.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | Update site from: GitHub master
4 |
5 |
6 | > gitFetchSite.log`; ?>
7 | > gitFetchSite.log`; ?>
8 |
9 |
10 |
11 |
12 |
13 | > gitFetchSite.log`; ?>
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app.yaml:
--------------------------------------------------------------------------------
1 | application: builtwith-angularjs-org
2 | version: 1
3 | runtime: python27
4 | api_version: 1
5 | threadsafe: yes
6 |
7 | handlers:
8 | - url: /favicon\.ico
9 | static_files: favicon.ico
10 | upload: favicon\.ico
11 |
12 | - url: /
13 | static_files: index.html
14 | upload: index.html
15 |
16 | - url: /projects
17 | static_dir: projects
18 |
19 | - url: /css
20 | static_dir: css
21 |
22 | - url: /font
23 | static_dir: font
24 |
25 | - url: /img
26 | static_dir: img
27 |
28 | - url: /js
29 | static_dir: js
30 |
31 | - url: /.*
32 | static_files: index.html
33 | upload: index.html
34 |
35 | libraries:
36 | - name: webapp2
37 | version: "2.5.1"
38 |
39 |
40 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Copyright 2007 Google Inc.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | import webapp2
18 |
19 | class MainHandler(webapp2.RequestHandler):
20 | def get(self):
21 | self.response.out.write('Hello world!')
22 |
23 | app = webapp2.WSGIApplication([('/', MainHandler)],
24 | debug=True)
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # builtwith.angularjs.org
3 |
4 | Gallery of AngularJS apps and demos.
5 |
6 | Adding your neat thing
7 | ----------------------
8 | 1. Fork this repository.
9 | 2. Add a 580 by 400px thumbnail image to `projects/[yourprojectnamehere]/thumb.png`
10 | 3. Add an entry to `projects/projects.json` with these properties:
11 |
12 | {
13 | "name": "My App", // will be displayed under the screenshot
14 | "thumb": "my-app/thumb.png", // path to the image (omit the projects/ prefix)
15 | "desc": "Description of your app", // One or two sentences
16 | "url": "http://myapp.com", // url to your app
17 | "info": "http://myapp.com/blog", // url to app announcement or background
18 | "src": "https://github.com/me/myapp", // (optional) Url to your source repository
19 | "submitter": "IgorMinar", // your github username
20 | "submissionDate": "2012-05-24", // current date in ISO format
21 | "tags": [
22 | "Demo", "Production", "Toy" // choose your app seriousness level (for plunks or fiddles use "Toy")
23 | "Game", "CRUD", "Entertainment", "Productivity", ... // choose your app type
24 | "Animations", "Local Storage", "Audio Api", "AppCache", ... // features and technologies
25 | "No jQuery", "jQuery" // do you use jQuery?
26 | "Open Source", // tag open source projects
27 | "Tests Included" // use if open source and tests are included
28 | ... // others?
29 | ]
30 | }
31 |
32 | 4. Make sure that it looks alright by running `./web-server.js` (requires Node.js)
33 | 5. Send a pull request
34 |
--------------------------------------------------------------------------------
/css/bwa.css:
--------------------------------------------------------------------------------
1 | [ng-cloak] {
2 | display: none;
3 | }
4 |
5 | .bwa-label {
6 | margin: 0 5px 5px;
7 | cursor: pointer;
8 | display: inline-block;
9 | }
10 |
11 | .bwa-tag {
12 | margin-right: 5px;
13 | }
14 |
15 | .badge-important {
16 | background-color: #b94a48;
17 | }
18 |
19 | .bwa-neat, .bwa-count {
20 | font-size: 32px;
21 | line-height: 55px;
22 | text-transform: uppercase;
23 | }
24 |
25 | .bwa-btn-group {
26 | display: inline-block;
27 | vertical-align: bottom;
28 | }
29 |
30 | .bwa-btn-tags {
31 | padding-top: 10px;
32 | }
33 |
34 | .bwa-select-sort {
35 | margin-top: 10px;
36 | margin-bottom: 0px;
37 | }
38 |
39 | .bwa-featured {
40 | padding-top: 60px;
41 | }
42 |
43 | .bwa-featured img {
44 | width: 580px;
45 | height: 400px;
46 | }
47 |
48 | .bwa-main-container {
49 | min-height: 1400px;
50 | }
51 |
52 | .bwa-featured .bwa-project-well {
53 | height: 572px;
54 | }
55 |
56 | .bwa-projects .bwa-project-well {
57 | height: 430px;
58 | }
59 | .bwa-projects .bwa-project-desc {
60 | overflow: hidden;
61 | height: 38px;
62 | position: relative;
63 | }
64 |
65 | .bwa-projects h2,
66 | .bwa-featured h2 {
67 | margin-top: .5em;
68 | }
69 |
70 | .bwa-featured h2 {
71 | font-size: 36px;
72 | }
73 |
74 | .bwa-projects img {
75 | width: 420px;
76 | height: 290px;
77 | }
78 |
79 | .bwa-img {
80 | cursor: pointer;
81 | }
82 |
83 | .bwa-spacer {
84 | display: inline-block;
85 | width: 6em;
86 | height: 1.45em;
87 | }
88 |
89 | bwa-project {
90 | display: block;
91 | }
92 |
93 | img.AngularJS-large {
94 | width: 270px;
95 | height: 70px;
96 | }
97 |
98 | .bwa-lightbox {
99 | position: fixed;
100 | left: 0;
101 | top: 40px;
102 | bottom: 0;
103 | right: 0;
104 | padding: 50px;
105 | text-align: center;
106 | background: rgba(255, 255, 255, .85);
107 | z-index: 2000;
108 | }
109 | .modal {
110 | width: 900px;
111 | margin-left: -450px;
112 | }
113 | .modal-body img {
114 | width: 580px;
115 | height: 400px;
116 | padding: 20px;
117 | }
118 | .modal-body {
119 | text-align: center;
120 | max-height: 100%;
121 | }
122 | .modal-body p {
123 | padding: 20px;
124 | }
125 | .modal.fade {
126 | top: -150%;
127 | }
128 | .modal.fade.in {
129 | top: 40%;
130 | }
131 | .modal-backdrop {
132 | display: none;
133 | }
134 | .modal-backdrop.fade.in {
135 | display: block;
136 | }
137 |
--------------------------------------------------------------------------------
/css/docs.css:
--------------------------------------------------------------------------------
1 | .footer p {
2 | margin: 0;
3 | }
4 |
5 | form.jsfiddle {
6 | display: inline;
7 | }
8 |
9 | code.nocode {
10 | display: inline-block;
11 | background-color: #99c2ff;
12 | border: 1px solid #7699d1;
13 | -webkit-border-radius: 2px;
14 | -moz-border-radius: 2px;
15 | border-radius: 2px;
16 | color: #223f7a;
17 |
18 | -webkit-border-radius: 3px;
19 | -moz-border-radius: 3px;
20 | border-radius: 3px;
21 | border: 1px solid #e1e1e8;
22 | }
23 |
24 | .example {
25 | margin-top: 1em;
26 | }
27 |
28 | .container h1,
29 | .container h2,
30 | .container h3,
31 | .container h4 {
32 | margin-bottom: .5em;
33 | }
34 |
35 | .container h1 {
36 | margin-top: 3.5em;
37 | }
38 |
39 | .container h2 {
40 | margin-top: 1em;
41 | }
42 |
43 | .container h3 {
44 | margin-top: .5em;
45 | }
46 |
47 | .row.first h1 {
48 | margin-top: .5em;
49 | }
50 |
51 |
52 | .navbar .divider-vertical {margin: 0}
53 | .navbar .nav > li > a {padding: 10px 23px 11px 20px;}
54 |
55 | .center {
56 | text-align: center;
57 | }
58 |
59 | .hero-unit h1 {
60 | padding-top: 1.5em;
61 | padding-bottom: 1em;
62 | margin: 0;
63 | font-size: 30px;
64 | color: #535353;
65 | font-family: 'helvetica neue', Helvetica, Arial;
66 | font-weight: 300;
67 | }
68 |
69 | .hero-unit .btn-large {
70 | font-size: 22px;
71 | font-family: Helvetica;
72 | font-weight: lighter;
73 | }
74 |
75 | .spacer {
76 | display: inline-block;
77 | width: 6em;
78 | height: 3em;
79 | }
80 |
81 | .hero-unit .btn-large .version {
82 | font-size: 12px;
83 | }
84 |
85 | .quick-links {
86 | text-align: center;
87 | list-style: none;
88 | margin-top: 50px;
89 | }
90 |
91 | .quick-links > li {
92 | display: inline-block;
93 | margin: 0 1em;
94 | vertical-align: top;
95 | }
96 |
97 | .google-follow {
98 | font-family: 'Helvetica Neue', Arial, sans-serif;
99 | font-size: 11px;
100 | font-weight: bold;
101 | }
102 |
103 | img.AngularJS-large {
104 | width: 382px;
105 | height: 99px;
106 | }
107 |
108 | img.AngularJS-small {
109 | width: 95px;
110 | height: 25px;
111 | }
112 |
113 | .video-img {
114 | width: 300px;
115 | height: 200px;
116 | background:url("../img/video-over.png")
117 | }
118 |
119 | .video-img:hover img{
120 | position:absolute; left:-999px; top:-999px;
121 | }
122 |
123 | .app-source {
124 | min-height: 375px;
125 | }
126 |
127 | img.cache {
128 | width: 0;
129 | height: 0;
130 | }
131 |
132 | #videoModal {
133 | display: block;
134 | width: 1000px;
135 | height: 705px;
136 | margin-left: -500px;
137 | margin-top: -337px;
138 | }
139 | #videoModal .modal-body {
140 | max-height: 611px;
141 | height: 611px;
142 | overflow: hidden;
143 | }
144 |
145 | .tabs-spacer {
146 | height: 30px;
147 | }
148 |
149 | .hero-unit .tag-bullets {
150 | padding-top: 21px;
151 | font-family: Arial;
152 | }
153 |
154 | .footer {
155 | padding-top: 2em;
156 | background-color: #333;
157 | color: white;
158 | padding-bottom: 2em;
159 | }
160 |
161 | .center .dropdown {
162 | text-align: left;
163 | }
164 |
165 | .pagination a {
166 | padding: 0 12px;
167 | }
--------------------------------------------------------------------------------
/js/bwa.js:
--------------------------------------------------------------------------------
1 | var app = angular.module('bwaApp', []);
2 |
3 | app.directive('bwaProject', function() {
4 | return {
5 | restrict: 'E',
6 | templateUrl: 'bwa-project.html',
7 | scope: {
8 | lightbox: '=',
9 | project: '=',
10 | addTag: '='
11 | }
12 | }
13 | });
14 |
15 | app.controller('BWAController', function ($scope, $http, $filter) {
16 |
17 | $scope.sortables = [
18 | {
19 | label: 'Unsorted',
20 | val: 'none'
21 | },
22 | {
23 | label: 'Name',
24 | val: 'name'
25 | },
26 | {
27 | label: 'Description',
28 | val: 'desc'
29 | },
30 | {
31 | label: 'Submitter',
32 | val: 'submitter'
33 | }
34 | ];
35 | $scope.sortPrep = 'none';
36 |
37 | var lightbox = false;
38 | window.onpopstate = function (ev) {
39 | lightbox = ev.state;
40 | $scope.$apply();
41 | };
42 | window.onkeydown = function (ev) {
43 | if (ev.keyCode === 27 && lightbox) {
44 | $scope.lightbox(false);
45 | $scope.$apply();
46 | }
47 | }
48 | $scope.lightbox = function (arg) {
49 | if (typeof arg !== 'undefined') {
50 | if (arg !== false) {
51 | history.pushState(arg, null, 'project/' + arg.id);
52 | } else {
53 | history.pushState(false, null, '/');
54 | }
55 | lightbox = arg;
56 | }
57 | return lightbox;
58 | };
59 |
60 | $http.get('projects/projects.json').
61 | success(function (data, status, headers, config) {
62 |
63 | $scope.projects = data.projects;
64 |
65 | // find the featured project
66 | for (var i = $scope.projects.length - 1; i >= 0; i--) {
67 | if (data.projects[i].name === data.featured) {
68 | $scope.featured = data.projects[i];
69 | break;
70 | }
71 | }
72 |
73 | $scope.projects.sort(function () {
74 | return Math.random() - 0.5;
75 | });
76 |
77 | $scope.tags = [];
78 | $scope.activeTags = [];
79 |
80 | // add tags
81 | angular.forEach(data.projects, function (project) {
82 | project.id = project.name.replace(/ /g, '-');
83 | angular.forEach(project.tags, function (tag) {
84 |
85 | // ensure tags are unique
86 | if ($scope.tags.indexOf(tag) === -1) {
87 | $scope.tags.push(tag);
88 | }
89 | });
90 | });
91 |
92 | $scope.tags.sort();
93 | $scope.search();
94 |
95 | if (document.location.pathname.substr(0, 9) === '/project/') {
96 | var projectName = document.location.pathname.substr(9);
97 | data.projects.forEach(function (project) {
98 | if (project.id === projectName) {
99 | lightbox = project;
100 | }
101 | });
102 | }
103 |
104 | }).
105 | error(function (data, status, headers, config) {
106 | // TODO: display a nice error message?
107 | $scope.error = "Cannot get data from the server";
108 | });
109 |
110 | var num = 2;
111 | $scope.filteredProjects = [];
112 | $scope.groupedProjects = [];
113 |
114 | // search helpers
115 | var searchMatch = function (haystack, needle) {
116 | if (!needle) {
117 | return true;
118 | }
119 | return haystack.toLowerCase().indexOf(needle.toLowerCase()) !== -1;
120 | };
121 |
122 | var hasAllTags = function (haystack, needles) {
123 | var ret = true;
124 | angular.forEach(needles, function (needle) {
125 | if (haystack.indexOf(needle) === -1) {
126 | ret = false;
127 | }
128 | });
129 | return ret;
130 | };
131 |
132 | $scope.search = function () {
133 | $scope.filteredProjects = $filter('filter')($scope.projects, function (project) {
134 | return (searchMatch(project.desc, $scope.query) || searchMatch(project.name, $scope.query)) &&
135 | hasAllTags(project.tags, $scope.activeTags);
136 | });
137 |
138 | if ($scope.sortPrep !== 'none') {
139 | $scope.filteredProjects = $filter('orderBy')($scope.filteredProjects, $scope.sortPrep);
140 | }
141 |
142 | $scope.currentPage = 0;
143 | $scope.group();
144 | };
145 |
146 | // re-calculate groupedProjects in place
147 | $scope.group = function () {
148 |
149 | $scope.groupedProjects.length = Math.ceil($scope.filteredProjects.length / num);
150 |
151 | for (var i = 0; i < $scope.filteredProjects.length; i++) {
152 | if (i % num === 0) {
153 | $scope.groupedProjects[Math.floor(i / num)] = [ $scope.filteredProjects[i] ];
154 | } else {
155 | $scope.groupedProjects[Math.floor(i / num)].push($scope.filteredProjects[i]);
156 | }
157 | }
158 |
159 | if ($scope.filteredProjects.length % num !== 0) {
160 | $scope.groupedProjects[$scope.groupedProjects.length - 1].length = num - ($scope.filteredProjects.length % num);
161 | }
162 |
163 | $scope.groupToPages();
164 | };
165 |
166 | var itemsPerPage = 5;
167 | $scope.pagedProjects = [];
168 | $scope.currentPage = 0;
169 |
170 | // calc pages in place
171 | $scope.groupToPages = function () {
172 | $scope.pagedProjects = [];
173 |
174 | for (var i = 0; i < $scope.groupedProjects.length; i++) {
175 | if (i % itemsPerPage === 0) {
176 | $scope.pagedProjects[Math.floor(i / itemsPerPage)] = [ $scope.groupedProjects[i] ];
177 | } else {
178 | $scope.pagedProjects[Math.floor(i / itemsPerPage)].push($scope.groupedProjects[i]);
179 | }
180 | }
181 | };
182 |
183 | $scope.addTag = function (tagName) {
184 | tagName = tagName || this.tag;
185 |
186 | // only allow tags to be added uniquely
187 | if ($scope.activeTags.indexOf(tagName) !== -1) {
188 | return;
189 | }
190 |
191 | angular.forEach($scope.tags, function (tag, i) {
192 | if (i === 0 && tag === tagName) {
193 | $scope.activeTags.push($scope.tags.shift());
194 | } else if (tag === tagName) {
195 | $scope.tags.splice(i, 1);
196 | $scope.activeTags.push(tag);
197 | }
198 | });
199 |
200 | $scope.activeTags.sort();
201 | $scope.search();
202 | };
203 |
204 | // TODO: code duplicated here
205 | $scope.removeTag = function () {
206 | var tagName = this.tag;
207 |
208 | angular.forEach($scope.activeTags, function (tag, i) {
209 | if (i === 0 && tag === tagName) {
210 | $scope.tags.push($scope.activeTags.shift());
211 | } else if (tag === tagName) {
212 | $scope.activeTags.splice(i, 1);
213 | $scope.tags.push(tag);
214 | }
215 | });
216 |
217 | $scope.tags.sort();
218 | $scope.search();
219 | };
220 |
221 | // like python's range fn
222 | $scope.range = function (start, end) {
223 | var ret = [];
224 | if (!end) {
225 | end = start;
226 | start = 0;
227 | }
228 | for (var i = start; i < end; i++) {
229 | ret.push(i);
230 | }
231 | return ret;
232 | };
233 |
234 | $scope.prevPage = function () {
235 | if ($scope.currentPage > 0) {
236 | $scope.currentPage--;
237 | }
238 | };
239 |
240 | $scope.nextPage = function () {
241 | if ($scope.currentPage < $scope.pagedProjects.length - 1) {
242 | $scope.currentPage++;
243 | }
244 | };
245 |
246 | $scope.setPage = function () {
247 | $scope.currentPage = this.n;
248 | };
249 |
250 | });
251 |
--------------------------------------------------------------------------------
/web-server.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var sys = require('sys'),
4 | http = require('http'),
5 | fs = require('fs'),
6 | url = require('url'),
7 | events = require('events');
8 |
9 | var DEFAULT_PORT = 8000;
10 |
11 | function main(argv) {
12 | new HttpServer({
13 | 'GET': createServlet(StaticServlet),
14 | 'HEAD': createServlet(StaticServlet)
15 | }).start(Number(argv[2]) || DEFAULT_PORT);
16 | }
17 |
18 | function escapeHtml(value) {
19 | return value.toString().
20 | replace('<', '<').
21 | replace('>', '>').
22 | replace('"', '"');
23 | }
24 |
25 | function createServlet(Class) {
26 | var servlet = new Class();
27 | return servlet.handleRequest.bind(servlet);
28 | }
29 |
30 | /**
31 | * An Http server implementation that uses a map of methods to decide
32 | * action routing.
33 | *
34 | * @param {Object} Map of method => Handler function
35 | */
36 | function HttpServer(handlers) {
37 | this.handlers = handlers;
38 | this.server = http.createServer(this.handleRequest_.bind(this));
39 | }
40 |
41 | HttpServer.prototype.start = function(port) {
42 | this.port = port;
43 | this.server.listen(port);
44 | sys.puts('Http Server running at http://localhost:' + port + '/');
45 | };
46 |
47 | HttpServer.prototype.parseUrl_ = function(urlString) {
48 | var parsed = url.parse(urlString);
49 | parsed.pathname = url.resolve('/', parsed.pathname);
50 | return url.parse(url.format(parsed), true);
51 | };
52 |
53 | HttpServer.prototype.handleRequest_ = function(req, res) {
54 | var logEntry = req.method + ' ' + req.url;
55 | if (req.headers['user-agent']) {
56 | logEntry += ' ' + req.headers['user-agent'];
57 | }
58 | sys.puts(logEntry);
59 | req.url = this.parseUrl_(req.url);
60 | var handler = this.handlers[req.method];
61 | if (!handler) {
62 | res.writeHead(501);
63 | res.end();
64 | } else {
65 | handler.call(this, req, res);
66 | }
67 | };
68 |
69 | /**
70 | * Handles static content.
71 | */
72 | function StaticServlet() {}
73 |
74 | StaticServlet.MimeMap = {
75 | 'txt': 'text/plain',
76 | 'html': 'text/html',
77 | 'css': 'text/css',
78 | 'xml': 'application/xml',
79 | 'json': 'application/json',
80 | 'js': 'application/javascript',
81 | 'jpg': 'image/jpeg',
82 | 'jpeg': 'image/jpeg',
83 | 'gif': 'image/gif',
84 | 'png': 'image/png'
85 | };
86 |
87 | StaticServlet.prototype.handleRequest = function(req, res) {
88 | var self = this;
89 | var path = ('./' + req.url.pathname).replace('//','/').replace(/%(..)/, function(match, hex){
90 | return String.fromCharCode(parseInt(hex, 16));
91 | });
92 | var parts = path.split('/');
93 | if (parts[parts.length-1].charAt(0) === '.')
94 | return self.sendForbidden_(req, res, path);
95 | fs.stat(path, function(err, stat) {
96 | if (err)
97 | return self.sendMissing_(req, res, path);
98 | if (stat.isDirectory())
99 | return self.sendDirectory_(req, res, path);
100 | return self.sendFile_(req, res, path);
101 | });
102 | }
103 |
104 | StaticServlet.prototype.sendError_ = function(req, res, error) {
105 | res.writeHead(500, {
106 | 'Content-Type': 'text/html'
107 | });
108 | res.write('\n');
109 | res.write('Internal Server Error\n');
110 | res.write('Internal Server Error
');
111 | res.write('' + escapeHtml(sys.inspect(error)) + '
');
112 | sys.puts('500 Internal Server Error');
113 | sys.puts(sys.inspect(error));
114 | };
115 |
116 | StaticServlet.prototype.sendMissing_ = function(req, res, path) {
117 | path = path.substring(1);
118 | res.writeHead(404, {
119 | 'Content-Type': 'text/html'
120 | });
121 | res.write('\n');
122 | res.write('404 Not Found\n');
123 | res.write('Not Found
');
124 | res.write(
125 | 'The requested URL ' +
126 | escapeHtml(path) +
127 | ' was not found on this server.
'
128 | );
129 | res.end();
130 | sys.puts('404 Not Found: ' + path);
131 | };
132 |
133 | StaticServlet.prototype.sendForbidden_ = function(req, res, path) {
134 | path = path.substring(1);
135 | res.writeHead(403, {
136 | 'Content-Type': 'text/html'
137 | });
138 | res.write('\n');
139 | res.write('403 Forbidden\n');
140 | res.write('Forbidden
');
141 | res.write(
142 | 'You do not have permission to access ' +
143 | escapeHtml(path) + ' on this server.
'
144 | );
145 | res.end();
146 | sys.puts('403 Forbidden: ' + path);
147 | };
148 |
149 | StaticServlet.prototype.sendRedirect_ = function(req, res, redirectUrl) {
150 | res.writeHead(301, {
151 | 'Content-Type': 'text/html',
152 | 'Location': redirectUrl
153 | });
154 | res.write('\n');
155 | res.write('301 Moved Permanently\n');
156 | res.write('Moved Permanently
');
157 | res.write(
158 | 'The document has moved here.
'
161 | );
162 | res.end();
163 | sys.puts('301 Moved Permanently: ' + redirectUrl);
164 | };
165 |
166 | StaticServlet.prototype.sendFile_ = function(req, res, path) {
167 | var self = this;
168 | var file = fs.createReadStream(path);
169 | res.writeHead(200, {
170 | 'Content-Type': StaticServlet.
171 | MimeMap[path.split('.').pop()] || 'text/plain'
172 | });
173 | if (req.method === 'HEAD') {
174 | res.end();
175 | } else {
176 | file.on('data', res.write.bind(res));
177 | file.on('close', function() {
178 | res.end();
179 | });
180 | file.on('error', function(error) {
181 | self.sendError_(req, res, error);
182 | });
183 | }
184 | };
185 |
186 | StaticServlet.prototype.sendDirectory_ = function(req, res, path) {
187 | var self = this;
188 | if (path.match(/[^\/]$/)) {
189 | req.url.pathname += '/';
190 | var redirectUrl = url.format(url.parse(url.format(req.url)));
191 | return self.sendRedirect_(req, res, redirectUrl);
192 | }
193 | fs.readdir(path, function(err, files) {
194 | if (err)
195 | return self.sendError_(req, res, error);
196 |
197 | if (!files.length)
198 | return self.writeDirectoryIndex_(req, res, path, []);
199 |
200 | var remaining = files.length;
201 | files.forEach(function(fileName, index) {
202 | fs.stat(path + '/' + fileName, function(err, stat) {
203 | if (err)
204 | return self.sendError_(req, res, err);
205 | if (stat.isDirectory()) {
206 | files[index] = fileName + '/';
207 | }
208 | if (!(--remaining))
209 | return self.writeDirectoryIndex_(req, res, path, files);
210 | });
211 | });
212 | });
213 | };
214 |
215 | StaticServlet.prototype.writeDirectoryIndex_ = function(req, res, path, files) {
216 | path = path.substring(1);
217 | res.writeHead(200, {
218 | 'Content-Type': 'text/html'
219 | });
220 | if (req.method === 'HEAD') {
221 | res.end();
222 | return;
223 | }
224 | res.write('\n');
225 | res.write('' + escapeHtml(path) + '\n');
226 | res.write('\n');
229 | res.write('Directory: ' + escapeHtml(path) + '
');
230 | res.write('');
231 | files.forEach(function(fileName) {
232 | if (fileName.charAt(0) !== '.') {
233 | res.write('- ' +
235 | escapeHtml(fileName) + '
');
236 | }
237 | });
238 | res.write('
');
239 | res.end();
240 | };
241 |
242 | // Must be last,
243 | main(process.argv);
244 |
--------------------------------------------------------------------------------
/css/bootstrap-responsive.min.css:
--------------------------------------------------------------------------------
1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
2 | .clearfix:after{clear:both;}
3 | .hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
4 | .input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
5 | .hidden{display:none;visibility:hidden;}
6 | .visible-phone{display:none;}
7 | .visible-tablet{display:none;}
8 | .visible-desktop{display:block;}
9 | .hidden-phone{display:block;}
10 | .hidden-tablet{display:block;}
11 | .hidden-desktop{display:none;}
12 | @media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
13 |
--------------------------------------------------------------------------------
/css/font-awesome.css:
--------------------------------------------------------------------------------
1 | /* Font Awesome
2 | the iconic font designed for use with Twitter Bootstrap
3 | -------------------------------------------------------
4 | The full suite of pictographic icons, examples, and documentation
5 | can be found at: http://fortawesome.github.com/Font-Awesome/
6 |
7 | License
8 | -------------------------------------------------------
9 | The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
10 | http://creativecommons.org/licenses/by/3.0/ A mention of
11 | 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
12 | source code is considered acceptable attribution (most common on the web).
13 | If human readable source code is not available to the end user, a mention in
14 | an 'About' or 'Credits' screen is considered acceptable (most common in desktop
15 | or mobile software).
16 |
17 | Contact
18 | -------------------------------------------------------
19 | Email: dave@davegandy.com
20 | Twitter: http://twitter.com/fortaweso_me
21 | Work: http://lemonwi.se co-founder
22 |
23 | */
24 |
25 | @font-face {
26 | font-family: 'FontAwesome';
27 | src: url('../font/fontawesome-webfont.eot');
28 | src: url('../font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('../font/fontawesome-webfont.woff') format('woff'), url('../font/fontawesome-webfont.ttf') format('truetype'), url('../font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'), url('../font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
29 | font-weight: normal;
30 | font-style: normal;
31 | }
32 | /* sprites.less reset */
33 | [class^="icon-"], [class*=" icon-"] {
34 | display: inline;
35 | width: auto;
36 | height: auto;
37 | line-height: inherit;
38 | vertical-align: baseline;
39 | background-image: none;
40 | background-position: 0% 0%;
41 | background-repeat: repeat;
42 | }
43 | li[class^="icon-"], li[class*=" icon-"] {
44 | display: block;
45 | }
46 | /* Font Awesome styles
47 | ------------------------------------------------------- */
48 | [class^="icon-"]:before, [class*=" icon-"]:before {
49 | font-family: FontAwesome;
50 | font-weight: normal;
51 | font-style: normal;
52 | display: inline-block;
53 | text-decoration: inherit;
54 | }
55 | a [class^="icon-"], a [class*=" icon-"] {
56 | display: inline-block;
57 | text-decoration: inherit;
58 | }
59 | /* makes the font 33% larger relative to the icon container */
60 | .icon-large:before {
61 | vertical-align: top;
62 | font-size: 1.3333333333333333em;
63 | }
64 | .btn [class^="icon-"], .btn [class*=" icon-"] {
65 | /* keeps button heights with and without icons the same */
66 | line-height: .9em;
67 | }
68 | li [class^="icon-"], li [class*=" icon-"] {
69 | display: inline-block;
70 | width: 1.25em;
71 | text-align: center;
72 | }
73 | li .icon-large[class^="icon-"], li .icon-large[class*=" icon-"] {
74 | /* 1.5 increased font size for icon-large * 1.25 width */
75 | width: 1.875em;
76 | }
77 | li[class^="icon-"], li[class*=" icon-"] {
78 | margin-left: 0;
79 | list-style-type: none;
80 | }
81 | li[class^="icon-"]:before, li[class*=" icon-"]:before {
82 | text-indent: -2em;
83 | text-align: center;
84 | }
85 | li[class^="icon-"].icon-large:before, li[class*=" icon-"].icon-large:before {
86 | text-indent: -1.3333333333333333em;
87 | }
88 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
89 | readers do not read off random characters that represent icons */
90 | .icon-glass:before { content: "\f000"; }
91 | .icon-music:before { content: "\f001"; }
92 | .icon-search:before { content: "\f002"; }
93 | .icon-envelope:before { content: "\f003"; }
94 | .icon-heart:before { content: "\f004"; }
95 | .icon-star:before { content: "\f005"; }
96 | .icon-star-empty:before { content: "\f006"; }
97 | .icon-user:before { content: "\f007"; }
98 | .icon-film:before { content: "\f008"; }
99 | .icon-th-large:before { content: "\f009"; }
100 | .icon-th:before { content: "\f00a"; }
101 | .icon-th-list:before { content: "\f00b"; }
102 | .icon-ok:before { content: "\f00c"; }
103 | .icon-remove:before { content: "\f00d"; }
104 | .icon-zoom-in:before { content: "\f00e"; }
105 |
106 | .icon-zoom-out:before { content: "\f010"; }
107 | .icon-off:before { content: "\f011"; }
108 | .icon-signal:before { content: "\f012"; }
109 | .icon-cog:before { content: "\f013"; }
110 | .icon-trash:before { content: "\f014"; }
111 | .icon-home:before { content: "\f015"; }
112 | .icon-file:before { content: "\f016"; }
113 | .icon-time:before { content: "\f017"; }
114 | .icon-road:before { content: "\f018"; }
115 | .icon-download-alt:before { content: "\f019"; }
116 | .icon-download:before { content: "\f01a"; }
117 | .icon-upload:before { content: "\f01b"; }
118 | .icon-inbox:before { content: "\f01c"; }
119 | .icon-play-circle:before { content: "\f01d"; }
120 | .icon-repeat:before { content: "\f01e"; }
121 |
122 | /* \f020 is not a valid unicode character. all shifted one down */
123 | .icon-refresh:before { content: "\f021"; }
124 | .icon-list-alt:before { content: "\f022"; }
125 | .icon-lock:before { content: "\f023"; }
126 | .icon-flag:before { content: "\f024"; }
127 | .icon-headphones:before { content: "\f025"; }
128 | .icon-volume-off:before { content: "\f026"; }
129 | .icon-volume-down:before { content: "\f027"; }
130 | .icon-volume-up:before { content: "\f028"; }
131 | .icon-qrcode:before { content: "\f029"; }
132 | .icon-barcode:before { content: "\f02a"; }
133 | .icon-tag:before { content: "\f02b"; }
134 | .icon-tags:before { content: "\f02c"; }
135 | .icon-book:before { content: "\f02d"; }
136 | .icon-bookmark:before { content: "\f02e"; }
137 | .icon-print:before { content: "\f02f"; }
138 |
139 | .icon-camera:before { content: "\f030"; }
140 | .icon-font:before { content: "\f031"; }
141 | .icon-bold:before { content: "\f032"; }
142 | .icon-italic:before { content: "\f033"; }
143 | .icon-text-height:before { content: "\f034"; }
144 | .icon-text-width:before { content: "\f035"; }
145 | .icon-align-left:before { content: "\f036"; }
146 | .icon-align-center:before { content: "\f037"; }
147 | .icon-align-right:before { content: "\f038"; }
148 | .icon-align-justify:before { content: "\f039"; }
149 | .icon-list:before { content: "\f03a"; }
150 | .icon-indent-left:before { content: "\f03b"; }
151 | .icon-indent-right:before { content: "\f03c"; }
152 | .icon-facetime-video:before { content: "\f03d"; }
153 | .icon-picture:before { content: "\f03e"; }
154 |
155 | .icon-pencil:before { content: "\f040"; }
156 | .icon-map-marker:before { content: "\f041"; }
157 | .icon-adjust:before { content: "\f042"; }
158 | .icon-tint:before { content: "\f043"; }
159 | .icon-edit:before { content: "\f044"; }
160 | .icon-share:before { content: "\f045"; }
161 | .icon-check:before { content: "\f046"; }
162 | .icon-move:before { content: "\f047"; }
163 | .icon-step-backward:before { content: "\f048"; }
164 | .icon-fast-backward:before { content: "\f049"; }
165 | .icon-backward:before { content: "\f04a"; }
166 | .icon-play:before { content: "\f04b"; }
167 | .icon-pause:before { content: "\f04c"; }
168 | .icon-stop:before { content: "\f04d"; }
169 | .icon-forward:before { content: "\f04e"; }
170 |
171 | .icon-fast-forward:before { content: "\f050"; }
172 | .icon-step-forward:before { content: "\f051"; }
173 | .icon-eject:before { content: "\f052"; }
174 | .icon-chevron-left:before { content: "\f053"; }
175 | .icon-chevron-right:before { content: "\f054"; }
176 | .icon-plus-sign:before { content: "\f055"; }
177 | .icon-minus-sign:before { content: "\f056"; }
178 | .icon-remove-sign:before { content: "\f057"; }
179 | .icon-ok-sign:before { content: "\f058"; }
180 | .icon-question-sign:before { content: "\f059"; }
181 | .icon-info-sign:before { content: "\f05a"; }
182 | .icon-screenshot:before { content: "\f05b"; }
183 | .icon-remove-circle:before { content: "\f05c"; }
184 | .icon-ok-circle:before { content: "\f05d"; }
185 | .icon-ban-circle:before { content: "\f05e"; }
186 |
187 | .icon-arrow-left:before { content: "\f060"; }
188 | .icon-arrow-right:before { content: "\f061"; }
189 | .icon-arrow-up:before { content: "\f062"; }
190 | .icon-arrow-down:before { content: "\f063"; }
191 | .icon-share-alt:before { content: "\f064"; }
192 | .icon-resize-full:before { content: "\f065"; }
193 | .icon-resize-small:before { content: "\f066"; }
194 | .icon-plus:before { content: "\f067"; }
195 | .icon-minus:before { content: "\f068"; }
196 | .icon-asterisk:before { content: "\f069"; }
197 | .icon-exclamation-sign:before { content: "\f06a"; }
198 | .icon-gift:before { content: "\f06b"; }
199 | .icon-leaf:before { content: "\f06c"; }
200 | .icon-fire:before { content: "\f06d"; }
201 | .icon-eye-open:before { content: "\f06e"; }
202 |
203 | .icon-eye-close:before { content: "\f070"; }
204 | .icon-warning-sign:before { content: "\f071"; }
205 | .icon-plane:before { content: "\f072"; }
206 | .icon-calendar:before { content: "\f073"; }
207 | .icon-random:before { content: "\f074"; }
208 | .icon-comment:before { content: "\f075"; }
209 | .icon-magnet:before { content: "\f076"; }
210 | .icon-chevron-up:before { content: "\f077"; }
211 | .icon-chevron-down:before { content: "\f078"; }
212 | .icon-retweet:before { content: "\f079"; }
213 | .icon-shopping-cart:before { content: "\f07a"; }
214 | .icon-folder-close:before { content: "\f07b"; }
215 | .icon-folder-open:before { content: "\f07c"; }
216 | .icon-resize-vertical:before { content: "\f07d"; }
217 | .icon-resize-horizontal:before { content: "\f07e"; }
218 |
219 | .icon-bar-chart:before { content: "\f080"; }
220 | .icon-twitter-sign:before { content: "\f081"; }
221 | .icon-facebook-sign:before { content: "\f082"; }
222 | .icon-camera-retro:before { content: "\f083"; }
223 | .icon-key:before { content: "\f084"; }
224 | .icon-cogs:before { content: "\f085"; }
225 | .icon-comments:before { content: "\f086"; }
226 | .icon-thumbs-up:before { content: "\f087"; }
227 | .icon-thumbs-down:before { content: "\f088"; }
228 | .icon-star-half:before { content: "\f089"; }
229 | .icon-heart-empty:before { content: "\f08a"; }
230 | .icon-signout:before { content: "\f08b"; }
231 | .icon-linkedin-sign:before { content: "\f08c"; }
232 | .icon-pushpin:before { content: "\f08d"; }
233 | .icon-external-link:before { content: "\f08e"; }
234 |
235 | .icon-signin:before { content: "\f090"; }
236 | .icon-trophy:before { content: "\f091"; }
237 | .icon-github-sign:before { content: "\f092"; }
238 | .icon-upload-alt:before { content: "\f093"; }
239 | .icon-lemon:before { content: "\f094"; }
240 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
12 | Built with AngularJS
13 |
14 |
15 |
16 |
17 |
18 |
19 |
47 |
57 |
58 |
59 |
61 |
62 |
125 |
126 |
127 |
128 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 | ? Neat things built with
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | Here we feature good examples of Angular apps and experiments.
154 | Inspect, learn, and make your own!
155 |
156 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
205 |
206 |
207 |
222 |
223 |
224 |
225 |
226 |
237 |
238 |
239 |
243 |
244 |
245 |
246 |
247 |
{{lightbox().desc}}
248 |
249 | {{tag}}
250 |
251 |
252 |
257 |
258 |
259 |
260 |
261 |
262 |
--------------------------------------------------------------------------------
/css/bootstrap-responsive.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.0.2
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 | .clearfix {
11 | *zoom: 1;
12 | }
13 | .clearfix:before,
14 | .clearfix:after {
15 | display: table;
16 | content: "";
17 | }
18 | .clearfix:after {
19 | clear: both;
20 | }
21 | .hide-text {
22 | overflow: hidden;
23 | text-indent: 100%;
24 | white-space: nowrap;
25 | }
26 | .input-block-level {
27 | display: block;
28 | width: 100%;
29 | min-height: 28px;
30 | /* Make inputs at least the height of their button counterpart */
31 |
32 | /* Makes inputs behave like true block-level elements */
33 |
34 | -webkit-box-sizing: border-box;
35 | -moz-box-sizing: border-box;
36 | -ms-box-sizing: border-box;
37 | box-sizing: border-box;
38 | }
39 | .hidden {
40 | display: none;
41 | visibility: hidden;
42 | }
43 | .visible-phone {
44 | display: none;
45 | }
46 | .visible-tablet {
47 | display: none;
48 | }
49 | .visible-desktop {
50 | display: block;
51 | }
52 | .hidden-phone {
53 | display: block;
54 | }
55 | .hidden-tablet {
56 | display: block;
57 | }
58 | .hidden-desktop {
59 | display: none;
60 | }
61 | @media (max-width: 767px) {
62 | .visible-phone {
63 | display: block;
64 | }
65 | .hidden-phone {
66 | display: none;
67 | }
68 | .hidden-desktop {
69 | display: block;
70 | }
71 | .visible-desktop {
72 | display: none;
73 | }
74 | }
75 | @media (min-width: 768px) and (max-width: 979px) {
76 | .visible-tablet {
77 | display: block;
78 | }
79 | .hidden-tablet {
80 | display: none;
81 | }
82 | .hidden-desktop {
83 | display: block;
84 | }
85 | .visible-desktop {
86 | display: none;
87 | }
88 | }
89 | @media (max-width: 480px) {
90 | .nav-collapse {
91 | -webkit-transform: translate3d(0, 0, 0);
92 | }
93 | .page-header h1 small {
94 | display: block;
95 | line-height: 18px;
96 | }
97 | input[type="checkbox"],
98 | input[type="radio"] {
99 | border: 1px solid #ccc;
100 | }
101 | .form-horizontal .control-group > label {
102 | float: none;
103 | width: auto;
104 | padding-top: 0;
105 | text-align: left;
106 | }
107 | .form-horizontal .controls {
108 | margin-left: 0;
109 | }
110 | .form-horizontal .control-list {
111 | padding-top: 0;
112 | }
113 | .form-horizontal .form-actions {
114 | padding-left: 10px;
115 | padding-right: 10px;
116 | }
117 | .modal {
118 | position: absolute;
119 | top: 10px;
120 | left: 10px;
121 | right: 10px;
122 | width: auto;
123 | margin: 0;
124 | }
125 | .modal.fade.in {
126 | top: auto;
127 | }
128 | .modal-header .close {
129 | padding: 10px;
130 | margin: -10px;
131 | }
132 | .carousel-caption {
133 | position: static;
134 | }
135 | }
136 | @media (max-width: 767px) {
137 | body {
138 | padding-left: 20px;
139 | padding-right: 20px;
140 | }
141 | .navbar-fixed-top {
142 | margin-left: -20px;
143 | margin-right: -20px;
144 | }
145 | .container {
146 | width: auto;
147 | }
148 | .row-fluid {
149 | width: 100%;
150 | }
151 | .row {
152 | margin-left: 0;
153 | }
154 | .row > [class*="span"],
155 | .row-fluid > [class*="span"] {
156 | float: none;
157 | display: block;
158 | width: auto;
159 | margin: 0;
160 | }
161 | .thumbnails [class*="span"] {
162 | width: auto;
163 | }
164 | input[class*="span"],
165 | select[class*="span"],
166 | textarea[class*="span"],
167 | .uneditable-input {
168 | display: block;
169 | width: 100%;
170 | min-height: 28px;
171 | /* Make inputs at least the height of their button counterpart */
172 |
173 | /* Makes inputs behave like true block-level elements */
174 |
175 | -webkit-box-sizing: border-box;
176 | -moz-box-sizing: border-box;
177 | -ms-box-sizing: border-box;
178 | box-sizing: border-box;
179 | }
180 | .input-prepend input[class*="span"],
181 | .input-append input[class*="span"] {
182 | width: auto;
183 | }
184 | }
185 | @media (min-width: 768px) and (max-width: 979px) {
186 | .row {
187 | margin-left: -20px;
188 | *zoom: 1;
189 | }
190 | .row:before,
191 | .row:after {
192 | display: table;
193 | content: "";
194 | }
195 | .row:after {
196 | clear: both;
197 | }
198 | [class*="span"] {
199 | float: left;
200 | margin-left: 20px;
201 | }
202 | .container,
203 | .navbar-fixed-top .container,
204 | .navbar-fixed-bottom .container {
205 | width: 724px;
206 | }
207 | .span12 {
208 | width: 724px;
209 | }
210 | .span11 {
211 | width: 662px;
212 | }
213 | .span10 {
214 | width: 600px;
215 | }
216 | .span9 {
217 | width: 538px;
218 | }
219 | .span8 {
220 | width: 476px;
221 | }
222 | .span7 {
223 | width: 414px;
224 | }
225 | .span6 {
226 | width: 352px;
227 | }
228 | .span5 {
229 | width: 290px;
230 | }
231 | .span4 {
232 | width: 228px;
233 | }
234 | .span3 {
235 | width: 166px;
236 | }
237 | .span2 {
238 | width: 104px;
239 | }
240 | .span1 {
241 | width: 42px;
242 | }
243 | .offset12 {
244 | margin-left: 764px;
245 | }
246 | .offset11 {
247 | margin-left: 702px;
248 | }
249 | .offset10 {
250 | margin-left: 640px;
251 | }
252 | .offset9 {
253 | margin-left: 578px;
254 | }
255 | .offset8 {
256 | margin-left: 516px;
257 | }
258 | .offset7 {
259 | margin-left: 454px;
260 | }
261 | .offset6 {
262 | margin-left: 392px;
263 | }
264 | .offset5 {
265 | margin-left: 330px;
266 | }
267 | .offset4 {
268 | margin-left: 268px;
269 | }
270 | .offset3 {
271 | margin-left: 206px;
272 | }
273 | .offset2 {
274 | margin-left: 144px;
275 | }
276 | .offset1 {
277 | margin-left: 82px;
278 | }
279 | .row-fluid {
280 | width: 100%;
281 | *zoom: 1;
282 | }
283 | .row-fluid:before,
284 | .row-fluid:after {
285 | display: table;
286 | content: "";
287 | }
288 | .row-fluid:after {
289 | clear: both;
290 | }
291 | .row-fluid > [class*="span"] {
292 | float: left;
293 | margin-left: 2.762430939%;
294 | }
295 | .row-fluid > [class*="span"]:first-child {
296 | margin-left: 0;
297 | }
298 | .row-fluid > .span12 {
299 | width: 99.999999993%;
300 | }
301 | .row-fluid > .span11 {
302 | width: 91.436464082%;
303 | }
304 | .row-fluid > .span10 {
305 | width: 82.87292817100001%;
306 | }
307 | .row-fluid > .span9 {
308 | width: 74.30939226%;
309 | }
310 | .row-fluid > .span8 {
311 | width: 65.74585634900001%;
312 | }
313 | .row-fluid > .span7 {
314 | width: 57.182320438000005%;
315 | }
316 | .row-fluid > .span6 {
317 | width: 48.618784527%;
318 | }
319 | .row-fluid > .span5 {
320 | width: 40.055248616%;
321 | }
322 | .row-fluid > .span4 {
323 | width: 31.491712705%;
324 | }
325 | .row-fluid > .span3 {
326 | width: 22.928176794%;
327 | }
328 | .row-fluid > .span2 {
329 | width: 14.364640883%;
330 | }
331 | .row-fluid > .span1 {
332 | width: 5.801104972%;
333 | }
334 | input,
335 | textarea,
336 | .uneditable-input {
337 | margin-left: 0;
338 | }
339 | input.span12, textarea.span12, .uneditable-input.span12 {
340 | width: 714px;
341 | }
342 | input.span11, textarea.span11, .uneditable-input.span11 {
343 | width: 652px;
344 | }
345 | input.span10, textarea.span10, .uneditable-input.span10 {
346 | width: 590px;
347 | }
348 | input.span9, textarea.span9, .uneditable-input.span9 {
349 | width: 528px;
350 | }
351 | input.span8, textarea.span8, .uneditable-input.span8 {
352 | width: 466px;
353 | }
354 | input.span7, textarea.span7, .uneditable-input.span7 {
355 | width: 404px;
356 | }
357 | input.span6, textarea.span6, .uneditable-input.span6 {
358 | width: 342px;
359 | }
360 | input.span5, textarea.span5, .uneditable-input.span5 {
361 | width: 280px;
362 | }
363 | input.span4, textarea.span4, .uneditable-input.span4 {
364 | width: 218px;
365 | }
366 | input.span3, textarea.span3, .uneditable-input.span3 {
367 | width: 156px;
368 | }
369 | input.span2, textarea.span2, .uneditable-input.span2 {
370 | width: 94px;
371 | }
372 | input.span1, textarea.span1, .uneditable-input.span1 {
373 | width: 32px;
374 | }
375 | }
376 | @media (max-width: 979px) {
377 | body {
378 | padding-top: 0;
379 | }
380 | .navbar-fixed-top {
381 | position: static;
382 | margin-bottom: 18px;
383 | }
384 | .navbar-fixed-top .navbar-inner {
385 | padding: 5px;
386 | }
387 | .navbar .container {
388 | width: auto;
389 | padding: 0;
390 | }
391 | .navbar .brand {
392 | padding-left: 10px;
393 | padding-right: 10px;
394 | margin: 0 0 0 -5px;
395 | }
396 | .navbar .nav-collapse {
397 | clear: left;
398 | }
399 | .navbar .nav {
400 | float: none;
401 | margin: 0 0 9px;
402 | }
403 | .navbar .nav > li {
404 | float: none;
405 | }
406 | .navbar .nav > li > a {
407 | margin-bottom: 2px;
408 | }
409 | .navbar .nav > .divider-vertical {
410 | display: none;
411 | }
412 | .navbar .nav .nav-header {
413 | color: #999999;
414 | text-shadow: none;
415 | }
416 | .navbar .nav > li > a,
417 | .navbar .dropdown-menu a {
418 | padding: 6px 15px;
419 | font-weight: bold;
420 | color: #999999;
421 | -webkit-border-radius: 3px;
422 | -moz-border-radius: 3px;
423 | border-radius: 3px;
424 | }
425 | .navbar .dropdown-menu li + li a {
426 | margin-bottom: 2px;
427 | }
428 | .navbar .nav > li > a:hover,
429 | .navbar .dropdown-menu a:hover {
430 | background-color: #222222;
431 | }
432 | .navbar .dropdown-menu {
433 | position: static;
434 | top: auto;
435 | left: auto;
436 | float: none;
437 | display: block;
438 | max-width: none;
439 | margin: 0 15px;
440 | padding: 0;
441 | background-color: transparent;
442 | border: none;
443 | -webkit-border-radius: 0;
444 | -moz-border-radius: 0;
445 | border-radius: 0;
446 | -webkit-box-shadow: none;
447 | -moz-box-shadow: none;
448 | box-shadow: none;
449 | }
450 | .navbar .dropdown-menu:before,
451 | .navbar .dropdown-menu:after {
452 | display: none;
453 | }
454 | .navbar .dropdown-menu .divider {
455 | display: none;
456 | }
457 | .navbar-form,
458 | .navbar-search {
459 | float: none;
460 | padding: 9px 15px;
461 | margin: 9px 0;
462 | border-top: 1px solid #222222;
463 | border-bottom: 1px solid #222222;
464 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
465 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
466 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
467 | }
468 | .navbar .nav.pull-right {
469 | float: none;
470 | margin-left: 0;
471 | }
472 | .navbar-static .navbar-inner {
473 | padding-left: 10px;
474 | padding-right: 10px;
475 | }
476 | .btn-navbar {
477 | display: block;
478 | }
479 | .nav-collapse {
480 | overflow: hidden;
481 | height: 0;
482 | }
483 | }
484 | @media (min-width: 980px) {
485 | .nav-collapse.collapse {
486 | height: auto !important;
487 | overflow: visible !important;
488 | }
489 | }
490 | @media (min-width: 1200px) {
491 | .row {
492 | margin-left: -30px;
493 | *zoom: 1;
494 | }
495 | .row:before,
496 | .row:after {
497 | display: table;
498 | content: "";
499 | }
500 | .row:after {
501 | clear: both;
502 | }
503 | [class*="span"] {
504 | float: left;
505 | margin-left: 30px;
506 | }
507 | .container,
508 | .navbar-fixed-top .container,
509 | .navbar-fixed-bottom .container {
510 | width: 1170px;
511 | }
512 | .span12 {
513 | width: 1170px;
514 | }
515 | .span11 {
516 | width: 1070px;
517 | }
518 | .span10 {
519 | width: 970px;
520 | }
521 | .span9 {
522 | width: 870px;
523 | }
524 | .span8 {
525 | width: 770px;
526 | }
527 | .span7 {
528 | width: 670px;
529 | }
530 | .span6 {
531 | width: 570px;
532 | }
533 | .span5 {
534 | width: 470px;
535 | }
536 | .span4 {
537 | width: 370px;
538 | }
539 | .span3 {
540 | width: 270px;
541 | }
542 | .span2 {
543 | width: 170px;
544 | }
545 | .span1 {
546 | width: 70px;
547 | }
548 | .offset12 {
549 | margin-left: 1230px;
550 | }
551 | .offset11 {
552 | margin-left: 1130px;
553 | }
554 | .offset10 {
555 | margin-left: 1030px;
556 | }
557 | .offset9 {
558 | margin-left: 930px;
559 | }
560 | .offset8 {
561 | margin-left: 830px;
562 | }
563 | .offset7 {
564 | margin-left: 730px;
565 | }
566 | .offset6 {
567 | margin-left: 630px;
568 | }
569 | .offset5 {
570 | margin-left: 530px;
571 | }
572 | .offset4 {
573 | margin-left: 430px;
574 | }
575 | .offset3 {
576 | margin-left: 330px;
577 | }
578 | .offset2 {
579 | margin-left: 230px;
580 | }
581 | .offset1 {
582 | margin-left: 130px;
583 | }
584 | .row-fluid {
585 | width: 100%;
586 | *zoom: 1;
587 | }
588 | .row-fluid:before,
589 | .row-fluid:after {
590 | display: table;
591 | content: "";
592 | }
593 | .row-fluid:after {
594 | clear: both;
595 | }
596 | .row-fluid > [class*="span"] {
597 | float: left;
598 | margin-left: 2.564102564%;
599 | }
600 | .row-fluid > [class*="span"]:first-child {
601 | margin-left: 0;
602 | }
603 | .row-fluid > .span12 {
604 | width: 100%;
605 | }
606 | .row-fluid > .span11 {
607 | width: 91.45299145300001%;
608 | }
609 | .row-fluid > .span10 {
610 | width: 82.905982906%;
611 | }
612 | .row-fluid > .span9 {
613 | width: 74.358974359%;
614 | }
615 | .row-fluid > .span8 {
616 | width: 65.81196581200001%;
617 | }
618 | .row-fluid > .span7 {
619 | width: 57.264957265%;
620 | }
621 | .row-fluid > .span6 {
622 | width: 48.717948718%;
623 | }
624 | .row-fluid > .span5 {
625 | width: 40.170940171000005%;
626 | }
627 | .row-fluid > .span4 {
628 | width: 31.623931624%;
629 | }
630 | .row-fluid > .span3 {
631 | width: 23.076923077%;
632 | }
633 | .row-fluid > .span2 {
634 | width: 14.529914530000001%;
635 | }
636 | .row-fluid > .span1 {
637 | width: 5.982905983%;
638 | }
639 | input,
640 | textarea,
641 | .uneditable-input {
642 | margin-left: 0;
643 | }
644 | input.span12, textarea.span12, .uneditable-input.span12 {
645 | width: 1160px;
646 | }
647 | input.span11, textarea.span11, .uneditable-input.span11 {
648 | width: 1060px;
649 | }
650 | input.span10, textarea.span10, .uneditable-input.span10 {
651 | width: 960px;
652 | }
653 | input.span9, textarea.span9, .uneditable-input.span9 {
654 | width: 860px;
655 | }
656 | input.span8, textarea.span8, .uneditable-input.span8 {
657 | width: 760px;
658 | }
659 | input.span7, textarea.span7, .uneditable-input.span7 {
660 | width: 660px;
661 | }
662 | input.span6, textarea.span6, .uneditable-input.span6 {
663 | width: 560px;
664 | }
665 | input.span5, textarea.span5, .uneditable-input.span5 {
666 | width: 460px;
667 | }
668 | input.span4, textarea.span4, .uneditable-input.span4 {
669 | width: 360px;
670 | }
671 | input.span3, textarea.span3, .uneditable-input.span3 {
672 | width: 260px;
673 | }
674 | input.span2, textarea.span2, .uneditable-input.span2 {
675 | width: 160px;
676 | }
677 | input.span1, textarea.span1, .uneditable-input.span1 {
678 | width: 60px;
679 | }
680 | .thumbnails {
681 | margin-left: -30px;
682 | }
683 | .thumbnails > li {
684 | margin-left: 30px;
685 | }
686 | }
687 |
--------------------------------------------------------------------------------
/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Bootstrap.js by @fat & @mdo
3 | * Copyright 2012 Twitter, Inc.
4 | * http://www.apache.org/licenses/LICENSE-2.0.txt
5 | */
6 | !function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger("close").removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;return!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.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")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=(a||"").toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:''}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:''})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.$element.change(),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return""+b+""})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},keypress:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'',item:''},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap.js:
--------------------------------------------------------------------------------
1 | /* ===================================================
2 | * bootstrap-transition.js v2.0.2
3 | * http://twitter.github.com/bootstrap/javascript.html#transitions
4 | * ===================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 | !function( $ ) {
21 |
22 | $(function () {
23 |
24 | "use strict"
25 |
26 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
27 | * ======================================================= */
28 |
29 | $.support.transition = (function () {
30 | var thisBody = document.body || document.documentElement
31 | , thisStyle = thisBody.style
32 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
33 |
34 | return support && {
35 | end: (function () {
36 | var transitionEnd = "TransitionEnd"
37 | if ( $.browser.webkit ) {
38 | transitionEnd = "webkitTransitionEnd"
39 | } else if ( $.browser.mozilla ) {
40 | transitionEnd = "transitionend"
41 | } else if ( $.browser.opera ) {
42 | transitionEnd = "oTransitionEnd"
43 | }
44 | return transitionEnd
45 | }())
46 | }
47 | })()
48 |
49 | })
50 |
51 | }( window.jQuery );/* ==========================================================
52 | * bootstrap-alert.js v2.0.2
53 | * http://twitter.github.com/bootstrap/javascript.html#alerts
54 | * ==========================================================
55 | * Copyright 2012 Twitter, Inc.
56 | *
57 | * Licensed under the Apache License, Version 2.0 (the "License");
58 | * you may not use this file except in compliance with the License.
59 | * You may obtain a copy of the License at
60 | *
61 | * http://www.apache.org/licenses/LICENSE-2.0
62 | *
63 | * Unless required by applicable law or agreed to in writing, software
64 | * distributed under the License is distributed on an "AS IS" BASIS,
65 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
66 | * See the License for the specific language governing permissions and
67 | * limitations under the License.
68 | * ========================================================== */
69 |
70 |
71 | !function( $ ){
72 |
73 | "use strict"
74 |
75 | /* ALERT CLASS DEFINITION
76 | * ====================== */
77 |
78 | var dismiss = '[data-dismiss="alert"]'
79 | , Alert = function ( el ) {
80 | $(el).on('click', dismiss, this.close)
81 | }
82 |
83 | Alert.prototype = {
84 |
85 | constructor: Alert
86 |
87 | , close: function ( e ) {
88 | var $this = $(this)
89 | , selector = $this.attr('data-target')
90 | , $parent
91 |
92 | if (!selector) {
93 | selector = $this.attr('href')
94 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
95 | }
96 |
97 | $parent = $(selector)
98 | $parent.trigger('close')
99 |
100 | e && e.preventDefault()
101 |
102 | $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
103 |
104 | $parent
105 | .trigger('close')
106 | .removeClass('in')
107 |
108 | function removeElement() {
109 | $parent
110 | .trigger('closed')
111 | .remove()
112 | }
113 |
114 | $.support.transition && $parent.hasClass('fade') ?
115 | $parent.on($.support.transition.end, removeElement) :
116 | removeElement()
117 | }
118 |
119 | }
120 |
121 |
122 | /* ALERT PLUGIN DEFINITION
123 | * ======================= */
124 |
125 | $.fn.alert = function ( option ) {
126 | return this.each(function () {
127 | var $this = $(this)
128 | , data = $this.data('alert')
129 | if (!data) $this.data('alert', (data = new Alert(this)))
130 | if (typeof option == 'string') data[option].call($this)
131 | })
132 | }
133 |
134 | $.fn.alert.Constructor = Alert
135 |
136 |
137 | /* ALERT DATA-API
138 | * ============== */
139 |
140 | $(function () {
141 | $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
142 | })
143 |
144 | }( window.jQuery );/* ============================================================
145 | * bootstrap-button.js v2.0.2
146 | * http://twitter.github.com/bootstrap/javascript.html#buttons
147 | * ============================================================
148 | * Copyright 2012 Twitter, Inc.
149 | *
150 | * Licensed under the Apache License, Version 2.0 (the "License");
151 | * you may not use this file except in compliance with the License.
152 | * You may obtain a copy of the License at
153 | *
154 | * http://www.apache.org/licenses/LICENSE-2.0
155 | *
156 | * Unless required by applicable law or agreed to in writing, software
157 | * distributed under the License is distributed on an "AS IS" BASIS,
158 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159 | * See the License for the specific language governing permissions and
160 | * limitations under the License.
161 | * ============================================================ */
162 |
163 | !function( $ ){
164 |
165 | "use strict"
166 |
167 | /* BUTTON PUBLIC CLASS DEFINITION
168 | * ============================== */
169 |
170 | var Button = function ( element, options ) {
171 | this.$element = $(element)
172 | this.options = $.extend({}, $.fn.button.defaults, options)
173 | }
174 |
175 | Button.prototype = {
176 |
177 | constructor: Button
178 |
179 | , setState: function ( state ) {
180 | var d = 'disabled'
181 | , $el = this.$element
182 | , data = $el.data()
183 | , val = $el.is('input') ? 'val' : 'html'
184 |
185 | state = state + 'Text'
186 | data.resetText || $el.data('resetText', $el[val]())
187 |
188 | $el[val](data[state] || this.options[state])
189 |
190 | // push to event loop to allow forms to submit
191 | setTimeout(function () {
192 | state == 'loadingText' ?
193 | $el.addClass(d).attr(d, d) :
194 | $el.removeClass(d).removeAttr(d)
195 | }, 0)
196 | }
197 |
198 | , toggle: function () {
199 | var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
200 |
201 | $parent && $parent
202 | .find('.active')
203 | .removeClass('active')
204 |
205 | this.$element.toggleClass('active')
206 | }
207 |
208 | }
209 |
210 |
211 | /* BUTTON PLUGIN DEFINITION
212 | * ======================== */
213 |
214 | $.fn.button = function ( option ) {
215 | return this.each(function () {
216 | var $this = $(this)
217 | , data = $this.data('button')
218 | , options = typeof option == 'object' && option
219 | if (!data) $this.data('button', (data = new Button(this, options)))
220 | if (option == 'toggle') data.toggle()
221 | else if (option) data.setState(option)
222 | })
223 | }
224 |
225 | $.fn.button.defaults = {
226 | loadingText: 'loading...'
227 | }
228 |
229 | $.fn.button.Constructor = Button
230 |
231 |
232 | /* BUTTON DATA-API
233 | * =============== */
234 |
235 | $(function () {
236 | $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
237 | var $btn = $(e.target)
238 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
239 | $btn.button('toggle')
240 | })
241 | })
242 |
243 | }( window.jQuery );/* ==========================================================
244 | * bootstrap-carousel.js v2.0.2
245 | * http://twitter.github.com/bootstrap/javascript.html#carousel
246 | * ==========================================================
247 | * Copyright 2012 Twitter, Inc.
248 | *
249 | * Licensed under the Apache License, Version 2.0 (the "License");
250 | * you may not use this file except in compliance with the License.
251 | * You may obtain a copy of the License at
252 | *
253 | * http://www.apache.org/licenses/LICENSE-2.0
254 | *
255 | * Unless required by applicable law or agreed to in writing, software
256 | * distributed under the License is distributed on an "AS IS" BASIS,
257 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
258 | * See the License for the specific language governing permissions and
259 | * limitations under the License.
260 | * ========================================================== */
261 |
262 |
263 | !function( $ ){
264 |
265 | "use strict"
266 |
267 | /* CAROUSEL CLASS DEFINITION
268 | * ========================= */
269 |
270 | var Carousel = function (element, options) {
271 | this.$element = $(element)
272 | this.options = $.extend({}, $.fn.carousel.defaults, options)
273 | this.options.slide && this.slide(this.options.slide)
274 | this.options.pause == 'hover' && this.$element
275 | .on('mouseenter', $.proxy(this.pause, this))
276 | .on('mouseleave', $.proxy(this.cycle, this))
277 | }
278 |
279 | Carousel.prototype = {
280 |
281 | cycle: function () {
282 | this.interval = setInterval($.proxy(this.next, this), this.options.interval)
283 | return this
284 | }
285 |
286 | , to: function (pos) {
287 | var $active = this.$element.find('.active')
288 | , children = $active.parent().children()
289 | , activePos = children.index($active)
290 | , that = this
291 |
292 | if (pos > (children.length - 1) || pos < 0) return
293 |
294 | if (this.sliding) {
295 | return this.$element.one('slid', function () {
296 | that.to(pos)
297 | })
298 | }
299 |
300 | if (activePos == pos) {
301 | return this.pause().cycle()
302 | }
303 |
304 | return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
305 | }
306 |
307 | , pause: function () {
308 | clearInterval(this.interval)
309 | this.interval = null
310 | return this
311 | }
312 |
313 | , next: function () {
314 | if (this.sliding) return
315 | return this.slide('next')
316 | }
317 |
318 | , prev: function () {
319 | if (this.sliding) return
320 | return this.slide('prev')
321 | }
322 |
323 | , slide: function (type, next) {
324 | var $active = this.$element.find('.active')
325 | , $next = next || $active[type]()
326 | , isCycling = this.interval
327 | , direction = type == 'next' ? 'left' : 'right'
328 | , fallback = type == 'next' ? 'first' : 'last'
329 | , that = this
330 |
331 | this.sliding = true
332 |
333 | isCycling && this.pause()
334 |
335 | $next = $next.length ? $next : this.$element.find('.item')[fallback]()
336 |
337 | if ($next.hasClass('active')) return
338 |
339 | if (!$.support.transition && this.$element.hasClass('slide')) {
340 | this.$element.trigger('slide')
341 | $active.removeClass('active')
342 | $next.addClass('active')
343 | this.sliding = false
344 | this.$element.trigger('slid')
345 | } else {
346 | $next.addClass(type)
347 | $next[0].offsetWidth // force reflow
348 | $active.addClass(direction)
349 | $next.addClass(direction)
350 | this.$element.trigger('slide')
351 | this.$element.one($.support.transition.end, function () {
352 | $next.removeClass([type, direction].join(' ')).addClass('active')
353 | $active.removeClass(['active', direction].join(' '))
354 | that.sliding = false
355 | setTimeout(function () { that.$element.trigger('slid') }, 0)
356 | })
357 | }
358 |
359 | isCycling && this.cycle()
360 |
361 | return this
362 | }
363 |
364 | }
365 |
366 |
367 | /* CAROUSEL PLUGIN DEFINITION
368 | * ========================== */
369 |
370 | $.fn.carousel = function ( option ) {
371 | return this.each(function () {
372 | var $this = $(this)
373 | , data = $this.data('carousel')
374 | , options = typeof option == 'object' && option
375 | if (!data) $this.data('carousel', (data = new Carousel(this, options)))
376 | if (typeof option == 'number') data.to(option)
377 | else if (typeof option == 'string' || (option = options.slide)) data[option]()
378 | else data.cycle()
379 | })
380 | }
381 |
382 | $.fn.carousel.defaults = {
383 | interval: 5000
384 | , pause: 'hover'
385 | }
386 |
387 | $.fn.carousel.Constructor = Carousel
388 |
389 |
390 | /* CAROUSEL DATA-API
391 | * ================= */
392 |
393 | $(function () {
394 | $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
395 | var $this = $(this), href
396 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
397 | , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
398 | $target.carousel(options)
399 | e.preventDefault()
400 | })
401 | })
402 |
403 | }( window.jQuery );/* =============================================================
404 | * bootstrap-collapse.js v2.0.2
405 | * http://twitter.github.com/bootstrap/javascript.html#collapse
406 | * =============================================================
407 | * Copyright 2012 Twitter, Inc.
408 | *
409 | * Licensed under the Apache License, Version 2.0 (the "License");
410 | * you may not use this file except in compliance with the License.
411 | * You may obtain a copy of the License at
412 | *
413 | * http://www.apache.org/licenses/LICENSE-2.0
414 | *
415 | * Unless required by applicable law or agreed to in writing, software
416 | * distributed under the License is distributed on an "AS IS" BASIS,
417 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
418 | * See the License for the specific language governing permissions and
419 | * limitations under the License.
420 | * ============================================================ */
421 |
422 | !function( $ ){
423 |
424 | "use strict"
425 |
426 | var Collapse = function ( element, options ) {
427 | this.$element = $(element)
428 | this.options = $.extend({}, $.fn.collapse.defaults, options)
429 |
430 | if (this.options["parent"]) {
431 | this.$parent = $(this.options["parent"])
432 | }
433 |
434 | this.options.toggle && this.toggle()
435 | }
436 |
437 | Collapse.prototype = {
438 |
439 | constructor: Collapse
440 |
441 | , dimension: function () {
442 | var hasWidth = this.$element.hasClass('width')
443 | return hasWidth ? 'width' : 'height'
444 | }
445 |
446 | , show: function () {
447 | var dimension = this.dimension()
448 | , scroll = $.camelCase(['scroll', dimension].join('-'))
449 | , actives = this.$parent && this.$parent.find('.in')
450 | , hasData
451 |
452 | if (actives && actives.length) {
453 | hasData = actives.data('collapse')
454 | actives.collapse('hide')
455 | hasData || actives.data('collapse', null)
456 | }
457 |
458 | this.$element[dimension](0)
459 | this.transition('addClass', 'show', 'shown')
460 | this.$element[dimension](this.$element[0][scroll])
461 |
462 | }
463 |
464 | , hide: function () {
465 | var dimension = this.dimension()
466 | this.reset(this.$element[dimension]())
467 | this.transition('removeClass', 'hide', 'hidden')
468 | this.$element[dimension](0)
469 | }
470 |
471 | , reset: function ( size ) {
472 | var dimension = this.dimension()
473 |
474 | this.$element
475 | .removeClass('collapse')
476 | [dimension](size || 'auto')
477 | [0].offsetWidth
478 |
479 | this.$element[size ? 'addClass' : 'removeClass']('collapse')
480 |
481 | return this
482 | }
483 |
484 | , transition: function ( method, startEvent, completeEvent ) {
485 | var that = this
486 | , complete = function () {
487 | if (startEvent == 'show') that.reset()
488 | that.$element.trigger(completeEvent)
489 | }
490 |
491 | this.$element
492 | .trigger(startEvent)
493 | [method]('in')
494 |
495 | $.support.transition && this.$element.hasClass('collapse') ?
496 | this.$element.one($.support.transition.end, complete) :
497 | complete()
498 | }
499 |
500 | , toggle: function () {
501 | this[this.$element.hasClass('in') ? 'hide' : 'show']()
502 | }
503 |
504 | }
505 |
506 | /* COLLAPSIBLE PLUGIN DEFINITION
507 | * ============================== */
508 |
509 | $.fn.collapse = function ( option ) {
510 | return this.each(function () {
511 | var $this = $(this)
512 | , data = $this.data('collapse')
513 | , options = typeof option == 'object' && option
514 | if (!data) $this.data('collapse', (data = new Collapse(this, options)))
515 | if (typeof option == 'string') data[option]()
516 | })
517 | }
518 |
519 | $.fn.collapse.defaults = {
520 | toggle: true
521 | }
522 |
523 | $.fn.collapse.Constructor = Collapse
524 |
525 |
526 | /* COLLAPSIBLE DATA-API
527 | * ==================== */
528 |
529 | $(function () {
530 | $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
531 | var $this = $(this), href
532 | , target = $this.attr('data-target')
533 | || e.preventDefault()
534 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
535 | , option = $(target).data('collapse') ? 'toggle' : $this.data()
536 | $(target).collapse(option)
537 | })
538 | })
539 |
540 | }( window.jQuery );/* ============================================================
541 | * bootstrap-dropdown.js v2.0.2
542 | * http://twitter.github.com/bootstrap/javascript.html#dropdowns
543 | * ============================================================
544 | * Copyright 2012 Twitter, Inc.
545 | *
546 | * Licensed under the Apache License, Version 2.0 (the "License");
547 | * you may not use this file except in compliance with the License.
548 | * You may obtain a copy of the License at
549 | *
550 | * http://www.apache.org/licenses/LICENSE-2.0
551 | *
552 | * Unless required by applicable law or agreed to in writing, software
553 | * distributed under the License is distributed on an "AS IS" BASIS,
554 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
555 | * See the License for the specific language governing permissions and
556 | * limitations under the License.
557 | * ============================================================ */
558 |
559 |
560 | !function( $ ){
561 |
562 | "use strict"
563 |
564 | /* DROPDOWN CLASS DEFINITION
565 | * ========================= */
566 |
567 | var toggle = '[data-toggle="dropdown"]'
568 | , Dropdown = function ( element ) {
569 | var $el = $(element).on('click.dropdown.data-api', this.toggle)
570 | $('html').on('click.dropdown.data-api', function () {
571 | $el.parent().removeClass('open')
572 | })
573 | }
574 |
575 | Dropdown.prototype = {
576 |
577 | constructor: Dropdown
578 |
579 | , toggle: function ( e ) {
580 | var $this = $(this)
581 | , selector = $this.attr('data-target')
582 | , $parent
583 | , isActive
584 |
585 | if (!selector) {
586 | selector = $this.attr('href')
587 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
588 | }
589 |
590 | $parent = $(selector)
591 | $parent.length || ($parent = $this.parent())
592 |
593 | isActive = $parent.hasClass('open')
594 |
595 | clearMenus()
596 | !isActive && $parent.toggleClass('open')
597 |
598 | return false
599 | }
600 |
601 | }
602 |
603 | function clearMenus() {
604 | $(toggle).parent().removeClass('open')
605 | }
606 |
607 |
608 | /* DROPDOWN PLUGIN DEFINITION
609 | * ========================== */
610 |
611 | $.fn.dropdown = function ( option ) {
612 | return this.each(function () {
613 | var $this = $(this)
614 | , data = $this.data('dropdown')
615 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
616 | if (typeof option == 'string') data[option].call($this)
617 | })
618 | }
619 |
620 | $.fn.dropdown.Constructor = Dropdown
621 |
622 |
623 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
624 | * =================================== */
625 |
626 | $(function () {
627 | $('html').on('click.dropdown.data-api', clearMenus)
628 | $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
629 | })
630 |
631 | }( window.jQuery );/* =========================================================
632 | * bootstrap-modal.js v2.0.2
633 | * http://twitter.github.com/bootstrap/javascript.html#modals
634 | * =========================================================
635 | * Copyright 2012 Twitter, Inc.
636 | *
637 | * Licensed under the Apache License, Version 2.0 (the "License");
638 | * you may not use this file except in compliance with the License.
639 | * You may obtain a copy of the License at
640 | *
641 | * http://www.apache.org/licenses/LICENSE-2.0
642 | *
643 | * Unless required by applicable law or agreed to in writing, software
644 | * distributed under the License is distributed on an "AS IS" BASIS,
645 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
646 | * See the License for the specific language governing permissions and
647 | * limitations under the License.
648 | * ========================================================= */
649 |
650 |
651 | !function( $ ){
652 |
653 | "use strict"
654 |
655 | /* MODAL CLASS DEFINITION
656 | * ====================== */
657 |
658 | var Modal = function ( content, options ) {
659 | this.options = options
660 | this.$element = $(content)
661 | .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
662 | }
663 |
664 | Modal.prototype = {
665 |
666 | constructor: Modal
667 |
668 | , toggle: function () {
669 | return this[!this.isShown ? 'show' : 'hide']()
670 | }
671 |
672 | , show: function () {
673 | var that = this
674 |
675 | if (this.isShown) return
676 |
677 | $('body').addClass('modal-open')
678 |
679 | this.isShown = true
680 | this.$element.trigger('show')
681 |
682 | escape.call(this)
683 | backdrop.call(this, function () {
684 | var transition = $.support.transition && that.$element.hasClass('fade')
685 |
686 | !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
687 |
688 | that.$element
689 | .show()
690 |
691 | if (transition) {
692 | that.$element[0].offsetWidth // force reflow
693 | }
694 |
695 | that.$element.addClass('in')
696 |
697 | transition ?
698 | that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
699 | that.$element.trigger('shown')
700 |
701 | })
702 | }
703 |
704 | , hide: function ( e ) {
705 | e && e.preventDefault()
706 |
707 | if (!this.isShown) return
708 |
709 | var that = this
710 | this.isShown = false
711 |
712 | $('body').removeClass('modal-open')
713 |
714 | escape.call(this)
715 |
716 | this.$element
717 | .trigger('hide')
718 | .removeClass('in')
719 |
720 | $.support.transition && this.$element.hasClass('fade') ?
721 | hideWithTransition.call(this) :
722 | hideModal.call(this)
723 | }
724 |
725 | }
726 |
727 |
728 | /* MODAL PRIVATE METHODS
729 | * ===================== */
730 |
731 | function hideWithTransition() {
732 | var that = this
733 | , timeout = setTimeout(function () {
734 | that.$element.off($.support.transition.end)
735 | hideModal.call(that)
736 | }, 500)
737 |
738 | this.$element.one($.support.transition.end, function () {
739 | clearTimeout(timeout)
740 | hideModal.call(that)
741 | })
742 | }
743 |
744 | function hideModal( that ) {
745 | this.$element
746 | .hide()
747 | .trigger('hidden')
748 |
749 | backdrop.call(this)
750 | }
751 |
752 | function backdrop( callback ) {
753 | var that = this
754 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
755 |
756 | if (this.isShown && this.options.backdrop) {
757 | var doAnimate = $.support.transition && animate
758 |
759 | this.$backdrop = $('')
760 | .appendTo(document.body)
761 |
762 | if (this.options.backdrop != 'static') {
763 | this.$backdrop.click($.proxy(this.hide, this))
764 | }
765 |
766 | if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
767 |
768 | this.$backdrop.addClass('in')
769 |
770 | doAnimate ?
771 | this.$backdrop.one($.support.transition.end, callback) :
772 | callback()
773 |
774 | } else if (!this.isShown && this.$backdrop) {
775 | this.$backdrop.removeClass('in')
776 |
777 | $.support.transition && this.$element.hasClass('fade')?
778 | this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
779 | removeBackdrop.call(this)
780 |
781 | } else if (callback) {
782 | callback()
783 | }
784 | }
785 |
786 | function removeBackdrop() {
787 | this.$backdrop.remove()
788 | this.$backdrop = null
789 | }
790 |
791 | function escape() {
792 | var that = this
793 | if (this.isShown && this.options.keyboard) {
794 | $(document).on('keyup.dismiss.modal', function ( e ) {
795 | e.which == 27 && that.hide()
796 | })
797 | } else if (!this.isShown) {
798 | $(document).off('keyup.dismiss.modal')
799 | }
800 | }
801 |
802 |
803 | /* MODAL PLUGIN DEFINITION
804 | * ======================= */
805 |
806 | $.fn.modal = function ( option ) {
807 | return this.each(function () {
808 | var $this = $(this)
809 | , data = $this.data('modal')
810 | , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
811 | if (!data) $this.data('modal', (data = new Modal(this, options)))
812 | if (typeof option == 'string') data[option]()
813 | else if (options.show) data.show()
814 | })
815 | }
816 |
817 | $.fn.modal.defaults = {
818 | backdrop: true
819 | , keyboard: true
820 | , show: true
821 | }
822 |
823 | $.fn.modal.Constructor = Modal
824 |
825 |
826 | /* MODAL DATA-API
827 | * ============== */
828 |
829 | $(function () {
830 | $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
831 | var $this = $(this), href
832 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
833 | , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
834 |
835 | e.preventDefault()
836 | $target.modal(option)
837 | })
838 | })
839 |
840 | }( window.jQuery );/* ===========================================================
841 | * bootstrap-tooltip.js v2.0.2
842 | * http://twitter.github.com/bootstrap/javascript.html#tooltips
843 | * Inspired by the original jQuery.tipsy by Jason Frame
844 | * ===========================================================
845 | * Copyright 2012 Twitter, Inc.
846 | *
847 | * Licensed under the Apache License, Version 2.0 (the "License");
848 | * you may not use this file except in compliance with the License.
849 | * You may obtain a copy of the License at
850 | *
851 | * http://www.apache.org/licenses/LICENSE-2.0
852 | *
853 | * Unless required by applicable law or agreed to in writing, software
854 | * distributed under the License is distributed on an "AS IS" BASIS,
855 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
856 | * See the License for the specific language governing permissions and
857 | * limitations under the License.
858 | * ========================================================== */
859 |
860 | !function( $ ) {
861 |
862 | "use strict"
863 |
864 | /* TOOLTIP PUBLIC CLASS DEFINITION
865 | * =============================== */
866 |
867 | var Tooltip = function ( element, options ) {
868 | this.init('tooltip', element, options)
869 | }
870 |
871 | Tooltip.prototype = {
872 |
873 | constructor: Tooltip
874 |
875 | , init: function ( type, element, options ) {
876 | var eventIn
877 | , eventOut
878 |
879 | this.type = type
880 | this.$element = $(element)
881 | this.options = this.getOptions(options)
882 | this.enabled = true
883 |
884 | if (this.options.trigger != 'manual') {
885 | eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
886 | eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
887 | this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
888 | this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
889 | }
890 |
891 | this.options.selector ?
892 | (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
893 | this.fixTitle()
894 | }
895 |
896 | , getOptions: function ( options ) {
897 | options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
898 |
899 | if (options.delay && typeof options.delay == 'number') {
900 | options.delay = {
901 | show: options.delay
902 | , hide: options.delay
903 | }
904 | }
905 |
906 | return options
907 | }
908 |
909 | , enter: function ( e ) {
910 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
911 |
912 | if (!self.options.delay || !self.options.delay.show) {
913 | self.show()
914 | } else {
915 | self.hoverState = 'in'
916 | setTimeout(function() {
917 | if (self.hoverState == 'in') {
918 | self.show()
919 | }
920 | }, self.options.delay.show)
921 | }
922 | }
923 |
924 | , leave: function ( e ) {
925 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
926 |
927 | if (!self.options.delay || !self.options.delay.hide) {
928 | self.hide()
929 | } else {
930 | self.hoverState = 'out'
931 | setTimeout(function() {
932 | if (self.hoverState == 'out') {
933 | self.hide()
934 | }
935 | }, self.options.delay.hide)
936 | }
937 | }
938 |
939 | , show: function () {
940 | var $tip
941 | , inside
942 | , pos
943 | , actualWidth
944 | , actualHeight
945 | , placement
946 | , tp
947 |
948 | if (this.hasContent() && this.enabled) {
949 | $tip = this.tip()
950 | this.setContent()
951 |
952 | if (this.options.animation) {
953 | $tip.addClass('fade')
954 | }
955 |
956 | placement = typeof this.options.placement == 'function' ?
957 | this.options.placement.call(this, $tip[0], this.$element[0]) :
958 | this.options.placement
959 |
960 | inside = /in/.test(placement)
961 |
962 | $tip
963 | .remove()
964 | .css({ top: 0, left: 0, display: 'block' })
965 | .appendTo(inside ? this.$element : document.body)
966 |
967 | pos = this.getPosition(inside)
968 |
969 | actualWidth = $tip[0].offsetWidth
970 | actualHeight = $tip[0].offsetHeight
971 |
972 | switch (inside ? placement.split(' ')[1] : placement) {
973 | case 'bottom':
974 | tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
975 | break
976 | case 'top':
977 | tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
978 | break
979 | case 'left':
980 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
981 | break
982 | case 'right':
983 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
984 | break
985 | }
986 |
987 | $tip
988 | .css(tp)
989 | .addClass(placement)
990 | .addClass('in')
991 | }
992 | }
993 |
994 | , setContent: function () {
995 | var $tip = this.tip()
996 | $tip.find('.tooltip-inner').html(this.getTitle())
997 | $tip.removeClass('fade in top bottom left right')
998 | }
999 |
1000 | , hide: function () {
1001 | var that = this
1002 | , $tip = this.tip()
1003 |
1004 | $tip.removeClass('in')
1005 |
1006 | function removeWithAnimation() {
1007 | var timeout = setTimeout(function () {
1008 | $tip.off($.support.transition.end).remove()
1009 | }, 500)
1010 |
1011 | $tip.one($.support.transition.end, function () {
1012 | clearTimeout(timeout)
1013 | $tip.remove()
1014 | })
1015 | }
1016 |
1017 | $.support.transition && this.$tip.hasClass('fade') ?
1018 | removeWithAnimation() :
1019 | $tip.remove()
1020 | }
1021 |
1022 | , fixTitle: function () {
1023 | var $e = this.$element
1024 | if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1025 | $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1026 | }
1027 | }
1028 |
1029 | , hasContent: function () {
1030 | return this.getTitle()
1031 | }
1032 |
1033 | , getPosition: function (inside) {
1034 | return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1035 | width: this.$element[0].offsetWidth
1036 | , height: this.$element[0].offsetHeight
1037 | })
1038 | }
1039 |
1040 | , getTitle: function () {
1041 | var title
1042 | , $e = this.$element
1043 | , o = this.options
1044 |
1045 | title = $e.attr('data-original-title')
1046 | || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1047 |
1048 | title = (title || '').toString().replace(/(^\s*|\s*$)/, "")
1049 |
1050 | return title
1051 | }
1052 |
1053 | , tip: function () {
1054 | return this.$tip = this.$tip || $(this.options.template)
1055 | }
1056 |
1057 | , validate: function () {
1058 | if (!this.$element[0].parentNode) {
1059 | this.hide()
1060 | this.$element = null
1061 | this.options = null
1062 | }
1063 | }
1064 |
1065 | , enable: function () {
1066 | this.enabled = true
1067 | }
1068 |
1069 | , disable: function () {
1070 | this.enabled = false
1071 | }
1072 |
1073 | , toggleEnabled: function () {
1074 | this.enabled = !this.enabled
1075 | }
1076 |
1077 | , toggle: function () {
1078 | this[this.tip().hasClass('in') ? 'hide' : 'show']()
1079 | }
1080 |
1081 | }
1082 |
1083 |
1084 | /* TOOLTIP PLUGIN DEFINITION
1085 | * ========================= */
1086 |
1087 | $.fn.tooltip = function ( option ) {
1088 | return this.each(function () {
1089 | var $this = $(this)
1090 | , data = $this.data('tooltip')
1091 | , options = typeof option == 'object' && option
1092 | if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1093 | if (typeof option == 'string') data[option]()
1094 | })
1095 | }
1096 |
1097 | $.fn.tooltip.Constructor = Tooltip
1098 |
1099 | $.fn.tooltip.defaults = {
1100 | animation: true
1101 | , delay: 0
1102 | , selector: false
1103 | , placement: 'top'
1104 | , trigger: 'hover'
1105 | , title: ''
1106 | , template: ''
1107 | }
1108 |
1109 | }( window.jQuery );/* ===========================================================
1110 | * bootstrap-popover.js v2.0.2
1111 | * http://twitter.github.com/bootstrap/javascript.html#popovers
1112 | * ===========================================================
1113 | * Copyright 2012 Twitter, Inc.
1114 | *
1115 | * Licensed under the Apache License, Version 2.0 (the "License");
1116 | * you may not use this file except in compliance with the License.
1117 | * You may obtain a copy of the License at
1118 | *
1119 | * http://www.apache.org/licenses/LICENSE-2.0
1120 | *
1121 | * Unless required by applicable law or agreed to in writing, software
1122 | * distributed under the License is distributed on an "AS IS" BASIS,
1123 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1124 | * See the License for the specific language governing permissions and
1125 | * limitations under the License.
1126 | * =========================================================== */
1127 |
1128 |
1129 | !function( $ ) {
1130 |
1131 | "use strict"
1132 |
1133 | var Popover = function ( element, options ) {
1134 | this.init('popover', element, options)
1135 | }
1136 |
1137 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1138 | ========================================== */
1139 |
1140 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1141 |
1142 | constructor: Popover
1143 |
1144 | , setContent: function () {
1145 | var $tip = this.tip()
1146 | , title = this.getTitle()
1147 | , content = this.getContent()
1148 |
1149 | $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
1150 | $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
1151 |
1152 | $tip.removeClass('fade top bottom left right in')
1153 | }
1154 |
1155 | , hasContent: function () {
1156 | return this.getTitle() || this.getContent()
1157 | }
1158 |
1159 | , getContent: function () {
1160 | var content
1161 | , $e = this.$element
1162 | , o = this.options
1163 |
1164 | content = $e.attr('data-content')
1165 | || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1166 |
1167 | content = content.toString().replace(/(^\s*|\s*$)/, "")
1168 |
1169 | return content
1170 | }
1171 |
1172 | , tip: function() {
1173 | if (!this.$tip) {
1174 | this.$tip = $(this.options.template)
1175 | }
1176 | return this.$tip
1177 | }
1178 |
1179 | })
1180 |
1181 |
1182 | /* POPOVER PLUGIN DEFINITION
1183 | * ======================= */
1184 |
1185 | $.fn.popover = function ( option ) {
1186 | return this.each(function () {
1187 | var $this = $(this)
1188 | , data = $this.data('popover')
1189 | , options = typeof option == 'object' && option
1190 | if (!data) $this.data('popover', (data = new Popover(this, options)))
1191 | if (typeof option == 'string') data[option]()
1192 | })
1193 | }
1194 |
1195 | $.fn.popover.Constructor = Popover
1196 |
1197 | $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1198 | placement: 'right'
1199 | , content: ''
1200 | , template: ''
1201 | })
1202 |
1203 | }( window.jQuery );/* =============================================================
1204 | * bootstrap-scrollspy.js v2.0.2
1205 | * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1206 | * =============================================================
1207 | * Copyright 2012 Twitter, Inc.
1208 | *
1209 | * Licensed under the Apache License, Version 2.0 (the "License");
1210 | * you may not use this file except in compliance with the License.
1211 | * You may obtain a copy of the License at
1212 | *
1213 | * http://www.apache.org/licenses/LICENSE-2.0
1214 | *
1215 | * Unless required by applicable law or agreed to in writing, software
1216 | * distributed under the License is distributed on an "AS IS" BASIS,
1217 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1218 | * See the License for the specific language governing permissions and
1219 | * limitations under the License.
1220 | * ============================================================== */
1221 |
1222 | !function ( $ ) {
1223 |
1224 | "use strict"
1225 |
1226 | /* SCROLLSPY CLASS DEFINITION
1227 | * ========================== */
1228 |
1229 | function ScrollSpy( element, options) {
1230 | var process = $.proxy(this.process, this)
1231 | , $element = $(element).is('body') ? $(window) : $(element)
1232 | , href
1233 | this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1234 | this.$scrollElement = $element.on('scroll.scroll.data-api', process)
1235 | this.selector = (this.options.target
1236 | || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1237 | || '') + ' .nav li > a'
1238 | this.$body = $('body').on('click.scroll.data-api', this.selector, process)
1239 | this.refresh()
1240 | this.process()
1241 | }
1242 |
1243 | ScrollSpy.prototype = {
1244 |
1245 | constructor: ScrollSpy
1246 |
1247 | , refresh: function () {
1248 | this.targets = this.$body
1249 | .find(this.selector)
1250 | .map(function () {
1251 | var href = $(this).attr('href')
1252 | return /^#\w/.test(href) && $(href).length ? href : null
1253 | })
1254 |
1255 | this.offsets = $.map(this.targets, function (id) {
1256 | return $(id).position().top
1257 | })
1258 | }
1259 |
1260 | , process: function () {
1261 | var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1262 | , offsets = this.offsets
1263 | , targets = this.targets
1264 | , activeTarget = this.activeTarget
1265 | , i
1266 |
1267 | for (i = offsets.length; i--;) {
1268 | activeTarget != targets[i]
1269 | && scrollTop >= offsets[i]
1270 | && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1271 | && this.activate( targets[i] )
1272 | }
1273 | }
1274 |
1275 | , activate: function (target) {
1276 | var active
1277 |
1278 | this.activeTarget = target
1279 |
1280 | this.$body
1281 | .find(this.selector).parent('.active')
1282 | .removeClass('active')
1283 |
1284 | active = this.$body
1285 | .find(this.selector + '[href="' + target + '"]')
1286 | .parent('li')
1287 | .addClass('active')
1288 |
1289 | if ( active.parent('.dropdown-menu') ) {
1290 | active.closest('li.dropdown').addClass('active')
1291 | }
1292 | }
1293 |
1294 | }
1295 |
1296 |
1297 | /* SCROLLSPY PLUGIN DEFINITION
1298 | * =========================== */
1299 |
1300 | $.fn.scrollspy = function ( option ) {
1301 | return this.each(function () {
1302 | var $this = $(this)
1303 | , data = $this.data('scrollspy')
1304 | , options = typeof option == 'object' && option
1305 | if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1306 | if (typeof option == 'string') data[option]()
1307 | })
1308 | }
1309 |
1310 | $.fn.scrollspy.Constructor = ScrollSpy
1311 |
1312 | $.fn.scrollspy.defaults = {
1313 | offset: 10
1314 | }
1315 |
1316 |
1317 | /* SCROLLSPY DATA-API
1318 | * ================== */
1319 |
1320 | $(function () {
1321 | $('[data-spy="scroll"]').each(function () {
1322 | var $spy = $(this)
1323 | $spy.scrollspy($spy.data())
1324 | })
1325 | })
1326 |
1327 | }( window.jQuery );/* ========================================================
1328 | * bootstrap-tab.js v2.0.2
1329 | * http://twitter.github.com/bootstrap/javascript.html#tabs
1330 | * ========================================================
1331 | * Copyright 2012 Twitter, Inc.
1332 | *
1333 | * Licensed under the Apache License, Version 2.0 (the "License");
1334 | * you may not use this file except in compliance with the License.
1335 | * You may obtain a copy of the License at
1336 | *
1337 | * http://www.apache.org/licenses/LICENSE-2.0
1338 | *
1339 | * Unless required by applicable law or agreed to in writing, software
1340 | * distributed under the License is distributed on an "AS IS" BASIS,
1341 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1342 | * See the License for the specific language governing permissions and
1343 | * limitations under the License.
1344 | * ======================================================== */
1345 |
1346 |
1347 | !function( $ ){
1348 |
1349 | "use strict"
1350 |
1351 | /* TAB CLASS DEFINITION
1352 | * ==================== */
1353 |
1354 | var Tab = function ( element ) {
1355 | this.element = $(element)
1356 | }
1357 |
1358 | Tab.prototype = {
1359 |
1360 | constructor: Tab
1361 |
1362 | , show: function () {
1363 | var $this = this.element
1364 | , $ul = $this.closest('ul:not(.dropdown-menu)')
1365 | , selector = $this.attr('data-target')
1366 | , previous
1367 | , $target
1368 |
1369 | if (!selector) {
1370 | selector = $this.attr('href')
1371 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1372 | }
1373 |
1374 | if ( $this.parent('li').hasClass('active') ) return
1375 |
1376 | previous = $ul.find('.active a').last()[0]
1377 |
1378 | $this.trigger({
1379 | type: 'show'
1380 | , relatedTarget: previous
1381 | })
1382 |
1383 | $target = $(selector)
1384 |
1385 | this.activate($this.parent('li'), $ul)
1386 | this.activate($target, $target.parent(), function () {
1387 | $this.trigger({
1388 | type: 'shown'
1389 | , relatedTarget: previous
1390 | })
1391 | })
1392 | }
1393 |
1394 | , activate: function ( element, container, callback) {
1395 | var $active = container.find('> .active')
1396 | , transition = callback
1397 | && $.support.transition
1398 | && $active.hasClass('fade')
1399 |
1400 | function next() {
1401 | $active
1402 | .removeClass('active')
1403 | .find('> .dropdown-menu > .active')
1404 | .removeClass('active')
1405 |
1406 | element.addClass('active')
1407 |
1408 | if (transition) {
1409 | element[0].offsetWidth // reflow for transition
1410 | element.addClass('in')
1411 | } else {
1412 | element.removeClass('fade')
1413 | }
1414 |
1415 | if ( element.parent('.dropdown-menu') ) {
1416 | element.closest('li.dropdown').addClass('active')
1417 | }
1418 |
1419 | callback && callback()
1420 | }
1421 |
1422 | transition ?
1423 | $active.one($.support.transition.end, next) :
1424 | next()
1425 |
1426 | $active.removeClass('in')
1427 | }
1428 | }
1429 |
1430 |
1431 | /* TAB PLUGIN DEFINITION
1432 | * ===================== */
1433 |
1434 | $.fn.tab = function ( option ) {
1435 | return this.each(function () {
1436 | var $this = $(this)
1437 | , data = $this.data('tab')
1438 | if (!data) $this.data('tab', (data = new Tab(this)))
1439 | if (typeof option == 'string') data[option]()
1440 | })
1441 | }
1442 |
1443 | $.fn.tab.Constructor = Tab
1444 |
1445 |
1446 | /* TAB DATA-API
1447 | * ============ */
1448 |
1449 | $(function () {
1450 | $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1451 | e.preventDefault()
1452 | $(this).tab('show')
1453 | })
1454 | })
1455 |
1456 | }( window.jQuery );/* =============================================================
1457 | * bootstrap-typeahead.js v2.0.2
1458 | * http://twitter.github.com/bootstrap/javascript.html#typeahead
1459 | * =============================================================
1460 | * Copyright 2012 Twitter, Inc.
1461 | *
1462 | * Licensed under the Apache License, Version 2.0 (the "License");
1463 | * you may not use this file except in compliance with the License.
1464 | * You may obtain a copy of the License at
1465 | *
1466 | * http://www.apache.org/licenses/LICENSE-2.0
1467 | *
1468 | * Unless required by applicable law or agreed to in writing, software
1469 | * distributed under the License is distributed on an "AS IS" BASIS,
1470 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1471 | * See the License for the specific language governing permissions and
1472 | * limitations under the License.
1473 | * ============================================================ */
1474 |
1475 | !function( $ ){
1476 |
1477 | "use strict"
1478 |
1479 | var Typeahead = function ( element, options ) {
1480 | this.$element = $(element)
1481 | this.options = $.extend({}, $.fn.typeahead.defaults, options)
1482 | this.matcher = this.options.matcher || this.matcher
1483 | this.sorter = this.options.sorter || this.sorter
1484 | this.highlighter = this.options.highlighter || this.highlighter
1485 | this.$menu = $(this.options.menu).appendTo('body')
1486 | this.source = this.options.source
1487 | this.shown = false
1488 | this.listen()
1489 | }
1490 |
1491 | Typeahead.prototype = {
1492 |
1493 | constructor: Typeahead
1494 |
1495 | , select: function () {
1496 | var val = this.$menu.find('.active').attr('data-value')
1497 | this.$element.val(val)
1498 | this.$element.change();
1499 | return this.hide()
1500 | }
1501 |
1502 | , show: function () {
1503 | var pos = $.extend({}, this.$element.offset(), {
1504 | height: this.$element[0].offsetHeight
1505 | })
1506 |
1507 | this.$menu.css({
1508 | top: pos.top + pos.height
1509 | , left: pos.left
1510 | })
1511 |
1512 | this.$menu.show()
1513 | this.shown = true
1514 | return this
1515 | }
1516 |
1517 | , hide: function () {
1518 | this.$menu.hide()
1519 | this.shown = false
1520 | return this
1521 | }
1522 |
1523 | , lookup: function (event) {
1524 | var that = this
1525 | , items
1526 | , q
1527 |
1528 | this.query = this.$element.val()
1529 |
1530 | if (!this.query) {
1531 | return this.shown ? this.hide() : this
1532 | }
1533 |
1534 | items = $.grep(this.source, function (item) {
1535 | if (that.matcher(item)) return item
1536 | })
1537 |
1538 | items = this.sorter(items)
1539 |
1540 | if (!items.length) {
1541 | return this.shown ? this.hide() : this
1542 | }
1543 |
1544 | return this.render(items.slice(0, this.options.items)).show()
1545 | }
1546 |
1547 | , matcher: function (item) {
1548 | return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1549 | }
1550 |
1551 | , sorter: function (items) {
1552 | var beginswith = []
1553 | , caseSensitive = []
1554 | , caseInsensitive = []
1555 | , item
1556 |
1557 | while (item = items.shift()) {
1558 | if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1559 | else if (~item.indexOf(this.query)) caseSensitive.push(item)
1560 | else caseInsensitive.push(item)
1561 | }
1562 |
1563 | return beginswith.concat(caseSensitive, caseInsensitive)
1564 | }
1565 |
1566 | , highlighter: function (item) {
1567 | return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
1568 | return '' + match + ''
1569 | })
1570 | }
1571 |
1572 | , render: function (items) {
1573 | var that = this
1574 |
1575 | items = $(items).map(function (i, item) {
1576 | i = $(that.options.item).attr('data-value', item)
1577 | i.find('a').html(that.highlighter(item))
1578 | return i[0]
1579 | })
1580 |
1581 | items.first().addClass('active')
1582 | this.$menu.html(items)
1583 | return this
1584 | }
1585 |
1586 | , next: function (event) {
1587 | var active = this.$menu.find('.active').removeClass('active')
1588 | , next = active.next()
1589 |
1590 | if (!next.length) {
1591 | next = $(this.$menu.find('li')[0])
1592 | }
1593 |
1594 | next.addClass('active')
1595 | }
1596 |
1597 | , prev: function (event) {
1598 | var active = this.$menu.find('.active').removeClass('active')
1599 | , prev = active.prev()
1600 |
1601 | if (!prev.length) {
1602 | prev = this.$menu.find('li').last()
1603 | }
1604 |
1605 | prev.addClass('active')
1606 | }
1607 |
1608 | , listen: function () {
1609 | this.$element
1610 | .on('blur', $.proxy(this.blur, this))
1611 | .on('keypress', $.proxy(this.keypress, this))
1612 | .on('keyup', $.proxy(this.keyup, this))
1613 |
1614 | if ($.browser.webkit || $.browser.msie) {
1615 | this.$element.on('keydown', $.proxy(this.keypress, this))
1616 | }
1617 |
1618 | this.$menu
1619 | .on('click', $.proxy(this.click, this))
1620 | .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1621 | }
1622 |
1623 | , keyup: function (e) {
1624 | switch(e.keyCode) {
1625 | case 40: // down arrow
1626 | case 38: // up arrow
1627 | break
1628 |
1629 | case 9: // tab
1630 | case 13: // enter
1631 | if (!this.shown) return
1632 | this.select()
1633 | break
1634 |
1635 | case 27: // escape
1636 | if (!this.shown) return
1637 | this.hide()
1638 | break
1639 |
1640 | default:
1641 | this.lookup()
1642 | }
1643 |
1644 | e.stopPropagation()
1645 | e.preventDefault()
1646 | }
1647 |
1648 | , keypress: function (e) {
1649 | if (!this.shown) return
1650 |
1651 | switch(e.keyCode) {
1652 | case 9: // tab
1653 | case 13: // enter
1654 | case 27: // escape
1655 | e.preventDefault()
1656 | break
1657 |
1658 | case 38: // up arrow
1659 | e.preventDefault()
1660 | this.prev()
1661 | break
1662 |
1663 | case 40: // down arrow
1664 | e.preventDefault()
1665 | this.next()
1666 | break
1667 | }
1668 |
1669 | e.stopPropagation()
1670 | }
1671 |
1672 | , blur: function (e) {
1673 | var that = this
1674 | setTimeout(function () { that.hide() }, 150)
1675 | }
1676 |
1677 | , click: function (e) {
1678 | e.stopPropagation()
1679 | e.preventDefault()
1680 | this.select()
1681 | }
1682 |
1683 | , mouseenter: function (e) {
1684 | this.$menu.find('.active').removeClass('active')
1685 | $(e.currentTarget).addClass('active')
1686 | }
1687 |
1688 | }
1689 |
1690 |
1691 | /* TYPEAHEAD PLUGIN DEFINITION
1692 | * =========================== */
1693 |
1694 | $.fn.typeahead = function ( option ) {
1695 | return this.each(function () {
1696 | var $this = $(this)
1697 | , data = $this.data('typeahead')
1698 | , options = typeof option == 'object' && option
1699 | if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1700 | if (typeof option == 'string') data[option]()
1701 | })
1702 | }
1703 |
1704 | $.fn.typeahead.defaults = {
1705 | source: []
1706 | , items: 8
1707 | , menu: ''
1708 | , item: ''
1709 | }
1710 |
1711 | $.fn.typeahead.Constructor = Typeahead
1712 |
1713 |
1714 | /* TYPEAHEAD DATA-API
1715 | * ================== */
1716 |
1717 | $(function () {
1718 | $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1719 | var $this = $(this)
1720 | if ($this.data('typeahead')) return
1721 | e.preventDefault()
1722 | $this.typeahead($this.data())
1723 | })
1724 | })
1725 |
1726 | }( window.jQuery );
--------------------------------------------------------------------------------