Browse Source

added new website

master
Dan 5 months ago
parent
commit
9f0317d597
Signed by: dan GPG Key ID: 7DFC51AC7A70FBAB
94 changed files with 30490 additions and 0 deletions
  1. +2
    -0
      .gitignore
  2. +5
    -0
      assets/css/fontawesome-all.min.css
  3. +8677
    -0
      assets/css/main.css
  4. +387
    -0
      assets/css/noscript.css
  5. +2
    -0
      assets/js/breakpoints.min.js
  6. +2
    -0
      assets/js/browser.min.js
  7. +563
    -0
      assets/js/demo.js
  8. +2
    -0
      assets/js/jquery.min.js
  9. +2
    -0
      assets/js/jquery.scrollex.min.js
  10. +2
    -0
      assets/js/jquery.scrolly.min.js
  11. +341
    -0
      assets/js/main.js
  12. +587
    -0
      assets/js/util.js
  13. +47
    -0
      assets/sass/base/_page.scss
  14. +76
    -0
      assets/sass/base/_reset.scss
  15. +231
    -0
      assets/sass/base/_typography.scss
  16. +101
    -0
      assets/sass/components/_actions.scss
  17. +990
    -0
      assets/sass/components/_banner.scss
  18. +34
    -0
      assets/sass/components/_box.scss
  19. +112
    -0
      assets/sass/components/_button.scss
  20. +286
    -0
      assets/sass/components/_form.scss
  21. +616
    -0
      assets/sass/components/_gallery.scss
  22. +96
    -0
      assets/sass/components/_icon.scss
  23. +22
    -0
      assets/sass/components/_icons.scss
  24. +61
    -0
      assets/sass/components/_image.scss
  25. +66
    -0
      assets/sass/components/_index.scss
  26. +338
    -0
      assets/sass/components/_items.scss
  27. +86
    -0
      assets/sass/components/_list.scss
  28. +35
    -0
      assets/sass/components/_row.scss
  29. +49
    -0
      assets/sass/components/_section.scss
  30. +1012
    -0
      assets/sass/components/_spotlight.scss
  31. +137
    -0
      assets/sass/components/_table.scss
  32. +120
    -0
      assets/sass/components/_wrapper.scss
  33. +49
    -0
      assets/sass/layout/_wrapper.scss
  34. +223
    -0
      assets/sass/libs/_breakpoints.scss
  35. +90
    -0
      assets/sass/libs/_functions.scss
  36. +149
    -0
      assets/sass/libs/_html-grid.scss
  37. +78
    -0
      assets/sass/libs/_mixins.scss
  38. +80
    -0
      assets/sass/libs/_vars.scss
  39. +376
    -0
      assets/sass/libs/_vendor.scss
  40. +185
    -0
      assets/sass/main.scss
  41. +207
    -0
      assets/sass/noscript.scss
  42. BIN
      assets/webfonts/fa-brands-400.eot
  43. +3442
    -0
      assets/webfonts/fa-brands-400.svg
  44. BIN
      assets/webfonts/fa-brands-400.ttf
  45. BIN
      assets/webfonts/fa-brands-400.woff
  46. BIN
      assets/webfonts/fa-brands-400.woff2
  47. BIN
      assets/webfonts/fa-regular-400.eot
  48. +803
    -0
      assets/webfonts/fa-regular-400.svg
  49. BIN
      assets/webfonts/fa-regular-400.ttf
  50. BIN
      assets/webfonts/fa-regular-400.woff
  51. BIN
      assets/webfonts/fa-regular-400.woff2
  52. BIN
      assets/webfonts/fa-solid-900.eot
  53. +4649
    -0
      assets/webfonts/fa-solid-900.svg
  54. BIN
      assets/webfonts/fa-solid-900.ttf
  55. BIN
      assets/webfonts/fa-solid-900.woff
  56. BIN
      assets/webfonts/fa-solid-900.woff2
  57. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff
  58. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff2
  59. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff
  60. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff2
  61. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff
  62. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff2
  63. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff
  64. BIN
      assets/webfonts/sanspro/source-sans-pro-v14-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2
  65. +93
    -0
      categories/news/2021/news-template.html
  66. +74
    -0
      categories/news/overview.html
  67. +125
    -0
      categories/pwoss/2020/17-12.html
  68. +93
    -0
      categories/pwoss/2021/pwoss-template.html
  69. +88
    -0
      categories/pwoss/overview.html
  70. +124
    -0
      categories/tutorials/dnscrypt.html
  71. +70
    -0
      categories/tutorials/overview.html
  72. +93
    -0
      categories/tutorials/tutorials-template.html
  73. +101
    -0
      html-tags.html
  74. +830
    -0
      images/desktop.svg
  75. BIN
      images/licensebutton.png
  76. +381
    -0
      images/logo&pwoss.svg
  77. +448
    -0
      images/mobile.svg
  78. BIN
      images/news/openwrt/openwrt.png
  79. BIN
      images/pwoss+text.png
  80. +388
    -0
      images/pwoss+text.svg
  81. BIN
      images/pwoss.png
  82. +364
    -0
      images/pwoss.svg
  83. +677
    -0
      images/server.svg
  84. +102
    -0
      images/services/Gitea-Logo.wine.svg
  85. +26
    -0
      images/services/Matrix_logo.svg
  86. BIN
      images/services/dnscrypt.png
  87. +80
    -0
      images/services/dnscrypt.svg
  88. BIN
      images/services/gitea.png
  89. BIN
      images/services/matrix.png
  90. BIN
      images/services/rect855.png
  91. BIN
      images/services/searx.png
  92. +379
    -0
      index.html
  93. +266
    -0
      privacy-policy.html
  94. +270
    -0
      terms-of-use.html

+ 2
- 0
.gitignore View File

@ -0,0 +1,2 @@
.well-known/
*.htpass

+ 5
- 0
assets/css/fontawesome-all.min.css
File diff suppressed because it is too large
View File


+ 8677
- 0
assets/css/main.css
File diff suppressed because it is too large
View File


+ 387
- 0
assets/css/noscript.css View File

@ -0,0 +1,387 @@
/*
Story by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
/* Banner (transitions) */
.banner.onload-content-fade-up .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-content-fade-up .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onload-content-fade-down .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-content-fade-down .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onload-content-fade-left .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-content-fade-left .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onload-content-fade-right .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-content-fade-right .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onload-content-fade-in .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-content-fade-in .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onload-image-fade-up .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onload-image-fade-up .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-image-fade-up .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
body.is-preload .banner.onload-image-fade-up .image img {
opacity: 1;
}
.banner.onload-image-fade-down .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onload-image-fade-down .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-image-fade-down .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
body.is-preload .banner.onload-image-fade-down .image img {
opacity: 1;
}
.banner.onload-image-fade-left .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onload-image-fade-left .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-image-fade-left .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
body.is-preload .banner.onload-image-fade-left .image img {
opacity: 1;
}
.banner.onload-image-fade-right .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onload-image-fade-right .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-image-fade-right .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
body.is-preload .banner.onload-image-fade-right .image img {
opacity: 1;
}
.banner.onload-image-fade-in .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
body.is-preload .banner.onload-image-fade-in .image img {
opacity: 1;
}
.banner.onscroll-content-fade-up .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-content-fade-up.is-inactive .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-content-fade-down .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-content-fade-down.is-inactive .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-content-fade-left .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-content-fade-left.is-inactive .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-content-fade-right .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-content-fade-right.is-inactive .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-content-fade-in .content {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-content-fade-in.is-inactive .content {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-image-fade-up .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-up .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-up.is-inactive .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-image-fade-up.is-inactive .image img {
opacity: 1;
}
.banner.onscroll-image-fade-down .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-down .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-down.is-inactive .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-image-fade-down.is-inactive .image img {
opacity: 1;
}
.banner.onscroll-image-fade-left .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-left .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-left.is-inactive .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-image-fade-left.is-inactive .image img {
opacity: 1;
}
.banner.onscroll-image-fade-right .image {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-right .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-right.is-inactive .image {
-moz-transform: none;
-webkit-transform: none;
-ms-transform: none;
transform: none;
opacity: 1;
}
.banner.onscroll-image-fade-right.is-inactive .image img {
opacity: 1;
}
.banner.onscroll-image-fade-in .image img {
-moz-transition: none;
-webkit-transition: none;
-ms-transition: none;
transition: none;
}
.banner.onscroll-image-fade-in.is-inactive .image img {
opacity: 1;
}

+ 2
- 0
assets/js/breakpoints.min.js View File

@ -0,0 +1,2 @@
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});

+ 2
- 0
assets/js/browser.min.js View File

@ -0,0 +1,2 @@
/* browser.js v1.0 | @ajlkn | MIT licensed */
var browser=function(){"use strict";var e={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(n){e._canUse||(e._canUse=document.createElement("div"));var o=e._canUse.style,r=n.charAt(0).toUpperCase()+n.slice(1);return n in o||"Moz"+r in o||"Webkit"+r in o||"O"+r in o||"ms"+r in o},init:function(){var n,o,r,i,t=navigator.userAgent;for(n="other",o=0,r=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(RegExp.$1);break}for(e.name=n,e.version=o,n="other",o=0,r=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(r[i][2]?r[i][2](RegExp.$1):RegExp.$1);break}e.os=n,e.osVersion=o,e.touch="wp"==e.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});

+ 563
- 0
assets/js/demo.js View File

@ -0,0 +1,563 @@
/*
Story by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
Note: Only needed for demo purposes. Delete for production sites.
*/
(function($) {
var $window = $(window);
// Styles.
$(
'<style>' +
'.demo-animate-all:not(.gallery), .demo-animate-all:not(.gallery) *, .demo-animate-all:not(.gallery) *:before, .demo-animate-all:not(.gallery) *:after { transition: all 0.5s ease-in-out; }' +
'.demo-controls .property .classes { display: none; }' +
'.demo-controls .property[data-requires] { display: none; }' +
'.demo-controls .property[data-requires].active { display: inline; }' +
'.demo-controls .property .tooltip { position: relative; }' +
'.demo-controls .property .tooltip:before { content: \'Click to change!\'; font-size: 0.7rem; position: absolute; bottom: 100%; left: 0; background: #47D3E5; color: #ffffff; line-height: 1; white-space: nowrap; font-weight: bold; border-radius: 0.125rem; padding: 0.325rem 0.425rem; animation: demo-controls-tooltip 1.5s forwards; animation-delay: 1s; opacity: 0; }' +
'.demo-controls .property .tooltip:after { content: \'\'; position: absolute; bottom: calc(100% - 0.25rem); left: 0.5rem; border-left: solid 0.5rem transparent; border-right: solid 0.5rem transparent; border-top: solid 0.5rem #47D3E5; width: 0.5rem; height: 0.5rem; animation: demo-controls-tooltip 1.5s forwards; animation-delay: 1s; opacity: 0; }' +
'@keyframes demo-controls-tooltip {' +
'0% { opacity: 0; transform: translateY(0); }' +
'10% { opacity: 1; transform: translateY(0.125rem); }' +
'20% { opacity: 1; transform: translateY(-0.125rem); }' +
'30% { opacity: 1; transform: translateY(0.125rem); }' +
'40% { opacity: 1; transform: translateY(-0.125rem); }' +
'50% { opacity: 1; transform: translateY(0.125rem); }' +
'60% { opacity: 1; transform: translateY(0); }' +
'90% { opacity: 1; }' +
'100% { opacity: 0; }' +
'}' +
'</style>'
).appendTo($('head'));
// Functions.
$.fn.demo_controls = function(styles, userOptions) {
var $this = $(this),
$styleProperty, $stylePropertyClasses,
$controls, $x, $y, $z,
options,
current, i, j, k, s, n, count;
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).demo_controls(styles, userOptions);
return $this;
}
// Options.
options = $.extend({
target: null,
palette: true
}, userOptions);
// Controls.
if (styles) {
$controls = $(
'<span class="demo-controls">' +
'<span class="property" data-name="style">' +
'<a href="#" class="title tooltip">style</a>' +
'<span class="classes"></span>' + (options.palette ? ', ' : ' ') +
'</span>' +
(options.palette ?
'<span class="property active" data-name="scheme">' +
'<a href="#" class="title">scheme</a>' +
'<span class="classes">' +
'<span data-class="-" class="active">default</span>' +
'<span data-class="invert">invert</span>' +
'</span>, ' +
'</span>' +
'<span class="property active" data-name="color">' +
'<a href="#" class="title">color</a>' +
'<span class="classes">' +
'<span data-class="-" class="active">default</span>' +
'<span data-class="color1">color1</span>' +
'<span data-class="color2">color2</span>' +
'<span data-class="color3">color3</span>' +
'<span data-class="color4">color4</span>' +
'<span data-class="color5">color5</span>' +
'<span data-class="color6">color6</span>' +
'<span data-class="color7">color7</span>' +
'</span>, ' +
'</span>'
: '') +
'</span>'
);
}
else {
$controls = $(
'<span class="demo-controls">' +
(options.palette ?
'<span class="property active" data-name="scheme">' +
'<a href="#" class="title">scheme</a>' +
'<span class="classes">' +
'<span data-class="-" class="active">default</span>' +
'<span data-class="invert">invert</span>' +
'</span> and ' +
'</span>' +
'<span class="property active" data-name="color">' +
'<a href="#" class="title">color</a>' +
'<span class="classes">' +
'<span data-class="-" class="active">default</span>' +
'<span data-class="color1">color1</span>' +
'<span data-class="color2">color2</span>' +
'<span data-class="color3">color3</span>' +
'<span data-class="color4">color4</span>' +
'<span data-class="color5">color5</span>' +
'<span data-class="color6">color6</span>' +
'<span data-class="color7">color7</span>' +
'</span>' +
'</span>'
: '') +
'</span>'
);
}
// Target.
switch (options.target) {
case 'previous':
$this.prev().find('.demo-controls').replaceWith($controls);
break;
default:
$this.find('.demo-controls').replaceWith($controls);
break;
}
// Styles.
if (styles) {
$styleProperty = $controls.find('.property[data-name="style"]');
$stylePropertyClasses = $styleProperty.children('.classes');
for (i in styles) {
current = false;
count = Object.keys(styles[i]).length;
n = 1;
// Add to style property.
$x = $('<span data-class="' + i + '">, ' + i + '</span>')
.appendTo($stylePropertyClasses);
if ($this.hasClass(i)) {
$x.addClass('active');
current = true;
}
// Step through properties.
for (j in styles[i]) {
$x = $(
'<span class="property" data-name="' + j + '" data-requires="' + i + '">' +
(n == count ? '<span>and </span>' : '') +
'<a href="#" class="title">' + j + '</a>' +
'<span class="classes">' +
'</span>' + (n < count ? ', ' : '') +
'</span>'
).appendTo($controls);
$y = $x.children('.classes');
if (current)
$x.addClass('active');
for (k in styles[i][j]) {
$z = $('<span data-class="' + k + '">, ' + styles[i][j][k].replace('*', '') + '</span>')
.appendTo($y);
if (styles[i][j][k].substr(-1, 1) == '*')
$z.addClass('default');
if (current
&& $this.hasClass(k))
$z.addClass('active');
}
n++;
}
}
}
// Events.
$controls.on('click', 'a', function(event) {
event.preventDefault();
});
$controls.on('click', '.property.active', function(event) {
var $property = $(this);
var $classes = $property.find('.classes > *');
var $current = $classes.filter('.active');
var $next;
// Determine next.
if ($current.length == 0
|| $current.index() == $classes.length - 1)
$next = $classes.first();
else
$next = $current.next();
// Turn on animate all.
$this.addClass('demo-animate-all');
// Deactivate current.
$current.removeClass('active');
$this.removeClass($current.data('class'));
// Activate next.
$next.addClass('active');
$this.addClass($next.data('class'));
// Turn off animate all.
setTimeout(function() {
$this.removeClass('demo-animate-all');
}, 500);
});
$controls.on('click', '.property[data-name="style"]', function(event) {
var $property = $(this);
var $classes = $property.find('.classes > *');
var $current = $classes.filter('.active');
var $next;
// Determine next.
if ($current.length == 0
|| $current.index() == $classes.length - 1)
$next = $classes.first();
else
$next = $current.next();
// Turn on animate all.
$this.addClass('demo-animate-all');
// Deactivate current.
$current.removeClass('active');
$this.removeClass($current.data('class'));
$controls.find('.property[data-requires="' + $current.data('class') + '"]')
.removeClass('active');
$controls.find('.property[data-requires="' + $current.data('class') + '"] > .classes > .active').each(function() {
$(this).removeClass('active');
if ($(this).data('class') != '-')
$this.removeClass($(this).data('class'));
});
// Activate next.
$next.addClass('active');
$this.addClass($next.data('class'));
$controls.find('.property[data-requires="' + $next.data('class') + '"]')
.addClass('active');
$controls.find('.property[data-requires="' + $next.data('class') + '"] > .classes > .default').each(function() {
$(this).addClass('active');
if ($(this).data('class') != '-')
$this.addClass($(this).data('class'));
});
// Turn off animate all.
setTimeout(function() {
$this.removeClass('demo-animate-all');
}, 500);
});
};
// Elements.
// Wrappers.
$('.wrapper').demo_controls(null, {
palette: true
});
// Banner.
$('.banner').demo_controls({
style1: {
'size': {
'-': 'normal',
'fullscreen': 'fullscreen*'
},
'orientation': {
'orient-left': 'left*',
'orient-right': 'right'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style2: {
'size': {
'-': 'normal',
'fullscreen': 'fullscreen*'
},
'orientation': {
'orient-left': 'left',
'orient-center': 'center*',
'orient-right': 'right'
},
'content alignment': {
'content-align-left': 'left',
'content-align-center': 'center*',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style3: {
'size': {
'-': 'normal',
'fullscreen': 'fullscreen*'
},
'orientation': {
'orient-left': 'left',
'orient-right': 'right*'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style4: {
'size': {
'-': 'normal',
'fullscreen': 'fullscreen*'
},
'phone type': {
'iphone': 'iphone*',
'android': 'android'
},
'orientation': {
'orient-left': 'left',
'orient-right': 'right*'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style5: {
'size': {
'-': 'normal',
'fullscreen': 'fullscreen*'
},
'content alignment': {
'content-align-left': 'left',
'content-align-center': 'center*',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
}
});
// Spotlight.
$('.spotlight').demo_controls({
style1: {
'orientation': {
'orient-left': 'left',
'orient-right': 'right*'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left*',
'image-position-center': 'center',
'image-position-right': 'right'
}
},
style2: {
'orientation': {
'orient-left': 'left',
'orient-right': 'right*'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style3: {
'phone type': {
'iphone': 'iphone*',
'android': 'android'
},
'orientation': {
'orient-left': 'left',
'orient-right': 'right*'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style4: {
'size': {
'-size': 'normal',
'fullscreen': 'fullscreen*',
'halfscreen': 'halfscreen'
},
'orientation': {
'orient-left': 'left*',
'orient-center': 'center',
'orient-right': 'right'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
style5: {
'size': {
'-size': 'normal',
'fullscreen': 'fullscreen*',
'halfscreen': 'halfscreen'
},
'orientation': {
'orient-left': 'left*',
'orient-center': 'center',
'orient-right': 'right'
},
'content alignment': {
'content-align-left': 'left*',
'content-align-center': 'center',
'content-align-right': 'right'
},
'image position': {
'image-position-left': 'left',
'image-position-center': 'center*',
'image-position-right': 'right'
}
},
});
// Gallery.
$('.gallery').demo_controls({
style1: {
'size': {
'small': 'small',
'medium': 'medium*',
'big': 'big'
}
},
style2: {
'size': {
'small': 'small',
'medium': 'medium*',
'big': 'big'
}
},
}, {
target: 'previous',
palette: false
});
// Items.
$('.items').demo_controls({
style1: {
'size': {
'small': 'small',
'medium': 'medium*',
'big': 'big'
}
},
style2: {
'size': {
'small': 'small',
'medium': 'medium*',
'big': 'big'
}
},
style3: {
'size': {
'small': 'small',
'medium': 'medium*',
'big': 'big'
}
}
}, {
target: 'previous',
palette: false
});
})(jQuery);

+ 2
- 0
assets/js/jquery.min.js
File diff suppressed because it is too large
View File


+ 2
- 0
assets/js/jquery.scrollex.min.js View File

@ -0,0 +1,2 @@
/* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery);

+ 2
- 0
assets/js/jquery.scrolly.min.js View File

@ -0,0 +1,2 @@
/* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */
(function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery);

+ 341
- 0
assets/js/main.js View File

@ -0,0 +1,341 @@
/*
Story by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
(function($) {
var $window = $(window),
$body = $('body'),
$wrapper = $('#wrapper');
// Breakpoints.
breakpoints({
xlarge: [ '1281px', '1680px' ],
large: [ '981px', '1280px' ],
medium: [ '737px', '980px' ],
small: [ '481px', '736px' ],
xsmall: [ '361px', '480px' ],
xxsmall: [ null, '360px' ]
});
// Play initial animations on page load.
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-preload');
}, 100);
});
// Browser fixes.
// IE: Flexbox min-height bug.
if (browser.name == 'ie')
(function() {
var flexboxFixTimeoutId;
$window.on('resize.flexbox-fix', function() {
var $x = $('.fullscreen');
clearTimeout(flexboxFixTimeoutId);
flexboxFixTimeoutId = setTimeout(function() {
if ($x.prop('scrollHeight') > $window.height())
$x.css('height', 'auto');
else
$x.css('height', '100vh');
}, 250);
}).triggerHandler('resize.flexbox-fix');
})();
// Object fit workaround.
if (!browser.canUse('object-fit'))
(function() {
$('.banner .image, .spotlight .image').each(function() {
var $this = $(this),
$img = $this.children('img'),
positionClass = $this.parent().attr('class').match(/image-position-([a-z]+)/);
// Set image.
$this
.css('background-image', 'url("' + $img.attr('src') + '")')
.css('background-repeat', 'no-repeat')
.css('background-size', 'cover');
// Set position.
switch (positionClass.length > 1 ? positionClass[1] : '') {
case 'left':
$this.css('background-position', 'left');
break;
case 'right':
$this.css('background-position', 'right');
break;
default:
case 'center':
$this.css('background-position', 'center');
break;
}
// Hide original.
$img.css('opacity', '0');
});
})();
// Smooth scroll.
$('.smooth-scroll').scrolly();
$('.smooth-scroll-middle').scrolly({ anchor: 'middle' });
// Wrapper.
$wrapper.children()
.scrollex({
top: '30vh',
bottom: '30vh',
initialize: function() {
$(this).addClass('is-inactive');
},
terminate: function() {
$(this).removeClass('is-inactive');
},
enter: function() {
$(this).removeClass('is-inactive');
},
leave: function() {
var $this = $(this);
if ($this.hasClass('onscroll-bidirectional'))
$this.addClass('is-inactive');
}
});
// Items.
$('.items')
.scrollex({
top: '30vh',
bottom: '30vh',
delay: 50,
initialize: function() {
$(this).addClass('is-inactive');
},
terminate: function() {
$(this).removeClass('is-inactive');
},
enter: function() {
$(this).removeClass('is-inactive');
},
leave: function() {
var $this = $(this);
if ($this.hasClass('onscroll-bidirectional'))
$this.addClass('is-inactive');
}
})
.children()
.wrapInner('<div class="inner"></div>');
// Gallery.
$('.gallery')
.wrapInner('<div class="inner"></div>')
.prepend(browser.mobile ? '' : '<div class="forward"></div><div class="backward"></div>')
.scrollex({
top: '30vh',
bottom: '30vh',
delay: 50,
initialize: function() {
$(this).addClass('is-inactive');
},
terminate: function() {
$(this).removeClass('is-inactive');
},
enter: function() {
$(this).removeClass('is-inactive');
},
leave: function() {
var $this = $(this);
if ($this.hasClass('onscroll-bidirectional'))
$this.addClass('is-inactive');
}
})
.children('.inner')
//.css('overflow', 'hidden')
.css('overflow-y', browser.mobile ? 'visible' : 'hidden')
.css('overflow-x', browser.mobile ? 'scroll' : 'hidden')
.scrollLeft(0);
// Style #1.
// ...
// Style #2.
$('.gallery')
.on('wheel', '.inner', function(event) {
var $this = $(this),
delta = (event.originalEvent.deltaX * 10);
// Cap delta.
if (delta > 0)
delta = Math.min(25, delta);
else if (delta < 0)
delta = Math.max(-25, delta);
// Scroll.
$this.scrollLeft( $this.scrollLeft() + delta );
})
.on('mouseenter', '.forward, .backward', function(event) {
var $this = $(this),
$inner = $this.siblings('.inner'),
direction = ($this.hasClass('forward') ? 1 : -1);
// Clear move interval.
clearInterval(this._gallery_moveIntervalId);
// Start interval.
this._gallery_moveIntervalId = setInterval(function() {
$inner.scrollLeft( $inner.scrollLeft() + (5 * direction) );
}, 10);
})
.on('mouseleave', '.forward, .backward', function(event) {
// Clear move interval.
clearInterval(this._gallery_moveIntervalId);
});
// Lightbox.
$('.gallery.lightbox')
.on('click', 'a', function(event) {
var $a = $(this),
$gallery = $a.parents('.gallery'),
$modal = $gallery.children('.modal'),
$modalImg = $modal.find('img'),
href = $a.attr('href');
// Not an image? Bail.
if (!href.match(/\.(jpg|gif|png|mp4)$/))
return;
// Prevent default.
event.preventDefault();
event.stopPropagation();
// Locked? Bail.
if ($modal[0]._locked)
return;
// Lock.
$modal[0]._locked = true;
// Set src.
$modalImg.attr('src', href);
// Set visible.
$modal.addClass('visible');
// Focus.
$modal.focus();
// Delay.
setTimeout(function() {
// Unlock.
$modal[0]._locked = false;
}, 600);
})
.on('click', '.modal', function(event) {
var $modal = $(this),
$modalImg = $modal.find('img');
// Locked? Bail.
if ($modal[0]._locked)
return;
// Already hidden? Bail.
if (!$modal.hasClass('visible'))
return;
// Lock.
$modal[0]._locked = true;
// Clear visible, loaded.
$modal
.removeClass('loaded')
// Delay.
setTimeout(function() {
$modal
.removeClass('visible')
setTimeout(function() {
// Clear src.
$modalImg.attr('src', '');
// Unlock.
$modal[0]._locked = false;
// Focus.
$body.focus();
}, 475);
}, 125);
})
.on('keypress', '.modal', function(event) {
var $modal = $(this);
// Escape? Hide modal.
if (event.keyCode == 27)
$modal.trigger('click');
})
.prepend('<div class="modal" tabIndex="-1"><div class="inner"><img src="" /></div></div>')
.find('img')
.on('load', function(event) {
var $modalImg = $(this),
$modal = $modalImg.parents('.modal');
setTimeout(function() {
// No longer visible? Bail.
if (!$modal.hasClass('visible'))
return;
// Set loaded.
$modal.addClass('loaded');
}, 275);
});
})(jQuery);

+ 587
- 0
assets/js/util.js View File

@ -0,0 +1,587 @@
(function($) {
/**
* Generate an indented list of links from a nav. Meant for use with panel().
* @return {jQuery} jQuery object.
*/
$.fn.navList = function() {
var $this = $(this);
$a = $this.find('a'),
b = [];
$a.each(function() {
var $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'),
target = $this.attr('target');
b.push(
'<a ' +
'class="link depth-' + indent + '"' +
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
'>' +
'<span class="indent-' + indent + '"></span>' +
$this.text() +
'</a>'
);
});
return b.join('');
};
/**
* Panel-ify an element.
* @param {object} userConfig User config.
* @return {jQuery} jQuery object.
*/
$.fn.panel = function(userConfig) {
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).panel(userConfig);
return $this;
}
// Vars.
var $this = $(this),
$body = $('body'),
$window = $(window),
id = $this.attr('id'),
config;
// Config.
config = $.extend({
// Delay.
delay: 0,
// Hide panel on link click.
hideOnClick: false,
// Hide panel on escape keypress.
hideOnEscape: false,
// Hide panel on swipe.
hideOnSwipe: false,
// Reset scroll position on hide.
resetScroll: false,
// Reset forms on hide.
resetForms: false,
// Side of viewport the panel will appear.
side: null,
// Target element for "class".
target: $this,
// Class to toggle.
visibleClass: 'visible'
}, userConfig);
// Expand "target" if it's not a jQuery object already.
if (typeof config.target != 'jQuery')
config.target = $(config.target);
// Panel.
// Methods.
$this._hide = function(event) {
// Already hidden? Bail.
if (!config.target.hasClass(config.visibleClass))
return;
// If an event was provided, cancel it.
if (event) {
event.preventDefault();
event.stopPropagation();
}
// Hide.
config.target.removeClass(config.visibleClass);
// Post-hide stuff.
window.setTimeout(function() {
// Reset scroll position.
if (config.resetScroll)
$this.scrollTop(0);
// Reset forms.
if (config.resetForms)
$this.find('form').each(function() {
this.reset();
});
}, config.delay);
};
// Vendor fixes.
$this
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
.css('-webkit-overflow-scrolling', 'touch');
// Hide on click.
if (config.hideOnClick) {
$this.find('a')
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
$this
.on('click', 'a', function(event) {
var $a = $(this),
href = $a.attr('href'),
target = $a.attr('target');
if (!href || href == '#' || href == '' || href == '#' + id)
return;
// Cancel original event.
event.preventDefault();
event.stopPropagation();
// Hide panel.
$this._hide();
// Redirect to href.
window.setTimeout(function() {
if (target == '_blank')
window.open(href);
else
window.location.href = href;
}, config.delay + 10);
});
}
// Event: Touch stuff.
$this.on('touchstart', function(event) {
$this.touchPosX = event.originalEvent.touches[0].pageX;
$this.touchPosY = event.originalEvent.touches[0].pageY;
})
$this.on('touchmove', function(event) {
if ($this.touchPosX === null
|| $this.touchPosY === null)
return;
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
th = $this.outerHeight(),
ts = ($this.get(0).scrollHeight - $this.scrollTop());
// Hide on swipe?
if (config.hideOnSwipe) {
var result = false,
boundary = 20,
delta = 50;
switch (config.side) {
case 'left':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
break;
case 'right':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
break;
case 'top':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
break;
case 'bottom':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
break;
default:
break;
}
if (result) {
$this.touchPosX = null;
$this.touchPosY = null;
$this._hide();
return false;
}