├── README.md ├── _config.yml ├── layout ├── .DS_Store ├── _components │ ├── banner.ejs │ ├── changyan.ejs │ ├── pagination.ejs │ └── slidebar.ejs ├── _layout.ejs ├── _layout │ ├── body.ejs │ ├── footer.ejs │ └── header.ejs ├── _partials │ ├── .DS_Store │ ├── post_per.ejs │ ├── post_sidebar.ejs │ ├── project_per.ejs │ ├── recent_posts.ejs │ └── recent_projects.ejs ├── archive.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── page.ejs ├── post.ejs ├── post_index.ejs ├── project.ejs ├── project_index.ejs └── tag.ejs ├── scripts ├── generatorBefore.js ├── generatorPost.js ├── generatorPostIndex.js ├── generatorProject.js ├── generatorProjectIndex.js ├── helper.js ├── processorProject.js └── renderBefore.js └── source ├── .DS_Store ├── css ├── .DS_Store ├── animate.css ├── bootstrap.min.css ├── font-awesome.min.css ├── i_post.css ├── i_slidebar.css ├── linear-icons.css ├── magnific-popup.css ├── share.min.css └── style.css ├── fonts ├── FontAwesome.otf ├── Linearicons-Free-.eot ├── Linearicons-Free-w118d.eot ├── Linearicons-Free-w118d.svg ├── Linearicons-Free-w118d.ttf ├── Linearicons-Free-w118d.woff ├── Linearicons-Free-w118d.woff2 ├── fontawesome-webfont-.eot ├── fontawesome-webfont-v=4.7.0.eot ├── fontawesome-webfont-v=4.7.0.svg ├── fontawesome-webfont-v=4.7.0.ttf ├── fontawesome-webfont-v=4.7.0.woff ├── fontawesome-webfont-v=4.7.0.woff2 ├── glyphicons-halflings-regular.eot-.html ├── glyphicons-halflings-regular.eot.html ├── glyphicons-halflings-regular.svg.html ├── glyphicons-halflings-regular.ttf.html ├── glyphicons-halflings-regular.woff.html ├── glyphicons-halflings-regular.woff2.html ├── iconfont.eot ├── iconfont.svg ├── iconfont.ttf └── iconfont.woff ├── images ├── .DS_Store ├── about-img.jpg ├── about-me-img.jpg ├── author.jpg ├── banner-bg.jpg ├── banner-bg2.jpg ├── banner-bg3.jpg ├── blog-post1.jpg ├── blog-post2.jpg ├── blog-post3.jpg ├── blog-post4.jpg ├── blog-post6.jpg ├── contact-img.jpg ├── content-img-small1.jpg ├── content-img-small2.jpg ├── favicon.png ├── logo.png ├── logo2.png ├── logo3.png ├── logo4.png ├── m-project1.jpg ├── m-project11.jpg ├── m-project3.jpg ├── m-project5.jpg ├── m-project7.jpg ├── m-project9.jpg ├── post-img1.jpg ├── post-img2.jpg ├── post-img3.jpg ├── post-img5.jpg ├── post-small1.jpg ├── post-small2.jpg ├── post_preview_default.jpg ├── project-img1.jpg ├── project-img2.jpg ├── project-img3.jpg ├── project1.jpg ├── project10.jpg ├── project11.jpg ├── project12.jpg ├── project2.jpg ├── project3.jpg ├── project4.jpg ├── project5.jpg ├── project6.jpg ├── project7.jpg ├── project8.jpg ├── project9.jpg ├── project_preview_default.jpg ├── project_preview_more.jpg ├── team1.jpg ├── team2.jpg ├── team3.jpg ├── user-img1.jpg ├── user-img2.jpg ├── user-img3.jpg └── user-img4.jpg └── js ├── .DS_Store ├── bootstrap.min.js ├── custom.js ├── form-scripts.js ├── jquery.countTo.js ├── jquery.easing.min.js ├── jquery.lettering.js ├── jquery.magnific-popup.min.js ├── jquery.min.js ├── jquery.qrcode.min.js ├── jquery.share.js ├── jquery.shuffle.min.js ├── jquery.textillate.js ├── map.js ├── preloader.js ├── project_index.js ├── scrolling-nav.js ├── social-share.min.js ├── stickUp.min.js ├── test.js └── validator.min.js /README.md: -------------------------------------------------------------------------------- 1 | ### 关于 Minimal 2 | 3 | > Minimal 简介、优雅、尊贵。一款能展示项目的主题, 致无私的开源贡献者。 4 | 5 | ### 演示地址 6 | 7 | [前往演示地址](http://blog.ckryo.com/) 8 | 9 | ### 安装 10 | 11 | 在终端窗口下,定位到 Hexo 站点目录下。使用 Git checkout 代码: 12 | ``` 13 | $ cd your-hexo-site 14 | $ git clone https://github.com/ckryo/hexo-theme-minimal themes/minimal 15 | ``` 16 | 17 | ### 启用主题 18 | 19 | 与所有 Hexo 主题启用的模式一样。 当 `git clone` 完成后,打开 站点 **配置文件** , 找到 theme 字段,并将其值更改为 `minimal`。 20 | 21 | ``` 22 | theme: minimal 23 | ``` 24 | 如果您的电脑中尚未安装所需要的程序,请根据以下安装指示完成安装。 25 | 26 | ## 主题设定 27 | 以下是主题配置文件项目说明: 28 | 29 | ```ymal 30 | site: 31 | logo: 网站logo - 文字logo 32 | title: 网站标题 33 | 34 | banner: 网站上部 - 导航下面banner 区域样式 35 | title: 自定义显示标题 36 | description: 副标题 37 | background_image: 背景图片 38 | 39 | author: 网站侧边栏的作者信息 40 | avatar: 头像图片地址 41 | nick: 昵称 42 | description: 个人简介 43 | 44 | menu: 导航菜单 45 | 首页: / 46 | 项目: /project/index.html 47 | 文章: /post/index.html 48 | 关于我: /about.html 49 | Minimal: /project/2016/04/28/hexo-minimal.html 50 | 51 | menu_icons: 导航菜单图标 52 | Minimal: tachometer 53 | 54 | # 集成第三方服务 55 | vendors: 56 | baidu_analytics: 百度统计 57 | 58 | # 社会化评论, 畅言 59 | changyan: 60 | enable: true 61 | app_id: cysYE5nWR 62 | conf: prod_ea59e8a942c2c4c0e72b24ed00ecddc9 63 | 64 | ``` 65 | 66 | 其它配置项说明: 67 | 1. 项目目录 68 | 69 | 定位到 `your-hexo-site-path/source` 目录下, 新增 `_projects` 文件目录; 将项目文章放置到该文件目录下即可。 70 | 71 | 2. Front-matter 72 | 73 | ``` 74 | # 公共属性 75 | preview: 类缩图 76 | comments: 是否添加评论 77 | 78 | # project属性 79 | date: 项目创建时间 80 | description: 项目描述 81 | home_url: 项目主页 82 | demo_url: 演示地址 or 下载链接 83 | ``` 84 | 85 | 86 | ## 致歉 87 | 由于目前精力有限,该项目还有诸多不足之处,包括`分类页`,`标签云`等,还请各位海涵,在以后的时间里,将会不断更新完善。 88 | 同时也接受各种形式的贡献,包括不限于提交问题与需求,修复代码。等待您的Pull Request。 89 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | logo: Ckryo 4 | title: 'Ckryo - 技术栈' 5 | keywords: Ckryo, php, laravel, vue, iview, ios, 全栈工程师, 创业 6 | description: Ckryo - 技术栈, 分享各类新奇有趣、科技、技术、开发,各类互联网优质精选文章以及优秀开源项目; -- by Ckryo。 7 | 8 | post: 9 | # 文章模块标题 10 | title: 推荐文章 11 | # 文章模块副标题 12 | description: 新奇有趣、科技、技术、开发,各类互联网优质精选文章 13 | 14 | banner: 15 | title: Ckryo - 技术栈 16 | description: 优秀技术资源分享 17 | background_image: /images/banner-bg.jpg 18 | 19 | author: 20 | avatar: '/images/avatar.gif' 21 | nick: 'Ckryo' 22 | description: '曾担任 微阿里(北京)科技有限公司 、微阿里(北京)品牌管理有限公司 CEO 、沈阳盾盾科技有限公司 创始人 之一, 曾从事过 VB,Andorid,PHP,Node,H5 项目开发,现主要从事Swift开发,从swift1.2开始使用swift代替其他语言进行完整的项目开发,精通IOS开发,拥有Mac软件开发经验,目前正在利用swift进行服务端开发...' 23 | 24 | 25 | # main menu navigation 26 | menu: 27 | 首页: / 28 | 项目: /project/index.html 29 | 文章: /post/index.html 30 | 关于我: /about.html 31 | Minimal: /project/2016/04/28/hexo-minimal.html 32 | 33 | menu_icons: 34 | Minimal: tachometer 35 | 36 | # 集成第三方服务 37 | vendors: 38 | # 社会化评论, 畅言 39 | changyan: 40 | app_id: cysYE5nWR 41 | conf: prod_ea59e8a942c2c4c0e72b24ed00ecddc9 42 | -------------------------------------------------------------------------------- /layout/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/layout/.DS_Store -------------------------------------------------------------------------------- /layout/_components/banner.ejs: -------------------------------------------------------------------------------- 1 |
style="background-image: url(<%-theme.banner.background_image %>)" <% } %>> 2 | 11 | 12 |
-------------------------------------------------------------------------------- /layout/_components/changyan.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.vendors.changyan && page.comments != false) { %> 2 |
3 | 4 |
5 | 43 |
44 | 45 | <% } %> 46 | -------------------------------------------------------------------------------- /layout/_components/pagination.ejs: -------------------------------------------------------------------------------- 1 | <% if (page.prev_link || page.next_link) { %> 2 | 17 | <% } %> -------------------------------------------------------------------------------- /layout/_components/slidebar.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%-theme.author.nick %>

4 |

<%-theme.author.description %>

5 | 10 | 32 |
-------------------------------------------------------------------------------- /layout/_layout.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var pageTitle = page.title || config.subtitle || ''; 3 | if (is_archive()) pageTitle = 'Archives'; 4 | if (is_tag()) pageTitle = 'Tag: ' + page.tag; 5 | if (is_category()) pageTitle = 'Category: ' + page.category; 6 | if (is_month()) pageTitle += ': ' + page.month + '/' + page.year; 7 | if (is_year()) pageTitle += ': ' + page.year; 8 | pageTitle += ' [ ' + config.title + ' ]'; 9 | %> 10 | 11 | 12 | 13 | 14 | 15 | <%=pageTitle%> 16 | <% if (theme.stylesheets !== undefined && theme.stylesheets.length > 0) { %> 17 | 18 | <% theme.stylesheets.forEach(function(url) { %> 19 | 20 | <% }); %> 21 | <% } %> 22 | 23 | 24 | 25 | 32 | 33 |
34 |
35 | <%- body %> 36 |
37 |
38 | 39 |
40 |
41 | Site by <%=config.author%> using 42 | hexo blog framework. 43 |
44 | Home 45 |
46 |
47 | 48 | <% if (theme.scripts !== undefined && theme.scripts.length > 0) { %> 49 | 50 | <% theme.scripts.forEach(function(url) { %> 51 | 52 | <% }); %> 53 | <% } %> 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /layout/_layout/body.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 | 7 | 8 |
9 | 10 | 43 | 44 | 45 | <%-partial('_components/banner')%> 46 | 47 |
48 | 49 | 50 | <%- body %> 51 | 52 | -------------------------------------------------------------------------------- /layout/_layout/footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /layout/_layout/header.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%-theme.site.title %> 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /layout/_partials/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/layout/_partials/.DS_Store -------------------------------------------------------------------------------- /layout/_partials/post_per.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (page.posts.length > 0) { %> 3 | <% page.posts.each(function(post) { %> 4 |
5 |
6 | <% if (post._preview) { %> 7 | 8 | <% } %> 9 | 34 | 35 |
36 | 37 |
38 |
 
39 | 40 | <% }); %> 41 | <% } %> -------------------------------------------------------------------------------- /layout/_partials/post_sidebar.ejs: -------------------------------------------------------------------------------- 1 | 123 | 124 |
125 |
126 | 130 |
131 |
132 |
133 |
134 | <%- toc(page.content, {class: 'nav'}) %> 135 |
136 |
137 |
138 | <%-partial('_components/slidebar') %> 139 |
140 |
141 |
142 |
143 | 144 | 145 | -------------------------------------------------------------------------------- /layout/_partials/project_per.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <% if (site.projects.length > 0) { %> 4 | <% site.projects.sort('date', -1).limit(10).each(function(post) { %> 5 |
6 |
7 |
8 |
9 |

10 |

<%=post.title%>

11 | <%=post.description%> 12 |

13 |
14 | 22 | 23 |
24 | 25 |
26 | 27 |
 
28 | 29 | <% }); %> 30 | <% } %> 31 | -------------------------------------------------------------------------------- /layout/_partials/recent_posts.ejs: -------------------------------------------------------------------------------- 1 | 11 |
12 |
13 | 16 |

<%-theme.post.description %>

17 |
18 | <% recent_posts().forEach(function (item) { %> 19 | 20 |
21 |
22 | 23 |
24 |
<%-item.title %>
25 | 28 |

29 | <%-post_abstract(item) %> 30 |

31 |
32 | 33 |
34 | 35 |
36 | 37 | 38 | <% }) %> 39 |
40 | 41 |
42 | 43 |
全部文章
44 |
-------------------------------------------------------------------------------- /layout/_partials/recent_projects.ejs: -------------------------------------------------------------------------------- 1 | 47 |
48 |
49 | 50 | 56 | 57 | 101 | 102 |
103 | 104 | 105 |
全部项目
106 |
-------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | var categoriesList = list_categories({ show_count: false }), 4 | tagsList = list_tags({ show_count: false }), 5 | archivesList = list_archives({ show_count: false }); 6 | %> 7 | 8 | <% if (!is_year()) { %> 9 |
10 | 11 |

Archives

12 | 13 | <% if (theme.atom) { %> 14 |

15 | The feed is available via 16 | atom. 17 |

18 |
19 | <% } %> 20 | 21 | 29 |
30 | 31 | 39 |
40 | 41 | 49 | 50 |
51 | <% } else { %> 52 | 53 |

<%=page.month + '/' + page.year%>

54 | 55 | <% page.posts.each(function(article) { %> 56 |
57 | <% if (article.link) { %> 58 | 59 | 60 | <%=article.title || 'No Title'%> 61 | 62 | <% } else { %> 63 | 64 | 65 | <%=article.title || 'No Title'%> 66 | 67 | <% } %> 68 | 71 |
72 | <% }); %> 73 | 74 | <% } %> 75 | 76 | <%-partial('partials/pagination')%> 77 | -------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |

<%=page.category%>

4 | <% page.posts.each(function(article) { %> 5 |
6 | <% if (article.link) { %> 7 | 8 | <%=article.title || 'No Title'%> 9 | 10 | <% } else { %> 11 | 12 | <%=article.title || 'No Title'%> 13 | 14 | <% } %> 15 | 18 |
19 | <% }); %> 20 |
21 | 22 | <%-partial('partials/pagination')%> 23 | -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <%-partial('_partials/recent_projects')%> 7 | 8 | 9 | 10 | <%-partial('_partials/recent_posts')%> 11 | 12 | 13 | -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%-partial('_layout/header')%> 4 | <%-partial('_layout/body')%> 5 | <%-partial('_layout/footer')%> 6 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |

<%=page.title%>

4 | <%-page.content%> 5 |
6 | 7 | <%-partial('partials/pagination')%> 8 | -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 | 11 | 35 | 36 |
37 | 38 | <%- partial('_components/changyan') %> 39 |
40 | 41 | 42 | <%- partial('_partials/post_sidebar') %> 43 |
44 | 45 |
46 | 47 |
48 | -------------------------------------------------------------------------------- /layout/post_index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | <%-partial('_partials/post_per')%> 11 |
12 | 13 | 14 |
15 | <%-partial('_components/slidebar') %> 16 |
17 | 18 |
19 |
20 | 21 | 22 | 23 | <%-partial('_components/pagination')%> 24 | 25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /layout/project.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 |
11 | 12 | <%-get_content(page) %> 13 |
14 | <%- partial('_components/changyan') %> 15 |
16 | 17 | 18 | 19 |
20 |
21 |

<%=page.title%>

22 | <%=page.description%> 23 |

项目信息

24 |
25 | 28 |
29 |

标签: 30 | <% page.tags.forEach(function (tag, index) { %> 31 | <% if (index > 0) { %>,<% } %><%-tag.name %> 32 | <% }); %> 33 |

34 |
35 |
36 |

创建时间: <%- page.date ? date(page.date, 'YYYY年MM月') : ' - ' %>

37 |
38 |
39 | 40 |
41 | <% if (page.home_url) { %> 42 | 项目主页 43 | <% } else { %> 44 | 45 | <% } %> 46 | <% if (page.demo_url) { %> 47 | 演示 or 下载 48 | <% } %> 49 |
50 | 51 |
52 | 53 |
54 | 55 |
56 |
57 | 58 | 59 |
-------------------------------------------------------------------------------- /layout/project_index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 |
7 | 8 |
9 | <%-partial('_partials/project_per')%> 10 |
11 | 12 | 13 |
14 | <%-partial('_components/slidebar') %> 15 |
16 | 17 |
18 |
19 | 20 | 21 | 22 | <%-partial('_components/pagination')%> 23 | 24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /layout/tag.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |

<%=page.tag%>

4 | <% page.posts.each(function(article) { %> 5 |
6 | <% if (article.link) { %> 7 | 8 | <%=article.title || 'No Title'%> 9 | 10 | <% } else { %> 11 | 12 | <%=article.title || 'No Title'%> 13 | 14 | <% } %> 15 | 18 |
19 | <% }); %> 20 |
21 | 22 | <%-partial('partials/pagination')%> 23 | -------------------------------------------------------------------------------- /scripts/generatorBefore.js: -------------------------------------------------------------------------------- 1 | var stripIndent = require('strip-indent'); 2 | var util = require('hexo-util'); 3 | var highlight = util.highlight; 4 | 5 | var highlight_config = hexo.config.highlight; 6 | var highlight_options = { 7 | autoDetect: highlight_config.auto_detect, 8 | gutter: highlight_config.line_number, 9 | tab: highlight_config.tab_replace 10 | }; 11 | 12 | hexo.on('generateBefore', function() { 13 | var Post = hexo.model('Post'); 14 | 15 | var projects = Post.filter(function(item) { 16 | return item.is_project; 17 | }); 18 | projects.forEach(function(item) { 19 | // 将project的默认布局设置为 project 20 | if (item.layout == 'post') item.layout = 'project'; 21 | 22 | // 添加预览图获取方式 Front-matter 可以设置 preview , 其次从文章中获取首图 ,再次使用默认图 23 | if (item.preview) return item._preview = item.preview; 24 | item.__defineGetter__('preview', function() { 25 | if (item._preview) return item._preview; 26 | return '/images/project_preview_default.jpg'; 27 | }); 28 | 29 | item.content = hexo.render.renderSync({ text: item._content, engine: 'md' }, { 30 | highlight: function(code) { 31 | return highlight(stripIndent(code), highlight_options) 32 | .replace(/{/g, '{') 33 | .replace(/}/g, '}'); 34 | } 35 | }).replace(/
/g, '').replace(/<\/code><\/pre>/g, '');
36 |     });
37 | 
38 |     hexo.locals.set('projects', projects);
39 | 
40 | 
41 | 
42 |     var recent_projects = hexo.locals.get('projects').sort('date', -1).limit(12);
43 |     var recent_project_tags = [];
44 |     var recent_project_tag_temps = {};
45 |     recent_projects.forEach(function(item) {
46 | 
47 |         item.tag_group = "[" + item.tags.map(function(tag) {
48 |             return '"' + tag._id + '"';
49 |         }).toString() + "]";
50 |         item.tag_label = item.tags.map(function(tag) {
51 |             return tag.name;
52 |         }).toString();
53 | 
54 |         item.tags.forEach(function(tag) {
55 |             if (recent_project_tag_temps[tag._id]) {
56 |                 recent_project_tag_temps[tag._id].count += 1;
57 |             } else {
58 |                 recent_project_tag_temps[tag._id] = {
59 |                     id: tag._id,
60 |                     name: tag.name,
61 |                     count: 1
62 |                 };
63 |             }
64 |         });
65 |     });
66 | 
67 |     for (i in recent_project_tag_temps) {
68 |         recent_project_tags.push(recent_project_tag_temps[i]);
69 |     }
70 |     recent_project_tag_temps = null;
71 |     recent_project_tags = recent_project_tags.sort(function(a, b) {
72 |         return a.count < b.count;
73 |     });
74 |     hexo.locals.set('recent_projects', recent_projects);
75 |     hexo.locals.set('recent_project_tags', recent_project_tags);
76 | 
77 | });
78 | 


--------------------------------------------------------------------------------
/scripts/generatorPost.js:
--------------------------------------------------------------------------------
 1 | 
 2 | hexo.extend.generator.register('post', function(locals) {
 3 |     return locals.posts.map(function(post) {
 4 |         return {
 5 |             path: post.path,
 6 |             data: post,
 7 |             layout: 'post'
 8 |         };
 9 |     });
10 | });
11 | 


--------------------------------------------------------------------------------
/scripts/generatorPostIndex.js:
--------------------------------------------------------------------------------
1 | var pagination = require('hexo-pagination');
2 | 
3 | hexo.extend.generator.register('post_index', function(locals) {
4 |     return pagination('/post', locals.posts.sort('date', -1), {
5 |         format: 'page/%d/',
6 |         layout: 'post_index'
7 |     });
8 | });
9 | 


--------------------------------------------------------------------------------
/scripts/generatorProject.js:
--------------------------------------------------------------------------------
 1 | 
 2 | hexo.extend.generator.register('project', function(locals) {
 3 |     return locals.projects.map(function(project) {
 4 |         return {
 5 |             path: project.path,
 6 |             data: project,
 7 |             layout: 'project'
 8 |         };
 9 |     });
10 | });
11 | 


--------------------------------------------------------------------------------
/scripts/generatorProjectIndex.js:
--------------------------------------------------------------------------------
1 | var pagination = require('hexo-pagination');
2 | 
3 | hexo.extend.generator.register('project_index', function(locals) {
4 |     return pagination('/project', locals.projects, {
5 |         format: 'page/%d/',
6 |         layout: 'project_index'
7 |     });
8 | });


--------------------------------------------------------------------------------
/scripts/helper.js:
--------------------------------------------------------------------------------
 1 | hexo.extend.helper.register('recent_posts', function() {
 2 |     return hexo.locals.get('posts').sort('date', -1).limit(3);
 3 | });
 4 | 
 5 | hexo.extend.helper.register('recent_projects', function() {
 6 |     return hexo.locals.get('recent_projects');
 7 | });
 8 | 
 9 | hexo.extend.helper.register('recent_project_tags', function() {
10 |     return hexo.locals.get('recent_project_tags');
11 | });
12 | 
13 | hexo.extend.helper.register('post_abstract', function(post) {
14 |     if (post.excerpt) {
15 |         return post.excerpt.replace(/<[^>]*>|/g, "");
16 |     }
17 |     return post.content.replace(/<[^>]*>|/g, "");
18 | });
19 | 
20 | hexo.extend.helper.register('get_project', function(post) {
21 |     return hexo.locals.get('projects').find({ _id: post._id });
22 | });
23 | 
24 | 
25 | hexo.extend.helper.register('get_content', function(post) {
26 |     if (post.content) return post.content;
27 |     var stripIndent = require('strip-indent');
28 |     var util = require('hexo-util');
29 |     var highlight = util.highlight;
30 |     var config = hexo.config.highlight;
31 |     var options = {
32 |         autoDetect: config.auto_detect,
33 |         gutter: config.line_number,
34 |         tab: config.tab_replace
35 |     };
36 | 
37 |     return post.content = hexo.render.renderSync({ text: post._content, engine: 'md' }, {
38 |         highlight: function(code) {
39 |             return highlight(stripIndent(code), options)
40 |                 .replace(/{/g, '{')
41 |                 .replace(/}/g, '}');
42 |         }
43 |     }).replace(/
/g, '').replace(/<\/code><\/pre>/g, '');
44 | });


--------------------------------------------------------------------------------
/scripts/processorProject.js:
--------------------------------------------------------------------------------
  1 | 'use strict';
  2 | 
  3 | var common = require('hexo/lib/plugins/processor/common');
  4 | var yfm = require('hexo-front-matter');
  5 | var Promise = require('bluebird');
  6 | var pathFn = require('path');
  7 | var util = require('hexo-util');
  8 | var slugize = util.slugize;
  9 | var Permalink = util.Permalink;
 10 | 
 11 | var permalink;
 12 | 
 13 | var preservedKeys = {
 14 |     title: true,
 15 |     year: true,
 16 |     month: true,
 17 |     day: true,
 18 |     i_month: true,
 19 |     i_day: true
 20 | };
 21 | 
 22 | // 浏览文件
 23 | function scanAssetDir(post) {
 24 |     if (!hexo.config.post_asset_folder) return;
 25 | 
 26 |     var assetDir = post.asset_dir;
 27 |     var baseDir = hexo.base_dir;
 28 |     var baseDirLength = baseDir.length;
 29 |     var PostAsset = hexo.model('PostAsset');
 30 | 
 31 |     return fs.stat(assetDir).then(function(stats) {
 32 |         if (!stats.isDirectory()) return [];
 33 | 
 34 |         return fs.listDir(assetDir);
 35 |     }).catch(function(err) {
 36 |         if (err.cause && err.cause.code === 'ENOENT') return [];
 37 |         throw err;
 38 |     }).filter(function(item) {
 39 |         return !common.isTmpFile(item) && !common.isHiddenFile(item);
 40 |     }).map(function(item) {
 41 |         var id = pathFn.join(assetDir, item).substring(baseDirLength).replace(/\\/g, '/');
 42 |         var asset = PostAsset.findById(id);
 43 |         if (asset) return;
 44 | 
 45 |         return PostAsset.save({
 46 |             _id: id,
 47 |             post: post._id,
 48 |             slug: item,
 49 |             modified: true
 50 |         });
 51 |     });
 52 | }
 53 | 
 54 | // 给文件命名
 55 | function parseFilename(config, path) {
 56 |     config = config.substring(0, config.length - pathFn.extname(config).length);
 57 |     path = path.substring(0, path.length - pathFn.extname(path).length);
 58 | 
 59 |     if (!permalink || permalink.rule !== config) {
 60 |         permalink = new Permalink(config, {
 61 |             segments: {
 62 |                 year: /(\d{4})/,
 63 |                 month: /(\d{2})/,
 64 |                 day: /(\d{2})/,
 65 |                 i_month: /(\d{1,2})/,
 66 |                 i_day: /(\d{1,2})/
 67 |             }
 68 |         });
 69 |     }
 70 | 
 71 |     var data = permalink.parse(path);
 72 | 
 73 |     if (data) {
 74 |         return data;
 75 |     }
 76 | 
 77 |     return {
 78 |         title: slugize(path)
 79 |     };
 80 | }
 81 | 
 82 | 
 83 | function processPost(file) {
 84 |     if (file.params[0] != file.path) return;
 85 |     var Post = hexo.model('Post');
 86 |     var db_key = file.path;
 87 |     var path = db_key.replace('_projects/', '');
 88 |     var config = hexo.config;
 89 |     var timezone = config.timezone;
 90 |     var categories, tags;
 91 |     
 92 |     return Promise.all([
 93 |         file.stat(),
 94 |         file.read()
 95 |     ]).spread(function(stats, content) {
 96 |         var data = yfm(content);
 97 |         var info = parseFilename(config.new_post_name, path);
 98 |         var keys = Object.keys(info);
 99 |         var key;
100 | 
101 |         data.source = db_key;
102 |         data.raw = content;
103 |         data.slug = info.title;
104 |         data.is_project = true;
105 | 
106 |         if (file.params.published) {
107 |             if (!data.hasOwnProperty('published')) data.published = true;
108 |         } else {
109 |             data.published = false;
110 |         }
111 | 
112 |         for (var i = 0, len = keys.length; i < len; i++) {
113 |             key = keys[i];
114 |             if (!preservedKeys[key]) data[key] = info[key];
115 |         }
116 | 
117 |         if (data.date) {
118 |             data.date = common.toDate(data.date);
119 |         } else if (info && info.year && (info.month || info.i_month) && (info.day || info.i_day)) {
120 |             data.date = new Date(
121 |                 info.year,
122 |                 parseInt(info.month || info.i_month, 10) - 1,
123 |                 parseInt(info.day || info.i_day, 10)
124 |             );
125 |         }
126 | 
127 |         if (data.date) {
128 |             if (timezone) data.date = common.timezone(data.date, timezone);
129 |         } else {
130 |             data.date = stats.birthtime;
131 |         }
132 | 
133 |         data.updated = common.toDate(data.updated);
134 | 
135 |         if (data.updated) {
136 |             if (timezone) data.updated = common.timezone(data.updated, timezone);
137 |         } else {
138 |             data.updated = stats.mtime;
139 |         }
140 | 
141 |         if (data.category && !data.categories) {
142 |             data.categories = data.category;
143 |             delete data.category;
144 |         }
145 | 
146 |         if (data.tag && !data.tags) {
147 |             data.tags = data.tag;
148 |             delete data.tag;
149 |         }
150 | 
151 |         categories = data.categories || [];
152 |         tags = data.tags || [];
153 | 
154 |         if (!Array.isArray(categories)) categories = [categories];
155 |         if (!Array.isArray(tags)) tags = [tags];
156 | 
157 |         if (data.photo && !data.photos) {
158 |             data.photos = data.photo;
159 |             delete data.photo;
160 |         }
161 | 
162 |         if (data.photos && !Array.isArray(data.photos)) {
163 |             data.photos = [data.photos];
164 |         }
165 | 
166 |         if (data.link && !data.title) {
167 |             data.title = data.link.replace(/^https?:\/\/|\/$/g, '');
168 |         }
169 | 
170 |         if (data.permalink) {
171 |             data.slug = data.permalink;
172 |             delete data.permalink;
173 |         }
174 | 
175 |         // FIXME: Data may be inserted when reading files. Load it again to prevent
176 |         // race condition. We have to solve this in warehouse.
177 |         var doc = Post.findOne({ source: db_key });
178 | 
179 |         if (doc) {
180 |             return doc.replace(data);
181 |         }
182 | 
183 |         return Post.insert(data);
184 |     }).then(function(doc) {
185 |         return Promise.all([
186 |             doc.setCategories(categories),
187 |             doc.setTags(tags),
188 |             scanAssetDir(doc)
189 |         ]);
190 |     });
191 | }
192 | 
193 | hexo.extend.processor.register('_projects/*.md', processPost);
194 | 


--------------------------------------------------------------------------------
/scripts/renderBefore.js:
--------------------------------------------------------------------------------
 1 | 
 2 | hexo.extend.filter.register('before_post_render', function(data) {
 3 |     var photos = data._content.match(/\!\[.*?\]\(.*?\)/g);
 4 |     if (photos) {
 5 |         data.photos = photos.map(function(item) {
 6 |             return item.replace(/\!\[.*?\]\(/g, '').replace(/\)/g, '');
 7 |         });
 8 |     } else {
 9 |         data.photos = [];
10 |     }
11 | 
12 |     // 添加预览图获取方式 Front-matter 可以设置 preview , 其次从文章中获取首图 ,再次使用默认图
13 |     if (data.preview) return data._preview = data.preview;
14 |     data.__defineGetter__('preview', function() {
15 |         if (this._preview && typeof this._preview == "string") return this._preview;
16 |         if (this.photos.length > 0) return this.photos[0];
17 |         return '/images/post_preview_default.jpg';
18 |     });
19 | 
20 |     
21 | 
22 |     return data;
23 | });


--------------------------------------------------------------------------------
/source/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/.DS_Store


--------------------------------------------------------------------------------
/source/css/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/css/.DS_Store


--------------------------------------------------------------------------------
/source/css/i_post.css:
--------------------------------------------------------------------------------
  1 | article.post-item .post-meta .post-date:before {
  2 |   content: '发表于:';
  3 |   display: inline-block;
  4 |   margin-right: 3px;
  5 |   color: #ccc;
  6 | }
  7 | article.post-item .post-meta .post-date {
  8 |     display: inline-block;
  9 |     font-size: 14px;
 10 |     line-height: 1.3;
 11 |     padding-bottom: 10px;
 12 |     border-bottom: 1px solid rgba(255, 255, 255, 0.2);
 13 | }
 14 | 
 15 | article.post-item .post-meta .post-author:before {
 16 |     content: '分类';
 17 |     margin-left: 10px;
 18 |     margin-right: 5px;
 19 |     display: inline-block;
 20 |     font-size: 11px;
 21 |     color: #ccc;
 22 |     text-decoration: none;
 23 |     padding-top: 10px;
 24 | }
 25 | 
 26 | article.post-item .post-meta .post-author {
 27 |     display: inline-block;
 28 |     font-size: 13px;
 29 |     color: #c39d6d;
 30 |     text-decoration: none;
 31 |     padding-top: 10px;
 32 | }
 33 | 
 34 | article.post-item .post-meta .post-author:hover {
 35 |     color: #c39d6d;
 36 | }
 37 | 
 38 | .post-tag {
 39 |     display: inline-block;
 40 |     font-size: 12px;
 41 |     font-weight: 900;
 42 |     color: #c39d6d;
 43 |     background-color: transparent;
 44 |     margin-left: 5px;
 45 |     margin-top: 10px;
 46 | }
 47 | 
 48 | .post-tag:before {
 49 |     content: '#';
 50 |     display: inline-block;
 51 |     margin-right: 2px;
 52 | }
 53 | 
 54 | .post-tag:hover {
 55 |     text-shadow: 0 3px 3px #c39d6d;
 56 | }
 57 | 
 58 | @media (min-width: 768px) {
 59 |     article.post-item {
 60 |         position: relative;
 61 |         padding-left: 126px;
 62 |     }
 63 | 
 64 |     article.post-item .post-meta {
 65 |         position: absolute;
 66 |         width: 100px;
 67 |         top: 0;
 68 |         left: 0;
 69 |         color: #fff;
 70 |         text-align: center;
 71 |         background-color: #333;
 72 |         padding: 18px 20px;
 73 |         cursor: pointer;
 74 |     }
 75 |     article.post-item .post-meta .post-date:before {
 76 |       display: none;
 77 |       content: '';
 78 |       margin: 0;
 79 |     }
 80 |     article.post-item .post-meta .post-date:before {
 81 |       display: block;
 82 |       color: #fff;
 83 |     }
 84 |     article.post-item .post-meta .post-author:before {
 85 |       display: block;
 86 |       margin: 0;
 87 |     }
 88 |     article.post-item .post-meta .post-author {
 89 |       display: block;
 90 |       color: #fff;
 91 |     }
 92 | }
 93 | 
 94 | .section-description {
 95 |     line-height: 24px;
 96 | }
 97 | 
 98 | pre,
 99 | .highlight {
100 |     overflow: auto;
101 |     margin: 20px 0;
102 |     padding: 0;
103 |     font-size: 13px;
104 |     color: #4d4d4c;
105 |     background: #f7f7f7;
106 |     line-height: 1.6;
107 | }
108 | 
109 | pre,
110 | code {
111 |     font-family: 'PT Mono', consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace;
112 |     border: none;
113 | }
114 | 
115 | code {
116 |     padding: 2px 4px;
117 |     word-wrap: break-word;
118 |     color: #555;
119 |     background: #eee;
120 |     border-radius: 3px;
121 |     font-size: 13px;
122 | }
123 | 
124 | pre code {
125 |     display: inline-block;
126 |     padding: 10px 20px;
127 |     color: #4d4d4c;
128 |     background: none;
129 |     text-shadow: none;
130 | }
131 | 
132 | .highlight {
133 |     border-radius: 1px;
134 | }
135 | 
136 | .highlight pre {
137 |     border: none;
138 |     margin: 0;
139 |     padding: 10px 0;
140 | }
141 | 
142 | .highlight table {
143 |     margin: 0;
144 |     width: auto;
145 |     border: none;
146 | }
147 | 
148 | .highlight td {
149 |     border: none;
150 |     padding: 0;
151 | }
152 | 
153 | .highlight figcaption {
154 |     font-size: 1em;
155 |     color: #4d4d4c;
156 |     line-height: 1em;
157 |     margin-bottom: 1em;
158 | }
159 | 
160 | .highlight figcaption:before,
161 | .highlight figcaption:after {
162 |     content: " ";
163 |     display: table;
164 | }
165 | 
166 | .highlight figcaption:after {
167 |     clear: both;
168 | }
169 | 
170 | .highlight figcaption a {
171 |     float: right;
172 |     color: #4d4d4c;
173 | }
174 | 
175 | .highlight figcaption a:hover {
176 |     border-bottom-color: #4d4d4c;
177 | }
178 | 
179 | .highlight .gutter pre {
180 |     padding-left: 10px;
181 |     padding-right: 10px;
182 |     color: #869194;
183 |     text-align: right;
184 |     background-color: #eff2f3;
185 | }
186 | 
187 | .highlight .code pre {
188 |     padding-left: 10px;
189 |     padding-right: 10px;
190 |     background-color: #f7f7f7;
191 | }
192 | 
193 | .highlight .line {
194 |     height: 20px;
195 | }
196 | 
197 | .gutter {
198 |     -webkit-user-select: none;
199 |     -moz-user-select: none;
200 |     -ms-user-select: none;
201 |     user-select: none;
202 | }
203 | 
204 | .gist table {
205 |     width: auto;
206 | }
207 | 
208 | .gist table td {
209 |     border: none;
210 | }
211 | 
212 | pre .deletion {
213 |     background: #fdd;
214 | }
215 | 
216 | pre .addition {
217 |     background: #dfd;
218 | }
219 | 
220 | pre .meta {
221 |     color: #8959a8;
222 | }
223 | 
224 | pre .comment {
225 |     color: #8e908c;
226 | }
227 | 
228 | pre .variable,
229 | pre .attribute,
230 | pre .tag,
231 | pre .regexp,
232 | pre .ruby .constant,
233 | pre .xml .tag .title,
234 | pre .xml .pi,
235 | pre .xml .doctype,
236 | pre .html .doctype,
237 | pre .css .id,
238 | pre .css .class,
239 | pre .css .pseudo {
240 |     color: #c82829;
241 | }
242 | 
243 | pre .number,
244 | pre .preprocessor,
245 | pre .built_in,
246 | pre .literal,
247 | pre .params,
248 | pre .constant,
249 | pre .command {
250 |     color: #f5871f;
251 | }
252 | 
253 | pre .ruby .class .title,
254 | pre .css .rules .attribute,
255 | pre .string,
256 | pre .value,
257 | pre .inheritance,
258 | pre .header,
259 | pre .ruby .symbol,
260 | pre .xml .cdata,
261 | pre .special,
262 | pre .number,
263 | pre .formula {
264 |     color: #718c00;
265 | }
266 | 
267 | pre .title,
268 | pre .css .hexcolor {
269 |     color: #3e999f;
270 | }
271 | 
272 | pre .function,
273 | pre .python .decorator,
274 | pre .python .title,
275 | pre .ruby .function .title,
276 | pre .ruby .title .keyword,
277 | pre .perl .sub,
278 | pre .javascript .title,
279 | pre .coffeescript .title {
280 |     color: #4271ae;
281 | }
282 | 
283 | pre .keyword,
284 | pre .javascript .function {
285 |     color: #8959a8;
286 | }


--------------------------------------------------------------------------------
/source/css/i_slidebar.css:
--------------------------------------------------------------------------------
  1 | .blog-sidebar .post-sidebar-widget .site-author-image {
  2 |     display: block;
  3 |     margin: 0 auto;
  4 |     padding: 2px;
  5 |     max-width: 120px;
  6 |     height: auto;
  7 |     border: 1px solid #eee;
  8 | }
  9 | 
 10 | .blog-sidebar .post-sidebar-widget .site-author-name {
 11 |     margin: 10px 0;
 12 |     text-align: center;
 13 |     color: #222;
 14 |     font-weight: 600;
 15 | }
 16 | 
 17 | .blog-sidebar .post-sidebar-widget .site-author-description {
 18 |     margin-top: 0;
 19 |     text-align: center;
 20 |     font-size: 13px;
 21 |     padding: 0 20px;
 22 |     color: #999;
 23 | }
 24 | 
 25 | 
 26 | /*文章-项目统计*/
 27 | 
 28 | .blog-sidebar .post-sidebar-widget .site-state {
 29 |     overflow: hidden;
 30 |     line-height: 1.4;
 31 |     white-space: nowrap;
 32 |     text-align: center;
 33 |     margin: 20px auto;
 34 | }
 35 | 
 36 | .blog-sidebar .post-sidebar-widget .site-state-item {
 37 |     display: inline-block;
 38 |     padding: 0 15px;
 39 |     border-left: 1px solid #eee;
 40 | }
 41 | 
 42 | .blog-sidebar .post-sidebar-widget .site-state-item:first-child {
 43 |     border-left: none;
 44 | }
 45 | 
 46 | .blog-sidebar .post-sidebar-widget .site-state-item a {
 47 |     border-bottom: none;
 48 | }
 49 | 
 50 | .blog-sidebar .post-sidebar-widget .site-state-item-count {
 51 |     display: block;
 52 |     text-align: center;
 53 |     color: inherit;
 54 |     font-weight: 600;
 55 |     font-size: 16px;
 56 | }
 57 | 
 58 | .blog-sidebar .post-sidebar-widget .site-state-item-name {
 59 |     font-size: 13px;
 60 |     color: #999;
 61 | }
 62 | 
 63 | 
 64 | /*RSS订阅*/
 65 | 
 66 | .blog-sidebar .post-sidebar-widget .feed-link {
 67 |     border-top: 1px dotted #ccc;
 68 |     border-bottom: 1px dotted #ccc;
 69 |     text-align: center;
 70 |     padding: 8px 0;
 71 |     width: 80%;
 72 |     margin: 0 auto 15px;
 73 | }
 74 | 
 75 | .blog-sidebar .post-sidebar-widget .feed-link a {
 76 |     display: block;
 77 |     color: #fc6423;
 78 |     border: none;
 79 | }
 80 | 
 81 | .blog-sidebar .post-sidebar-widget .feed-link a:hover {
 82 |     background: none;
 83 |     color: #e34603;
 84 | }
 85 | 
 86 | .blog-sidebar .post-sidebar-widget .feed-link a:hover i {
 87 |     color: #e34603;
 88 | }
 89 | 
 90 | 
 91 | /*个人页面链接*/
 92 | 
 93 | .blog-sidebar .post-sidebar-widget .links-of-author:before,
 94 | .blog-sidebar .post-sidebar-widget .links-of-author:after {
 95 |     content: " ";
 96 |     display: table;
 97 | }
 98 | 
 99 | .blog-sidebar .post-sidebar-widget .links-of-author:after {
100 |     clear: both;
101 | }
102 | 
103 | .blog-sidebar .post-sidebar-widget .links-of-author-item {
104 |     float: left;
105 |     margin: 5px 0 0;
106 |     width: 50%;
107 | }
108 | 
109 | .blog-sidebar .post-sidebar-widget .links-of-author-item a {
110 |     box-sizing: border-box;
111 |     display: inline-block;
112 |     margin-right: 0;
113 |     margin-bottom: 0;
114 |     padding: 5px;
115 |     overflow: hidden;
116 |     white-space: nowrap;
117 |     text-overflow: ellipsis;
118 |     text-align: center;
119 | }
120 | 
121 | .blog-sidebar .post-sidebar-widget .links-of-author-item a {
122 |     display: block;
123 |     text-decoration: none;
124 | }
125 | 
126 | .blog-sidebar .post-sidebar-widget .links-of-author-item a:hover {
127 |     border-radius: 4px;
128 |     background: #eee;
129 | }
130 | 
131 | .blog-sidebar .post-sidebar-widget .links-of-author-item .fa {
132 |     margin-right: 2px;
133 |     font-size: 16px;
134 | }
135 | 
136 | .blog-sidebar .post-sidebar-widget .links-of-author-item .fa-globe {
137 |     font-size: 15px;
138 | }
139 | 
140 | /* 中等屏幕(桌面显示器,大于等于 992px) */
141 | 
142 | @media (min-width: 992px) {
143 |     .blog-sidebar.affix,
144 |     .blog-sidebar.affix-bottom {
145 |         width: 213px;
146 |     }
147 |     .blog-sidebar.affix {
148 |         position: fixed;
149 |         /* Undo the static from mobile first approach */
150 |         top: 20px;
151 |     }
152 |     .blog-sidebar.affix-bottom {
153 |         position: absolute;
154 |         /* Undo the static from mobile first approach */
155 |     }
156 | }
157 | 
158 | 
159 | /* 大屏幕(大桌面显示器,大于等于 1200px) */
160 | 
161 | @media (min-width: 1200px) {
162 |     .blog-sidebar.affix-bottom,
163 |     .blog-sidebar.affix {
164 |         width: 263px;
165 |     }
166 | }


--------------------------------------------------------------------------------
/source/css/linear-icons.css:
--------------------------------------------------------------------------------
  1 | @font-face {
  2 | 	font-family: 'Linearicons-Free';
  3 | 	src:url('../fonts/Linearicons-Free-w118d.eot');
  4 | 	src:url('../fonts/Linearicons-Free-.eot#iefixw118d') format('embedded-opentype'),
  5 | 		url('../fonts/Linearicons-Free-w118d.woff2') format('woff2'),
  6 | 		url('../fonts/Linearicons-Free-w118d.woff') format('woff'),
  7 | 		url('../fonts/Linearicons-Free-w118d.ttf') format('truetype'),
  8 | 		url('../fonts/Linearicons-Free-w118d.svg#Linearicons-Free') format('svg');
  9 | 	font-weight: normal;
 10 | 	font-style: normal;
 11 | }
 12 | 
 13 | .lnr {
 14 | 	font-family: 'Linearicons-Free';
 15 | 	speak: none;
 16 | 	font-style: normal;
 17 | 	font-weight: normal;
 18 | 	font-variant: normal;
 19 | 	text-transform: none;
 20 | 	line-height: 1;
 21 | 
 22 | 	/* Better Font Rendering =========== */
 23 | 	-webkit-font-smoothing: antialiased;
 24 | 	-moz-osx-font-smoothing: grayscale;
 25 | }
 26 | 
 27 | .lnr-home:before {
 28 | 	content: "\e800";
 29 | }
 30 | .lnr-apartment:before {
 31 | 	content: "\e801";
 32 | }
 33 | .lnr-pencil:before {
 34 | 	content: "\e802";
 35 | }
 36 | .lnr-magic-wand:before {
 37 | 	content: "\e803";
 38 | }
 39 | .lnr-drop:before {
 40 | 	content: "\e804";
 41 | }
 42 | .lnr-lighter:before {
 43 | 	content: "\e805";
 44 | }
 45 | .lnr-poop:before {
 46 | 	content: "\e806";
 47 | }
 48 | .lnr-sun:before {
 49 | 	content: "\e807";
 50 | }
 51 | .lnr-moon:before {
 52 | 	content: "\e808";
 53 | }
 54 | .lnr-cloud:before {
 55 | 	content: "\e809";
 56 | }
 57 | .lnr-cloud-upload:before {
 58 | 	content: "\e80a";
 59 | }
 60 | .lnr-cloud-download:before {
 61 | 	content: "\e80b";
 62 | }
 63 | .lnr-cloud-sync:before {
 64 | 	content: "\e80c";
 65 | }
 66 | .lnr-cloud-check:before {
 67 | 	content: "\e80d";
 68 | }
 69 | .lnr-database:before {
 70 | 	content: "\e80e";
 71 | }
 72 | .lnr-lock:before {
 73 | 	content: "\e80f";
 74 | }
 75 | .lnr-cog:before {
 76 | 	content: "\e810";
 77 | }
 78 | .lnr-trash:before {
 79 | 	content: "\e811";
 80 | }
 81 | .lnr-dice:before {
 82 | 	content: "\e812";
 83 | }
 84 | .lnr-heart:before {
 85 | 	content: "\e813";
 86 | }
 87 | .lnr-star:before {
 88 | 	content: "\e814";
 89 | }
 90 | .lnr-star-half:before {
 91 | 	content: "\e815";
 92 | }
 93 | .lnr-star-empty:before {
 94 | 	content: "\e816";
 95 | }
 96 | .lnr-flag:before {
 97 | 	content: "\e817";
 98 | }
 99 | .lnr-envelope:before {
100 | 	content: "\e818";
101 | }
102 | .lnr-paperclip:before {
103 | 	content: "\e819";
104 | }
105 | .lnr-inbox:before {
106 | 	content: "\e81a";
107 | }
108 | .lnr-eye:before {
109 | 	content: "\e81b";
110 | }
111 | .lnr-printer:before {
112 | 	content: "\e81c";
113 | }
114 | .lnr-file-empty:before {
115 | 	content: "\e81d";
116 | }
117 | .lnr-file-add:before {
118 | 	content: "\e81e";
119 | }
120 | .lnr-enter:before {
121 | 	content: "\e81f";
122 | }
123 | .lnr-exit:before {
124 | 	content: "\e820";
125 | }
126 | .lnr-graduation-hat:before {
127 | 	content: "\e821";
128 | }
129 | .lnr-license:before {
130 | 	content: "\e822";
131 | }
132 | .lnr-music-note:before {
133 | 	content: "\e823";
134 | }
135 | .lnr-film-play:before {
136 | 	content: "\e824";
137 | }
138 | .lnr-camera-video:before {
139 | 	content: "\e825";
140 | }
141 | .lnr-camera:before {
142 | 	content: "\e826";
143 | }
144 | .lnr-picture:before {
145 | 	content: "\e827";
146 | }
147 | .lnr-book:before {
148 | 	content: "\e828";
149 | }
150 | .lnr-bookmark:before {
151 | 	content: "\e829";
152 | }
153 | .lnr-user:before {
154 | 	content: "\e82a";
155 | }
156 | .lnr-users:before {
157 | 	content: "\e82b";
158 | }
159 | .lnr-shirt:before {
160 | 	content: "\e82c";
161 | }
162 | .lnr-store:before {
163 | 	content: "\e82d";
164 | }
165 | .lnr-cart:before {
166 | 	content: "\e82e";
167 | }
168 | .lnr-tag:before {
169 | 	content: "\e82f";
170 | }
171 | .lnr-phone-handset:before {
172 | 	content: "\e830";
173 | }
174 | .lnr-phone:before {
175 | 	content: "\e831";
176 | }
177 | .lnr-pushpin:before {
178 | 	content: "\e832";
179 | }
180 | .lnr-map-marker:before {
181 | 	content: "\e833";
182 | }
183 | .lnr-map:before {
184 | 	content: "\e834";
185 | }
186 | .lnr-location:before {
187 | 	content: "\e835";
188 | }
189 | .lnr-calendar-full:before {
190 | 	content: "\e836";
191 | }
192 | .lnr-keyboard:before {
193 | 	content: "\e837";
194 | }
195 | .lnr-spell-check:before {
196 | 	content: "\e838";
197 | }
198 | .lnr-screen:before {
199 | 	content: "\e839";
200 | }
201 | .lnr-smartphone:before {
202 | 	content: "\e83a";
203 | }
204 | .lnr-tablet:before {
205 | 	content: "\e83b";
206 | }
207 | .lnr-laptop:before {
208 | 	content: "\e83c";
209 | }
210 | .lnr-laptop-phone:before {
211 | 	content: "\e83d";
212 | }
213 | .lnr-power-switch:before {
214 | 	content: "\e83e";
215 | }
216 | .lnr-bubble:before {
217 | 	content: "\e83f";
218 | }
219 | .lnr-heart-pulse:before {
220 | 	content: "\e840";
221 | }
222 | .lnr-construction:before {
223 | 	content: "\e841";
224 | }
225 | .lnr-pie-chart:before {
226 | 	content: "\e842";
227 | }
228 | .lnr-chart-bars:before {
229 | 	content: "\e843";
230 | }
231 | .lnr-gift:before {
232 | 	content: "\e844";
233 | }
234 | .lnr-diamond:before {
235 | 	content: "\e845";
236 | }
237 | .lnr-linearicons:before {
238 | 	content: "\e846";
239 | }
240 | .lnr-dinner:before {
241 | 	content: "\e847";
242 | }
243 | .lnr-coffee-cup:before {
244 | 	content: "\e848";
245 | }
246 | .lnr-leaf:before {
247 | 	content: "\e849";
248 | }
249 | .lnr-paw:before {
250 | 	content: "\e84a";
251 | }
252 | .lnr-rocket:before {
253 | 	content: "\e84b";
254 | }
255 | .lnr-briefcase:before {
256 | 	content: "\e84c";
257 | }
258 | .lnr-bus:before {
259 | 	content: "\e84d";
260 | }
261 | .lnr-car:before {
262 | 	content: "\e84e";
263 | }
264 | .lnr-train:before {
265 | 	content: "\e84f";
266 | }
267 | .lnr-bicycle:before {
268 | 	content: "\e850";
269 | }
270 | .lnr-wheelchair:before {
271 | 	content: "\e851";
272 | }
273 | .lnr-select:before {
274 | 	content: "\e852";
275 | }
276 | .lnr-earth:before {
277 | 	content: "\e853";
278 | }
279 | .lnr-smile:before {
280 | 	content: "\e854";
281 | }
282 | .lnr-sad:before {
283 | 	content: "\e855";
284 | }
285 | .lnr-neutral:before {
286 | 	content: "\e856";
287 | }
288 | .lnr-mustache:before {
289 | 	content: "\e857";
290 | }
291 | .lnr-alarm:before {
292 | 	content: "\e858";
293 | }
294 | .lnr-bullhorn:before {
295 | 	content: "\e859";
296 | }
297 | .lnr-volume-high:before {
298 | 	content: "\e85a";
299 | }
300 | .lnr-volume-medium:before {
301 | 	content: "\e85b";
302 | }
303 | .lnr-volume-low:before {
304 | 	content: "\e85c";
305 | }
306 | .lnr-volume:before {
307 | 	content: "\e85d";
308 | }
309 | .lnr-mic:before {
310 | 	content: "\e85e";
311 | }
312 | .lnr-hourglass:before {
313 | 	content: "\e85f";
314 | }
315 | .lnr-undo:before {
316 | 	content: "\e860";
317 | }
318 | .lnr-redo:before {
319 | 	content: "\e861";
320 | }
321 | .lnr-sync:before {
322 | 	content: "\e862";
323 | }
324 | .lnr-history:before {
325 | 	content: "\e863";
326 | }
327 | .lnr-clock:before {
328 | 	content: "\e864";
329 | }
330 | .lnr-download:before {
331 | 	content: "\e865";
332 | }
333 | .lnr-upload:before {
334 | 	content: "\e866";
335 | }
336 | .lnr-enter-down:before {
337 | 	content: "\e867";
338 | }
339 | .lnr-exit-up:before {
340 | 	content: "\e868";
341 | }
342 | .lnr-bug:before {
343 | 	content: "\e869";
344 | }
345 | .lnr-code:before {
346 | 	content: "\e86a";
347 | }
348 | .lnr-link:before {
349 | 	content: "\e86b";
350 | }
351 | .lnr-unlink:before {
352 | 	content: "\e86c";
353 | }
354 | .lnr-thumbs-up:before {
355 | 	content: "\e86d";
356 | }
357 | .lnr-thumbs-down:before {
358 | 	content: "\e86e";
359 | }
360 | .lnr-magnifier:before {
361 | 	content: "\e86f";
362 | }
363 | .lnr-cross:before {
364 | 	content: "\e870";
365 | }
366 | .lnr-menu:before {
367 | 	content: "\e871";
368 | }
369 | .lnr-list:before {
370 | 	content: "\e872";
371 | }
372 | .lnr-chevron-up:before {
373 | 	content: "\e873";
374 | }
375 | .lnr-chevron-down:before {
376 | 	content: "\e874";
377 | }
378 | .lnr-chevron-left:before {
379 | 	content: "\e875";
380 | }
381 | .lnr-chevron-right:before {
382 | 	content: "\e876";
383 | }
384 | .lnr-arrow-up:before {
385 | 	content: "\e877";
386 | }
387 | .lnr-arrow-down:before {
388 | 	content: "\e878";
389 | }
390 | .lnr-arrow-left:before {
391 | 	content: "\e879";
392 | }
393 | .lnr-arrow-right:before {
394 | 	content: "\e87a";
395 | }
396 | .lnr-move:before {
397 | 	content: "\e87b";
398 | }
399 | .lnr-warning:before {
400 | 	content: "\e87c";
401 | }
402 | .lnr-question-circle:before {
403 | 	content: "\e87d";
404 | }
405 | .lnr-menu-circle:before {
406 | 	content: "\e87e";
407 | }
408 | .lnr-checkmark-circle:before {
409 | 	content: "\e87f";
410 | }
411 | .lnr-cross-circle:before {
412 | 	content: "\e880";
413 | }
414 | .lnr-plus-circle:before {
415 | 	content: "\e881";
416 | }
417 | .lnr-circle-minus:before {
418 | 	content: "\e882";
419 | }
420 | .lnr-arrow-up-circle:before {
421 | 	content: "\e883";
422 | }
423 | .lnr-arrow-down-circle:before {
424 | 	content: "\e884";
425 | }
426 | .lnr-arrow-left-circle:before {
427 | 	content: "\e885";
428 | }
429 | .lnr-arrow-right-circle:before {
430 | 	content: "\e886";
431 | }
432 | .lnr-chevron-up-circle:before {
433 | 	content: "\e887";
434 | }
435 | .lnr-chevron-down-circle:before {
436 | 	content: "\e888";
437 | }
438 | .lnr-chevron-left-circle:before {
439 | 	content: "\e889";
440 | }
441 | .lnr-chevron-right-circle:before {
442 | 	content: "\e88a";
443 | }
444 | .lnr-crop:before {
445 | 	content: "\e88b";
446 | }
447 | .lnr-frame-expand:before {
448 | 	content: "\e88c";
449 | }
450 | .lnr-frame-contract:before {
451 | 	content: "\e88d";
452 | }
453 | .lnr-layers:before {
454 | 	content: "\e88e";
455 | }
456 | .lnr-funnel:before {
457 | 	content: "\e88f";
458 | }
459 | .lnr-text-format:before {
460 | 	content: "\e890";
461 | }
462 | .lnr-text-format-remove:before {
463 | 	content: "\e891";
464 | }
465 | .lnr-text-size:before {
466 | 	content: "\e892";
467 | }
468 | .lnr-bold:before {
469 | 	content: "\e893";
470 | }
471 | .lnr-italic:before {
472 | 	content: "\e894";
473 | }
474 | .lnr-underline:before {
475 | 	content: "\e895";
476 | }
477 | .lnr-strikethrough:before {
478 | 	content: "\e896";
479 | }
480 | .lnr-highlight:before {
481 | 	content: "\e897";
482 | }
483 | .lnr-text-align-left:before {
484 | 	content: "\e898";
485 | }
486 | .lnr-text-align-center:before {
487 | 	content: "\e899";
488 | }
489 | .lnr-text-align-right:before {
490 | 	content: "\e89a";
491 | }
492 | .lnr-text-align-justify:before {
493 | 	content: "\e89b";
494 | }
495 | .lnr-line-spacing:before {
496 | 	content: "\e89c";
497 | }
498 | .lnr-indent-increase:before {
499 | 	content: "\e89d";
500 | }
501 | .lnr-indent-decrease:before {
502 | 	content: "\e89e";
503 | }
504 | .lnr-pilcrow:before {
505 | 	content: "\e89f";
506 | }
507 | .lnr-direction-ltr:before {
508 | 	content: "\e8a0";
509 | }
510 | .lnr-direction-rtl:before {
511 | 	content: "\e8a1";
512 | }
513 | .lnr-page-break:before {
514 | 	content: "\e8a2";
515 | }
516 | .lnr-sort-alpha-asc:before {
517 | 	content: "\e8a3";
518 | }
519 | .lnr-sort-amount-asc:before {
520 | 	content: "\e8a4";
521 | }
522 | .lnr-hand:before {
523 | 	content: "\e8a5";
524 | }
525 | .lnr-pointer-up:before {
526 | 	content: "\e8a6";
527 | }
528 | .lnr-pointer-right:before {
529 | 	content: "\e8a7";
530 | }
531 | .lnr-pointer-down:before {
532 | 	content: "\e8a8";
533 | }
534 | .lnr-pointer-left:before {
535 | 	content: "\e8a9";
536 | }
537 | 


--------------------------------------------------------------------------------
/source/css/magnific-popup.css:
--------------------------------------------------------------------------------
  1 | /* Magnific Popup CSS */
  2 | .mfp-bg {
  3 |   top: 0;
  4 |   left: 0;
  5 |   width: 100%;
  6 |   height: 100%;
  7 |   z-index: 1042;
  8 |   overflow: hidden;
  9 |   position: fixed;
 10 |   background: #0b0b0b;
 11 |   opacity: 0.8; }
 12 | 
 13 | .mfp-wrap {
 14 |   top: 0;
 15 |   left: 0;
 16 |   width: 100%;
 17 |   height: 100%;
 18 |   z-index: 1043;
 19 |   position: fixed;
 20 |   outline: none !important;
 21 |   -webkit-backface-visibility: hidden; }
 22 | 
 23 | .mfp-container {
 24 |   text-align: center;
 25 |   position: absolute;
 26 |   width: 100%;
 27 |   height: 100%;
 28 |   left: 0;
 29 |   top: 0;
 30 |   padding: 0 8px;
 31 |   box-sizing: border-box; }
 32 | 
 33 | .mfp-container:before {
 34 |   content: '';
 35 |   display: inline-block;
 36 |   height: 100%;
 37 |   vertical-align: middle; }
 38 | 
 39 | .mfp-align-top .mfp-container:before {
 40 |   display: none; }
 41 | 
 42 | .mfp-content {
 43 |   position: relative;
 44 |   display: inline-block;
 45 |   vertical-align: middle;
 46 |   margin: 0 auto;
 47 |   text-align: left;
 48 |   z-index: 1045; }
 49 | 
 50 | .mfp-inline-holder .mfp-content,
 51 | .mfp-ajax-holder .mfp-content {
 52 |   width: 100%;
 53 |   cursor: auto; }
 54 | 
 55 | .mfp-ajax-cur {
 56 |   cursor: progress; }
 57 | 
 58 | .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
 59 |   cursor: -moz-zoom-out;
 60 |   cursor: -webkit-zoom-out;
 61 |   cursor: zoom-out; }
 62 | 
 63 | .mfp-zoom {
 64 |   cursor: pointer;
 65 |   cursor: -webkit-zoom-in;
 66 |   cursor: -moz-zoom-in;
 67 |   cursor: zoom-in; }
 68 | 
 69 | .mfp-auto-cursor .mfp-content {
 70 |   cursor: auto; }
 71 | 
 72 | .mfp-close,
 73 | .mfp-arrow,
 74 | .mfp-preloader,
 75 | .mfp-counter {
 76 |   -webkit-user-select: none;
 77 |   -moz-user-select: none;
 78 |   user-select: none; }
 79 | 
 80 | .mfp-loading.mfp-figure {
 81 |   display: none; }
 82 | 
 83 | .mfp-hide {
 84 |   display: none !important; }
 85 | 
 86 | .mfp-preloader {
 87 |   color: #CCC;
 88 |   position: absolute;
 89 |   top: 50%;
 90 |   width: auto;
 91 |   text-align: center;
 92 |   margin-top: -0.8em;
 93 |   left: 8px;
 94 |   right: 8px;
 95 |   z-index: 1044; }
 96 |   .mfp-preloader a {
 97 |     color: #CCC; }
 98 |     .mfp-preloader a:hover {
 99 |       color: #FFF; }
100 | 
101 | .mfp-s-ready .mfp-preloader {
102 |   display: none; }
103 | 
104 | .mfp-s-error .mfp-content {
105 |   display: none; }
106 | 
107 | button.mfp-close,
108 | button.mfp-arrow {
109 |   overflow: visible;
110 |   cursor: pointer;
111 |   background: transparent;
112 |   border: 0;
113 |   -webkit-appearance: none;
114 |   display: block;
115 |   outline: none;
116 |   padding: 0;
117 |   z-index: 1046;
118 |   box-shadow: none;
119 |   touch-action: manipulation; }
120 | 
121 | button::-moz-focus-inner {
122 |   padding: 0;
123 |   border: 0; }
124 | 
125 | .mfp-close {
126 |   width: 44px;
127 |   height: 44px;
128 |   line-height: 44px;
129 |   position: absolute;
130 |   right: 0;
131 |   top: 0;
132 |   text-decoration: none;
133 |   text-align: center;
134 |   opacity: 0.65;
135 |   padding: 0 0 18px 10px;
136 |   color: #FFF;
137 |   font-style: normal;
138 |   font-size: 28px;
139 |   font-family: Arial, Baskerville, monospace; }
140 |   .mfp-close:hover,
141 |   .mfp-close:focus {
142 |     opacity: 1; }
143 |   .mfp-close:active {
144 |     top: 1px; }
145 | 
146 | .mfp-close-btn-in .mfp-close {
147 |   color: #333; }
148 | 
149 | .mfp-image-holder .mfp-close,
150 | .mfp-iframe-holder .mfp-close {
151 |   color: #FFF;
152 |   right: -6px;
153 |   text-align: right;
154 |   padding-right: 6px;
155 |   width: 100%; }
156 | 
157 | .mfp-counter {
158 |   position: absolute;
159 |   top: 0;
160 |   right: 0;
161 |   color: #CCC;
162 |   font-size: 12px;
163 |   line-height: 18px;
164 |   white-space: nowrap; }
165 | 
166 | .mfp-arrow {
167 |   position: absolute;
168 |   opacity: 0.65;
169 |   margin: 0;
170 |   top: 50%;
171 |   margin-top: -55px;
172 |   padding: 0;
173 |   width: 90px;
174 |   height: 110px;
175 |   -webkit-tap-highlight-color: transparent; }
176 |   .mfp-arrow:active {
177 |     margin-top: -54px; }
178 |   .mfp-arrow:hover,
179 |   .mfp-arrow:focus {
180 |     opacity: 1; }
181 |   .mfp-arrow:before,
182 |   .mfp-arrow:after {
183 |     content: '';
184 |     display: block;
185 |     width: 0;
186 |     height: 0;
187 |     position: absolute;
188 |     left: 0;
189 |     top: 0;
190 |     margin-top: 35px;
191 |     margin-left: 35px;
192 |     border: medium inset transparent; }
193 |   .mfp-arrow:after {
194 |     border-top-width: 13px;
195 |     border-bottom-width: 13px;
196 |     top: 8px; }
197 |   .mfp-arrow:before {
198 |     border-top-width: 21px;
199 |     border-bottom-width: 21px;
200 |     opacity: 0.7; }
201 | 
202 | .mfp-arrow-left {
203 |   left: 0; }
204 |   .mfp-arrow-left:after {
205 |     border-right: 17px solid #FFF;
206 |     margin-left: 31px; }
207 |   .mfp-arrow-left:before {
208 |     margin-left: 25px;
209 |     border-right: 27px solid #3F3F3F; }
210 | 
211 | .mfp-arrow-right {
212 |   right: 0; }
213 |   .mfp-arrow-right:after {
214 |     border-left: 17px solid #FFF;
215 |     margin-left: 39px; }
216 |   .mfp-arrow-right:before {
217 |     border-left: 27px solid #3F3F3F; }
218 | 
219 | .mfp-iframe-holder {
220 |   padding-top: 40px;
221 |   padding-bottom: 40px; }
222 |   .mfp-iframe-holder .mfp-content {
223 |     line-height: 0;
224 |     width: 100%;
225 |     max-width: 900px; }
226 |   .mfp-iframe-holder .mfp-close {
227 |     top: -40px; }
228 | 
229 | .mfp-iframe-scaler {
230 |   width: 100%;
231 |   height: 0;
232 |   overflow: hidden;
233 |   padding-top: 56.25%; }
234 |   .mfp-iframe-scaler iframe {
235 |     position: absolute;
236 |     display: block;
237 |     top: 0;
238 |     left: 0;
239 |     width: 100%;
240 |     height: 100%;
241 |     box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
242 |     background: #000; }
243 | 
244 | /* Main image in popup */
245 | img.mfp-img {
246 |   width: auto;
247 |   max-width: 100%;
248 |   height: auto;
249 |   display: block;
250 |   line-height: 0;
251 |   box-sizing: border-box;
252 |   padding: 40px 0 40px;
253 |   margin: 0 auto; }
254 | 
255 | /* The shadow behind the image */
256 | .mfp-figure {
257 |   line-height: 0; }
258 |   .mfp-figure:after {
259 |     content: '';
260 |     position: absolute;
261 |     left: 0;
262 |     top: 40px;
263 |     bottom: 40px;
264 |     display: block;
265 |     right: 0;
266 |     width: auto;
267 |     height: auto;
268 |     z-index: -1;
269 |     box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
270 |     background: #444; }
271 |   .mfp-figure small {
272 |     color: #BDBDBD;
273 |     display: block;
274 |     font-size: 12px;
275 |     line-height: 14px; }
276 |   .mfp-figure figure {
277 |     margin: 0; }
278 | 
279 | .mfp-bottom-bar {
280 |   margin-top: -36px;
281 |   position: absolute;
282 |   top: 100%;
283 |   left: 0;
284 |   width: 100%;
285 |   cursor: auto; }
286 | 
287 | .mfp-title {
288 |   text-align: left;
289 |   line-height: 18px;
290 |   color: #F3F3F3;
291 |   word-wrap: break-word;
292 |   padding-right: 36px; }
293 | 
294 | .mfp-image-holder .mfp-content {
295 |   max-width: 100%; }
296 | 
297 | .mfp-gallery .mfp-image-holder .mfp-figure {
298 |   cursor: pointer; }
299 | 
300 | @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
301 |   /**
302 |        * Remove all paddings around the image on small screen
303 |        */
304 |   .mfp-img-mobile .mfp-image-holder {
305 |     padding-left: 0;
306 |     padding-right: 0; }
307 |   .mfp-img-mobile img.mfp-img {
308 |     padding: 0; }
309 |   .mfp-img-mobile .mfp-figure:after {
310 |     top: 0;
311 |     bottom: 0; }
312 |   .mfp-img-mobile .mfp-figure small {
313 |     display: inline;
314 |     margin-left: 5px; }
315 |   .mfp-img-mobile .mfp-bottom-bar {
316 |     background: rgba(0, 0, 0, 0.6);
317 |     bottom: 0;
318 |     margin: 0;
319 |     top: auto;
320 |     padding: 3px 5px;
321 |     position: fixed;
322 |     box-sizing: border-box; }
323 |     .mfp-img-mobile .mfp-bottom-bar:empty {
324 |       padding: 0; }
325 |   .mfp-img-mobile .mfp-counter {
326 |     right: 5px;
327 |     top: 3px; }
328 |   .mfp-img-mobile .mfp-close {
329 |     top: 0;
330 |     right: 0;
331 |     width: 35px;
332 |     height: 35px;
333 |     line-height: 35px;
334 |     background: rgba(0, 0, 0, 0.6);
335 |     position: fixed;
336 |     text-align: center;
337 |     padding: 0; } }
338 | 
339 | @media all and (max-width: 900px) {
340 |   .mfp-arrow {
341 |     -webkit-transform: scale(0.75);
342 |     transform: scale(0.75); }
343 |   .mfp-arrow-left {
344 |     -webkit-transform-origin: 0;
345 |     transform-origin: 0; }
346 |   .mfp-arrow-right {
347 |     -webkit-transform-origin: 100%;
348 |     transform-origin: 100%; }
349 |   .mfp-container {
350 |     padding-left: 6px;
351 |     padding-right: 6px; } }
352 | 


--------------------------------------------------------------------------------
/source/css/share.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:"socialshare";src:url("../fonts/iconfont.eot");src:url("../fonts/iconfont.eot?#iefix") format("embedded-opentype"),url("../fonts/iconfont.woff") format("woff"),url("../fonts/iconfont.ttf") format("truetype"),url("../fonts/iconfont.svg#iconfont") format("svg")}.social-share{font-family:"socialshare" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale}.social-share *{font-family:"socialshare" !important}.social-share .icon-tencent:before{content:"\f07a"}.social-share .icon-qq:before{content:"\f11a"}.social-share .icon-weibo:before{content:"\f12a"}.social-share .icon-wechat:before{content:"\f09a"}.social-share .icon-douban:before{content:"\f10a"}.social-share .icon-heart:before{content:"\f20a"}.social-share .icon-like:before{content:"\f00a"}.social-share .icon-qzone:before{content:"\f08a"}.social-share .icon-linkedin:before{content:"\f01a"}.social-share .icon-diandian:before{content:"\f05a"}.social-share .icon-facebook:before{content:"\f03a"}.social-share .icon-google:before{content:"\f04a"}.social-share .icon-twitter:before{content:"\f06a"}.social-share a{position:relative;text-decoration:none;margin:4px;display:inline-block;outline:none}.social-share .social-share-icon{position:relative;display:inline-block;width:32px;height:32px;font-size:20px;border-radius:50%;line-height:32px;border:1px solid #666;color:#666;text-align:center;vertical-align:middle;transition:background 0.6s ease-out 0s}.social-share .social-share-icon:hover{background:#666;color:#fff}.social-share .icon-weibo{color:#ff763b;border-color:#ff763b}.social-share .icon-weibo:hover{background:#ff763b}.social-share .icon-tencent{color:#56b6e7;border-color:#56b6e7}.social-share .icon-tencent:hover{background:#56b6e7}.social-share .icon-qq{color:#56b6e7;border-color:#56b6e7}.social-share .icon-qq:hover{background:#56b6e7}.social-share .icon-qzone{color:#FDBE3D;border-color:#FDBE3D}.social-share .icon-qzone:hover{background:#FDBE3D}.social-share .icon-douban{color:#33b045;border-color:#33b045}.social-share .icon-douban:hover{background:#33b045}.social-share .icon-linkedin{color:#0077B5;border-color:#0077B5}.social-share .icon-linkedin:hover{background:#0077B5}.social-share .icon-facebook{color:#44619D;border-color:#44619D}.social-share .icon-facebook:hover{background:#44619D}.social-share .icon-google{color:#db4437;border-color:#db4437}.social-share .icon-google:hover{background:#db4437}.social-share .icon-twitter{color:#55acee;border-color:#55acee}.social-share .icon-twitter:hover{background:#55acee}.social-share .icon-diandian{color:#307DCA;border-color:#307DCA}.social-share .icon-diandian:hover{background:#307DCA}.social-share .icon-wechat{position:relative;color:#7bc549;border-color:#7bc549}.social-share .icon-wechat:hover{background:#7bc549}.social-share .icon-wechat .wechat-qrcode{display:none;border:1px solid #eee;position:absolute;z-index:9;top:-205px;left:-84px;width:200px;height:192px;color:#666;font-size:12px;text-align:center;background-color:#fff;box-shadow:0 2px 10px #aaa;transition:all 200ms;-webkit-tansition:all 350ms;-moz-transition:all 350ms}.social-share .icon-wechat .wechat-qrcode.bottom{top:40px;left:-84px}.social-share .icon-wechat .wechat-qrcode.bottom:after{display:none}.social-share .icon-wechat .wechat-qrcode h4{font-weight:normal;height:26px;line-height:26px;font-size:12px;background-color:#f3f3f3;margin:0;padding:0;color:#777}.social-share .icon-wechat .wechat-qrcode .qrcode{width:105px;margin:10px auto}.social-share .icon-wechat .wechat-qrcode .qrcode table{margin:0 !important}.social-share .icon-wechat .wechat-qrcode .help p{font-weight:normal;line-height:16px;padding:0;margin:0}.social-share .icon-wechat .wechat-qrcode:after{content:'';position:absolute;left:50%;margin-left:-6px;bottom:-13px;width:0;height:0;border-width:8px 6px 6px 6px;border-style:solid;border-color:#fff transparent transparent transparent}.social-share .icon-wechat:hover .wechat-qrcode{display:block}
2 | 


--------------------------------------------------------------------------------
/source/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/FontAwesome.otf


--------------------------------------------------------------------------------
/source/fonts/Linearicons-Free-.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/Linearicons-Free-.eot


--------------------------------------------------------------------------------
/source/fonts/Linearicons-Free-w118d.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/Linearicons-Free-w118d.eot


--------------------------------------------------------------------------------
/source/fonts/Linearicons-Free-w118d.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/Linearicons-Free-w118d.ttf


--------------------------------------------------------------------------------
/source/fonts/Linearicons-Free-w118d.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/Linearicons-Free-w118d.woff


--------------------------------------------------------------------------------
/source/fonts/Linearicons-Free-w118d.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/Linearicons-Free-w118d.woff2


--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont-.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/fontawesome-webfont-.eot


--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont-v=4.7.0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/fontawesome-webfont-v=4.7.0.eot


--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont-v=4.7.0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/fontawesome-webfont-v=4.7.0.ttf


--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont-v=4.7.0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/fontawesome-webfont-v=4.7.0.woff


--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont-v=4.7.0.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/fontawesome-webfont-v=4.7.0.woff2


--------------------------------------------------------------------------------
/source/fonts/glyphicons-halflings-regular.eot-.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 404 Not Found
 4 | 
 5 | 

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.eot was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.eot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found 4 | 5 |

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.eot was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.svg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found 4 | 5 |

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.svg was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.ttf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found 4 | 5 |

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.ttf was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.woff.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found 4 | 5 |

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.woff was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.woff2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found 4 | 5 |

Not Found

6 |

The requested URL /demos/mp/fonts/glyphicons-halflings-regular.woff2 was not found on this server.

7 |

Additionally, a 404 Not Found 8 | error was encountered while trying to use an ErrorDocument to handle the request.

9 | 10 | -------------------------------------------------------------------------------- /source/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/iconfont.eot -------------------------------------------------------------------------------- /source/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Created by FontForge 20120731 at Sat Nov 28 22:48:50 2015 6 | By Ads 7 | 8 | 9 | 10 | 24 | 26 | 28 | 30 | 32 | 36 | 39 | 42 | 44 | 50 | 53 | 57 | 61 | 65 | 71 | 73 | 78 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /source/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/iconfont.ttf -------------------------------------------------------------------------------- /source/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/fonts/iconfont.woff -------------------------------------------------------------------------------- /source/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/.DS_Store -------------------------------------------------------------------------------- /source/images/about-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/about-img.jpg -------------------------------------------------------------------------------- /source/images/about-me-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/about-me-img.jpg -------------------------------------------------------------------------------- /source/images/author.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/author.jpg -------------------------------------------------------------------------------- /source/images/banner-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/banner-bg.jpg -------------------------------------------------------------------------------- /source/images/banner-bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/banner-bg2.jpg -------------------------------------------------------------------------------- /source/images/banner-bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/banner-bg3.jpg -------------------------------------------------------------------------------- /source/images/blog-post1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/blog-post1.jpg -------------------------------------------------------------------------------- /source/images/blog-post2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/blog-post2.jpg -------------------------------------------------------------------------------- /source/images/blog-post3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/blog-post3.jpg -------------------------------------------------------------------------------- /source/images/blog-post4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/blog-post4.jpg -------------------------------------------------------------------------------- /source/images/blog-post6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/blog-post6.jpg -------------------------------------------------------------------------------- /source/images/contact-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/contact-img.jpg -------------------------------------------------------------------------------- /source/images/content-img-small1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/content-img-small1.jpg -------------------------------------------------------------------------------- /source/images/content-img-small2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/content-img-small2.jpg -------------------------------------------------------------------------------- /source/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/favicon.png -------------------------------------------------------------------------------- /source/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/logo.png -------------------------------------------------------------------------------- /source/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/logo2.png -------------------------------------------------------------------------------- /source/images/logo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/logo3.png -------------------------------------------------------------------------------- /source/images/logo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/logo4.png -------------------------------------------------------------------------------- /source/images/m-project1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project1.jpg -------------------------------------------------------------------------------- /source/images/m-project11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project11.jpg -------------------------------------------------------------------------------- /source/images/m-project3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project3.jpg -------------------------------------------------------------------------------- /source/images/m-project5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project5.jpg -------------------------------------------------------------------------------- /source/images/m-project7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project7.jpg -------------------------------------------------------------------------------- /source/images/m-project9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/m-project9.jpg -------------------------------------------------------------------------------- /source/images/post-img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-img1.jpg -------------------------------------------------------------------------------- /source/images/post-img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-img2.jpg -------------------------------------------------------------------------------- /source/images/post-img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-img3.jpg -------------------------------------------------------------------------------- /source/images/post-img5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-img5.jpg -------------------------------------------------------------------------------- /source/images/post-small1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-small1.jpg -------------------------------------------------------------------------------- /source/images/post-small2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post-small2.jpg -------------------------------------------------------------------------------- /source/images/post_preview_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/post_preview_default.jpg -------------------------------------------------------------------------------- /source/images/project-img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project-img1.jpg -------------------------------------------------------------------------------- /source/images/project-img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project-img2.jpg -------------------------------------------------------------------------------- /source/images/project-img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project-img3.jpg -------------------------------------------------------------------------------- /source/images/project1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project1.jpg -------------------------------------------------------------------------------- /source/images/project10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project10.jpg -------------------------------------------------------------------------------- /source/images/project11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project11.jpg -------------------------------------------------------------------------------- /source/images/project12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project12.jpg -------------------------------------------------------------------------------- /source/images/project2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project2.jpg -------------------------------------------------------------------------------- /source/images/project3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project3.jpg -------------------------------------------------------------------------------- /source/images/project4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project4.jpg -------------------------------------------------------------------------------- /source/images/project5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project5.jpg -------------------------------------------------------------------------------- /source/images/project6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project6.jpg -------------------------------------------------------------------------------- /source/images/project7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project7.jpg -------------------------------------------------------------------------------- /source/images/project8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project8.jpg -------------------------------------------------------------------------------- /source/images/project9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project9.jpg -------------------------------------------------------------------------------- /source/images/project_preview_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project_preview_default.jpg -------------------------------------------------------------------------------- /source/images/project_preview_more.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/project_preview_more.jpg -------------------------------------------------------------------------------- /source/images/team1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/team1.jpg -------------------------------------------------------------------------------- /source/images/team2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/team2.jpg -------------------------------------------------------------------------------- /source/images/team3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/team3.jpg -------------------------------------------------------------------------------- /source/images/user-img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/user-img1.jpg -------------------------------------------------------------------------------- /source/images/user-img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/user-img2.jpg -------------------------------------------------------------------------------- /source/images/user-img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/user-img3.jpg -------------------------------------------------------------------------------- /source/images/user-img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/images/user-img4.jpg -------------------------------------------------------------------------------- /source/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/js/.DS_Store -------------------------------------------------------------------------------- /source/js/custom.js: -------------------------------------------------------------------------------- 1 | var shuffleme = (function( $ ) { 2 | 'use strict'; 3 | var $grid = $('#grid'), //locate what we want to sort 4 | $filterOptions = $('.portfolio-filter li'), //locate the filter categories 5 | $sizer = $grid.find('.shuffle_sizer'), //sizer stores the size of the items 6 | 7 | init = function() { 8 | 9 | // None of these need to be executed synchronously 10 | setTimeout(function() { 11 | listen(); 12 | setupFilters(); 13 | }, 100); 14 | 15 | // instantiate the plugin 16 | $grid.shuffle({ 17 | itemSelector: '[class*="col-"]', 18 | sizer: $sizer 19 | }); 20 | }, 21 | 22 | 23 | 24 | // Set up button clicks 25 | setupFilters = function() { 26 | var $btns = $filterOptions.children(); 27 | $btns.on('click', function(e) { 28 | e.preventDefault(); 29 | var $this = $(this), 30 | isActive = $this.hasClass( 'active' ), 31 | group = isActive ? 'all' : $this.data('group'); 32 | 33 | // Hide current label, show current label in title 34 | if ( !isActive ) { 35 | $('.portfolio-filter li a').removeClass('active'); 36 | } 37 | 38 | $this.toggleClass('active'); 39 | 40 | // Filter elements 41 | $grid.shuffle( 'shuffle', group ); 42 | }); 43 | 44 | $btns = null; 45 | }, 46 | 47 | // Re layout shuffle when images load. This is only needed 48 | // below 768 pixels because the .picture-item height is auto and therefore 49 | // the height of the picture-item is dependent on the image 50 | // I recommend using imagesloaded to determine when an image is loaded 51 | // but that doesn't support IE7 52 | listen = function() { 53 | var debouncedLayout = $.throttle( 300, function() { 54 | $grid.shuffle('update'); 55 | }); 56 | 57 | // Get all images inside shuffle 58 | $grid.find('img').each(function() { 59 | var proxyImage; 60 | 61 | // Image already loaded 62 | if ( this.complete && this.naturalWidth !== undefined ) { 63 | return; 64 | } 65 | 66 | // If none of the checks above matched, simulate loading on detached element. 67 | proxyImage = new Image(); 68 | $( proxyImage ).on('load', function() { 69 | $(this).off('load'); 70 | debouncedLayout(); 71 | }); 72 | 73 | proxyImage.src = this.src; 74 | }); 75 | 76 | // Because this method doesn't seem to be perfect. 77 | setTimeout(function() { 78 | debouncedLayout(); 79 | }, 500); 80 | }; 81 | 82 | return { 83 | init: init 84 | }; 85 | }( jQuery )); 86 | 87 | $(document).ready(function() 88 | { 89 | shuffleme.init(); //filter portfolio 90 | }); -------------------------------------------------------------------------------- /source/js/form-scripts.js: -------------------------------------------------------------------------------- 1 | $("#contactForm").validator().on("submit", function (event) { 2 | if (event.isDefaultPrevented()) { 3 | // handle the invalid form... 4 | formError(); 5 | submitMSG(false, "Please fill all required fields!"); 6 | } else { 7 | // everything looks good! 8 | event.preventDefault(); 9 | submitForm(); 10 | } 11 | }); 12 | 13 | 14 | function submitForm(){ 15 | // Initiate Variables With Form Content 16 | var name = $("#name").val(); 17 | var email = $("#email").val(); 18 | var msg_subject = $("#msg_subject").val(); 19 | var message = $("#message").val(); 20 | 21 | 22 | $.ajax({ 23 | type: "POST", 24 | url: "php/form-process.php", 25 | data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&message=" + message, 26 | success : function(text){ 27 | if (text == "success"){ 28 | formSuccess(); 29 | } else { 30 | formError(); 31 | submitMSG(false,text); 32 | } 33 | } 34 | }); 35 | } 36 | 37 | function formSuccess(){ 38 | $("#contactForm"); 39 | submitMSG(true, "Message Sent!") 40 | } 41 | 42 | function formError(){ 43 | $("#contactForm").removeClass().addClass('animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){ 44 | $(this).removeClass(); 45 | }); 46 | } 47 | 48 | function submitMSG(valid, msg){ 49 | if(valid){ 50 | var msgClasses = "h3 text-center fadeIn animated text-success"; 51 | } else { 52 | var msgClasses = "h3 text-center text-danger"; 53 | } 54 | $("#msgSubmit").removeClass().addClass(msgClasses).text(msg); 55 | } -------------------------------------------------------------------------------- /source/js/jquery.countTo.js: -------------------------------------------------------------------------------- 1 | (function (factory) { 2 | if (typeof define === 'function' && define.amd) { 3 | // AMD 4 | define(['jquery'], factory); 5 | } else if (typeof exports === 'object') { 6 | // CommonJS 7 | factory(require('jquery')); 8 | } else { 9 | // Browser globals 10 | factory(jQuery); 11 | } 12 | }(function ($) { 13 | var CountTo = function (element, options) { 14 | this.$element = $(element); 15 | this.options = $.extend({}, CountTo.DEFAULTS, this.dataOptions(), options); 16 | this.init(); 17 | }; 18 | 19 | CountTo.DEFAULTS = { 20 | from: 0, // the number the element should start at 21 | to: 0, // the number the element should end at 22 | speed: 1000, // how long it should take to count between the target numbers 23 | refreshInterval: 100, // how often the element should be updated 24 | decimals: 0, // the number of decimal places to show 25 | formatter: formatter, // handler for formatting the value before rendering 26 | onUpdate: null, // callback method for every time the element is updated 27 | onComplete: null // callback method for when the element finishes updating 28 | }; 29 | 30 | CountTo.prototype.init = function () { 31 | this.value = this.options.from; 32 | this.loops = Math.ceil(this.options.speed / this.options.refreshInterval); 33 | this.loopCount = 0; 34 | this.increment = (this.options.to - this.options.from) / this.loops; 35 | }; 36 | 37 | CountTo.prototype.dataOptions = function () { 38 | var options = { 39 | from: this.$element.data('from'), 40 | to: this.$element.data('to'), 41 | speed: this.$element.data('speed'), 42 | refreshInterval: this.$element.data('refresh-interval'), 43 | decimals: this.$element.data('decimals') 44 | }; 45 | 46 | var keys = Object.keys(options); 47 | 48 | for (var i in keys) { 49 | var key = keys[i]; 50 | 51 | if (typeof(options[key]) === 'undefined') { 52 | delete options[key]; 53 | } 54 | } 55 | 56 | return options; 57 | }; 58 | 59 | CountTo.prototype.update = function () { 60 | this.value += this.increment; 61 | this.loopCount++; 62 | 63 | this.render(); 64 | 65 | if (typeof(this.options.onUpdate) == 'function') { 66 | this.options.onUpdate.call(this.$element, this.value); 67 | } 68 | 69 | if (this.loopCount >= this.loops) { 70 | clearInterval(this.interval); 71 | this.value = this.options.to; 72 | 73 | if (typeof(this.options.onComplete) == 'function') { 74 | this.options.onComplete.call(this.$element, this.value); 75 | } 76 | } 77 | }; 78 | 79 | CountTo.prototype.render = function () { 80 | var formattedValue = this.options.formatter.call(this.$element, this.value, this.options); 81 | this.$element.text(formattedValue); 82 | }; 83 | 84 | CountTo.prototype.restart = function () { 85 | this.stop(); 86 | this.init(); 87 | this.start(); 88 | }; 89 | 90 | CountTo.prototype.start = function () { 91 | this.stop(); 92 | this.render(); 93 | this.interval = setInterval(this.update.bind(this), this.options.refreshInterval); 94 | }; 95 | 96 | CountTo.prototype.stop = function () { 97 | if (this.interval) { 98 | clearInterval(this.interval); 99 | } 100 | }; 101 | 102 | CountTo.prototype.toggle = function () { 103 | if (this.interval) { 104 | this.stop(); 105 | } else { 106 | this.start(); 107 | } 108 | }; 109 | 110 | function formatter(value, options) { 111 | return value.toFixed(options.decimals); 112 | } 113 | 114 | $.fn.countTo = function (option) { 115 | return this.each(function () { 116 | var $this = $(this); 117 | var data = $this.data('countTo'); 118 | var init = !data || typeof(option) === 'object'; 119 | var options = typeof(option) === 'object' ? option : {}; 120 | var method = typeof(option) === 'string' ? option : 'start'; 121 | 122 | if (init) { 123 | if (data) data.stop(); 124 | $this.data('countTo', data = new CountTo(this, options)); 125 | } 126 | 127 | data[method].call(data); 128 | }); 129 | }; 130 | })); 131 | -------------------------------------------------------------------------------- /source/js/jquery.easing.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - EASING EQUATIONS 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2001 Robert Penner 12 | * All rights reserved. 13 | * 14 | * TERMS OF USE - jQuery Easing 15 | * 16 | * Open source under the BSD License. 17 | * 18 | * Copyright © 2008 George McGinley Smith 19 | * All rights reserved. 20 | * 21 | * Redistribution and use in source and binary forms, with or without modification, 22 | * are permitted provided that the following conditions are met: 23 | * 24 | * Redistributions of source code must retain the above copyright notice, this list of 25 | * conditions and the following disclaimer. 26 | * Redistributions in binary form must reproduce the above copyright notice, this list 27 | * of conditions and the following disclaimer in the documentation and/or other materials 28 | * provided with the distribution. 29 | * 30 | * Neither the name of the author nor the names of contributors may be used to endorse 31 | * or promote products derived from this software without specific prior written permission. 32 | * 33 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 34 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 35 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 36 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 37 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 38 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 39 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 40 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 41 | * OF THE POSSIBILITY OF SUCH DAMAGE. 42 | * 43 | */ 44 | jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g'+item+''+after; 19 | }); 20 | t.empty().append(inject); 21 | } 22 | } 23 | 24 | var methods = { 25 | init : function() { 26 | 27 | return this.each(function() { 28 | injector($(this), '', 'char', ''); 29 | }); 30 | 31 | }, 32 | 33 | words : function() { 34 | 35 | return this.each(function() { 36 | injector($(this), ' ', 'word', ' '); 37 | }); 38 | 39 | }, 40 | 41 | lines : function() { 42 | 43 | return this.each(function() { 44 | var r = "eefec303079ad17405c889e092e105b0"; 45 | // Because it's hard to split a
tag consistently across browsers, 46 | // (*ahem* IE *ahem*), we replaces all
instances with an md5 hash 47 | // (of the word "split"). If you're trying to use this plugin on that 48 | // md5 hash string, it will fail because you're being ridiculous. 49 | injector($(this).children("br").replaceWith(r).end(), r, 'line', ''); 50 | }); 51 | 52 | } 53 | }; 54 | 55 | $.fn.lettering = function( method ) { 56 | // Method calling logic 57 | if ( method && methods[method] ) { 58 | return methods[ method ].apply( this, [].slice.call( arguments, 1 )); 59 | } else if ( method === 'letters' || ! method ) { 60 | return methods.init.apply( this, [].slice.call( arguments, 0 ) ); // always pass an array 61 | } 62 | $.error( 'Method ' + method + ' does not exist on jQuery.lettering' ); 63 | return this; 64 | }; 65 | 66 | })(jQuery); -------------------------------------------------------------------------------- /source/js/jquery.magnific-popup.min.js: -------------------------------------------------------------------------------- 1 | /*! Magnific Popup - v1.1.0 - 2016-02-20 2 | * http://dimsemenov.com/plugins/magnific-popup/ 3 | * Copyright (c) 2016 Dmitry Semenov; */ 4 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); -------------------------------------------------------------------------------- /source/js/jquery.qrcode.min.js: -------------------------------------------------------------------------------- 1 | /* jQuery.qrcode 0.12.0 - http://larsjung.de/jquery-qrcode/ - uses //github.com/kazuhikoarase/qrcode-generator (MIT) */ 2 | !function(r){"use strict";function t(t,e,n,o){function i(r,t){return r-=o,t-=o,0>r||r>=u||0>t||t>=u?!1:a.isDark(r,t)}var a=r(n,e);a.addData(t),a.make(),o=o||0;var u=a.getModuleCount(),f=a.getModuleCount()+2*o,c=function(r,t,e,n){var o=this.isDark,i=1/f;this.isDark=function(a,u){var f=u*i,c=a*i,l=f+i,g=c+i;return o(a,u)&&(r>l||f>e||t>g||c>n)}};this.text=t,this.level=e,this.version=n,this.moduleCount=f,this.isDark=i,this.addBlank=c}function e(r,e,n,o,i){n=Math.max(1,n||1),o=Math.min(40,o||40);for(var a=n;o>=a;a+=1)try{return new t(r,e,a,i)}catch(u){}}function n(r,t,e){var n=e.size,o="bold "+e.mSize*n+"px "+e.fontname,i=w("")[0].getContext("2d");i.font=o;var a=i.measureText(e.label).width,u=e.mSize,f=a/n,c=(1-f)*e.mPosX,l=(1-u)*e.mPosY,g=c+f,s=l+u,h=.01;1===e.mode?r.addBlank(0,l-h,n,s+h):r.addBlank(c-h,l-h,g+h,s+h),t.fillStyle=e.fontcolor,t.font=o,t.fillText(e.label,c*n,l*n+.75*e.mSize*n)}function o(r,t,e){var n=e.size,o=e.image.naturalWidth||1,i=e.image.naturalHeight||1,a=e.mSize,u=a*o/i,f=(1-u)*e.mPosX,c=(1-a)*e.mPosY,l=f+u,g=c+a,s=.01;3===e.mode?r.addBlank(0,c-s,n,g+s):r.addBlank(f-s,c-s,l+s,g+s),t.drawImage(e.image,f*n,c*n,u*n,a*n)}function i(r,t,e){w(e.background).is("img")?t.drawImage(e.background,0,0,e.size,e.size):e.background&&(t.fillStyle=e.background,t.fillRect(e.left,e.top,e.size,e.size));var i=e.mode;1===i||2===i?n(r,t,e):(3===i||4===i)&&o(r,t,e)}function a(r,t,e,n,o,i,a,u){r.isDark(a,u)&&t.rect(n,o,i,i)}function u(r,t,e,n,o,i,a,u,f,c){a?r.moveTo(t+i,e):r.moveTo(t,e),u?(r.lineTo(n-i,e),r.arcTo(n,e,n,o,i)):r.lineTo(n,e),f?(r.lineTo(n,o-i),r.arcTo(n,o,t,o,i)):r.lineTo(n,o),c?(r.lineTo(t+i,o),r.arcTo(t,o,t,e,i)):r.lineTo(t,o),a?(r.lineTo(t,e+i),r.arcTo(t,e,n,e,i)):r.lineTo(t,e)}function f(r,t,e,n,o,i,a,u,f,c){a&&(r.moveTo(t+i,e),r.lineTo(t,e),r.lineTo(t,e+i),r.arcTo(t,e,t+i,e,i)),u&&(r.moveTo(n-i,e),r.lineTo(n,e),r.lineTo(n,e+i),r.arcTo(n,e,n-i,e,i)),f&&(r.moveTo(n-i,o),r.lineTo(n,o),r.lineTo(n,o-i),r.arcTo(n,o,n-i,o,i)),c&&(r.moveTo(t+i,o),r.lineTo(t,o),r.lineTo(t,o-i),r.arcTo(t,o,t+i,o,i))}function c(r,t,e,n,o,i,a,c){var l=r.isDark,g=n+i,s=o+i,h=e.radius*i,v=a-1,d=a+1,w=c-1,m=c+1,p=l(a,c),y=l(v,w),T=l(v,c),B=l(v,m),A=l(a,m),E=l(d,m),k=l(d,c),M=l(d,w),C=l(a,w);p?u(t,n,o,g,s,h,!T&&!C,!T&&!A,!k&&!A,!k&&!C):f(t,n,o,g,s,h,T&&C&&y,T&&A&&B,k&&A&&E,k&&C&&M)}function l(r,t,e){var n,o,i=r.moduleCount,u=e.size/i,f=a;for(p&&e.radius>0&&e.radius<=.5&&(f=c),t.beginPath(),n=0;i>n;n+=1)for(o=0;i>o;o+=1){var l=e.left+o*u,g=e.top+n*u,s=u;f(r,t,e,l,g,s,n,o)}if(w(e.fill).is("img")){t.strokeStyle="rgba(0,0,0,0.5)",t.lineWidth=2,t.stroke();var h=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(),t.globalCompositeOperation=h,t.clip(),t.drawImage(e.fill,0,0,e.size,e.size),t.restore()}else t.fillStyle=e.fill,t.fill()}function g(r,t){var n=e(t.text,t.ecLevel,t.minVersion,t.maxVersion,t.quiet);if(!n)return null;var o=w(r).data("qrcode",n),a=o[0].getContext("2d");return i(n,a,t),l(n,a,t),o}function s(r){var t=w("").attr("width",r.size).attr("height",r.size);return g(t,r)}function h(r){return w("").attr("src",s(r)[0].toDataURL("image/png"))}function v(r){var t=e(r.text,r.ecLevel,r.minVersion,r.maxVersion,r.quiet);if(!t)return null;var n,o,i=r.size,a=r.background,u=Math.floor,f=t.moduleCount,c=u(i/f),l=u(.5*(i-c*f)),g={position:"relative",left:0,top:0,padding:0,margin:0,width:i,height:i},s={position:"absolute",padding:0,margin:0,width:c,height:c,"background-color":r.fill},h=w("
").data("qrcode",t).css(g);for(a&&h.css("background-color",a),n=0;f>n;n+=1)for(o=0;f>o;o+=1)t.isDark(n,o)&&w("
").css(s).css({left:l+o*c,top:l+n*c}).appendTo(h);return h}function d(r){return m&&"canvas"===r.render?s(r):m&&"image"===r.render?h(r):v(r)}var w=jQuery,m=function(){var r=document.createElement("canvas");return Boolean(r.getContext&&r.getContext("2d"))}(),p="[object Opera]"!==Object.prototype.toString.call(window.opera),y={render:"canvas",minVersion:1,maxVersion:40,ecLevel:"L",left:0,top:0,size:200,fill:"#000",background:null,text:"no text",radius:0,quiet:0,mode:0,mSize:.1,mPosX:.5,mPosY:.5,label:"no label",fontname:"sans",fontcolor:"#000",image:null};w.fn.qrcode=function(r){var t=w.extend({},y,r);return this.each(function(){"canvas"===this.nodeName.toLowerCase()?g(this,t):w(this).append(d(t))})}}(function(){var r=function(){function r(t,e){if("undefined"==typeof t.length)throw new Error(t.length+"/"+e);var n=function(){for(var r=0;re;e+=1){t[e]=new Array(r);for(var n=0;r>n;n+=1)t[e][n]=null}return t}(h),y(0,0),y(h-7,0),y(0,h-7),A(),B(),k(r,t),l>=7&&E(r),null==d&&(d=D(l,g,w)),M(d,t)},y=function(r,t){for(var e=-1;7>=e;e+=1)if(!(-1>=r+e||r+e>=h))for(var n=-1;7>=n;n+=1)-1>=t+n||t+n>=h||(e>=0&&6>=e&&(0==n||6==n)||n>=0&&6>=n&&(0==e||6==e)||e>=2&&4>=e&&n>=2&&4>=n?s[r+e][t+n]=!0:s[r+e][t+n]=!1)},T=function(){for(var r=0,t=0,e=0;8>e;e+=1){p(!0,e);var n=i.getLostPoint(m);(0==e||r>n)&&(r=n,t=e)}return t},B=function(){for(var r=8;h-8>r;r+=1)null==s[r][6]&&(s[r][6]=r%2==0);for(var t=8;h-8>t;t+=1)null==s[6][t]&&(s[6][t]=t%2==0)},A=function(){for(var r=i.getPatternPosition(l),t=0;t=a;a+=1)for(var u=-2;2>=u;u+=1)-2==a||2==a||-2==u||2==u||0==a&&0==u?s[n+a][o+u]=!0:s[n+a][o+u]=!1}},E=function(r){for(var t=i.getBCHTypeNumber(l),e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[Math.floor(e/3)][e%3+h-8-3]=n}for(var e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[e%3+h-8-3][Math.floor(e/3)]=n}},k=function(r,t){for(var e=g<<3|t,n=i.getBCHTypeInfo(e),o=0;15>o;o+=1){var a=!r&&1==(n>>o&1);6>o?s[o][8]=a:8>o?s[o+1][8]=a:s[h-15+o][8]=a}for(var o=0;15>o;o+=1){var a=!r&&1==(n>>o&1);8>o?s[8][h-o-1]=a:9>o?s[8][15-o-1+1]=a:s[8][15-o-1]=a}s[h-8][8]=!r},M=function(r,t){for(var e=-1,n=h-1,o=7,a=0,u=i.getMaskFunction(t),f=h-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var c=0;2>c;c+=1)if(null==s[n][f-c]){var l=!1;a>>o&1));var g=u(n,f-c);g&&(l=!l),s[n][f-c]=l,o-=1,-1==o&&(a+=1,o=7)}if(n+=e,0>n||n>=h){n-=e,e=-e;break}}},C=function(t,e){for(var n=0,o=0,a=0,u=new Array(e.length),f=new Array(e.length),c=0;c=0?d.getAt(w):0}}for(var m=0,s=0;ss;s+=1)for(var c=0;cs;s+=1)for(var c=0;c8*s)throw new Error("code length overflow. ("+c.getLengthInBits()+">"+8*s+")");for(c.getLengthInBits()+4<=8*s&&c.put(0,4);c.getLengthInBits()%8!=0;)c.putBit(!1);for(;;){if(c.getLengthInBits()>=8*s)break;if(c.put(o,8),c.getLengthInBits()>=8*s)break;c.put(a,8)}return C(c,n)};return m.addData=function(r){var t=c(r);w.push(t),d=null},m.isDark=function(r,t){if(0>r||r>=h||0>t||t>=h)throw new Error(r+","+t);return s[r][t]},m.getModuleCount=function(){return h},m.make=function(){p(!1,T())},m.createTableTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e="";e+='";for(var o=0;o';e+=""}return e+="",e+="
"},m.createImgTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e=m.getModuleCount()*r+2*t,n=t,o=e-t;return v(e,e,function(t,e){if(t>=n&&o>t&&e>=n&&o>e){var i=Math.floor((t-n)/r),a=Math.floor((e-n)/r);return m.isDark(a,i)?0:1}return 1})},m};t.stringToBytes=function(r){for(var t=new Array,e=0;ei)t.push(i);else{var a=e[r.charAt(o)];"number"==typeof a?(255&a)==a?t.push(a):(t.push(a>>>8),t.push(255&a)):t.push(n)}}return t}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},o={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var t=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,u=21522,f={},c=function(r){for(var t=0;0!=r;)t+=1,r>>>=1;return t};return f.getBCHTypeInfo=function(r){for(var t=r<<10;c(t)-c(n)>=0;)t^=n<=0;)t^=i<n;n+=1)e=e.multiply(r([1,a.gexp(n)],0));return e},f.getLengthInBits=function(r,t){if(t>=1&&10>t)switch(r){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+r)}else if(27>t)switch(r){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+r)}else{if(!(41>t))throw new Error("type:"+t);switch(r){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+r)}}},f.getLostPoint=function(r){for(var t=r.getModuleCount(),e=0,n=0;t>n;n+=1)for(var o=0;t>o;o+=1){for(var i=0,a=r.isDark(n,o),u=-1;1>=u;u+=1)if(!(0>n+u||n+u>=t))for(var f=-1;1>=f;f+=1)0>o+f||o+f>=t||(0!=u||0!=f)&&a==r.isDark(n+u,o+f)&&(i+=1);i>5&&(e+=3+i-5)}for(var n=0;t-1>n;n+=1)for(var o=0;t-1>o;o+=1){var c=0;r.isDark(n,o)&&(c+=1),r.isDark(n+1,o)&&(c+=1),r.isDark(n,o+1)&&(c+=1),r.isDark(n+1,o+1)&&(c+=1),(0==c||4==c)&&(e+=3)}for(var n=0;t>n;n+=1)for(var o=0;t-6>o;o+=1)r.isDark(n,o)&&!r.isDark(n,o+1)&&r.isDark(n,o+2)&&r.isDark(n,o+3)&&r.isDark(n,o+4)&&!r.isDark(n,o+5)&&r.isDark(n,o+6)&&(e+=40);for(var o=0;t>o;o+=1)for(var n=0;t-6>n;n+=1)r.isDark(n,o)&&!r.isDark(n+1,o)&&r.isDark(n+2,o)&&r.isDark(n+3,o)&&r.isDark(n+4,o)&&!r.isDark(n+5,o)&&r.isDark(n+6,o)&&(e+=40);for(var l=0,o=0;t>o;o+=1)for(var n=0;t>n;n+=1)r.isDark(n,o)&&(l+=1);var g=Math.abs(100*l/t/t-50)/5;return e+=10*g},f}(),a=function(){for(var r=new Array(256),t=new Array(256),e=0;8>e;e+=1)r[e]=1<e;e+=1)r[e]=r[e-4]^r[e-5]^r[e-6]^r[e-8];for(var e=0;255>e;e+=1)t[r[e]]=e;var n={};return n.glog=function(r){if(1>r)throw new Error("glog("+r+")");return t[r]},n.gexp=function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return r[t]},n}(),u=function(){var r=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(r,t){var e={};return e.totalCount=r,e.dataCount=t,e},e={},o=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return void 0}};return e.getRSBlocks=function(r,e){var n=o(r,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+e);for(var i=n.length/3,a=new Array,u=0;i>u;u+=1)for(var f=n[3*u+0],c=n[3*u+1],l=n[3*u+2],g=0;f>g;g+=1)a.push(t(c,l));return a},e}(),f=function(){var r=new Array,t=0,e={};return e.getBuffer=function(){return r},e.getAt=function(t){var e=Math.floor(t/8);return 1==(r[e]>>>7-t%8&1)},e.put=function(r,t){for(var n=0;t>n;n+=1)e.putBit(1==(r>>>t-n-1&1))},e.getLengthInBits=function(){return t},e.putBit=function(e){var n=Math.floor(t/8);r.length<=n&&r.push(0),e&&(r[n]|=128>>>t%8),t+=1},e},c=function(r){var n=e.MODE_8BIT_BYTE,o=t.stringToBytes(r),i={};return i.getMode=function(){return n},i.getLength=function(r){return o.length},i.write=function(r){for(var t=0;t>>8)},t.writeBytes=function(r,e,n){e=e||0,n=n||r.length;for(var o=0;n>o;o+=1)t.writeByte(r[o+e])},t.writeString=function(r){for(var e=0;e0&&(t+=","),t+=r[e];return t+="]"},t},g=function(){var r=0,t=0,e=0,n="",o={},i=function(r){n+=String.fromCharCode(a(63&r))},a=function(r){if(0>r);else{if(26>r)return 65+r;if(52>r)return 97+(r-26);if(62>r)return 48+(r-52);if(62==r)return 43;if(63==r)return 47}throw new Error("n:"+r)};return o.writeByte=function(n){for(r=r<<8|255&n,t+=8,e+=1;t>=6;)i(r>>>t-6),t-=6},o.flush=function(){if(t>0&&(i(r<<6-t),r=0,t=0),e%3!=0)for(var o=3-e%3,a=0;o>a;a+=1)n+="="},o.toString=function(){return n},o},s=function(r){var t=r,e=0,n=0,o=0,i={};i.read=function(){for(;8>o;){if(e>=t.length){if(0==o)return-1;throw new Error("unexpected end of file./"+o)}var r=t.charAt(e);if(e+=1,"="==r)return o=0,-1;r.match(/^\s$/)||(n=n<<6|a(r.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i};var a=function(r){if(r>=65&&90>=r)return r-65;if(r>=97&&122>=r)return r-97+26;if(r>=48&&57>=r)return r-48+52;if(43==r)return 62;if(47==r)return 63;throw new Error("c:"+r)};return i},h=function(r,t){var e=r,n=t,o=new Array(r*t),i={};i.setPixel=function(r,t,n){o[t*e+r]=n},i.write=function(r){r.writeString("GIF87a"),r.writeShort(e),r.writeShort(n),r.writeByte(128),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(255),r.writeByte(255),r.writeByte(255),r.writeString(","),r.writeShort(0),r.writeShort(0),r.writeShort(e),r.writeShort(n),r.writeByte(0);var t=2,o=u(t);r.writeByte(t);for(var i=0;o.length-i>255;)r.writeByte(255),r.writeBytes(o,i,255),i+=255;r.writeByte(o.length-i),r.writeBytes(o,i,o.length-i),r.writeByte(0),r.writeString(";")};var a=function(r){var t=r,e=0,n=0,o={};return o.write=function(r,o){if(r>>>o!=0)throw new Error("length over");for(;e+o>=8;)t.writeByte(255&(r<>>=8-e,n=0,e=0;n=r<0&&t.writeByte(n)},o},u=function(r){for(var t=1<u;u+=1)i.add(String.fromCharCode(u));i.add(String.fromCharCode(t)),i.add(String.fromCharCode(e));var c=l(),g=a(c);g.write(t,n);var s=0,h=String.fromCharCode(o[s]);for(s+=1;si;i+=1)for(var a=0;r>a;a+=1)o.setPixel(a,i,e(a,i));var u=l();o.write(u);for(var f=g(),c=u.toByteArray(),s=0;sn?t.push(n):2048>n?t.push(192|n>>6,128|63&n):55296>n||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&r.charCodeAt(e)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}return t(r)}}(r),r}()); -------------------------------------------------------------------------------- /source/js/jquery.share.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Share.js 3 | * 4 | * @author overtrue 5 | * @license MIT 6 | * 7 | * @example 8 | *
  9 |  * $('.share-components').share();
 10 |  *
 11 |  * // or
 12 |  *
 13 |  * $('.share-bar').share({
 14 |  *     sites: ['qzone', 'qq', 'weibo','wechat'],
 15 |  *     // ...
 16 |  * });
 17 |  * 
18 | */ 19 | ;(function($){ 20 | /** 21 | * Initialize a share bar. 22 | * 23 | * @param {Object} $options globals (optional). 24 | * 25 | * @return {Void} 26 | */ 27 | $.fn.share = function ($options) { 28 | var $head = $(document.head); 29 | 30 | var $defaults = { 31 | url: location.href, 32 | site_url: location.origin, 33 | source: $head.find('[name=site], [name=Site]').attr('content') || document.title, 34 | title: $head.find('[name=title], [name=Title]').attr('content') || document.title, 35 | description: $head.find('[name=description], [name=Description]').attr('content') || '', 36 | image: $('img:first').prop('src') || '', 37 | imageSelector: undefined, 38 | 39 | weiboKey: '', 40 | 41 | wechatQrcodeTitle: '微信扫一扫:分享', 42 | wechatQrcodeHelper: '

微信里点“发现”,扫一下

二维码便可将本文分享至朋友圈。

', 43 | wechatQrcodeSize: 100, 44 | 45 | mobileSites: [], 46 | sites: ['weibo','qq','wechat','tencent','douban','qzone','linkedin','diandian','facebook','twitter','google'], 47 | disabled: [], 48 | initialized: false 49 | }; 50 | 51 | var $globals = $.extend({}, $defaults, $options); 52 | 53 | var $templates = { 54 | qzone : 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary={{SUMMARY}}&site={{SOURCE}}', 55 | qq : 'http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&source={{SOURCE}}&desc={{DESCRIPTION}}&pics={{IMAGE}}', 56 | tencent : 'http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}', 57 | weibo : 'http://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}&appkey={{WEIBOKEY}}', 58 | wechat : 'javascript:;', 59 | douban : 'http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}&starid=0&aid=0&style=11', 60 | diandian : 'http://www.diandian.com/share?lo={{URL}}&ti={{TITLE}}&type=link', 61 | linkedin : 'http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{SUMMARY}}&source={{SOURCE}}&armin=armin', 62 | facebook : 'https://www.facebook.com/sharer/sharer.php?u={{URL}}&title={{TITLE}}&description={{DESCRIPTION}}&caption={{SUBHEAD}}&link={{URL}}&picture={{IMAGE}}', 63 | twitter : 'https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}&via={{SITE_URL}}', 64 | google : 'https://plus.google.com/share?url={{URL}}' 65 | }; 66 | 67 | var $ariaLabels = { 68 | qzone: "QQ空间", 69 | qq: "QQ", 70 | tencent: "腾讯微博", 71 | weibo: "微博", 72 | wechat: "微信", 73 | douban: "豆瓣", 74 | diandian: "点点", 75 | linkedin: "LinkedIn", 76 | facebook: "Facebook", 77 | twitter: "Twitter", 78 | google: "Google" 79 | }; 80 | 81 | this.each(function() { 82 | if ($(this).data('initialized')) { 83 | return true; 84 | } 85 | 86 | var $data = $.extend({}, $globals, $(this).data()); 87 | if ($data.imageSelector) { 88 | $data.image = $($data.imageSelector).map(function() { 89 | return $(this).prop('src'); 90 | }).get().join('||'); 91 | } 92 | var $container = $(this).addClass('share-component social-share'); 93 | 94 | createIcons($container, $data); 95 | createWechat($container, $data); 96 | 97 | $(this).data('initialized', true); 98 | }); 99 | 100 | /** 101 | * Create site icons 102 | * 103 | * @param {Object|String} $container 104 | * @param {Object} $data 105 | */ 106 | function createIcons ($container, $data) { 107 | var $sites = getSites($data); 108 | 109 | $data.mode == 'prepend' ? $sites.reverse() : $sites 110 | 111 | if (!$sites.length) {return;} 112 | 113 | $.each($sites, function (i, $name) { 114 | var $url = makeUrl($name, $data); 115 | var $link = $data.initialized ? $container.find('.icon-'+$name) : $(''); 116 | 117 | if (!$link.length) { 118 | return true; 119 | } 120 | $link.prop('aria-label', "分享到 "+$ariaLabels[$name]); 121 | 122 | $link.prop('href', $url); 123 | 124 | if ($name === 'wechat') { 125 | $link.prop('tabindex', -1); 126 | } else { 127 | $link.prop('target', '_blank'); 128 | } 129 | 130 | if (!$data.initialized) { 131 | $data.mode == 'prepend' ? $container.prepend($link) : $container.append($link); 132 | } 133 | }); 134 | } 135 | 136 | /** 137 | * Create the wechat icon and QRCode. 138 | * 139 | * @param {Object|String} $container 140 | * @param {Object} $data 141 | */ 142 | function createWechat ($container, $data) { 143 | var $wechat = $container.find('a.icon-wechat'); 144 | 145 | if (!$wechat.length) {return;} 146 | 147 | $wechat.append('

'+$data.wechatQrcodeTitle+'

'+$data.wechatQrcodeHelper+'
'); 148 | 149 | $wechat.find('.qrcode').qrcode({render: 'image', size: $data.wechatQrcodeSize, text: $data.url}); 150 | 151 | if ($wechat.offset().top < 100) { 152 | $wechat.find('.wechat-qrcode').addClass('bottom'); 153 | } 154 | } 155 | 156 | /** 157 | * Get available site lists. 158 | * 159 | * @param {Array} $data 160 | * 161 | * @return {Array} 162 | */ 163 | function getSites ($data) { 164 | if ($data['mobileSites'].length === 0 && $data['sites'].length) { 165 | $data['mobileSites'] = $data['sites']; 166 | }; 167 | 168 | var $sites = (isMobileScreen() ? $data['mobileSites'] : ($data['sites'].length ? $data['sites']: [])).slice(0); 169 | var $disabled = $data['disabled']; 170 | 171 | if (typeof $sites == 'string') { $sites = $sites.split(/\s*,\s*/); } 172 | if (typeof $disabled == 'string') { $disabled = $disabled.split(/\s*,\s*/); } 173 | 174 | if (runningInWeChat()) { 175 | $disabled.push('wechat'); 176 | } 177 | // Remove elements 178 | $disabled.length && $.each($disabled, function (i, el) { 179 | var removeItemIndex = $.inArray(el, $sites); 180 | if (removeItemIndex !== -1) { 181 | $sites.splice(removeItemIndex, 1); 182 | } 183 | }); 184 | 185 | return $sites; 186 | } 187 | 188 | /** 189 | * Build the url of icon. 190 | * 191 | * @param {String} $name 192 | * @param {Object} $data 193 | * 194 | * @return {String} 195 | */ 196 | function makeUrl ($name, $data) { 197 | var $template = $templates[$name]; 198 | $data['summary'] = $data['description']; 199 | 200 | for (var $key in $data) { 201 | if ($data.hasOwnProperty($key)) { 202 | var $camelCaseKey = $name + $key.replace(/^[a-z]/, function($str){ 203 | return $str.toUpperCase(); 204 | }); 205 | 206 | var $value = encodeURIComponent($data[$camelCaseKey] === undefined ? $data[$key] : $data[$camelCaseKey]); 207 | $template = $template.replace(new RegExp('{{'+$key.toUpperCase()+'}}', 'g'), $value); 208 | } 209 | } 210 | 211 | return $template; 212 | } 213 | 214 | /** 215 | * Detect wechat browser. 216 | * 217 | * @return {Boolean} 218 | */ 219 | function runningInWeChat() { 220 | return /MicroMessenger/i.test(navigator.userAgent); 221 | } 222 | 223 | /** 224 | * Mobile screen width. 225 | * 226 | * @return {boolean} 227 | */ 228 | function isMobileScreen () { 229 | return $(window).width() <= 768; 230 | } 231 | }; 232 | 233 | // Domready after initialization 234 | $(function () { 235 | $('.share-component,.social-share').share(); 236 | }); 237 | })(jQuery); 238 | -------------------------------------------------------------------------------- /source/js/jquery.shuffle.min.js: -------------------------------------------------------------------------------- 1 | // IMPORTANT! 2 | // If you're already using Modernizr, delete it from this file. If you don't know what Modernizr is, leave it :) 3 | 4 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD 5 | * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes 6 | */ 7 | ;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms=function(){return!!F("transform")},q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document); 8 | 9 | 10 | /** 11 | * @author Glen Cheney 12 | */ 13 | /* 14 | * jQuery throttle / debounce - v1.1 - 3/7/2010 15 | * http://benalman.com/projects/jquery-throttle-debounce-plugin/ 16 | * 17 | * Copyright (c) 2010 "Cowboy" Ben Alman 18 | * Dual licensed under the MIT and GPL licenses. 19 | * http://benalman.com/about/license/ 20 | */ 21 | (function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this); 22 | 23 | 24 | /*! 25 | * Shuffle.js by @Vestride 26 | * Categorize, sort, and filter a responsive grid of items. 27 | * Dependencies: jQuery 1.9+, Modernizr 2.6.2+ 28 | * @license MIT license 29 | * @version 3.1.1 30 | */ 31 | !function(a){"function"==typeof define&&define.amd?define(["jquery","modernizr"],a):"object"==typeof exports?module.exports=a(require("jquery"),window.Modernizr):window.Shuffle=a(window.jQuery,window.Modernizr)}(function(a,b,c){"use strict";function d(a){return a?a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-"):""}function e(b,c,d){var e,f,g,h=null,i=0;d=d||{};var j=function(){i=d.leading===!1?0:a.now(),h=null,g=b.apply(e,f),e=f=null};return function(){var k=a.now();i||d.leading!==!1||(i=k);var l=c-(k-i);return e=this,f=arguments,0>=l||l>c?(clearTimeout(h),h=null,i=k,g=b.apply(e,f),e=f=null):h||d.trailing===!1||(h=setTimeout(j,l)),g}}function f(a,b,c){for(var d=0,e=a.length;e>d;d++)if(b.call(c,a[d],d,a)==={})return}function g(b,c,d){return setTimeout(a.proxy(b,c),d)}function h(a){return Math.max.apply(Math,a)}function i(a){return Math.min.apply(Math,a)}function j(b){return a.isNumeric(b)?b:0}function k(a){var b,c,d=a.length;if(!d)return a;for(;--d;)c=Math.floor(Math.random()*(d+1)),b=a[c],a[c]=a[d],a[d]=b;return a}if("object"!=typeof b)throw new Error("Shuffle.js requires Modernizr.\nhttp://vestride.github.io/Shuffle/#dependencies");var l=b.prefixed("transition"),m=b.prefixed("transitionDelay"),n=b.prefixed("transitionDuration"),o={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[l],p=b.prefixed("transform"),q=d(p),r=b.csstransforms&&b.csstransitions,s=b.csstransforms3d,t=!!window.getComputedStyle,u="shuffle",v="all",w="groups",x=1,y=.001,z=window.getComputedStyle||function(){},A=function(a,b){this.x=j(a),this.y=j(b)};A.equals=function(a,b){return a.x===b.x&&a.y===b.y};var B=function(){if(!t)return!1;var a=document.body||document.documentElement,b=document.createElement("div");b.style.cssText="width:10px;padding:2px;-webkit-box-sizing:border-box;box-sizing:border-box;",a.appendChild(b);var c=z(b,null).width,d="10px"===c;return a.removeChild(b),d}(),C=0,D=a(window),E=function(b,c){c=c||{},a.extend(this,E.options,c,E.settings),this.$el=a(b),this.element=b,this.unique="shuffle_"+C++,this._fire(E.EventType.LOADING),this._init(),g(function(){this.initialized=!0,this._fire(E.EventType.DONE)},this,16)};return E.EventType={LOADING:"loading",DONE:"done",LAYOUT:"layout",REMOVED:"removed"},E.ClassName={BASE:u,SHUFFLE_ITEM:"shuffle-item",FILTERED:"filtered",CONCEALED:"concealed"},E.options={group:v,speed:250,easing:"ease-out",itemSelector:"",sizer:null,gutterWidth:0,columnWidth:0,delimeter:null,buffer:0,columnThreshold:t?.01:.1,initialSort:null,throttle:e,throttleTime:300,sequentialFadeDelay:150,supported:r},E.settings={useSizer:!1,itemCss:{position:"absolute",top:0,left:0,visibility:"visible"},revealAppendedDelay:300,lastSort:{},lastFilter:v,enabled:!0,destroyed:!1,initialized:!1,_animations:[],_transitions:[],_isMovementCanceled:!1,styleQueue:[]},E.Point=A,E._getItemTransformString=function(a,b){return s?"translate3d("+a.x+"px, "+a.y+"px, 0) scale3d("+b+", "+b+", 1)":"translate("+a.x+"px, "+a.y+"px) scale("+b+")"},E._getNumberStyle=function(b,c,d){if(t){d=d||z(b,null);var e=E._getFloat(d[c]);return B||"width"!==c?B||"height"!==c||(e+=E._getFloat(d.paddingTop)+E._getFloat(d.paddingBottom)+E._getFloat(d.borderTopWidth)+E._getFloat(d.borderBottomWidth)):e+=E._getFloat(d.paddingLeft)+E._getFloat(d.paddingRight)+E._getFloat(d.borderLeftWidth)+E._getFloat(d.borderRightWidth),e}return E._getFloat(a(b).css(c))},E._getFloat=function(a){return j(parseFloat(a))},E._getOuterWidth=function(a,b){var c=z(a,null),d=E._getNumberStyle(a,"width",c);if(b){var e=E._getNumberStyle(a,"marginLeft",c),f=E._getNumberStyle(a,"marginRight",c);d+=e+f}return d},E._getOuterHeight=function(a,b){var c=z(a,null),d=E._getNumberStyle(a,"height",c);if(b){var e=E._getNumberStyle(a,"marginTop",c),f=E._getNumberStyle(a,"marginBottom",c);d+=e+f}return d},E._skipTransition=function(a,b,c){var d=a.style[n];a.style[n]="0ms",b.call(c);var e=a.offsetWidth;e=null,a.style[n]=d},E.prototype._init=function(){this.$items=this._getItems(),this.sizer=this._getElementOption(this.sizer),this.sizer&&(this.useSizer=!0),this.$el.addClass(E.ClassName.BASE),this._initItems(),D.on("resize."+u+"."+this.unique,this._getResizeFunction());var a=this.$el.css(["position","overflow"]),b=E._getOuterWidth(this.element);this._validateStyles(a),this._setColumns(b),this.shuffle(this.group,this.initialSort),this.supported&&g(function(){this._setTransitions(),this.element.style[l]="height "+this.speed+"ms "+this.easing},this)},E.prototype._getResizeFunction=function(){var b=a.proxy(this._onResize,this);return this.throttle?this.throttle(b,this.throttleTime):b},E.prototype._getElementOption=function(a){return"string"==typeof a?this.$el.find(a)[0]||null:a&&a.nodeType&&1===a.nodeType?a:a&&a.jquery?a[0]:null},E.prototype._validateStyles=function(a){"static"===a.position&&(this.element.style.position="relative"),"hidden"!==a.overflow&&(this.element.style.overflow="hidden")},E.prototype._filter=function(a,b){a=a||this.lastFilter,b=b||this.$items;var c=this._getFilteredSets(a,b);return this._toggleFilterClasses(c.filtered,c.concealed),this.lastFilter=a,"string"==typeof a&&(this.group=a),c.filtered},E.prototype._getFilteredSets=function(b,c){var d=a(),e=a();return b===v?d=c:f(c,function(c){var f=a(c);this._doesPassFilter(b,f)?d=d.add(f):e=e.add(f)},this),{filtered:d,concealed:e}},E.prototype._doesPassFilter=function(b,c){if(a.isFunction(b))return b.call(c[0],c,this);var d=c.data(w),e=this.delimeter&&!a.isArray(d)?d.split(this.delimeter):d;return a.inArray(b,e)>-1},E.prototype._toggleFilterClasses=function(a,b){a.removeClass(E.ClassName.CONCEALED).addClass(E.ClassName.FILTERED),b.removeClass(E.ClassName.FILTERED).addClass(E.ClassName.CONCEALED)},E.prototype._initItems=function(a){a=a||this.$items,a.addClass([E.ClassName.SHUFFLE_ITEM,E.ClassName.FILTERED].join(" ")),a.css(this.itemCss).data("point",new A).data("scale",x)},E.prototype._updateItemCount=function(){this.visibleItems=this._getFilteredItems().length},E.prototype._setTransition=function(a){a.style[l]=q+" "+this.speed+"ms "+this.easing+", opacity "+this.speed+"ms "+this.easing},E.prototype._setTransitions=function(a){a=a||this.$items,f(a,function(a){this._setTransition(a)},this)},E.prototype._setSequentialDelay=function(a){this.supported&&f(a,function(a,b){a.style[m]="0ms,"+(b+1)*this.sequentialFadeDelay+"ms"},this)},E.prototype._getItems=function(){return this.$el.children(this.itemSelector)},E.prototype._getFilteredItems=function(){return this.$items.filter("."+E.ClassName.FILTERED)},E.prototype._getConcealedItems=function(){return this.$items.filter("."+E.ClassName.CONCEALED)},E.prototype._getColumnSize=function(b,c){var d;return d=a.isFunction(this.columnWidth)?this.columnWidth(b):this.useSizer?E._getOuterWidth(this.sizer):this.columnWidth?this.columnWidth:this.$items.length>0?E._getOuterWidth(this.$items[0],!0):b,0===d&&(d=b),d+c},E.prototype._getGutterSize=function(b){var c;return c=a.isFunction(this.gutterWidth)?this.gutterWidth(b):this.useSizer?E._getNumberStyle(this.sizer,"marginLeft"):this.gutterWidth},E.prototype._setColumns=function(a){var b=a||E._getOuterWidth(this.element),c=this._getGutterSize(b),d=this._getColumnSize(b,c),e=(b+c)/d;Math.abs(Math.round(e)-e)h;h++)this.positions[d+h]=f;return e},E.prototype._getColumnSpan=function(a,b,c){var d=a/b;return Math.abs(Math.round(d)-d)e;e++)d[e]=h(this.positions.slice(e,e+a));return d},E.prototype._getShortColumn=function(a,b){for(var c=i(a),d=0,e=a.length;e>d;d++)if(a[d]>=c-b&&a[d]<=c+b)return d;return 0},E.prototype._shrink=function(b){var c=b||this._getConcealedItems();f(c,function(b){var c=a(b),d=c.data();d.scale!==y&&(d.scale=y,this.styleQueue.push({$item:c,point:d.point,scale:y,opacity:0,callback:function(){c.css("visibility","hidden")}}))},this)},E.prototype._onResize=function(){if(this.enabled&&!this.destroyed){var a=E._getOuterWidth(this.element);a!==this.containerWidth&&this.update()}},E.prototype._getStylesForTransition=function(a){var b={opacity:a.opacity};return this.supported?b[p]=E._getItemTransformString(a.point,a.scale):(b.left=a.point.x,b.top=a.point.y),b},E.prototype._transition=function(b){var c=this._getStylesForTransition(b);this._startItemAnimation(b.$item,c,b.callfront||a.noop,b.callback||a.noop)},E.prototype._startItemAnimation=function(b,c,d,e){function f(b){b.target===b.currentTarget&&(a(b.target).off(o,f),g._removeTransitionReference(h),e())}var g=this,h={$element:b,handler:f};if(d(),!this.initialized)return b.css(c),void e();if(this.supported)b.css(c),b.on(o,f),this._transitions.push(h);else{var i=b.stop(!0).animate(c,this.speed,"swing",e);this._animations.push(i.promise())}},E.prototype._processStyleQueue=function(b){this.isTransitioning&&this._cancelMovement();var c=a();f(this.styleQueue,function(a){a.skipTransition?this._styleImmediately(a):(c=c.add(a.$item),this._transition(a))},this),c.length>0&&this.initialized&&this.speed>0?(this.isTransitioning=!0,this.supported?this._whenCollectionDone(c,o,this._movementFinished):this._whenAnimationsDone(this._movementFinished)):b||g(this._layoutEnd,this),this.styleQueue.length=0},E.prototype._cancelMovement=function(){this.supported?f(this._transitions,function(a){a.$element.off(o,a.handler)}):(this._isMovementCanceled=!0,this.$items.stop(!0),this._isMovementCanceled=!1),this._transitions.length=0,this.isTransitioning=!1},E.prototype._removeTransitionReference=function(b){var c=a.inArray(b,this._transitions);c>-1&&this._transitions.splice(c,1)},E.prototype._styleImmediately=function(a){E._skipTransition(a.$item[0],function(){a.$item.css(this._getStylesForTransition(a))},this)},E.prototype._movementFinished=function(){this.isTransitioning=!1,this._layoutEnd()},E.prototype._layoutEnd=function(){this._fire(E.EventType.LAYOUT)},E.prototype._addItems=function(a,b,c){this._initItems(a),this._setTransitions(a),this.$items=this._getItems(),this._shrink(a),f(this.styleQueue,function(a){a.skipTransition=!0}),this._processStyleQueue(!0),b?this._addItemsToEnd(a,c):this.shuffle(this.lastFilter)},E.prototype._addItemsToEnd=function(a,b){var c=this._filter(null,a),d=c.get();this._updateItemCount(),this._layout(d,!0),b&&this.supported&&this._setSequentialDelay(d),this._revealAppended(d)},E.prototype._revealAppended=function(b){g(function(){f(b,function(b){var c=a(b);this._transition({$item:c,opacity:1,point:c.data("point"),scale:x})},this),this._whenCollectionDone(a(b),o,function(){a(b).css(m,"0ms"),this._movementFinished()})},this,this.revealAppendedDelay)},E.prototype._whenCollectionDone=function(b,c,d){function e(b){b.target===b.currentTarget&&(a(b.target).off(c,e),f++,f===g&&(h._removeTransitionReference(i),d.call(h)))}var f=0,g=b.length,h=this,i={$element:b,handler:e};b.on(c,e),this._transitions.push(i)},E.prototype._whenAnimationsDone=function(b){a.when.apply(null,this._animations).always(a.proxy(function(){this._animations.length=0,this._isMovementCanceled||b.call(this)},this))},E.prototype.shuffle=function(a,b){this.enabled&&(a||(a=v),this._filter(a),this._updateItemCount(),this._shrink(),this.sort(b))},E.prototype.sort=function(a){if(this.enabled){this._resetCols();var b=a||this.lastSort,c=this._getFilteredItems().sorted(b);this._layout(c),this.lastSort=b}},E.prototype.update=function(a){this.enabled&&(a||this._setColumns(),this.sort())},E.prototype.layout=function(){this.update(!0)},E.prototype.appended=function(a,b,c){this._addItems(a,b===!0,c!==!1)},E.prototype.disable=function(){this.enabled=!1},E.prototype.enable=function(a){this.enabled=!0,a!==!1&&this.update()},E.prototype.remove=function(b){function c(){b.remove(),this.$items=this._getItems(),this._updateItemCount(),this._fire(E.EventType.REMOVED,[b,this]),b=null}b.length&&b.jquery&&(this._toggleFilterClasses(a(),b),this._shrink(b),this.sort(),this.$el.one(E.EventType.LAYOUT+"."+u,a.proxy(c,this)))},E.prototype.destroy=function(){D.off("."+this.unique),this.$el.removeClass(u).removeAttr("style").removeData(u),this.$items.removeAttr("style").removeData("point").removeData("scale").removeClass([E.ClassName.CONCEALED,E.ClassName.FILTERED,E.ClassName.SHUFFLE_ITEM].join(" ")),this.$items=null,this.$el=null,this.sizer=null,this.element=null,this._transitions=null,this.destroyed=!0},a.fn.shuffle=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),e=d.data(u);e?"string"==typeof b&&e[b]&&e[b].apply(e,c):(e=new E(this,b),d.data(u,e))})},a.fn.sorted=function(b){var d=a.extend({},a.fn.sorted.defaults,b),e=this.get(),f=!1;return e.length?d.randomize?k(e):(a.isFunction(d.by)&&e.sort(function(b,e){if(f)return 0;var g=d.by(a(b)),h=d.by(a(e));return g===c&&h===c?(f=!0,0):h>g||"sortFirst"===g||"sortLast"===h?-1:g>h||"sortLast"===g||"sortFirst"===h?1:0}),f?this.get():(d.reverse&&e.reverse(),e)):[]},a.fn.sorted.defaults={reverse:!1,by:null,randomize:!1},E}); -------------------------------------------------------------------------------- /source/js/jquery.textillate.js: -------------------------------------------------------------------------------- 1 | /* 2 | * textillate.js 3 | * http://jschr.github.com/textillate 4 | * MIT licensed 5 | * 6 | * Copyright (C) 2012-2013 Jordan Schroter 7 | */ 8 | 9 | (function ($) { 10 | "use strict"; 11 | 12 | function isInEffect (effect) { 13 | return /In/.test(effect) || $.inArray(effect, $.fn.textillate.defaults.inEffects) >= 0; 14 | }; 15 | 16 | function isOutEffect (effect) { 17 | return /Out/.test(effect) || $.inArray(effect, $.fn.textillate.defaults.outEffects) >= 0; 18 | }; 19 | 20 | // custom get data api method 21 | function getData (node) { 22 | var attrs = node.attributes || [] 23 | , data = {}; 24 | 25 | if (!attrs.length) return data; 26 | 27 | $.each(attrs, function (i, attr) { 28 | if (/^data-in-*/.test(attr.nodeName)) { 29 | data.in = data.in || {}; 30 | data.in[attr.nodeName.replace(/data-in-/, '')] = attr.nodeValue; 31 | } else if (/^data-out-*/.test(attr.nodeName)) { 32 | data.out = data.out || {}; 33 | data.out[attr.nodeName.replace(/data-out-/, '')] = attr.nodeValue; 34 | } else if (/^data-*/.test(attr.nodeName)) { 35 | data[attr.nodeName] = attr.nodeValue; 36 | } 37 | }) 38 | 39 | return data; 40 | } 41 | 42 | function shuffle (o) { 43 | for (var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 44 | return o; 45 | } 46 | 47 | function animate ($c, effect, cb) { 48 | $c.addClass('animated ' + effect) 49 | .css('visibility', 'visible') 50 | .show(); 51 | 52 | $c.one('animationend webkitAnimationEnd oAnimationEnd', function () { 53 | $c.removeClass('animated ' + effect); 54 | cb && cb(); 55 | }); 56 | } 57 | 58 | function animateChars ($chars, options, cb) { 59 | var that = this 60 | , count = $chars.length; 61 | 62 | if (!count) { 63 | cb && cb(); 64 | return; 65 | } 66 | 67 | if (options.shuffle) $chars = shuffle($chars); 68 | if (options.reverse) $chars = $chars.toArray().reverse(); 69 | 70 | $.each($chars, function (i, c) { 71 | var $char = $(c); 72 | 73 | function complete () { 74 | if (isInEffect(options.effect)) { 75 | $char.css('visibility', 'visible'); 76 | } else if (isOutEffect(options.effect)) { 77 | $char.css('visibility', 'hidden'); 78 | } 79 | count -= 1; 80 | if (!count && cb) cb(); 81 | } 82 | 83 | var delay = options.sync ? options.delay : options.delay * i * options.delayScale; 84 | 85 | $char.text() ? 86 | setTimeout(function () { animate($char, options.effect, complete) }, delay) : 87 | complete(); 88 | }); 89 | }; 90 | 91 | var Textillate = function (element, options) { 92 | var base = this 93 | , $element = $(element); 94 | 95 | base.init = function () { 96 | base.$texts = $element.find(options.selector); 97 | 98 | if (!base.$texts.length) { 99 | base.$texts = $('
  • ' + $element.html() + '
'); 100 | $element.html(base.$texts); 101 | } 102 | 103 | base.$texts.hide(); 104 | 105 | base.$current = $('') 106 | .text(base.$texts.find(':first-child').html()) 107 | .prependTo($element); 108 | 109 | if (isInEffect(options.in.effect)) { 110 | base.$current.css('visibility', 'hidden'); 111 | } else if (isOutEffect(options.out.effect)) { 112 | base.$current.css('visibility', 'visible'); 113 | } 114 | 115 | base.setOptions(options); 116 | 117 | base.timeoutRun = null; 118 | 119 | setTimeout(function () { 120 | base.options.autoStart && base.start(); 121 | }, base.options.initialDelay) 122 | }; 123 | 124 | base.setOptions = function (options) { 125 | base.options = options; 126 | }; 127 | 128 | base.triggerEvent = function (name) { 129 | var e = $.Event(name + '.tlt'); 130 | $element.trigger(e, base); 131 | return e; 132 | }; 133 | 134 | base.in = function (index, cb) { 135 | index = index || 0; 136 | 137 | var $elem = base.$texts.find(':nth-child(' + (index + 1) + ')') 138 | , options = $.extend({}, base.options, getData($elem)) 139 | , $chars; 140 | 141 | $elem.addClass('current'); 142 | 143 | base.triggerEvent('inAnimationBegin'); 144 | 145 | base.$current 146 | .text($elem.html()) 147 | .lettering('words'); 148 | 149 | base.$current.find('[class^="word"]') 150 | .css({ 151 | 'display': 'inline-block', 152 | // fix for poor ios performance 153 | '-webkit-transform': 'translate3d(0,0,0)', 154 | '-moz-transform': 'translate3d(0,0,0)', 155 | '-o-transform': 'translate3d(0,0,0)', 156 | 'transform': 'translate3d(0,0,0)' 157 | }) 158 | .each(function () { $(this).lettering() }); 159 | 160 | $chars = base.$current 161 | .find('[class^="char"]') 162 | .css('display', 'inline-block'); 163 | 164 | if (isInEffect(options.in.effect)) { 165 | $chars.css('visibility', 'hidden'); 166 | } else if (isOutEffect(options.in.effect)) { 167 | $chars.css('visibility', 'visible'); 168 | } 169 | 170 | base.currentIndex = index; 171 | 172 | animateChars($chars, options.in, function () { 173 | base.triggerEvent('inAnimationEnd'); 174 | if (options.in.callback) options.in.callback(); 175 | if (cb) cb(base); 176 | }); 177 | }; 178 | 179 | base.out = function (cb) { 180 | var $elem = base.$texts.find(':nth-child(' + (base.currentIndex + 1) + ')') 181 | , $chars = base.$current.find('[class^="char"]') 182 | , options = $.extend({}, base.options, getData($elem)); 183 | 184 | base.triggerEvent('outAnimationBegin'); 185 | 186 | animateChars($chars, options.out, function () { 187 | $elem.removeClass('current'); 188 | base.triggerEvent('outAnimationEnd'); 189 | if (options.out.callback) options.out.callback(); 190 | if (cb) cb(base); 191 | }); 192 | }; 193 | 194 | base.start = function (index) { 195 | base.triggerEvent('start'); 196 | 197 | (function run (index) { 198 | base.in(index, function () { 199 | var length = base.$texts.children().length; 200 | 201 | index += 1; 202 | 203 | if (!base.options.loop && index >= length) { 204 | if (base.options.callback) base.options.callback(); 205 | base.triggerEvent('end'); 206 | } else { 207 | index = index % length; 208 | 209 | base.timeoutRun = setTimeout(function () { 210 | base.out(function () { 211 | run(index) 212 | }); 213 | }, base.options.minDisplayTime); 214 | } 215 | }); 216 | }(index || 0)); 217 | }; 218 | 219 | base.stop = function () { 220 | if (base.timeoutRun) { 221 | clearInterval(base.timeoutRun); 222 | base.timeoutRun = null; 223 | } 224 | }; 225 | 226 | base.init(); 227 | } 228 | 229 | $.fn.textillate = function (settings, args) { 230 | return this.each(function () { 231 | var $this = $(this) 232 | , data = $this.data('textillate') 233 | , options = $.extend(true, {}, $.fn.textillate.defaults, getData(this), typeof settings == 'object' && settings); 234 | 235 | if (!data) { 236 | $this.data('textillate', (data = new Textillate(this, options))); 237 | } else if (typeof settings == 'string') { 238 | data[settings].apply(data, [].concat(args)); 239 | } else { 240 | data.setOptions.call(data, options); 241 | } 242 | }) 243 | }; 244 | 245 | $.fn.textillate.defaults = { 246 | selector: '.texts', 247 | loop: false, 248 | minDisplayTime: 2000, 249 | initialDelay: 0, 250 | in: { 251 | effect: 'fadeInLeftBig', 252 | delayScale: 1.5, 253 | delay: 50, 254 | sync: false, 255 | reverse: false, 256 | shuffle: false, 257 | callback: function () {} 258 | }, 259 | out: { 260 | effect: 'hinge', 261 | delayScale: 1.5, 262 | delay: 50, 263 | sync: false, 264 | reverse: false, 265 | shuffle: false, 266 | callback: function () {} 267 | }, 268 | autoStart: true, 269 | inEffects: [], 270 | outEffects: [ 'hinge' ], 271 | callback: function () {} 272 | }; 273 | 274 | }(jQuery)); 275 | -------------------------------------------------------------------------------- /source/js/map.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 3 | function initMap() { 4 | 5 | var location = new google.maps.LatLng(25.758935, -80.203165); 6 | 7 | var mapCanvas = document.getElementById('map'); 8 | var mapOptions = { 9 | center: location, 10 | zoom: 16, 11 | panControl: false, 12 | scrollwheel: false, 13 | mapTypeId: google.maps.MapTypeId.ROADMAP 14 | } 15 | var map = new google.maps.Map(mapCanvas, mapOptions); 16 | 17 | var markerImage = 'images/marker.png'; 18 | 19 | var marker = new google.maps.Marker({ 20 | position: location, 21 | map: map, 22 | icon: markerImage 23 | }); 24 | 25 | var contentString = '
' + 26 | '

Info Window Content

' + 27 | '
' + 28 | '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

' + 29 | '
' + 30 | '
'; 31 | 32 | var infowindow = new google.maps.InfoWindow({ 33 | content: contentString, 34 | maxWidth: 400 35 | }); 36 | 37 | marker.addListener('click', function () { 38 | infowindow.open(map, marker); 39 | }); 40 | 41 | var styles = [{"featureType": "landscape", "stylers": [{"saturation": -100}, {"lightness": 65}, {"visibility": "on"}]}, {"featureType": "poi", "stylers": [{"saturation": -100}, {"lightness": 51}, {"visibility": "simplified"}]}, {"featureType": "road.highway", "stylers": [{"saturation": -100}, {"visibility": "simplified"}]}, {"featureType": "road.arterial", "stylers": [{"saturation": -100}, {"lightness": 30}, {"visibility": "on"}]}, {"featureType": "road.local", "stylers": [{"saturation": -100}, {"lightness": 40}, {"visibility": "on"}]}, {"featureType": "transit", "stylers": [{"saturation": -100}, {"visibility": "simplified"}]}, {"featureType": "administrative.province", "stylers": [{"visibility": "off"}]}, {"featureType": "water", "elementType": "labels", "stylers": [{"visibility": "on"}, {"lightness": -25}, {"saturation": -100}]}, {"featureType": "water", "elementType": "geometry", "stylers": [{"hue": "#ffff00"}, {"lightness": -25}, {"saturation": -97}]}]; 42 | 43 | map.set('styles', styles); 44 | 45 | 46 | } 47 | 48 | google.maps.event.addDomListener(window, 'load', initMap); 49 | }); -------------------------------------------------------------------------------- /source/js/preloader.js: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------- /source/js/project_index.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | $('.project-item.project').on('touch click', function () { 3 | window.location.href = $(this).data('url'); 4 | }); 5 | }); -------------------------------------------------------------------------------- /source/js/scrolling-nav.js: -------------------------------------------------------------------------------- 1 | //jQuery for page scrolling feature - requires jQuery Easing plugin 2 | $(function() { 3 | $('a.page-scroll').bind('click', function(event) { 4 | var $anchor = $(this); 5 | $('html, body').stop().animate({ 6 | scrollTop: $($anchor.attr('href')).offset().top 7 | }, 1500, 'easeInOutExpo'); 8 | event.preventDefault(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /source/js/stickUp.min.js: -------------------------------------------------------------------------------- 1 | jQuery(function($){$(document).ready(function(){var contentButton = [];var contentTop = [];var content = [];var lastScrollTop = 0;var scrollDir = '';var itemClass = '';var itemHover = '';var menuSize = null;var stickyHeight = 0;var stickyMarginB = 0;var currentMarginT = 0;var topMargin = 0;$(window).scroll(function(event){var st = $(this).scrollTop();if (st > lastScrollTop){scrollDir = 'down';} else {scrollDir = 'up';}lastScrollTop = st;});$.fn.stickUp = function( options ) {$(this).addClass('stuckMenu');var objn = 0;if(options != null) {for(var o in options.parts) {if (options.parts.hasOwnProperty(o)){content[objn] = options.parts[objn];objn++;}}if(objn == 0) {console.log('error:needs arguments');}itemClass = options.itemClass;itemHover = options.itemHover;if(options.topMargin != null) {if(options.topMargin == 'auto') {topMargin = parseInt($('.stuckMenu').css('margin-top'));} else {if(isNaN(options.topMargin) && options.topMargin.search("px") > 0){topMargin = parseInt(options.topMargin.replace("px",""));} else if(!isNaN(parseInt(options.topMargin))) {topMargin = parseInt(options.topMargin);} else {console.log("incorrect argument, ignored.");topMargin = 0;} }} else {topMargin = 0;}menuSize = $('.'+itemClass).size();}stickyHeight = parseInt($(this).height());stickyMarginB = parseInt($(this).css('margin-bottom'));currentMarginT = parseInt($(this).next().closest('div').css('margin-top'));vartop = parseInt($(this).offset().top);};$(document).on('scroll', function() {varscroll = parseInt($(document).scrollTop());if(menuSize != null){for(var i=0;i < menuSize;i++){contentTop[i] = $('#'+content[i]+'').offset().top;function bottomView(i) {contentView = $('#'+content[i]+'').height()*.4;testView = contentTop[i] - contentView;if(varscroll > testView){$('.'+itemClass).removeClass(itemHover);$('.'+itemClass+':eq('+i+')').addClass(itemHover);} else if(varscroll < 50){$('.'+itemClass).removeClass(itemHover);$('.'+itemClass+':eq(0)').addClass(itemHover);}}if(scrollDir == 'down' && varscroll > contentTop[i]-50 && varscroll < contentTop[i]+50) {$('.'+itemClass).removeClass(itemHover);$('.'+itemClass+':eq('+i+')').addClass(itemHover);}if(scrollDir == 'up') {bottomView(i);}}}if(vartop < varscroll + topMargin){$('.stuckMenu').addClass('isStuck');$('.stuckMenu').next().closest('div').css({'margin-top': stickyHeight + stickyMarginB + currentMarginT + 'px'}, 10);$('.stuckMenu').css("position","fixed");$('.isStuck').css({top: '0px'}, 10, function(){});};if(varscroll + topMargin < vartop){$('.stuckMenu').removeClass('isStuck');$('.stuckMenu').next().closest('div').css({'margin-top': currentMarginT + 'px'}, 10);$('.stuckMenu').css("position","relative");};});});}); -------------------------------------------------------------------------------- /source/js/test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/O-Marshal/go-compiler/e92ca50b99308573a73fcb9f9e0bd66cd9bbefb5/source/js/test.js -------------------------------------------------------------------------------- /source/js/validator.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Validator v0.10.2 for Bootstrap 3, by @1000hz 3 | * Copyright 2016 Cina Saffary 4 | * Licensed under http://opensource.org/licenses/MIT 5 | * 6 | * https://github.com/1000hz/bootstrap-validator 7 | */ 8 | 9 | +function(a){"use strict";function b(b){return b.is('[type="checkbox"]')?b.prop("checked"):b.is('[type="radio"]')?!!a('[name="'+b.attr("name")+'"]:checked').length:a.trim(b.val())}function c(b){return this.each(function(){var c=a(this),e=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b),f=c.data("bs.validator");(f||"destroy"!=b)&&(f||c.data("bs.validator",f=new d(this,e)),"string"==typeof b&&f[b]())})}var d=function(c,e){this.options=e,this.$element=a(c),this.$inputs=this.$element.find(d.INPUT_SELECTOR),this.$btn=a('button[type="submit"], input[type="submit"]').filter('[form="'+this.$element.attr("id")+'"]').add(this.$element.find('input[type="submit"], button[type="submit"]')),e.errors=a.extend({},d.DEFAULTS.errors,e.errors);for(var f in e.custom)if(!e.errors[f])throw new Error("Missing default error message for custom validator: "+f);a.extend(d.VALIDATORS,e.custom),this.$element.attr("novalidate",!0),this.toggleSubmit(),this.$element.on("input.bs.validator change.bs.validator focusout.bs.validator",d.INPUT_SELECTOR,a.proxy(this.onInput,this)),this.$element.on("submit.bs.validator",a.proxy(this.onSubmit,this)),this.$element.find("[data-match]").each(function(){var c=a(this),d=c.data("match");a(d).on("input.bs.validator",function(){b(c)&&c.trigger("input.bs.validator")})})};d.INPUT_SELECTOR=':input:not([type="submit"], button):enabled:visible',d.FOCUS_OFFSET=20,d.DEFAULTS={delay:500,html:!1,disable:!0,focus:!0,custom:{},errors:{match:"Does not match",minlength:"Not long enough"},feedback:{success:"glyphicon-ok",error:"glyphicon-remove"}},d.VALIDATORS={"native":function(a){var b=a[0];return b.checkValidity?b.checkValidity():!0},match:function(b){var c=b.data("match");return!b.val()||b.val()===a(c).val()},minlength:function(a){var b=a.data("minlength");return!a.val()||a.val().length>=b}},d.prototype.onInput=function(b){var c=this,d=a(b.target),e="focusout"!==b.type;this.validateInput(d,e).done(function(){c.toggleSubmit()})},d.prototype.validateInput=function(c,d){var e=b(c),f=c.data("bs.validator.previous"),g=c.data("bs.validator.errors");if(f===e)return a.Deferred().resolve();c.data("bs.validator.previous",e),c.is('[type="radio"]')&&(c=this.$element.find('input[name="'+c.attr("name")+'"]'));var h=a.Event("validate.bs.validator",{relatedTarget:c[0]});if(this.$element.trigger(h),!h.isDefaultPrevented()){var i=this;return this.runValidators(c).done(function(b){c.data("bs.validator.errors",b),b.length?d?i.defer(c,i.showErrors):i.showErrors(c):i.clearErrors(c),g&&b.toString()===g.toString()||(h=b.length?a.Event("invalid.bs.validator",{relatedTarget:c[0],detail:b}):a.Event("valid.bs.validator",{relatedTarget:c[0],detail:g}),i.$element.trigger(h)),i.toggleSubmit(),i.$element.trigger(a.Event("validated.bs.validator",{relatedTarget:c[0]}))})}},d.prototype.runValidators=function(c){function e(a){return c.data(a+"-error")||c.data("error")||"native"==a&&c[0].validationMessage||h.errors[a]}var f=[],g=a.Deferred(),h=this.options;return c.data("bs.validator.deferred")&&c.data("bs.validator.deferred").reject(),c.data("bs.validator.deferred",g),a.each(d.VALIDATORS,a.proxy(function(a,d){if((b(c)||c.attr("required"))&&(c.data(a)||"native"==a)&&!d.call(this,c)){var g=e(a);!~f.indexOf(g)&&f.push(g)}},this)),!f.length&&b(c)&&c.data("remote")?this.defer(c,function(){var d={};d[c.attr("name")]=b(c),a.get(c.data("remote"),d).fail(function(a,b,c){f.push(e("remote")||c)}).always(function(){g.resolve(f)})}):g.resolve(f),g.promise()},d.prototype.validate=function(){var b=this;return a.when(this.$inputs.map(function(){return b.validateInput(a(this),!1)})).then(function(){b.toggleSubmit(),b.focusError()}),this},d.prototype.focusError=function(){if(this.options.focus){var b=a(".has-error:first :input");0!==b.length&&(a(document.body).animate({scrollTop:b.offset().top-d.FOCUS_OFFSET},250),b.focus())}},d.prototype.showErrors=function(b){var c=this.options.html?"html":"text",d=b.data("bs.validator.errors"),e=b.closest(".form-group"),f=e.find(".help-block.with-errors"),g=e.find(".form-control-feedback");d.length&&(d=a("
    ").addClass("list-unstyled").append(a.map(d,function(b){return a("
  • ")[c](b)})),void 0===f.data("bs.validator.originalContent")&&f.data("bs.validator.originalContent",f.html()),f.empty().append(d),e.addClass("has-error has-danger"),e.hasClass("has-feedback")&&g.removeClass(this.options.feedback.success)&&g.addClass(this.options.feedback.error)&&e.removeClass("has-success"))},d.prototype.clearErrors=function(a){var c=a.closest(".form-group"),d=c.find(".help-block.with-errors"),e=c.find(".form-control-feedback");d.html(d.data("bs.validator.originalContent")),c.removeClass("has-error has-danger"),c.hasClass("has-feedback")&&e.removeClass(this.options.feedback.error)&&b(a)&&e.addClass(this.options.feedback.success)&&c.addClass("has-success")},d.prototype.hasErrors=function(){function b(){return!!(a(this).data("bs.validator.errors")||[]).length}return!!this.$inputs.filter(b).length},d.prototype.isIncomplete=function(){function c(){return!b(a(this))}return!!this.$inputs.filter("[required]").filter(c).length},d.prototype.onSubmit=function(a){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()},d.prototype.toggleSubmit=function(){this.options.disable&&this.$btn.toggleClass("disabled",this.isIncomplete()||this.hasErrors())},d.prototype.defer=function(b,c){return c=a.proxy(c,this,b),this.options.delay?(window.clearTimeout(b.data("bs.validator.timeout")),void b.data("bs.validator.timeout",window.setTimeout(c,this.options.delay))):c()},d.prototype.destroy=function(){return this.$element.removeAttr("novalidate").removeData("bs.validator").off(".bs.validator").find(".form-control-feedback").removeClass([this.options.feedback.error,this.options.feedback.success].join(" ")),this.$inputs.off(".bs.validator").removeData(["bs.validator.errors","bs.validator.deferred","bs.validator.previous"]).each(function(){var b=a(this),c=b.data("bs.validator.timeout");window.clearTimeout(c)&&b.removeData("bs.validator.timeout")}),this.$element.find(".help-block.with-errors").each(function(){var b=a(this),c=b.data("bs.validator.originalContent");b.removeData("bs.validator.originalContent").html(c)}),this.$element.find('input[type="submit"], button[type="submit"]').removeClass("disabled"),this.$element.find(".has-error, .has-danger").removeClass("has-error has-danger"),this};var e=a.fn.validator;a.fn.validator=c,a.fn.validator.Constructor=d,a.fn.validator.noConflict=function(){return a.fn.validator=e,this},a(window).on("load",function(){a('form[data-toggle="validator"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery); --------------------------------------------------------------------------------