├── CNAME ├── fossasia.ico ├── img ├── rss.png ├── OTS_China.jpg ├── OTS_India.jpg ├── OTS_Japan.jpg ├── OTS_Other.jpg ├── Hack_Vietnam.jpg ├── OTS_Austria.jpg ├── OTS_Europe.jpg ├── OTS_Malaysia.jpg ├── OTS_Myanmar.jpg ├── OTS_SriLanka.jpg ├── OTS_Thailand.jpg ├── OTS_Vietnam.jpg ├── OTS_other1.jpg ├── fossasia2010.jpg ├── fossasia2011.JPG ├── fossasia2012.jpg ├── fossasia2014.jpg ├── garvitkhatri.jpg ├── hongphucdang.jpg ├── mariobehling.jpg ├── OTS_Indochina.jpg ├── OTS_SouthIndia.jpg ├── fossasia-dark.png ├── fossasia-long.png ├── gnome-asia2009.jpg ├── lightbox │ ├── close.png │ ├── next.png │ ├── prev.png │ └── loading.gif ├── FOSSASIA_Summit.jpg ├── Jugaadfest_India.jpg ├── OTSAIDaySingapore.jpg ├── PyconWorldChina.jpg ├── PyconWorldGermany.jpg ├── PyconWorldVietnam.jpg ├── PyconWorldIndochina.jpg ├── PyconWorldSingapore.jpg ├── PyconWorldSriLanka.jpg ├── Jugaadfest_Bangalore.jpg ├── Jugaadfest_Bangalore1.jpg ├── Jugaadfest_Hyderabad.jpg ├── OTSCloudDaySingapore.jpg ├── OTSDevOpsDaySingapore.jpg ├── fossasia-summit-2018.jpg ├── fossasia-summit-2019.jpg ├── fossasia-summit-2020.jpg ├── 16191319343_50b0e33567_z.jpg ├── 16223329244_e3350b84b8_z.jpg ├── 16270204044_8778742678_z.jpg ├── 16270213194_43125e8eb9_z.jpg ├── 16272582483_a4b2a4d349_z.jpg ├── 16623836710_8d0cc9e18f_z.jpg ├── 16625086149_c0f2d4790d_z.jpg ├── 16638442987_0bb1b1d755_z.jpg ├── 16638491897_cecf95af49_z.jpg ├── 16663133237_f11a1c3fbe_z.jpg ├── 16684530359_ef55826e16_z.jpg ├── 16685262997_edeff5e079_z.jpg ├── 16705208100_c69c9944df_z.jpg ├── 16810101851_506a7ac927_z.jpg ├── 16819915536_155defa079_z.jpg ├── 16844586226_096e027e17_z.jpg ├── 16844714521_75293b044e_z.jpg ├── 16845716575_bcbf309dc0_z.jpg ├── 16870473415_4d40a0544a_z.jpg ├── 16870504845_e9b6df49fe_z.jpg ├── 16870511035_1e016958e7_z.jpg ├── 24002390592_0ed1eac8af_z.jpg ├── 24086235376_ecb2b03839_z.jpg ├── 33374120610_0615b2bc45_z.jpg ├── fossasia-squarewhite-path.png ├── fossasia-summit-2018_large.jpg └── OpenTechSummit-LinuxCommunity.jpg ├── video ├── video.mp4 ├── video.ogv └── video.webm ├── fonts ├── ElegantIcons.eot ├── ElegantIcons.ttf ├── FontAwesome.otf ├── ElegantIcons.woff ├── Pe-icon-7-stroke.eot ├── Pe-icon-7-stroke.ttf ├── Pe-icon-7-stroke.woff ├── fontawesome-webfont.eot ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── fontawesome-webfont.woff2 ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff ├── glyphicons-halflings-regular.woff2 └── Newfonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── FOSSASIA_Sponsorships.pdf ├── open-issues ├── README.md ├── js ├── bootstrap │ ├── bootstrap.mix.js │ ├── transition.js │ ├── alert.js │ ├── button.js │ ├── tab.js │ ├── popover.js │ ├── affix.js │ ├── dropdown.js │ ├── scrollspy.js │ ├── collapse.js │ └── carousel.js ├── Newjs │ └── npm.js ├── feednami.js ├── window.feednami={},feednami.load=function(e,n){var ├── blog.js ├── smooth-scroll.min.js ├── spectragram.min.js ├── jquery.plugin.min.js ├── donate.js ├── placeholders.min.js ├── tweetsfetcher.js └── lightbox.min.js ├── css ├── text-overlay.css ├── ie9.css ├── less │ ├── component-animations.less │ ├── wells.less │ ├── breadcrumbs.less │ ├── close.less │ ├── thumbnails.less │ ├── utilities.less │ ├── jumbotron.less │ ├── media.less │ ├── pager.less │ ├── bootstrap.less │ ├── badges.less │ ├── labels.less │ ├── code.less │ ├── alerts.less │ ├── grid.less │ ├── progress-bars.less │ ├── print.less │ ├── pagination.less │ ├── responsive-utilities.less │ ├── tooltip.less │ ├── scaffolding.less │ ├── list-group.less │ ├── popovers.less │ ├── modals.less │ ├── buttons.less │ ├── input-groups.less │ ├── tables.less │ ├── dropdowns.less │ ├── carousel.less │ ├── navs.less │ ├── button-groups.less │ ├── panels.less │ └── type.less ├── custom-blog.css ├── lightbox.min.css ├── flexslider.min.css ├── custom.css └── flexslider.css ├── gulpfile.js ├── colour-schemes.json ├── cooperation └── index.html ├── package.json └── mail /CNAME: -------------------------------------------------------------------------------- 1 | events.fossasia.org 2 | -------------------------------------------------------------------------------- /fossasia.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fossasia.ico -------------------------------------------------------------------------------- /img/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/rss.png -------------------------------------------------------------------------------- /video/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/video/video.mp4 -------------------------------------------------------------------------------- /video/video.ogv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/video/video.ogv -------------------------------------------------------------------------------- /img/OTS_China.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_China.jpg -------------------------------------------------------------------------------- /img/OTS_India.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_India.jpg -------------------------------------------------------------------------------- /img/OTS_Japan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Japan.jpg -------------------------------------------------------------------------------- /img/OTS_Other.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Other.jpg -------------------------------------------------------------------------------- /video/video.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/video/video.webm -------------------------------------------------------------------------------- /img/Hack_Vietnam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/Hack_Vietnam.jpg -------------------------------------------------------------------------------- /img/OTS_Austria.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Austria.jpg -------------------------------------------------------------------------------- /img/OTS_Europe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Europe.jpg -------------------------------------------------------------------------------- /img/OTS_Malaysia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Malaysia.jpg -------------------------------------------------------------------------------- /img/OTS_Myanmar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Myanmar.jpg -------------------------------------------------------------------------------- /img/OTS_SriLanka.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_SriLanka.jpg -------------------------------------------------------------------------------- /img/OTS_Thailand.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Thailand.jpg -------------------------------------------------------------------------------- /img/OTS_Vietnam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Vietnam.jpg -------------------------------------------------------------------------------- /img/OTS_other1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_other1.jpg -------------------------------------------------------------------------------- /img/fossasia2010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia2010.jpg -------------------------------------------------------------------------------- /img/fossasia2011.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia2011.JPG -------------------------------------------------------------------------------- /img/fossasia2012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia2012.jpg -------------------------------------------------------------------------------- /img/fossasia2014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia2014.jpg -------------------------------------------------------------------------------- /img/garvitkhatri.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/garvitkhatri.jpg -------------------------------------------------------------------------------- /img/hongphucdang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/hongphucdang.jpg -------------------------------------------------------------------------------- /img/mariobehling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/mariobehling.jpg -------------------------------------------------------------------------------- /fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /img/OTS_Indochina.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_Indochina.jpg -------------------------------------------------------------------------------- /img/OTS_SouthIndia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTS_SouthIndia.jpg -------------------------------------------------------------------------------- /img/fossasia-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-dark.png -------------------------------------------------------------------------------- /img/fossasia-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-long.png -------------------------------------------------------------------------------- /img/gnome-asia2009.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/gnome-asia2009.jpg -------------------------------------------------------------------------------- /img/lightbox/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/lightbox/close.png -------------------------------------------------------------------------------- /img/lightbox/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/lightbox/next.png -------------------------------------------------------------------------------- /img/lightbox/prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/lightbox/prev.png -------------------------------------------------------------------------------- /FOSSASIA_Sponsorships.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/FOSSASIA_Sponsorships.pdf -------------------------------------------------------------------------------- /fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /img/FOSSASIA_Summit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/FOSSASIA_Summit.jpg -------------------------------------------------------------------------------- /img/Jugaadfest_India.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/Jugaadfest_India.jpg -------------------------------------------------------------------------------- /img/OTSAIDaySingapore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTSAIDaySingapore.jpg -------------------------------------------------------------------------------- /img/PyconWorldChina.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldChina.jpg -------------------------------------------------------------------------------- /img/PyconWorldGermany.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldGermany.jpg -------------------------------------------------------------------------------- /img/PyconWorldVietnam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldVietnam.jpg -------------------------------------------------------------------------------- /img/lightbox/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/lightbox/loading.gif -------------------------------------------------------------------------------- /fonts/Pe-icon-7-stroke.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Pe-icon-7-stroke.eot -------------------------------------------------------------------------------- /fonts/Pe-icon-7-stroke.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Pe-icon-7-stroke.ttf -------------------------------------------------------------------------------- /fonts/Pe-icon-7-stroke.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Pe-icon-7-stroke.woff -------------------------------------------------------------------------------- /img/PyconWorldIndochina.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldIndochina.jpg -------------------------------------------------------------------------------- /img/PyconWorldSingapore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldSingapore.jpg -------------------------------------------------------------------------------- /img/PyconWorldSriLanka.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/PyconWorldSriLanka.jpg -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /img/Jugaadfest_Bangalore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/Jugaadfest_Bangalore.jpg -------------------------------------------------------------------------------- /img/Jugaadfest_Bangalore1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/Jugaadfest_Bangalore1.jpg -------------------------------------------------------------------------------- /img/Jugaadfest_Hyderabad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/Jugaadfest_Hyderabad.jpg -------------------------------------------------------------------------------- /img/OTSCloudDaySingapore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTSCloudDaySingapore.jpg -------------------------------------------------------------------------------- /img/OTSDevOpsDaySingapore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OTSDevOpsDaySingapore.jpg -------------------------------------------------------------------------------- /img/fossasia-summit-2018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-summit-2018.jpg -------------------------------------------------------------------------------- /img/fossasia-summit-2019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-summit-2019.jpg -------------------------------------------------------------------------------- /img/fossasia-summit-2020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-summit-2020.jpg -------------------------------------------------------------------------------- /open-issues: -------------------------------------------------------------------------------- 1 | Link to Volunteer Signup 2 | Sponsorship Opportunities 3 | Event Management Services 4 | List of meetup groups 5 | -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /img/16191319343_50b0e33567_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16191319343_50b0e33567_z.jpg -------------------------------------------------------------------------------- /img/16223329244_e3350b84b8_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16223329244_e3350b84b8_z.jpg -------------------------------------------------------------------------------- /img/16270204044_8778742678_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16270204044_8778742678_z.jpg -------------------------------------------------------------------------------- /img/16270213194_43125e8eb9_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16270213194_43125e8eb9_z.jpg -------------------------------------------------------------------------------- /img/16272582483_a4b2a4d349_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16272582483_a4b2a4d349_z.jpg -------------------------------------------------------------------------------- /img/16623836710_8d0cc9e18f_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16623836710_8d0cc9e18f_z.jpg -------------------------------------------------------------------------------- /img/16625086149_c0f2d4790d_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16625086149_c0f2d4790d_z.jpg -------------------------------------------------------------------------------- /img/16638442987_0bb1b1d755_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16638442987_0bb1b1d755_z.jpg -------------------------------------------------------------------------------- /img/16638491897_cecf95af49_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16638491897_cecf95af49_z.jpg -------------------------------------------------------------------------------- /img/16663133237_f11a1c3fbe_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16663133237_f11a1c3fbe_z.jpg -------------------------------------------------------------------------------- /img/16684530359_ef55826e16_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16684530359_ef55826e16_z.jpg -------------------------------------------------------------------------------- /img/16685262997_edeff5e079_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16685262997_edeff5e079_z.jpg -------------------------------------------------------------------------------- /img/16705208100_c69c9944df_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16705208100_c69c9944df_z.jpg -------------------------------------------------------------------------------- /img/16810101851_506a7ac927_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16810101851_506a7ac927_z.jpg -------------------------------------------------------------------------------- /img/16819915536_155defa079_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16819915536_155defa079_z.jpg -------------------------------------------------------------------------------- /img/16844586226_096e027e17_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16844586226_096e027e17_z.jpg -------------------------------------------------------------------------------- /img/16844714521_75293b044e_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16844714521_75293b044e_z.jpg -------------------------------------------------------------------------------- /img/16845716575_bcbf309dc0_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16845716575_bcbf309dc0_z.jpg -------------------------------------------------------------------------------- /img/16870473415_4d40a0544a_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16870473415_4d40a0544a_z.jpg -------------------------------------------------------------------------------- /img/16870504845_e9b6df49fe_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16870504845_e9b6df49fe_z.jpg -------------------------------------------------------------------------------- /img/16870511035_1e016958e7_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/16870511035_1e016958e7_z.jpg -------------------------------------------------------------------------------- /img/24002390592_0ed1eac8af_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/24002390592_0ed1eac8af_z.jpg -------------------------------------------------------------------------------- /img/24086235376_ecb2b03839_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/24086235376_ecb2b03839_z.jpg -------------------------------------------------------------------------------- /img/33374120610_0615b2bc45_z.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/33374120610_0615b2bc45_z.jpg -------------------------------------------------------------------------------- /img/fossasia-squarewhite-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-squarewhite-path.png -------------------------------------------------------------------------------- /img/fossasia-summit-2018_large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/fossasia-summit-2018_large.jpg -------------------------------------------------------------------------------- /img/OpenTechSummit-LinuxCommunity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/img/OpenTechSummit-LinuxCommunity.jpg -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # events.fossasia.org 2 | Overview Page of FOSSASIA Meetups and Events 3 | 4 | The site for this repository is at https://events.fossasia.org 5 | 6 | -------------------------------------------------------------------------------- /fonts/Newfonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Newfonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/Newfonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Newfonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/Newfonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Newfonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/Newfonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/events.fossasia.org/gh-pages/fonts/Newfonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /js/bootstrap/bootstrap.mix.js: -------------------------------------------------------------------------------- 1 | @import "transition.js"; 2 | @import "alert.js"; 3 | @import "button.js"; 4 | @import "carousel.js"; 5 | @import "collapse.js"; 6 | @import "dropdown.js"; 7 | @import "modal.js"; 8 | @import "tooltip.js"; 9 | @import "popover.js"; 10 | @import "scrollspy.js"; 11 | @import "tab.js"; 12 | @import "affix.js"; -------------------------------------------------------------------------------- /css/text-overlay.css: -------------------------------------------------------------------------------- 1 | .container { 2 | position: relative; 3 | } 4 | 5 | .text-block { 6 | position: absolute; 7 | bottom: 80px; 8 | right: 80px; 9 | left: 50%; 10 | background-color: rgba(105, 105, 105, 0.7); 11 | color: black; 12 | padding-top: 10px; 13 | padding-bottom: 5px; 14 | margin-bottom: -20px; 15 | margin-right: -43%; 16 | transform: translate(-50%, -50%) 17 | } 18 | -------------------------------------------------------------------------------- /css/ie9.css: -------------------------------------------------------------------------------- 1 | .reveal-sidebar { 2 | transform: translateX(-300px); 3 | -webkit-transform: translateX(-300px); 4 | -moz-transform: translateX(-300px); 5 | } 6 | 7 | .sidebar-menu, .instagram-sidebar { 8 | transform: translateX(300px); 9 | -webkit-transform: translateX(300px); 10 | -moz-transform: translateX(300px); 11 | } 12 | 13 | .show-sidebar { 14 | transform: translateX(0px); 15 | -webkit-transform: translateX(0px); 16 | -moz-transform: translateX(0px); 17 | } -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | const imagemin = require('gulp-imagemin'); 3 | const pngquant = require('imagemin-pngquant'); 4 | 5 | gulp.task('images-opt', function () { 6 | gulp.src('img/*.*') 7 | .pipe(imagemin({ 8 | progressive: true, 9 | svgoPlugins: [{removeViewBox: false}], 10 | use: [pngquant()] 11 | })) 12 | .pipe(gulp.dest('img')); 13 | }); 14 | 15 | 16 | gulp.task('default', ['images-opt'], function(){}); 17 | -------------------------------------------------------------------------------- /colour-schemes.json: -------------------------------------------------------------------------------- 1 | { 2 | "original": 3 | { 4 | "name":"Pivot", 5 | "pathToOriginal":"mixture/css/", 6 | "originalFileName":"theme", 7 | "colours":["#E74C3C","#2C3E50","#3498DB"] 8 | }, 9 | "schemes": 10 | [ 11 | { 12 | "name":"Aquatica", 13 | "colours":["#01A2A6","#2F2933","#29D9C2"] 14 | }, 15 | { 16 | "name":"Saquandosa", 17 | "colours":["#EBAD60","#96526B","#FSCF66"] 18 | }, 19 | { 20 | "name":"Equinox", 21 | "colours":["#BADA55","#5A55EE","#5A51ED"] 22 | } 23 | ], 24 | "holdthis":"" 25 | } -------------------------------------------------------------------------------- /cooperation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | FOSSASIA Advanced Developer Program 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /js/Newjs/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fossasia15", 3 | "version": "1.0.0", 4 | "description": "FOSSASIA '15 website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/fossasia/fossasia15.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/fossasia/fossasia15/issues" 17 | }, 18 | "devDependencies": { 19 | "gulp": "^3.8.10", 20 | "gulp-imagemin": "^2.1.0", 21 | "imagemin-pngquant": "^4.2.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /css/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | &.in { 21 | display: block; 22 | } 23 | } 24 | .collapsing { 25 | position: relative; 26 | height: 0; 27 | overflow: hidden; 28 | .transition(height .35s ease); 29 | } 30 | -------------------------------------------------------------------------------- /css/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /css/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /js/feednami.js: -------------------------------------------------------------------------------- 1 | window.feednami={},feednami.load=function(e,n){var o="https://api.feednami.com/api/v1",a=e;"object"==typeof e&&(a=e.url);var t="url="+encodeURIComponent(a);e.format&&(t+="&include_xml_document&format="+e.format),e.includeXml&&(t+="&include_xml_document");var d=o+"/feeds/load?"+t;if(window.XDomainRequest){var l=document.createElement("script"),c="jsonp_callback_"+(new Date).getTime()+"_"+Math.round(1e6*Math.random());d+="&jsonp_callback="+c,window[c]=function(e){n(e),document.body.removeChild(l),window[c]=null;try{delete window[c]}catch(o){}},l.src=d,document.body.appendChild(l)}else{var i=new XMLHttpRequest;i.onreadystatechange=function(){4==i.readyState&&n(JSON.parse(i.responseText))},i.open("GET",d),i.send()}},feednami.loadGoogleFormat=function(e,n){return feednami.load({url:e,format:"google",includeXml:!0},n)}; -------------------------------------------------------------------------------- /css/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /js/window.feednami={},feednami.load=function(e,n){var: -------------------------------------------------------------------------------- 1 | window.feednami={},feednami.load=function(e,n){var o="https://api.feednami.com/api/v1",a=e;"object"==typeof e&&(a=e.url);var t="url="+encodeURIComponent(a);e.format&&(t+="&include_xml_document&format="+e.format),e.includeXml&&(t+="&include_xml_document");var d=o+"/feeds/load?"+t;if(window.XDomainRequest){var l=document.createElement("script"),c="jsonp_callback_"+(new Date).getTime()+"_"+Math.round(1e6*Math.random());d+="&jsonp_callback="+c,window[c]=function(e){n(e),document.body.removeChild(l),window[c]=null;try{delete window[c]}catch(o){}},l.src=d,document.body.appendChild(l)}else{var i=new XMLHttpRequest;i.onreadystatechange=function(){4==i.readyState&&n(JSON.parse(i.responseText))},i.open("GET",d),i.send()}},feednami.loadGoogleFormat=function(e,n){return feednami.load({url:e,format:"google",includeXml:!0},n)}; -------------------------------------------------------------------------------- /css/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /css/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /css/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | .container & { 23 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 24 | } 25 | 26 | .container { 27 | max-width: 100%; 28 | } 29 | 30 | @media screen and (min-width: @screen-sm-min) { 31 | padding-top: (@jumbotron-padding * 1.6); 32 | padding-bottom: (@jumbotron-padding * 1.6); 33 | 34 | .container & { 35 | padding-left: (@jumbotron-padding * 2); 36 | padding-right: (@jumbotron-padding * 2); 37 | } 38 | 39 | h1, 40 | .h1 { 41 | font-size: (@font-size-base * 4.5); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /css/less/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /css/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /mail: -------------------------------------------------------------------------------- 1 |
2 |
3 | 20 | 21 | -------------------------------------------------------------------------------- /css/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | 9 | // Core CSS 10 | @import "scaffolding.less"; 11 | @import "type.less"; 12 | @import "code.less"; 13 | @import "grid.less"; 14 | @import "tables.less"; 15 | @import "forms.less"; 16 | @import "buttons.less"; 17 | 18 | // Components 19 | @import "component-animations.less"; 20 | @import "glyphicons.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "wells.less"; 39 | @import "close.less"; 40 | 41 | // Components w/ JavaScript 42 | @import "modals.less"; 43 | @import "tooltip.less"; 44 | @import "popovers.less"; 45 | @import "carousel.less"; 46 | 47 | // Utility classes 48 | @import "utilities.less"; 49 | @import "responsive-utilities.less"; 50 | -------------------------------------------------------------------------------- /css/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base classes 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | } 36 | 37 | // Hover state, but only for links 38 | a.badge { 39 | &:hover, 40 | &:focus { 41 | color: @badge-link-hover-color; 42 | text-decoration: none; 43 | cursor: pointer; 44 | } 45 | } 46 | 47 | // Account for counters in navs 48 | a.list-group-item.active > .badge, 49 | .nav-pills > .active > a > .badge { 50 | color: @badge-active-color; 51 | background-color: @badge-active-bg; 52 | } 53 | .nav-pills > li > a > .badge { 54 | margin-left: 3px; 55 | } 56 | -------------------------------------------------------------------------------- /css/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | &[href] { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /js/blog.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | var url = 'http://blog.fossasia.org/feed/?format=xml'; 4 | feeds(url); 5 | }); 6 | 7 | 8 | function feeds(url){ 9 | var blog = $("#result"); 10 | var html = []; 11 | feednami.load(url,function(result){ 12 | if(result.error) { 13 | console.log(result.error); 14 | } else { 15 | 16 | var entries = result.feed.entries; 17 | html=[]; 18 | for( var x=0 ; x< 10; x++){ 19 | 20 | var count =0; 21 | var text = entries[x]; 22 | 23 | var title = text.title; 24 | if(x===0){ 25 | html.push("

"+title+"

"); 26 | } 27 | else{ 28 | html.push("

"+title+"

"); 29 | } 30 | var author = text.author ; 31 | html.push("

By - "+(author)+"

"); 32 | 33 | var link = text.guid ; 34 | var date = new Date(text.date); 35 | summary = text.summary 36 | html.push("

"+summary + "

"); 37 | html.push(" Posted On - "+(date)+"

"); 38 | 39 | 40 | 41 | } 42 | blog.html(html.join("")); 43 | 44 | 45 | 46 | 47 | } 48 | 49 | }); 50 | 51 | } 52 | -------------------------------------------------------------------------------- /css/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | white-space: nowrap; 21 | border-radius: @border-radius-base; 22 | } 23 | 24 | // User input typically entered via keyboard 25 | kbd { 26 | padding: 2px 4px; 27 | font-size: 90%; 28 | color: @kbd-color; 29 | background-color: @kbd-bg; 30 | border-radius: @border-radius-small; 31 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 32 | } 33 | 34 | // Blocks of code 35 | pre { 36 | display: block; 37 | padding: ((@line-height-computed - 1) / 2); 38 | margin: 0 0 (@line-height-computed / 2); 39 | font-size: (@font-size-base - 1); // 14px to 13px 40 | line-height: @line-height-base; 41 | word-break: break-all; 42 | word-wrap: break-word; 43 | color: @pre-color; 44 | background-color: @pre-bg; 45 | border: 1px solid @pre-border-color; 46 | border-radius: @border-radius-base; 47 | 48 | // Account for some code outputs that place code tags in pre tags 49 | code { 50 | padding: 0; 51 | font-size: inherit; 52 | color: inherit; 53 | white-space: pre-wrap; 54 | background-color: transparent; 55 | border-radius: 0; 56 | } 57 | } 58 | 59 | // Enable scrollable blocks of code 60 | .pre-scrollable { 61 | max-height: @pre-scrollable-max-height; 62 | overflow-y: scroll; 63 | } 64 | -------------------------------------------------------------------------------- /css/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: @alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissable alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable { 41 | padding-right: (@alert-padding + 20); 42 | 43 | // Adjust close link position 44 | .close { 45 | position: relative; 46 | top: -2px; 47 | right: -21px; 48 | color: inherit; 49 | } 50 | } 51 | 52 | // Alternate styles 53 | // 54 | // Generate contextual modifier classes for colorizing the alert. 55 | 56 | .alert-success { 57 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 58 | } 59 | .alert-info { 60 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 61 | } 62 | .alert-warning { 63 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 64 | } 65 | .alert-danger { 66 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 67 | } 68 | -------------------------------------------------------------------------------- /js/bootstrap/transition.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: transition.js v3.1.0 3 | * http://getbootstrap.com/javascript/#transitions 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 14 | // ============================================================ 15 | 16 | function transitionEnd() { 17 | var el = document.createElement('bootstrap') 18 | 19 | var transEndEventNames = { 20 | 'WebkitTransition' : 'webkitTransitionEnd', 21 | 'MozTransition' : 'transitionend', 22 | 'OTransition' : 'oTransitionEnd otransitionend', 23 | 'transition' : 'transitionend' 24 | } 25 | 26 | for (var name in transEndEventNames) { 27 | if (el.style[name] !== undefined) { 28 | return { end: transEndEventNames[name] } 29 | } 30 | } 31 | 32 | return false // explicit for ie8 ( ._.) 33 | } 34 | 35 | // http://blog.alexmaccaw.com/css-transitions 36 | $.fn.emulateTransitionEnd = function (duration) { 37 | var called = false, $el = this 38 | $(this).one($.support.transition.end, function () { called = true }) 39 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 40 | setTimeout(callback, duration) 41 | return this 42 | } 43 | 44 | $(function () { 45 | $.support.transition = transitionEnd() 46 | }) 47 | 48 | }(jQuery); 49 | -------------------------------------------------------------------------------- /css/custom-blog.css: -------------------------------------------------------------------------------- 1 | img.rss { 2 | margin-bottom: 0px; 3 | } 4 | .carousel-inner{ 5 | width: 100%; /* Set width to 100% */ 6 | margin: auto; 7 | min-height:700px; 8 | max-height:800px; 9 | } 10 | 11 | #result .item{ 12 | height:100%; 13 | width:100%; 14 | margin:5% 3% 5% 3%; 15 | background-color:#fff; 16 | overflow: hidden; 17 | } 18 | #result .item h1 { 19 | font-weight: 400 ; 20 | } 21 | #result p a{ 22 | margin-left: 5px; 23 | margin-right: 5px; 24 | } 25 | #result .item .summary{ 26 | margin: 36px 10% 50px 10%; 27 | } 28 | 29 | 30 | /* 31 | .post { 32 | display: none; 33 | padding: 20px; 34 | position: relative; 35 | height: 100%; 36 | } 37 | 38 | .title, .author-date { 39 | padding: 0 0 20px; 40 | } 41 | 42 | .post.active { 43 | display: block; 44 | } 45 | 46 | .post > h4 { 47 | font-size: 1em; 48 | } 49 | 50 | .links { 51 | display: flex; 52 | list-style-type: none; 53 | justify-content: flex-start; 54 | padding-left: 0; 55 | } 56 | 57 | .links li { 58 | display: inline-block; 59 | margin-right: 15px; 60 | background-color: #2D728F; 61 | padding: 5px 10px; 62 | } 63 | 64 | .post img, post svg{ 65 | display: block; 66 | width:30%; 67 | height: 30%; 68 | margin: 10px auto; 69 | } 70 | 71 | .post .link { 72 | position: absolute; 73 | top: 0; 74 | width: 100%; 75 | margin-left: -20px; 76 | margin-top: 440px; 77 | height: 60px; 78 | box-sizing: border-box; 79 | padding: 20px; 80 | font-weight: 700; 81 | background-color: #fff; 82 | transition: background-color 0.2s ease-in; 83 | color: #e12b00; 84 | } 85 | 86 | .linkText { 87 | padding-bottom: 3px; 88 | font-size: 1.5em; 89 | } 90 | 91 | .post .link:hover { 92 | background-color: #ddd; 93 | 94 | }*/ 95 | */ 96 | -------------------------------------------------------------------------------- /css/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /css/less/progress-bars.less: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // Bar animations 7 | // ------------------------- 8 | 9 | // WebKit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Spec and IE10+ 16 | @keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | 22 | 23 | // Bar itself 24 | // ------------------------- 25 | 26 | // Outer container 27 | .progress { 28 | overflow: hidden; 29 | height: @line-height-computed; 30 | margin-bottom: @line-height-computed; 31 | background-color: @progress-bg; 32 | border-radius: @border-radius-base; 33 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 34 | } 35 | 36 | // Bar of progress 37 | .progress-bar { 38 | float: left; 39 | width: 0%; 40 | height: 100%; 41 | font-size: @font-size-small; 42 | line-height: @line-height-computed; 43 | color: @progress-bar-color; 44 | text-align: center; 45 | background-color: @progress-bar-bg; 46 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 47 | .transition(width .6s ease); 48 | } 49 | 50 | // Striped bars 51 | .progress-striped .progress-bar { 52 | #gradient > .striped(); 53 | background-size: 40px 40px; 54 | } 55 | 56 | // Call animation for the active one 57 | .progress.active .progress-bar { 58 | .animation(progress-bar-stripes 2s linear infinite); 59 | } 60 | 61 | 62 | 63 | // Variations 64 | // ------------------------- 65 | 66 | .progress-bar-success { 67 | .progress-bar-variant(@progress-bar-success-bg); 68 | } 69 | 70 | .progress-bar-info { 71 | .progress-bar-variant(@progress-bar-info-bg); 72 | } 73 | 74 | .progress-bar-warning { 75 | .progress-bar-variant(@progress-bar-warning-bg); 76 | } 77 | 78 | .progress-bar-danger { 79 | .progress-bar-variant(@progress-bar-danger-bg); 80 | } 81 | -------------------------------------------------------------------------------- /css/less/print.less: -------------------------------------------------------------------------------- 1 | // 2 | // Basic print styles 3 | // -------------------------------------------------- 4 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css 5 | 6 | @media print { 7 | 8 | * { 9 | text-shadow: none !important; 10 | color: #000 !important; // Black prints faster: h5bp.com/s 11 | background: transparent !important; 12 | box-shadow: none !important; 13 | } 14 | 15 | a, 16 | a:visited { 17 | text-decoration: underline; 18 | } 19 | 20 | a[href]:after { 21 | content: " (" attr(href) ")"; 22 | } 23 | 24 | abbr[title]:after { 25 | content: " (" attr(title) ")"; 26 | } 27 | 28 | // Don't show links for images, or javascript/internal links 29 | a[href^="javascript:"]:after, 30 | a[href^="#"]:after { 31 | content: ""; 32 | } 33 | 34 | pre, 35 | blockquote { 36 | border: 1px solid #999; 37 | page-break-inside: avoid; 38 | } 39 | 40 | thead { 41 | display: table-header-group; // h5bp.com/t 42 | } 43 | 44 | tr, 45 | img { 46 | page-break-inside: avoid; 47 | } 48 | 49 | img { 50 | max-width: 100% !important; 51 | } 52 | 53 | p, 54 | h2, 55 | h3 { 56 | orphans: 3; 57 | widows: 3; 58 | } 59 | 60 | h2, 61 | h3 { 62 | page-break-after: avoid; 63 | } 64 | 65 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 66 | // Once fixed, we can just straight up remove this. 67 | select { 68 | background: #fff !important; 69 | } 70 | 71 | // Bootstrap components 72 | .navbar { 73 | display: none; 74 | } 75 | .table { 76 | td, 77 | th { 78 | background-color: #fff !important; 79 | } 80 | } 81 | .btn, 82 | .dropup > .btn { 83 | > .caret { 84 | border-top-color: #000 !important; 85 | } 86 | } 87 | .label { 88 | border: 1px solid #000; 89 | } 90 | 91 | .table { 92 | border-collapse: collapse !important; 93 | } 94 | .table-bordered { 95 | th, 96 | td { 97 | border: 1px solid #ddd !important; 98 | } 99 | } 100 | 101 | } 102 | -------------------------------------------------------------------------------- /css/less/pagination.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | .pagination { 5 | display: inline-block; 6 | padding-left: 0; 7 | margin: @line-height-computed 0; 8 | border-radius: @border-radius-base; 9 | 10 | > li { 11 | display: inline; // Remove list-style and block-level defaults 12 | > a, 13 | > span { 14 | position: relative; 15 | float: left; // Collapse white-space 16 | padding: @padding-base-vertical @padding-base-horizontal; 17 | line-height: @line-height-base; 18 | text-decoration: none; 19 | color: @pagination-color; 20 | background-color: @pagination-bg; 21 | border: 1px solid @pagination-border; 22 | margin-left: -1px; 23 | } 24 | &:first-child { 25 | > a, 26 | > span { 27 | margin-left: 0; 28 | .border-left-radius(@border-radius-base); 29 | } 30 | } 31 | &:last-child { 32 | > a, 33 | > span { 34 | .border-right-radius(@border-radius-base); 35 | } 36 | } 37 | } 38 | 39 | > li > a, 40 | > li > span { 41 | &:hover, 42 | &:focus { 43 | color: @pagination-hover-color; 44 | background-color: @pagination-hover-bg; 45 | border-color: @pagination-hover-border; 46 | } 47 | } 48 | 49 | > .active > a, 50 | > .active > span { 51 | &, 52 | &:hover, 53 | &:focus { 54 | z-index: 2; 55 | color: @pagination-active-color; 56 | background-color: @pagination-active-bg; 57 | border-color: @pagination-active-border; 58 | cursor: default; 59 | } 60 | } 61 | 62 | > .disabled { 63 | > span, 64 | > span:hover, 65 | > span:focus, 66 | > a, 67 | > a:hover, 68 | > a:focus { 69 | color: @pagination-disabled-color; 70 | background-color: @pagination-disabled-bg; 71 | border-color: @pagination-disabled-border; 72 | cursor: not-allowed; 73 | } 74 | } 75 | } 76 | 77 | // Sizing 78 | // -------------------------------------------------- 79 | 80 | // Large 81 | .pagination-lg { 82 | .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); 83 | } 84 | 85 | // Small 86 | .pagination-sm { 87 | .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); 88 | } 89 | -------------------------------------------------------------------------------- /css/less/responsive-utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // IE10 in Windows (Phone) 8 7 | // 8 | // Support for responsive views via media queries is kind of borked in IE10, for 9 | // Surface/desktop in split view and for Windows Phone 8. This particular fix 10 | // must be accompanied by a snippet of JavaScript to sniff the user agent and 11 | // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at 12 | // our Getting Started page for more information on this bug. 13 | // 14 | // For more information, see the following: 15 | // 16 | // Issue: https://github.com/twbs/bootstrap/issues/10497 17 | // Docs: http://getbootstrap.com/getting-started/#browsers 18 | // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ 19 | 20 | @-ms-viewport { 21 | width: device-width; 22 | } 23 | 24 | 25 | // Visibility utilities 26 | .visible-xs, 27 | .visible-sm, 28 | .visible-md, 29 | .visible-lg { 30 | .responsive-invisibility(); 31 | } 32 | 33 | .visible-xs { 34 | @media (max-width: @screen-xs-max) { 35 | .responsive-visibility(); 36 | } 37 | } 38 | .visible-sm { 39 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { 40 | .responsive-visibility(); 41 | } 42 | } 43 | .visible-md { 44 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { 45 | .responsive-visibility(); 46 | } 47 | } 48 | .visible-lg { 49 | @media (min-width: @screen-lg-min) { 50 | .responsive-visibility(); 51 | } 52 | } 53 | 54 | .hidden-xs { 55 | @media (max-width: @screen-xs-max) { 56 | .responsive-invisibility(); 57 | } 58 | } 59 | .hidden-sm { 60 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { 61 | .responsive-invisibility(); 62 | } 63 | } 64 | .hidden-md { 65 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { 66 | .responsive-invisibility(); 67 | } 68 | } 69 | .hidden-lg { 70 | @media (min-width: @screen-lg-min) { 71 | .responsive-invisibility(); 72 | } 73 | } 74 | 75 | 76 | // Print utilities 77 | // 78 | // Media queries are placed on the inside to be mixin-friendly. 79 | 80 | .visible-print { 81 | .responsive-invisibility(); 82 | 83 | @media print { 84 | .responsive-visibility(); 85 | } 86 | } 87 | 88 | .hidden-print { 89 | @media print { 90 | .responsive-invisibility(); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /js/bootstrap/alert.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: alert.js v3.1.0 3 | * http://getbootstrap.com/javascript/#alerts 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // ALERT CLASS DEFINITION 14 | // ====================== 15 | 16 | var dismiss = '[data-dismiss="alert"]' 17 | var Alert = function (el) { 18 | $(el).on('click', dismiss, this.close) 19 | } 20 | 21 | Alert.prototype.close = function (e) { 22 | var $this = $(this) 23 | var selector = $this.attr('data-target') 24 | 25 | if (!selector) { 26 | selector = $this.attr('href') 27 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 28 | } 29 | 30 | var $parent = $(selector) 31 | 32 | if (e) e.preventDefault() 33 | 34 | if (!$parent.length) { 35 | $parent = $this.hasClass('alert') ? $this : $this.parent() 36 | } 37 | 38 | $parent.trigger(e = $.Event('close.bs.alert')) 39 | 40 | if (e.isDefaultPrevented()) return 41 | 42 | $parent.removeClass('in') 43 | 44 | function removeElement() { 45 | $parent.trigger('closed.bs.alert').remove() 46 | } 47 | 48 | $.support.transition && $parent.hasClass('fade') ? 49 | $parent 50 | .one($.support.transition.end, removeElement) 51 | .emulateTransitionEnd(150) : 52 | removeElement() 53 | } 54 | 55 | 56 | // ALERT PLUGIN DEFINITION 57 | // ======================= 58 | 59 | var old = $.fn.alert 60 | 61 | $.fn.alert = function (option) { 62 | return this.each(function () { 63 | var $this = $(this) 64 | var data = $this.data('bs.alert') 65 | 66 | if (!data) $this.data('bs.alert', (data = new Alert(this))) 67 | if (typeof option == 'string') data[option].call($this) 68 | }) 69 | } 70 | 71 | $.fn.alert.Constructor = Alert 72 | 73 | 74 | // ALERT NO CONFLICT 75 | // ================= 76 | 77 | $.fn.alert.noConflict = function () { 78 | $.fn.alert = old 79 | return this 80 | } 81 | 82 | 83 | // ALERT DATA-API 84 | // ============== 85 | 86 | $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) 87 | 88 | }(jQuery); 89 | -------------------------------------------------------------------------------- /js/smooth-scroll.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Smooth Scroll - v1.4.10 - 2013-03-02 3 | * https://github.com/kswedberg/jquery-smooth-scroll 4 | * Copyright (c) 2013 Karl Swedberg 5 | * Licensed MIT (https://github.com/kswedberg/jquery-smooth-scroll/blob/master/LICENSE-MIT) 6 | */ 7 | !function(l){function t(l){return l.replace(/(:|\.)/g,"\\$1")}var e="1.4.10",o={exclude:[],excludeWithin:[],offset:0,direction:"top",scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficent:2},r=function(t){var e=[],o=!1,r=t.dir&&"left"==t.dir?"scrollLeft":"scrollTop";return this.each(function(){if(this!=document&&this!=window){var t=l(this);t[r]()>0?e.push(this):(t[r](1),o=t[r]()>0,o&&e.push(this),t[r](0))}}),e.length||this.each(function(){"BODY"===this.nodeName&&(e=[this])}),"first"===t.el&&e.length>1&&(e=[e[0]]),e};l.fn.extend({scrollable:function(l){var t=r.call(this,{dir:l});return this.pushStack(t)},firstScrollable:function(l){var t=r.call(this,{el:"first",dir:l});return this.pushStack(t)},smoothScroll:function(e){e=e||{};var o=l.extend({},l.fn.smoothScroll.defaults,e),r=l.smoothScroll.filterPath(location.pathname);return this.unbind("click.smoothscroll").bind("click.smoothscroll",function(e){var n=this,s=l(this),c=o.exclude,i=o.excludeWithin,a=0,f=0,h=!0,u={},d=location.hostname===n.hostname||!n.hostname,m=o.scrollTarget||(l.smoothScroll.filterPath(n.pathname)||r)===r,p=t(n.hash);if(o.scrollTarget||d&&m&&p){for(;h&&c.length>a;)s.is(t(c[a++]))&&(h=!1);for(;h&&i.length>f;)s.closest(i[f++]).length&&(h=!1)}else h=!1;h&&(e.preventDefault(),l.extend(u,o,{scrollTarget:o.scrollTarget||p,link:n}),l.smoothScroll(u))}),this}}),l.smoothScroll=function(t,e){var o,r,n,s,c=0,i="offset",a="scrollTop",f={},h={};"number"==typeof t?(o=l.fn.smoothScroll.defaults,n=t):(o=l.extend({},l.fn.smoothScroll.defaults,t||{}),o.scrollElement&&(i="position","static"==o.scrollElement.css("position")&&o.scrollElement.css("position","relative"))),o=l.extend({link:null},o),a="left"==o.direction?"scrollLeft":a,o.scrollElement?(r=o.scrollElement,c=r[a]()):r=l("html, body").firstScrollable(),o.beforeScroll.call(r,o),n="number"==typeof t?t:e||l(o.scrollTarget)[i]()&&l(o.scrollTarget)[i]()[o.direction]||0,f[a]=n+c+o.offset,s=o.speed,"auto"===s&&(s=f[a]||r.scrollTop(),s/=o.autoCoefficent),h={duration:s,easing:o.easing,complete:function(){o.afterScroll.call(o.link,o)}},o.step&&(h.step=o.step),r.length?r.stop().animate(f,h):o.afterScroll.call(o.link,o)},l.smoothScroll.version=e,l.smoothScroll.filterPath=function(l){return l.replace(/^\//,"").replace(/(index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},l.fn.smoothScroll.defaults=o}(jQuery); -------------------------------------------------------------------------------- /css/lightbox.min.css: -------------------------------------------------------------------------------- 1 | body:after{content:url(../img/lightbox/close.png) url(../img/lightbox/loading.gif) url(../img/lightbox/prev.png) url(../img/lightbox/next.png);display:none}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:alpha(Opacity=80);opacity:.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:400}.lightbox .lb-image{display:block;height:auto;max-width:inherit;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.lightbox a img{border:none}.lb-outerContainer{position:relative;background-color:#fff;*zoom:1;width:250px;height:250px;margin:0 auto;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-container{padding:4px}.lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../img/lightbox/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../img/lightbox/prev.png) left 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../img/lightbox/next.png) right 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;*zoom:1;width:100%;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{content:"";display:table;clear:both}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../img/lightbox/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(Opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:alpha(Opacity=100);opacity:1} -------------------------------------------------------------------------------- /js/spectragram.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery - Spectragram by Adrian Quevedo 3 | * http://adrianquevedo.com/ - http://lab.adrianquevedo.com/ - http://elnucleo.com.co/ 4 | * 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * You are free to use this plugin in commercial projects as long as the copyright header is left intact. 7 | * 8 | * This plugin uses the Instagram(tm) API and is not endorsed or certified by Instagram or Burbn, inc. 9 | * All Instagram(tm) logos and trademarks displayed on this plugin are property of Burbn, Inc. 10 | * 11 | * Date: Thu Jul 15 14:05:02 2012 -0500 12 | */ 13 | "function"!=typeof Object.create&&(Object.create=function(e){function t(){}return t.prototype=e,new t}),function(e){var t={init:function(t,a){var n=this;n.elem=a,n.$elem=e(a),n.api="https://api.instagram.com/v1",n.accessData=e.fn.spectragram.accessData,n.options=e.extend({},e.fn.spectragram.options,t)},getRecentMedia:function(e){var t=this,a="/users/"+e+"/media/recent/?"+t.accessData.clientID+"&access_token="+t.accessData.accessToken;t.fetch(a).done(function(e){t.display(e)})},getUserFeed:function(){var t=this,a="/users/search?q="+t.options.query+"&count="+t.options.max+"&access_token="+t.accessData.accessToken;t.fetch(a).done(function(a){a.data.length?t.getRecentMedia(a.data[0].id):e.error("Spectagram.js - Error: the username "+t.options.query+" does not exist.")})},getPopular:function(){var e=this,t="/media/popular?client_id="+e.accessData.clientID+"&access_token="+e.accessData.accessToken;e.fetch(t).done(function(t){e.display(t)})},getRecentTagged:function(){var t=this,a="/tags/"+t.options.query+"/media/recent?client_id="+t.accessData.clientID+"&access_token="+t.accessData.accessToken;t.fetch(a).done(function(a){a.data.length?t.display(a):e.error("Spectagram.js - Error: the tag "+t.options.query+" does not have results.")})},fetch:function(t){var a=this,n=a.api+t;return e.ajax({type:"GET",dataType:"jsonp",cache:!1,url:n})},display:function(t){var a,n=this,s=n.options.size,c=n.options.max>=t.data.length?t.data.length:n.options.max;if(0===t.data.length)n.$elem.append(e(n.options.wrapEachWith).append(n.options.notFoundMsg));else for(var o=0;c>o;o++)a="small"==s?t.data[o].images.thumbnail.url:"medium"==s?t.data[o].images.low_resolution.url:t.data[o].images.standard_resolution.url,n.$elem.append(e(n.options.wrapEachWith).append(""));"function"==typeof n.options.complete&&n.options.complete.call(n)}};jQuery.fn.spectragram=function(a,n){jQuery.fn.spectragram.accessData.clientID?this.each(function(){var s=Object.create(t);return s.init(n,this),s[a]?s[a](this):(e.error("Method "+a+" does not exist on jQuery.spectragram"),void 0)}):e.error("You must define an accessToken and a clientID on jQuery.spectragram")},jQuery.fn.spectragram.options={max:10,query:"coffee",size:"medium",wrapEachWith:"
  • ",complete:null},jQuery.fn.spectragram.accessData={accessToken:null,clientID:null}}(jQuery,window,document); -------------------------------------------------------------------------------- /css/less/tooltip.less: -------------------------------------------------------------------------------- 1 | // 2 | // Tooltips 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .tooltip { 8 | position: absolute; 9 | z-index: @zindex-tooltip; 10 | display: block; 11 | visibility: visible; 12 | font-size: @font-size-small; 13 | line-height: 1.4; 14 | .opacity(0); 15 | 16 | &.in { .opacity(@tooltip-opacity); } 17 | &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } 18 | &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } 19 | &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } 20 | &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } 21 | } 22 | 23 | // Wrapper for the tooltip content 24 | .tooltip-inner { 25 | max-width: @tooltip-max-width; 26 | padding: 3px 8px; 27 | color: @tooltip-color; 28 | text-align: center; 29 | text-decoration: none; 30 | background-color: @tooltip-bg; 31 | border-radius: @border-radius-base; 32 | } 33 | 34 | // Arrows 35 | .tooltip-arrow { 36 | position: absolute; 37 | width: 0; 38 | height: 0; 39 | border-color: transparent; 40 | border-style: solid; 41 | } 42 | .tooltip { 43 | &.top .tooltip-arrow { 44 | bottom: 0; 45 | left: 50%; 46 | margin-left: -@tooltip-arrow-width; 47 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 48 | border-top-color: @tooltip-arrow-color; 49 | } 50 | &.top-left .tooltip-arrow { 51 | bottom: 0; 52 | left: @tooltip-arrow-width; 53 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 54 | border-top-color: @tooltip-arrow-color; 55 | } 56 | &.top-right .tooltip-arrow { 57 | bottom: 0; 58 | right: @tooltip-arrow-width; 59 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 60 | border-top-color: @tooltip-arrow-color; 61 | } 62 | &.right .tooltip-arrow { 63 | top: 50%; 64 | left: 0; 65 | margin-top: -@tooltip-arrow-width; 66 | border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; 67 | border-right-color: @tooltip-arrow-color; 68 | } 69 | &.left .tooltip-arrow { 70 | top: 50%; 71 | right: 0; 72 | margin-top: -@tooltip-arrow-width; 73 | border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; 74 | border-left-color: @tooltip-arrow-color; 75 | } 76 | &.bottom .tooltip-arrow { 77 | top: 0; 78 | left: 50%; 79 | margin-left: -@tooltip-arrow-width; 80 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 81 | border-bottom-color: @tooltip-arrow-color; 82 | } 83 | &.bottom-left .tooltip-arrow { 84 | top: 0; 85 | left: @tooltip-arrow-width; 86 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 87 | border-bottom-color: @tooltip-arrow-color; 88 | } 89 | &.bottom-right .tooltip-arrow { 90 | top: 0; 91 | right: @tooltip-arrow-width; 92 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 93 | border-bottom-color: @tooltip-arrow-color; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /css/less/scaffolding.less: -------------------------------------------------------------------------------- 1 | // 2 | // Scaffolding 3 | // -------------------------------------------------- 4 | 5 | 6 | // Reset the box-sizing 7 | // 8 | // Heads up! This reset may cause conflicts with some third-party widgets. 9 | // For recommendations on resolving such conflicts, see 10 | // http://getbootstrap.com/getting-started/#third-box-sizing 11 | * { 12 | .box-sizing(border-box); 13 | } 14 | *:before, 15 | *:after { 16 | .box-sizing(border-box); 17 | } 18 | 19 | 20 | // Body reset 21 | 22 | html { 23 | font-size: 62.5%; 24 | -webkit-tap-highlight-color: rgba(0,0,0,0); 25 | } 26 | 27 | body { 28 | font-family: @font-family-base; 29 | font-size: @font-size-base; 30 | line-height: @line-height-base; 31 | color: @text-color; 32 | background-color: @body-bg; 33 | } 34 | 35 | // Reset fonts for relevant elements 36 | input, 37 | button, 38 | select, 39 | textarea { 40 | font-family: inherit; 41 | font-size: inherit; 42 | line-height: inherit; 43 | } 44 | 45 | 46 | // Links 47 | 48 | a { 49 | color: @link-color; 50 | text-decoration: none; 51 | 52 | &:hover, 53 | &:focus { 54 | color: @link-hover-color; 55 | text-decoration: underline; 56 | } 57 | 58 | &:focus { 59 | .tab-focus(); 60 | } 61 | } 62 | 63 | 64 | // Figures 65 | // 66 | // We reset this here because previously Normalize had no `figure` margins. This 67 | // ensures we don't break anyone's use of the element. 68 | 69 | figure { 70 | margin: 0; 71 | } 72 | 73 | 74 | // Images 75 | 76 | img { 77 | vertical-align: middle; 78 | } 79 | 80 | // Responsive images (ensure images don't scale beyond their parents) 81 | .img-responsive { 82 | .img-responsive(); 83 | } 84 | 85 | // Rounded corners 86 | .img-rounded { 87 | border-radius: @border-radius-large; 88 | } 89 | 90 | // Image thumbnails 91 | // 92 | // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. 93 | .img-thumbnail { 94 | padding: @thumbnail-padding; 95 | line-height: @line-height-base; 96 | background-color: @thumbnail-bg; 97 | border: 1px solid @thumbnail-border; 98 | border-radius: @thumbnail-border-radius; 99 | .transition(all .2s ease-in-out); 100 | 101 | // Keep them at most 100% wide 102 | .img-responsive(inline-block); 103 | } 104 | 105 | // Perfect circle 106 | .img-circle { 107 | border-radius: 50%; // set radius in percents 108 | } 109 | 110 | 111 | // Horizontal rules 112 | 113 | hr { 114 | margin-top: @line-height-computed; 115 | margin-bottom: @line-height-computed; 116 | border: 0; 117 | border-top: 1px solid @hr-border; 118 | } 119 | 120 | 121 | // Only display content to screen readers 122 | // 123 | // See: http://a11yproject.com/posts/how-to-hide-content/ 124 | 125 | .sr-only { 126 | position: absolute; 127 | width: 1px; 128 | height: 1px; 129 | margin: -1px; 130 | padding: 0; 131 | overflow: hidden; 132 | clip: rect(0,0,0,0); 133 | border: 0; 134 | } 135 | -------------------------------------------------------------------------------- /js/jquery.plugin.min.js: -------------------------------------------------------------------------------- 1 | /** Abstract base class for collection plugins v1.0.1. 2 | Written by Keith Wood (kbwood{at}iinet.com.au) December 2013. 3 | Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. */ 4 | (function(){var j=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(f){var g=this.prototype;j=true;var h=new this();j=false;for(var i in f){h[i]=typeof f[i]=='function'&&typeof g[i]=='function'?(function(d,e){return function(){var b=this._super;this._super=function(a){return g[d].apply(this,a||[])};var c=e.apply(this,arguments);this._super=b;return c}})(i,f[i]):f[i]}function JQClass(){if(!j&&this._init){this._init.apply(this,arguments)}}JQClass.prototype=h;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass}})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var c=camelCase(this.name);$[c]=this;$.fn[c]=function(a){var b=Array.prototype.slice.call(arguments,1);if($[c]._isNotChained(a,b)){return $[c][a].apply($[c],[this[0]].concat(b))}return this.each(function(){if(typeof a==='string'){if(a[0]==='_'||!$[c][a]){throw'Unknown method: '+a;}$[c][a].apply($[c],[this].concat(b))}else{$[c]._attach(this,a)}})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){if(a==='option'&&(b.length===0||(b.length===1&&typeof b[0]==='string'))){return true}return $.inArray(a,this._getters)>-1},_attach:function(a,b){a=$(a);if(a.hasClass(this._getMarker())){return}a.addClass(this._getMarker());b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c);this._postAttach(a,c);this.option(a,b)},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(d){try{var f=d.data(this.name.toLowerCase())||'';f=f.replace(/'/g,'"');f=f.replace(/([a-zA-Z0-9]+):/g,function(a,b,i){var c=f.substring(0,i).match(/"/g);return(!c||c.length%2===0?'"'+b+'":':b+':')});f=$.parseJSON('{'+f+'}');for(var g in f){var h=f[g];if(typeof h==='string'&&h.match(/^new Date\((.*)\)$/)){f[g]=eval(h)}}return f}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||(typeof b==='string'&&c==null)){var e=(d||{}).options;return(e&&b?e[b]:e)}if(!a.hasClass(this._getMarker())){return}var e=b||{};if(typeof b==='string'){e={};e[b]=c}this._optionsChanged(a,d,e);$.extend(d.options,e)},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a);if(!a.hasClass(this._getMarker())){return}this._preDestroy(a,this._getInst(a));a.removeData(this.name).removeClass(this._getMarker())},_preDestroy:function(a,b){}});function camelCase(c){return c.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}$.JQPlugin={createPlugin:function(a,b){if(typeof a==='object'){b=a;a='JQPlugin'}a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b);new JQClass.classes[c]()}}})(jQuery); -------------------------------------------------------------------------------- /js/donate.js: -------------------------------------------------------------------------------- 1 | /* function to show and hide donation and regular supporter part of paypal and stripe donation. 2 | This make use of hide and appear css classes in css/custom.css file*/ 3 | 4 | function hider(channel,no) { 5 | 6 | if(channel==1) 7 | { 8 | 9 | var x = document.getElementById('donation1') 10 | var y = document.getElementById('regular1'); 11 | if(x.className === 'hide') 12 | { 13 | if(no==1) 14 | { 15 | y.className = 'hide'; 16 | 17 | x.className = 'appear'; 18 | } 19 | 20 | } 21 | if(y.className === 'hide') 22 | { 23 | if(no==2) 24 | { 25 | y.className = 'appear'; 26 | x.className = 'hide'; 27 | 28 | } 29 | } 30 | 31 | } 32 | if(channel==2) 33 | { 34 | 35 | var x = document.getElementById('donation2') 36 | var y = document.getElementById('regular2'); 37 | if(x.className === 'hide') 38 | { 39 | if(no==1) 40 | { 41 | y.className = 'hide'; 42 | 43 | x.className = 'appear'; 44 | } 45 | 46 | } 47 | if(y.className === 'hide') 48 | { 49 | if(no==2) 50 | { 51 | y.className = 'appear'; 52 | x.className = 'hide'; 53 | 54 | 55 | } 56 | } 57 | 58 | }} 59 | 60 | /* For stripe payment. 61 | Two seperate jquery functions are used in stripe payment for donation and regular supporter. 62 | On clicking the donate button with ids customButton and customButtone respective fumctions 63 | will be called*/ 64 | 65 | 66 | var handler = StripeCheckout.configure({ 67 | // key: 'pk_test_IHdlNeCcW1H44btA1bcjWXa9', 68 | key: 'pk_live_TYUOty0alel95s5ZGMydBd8Q', 69 | image: '/img/fossasia_400x400.png', 70 | token: function (token) { 71 | $("#stripeTokene").val(token.id); 72 | $("#stripeEmaile").val(token.email); 73 | $("#amountse").val($("#amount").val() * 100); 74 | $("#myForme").submit(); 75 | } 76 | }); 77 | 78 | $('#customButton').on('click', function (e) { 79 | var amount = $("#amount").val() * 100; 80 | var displayAmount = parseFloat(Math.floor($("#amount").val() * 100) / 100).toFixed(2); 81 | // Open Checkout with further options 82 | handler.open({ 83 | name: 'Donate to fossasia', 84 | description: 'Donating: ($' + displayAmount + ')', 85 | amount: amount 86 | }); 87 | $("#contributionType").val("oneoff"); 88 | e.preventDefault(); 89 | }); 90 | 91 | $('#customButtone').on('click', function (e) { 92 | var amount = $("#amounte").val() * 100; 93 | var displayAmount = parseFloat(Math.floor($("#amounte").val() * 100) / 100).toFixed(2); 94 | // Open Checkout with further options 95 | handler.open({ 96 | name: 'Fossasia recurrent donation', 97 | description: 'Custom amount ($' + displayAmount + ')', 98 | amount: amount 99 | }); 100 | $("#contributionType").val("regular"); 101 | e.preventDefault(); 102 | }); 103 | 104 | // Close Checkout on page navigation 105 | $(window).on('popstate', function () { 106 | handler.close(); 107 | }); -------------------------------------------------------------------------------- /css/less/list-group.less: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on
      ,
        , or
        . 9 | 10 | .list-group { 11 | // No need to set list-style: none; since .list-group-item is block level 12 | margin-bottom: 20px; 13 | padding-left: 0; // reset padding because ul and ol 14 | } 15 | 16 | 17 | // Individual list items 18 | // 19 | // Use on `li`s or `div`s within the `.list-group` parent. 20 | 21 | .list-group-item { 22 | position: relative; 23 | display: block; 24 | padding: 10px 15px; 25 | // Place the border on the list items and negative margin up for better styling 26 | margin-bottom: -1px; 27 | background-color: @list-group-bg; 28 | border: 1px solid @list-group-border; 29 | 30 | // Round the first and last items 31 | &:first-child { 32 | .border-top-radius(@list-group-border-radius); 33 | } 34 | &:last-child { 35 | margin-bottom: 0; 36 | .border-bottom-radius(@list-group-border-radius); 37 | } 38 | 39 | // Align badges within list items 40 | > .badge { 41 | float: right; 42 | } 43 | > .badge + .badge { 44 | margin-right: 5px; 45 | } 46 | } 47 | 48 | 49 | // Linked list items 50 | // 51 | // Use anchor elements instead of `li`s or `div`s to create linked list items. 52 | // Includes an extra `.active` modifier class for showing selected items. 53 | 54 | a.list-group-item { 55 | color: @list-group-link-color; 56 | 57 | .list-group-item-heading { 58 | color: @list-group-link-heading-color; 59 | } 60 | 61 | // Hover state 62 | &:hover, 63 | &:focus { 64 | text-decoration: none; 65 | background-color: @list-group-hover-bg; 66 | } 67 | 68 | // Active class on item itself, not parent 69 | &.active, 70 | &.active:hover, 71 | &.active:focus { 72 | z-index: 2; // Place active items above their siblings for proper border styling 73 | color: @list-group-active-color; 74 | background-color: @list-group-active-bg; 75 | border-color: @list-group-active-border; 76 | 77 | // Force color to inherit for custom content 78 | .list-group-item-heading { 79 | color: inherit; 80 | } 81 | .list-group-item-text { 82 | color: @list-group-active-text-color; 83 | } 84 | } 85 | } 86 | 87 | 88 | // Contextual variants 89 | // 90 | // Add modifier classes to change text and background color on individual items. 91 | // Organizationally, this must come after the `:hover` states. 92 | 93 | .list-group-item-variant(success; @state-success-bg; @state-success-text); 94 | .list-group-item-variant(info; @state-info-bg; @state-info-text); 95 | .list-group-item-variant(warning; @state-warning-bg; @state-warning-text); 96 | .list-group-item-variant(danger; @state-danger-bg; @state-danger-text); 97 | 98 | 99 | // Custom content options 100 | // 101 | // Extra classes for creating well-formatted content within `.list-group-item`s. 102 | 103 | .list-group-item-heading { 104 | margin-top: 0; 105 | margin-bottom: 5px; 106 | } 107 | .list-group-item-text { 108 | margin-bottom: 0; 109 | line-height: 1.3; 110 | } 111 | -------------------------------------------------------------------------------- /js/bootstrap/button.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: button.js v3.1.0 3 | * http://getbootstrap.com/javascript/#buttons 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // BUTTON PUBLIC CLASS DEFINITION 14 | // ============================== 15 | 16 | var Button = function (element, options) { 17 | this.$element = $(element) 18 | this.options = $.extend({}, Button.DEFAULTS, options) 19 | this.isLoading = false 20 | } 21 | 22 | Button.DEFAULTS = { 23 | loadingText: 'loading...' 24 | } 25 | 26 | Button.prototype.setState = function (state) { 27 | var d = 'disabled' 28 | var $el = this.$element 29 | var val = $el.is('input') ? 'val' : 'html' 30 | var data = $el.data() 31 | 32 | state = state + 'Text' 33 | 34 | if (!data.resetText) $el.data('resetText', $el[val]()) 35 | 36 | $el[val](data[state] || this.options[state]) 37 | 38 | // push to event loop to allow forms to submit 39 | setTimeout($.proxy(function () { 40 | if (state == 'loadingText') { 41 | this.isLoading = true 42 | $el.addClass(d).attr(d, d) 43 | } else if (this.isLoading) { 44 | this.isLoading = false 45 | $el.removeClass(d).removeAttr(d) 46 | } 47 | }, this), 0) 48 | } 49 | 50 | Button.prototype.toggle = function () { 51 | var changed = true 52 | var $parent = this.$element.closest('[data-toggle="buttons"]') 53 | 54 | if ($parent.length) { 55 | var $input = this.$element.find('input') 56 | if ($input.prop('type') == 'radio') { 57 | if ($input.prop('checked') && this.$element.hasClass('active')) changed = false 58 | else $parent.find('.active').removeClass('active') 59 | } 60 | if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') 61 | } 62 | 63 | if (changed) this.$element.toggleClass('active') 64 | } 65 | 66 | 67 | // BUTTON PLUGIN DEFINITION 68 | // ======================== 69 | 70 | var old = $.fn.button 71 | 72 | $.fn.button = function (option) { 73 | return this.each(function () { 74 | var $this = $(this) 75 | var data = $this.data('bs.button') 76 | var options = typeof option == 'object' && option 77 | 78 | if (!data) $this.data('bs.button', (data = new Button(this, options))) 79 | 80 | if (option == 'toggle') data.toggle() 81 | else if (option) data.setState(option) 82 | }) 83 | } 84 | 85 | $.fn.button.Constructor = Button 86 | 87 | 88 | // BUTTON NO CONFLICT 89 | // ================== 90 | 91 | $.fn.button.noConflict = function () { 92 | $.fn.button = old 93 | return this 94 | } 95 | 96 | 97 | // BUTTON DATA-API 98 | // =============== 99 | 100 | $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { 101 | var $btn = $(e.target) 102 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') 103 | $btn.button('toggle') 104 | e.preventDefault() 105 | }) 106 | 107 | }(jQuery); 108 | -------------------------------------------------------------------------------- /css/flexslider.min.css: -------------------------------------------------------------------------------- 1 | .flex-container a:active,.flex-container a:focus,.flexslider a:active,.flexslider a:focus{outline:0}.flex-control-nav,.flex-direction-nav,.slides{margin:0;padding:0;list-style:none}.flexslider{padding:0}.flexslider .slides>li{display:none;-webkit-backface-visibility:hidden}.flexslider .slides img{width:100%;display:block}.flex-pauseplay span{text-transform:capitalize}.slides:after{content:"\0020";display:block;clear:both;visibility:hidden;line-height:0;height:0}html[xmlns] .slides{display:block}* html .slides{height:1%}.no-js .slides>li:first-child{display:block}.flexslider{margin:0 0 60px;background:#fff;border:4px solid #fff;position:relative;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);-moz-box-shadow:0 1px 4px rgba(0,0,0,.2);-o-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2);zoom:1}.flex-viewport{max-height:2000px;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.loading .flex-viewport{max-height:300px}.flexslider .slides{zoom:1}.carousel li{margin-right:5px}.flex-direction-nav{*height:0}.flex-direction-nav a{display:block;width:60px;height:60px;background:0 0;border:2px solid #fff;border-radius:50%;margin:-20px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:1;color:rgba(0,0,0,.8);text-shadow:1px 1px 0 rgba(255,255,255,.3);-webkit-transition:all .3s ease;-moz-transition:all .3s ease;transition:all .3s ease;cursor:pointer}.flex-direction-nav a:hover{background:rgba(255,255,255,.3)}.flex-direction-nav .flex-prev{left:17px}.flex-direction-nav .flex-next{right:17px;text-align:right}.flexslider:hover .flex-prev{opacity:.7;left:10px}.flexslider:hover .flex-next{opacity:.7;right:10px}.flexslider:hover .flex-next:hover,.flexslider:hover .flex-prev:hover{opacity:1}.flex-disabled{opacity:0!important}.flex-direction-nav a:before{font-family:ElegantIcons;font-size:38px;display:inline-block;content:'#';position:relative;top:-3px;color:#fff;left:7px;padding-bottom:22px}.flex-direction-nav a.flex-next:before{content:'$';right:8px;left:-9px}.flex-pauseplay a{display:block;width:20px;height:20px;position:absolute;bottom:5px;left:10px;opacity:.8;z-index:10;overflow:hidden;cursor:pointer;color:#000}.flex-pauseplay a:before{font-family:flexslider-icon;font-size:20px;display:inline-block;content:'\f004'}.flex-pauseplay a:hover{opacity:1}.flex-pauseplay a.flex-play:before{content:'\f003'}.flex-control-nav{width:100%;position:absolute;bottom:44px;text-align:center;z-index:10}.flex-control-nav li{margin:0 5px;display:inline-block;zoom:1;*display:inline}.flex-control-paging li a{width:8px;height:8px;display:block;background:#fff;background:rgba(255,255,255,.5);cursor:pointer;text-indent:-9999px;-webkit-border-radius:50%;-moz-border-radius:20px;-o-border-radius:50%;border-radius:50%;transition:all .5s ease;-webkit-transition:all .5s ease;-moz-transition:all .5s ease}.flex-control-paging li a:hover{background:#fff;background:rgba(255,255,255,.7)}.flex-control-paging li a.flex-active{background:#fff;background:rgba(255,255,255,.9);cursor:default}.flex-control-thumbs{margin:5px 0 0;position:static;overflow:hidden}.flex-control-thumbs li{width:25%;float:left;margin:0}.flex-control-thumbs img{width:100%;display:block;opacity:.7;cursor:pointer}.flex-control-thumbs img:hover{opacity:1}.flex-control-thumbs .flex-active{opacity:1;cursor:default}@media screen and (max-width:860px){.flex-direction-nav .flex-prev{opacity:1;left:10px}.flex-direction-nav .flex-next{opacity:1;right:10px}} -------------------------------------------------------------------------------- /js/bootstrap/tab.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: tab.js v3.1.0 3 | * http://getbootstrap.com/javascript/#tabs 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // TAB CLASS DEFINITION 14 | // ==================== 15 | 16 | var Tab = function (element) { 17 | this.element = $(element) 18 | } 19 | 20 | Tab.prototype.show = function () { 21 | var $this = this.element 22 | var $ul = $this.closest('ul:not(.dropdown-menu)') 23 | var selector = $this.data('target') 24 | 25 | if (!selector) { 26 | selector = $this.attr('href') 27 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 28 | } 29 | 30 | if ($this.parent('li').hasClass('active')) return 31 | 32 | var previous = $ul.find('.active:last a')[0] 33 | var e = $.Event('show.bs.tab', { 34 | relatedTarget: previous 35 | }) 36 | 37 | $this.trigger(e) 38 | 39 | if (e.isDefaultPrevented()) return 40 | 41 | var $target = $(selector) 42 | 43 | this.activate($this.parent('li'), $ul) 44 | this.activate($target, $target.parent(), function () { 45 | $this.trigger({ 46 | type: 'shown.bs.tab', 47 | relatedTarget: previous 48 | }) 49 | }) 50 | } 51 | 52 | Tab.prototype.activate = function (element, container, callback) { 53 | var $active = container.find('> .active') 54 | var transition = callback 55 | && $.support.transition 56 | && $active.hasClass('fade') 57 | 58 | function next() { 59 | $active 60 | .removeClass('active') 61 | .find('> .dropdown-menu > .active') 62 | .removeClass('active') 63 | 64 | element.addClass('active') 65 | 66 | if (transition) { 67 | element[0].offsetWidth // reflow for transition 68 | element.addClass('in') 69 | } else { 70 | element.removeClass('fade') 71 | } 72 | 73 | if (element.parent('.dropdown-menu')) { 74 | element.closest('li.dropdown').addClass('active') 75 | } 76 | 77 | callback && callback() 78 | } 79 | 80 | transition ? 81 | $active 82 | .one($.support.transition.end, next) 83 | .emulateTransitionEnd(150) : 84 | next() 85 | 86 | $active.removeClass('in') 87 | } 88 | 89 | 90 | // TAB PLUGIN DEFINITION 91 | // ===================== 92 | 93 | var old = $.fn.tab 94 | 95 | $.fn.tab = function ( option ) { 96 | return this.each(function () { 97 | var $this = $(this) 98 | var data = $this.data('bs.tab') 99 | 100 | if (!data) $this.data('bs.tab', (data = new Tab(this))) 101 | if (typeof option == 'string') data[option]() 102 | }) 103 | } 104 | 105 | $.fn.tab.Constructor = Tab 106 | 107 | 108 | // TAB NO CONFLICT 109 | // =============== 110 | 111 | $.fn.tab.noConflict = function () { 112 | $.fn.tab = old 113 | return this 114 | } 115 | 116 | 117 | // TAB DATA-API 118 | // ============ 119 | 120 | $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { 121 | e.preventDefault() 122 | $(this).tab('show') 123 | }) 124 | 125 | }(jQuery); 126 | -------------------------------------------------------------------------------- /js/bootstrap/popover.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: popover.js v3.1.0 3 | * http://getbootstrap.com/javascript/#popovers 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // POPOVER PUBLIC CLASS DEFINITION 14 | // =============================== 15 | 16 | var Popover = function (element, options) { 17 | this.init('popover', element, options) 18 | } 19 | 20 | if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') 21 | 22 | Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { 23 | placement: 'right', 24 | trigger: 'click', 25 | content: '', 26 | template: '

        ' 27 | }) 28 | 29 | 30 | // NOTE: POPOVER EXTENDS tooltip.js 31 | // ================================ 32 | 33 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) 34 | 35 | Popover.prototype.constructor = Popover 36 | 37 | Popover.prototype.getDefaults = function () { 38 | return Popover.DEFAULTS 39 | } 40 | 41 | Popover.prototype.setContent = function () { 42 | var $tip = this.tip() 43 | var title = this.getTitle() 44 | var content = this.getContent() 45 | 46 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) 47 | $tip.find('.popover-content')[ // we use append for html objects to maintain js events 48 | this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' 49 | ](content) 50 | 51 | $tip.removeClass('fade top bottom left right in') 52 | 53 | // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do 54 | // this manually by checking the contents. 55 | if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() 56 | } 57 | 58 | Popover.prototype.hasContent = function () { 59 | return this.getTitle() || this.getContent() 60 | } 61 | 62 | Popover.prototype.getContent = function () { 63 | var $e = this.$element 64 | var o = this.options 65 | 66 | return $e.attr('data-content') 67 | || (typeof o.content == 'function' ? 68 | o.content.call($e[0]) : 69 | o.content) 70 | } 71 | 72 | Popover.prototype.arrow = function () { 73 | return this.$arrow = this.$arrow || this.tip().find('.arrow') 74 | } 75 | 76 | Popover.prototype.tip = function () { 77 | if (!this.$tip) this.$tip = $(this.options.template) 78 | return this.$tip 79 | } 80 | 81 | 82 | // POPOVER PLUGIN DEFINITION 83 | // ========================= 84 | 85 | var old = $.fn.popover 86 | 87 | $.fn.popover = function (option) { 88 | return this.each(function () { 89 | var $this = $(this) 90 | var data = $this.data('bs.popover') 91 | var options = typeof option == 'object' && option 92 | 93 | if (!data && option == 'destroy') return 94 | if (!data) $this.data('bs.popover', (data = new Popover(this, options))) 95 | if (typeof option == 'string') data[option]() 96 | }) 97 | } 98 | 99 | $.fn.popover.Constructor = Popover 100 | 101 | 102 | // POPOVER NO CONFLICT 103 | // =================== 104 | 105 | $.fn.popover.noConflict = function () { 106 | $.fn.popover = old 107 | return this 108 | } 109 | 110 | }(jQuery); 111 | -------------------------------------------------------------------------------- /css/less/popovers.less: -------------------------------------------------------------------------------- 1 | // 2 | // Popovers 3 | // -------------------------------------------------- 4 | 5 | 6 | .popover { 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | z-index: @zindex-popover; 11 | display: none; 12 | max-width: @popover-max-width; 13 | padding: 1px; 14 | text-align: left; // Reset given new insertion method 15 | background-color: @popover-bg; 16 | background-clip: padding-box; 17 | border: 1px solid @popover-fallback-border-color; 18 | border: 1px solid @popover-border-color; 19 | border-radius: @border-radius-large; 20 | .box-shadow(0 5px 10px rgba(0,0,0,.2)); 21 | 22 | // Overrides for proper insertion 23 | white-space: normal; 24 | 25 | // Offset the popover to account for the popover arrow 26 | &.top { margin-top: -@popover-arrow-width; } 27 | &.right { margin-left: @popover-arrow-width; } 28 | &.bottom { margin-top: @popover-arrow-width; } 29 | &.left { margin-left: -@popover-arrow-width; } 30 | } 31 | 32 | .popover-title { 33 | margin: 0; // reset heading margin 34 | padding: 8px 14px; 35 | font-size: @font-size-base; 36 | font-weight: normal; 37 | line-height: 18px; 38 | background-color: @popover-title-bg; 39 | border-bottom: 1px solid darken(@popover-title-bg, 5%); 40 | border-radius: 5px 5px 0 0; 41 | } 42 | 43 | .popover-content { 44 | padding: 9px 14px; 45 | } 46 | 47 | // Arrows 48 | // 49 | // .arrow is outer, .arrow:after is inner 50 | 51 | .popover > .arrow { 52 | &, 53 | &:after { 54 | position: absolute; 55 | display: block; 56 | width: 0; 57 | height: 0; 58 | border-color: transparent; 59 | border-style: solid; 60 | } 61 | } 62 | .popover > .arrow { 63 | border-width: @popover-arrow-outer-width; 64 | } 65 | .popover > .arrow:after { 66 | border-width: @popover-arrow-width; 67 | content: ""; 68 | } 69 | 70 | .popover { 71 | &.top > .arrow { 72 | left: 50%; 73 | margin-left: -@popover-arrow-outer-width; 74 | border-bottom-width: 0; 75 | border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback 76 | border-top-color: @popover-arrow-outer-color; 77 | bottom: -@popover-arrow-outer-width; 78 | &:after { 79 | content: " "; 80 | bottom: 1px; 81 | margin-left: -@popover-arrow-width; 82 | border-bottom-width: 0; 83 | border-top-color: @popover-arrow-color; 84 | } 85 | } 86 | &.right > .arrow { 87 | top: 50%; 88 | left: -@popover-arrow-outer-width; 89 | margin-top: -@popover-arrow-outer-width; 90 | border-left-width: 0; 91 | border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback 92 | border-right-color: @popover-arrow-outer-color; 93 | &:after { 94 | content: " "; 95 | left: 1px; 96 | bottom: -@popover-arrow-width; 97 | border-left-width: 0; 98 | border-right-color: @popover-arrow-color; 99 | } 100 | } 101 | &.bottom > .arrow { 102 | left: 50%; 103 | margin-left: -@popover-arrow-outer-width; 104 | border-top-width: 0; 105 | border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback 106 | border-bottom-color: @popover-arrow-outer-color; 107 | top: -@popover-arrow-outer-width; 108 | &:after { 109 | content: " "; 110 | top: 1px; 111 | margin-left: -@popover-arrow-width; 112 | border-top-width: 0; 113 | border-bottom-color: @popover-arrow-color; 114 | } 115 | } 116 | 117 | &.left > .arrow { 118 | top: 50%; 119 | right: -@popover-arrow-outer-width; 120 | margin-top: -@popover-arrow-outer-width; 121 | border-right-width: 0; 122 | border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback 123 | border-left-color: @popover-arrow-outer-color; 124 | &:after { 125 | content: " "; 126 | right: 1px; 127 | border-right-width: 0; 128 | border-left-color: @popover-arrow-color; 129 | bottom: -@popover-arrow-width; 130 | } 131 | } 132 | 133 | } 134 | -------------------------------------------------------------------------------- /css/less/modals.less: -------------------------------------------------------------------------------- 1 | // 2 | // Modals 3 | // -------------------------------------------------- 4 | 5 | // .modal-open - body class for killing the scroll 6 | // .modal - container to scroll within 7 | // .modal-dialog - positioning shell for the actual modal 8 | // .modal-content - actual modal w/ bg and corners and shit 9 | 10 | // Kill the scroll on the body 11 | .modal-open { 12 | overflow: hidden; 13 | } 14 | 15 | // Container that the modal scrolls within 16 | .modal { 17 | display: none; 18 | overflow: auto; 19 | overflow-y: scroll; 20 | position: fixed; 21 | top: 0; 22 | right: 0; 23 | bottom: 0; 24 | left: 0; 25 | z-index: @zindex-modal; 26 | -webkit-overflow-scrolling: touch; 27 | 28 | // Prevent Chrome on Windows from adding a focus outline. For details, see 29 | // https://github.com/twbs/bootstrap/pull/10951. 30 | outline: 0; 31 | 32 | // When fading in the modal, animate it to slide down 33 | &.fade .modal-dialog { 34 | .translate(0, -25%); 35 | .transition-transform(~"0.3s ease-out"); 36 | } 37 | &.in .modal-dialog { .translate(0, 0)} 38 | } 39 | 40 | // Shell div to position the modal with bottom padding 41 | .modal-dialog { 42 | position: relative; 43 | width: auto; 44 | margin: 10px; 45 | } 46 | 47 | // Actual modal 48 | .modal-content { 49 | position: relative; 50 | background-color: @modal-content-bg; 51 | border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) 52 | border: 1px solid @modal-content-border-color; 53 | border-radius: @border-radius-large; 54 | .box-shadow(0 3px 9px rgba(0,0,0,.5)); 55 | background-clip: padding-box; 56 | // Remove focus outline from opened modal 57 | outline: none; 58 | } 59 | 60 | // Modal background 61 | .modal-backdrop { 62 | position: fixed; 63 | top: 0; 64 | right: 0; 65 | bottom: 0; 66 | left: 0; 67 | z-index: @zindex-modal-background; 68 | background-color: @modal-backdrop-bg; 69 | // Fade for backdrop 70 | &.fade { .opacity(0); } 71 | &.in { .opacity(@modal-backdrop-opacity); } 72 | } 73 | 74 | // Modal header 75 | // Top section of the modal w/ title and dismiss 76 | .modal-header { 77 | padding: @modal-title-padding; 78 | border-bottom: 1px solid @modal-header-border-color; 79 | min-height: (@modal-title-padding + @modal-title-line-height); 80 | } 81 | // Close icon 82 | .modal-header .close { 83 | margin-top: -2px; 84 | } 85 | 86 | // Title text within header 87 | .modal-title { 88 | margin: 0; 89 | line-height: @modal-title-line-height; 90 | } 91 | 92 | // Modal body 93 | // Where all modal content resides (sibling of .modal-header and .modal-footer) 94 | .modal-body { 95 | position: relative; 96 | padding: @modal-inner-padding; 97 | } 98 | 99 | // Footer (for actions) 100 | .modal-footer { 101 | margin-top: 15px; 102 | padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding; 103 | text-align: right; // right align buttons 104 | border-top: 1px solid @modal-footer-border-color; 105 | &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons 106 | 107 | // Properly space out buttons 108 | .btn + .btn { 109 | margin-left: 5px; 110 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs 111 | } 112 | // but override that for button groups 113 | .btn-group .btn + .btn { 114 | margin-left: -1px; 115 | } 116 | // and override it for block buttons as well 117 | .btn-block + .btn-block { 118 | margin-left: 0; 119 | } 120 | } 121 | 122 | // Scale up the modal 123 | @media (min-width: @screen-sm-min) { 124 | // Automatically set modal's width for larger viewports 125 | .modal-dialog { 126 | width: @modal-md; 127 | margin: 30px auto; 128 | } 129 | .modal-content { 130 | .box-shadow(0 5px 15px rgba(0,0,0,.5)); 131 | } 132 | 133 | // Modal sizes 134 | .modal-sm { width: @modal-sm; } 135 | } 136 | 137 | @media (min-width: @screen-md-min) { 138 | .modal-lg { width: @modal-lg; } 139 | } 140 | -------------------------------------------------------------------------------- /js/placeholders.min.js: -------------------------------------------------------------------------------- 1 | /* Placeholders.js v3.0.2 */ 2 | (function(t){"use strict";function e(t,e,r){return t.addEventListener?t.addEventListener(e,r,!1):t.attachEvent?t.attachEvent("on"+e,r):void 0}function r(t,e){var r,n;for(r=0,n=t.length;n>r;r++)if(t[r]===e)return!0;return!1}function n(t,e){var r;t.createTextRange?(r=t.createTextRange(),r.move("character",e),r.select()):t.selectionStart&&(t.focus(),t.setSelectionRange(e,e))}function a(t,e){try{return t.type=e,!0}catch(r){return!1}}t.Placeholders={Utils:{addEventListener:e,inArray:r,moveCaret:n,changeType:a}}})(this),function(t){"use strict";function e(){}function r(){try{return document.activeElement}catch(t){}}function n(t,e){var r,n,a=!!e&&t.value!==e,u=t.value===t.getAttribute(V);return(a||u)&&"true"===t.getAttribute(D)?(t.removeAttribute(D),t.value=t.value.replace(t.getAttribute(V),""),t.className=t.className.replace(R,""),n=t.getAttribute(F),parseInt(n,10)>=0&&(t.setAttribute("maxLength",n),t.removeAttribute(F)),r=t.getAttribute(P),r&&(t.type=r),!0):!1}function a(t){var e,r,n=t.getAttribute(V);return""===t.value&&n?(t.setAttribute(D,"true"),t.value=n,t.className+=" "+I,r=t.getAttribute(F),r||(t.setAttribute(F,t.maxLength),t.removeAttribute("maxLength")),e=t.getAttribute(P),e?t.type="text":"password"===t.type&&M.changeType(t,"text")&&t.setAttribute(P,"password"),!0):!1}function u(t,e){var r,n,a,u,i,l,o;if(t&&t.getAttribute(V))e(t);else for(a=t?t.getElementsByTagName("input"):b,u=t?t.getElementsByTagName("textarea"):f,r=a?a.length:0,n=u?u.length:0,o=0,l=r+n;l>o;o++)i=r>o?a[o]:u[o-r],e(i)}function i(t){u(t,n)}function l(t){u(t,a)}function o(t){return function(){m&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(D)?M.moveCaret(t,0):n(t)}}function c(t){return function(){a(t)}}function s(t){return function(e){return A=t.value,"true"===t.getAttribute(D)&&A===t.getAttribute(V)&&M.inArray(C,e.keyCode)?(e.preventDefault&&e.preventDefault(),!1):void 0}}function d(t){return function(){n(t,A),""===t.value&&(t.blur(),M.moveCaret(t,0))}}function g(t){return function(){t===r()&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(D)&&M.moveCaret(t,0)}}function v(t){return function(){i(t)}}function p(t){t.form&&(T=t.form,"string"==typeof T&&(T=document.getElementById(T)),T.getAttribute(U)||(M.addEventListener(T,"submit",v(T)),T.setAttribute(U,"true"))),M.addEventListener(t,"focus",o(t)),M.addEventListener(t,"blur",c(t)),m&&(M.addEventListener(t,"keydown",s(t)),M.addEventListener(t,"keyup",d(t)),M.addEventListener(t,"click",g(t))),t.setAttribute(j,"true"),t.setAttribute(V,x),(m||t!==r())&&a(t)}var b,f,m,h,A,y,E,x,L,T,N,S,w,B=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],k="#ccc",I="placeholdersjs",R=RegExp("(?:^|\\s)"+I+"(?!\\S)"),V="data-placeholder-value",D="data-placeholder-active",P="data-placeholder-type",U="data-placeholder-submit",j="data-placeholder-bound",q="data-placeholder-focus",z="data-placeholder-live",F="data-placeholder-maxlength",G=document.createElement("input"),H=document.getElementsByTagName("head")[0],J=document.documentElement,K=t.Placeholders,M=K.Utils;if(K.nativeSupport=void 0!==G.placeholder,!K.nativeSupport){for(b=document.getElementsByTagName("input"),f=document.getElementsByTagName("textarea"),m="false"===J.getAttribute(q),h="false"!==J.getAttribute(z),y=document.createElement("style"),y.type="text/css",E=document.createTextNode("."+I+" { color:"+k+"; }"),y.styleSheet?y.styleSheet.cssText=E.nodeValue:y.appendChild(E),H.insertBefore(y,H.firstChild),w=0,S=b.length+f.length;S>w;w++)N=b.length>w?b[w]:f[w-b.length],x=N.attributes.placeholder,x&&(x=x.nodeValue,x&&M.inArray(B,N.type)&&p(N));L=setInterval(function(){for(w=0,S=b.length+f.length;S>w;w++)N=b.length>w?b[w]:f[w-b.length],x=N.attributes.placeholder,x?(x=x.nodeValue,x&&M.inArray(B,N.type)&&(N.getAttribute(j)||p(N),(x!==N.getAttribute(V)||"password"===N.type&&!N.getAttribute(P))&&("password"===N.type&&!N.getAttribute(P)&&M.changeType(N,"text")&&N.setAttribute(P,"password"),N.value===N.getAttribute(V)&&(N.value=x),N.setAttribute(V,x)))):N.getAttribute(D)&&(n(N),N.removeAttribute(V));h||clearInterval(L)},100)}M.addEventListener(t,"beforeunload",function(){K.disable()}),K.disable=K.nativeSupport?e:i,K.enable=K.nativeSupport?e:l}(this); -------------------------------------------------------------------------------- /css/less/buttons.less: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // -------------------------------------------------- 8 | 9 | .btn { 10 | display: inline-block; 11 | margin-bottom: 0; // For input.btn 12 | font-weight: @btn-font-weight; 13 | text-align: center; 14 | vertical-align: middle; 15 | cursor: pointer; 16 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 17 | border: 1px solid transparent; 18 | white-space: nowrap; 19 | .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); 20 | .user-select(none); 21 | 22 | &, 23 | &:active, 24 | &.active { 25 | &:focus { 26 | .tab-focus(); 27 | } 28 | } 29 | 30 | &:hover, 31 | &:focus { 32 | color: @btn-default-color; 33 | text-decoration: none; 34 | } 35 | 36 | &:active, 37 | &.active { 38 | outline: 0; 39 | background-image: none; 40 | .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); 41 | } 42 | 43 | &.disabled, 44 | &[disabled], 45 | fieldset[disabled] & { 46 | cursor: not-allowed; 47 | pointer-events: none; // Future-proof disabling of clicks 48 | .opacity(.65); 49 | .box-shadow(none); 50 | } 51 | } 52 | 53 | 54 | // Alternate buttons 55 | // -------------------------------------------------- 56 | 57 | .btn-default { 58 | .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); 59 | } 60 | .btn-primary { 61 | .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); 62 | } 63 | // Success appears as green 64 | .btn-success { 65 | .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); 66 | } 67 | // Info appears as blue-green 68 | .btn-info { 69 | .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); 70 | } 71 | // Warning appears as orange 72 | .btn-warning { 73 | .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); 74 | } 75 | // Danger and error appear as red 76 | .btn-danger { 77 | .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); 78 | } 79 | 80 | 81 | // Link buttons 82 | // ------------------------- 83 | 84 | // Make a button look and behave like a link 85 | .btn-link { 86 | color: @link-color; 87 | font-weight: normal; 88 | cursor: pointer; 89 | border-radius: 0; 90 | 91 | &, 92 | &:active, 93 | &[disabled], 94 | fieldset[disabled] & { 95 | background-color: transparent; 96 | .box-shadow(none); 97 | } 98 | &, 99 | &:hover, 100 | &:focus, 101 | &:active { 102 | border-color: transparent; 103 | } 104 | &:hover, 105 | &:focus { 106 | color: @link-hover-color; 107 | text-decoration: underline; 108 | background-color: transparent; 109 | } 110 | &[disabled], 111 | fieldset[disabled] & { 112 | &:hover, 113 | &:focus { 114 | color: @btn-link-disabled-color; 115 | text-decoration: none; 116 | } 117 | } 118 | } 119 | 120 | 121 | // Button Sizes 122 | // -------------------------------------------------- 123 | 124 | .btn-lg { 125 | // line-height: ensure even-numbered height of button next to large input 126 | .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); 127 | } 128 | .btn-sm { 129 | // line-height: ensure proper height of button next to small input 130 | .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); 131 | } 132 | .btn-xs { 133 | .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); 134 | } 135 | 136 | 137 | // Block button 138 | // -------------------------------------------------- 139 | 140 | .btn-block { 141 | display: block; 142 | width: 100%; 143 | padding-left: 0; 144 | padding-right: 0; 145 | } 146 | 147 | // Vertically space out multiple block buttons 148 | .btn-block + .btn-block { 149 | margin-top: 5px; 150 | } 151 | 152 | // Specificity overrides 153 | input[type="submit"], 154 | input[type="reset"], 155 | input[type="button"] { 156 | &.btn-block { 157 | width: 100%; 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /css/custom.css: -------------------------------------------------------------------------------- 1 | .dark-layer { 2 | content: ""; 3 | background-color: rgba(0, 0, 0, 0.4); 4 | z-index: 1; 5 | position: absolute; 6 | width: 100%; 7 | height: 100%; 8 | top: 0; 9 | left: 0; 10 | } 11 | 12 | .schedule a { 13 | color: #E12B00; 14 | border: none; 15 | } 16 | 17 | .schedule a:hover { 18 | color: #E12B00; 19 | text-decoration: underline; 20 | border: none; 21 | } 22 | 23 | .schedule a:active { 24 | color: red; 25 | text-decoration: underline; 26 | border: none; 27 | } 28 | 29 | .schedule a:visited { 30 | color: #B82300; 31 | text-decoration: none; 32 | border: none; 33 | } 34 | 35 | .tweets-feed { 36 | color: #FFFFFF; 37 | line-height: 25px; 38 | font-size: 20px; 39 | transition: opacity 0.2s linear; 40 | margin-bottom: 20px; 41 | height: 250px; 42 | } 43 | 44 | .tweets-feed a { 45 | color: #FFFFFF; 46 | text-decoration: underline; 47 | font-weight:700; 48 | } 49 | 50 | .tweets-feed a:hover { 51 | color: #FFFFFF; 52 | } 53 | 54 | .tweets-feed .dateTweeted { 55 | font-size: 15px; 56 | display: block; 57 | text-align: center; 58 | margin: 10px auto; 59 | } 60 | 61 | .subscribe-1 .email-subscribe { 62 | margin-bottom: 50px !important; 63 | } 64 | .newsletter-name{ 65 | padding-right: 0px; 66 | } 67 | .newsletter-name input{ 68 | border-radius: 10px 0px 0px 10px; 69 | } 70 | .newsletter-email{ 71 | padding-left: 5px; 72 | padding-right: 5px; 73 | } 74 | .newsletter-email input{ 75 | border-radius: 0px; 76 | margin-left: 10px; 77 | 78 | } 79 | .newsletter-submit{ 80 | padding-left: 0px; 81 | 82 | } 83 | .newsletter-submit input{ 84 | border-radius: 0px 10px 10px 0px; 85 | margin-left: 14px; 86 | 87 | } 88 | .social-profiles a i{ 89 | transition: all .5s; 90 | } 91 | .social-profiles a:hover i{ 92 | color: grey; 93 | } 94 | .sticky-nav .menu li a:hover { 95 | border-color: #C3BFBF; 96 | border-bottom-width: 2px; 97 | margin-bottom: 2px; 98 | } 99 | 100 | .sidebar-content .widget ul li a:hover{ 101 | border-color: #C3BFBF; 102 | border-bottom-width: 2px; 103 | margin-top: 2px; 104 | margin-bottom: 2px; 105 | } 106 | .item .wp-post-image{ 107 | height: auto; 108 | } 109 | @media screen and (min-width: 350px) and (max-width: 440px) 110 | { 111 | #DevPrograms{ 112 | height: 90vh; 113 | } 114 | } 115 | @media screen and (min-width: 290px) and (max-width: 350px) 116 | { 117 | #DevPrograms{ 118 | height: 115vh; 119 | } 120 | } 121 | 122 | @media screen and (min-width: 240px) and (max-width: 290px) 123 | { 124 | #DevPrograms{ 125 | height: 120vh; 126 | } 127 | } 128 | 129 | @media screen and (max-width: 240px) 130 | { 131 | #DevPrograms{ 132 | height: 180vh; 133 | } 134 | } 135 | 136 | /*css classes for hiding and showing Donation and regular supporter parts in donate.html*/ 137 | .appear{ 138 | display: block; 139 | } 140 | .hide{ 141 | display: none; 142 | } 143 | 144 | .text-white a:focus { 145 | color: lightgray; 146 | border-bottom: 4px solid lightgray; 147 | text-decoration: none; 148 | } 149 | 150 | .text-white a:hover { 151 | color: white; 152 | border-bottom: 4px solid white; 153 | } 154 | 155 | .baddition{ 156 | margin-left: 600px; 157 | } 158 | .background-image { 159 | width: 100%; 160 | } 161 | 162 | @media screen and (max-width: 560px){ 163 | .price{ 164 | font-size: 10vw !important; 165 | } 166 | } 167 | 168 | nav{ 169 | -webkit-transition: top 0.7s ease-in-out !important; 170 | transition: top 0.7s ease-in-out !important; 171 | } 172 | .mobile-menu-toggle{ 173 | position: absolute; 174 | top: -7px; 175 | } 176 | .embedded-video-holder{ 177 | margin-top: 10px; 178 | } 179 | .has-submenu{ 180 | position: relative; 181 | } 182 | .submenu{ 183 | top: 0px; 184 | left: 100%; 185 | } 186 | .has-submenu > a:after{ 187 | display: inline-block; 188 | 189 | font-family: 'Pe-icon-7-stroke'; 190 | speak: none; 191 | font-style: normal; 192 | font-weight: normal; 193 | font-variant: normal; 194 | text-transform: none; 195 | line-height: 1; 196 | -webkit-font-smoothing: antialiased; 197 | -moz-osx-font-smoothing: grayscale; 198 | content: "\e684"; 199 | color: #fff; 200 | font-size: 24px; 201 | position: absolute; 202 | top: 3px; 203 | right: 25px; 204 | color: #333; 205 | } 206 | .has-submenu:hover > a:after{ 207 | color: #fff; 208 | } 209 | .nav-dropdown li:hover > a{ 210 | color: #fff; 211 | } 212 | .equal-row{ 213 | display: flex; 214 | flex-wrap: wrap; 215 | } 216 | -------------------------------------------------------------------------------- /js/bootstrap/affix.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: affix.js v3.1.0 3 | * http://getbootstrap.com/javascript/#affix 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // AFFIX CLASS DEFINITION 14 | // ====================== 15 | 16 | var Affix = function (element, options) { 17 | this.options = $.extend({}, Affix.DEFAULTS, options) 18 | this.$window = $(window) 19 | .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) 20 | .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) 21 | 22 | this.$element = $(element) 23 | this.affixed = 24 | this.unpin = 25 | this.pinnedOffset = null 26 | 27 | this.checkPosition() 28 | } 29 | 30 | Affix.RESET = 'affix affix-top affix-bottom' 31 | 32 | Affix.DEFAULTS = { 33 | offset: 0 34 | } 35 | 36 | Affix.prototype.getPinnedOffset = function () { 37 | if (this.pinnedOffset) return this.pinnedOffset 38 | this.$element.removeClass(Affix.RESET).addClass('affix') 39 | var scrollTop = this.$window.scrollTop() 40 | var position = this.$element.offset() 41 | return (this.pinnedOffset = position.top - scrollTop) 42 | } 43 | 44 | Affix.prototype.checkPositionWithEventLoop = function () { 45 | setTimeout($.proxy(this.checkPosition, this), 1) 46 | } 47 | 48 | Affix.prototype.checkPosition = function () { 49 | if (!this.$element.is(':visible')) return 50 | 51 | var scrollHeight = $(document).height() 52 | var scrollTop = this.$window.scrollTop() 53 | var position = this.$element.offset() 54 | var offset = this.options.offset 55 | var offsetTop = offset.top 56 | var offsetBottom = offset.bottom 57 | 58 | if (this.affixed == 'top') position.top += scrollTop 59 | 60 | if (typeof offset != 'object') offsetBottom = offsetTop = offset 61 | if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) 62 | if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) 63 | 64 | var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false : 65 | offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : 66 | offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false 67 | 68 | if (this.affixed === affix) return 69 | if (this.unpin) this.$element.css('top', '') 70 | 71 | var affixType = 'affix' + (affix ? '-' + affix : '') 72 | var e = $.Event(affixType + '.bs.affix') 73 | 74 | this.$element.trigger(e) 75 | 76 | if (e.isDefaultPrevented()) return 77 | 78 | this.affixed = affix 79 | this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null 80 | 81 | this.$element 82 | .removeClass(Affix.RESET) 83 | .addClass(affixType) 84 | .trigger($.Event(affixType.replace('affix', 'affixed'))) 85 | 86 | if (affix == 'bottom') { 87 | this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() }) 88 | } 89 | } 90 | 91 | 92 | // AFFIX PLUGIN DEFINITION 93 | // ======================= 94 | 95 | var old = $.fn.affix 96 | 97 | $.fn.affix = function (option) { 98 | return this.each(function () { 99 | var $this = $(this) 100 | var data = $this.data('bs.affix') 101 | var options = typeof option == 'object' && option 102 | 103 | if (!data) $this.data('bs.affix', (data = new Affix(this, options))) 104 | if (typeof option == 'string') data[option]() 105 | }) 106 | } 107 | 108 | $.fn.affix.Constructor = Affix 109 | 110 | 111 | // AFFIX NO CONFLICT 112 | // ================= 113 | 114 | $.fn.affix.noConflict = function () { 115 | $.fn.affix = old 116 | return this 117 | } 118 | 119 | 120 | // AFFIX DATA-API 121 | // ============== 122 | 123 | $(window).on('load', function () { 124 | $('[data-spy="affix"]').each(function () { 125 | var $spy = $(this) 126 | var data = $spy.data() 127 | 128 | data.offset = data.offset || {} 129 | 130 | if (data.offsetBottom) data.offset.bottom = data.offsetBottom 131 | if (data.offsetTop) data.offset.top = data.offsetTop 132 | 133 | $spy.affix(data) 134 | }) 135 | }) 136 | 137 | }(jQuery); 138 | -------------------------------------------------------------------------------- /js/bootstrap/dropdown.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: dropdown.js v3.1.0 3 | * http://getbootstrap.com/javascript/#dropdowns 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // DROPDOWN CLASS DEFINITION 14 | // ========================= 15 | 16 | var backdrop = '.dropdown-backdrop' 17 | var toggle = '[data-toggle=dropdown]' 18 | var Dropdown = function (element) { 19 | $(element).on('click.bs.dropdown', this.toggle) 20 | } 21 | 22 | Dropdown.prototype.toggle = function (e) { 23 | var $this = $(this) 24 | 25 | if ($this.is('.disabled, :disabled')) return 26 | 27 | var $parent = getParent($this) 28 | var isActive = $parent.hasClass('open') 29 | 30 | clearMenus() 31 | 32 | if (!isActive) { 33 | if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { 34 | // if mobile we use a backdrop because click events don't delegate 35 | $('"; 77 | 78 | document.getElementsByClassName("tweets-feed")[0].innerHTML = parsed; 79 | document.getElementsByClassName("tweets-feed")[0].style.opacity = 1; 80 | } 81 | 82 | /* Taken from https://github.com/fossasia/fossasia-loklak-webtweets/blob/gh-pages/js/loklak-fetcher.js 83 | See documentation at https://github.com/fossasia/fossasia-loklak-webtweets 84 | */ 85 | 86 | 87 | var loklakFetcher; 88 | 89 | window.onload = (function() { 90 | var script = null; 91 | 92 | loklakFetcher = { 93 | /** 94 | * Fetches tweets from the public loklak API, with the options provided 95 | * @param {object} options Object with allowed GET-attributes, see 96 | * loklak.org/api.html 97 | * @param {function} callback Function called after getting the results. 98 | * These are passed as first argument 99 | */ 100 | getTweets: function(options, callback) { 101 | if(typeof options === 'function') { // A callback has been provided as 2nd 102 | // argument (no options) 103 | var callback = options; 104 | options = {}; 105 | } else if(callback === undefined) { // No callback has been provided, even 106 | // as 2nd argument 107 | throw new Error('[LOKLAK-FETCHER] No callback provided'); 108 | } 109 | 110 | var settings = [ 'count', 'source', 'fields', 'limit', 'tzOffset', 111 | 'minified' ]; // Field names for all the possible parameters 112 | var defaults = [ 100, 'cache', '', '', 0, true ]; // Default values 113 | 114 | // Check if no options have been provided 115 | if(typeof options === 'undefined') { 116 | var options = {}; // Create 'options' to avoid ReferenceErrors later 117 | } 118 | 119 | //Check if there are any data elements set 120 | var tweetsEl = document.getElementsByClassName("tweets-feed")[0]; 121 | var dataset = tweetsEl.dataset; 122 | if(dataset.count) { 123 | options[settings[0]] = dataset.count; //count is index 0 124 | } 125 | 126 | if(dataset.query) { 127 | var query = dataset.query.replace(/\s/gi, '%20').replace(/#/gi, '%23'); //replace spaces and hashtags in URL 128 | } else { 129 | query = ''; 130 | } 131 | 132 | if(dataset.start) { 133 | query = query + "%20since:" + dataset.start; 134 | } 135 | 136 | if(dataset.end) { 137 | query = query + "%20until:" + dataset.end; 138 | } 139 | 140 | if(dataset.from) { 141 | query = query + "%20from:" + dataset.from; 142 | } 143 | 144 | 145 | 146 | // Write unset options as their default 147 | for(index in settings) { 148 | if(options[settings[index]] === undefined) { 149 | options[settings[index]] = defaults[index]; 150 | } 151 | } 152 | 153 | // Create the URL with all the parameters 154 | var url = 'http://api.loklak.org/api/search.json' + 155 | '?callback=loklakFetcher.handleData' + 156 | '&q=' + query + 157 | '&count=' + options.count + 158 | '&source=' + options.source + 159 | '&fields=' + options.fields + 160 | '&limit=' + options.limit + 161 | '&timezoneOffset=' + options.tzOffset + 162 | '&minified=' + options.minified; 163 | // If the script element for JSONP already exists, remove it 164 | if(script !== null) { 165 | document.head.removeChild(script); 166 | } 167 | /** 168 | * Invokes the callback function, passing the data from the server as the 169 | * first and only argument. 170 | * @param {object} data JSON coming from loklak's API 171 | */ 172 | this.handleData = function(data) { 173 | callback(data); 174 | }; 175 | 176 | // Create the script tag for JSONP 177 | script = document.createElement("script"); 178 | script.src = url; 179 | document.head.appendChild(script); 180 | } 181 | }; 182 | datafetcher(); 183 | 184 | }); 185 | -------------------------------------------------------------------------------- /js/bootstrap/carousel.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: carousel.js v3.1.0 3 | * http://getbootstrap.com/javascript/#carousel 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // CAROUSEL CLASS DEFINITION 14 | // ========================= 15 | 16 | var Carousel = function (element, options) { 17 | this.$element = $(element) 18 | this.$indicators = this.$element.find('.carousel-indicators') 19 | this.options = options 20 | this.paused = 21 | this.sliding = 22 | this.interval = 23 | this.$active = 24 | this.$items = null 25 | 26 | this.options.pause == 'hover' && this.$element 27 | .on('mouseenter', $.proxy(this.pause, this)) 28 | .on('mouseleave', $.proxy(this.cycle, this)) 29 | } 30 | 31 | Carousel.DEFAULTS = { 32 | interval: 5000, 33 | pause: 'hover', 34 | wrap: true 35 | } 36 | 37 | Carousel.prototype.cycle = function (e) { 38 | e || (this.paused = false) 39 | 40 | this.interval && clearInterval(this.interval) 41 | 42 | this.options.interval 43 | && !this.paused 44 | && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) 45 | 46 | return this 47 | } 48 | 49 | Carousel.prototype.getActiveIndex = function () { 50 | this.$active = this.$element.find('.item.active') 51 | this.$items = this.$active.parent().children() 52 | 53 | return this.$items.index(this.$active) 54 | } 55 | 56 | Carousel.prototype.to = function (pos) { 57 | var that = this 58 | var activeIndex = this.getActiveIndex() 59 | 60 | if (pos > (this.$items.length - 1) || pos < 0) return 61 | 62 | if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) 63 | if (activeIndex == pos) return this.pause().cycle() 64 | 65 | return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) 66 | } 67 | 68 | Carousel.prototype.pause = function (e) { 69 | e || (this.paused = true) 70 | 71 | if (this.$element.find('.next, .prev').length && $.support.transition) { 72 | this.$element.trigger($.support.transition.end) 73 | this.cycle(true) 74 | } 75 | 76 | this.interval = clearInterval(this.interval) 77 | 78 | return this 79 | } 80 | 81 | Carousel.prototype.next = function () { 82 | if (this.sliding) return 83 | return this.slide('next') 84 | } 85 | 86 | Carousel.prototype.prev = function () { 87 | if (this.sliding) return 88 | return this.slide('prev') 89 | } 90 | 91 | Carousel.prototype.slide = function (type, next) { 92 | var $active = this.$element.find('.item.active') 93 | var $next = next || $active[type]() 94 | var isCycling = this.interval 95 | var direction = type == 'next' ? 'left' : 'right' 96 | var fallback = type == 'next' ? 'first' : 'last' 97 | var that = this 98 | 99 | if (!$next.length) { 100 | if (!this.options.wrap) return 101 | $next = this.$element.find('.item')[fallback]() 102 | } 103 | 104 | if ($next.hasClass('active')) return this.sliding = false 105 | 106 | var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) 107 | this.$element.trigger(e) 108 | if (e.isDefaultPrevented()) return 109 | 110 | this.sliding = true 111 | 112 | isCycling && this.pause() 113 | 114 | if (this.$indicators.length) { 115 | this.$indicators.find('.active').removeClass('active') 116 | this.$element.one('slid.bs.carousel', function () { 117 | var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) 118 | $nextIndicator && $nextIndicator.addClass('active') 119 | }) 120 | } 121 | 122 | if ($.support.transition && this.$element.hasClass('slide')) { 123 | $next.addClass(type) 124 | $next[0].offsetWidth // force reflow 125 | $active.addClass(direction) 126 | $next.addClass(direction) 127 | $active 128 | .one($.support.transition.end, function () { 129 | $next.removeClass([type, direction].join(' ')).addClass('active') 130 | $active.removeClass(['active', direction].join(' ')) 131 | that.sliding = false 132 | setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) 133 | }) 134 | .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) 135 | } else { 136 | $active.removeClass('active') 137 | $next.addClass('active') 138 | this.sliding = false 139 | this.$element.trigger('slid.bs.carousel') 140 | } 141 | 142 | isCycling && this.cycle() 143 | 144 | return this 145 | } 146 | 147 | 148 | // CAROUSEL PLUGIN DEFINITION 149 | // ========================== 150 | 151 | var old = $.fn.carousel 152 | 153 | $.fn.carousel = function (option) { 154 | return this.each(function () { 155 | var $this = $(this) 156 | var data = $this.data('bs.carousel') 157 | var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) 158 | var action = typeof option == 'string' ? option : options.slide 159 | 160 | if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) 161 | if (typeof option == 'number') data.to(option) 162 | else if (action) data[action]() 163 | else if (options.interval) data.pause().cycle() 164 | }) 165 | } 166 | 167 | $.fn.carousel.Constructor = Carousel 168 | 169 | 170 | // CAROUSEL NO CONFLICT 171 | // ==================== 172 | 173 | $.fn.carousel.noConflict = function () { 174 | $.fn.carousel = old 175 | return this 176 | } 177 | 178 | 179 | // CAROUSEL DATA-API 180 | // ================= 181 | 182 | $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { 183 | var $this = $(this), href 184 | var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 185 | var options = $.extend({}, $target.data(), $this.data()) 186 | var slideIndex = $this.attr('data-slide-to') 187 | if (slideIndex) options.interval = false 188 | 189 | $target.carousel(options) 190 | 191 | if (slideIndex = $this.attr('data-slide-to')) { 192 | $target.data('bs.carousel').to(slideIndex) 193 | } 194 | 195 | e.preventDefault() 196 | }) 197 | 198 | $(window).on('load', function () { 199 | $('[data-ride="carousel"]').each(function () { 200 | var $carousel = $(this) 201 | $carousel.carousel($carousel.data()) 202 | }) 203 | }) 204 | 205 | }(jQuery); 206 | -------------------------------------------------------------------------------- /css/less/type.less: -------------------------------------------------------------------------------- 1 | // 2 | // Typography 3 | // -------------------------------------------------- 4 | 5 | 6 | // Headings 7 | // ------------------------- 8 | 9 | h1, h2, h3, h4, h5, h6, 10 | .h1, .h2, .h3, .h4, .h5, .h6 { 11 | font-family: @headings-font-family; 12 | font-weight: @headings-font-weight; 13 | line-height: @headings-line-height; 14 | color: @headings-color; 15 | 16 | small, 17 | .small { 18 | font-weight: normal; 19 | line-height: 1; 20 | color: @headings-small-color; 21 | } 22 | } 23 | 24 | h1, .h1, 25 | h2, .h2, 26 | h3, .h3 { 27 | margin-top: @line-height-computed; 28 | margin-bottom: (@line-height-computed / 2); 29 | 30 | small, 31 | .small { 32 | font-size: 65%; 33 | } 34 | } 35 | h4, .h4, 36 | h5, .h5, 37 | h6, .h6 { 38 | margin-top: (@line-height-computed / 2); 39 | margin-bottom: (@line-height-computed / 2); 40 | 41 | small, 42 | .small { 43 | font-size: 75%; 44 | } 45 | } 46 | 47 | h1, .h1 { font-size: @font-size-h1; } 48 | h2, .h2 { font-size: @font-size-h2; } 49 | h3, .h3 { font-size: @font-size-h3; } 50 | h4, .h4 { font-size: @font-size-h4; } 51 | h5, .h5 { font-size: @font-size-h5; } 52 | h6, .h6 { font-size: @font-size-h6; } 53 | 54 | 55 | // Body text 56 | // ------------------------- 57 | 58 | p { 59 | margin: 0 0 (@line-height-computed / 2); 60 | } 61 | 62 | .lead { 63 | margin-bottom: @line-height-computed; 64 | font-size: floor((@font-size-base * 1.15)); 65 | font-weight: 200; 66 | line-height: 1.4; 67 | 68 | @media (min-width: @screen-sm-min) { 69 | font-size: (@font-size-base * 1.5); 70 | } 71 | } 72 | 73 | 74 | // Emphasis & misc 75 | // ------------------------- 76 | 77 | // Ex: 14px base font * 85% = about 12px 78 | small, 79 | .small { font-size: 85%; } 80 | 81 | // Undo browser default styling 82 | cite { font-style: normal; } 83 | 84 | // Alignment 85 | .text-left { text-align: left; } 86 | .text-right { text-align: right; } 87 | .text-center { text-align: center; } 88 | .text-justify { text-align: justify; } 89 | 90 | // Contextual colors 91 | .text-muted { 92 | color: @text-muted; 93 | } 94 | .text-primary { 95 | .text-emphasis-variant(@brand-primary); 96 | } 97 | .text-success { 98 | .text-emphasis-variant(@state-success-text); 99 | } 100 | .text-info { 101 | .text-emphasis-variant(@state-info-text); 102 | } 103 | .text-warning { 104 | .text-emphasis-variant(@state-warning-text); 105 | } 106 | .text-danger { 107 | .text-emphasis-variant(@state-danger-text); 108 | } 109 | 110 | // Contextual backgrounds 111 | // For now we'll leave these alongside the text classes until v4 when we can 112 | // safely shift things around (per SemVer rules). 113 | .bg-primary { 114 | // Given the contrast here, this is the only class to have its color inverted 115 | // automatically. 116 | color: #fff; 117 | .bg-variant(@brand-primary); 118 | } 119 | .bg-success { 120 | .bg-variant(@state-success-bg); 121 | } 122 | .bg-info { 123 | .bg-variant(@state-info-bg); 124 | } 125 | .bg-warning { 126 | .bg-variant(@state-warning-bg); 127 | } 128 | .bg-danger { 129 | .bg-variant(@state-danger-bg); 130 | } 131 | 132 | 133 | // Page header 134 | // ------------------------- 135 | 136 | .page-header { 137 | padding-bottom: ((@line-height-computed / 2) - 1); 138 | margin: (@line-height-computed * 2) 0 @line-height-computed; 139 | border-bottom: 1px solid @page-header-border-color; 140 | } 141 | 142 | 143 | // Lists 144 | // -------------------------------------------------- 145 | 146 | // Unordered and Ordered lists 147 | ul, 148 | ol { 149 | margin-top: 0; 150 | margin-bottom: (@line-height-computed / 2); 151 | ul, 152 | ol { 153 | margin-bottom: 0; 154 | } 155 | } 156 | 157 | // List options 158 | 159 | // Unstyled keeps list items block level, just removes default browser padding and list-style 160 | .list-unstyled { 161 | padding-left: 0; 162 | list-style: none; 163 | } 164 | 165 | // Inline turns list items into inline-block 166 | .list-inline { 167 | .list-unstyled(); 168 | margin-left: -5px; 169 | 170 | > li { 171 | display: inline-block; 172 | padding-left: 5px; 173 | padding-right: 5px; 174 | } 175 | } 176 | 177 | // Description Lists 178 | dl { 179 | margin-top: 0; // Remove browser default 180 | margin-bottom: @line-height-computed; 181 | } 182 | dt, 183 | dd { 184 | line-height: @line-height-base; 185 | } 186 | dt { 187 | font-weight: bold; 188 | } 189 | dd { 190 | margin-left: 0; // Undo browser default 191 | } 192 | 193 | // Horizontal description lists 194 | // 195 | // Defaults to being stacked without any of the below styles applied, until the 196 | // grid breakpoint is reached (default of ~768px). 197 | 198 | @media (min-width: @grid-float-breakpoint) { 199 | .dl-horizontal { 200 | dt { 201 | float: left; 202 | width: (@component-offset-horizontal - 20); 203 | clear: left; 204 | text-align: right; 205 | .text-overflow(); 206 | } 207 | dd { 208 | margin-left: @component-offset-horizontal; 209 | &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present 210 | } 211 | } 212 | } 213 | 214 | // MISC 215 | // ---- 216 | 217 | // Abbreviations and acronyms 218 | abbr[title], 219 | // Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 220 | abbr[data-original-title] { 221 | cursor: help; 222 | border-bottom: 1px dotted @abbr-border-color; 223 | } 224 | .initialism { 225 | font-size: 90%; 226 | text-transform: uppercase; 227 | } 228 | 229 | // Blockquotes 230 | blockquote { 231 | padding: (@line-height-computed / 2) @line-height-computed; 232 | margin: 0 0 @line-height-computed; 233 | font-size: @blockquote-font-size; 234 | border-left: 5px solid @blockquote-border-color; 235 | 236 | p, 237 | ul, 238 | ol { 239 | &:last-child { 240 | margin-bottom: 0; 241 | } 242 | } 243 | 244 | // Note: Deprecated small and .small as of v3.1.0 245 | // Context: https://github.com/twbs/bootstrap/issues/11660 246 | footer, 247 | small, 248 | .small { 249 | display: block; 250 | font-size: 80%; // back to default font-size 251 | line-height: @line-height-base; 252 | color: @blockquote-small-color; 253 | 254 | &:before { 255 | content: '\2014 \00A0'; // em dash, nbsp 256 | } 257 | } 258 | } 259 | 260 | // Opposite alignment of blockquote 261 | // 262 | // Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. 263 | .blockquote-reverse, 264 | blockquote.pull-right { 265 | padding-right: 15px; 266 | padding-left: 0; 267 | border-right: 5px solid @blockquote-border-color; 268 | border-left: 0; 269 | text-align: right; 270 | 271 | // Account for citation 272 | footer, 273 | small, 274 | .small { 275 | &:before { content: ''; } 276 | &:after { 277 | content: '\00A0 \2014'; // nbsp, em dash 278 | } 279 | } 280 | } 281 | 282 | // Quotes 283 | blockquote:before, 284 | blockquote:after { 285 | content: ""; 286 | } 287 | 288 | // Addresses 289 | address { 290 | margin-bottom: @line-height-computed; 291 | font-style: normal; 292 | line-height: @line-height-base; 293 | } 294 | -------------------------------------------------------------------------------- /js/lightbox.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Lightbox v2.7.1 3 | * by Lokesh Dhakar - http://lokeshdhakar.com/projects/lightbox2/ 4 | * 5 | * @license http://creativecommons.org/licenses/by/2.5/ 6 | * - Free for use in both personal and commercial projects 7 | * - Attribution requires leaving author name, author link, and the license info intact 8 | */ 9 | (function(){var a=jQuery,b=function(){function a(){this.fadeDuration=500,this.fitImagesInViewport=!0,this.resizeDuration=700,this.positionFromTop=50,this.showImageNumberLabel=!0,this.alwaysShowNavOnTouchDevices=!1,this.wrapAround=!1}return a.prototype.albumLabel=function(a,b){return"Image "+a+" of "+b},a}(),c=function(){function b(a){this.options=a,this.album=[],this.currentImageIndex=void 0,this.init()}return b.prototype.init=function(){this.enable(),this.build()},b.prototype.enable=function(){var b=this;a("body").on("click","a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]",function(c){return b.start(a(c.currentTarget)),!1})},b.prototype.build=function(){var b=this;a("
        ").appendTo(a("body")),this.$lightbox=a("#lightbox"),this.$overlay=a("#lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".lb-outerContainer"),this.$container=this.$lightbox.find(".lb-container"),this.containerTopPadding=parseInt(this.$container.css("padding-top"),10),this.containerRightPadding=parseInt(this.$container.css("padding-right"),10),this.containerBottomPadding=parseInt(this.$container.css("padding-bottom"),10),this.containerLeftPadding=parseInt(this.$container.css("padding-left"),10),this.$overlay.hide().on("click",function(){return b.end(),!1}),this.$lightbox.hide().on("click",function(c){return"lightbox"===a(c.target).attr("id")&&b.end(),!1}),this.$outerContainer.on("click",function(c){return"lightbox"===a(c.target).attr("id")&&b.end(),!1}),this.$lightbox.find(".lb-prev").on("click",function(){return b.changeImage(0===b.currentImageIndex?b.album.length-1:b.currentImageIndex-1),!1}),this.$lightbox.find(".lb-next").on("click",function(){return b.changeImage(b.currentImageIndex===b.album.length-1?0:b.currentImageIndex+1),!1}),this.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return b.end(),!1})},b.prototype.start=function(b){function c(a){d.album.push({link:a.attr("href"),title:a.attr("data-title")||a.attr("title")})}var d=this,e=a(window);e.on("resize",a.proxy(this.sizeOverlay,this)),a("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var f,g=0,h=b.attr("data-lightbox");if(h){f=a(b.prop("tagName")+'[data-lightbox="'+h+'"]');for(var i=0;ij||e.height>i)&&(e.width/j>e.height/i?(h=j,g=parseInt(e.height/(e.width/h),10),d.width(h),d.height(g)):(g=i,h=parseInt(e.width/(e.height/g),10),d.width(h),d.height(g)))),c.sizeContainer(d.width(),d.height())},e.src=this.album[b].link,this.currentImageIndex=b},b.prototype.sizeOverlay=function(){this.$overlay.width(a(window).width()).height(a(document).height())},b.prototype.sizeContainer=function(a,b){function c(){d.$lightbox.find(".lb-dataContainer").width(g),d.$lightbox.find(".lb-prevLink").height(h),d.$lightbox.find(".lb-nextLink").height(h),d.showImage()}var d=this,e=this.$outerContainer.outerWidth(),f=this.$outerContainer.outerHeight(),g=a+this.containerLeftPadding+this.containerRightPadding,h=b+this.containerTopPadding+this.containerBottomPadding;e!==g||f!==h?this.$outerContainer.animate({width:g,height:h},this.options.resizeDuration,"swing",function(){c()}):c()},b.prototype.showImage=function(){this.$lightbox.find(".lb-loader").hide(),this.$lightbox.find(".lb-image").fadeIn("slow"),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},b.prototype.updateNav=function(){var a=!1;try{document.createEvent("TouchEvent"),a=this.options.alwaysShowNavOnTouchDevices?!0:!1}catch(b){}this.$lightbox.find(".lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(a&&this.$lightbox.find(".lb-prev, .lb-next").css("opacity","1"),this.$lightbox.find(".lb-prev, .lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".lb-prev").show(),a&&this.$lightbox.find(".lb-prev").css("opacity","1")),this.currentImageIndex1&&this.options.showImageNumberLabel?this.$lightbox.find(".lb-number").text(this.options.albumLabel(this.currentImageIndex+1,this.album.length)).fadeIn("fast"):this.$lightbox.find(".lb-number").hide(),this.$outerContainer.removeClass("animating"),this.$lightbox.find(".lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return b.sizeOverlay()})},b.prototype.preloadNeighboringImages=function(){if(this.album.length>this.currentImageIndex+1){var a=new Image;a.src=this.album[this.currentImageIndex+1].link}if(this.currentImageIndex>0){var b=new Image;b.src=this.album[this.currentImageIndex-1].link}},b.prototype.enableKeyboardNav=function(){a(document).on("keyup.keyboard",a.proxy(this.keyboardAction,this))},b.prototype.disableKeyboardNav=function(){a(document).off(".keyboard")},b.prototype.keyboardAction=function(a){var b=27,c=37,d=39,e=a.keyCode,f=String.fromCharCode(e).toLowerCase();e===b||f.match(/x|o|c/)?this.end():"p"===f||e===c?0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1):("n"===f||e===d)&&(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0))},b.prototype.end=function(){this.disableKeyboardNav(),a(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),a("select, object, embed").css({visibility:"visible"})},b}();a(function(){{var a=new b;new c(a)}})}).call(this); 10 | --------------------------------------------------------------------------------