feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

2744
f_offline/assets/css/animate.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,203 @@
.menu-wrap a {
color: #b8b7ad;
}
.menu-wrap a:hover,
.menu-wrap a:focus{
color: #e92762;
}
.menu-wrap .navbar-nav li .active,
.menu-wrap .navbar-nav li .active:before{
color: #e92762;
-webkit-transform: scale(1);
transform: scale(1);
}
.content-wrap {
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.content {
position: relative;
background: #b4bad2;
}
.content::before {
position: absolute;
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.3);
content: '';
opacity: 0;
-webkit-transform: translate3d(100%,0,0);
transform: translate3d(100%,0,0);
-webkit-transition: opacity 0.4s, -webkit-transform 0s 0.4s;
transition: opacity 0.4s, transform 0s 0.4s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
}
/* Menu Button */
.menu-button {
position: absolute;
z-index: 1000;
width: 60px;
height: 42px;
border: none;
font-size: 30px;
color: #fff;
background: transparent;
top: 15px;
right: 0;
line-height: 42px;
outline: none;
text-align: center;
}
button:focus{
outline: none;
}
/* Close Button */
.close-button {
width: 45px;
height: 45px;
position: absolute;
left: -45px;
top: 4px;
overflow: hidden;
cursor: pointer;
font-size: 25px;
border: none;
background: #fff;
color: #000;
line-height: 48px;
box-shadow: -1px 2px 3px 0px rgba(0, 0, 0, 0.16), 0 0px 0px 0px rgba(0, 0, 0, 0.12);
}
.logo-menu{
padding: 15px 0;
}
.menu-bg .logo-menu{
padding: 6px 0;
}
.menu-bg .menu-button{
top: 5px;
color: #333;
}
/* Menu */
.menu-wrap {
position: fixed;
z-index: 9999999;
width: 260px;
right: 0;
height: 100%;
background: #fff;
padding: 2.5em 1.5em 0;
font-size: 1.15em;
-webkit-transform: translate3d(320px,0,0);
transform: translate3d(320px,0,0);
-webkit-transition: -webkit-transform 0.4s;
transition: transform 0.4s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
}
.menu,
.menu-list {
height: 100%;
}
.menu-list {
-webkit-transform: translate3d(0,100%,0);
transform: translate3d(0,100%,0);
}
.menu-list a {
color: #333;
display: block;
padding: 0.8em;
-webkit-transform: translate3d(0,500px,0);
transform: translate3d(0,500px,0);
position: relative;
}
.menu-wrap a:hover:before{
-webkit-transform: scale(1);
transform: scale(1);
}
.menu-list,
.menu-list a {
-webkit-transition: -webkit-transform 0s 0.4s;
transition: transform 0s 0.4s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
}
.menu-list a:nth-child(2) {
-webkit-transform: translate3d(0,1000px,0);
transform: translate3d(0,1000px,0);
}
.menu-list a:nth-child(3) {
-webkit-transform: translate3d(0,1500px,0);
transform: translate3d(0,1500px,0);
}
.menu-list a:nth-child(4) {
-webkit-transform: translate3d(0,2000px,0);
transform: translate3d(0,2000px,0);
}
.menu-list a:nth-child(5) {
-webkit-transform: translate3d(0,2500px,0);
transform: translate3d(0,2500px,0);
}
.menu-list a:nth-child(6) {
-webkit-transform: translate3d(0,3000px,0);
transform: translate3d(0,3000px,0);
}
.menu-list a span {
margin-left: 10px;
font-weight: 700;
}
/* Shown menu */
.show-menu .menu-wrap {
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
-webkit-transition: -webkit-transform 0.8s;
transition: transform 0.8s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
}
.show-menu .menu-list,
.show-menu .menu-list a {
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
-webkit-transition: -webkit-transform 0.8s;
transition: transform 0.8s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
}
.show-menu .menu-list a {
-webkit-transition-duration: 0.9s;
transition-duration: 0.9s;
}
.show-menu .content::before {
opacity: 1;
-webkit-transition: opacity 0.8s;
transition: opacity 0.8s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
transition-timing-function: cubic-bezier(0.7,0,0.3,1);
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}

View File

@@ -0,0 +1,103 @@
/* only small desktops */
@media (min-width: 992px) and (max-width: 1199px) {
.countdown-timer .heading-count h2 {
font-size: 36px;
}
#hero-area .contents .head-title {
font-size: 40px;
}
.line-right .time-count .time-entry {
width: 100px;
height: 100px;
}
.line-right .time-count .time-entry span {
font-size: 40px;
}
.countdown-timer {
padding: 260px 0;
}
}
/* tablets */
@media (max-width: 991px) {
.section-title {
position: relative;
margin-bottom: 10px;
}
}
/* only small tablets */
@media (min-width: 768px) and (max-width: 991px) {
.section-title {
font-size: 26px;
}
.intro .heading-count h2 {
font-size: 30px;
}
.countdown-timer .heading-count h2 {
font-size: 30px;
}
.countdown-timer .heading-count h2 {
font-size: 25px;
}
.time-countdown .time-entry {
width: 100px;
height: 100px;
}
.time-countdown .time-entry span {
font-size: 30px;
}
}
/* mobile or only mobile */
@media (max-width: 767px) {
.section-title {
font-size: 26px;
line-height: 36px;
}
.section-sub {
font-size: 16px;
}
.intro .heading-count h2 {
font-size: 26px;
}
.time-countdown .time-entry {
width: 100px;
height: 100px;
}
.time-countdown .time-entry span {
font-size: 30px;
}
.time-countdown {
margin-bottom: 30px;
}
.countdown-timer .heading-count {
padding: 10px;
}
.countdown-timer .heading-count h2 {
font-size: 26px;
}
.countdown-timer .heading-count h4 {
font-size: 12px;
}
.subscribe-form .form-inline .btn {
width: 125px;
}
}
@media (min-width: 320px) and (max-width: 480px) {
.time-countdown .time-entry {
width: 100px;
height: 100px;
}
.time-countdown .time-entry span {
font-size: 30px;
}
.subscribe-form .form-inline .btn {
width: 125px;
}
.btn {
padding: 8px 10px;
font-size: 12px;
}
}

View File

@@ -0,0 +1,142 @@
/*!
* SlickNav Responsive Mobile Menu v1.0.3
* (c) 2015 Josh Cope
* licensed under MIT
*/
.slicknav_btn {
cursor: pointer;
display: block;
float: right;
height: 35px;
line-height: 50px;
padding: 10px 0 9px;
position: relative;
vertical-align: middle;
width: 44px;
}
.slicknav_btn .slicknav_icon-bar + .slicknav_icon-bar {
margin-top: 0.188em; }
.slicknav_menu {
*zoom: 1; }
.slicknav_menu .slicknav_menutxt {
display: block;
line-height: 1.188em;
float: left; }
.slicknav_menu .slicknav_icon {
margin: 0.188em 0 0 0.438em; }
.slicknav_menu .slicknav_no-text {
margin: 0; }
.slicknav_menu .slicknav_icon-bar {
display: block;
width: 1.125em;
height: 0.125em;
margin: 0 auto;
-webkit-border-radius: 1px;
-moz-border-radius: 1px;
border-radius: 1px;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
.slicknav_menu:before {
content: " ";
display: table; }
.slicknav_menu:after {
content: " ";
display: table;
clear: both; }
.slicknav_nav {
clear: both; }
.slicknav_nav ul {
display: block; }
.slicknav_nav li {
display: block;
line-height: 30px;
}
.slicknav_nav li:not(:first-child){
}
.slicknav_nav .slicknav_arrow {
background: #ededed none repeat scroll 0 0;
float: right;
text-align: center;
width: 35px;
color: #666;
}
.slicknav_nav .slicknav_item {
cursor: pointer; }
.slicknav_nav .slicknav_item a {
display: inline; }
.slicknav_nav .slicknav_row {
display: block; }
.slicknav_nav a {
display: block; }
.slicknav_nav .slicknav_parent-link a {
display: inline; }
.slicknav_brand {
float: left; }
.slicknav_menu {
font-size: 16px;
box-sizing: border-box;
}
.slicknav_menu ul{
background: #fff;
}
.slicknav_menu * {
box-sizing: border-box; }
.slicknav_menu .slicknav_menutxt {
color: #fff;
font-weight: bold;
text-shadow: 0 1px 3px #000; }
.slicknav_btn {
border: 1px solid;
border-radius: 0;
margin: 11px 15px;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
.slicknav_nav {
color: #fff;
font-size: 0.875em;
list-style: outside none none;
margin: 0;
max-height: 350px;
padding: 0;
width: 100%;
}
.slicknav_nav ul {
list-style: none;
overflow: hidden;
padding: 0;
margin: 0 0 0 20px; }
.slicknav_nav .slicknav_row {
padding: 5px 10px;
margin: 2px 5px; }
.slicknav_nav a {
padding: 5px 10px;
margin: 2px 5px;
text-decoration: none;
color: #666; }
.slicknav_nav .slicknav_txtnode {
margin-left: 15px; }
.slicknav_nav .slicknav_item a {
padding: 0;
margin: 0; }
.slicknav_nav .slicknav_parent-link a {
padding: 0;
margin: 0; }
.slicknav_brand {
color: #fff;
font-size: 18px;
line-height: 30px;
padding: 7px 12px;
height: 44px; }

2
f_offline/assets/css/vegas.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,947 @@
@font-face {
font-family: 'LineIcons';
src: url('../fonts/LineIcons.eot?tc3uo0');
src: url('../fonts/LineIcons.eot?tc3uo0#iefix') format('embedded-opentype'),
url('../fonts/LineIcons.ttf?tc3uo0') format('truetype'),
url('../fonts/LineIcons.woff?tc3uo0') format('woff'),
url('../fonts/LineIcons.svg?tc3uo0#LineIcons') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="lni-"], [class*=" lni-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'LineIcons' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.lni-image:before {
content: "\e991";
}
.lni-linkedin-filled:before {
content: "\e9ac";
}
.lni-add-files:before {
content: "\e900";
}
.lni-agenda:before {
content: "\e901";
}
.lni-alarm-clock:before {
content: "\e902";
}
.lni-alarm:before {
content: "\e903";
}
.lni-amazon:before {
content: "\e904";
}
.lni-amex:before {
content: "\e905";
}
.lni-anchor:before {
content: "\e906";
}
.lni-android:before {
content: "\e907";
}
.lni-angle-double-down:before {
content: "\e908";
}
.lni-angle-double-left:before {
content: "\e909";
}
.lni-angle-double-right:before {
content: "\e90a";
}
.lni-angle-double-up:before {
content: "\e90b";
}
.lni-apartment:before {
content: "\e90c";
}
.lni-apple:before {
content: "\e90d";
}
.lni-archive:before {
content: "\e90e";
}
.lni-arrow-down-circle:before {
content: "\e90f";
}
.lni-arrow-down:before {
content: "\e910";
}
.lni-arrow-left-circle:before {
content: "\e911";
}
.lni-arrow-left:before {
content: "\e912";
}
.lni-arrow-right-circle:before {
content: "\e913";
}
.lni-arrow-right:before {
content: "\e914";
}
.lni-arrow-top-left:before {
content: "\e915";
}
.lni-arrow-top-right:before {
content: "\e916";
}
.lni-arrow-up-circle:before {
content: "\e917";
}
.lni-arrow-up:before {
content: "\e918";
}
.lni-arrows-horizontal:before {
content: "\e919";
}
.lni-arrows-vertical:before {
content: "\e91a";
}
.lni-ban:before {
content: "\e91b";
}
.lni-bar-chart:before {
content: "\e91c";
}
.lni-basketball:before {
content: "\e91d";
}
.lni-behance:before {
content: "\e91e";
}
.lni-bi-cycle:before {
content: "\e91f";
}
.lni-bitbucket:before {
content: "\e920";
}
.lni-bitcoin:before {
content: "\e921";
}
.lni-blackboard:before {
content: "\e922";
}
.lni-bluetooth:before {
content: "\e923";
}
.lni-bold:before {
content: "\e924";
}
.lni-bolt-alt:before {
content: "\e925";
}
.lni-bolt:before {
content: "\e926";
}
.lni-book:before {
content: "\e927";
}
.lni-bookmark-alt:before {
content: "\e928";
}
.lni-bookmark:before {
content: "\e929";
}
.lni-briefcase:before {
content: "\e92a";
}
.lni-brush-alt:before {
content: "\e92b";
}
.lni-brush:before {
content: "\e92c";
}
.lni-bubble:before {
content: "\e92d";
}
.lni-bug:before {
content: "\e92e";
}
.lni-bulb:before {
content: "\e92f";
}
.lni-bullhorn:before {
content: "\e930";
}
.lni-bus:before {
content: "\e931";
}
.lni-calendar:before {
content: "\e932";
}
.lni-camera:before {
content: "\e933";
}
.lni-car:before {
content: "\e934";
}
.lni-cart-full:before {
content: "\e935";
}
.lni-cart:before {
content: "\e936";
}
.lni-check-box:before {
content: "\e937";
}
.lni-check-mark-circle:before {
content: "\e938";
}
.lni-chevron-down-circle:before {
content: "\e939";
}
.lni-chevron-down:before {
content: "\e93a";
}
.lni-chevron-left-circle:before {
content: "\e93b";
}
.lni-chevron-left:before {
content: "\e93c";
}
.lni-chevron-right-circle:before {
content: "\e93d";
}
.lni-chevron-right:before {
content: "\e93e";
}
.lni-chevron-up-circle:before {
content: "\e93f";
}
.lni-chevron-up:before {
content: "\e940";
}
.lni-chrome:before {
content: "\e941";
}
.lni-circle-minus:before {
content: "\e942";
}
.lni-clipboard:before {
content: "\e943";
}
.lni-close:before {
content: "\e944";
}
.lni-cloud-check:before {
content: "\e945";
}
.lni-cloud-download:before {
content: "\e946";
}
.lni-cloud-sync:before {
content: "\e947";
}
.lni-cloud-upload:before {
content: "\e948";
}
.lni-cloud:before {
content: "\e949";
}
.lni-code:before {
content: "\e94a";
}
.lni-coffee-cup:before {
content: "\e94b";
}
.lni-cog:before {
content: "\e94c";
}
.lni-color-pallet:before {
content: "\e94d";
}
.lni-comment-reply-alt:before {
content: "\e94e";
}
.lni-comments-alt:before {
content: "\e94f";
}
.lni-comments:before {
content: "\e950";
}
.lni-construction:before {
content: "\e951";
}
.lni-control-panel:before {
content: "\e952";
}
.lni-crop:before {
content: "\e953";
}
.lni-cross-circle:before {
content: "\e954";
}
.lni-crown:before {
content: "\e955";
}
.lni-css3:before {
content: "\e956";
}
.lni-cup:before {
content: "\e957";
}
.lni-cut:before {
content: "\e958";
}
.lni-dashboard:before {
content: "\e959";
}
.lni-database:before {
content: "\e95a";
}
.lni-dinner:before {
content: "\e95b";
}
.lni-direction-alt:before {
content: "\e95c";
}
.lni-direction-ltr:before {
content: "\e95d";
}
.lni-direction-rtl:before {
content: "\e95e";
}
.lni-direction:before {
content: "\e95f";
}
.lni-display:before {
content: "\e960";
}
.lni-download:before {
content: "\e961";
}
.lni-drop:before {
content: "\e962";
}
.lni-dropbox:before {
content: "\e963";
}
.lni-drupal:before {
content: "\e964";
}
.lni-emoji-neutral:before {
content: "\e965";
}
.lni-emoji-sad:before {
content: "\e966";
}
.lni-emoji-smile:before {
content: "\e967";
}
.lni-empty-file:before {
content: "\e968";
}
.lni-enter:before {
content: "\e969";
}
.lni-envelope:before {
content: "\e96a";
}
.lni-eraser:before {
content: "\e96b";
}
.lni-exit-down:before {
content: "\e96c";
}
.lni-exit-up:before {
content: "\e96d";
}
.lni-exit:before {
content: "\e96e";
}
.lni-eye:before {
content: "\e96f";
}
.lni-facebook-filled:before {
content: "\e970";
}
.lni-facebook:before {
content: "\e971";
}
.lni-files:before {
content: "\e972";
}
.lni-film-play:before {
content: "\e973";
}
.lni-firefox:before {
content: "\e974";
}
.lni-flag-alt:before {
content: "\e975";
}
.lni-flag-cubic:before {
content: "\e976";
}
.lni-flag:before {
content: "\e977";
}
.lni-folder:before {
content: "\e978";
}
.lni-frame-contract:before {
content: "\e979";
}
.lni-frame-expand:before {
content: "\e97a";
}
.lni-full-screen:before {
content: "\e97b";
}
.lni-funnel:before {
content: "\e97c";
}
.lni-gallery:before {
content: "\e97d";
}
.lni-game:before {
content: "\e97e";
}
.lni-gift:before {
content: "\e97f";
}
.lni-git:before {
content: "\e980";
}
.lni-github:before {
content: "\e981";
}
.lni-google-plus:before {
content: "\e982";
}
.lni-graduation:before {
content: "\e983";
}
.lni-grid-alt:before {
content: "\e984";
}
.lni-grid:before {
content: "\e985";
}
.lni-hammer:before {
content: "\e986";
}
.lni-hand:before {
content: "\e987";
}
.lni-harddrive:before {
content: "\e988";
}
.lni-headphone-alt:before {
content: "\e989";
}
.lni-headphone:before {
content: "\e98a";
}
.lni-heart-filled:before {
content: "\e98b";
}
.lni-heart-pulse:before {
content: "\e98c";
}
.lni-heart:before {
content: "\e98d";
}
.lni-help:before {
content: "\e98e";
}
.lni-highlight-alt:before {
content: "\e98f";
}
.lni-highlight:before {
content: "\e990";
}
.lni-hobile:before {
content: "\e992";
}
.lni-home:before {
content: "\e993";
}
.lni-hourglass:before {
content: "\e994";
}
.lni-html5:before {
content: "\e995";
}
.lni-inbox:before {
content: "\e996";
}
.lni-indent-decrease:before {
content: "\e997";
}
.lni-indent-increase:before {
content: "\e998";
}
.lni-Infinite:before {
content: "\e999";
}
.lni-information:before {
content: "\e99a";
}
.lni-instagram-filled:before {
content: "\e99b";
}
.lni-instagram:before {
content: "\e99c";
}
.lni-italic:before {
content: "\e99d";
}
.lni-joomla:before {
content: "\e99e";
}
.lni-key:before {
content: "\e99f";
}
.lni-keyboard:before {
content: "\e9a0";
}
.lni-laptop-phone:before {
content: "\e9a1";
}
.lni-laptop:before {
content: "\e9a2";
}
.lni-layers:before {
content: "\e9a3";
}
.lni-layout:before {
content: "\e9a4";
}
.lni-leaf:before {
content: "\e9a5";
}
.lni-licencse:before {
content: "\e9a6";
}
.lni-line-dashed:before {
content: "\e9a7";
}
.lni-line-dotted:before {
content: "\e9a8";
}
.lni-line-double:before {
content: "\e9a9";
}
.lni-line-spacing:before {
content: "\e9aa";
}
.lni-link:before {
content: "\e9ab";
}
.lni-linkedin:before {
content: "\e9ad";
}
.lni-list:before {
content: "\e9ae";
}
.lni-lock:before {
content: "\e9af";
}
.lni-magnet:before {
content: "\e9b0";
}
.lni-magnifier:before {
content: "\e9b1";
}
.lni-map-marker:before {
content: "\e9b2";
}
.lni-map:before {
content: "\e9b3";
}
.lni-mastercard:before {
content: "\e9b4";
}
.lni-medall-alt:before {
content: "\e9b5";
}
.lni-medall:before {
content: "\e9b6";
}
.lni-medium:before {
content: "\e9b7";
}
.lni-menu-circle:before {
content: "\e9b8";
}
.lni-menu:before {
content: "\e9b9";
}
.lni-mic:before {
content: "\e9ba";
}
.lni-microphone:before {
content: "\e9bb";
}
.lni-minus:before {
content: "\e9bc";
}
.lni-mobile:before {
content: "\e9bd";
}
.lni-more-alt:before {
content: "\e9be";
}
.lni-more:before {
content: "\e9bf";
}
.lni-mouse:before {
content: "\e9c0";
}
.lni-move:before {
content: "\e9c1";
}
.lni-music:before {
content: "\e9c2";
}
.lni-notepad:before {
content: "\e9c3";
}
.lni-package:before {
content: "\e9c4";
}
.lni-page-break:before {
content: "\e9c5";
}
.lni-paint-bucket:before {
content: "\e9c6";
}
.lni-paint-roller:before {
content: "\e9c7";
}
.lni-paperclip:before {
content: "\e9c8";
}
.lni-paypal:before {
content: "\e9c9";
}
.lni-pencil-alt:before {
content: "\e9ca";
}
.lni-pencil:before {
content: "\e9cb";
}
.lni-phone-handset:before {
content: "\e9cc";
}
.lni-phone:before {
content: "\e9cd";
}
.lni-pie-chart:before {
content: "\e9ce";
}
.lni-pilcrow:before {
content: "\e9cf";
}
.lni-pin-alt:before {
content: "\e9d0";
}
.lni-pin-corner:before {
content: "\e9d1";
}
.lni-pin:before {
content: "\e9d2";
}
.lni-pinterest:before {
content: "\e9d3";
}
.lni-playstore:before {
content: "\e9d4";
}
.lni-plug:before {
content: "\e9d5";
}
.lni-plus:before {
content: "\e9d6";
}
.lni-pointer-down:before {
content: "\e9d7";
}
.lni-pointer-left:before {
content: "\e9d8";
}
.lni-pointer-right:before {
content: "\e9d9";
}
.lni-pointer-up:before {
content: "\e9da";
}
.lni-pointer:before {
content: "\e9db";
}
.lni-power-switch:before {
content: "\e9dc";
}
.lni-printer:before {
content: "\e9dd";
}
.lni-pulse:before {
content: "\e9de";
}
.lni-question-circle:before {
content: "\e9df";
}
.lni-quora:before {
content: "\e9e0";
}
.lni-reddit:before {
content: "\e9e1";
}
.lni-reload:before {
content: "\e9e2";
}
.lni-reply:before {
content: "\e9e3";
}
.lni-rocket:before {
content: "\e9e4";
}
.lni-rss-feed:before {
content: "\e9e5";
}
.lni-ruler-alt:before {
content: "\e9e6";
}
.lni-ruler-pencil:before {
content: "\e9e7";
}
.lni-ruler:before {
content: "\e9e8";
}
.lni-save-alt:before {
content: "\e9e9";
}
.lni-save:before {
content: "\e9ea";
}
.lni-search:before {
content: "\e9eb";
}
.lni-select:before {
content: "\e9ec";
}
.lni-share-alt:before {
content: "\e9ed";
}
.lni-share:before {
content: "\e9ee";
}
.lni-shield:before {
content: "\e9ef";
}
.lni-shift-left:before {
content: "\e9f0";
}
.lni-shift-right:before {
content: "\e9f1";
}
.lni-shortcode:before {
content: "\e9f2";
}
.lni-signal:before {
content: "\e9f3";
}
.lni-slice:before {
content: "\e9f4";
}
.lni-sort-alpha-asc:before {
content: "\e9f5";
}
.lni-sort-amount-asc:before {
content: "\e9f6";
}
.lni-soundcloud:before {
content: "\e9f7";
}
.lni-spellcheck:before {
content: "\e9f8";
}
.lni-spotify:before {
content: "\e9f9";
}
.lni-spray:before {
content: "\e9fa";
}
.lni-stamp:before {
content: "\e9fb";
}
.lni-star-empty:before {
content: "\e9fc";
}
.lni-star-filled:before {
content: "\e9fd";
}
.lni-star-half:before {
content: "\e9fe";
}
.lni-star:before {
content: "\e9ff";
}
.lni-stats-down:before {
content: "\ea00";
}
.lni-stats-up:before {
content: "\ea01";
}
.lni-strikethrough:before {
content: "\ea02";
}
.lni-stripe:before {
content: "\ea03";
}
.lni-support:before {
content: "\ea04";
}
.lni-tab:before {
content: "\ea05";
}
.lni-tag:before {
content: "\ea06";
}
.lni-target:before {
content: "\ea07";
}
.lni-teabag:before {
content: "\ea08";
}
.lni-text-align-right:before {
content: "\ea09";
}
.lni-text-align-center:before {
content: "\ea0a";
}
.lni-text-align-justify:before {
content: "\ea0b";
}
.lni-text-align-left:before {
content: "\ea0c";
}
.lni-text-format-remove:before {
content: "\ea0d";
}
.lni-text-format:before {
content: "\ea0e";
}
.lni-text-size:before {
content: "\ea0f";
}
.lni-thought:before {
content: "\ea10";
}
.lni-thumbs-down:before {
content: "\ea11";
}
.lni-thumbs-up:before {
content: "\ea12";
}
.lni-ticket-alt:before {
content: "\ea13";
}
.lni-ticket:before {
content: "\ea14";
}
.lni-timer:before {
content: "\ea15";
}
.lni-train:before {
content: "\ea16";
}
.lni-trash:before {
content: "\ea17";
}
.lni-tshirt:before {
content: "\ea18";
}
.lni-twitter-filled:before {
content: "\ea19";
}
.lni-twitter:before {
content: "\ea1a";
}
.lni-underline:before {
content: "\ea1b";
}
.lni-unlink:before {
content: "\ea1c";
}
.lni-unlock:before {
content: "\ea1d";
}
.lni-upload:before {
content: "\ea1e";
}
.lni-user:before {
content: "\ea1f";
}
.lni-users:before {
content: "\ea20";
}
.lni-vector:before {
content: "\ea21";
}
.lni-video:before {
content: "\ea22";
}
.lni-visa:before {
content: "\ea23";
}
.lni-volume-high:before {
content: "\ea24";
}
.lni-volume-low:before {
content: "\ea25";
}
.lni-volume-medium:before {
content: "\ea26";
}
.lni-volume-mute:before {
content: "\ea27";
}
.lni-wallet:before {
content: "\ea28";
}
.lni-warning:before {
content: "\ea29";
}
.lni-wheelchair:before {
content: "\ea2a";
}
.lni-wordpress-filled:before {
content: "\ea2b";
}
.lni-wordpress:before {
content: "\ea2c";
}
.lni-world-alt:before {
content: "\ea2d";
}
.lni-world:before {
content: "\ea2e";
}
.lni-write:before {
content: "\ea2f";
}
.lni-zip:before {
content: "\ea30";
}
.lni-zoom-in:before {
content: "\ea31";
}
.lni-zoom-out:before {
content: "\ea32";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

6
f_offline/assets/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,80 @@
/*!
* classie - class helper functions
* from bonzo https://github.com/ded/bonzo
*
* classie.has( elem, 'my-class' ) -> true/false
* classie.add( elem, 'my-new-class' )
* classie.remove( elem, 'my-unwanted-class' )
* classie.toggle( elem, 'my-class' )
*/
/*jshint browser: true, strict: true, undef: true */
/*global define: false */
( function( window ) {
'use strict';
// class helper functions from bonzo https://github.com/ded/bonzo
function classReg( className ) {
return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
}
// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once
var hasClass, addClass, removeClass;
if ( 'classList' in document.documentElement ) {
hasClass = function( elem, c ) {
return elem.classList.contains( c );
};
addClass = function( elem, c ) {
elem.classList.add( c );
};
removeClass = function( elem, c ) {
elem.classList.remove( c );
};
}
else {
hasClass = function( elem, c ) {
return classReg( c ).test( elem.className );
};
addClass = function( elem, c ) {
if ( !hasClass( elem, c ) ) {
elem.className = elem.className + ' ' + c;
}
};
removeClass = function( elem, c ) {
elem.className = elem.className.replace( classReg( c ), ' ' );
};
}
function toggleClass( elem, c ) {
var fn = hasClass( elem, c ) ? removeClass : addClass;
fn( elem, c );
}
var classie = {
// full names
hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
toggleClass: toggleClass,
// short names
has: hasClass,
add: addClass,
remove: removeClass,
toggle: toggleClass
};
// transport
if ( typeof define === 'function' && define.amd ) {
// AMD
define( classie );
} else {
// browser global
window.classie = classie;
}
})( window );

View File

@@ -0,0 +1,55 @@
$("#contactForm").validator().on("submit", function (event) {
if (event.isDefaultPrevented()) {
// handle the invalid form...
formError();
submitMSG(false, "Did you fill in the form properly?");
} else {
// everything looks good!
event.preventDefault();
submitForm();
}
});
function submitForm(){
// Initiate Variables With Form Content
var name = $("#name").val();
var email = $("#email").val();
var msg_subject = $("#msg_subject").val();
var message = $("#message").val();
$.ajax({
type: "POST",
url: "assets/php/form-process.php",
data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&message=" + message,
success : function(text){
if (text == "success"){
formSuccess();
} else {
formError();
submitMSG(false,text);
}
}
});
}
function formSuccess(){
$("#contactForm")[0].reset();
submitMSG(true, "Message Submitted!")
}
function formError(){
$("#contactForm").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
$(this).removeClass();
});
}
function submitMSG(valid, msg){
if(valid){
var msgClasses = "h3 text-left tada animated text-success";
} else {
var msgClasses = "h3 text-left text-danger";
}
$("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
}

File diff suppressed because one or more lines are too long

4
f_offline/assets/js/jquery-min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,22 @@
/*!
* The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)
* Copyright (c) 2016 Edson Hilios
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";function b(a){if(a instanceof Date)return a;if(String(a).match(g))return String(a).match(/^[0-9]*$/)&&(a=Number(a)),String(a).match(/\-/)&&(a=String(a).replace(/\-/g,"/")),new Date(a);throw new Error("Couldn't cast `"+a+"` to a date object.")}function c(a){var b=a.toString().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");return new RegExp(b)}function d(a){return function(b){var d=b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);if(d)for(var f=0,g=d.length;f<g;++f){var h=d[f].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),j=c(h[0]),k=h[1]||"",l=h[3]||"",m=null;h=h[2],i.hasOwnProperty(h)&&(m=i[h],m=Number(a[m])),null!==m&&("!"===k&&(m=e(l,m)),""===k&&m<10&&(m="0"+m.toString()),b=b.replace(j,m.toString()))}return b=b.replace(/%%/,"%")}}function e(a,b){var c="s",d="";return a&&(a=a.replace(/(:|;|\s)/gi,"").split(/\,/),1===a.length?c=a[0]:(d=a[0],c=a[1])),Math.abs(b)>1?c:d}var f=[],g=[],h={precision:100,elapse:!1,defer:!1};g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var i={Y:"years",m:"months",n:"daysToMonth",d:"daysToWeek",w:"weeks",W:"weeksToMonth",H:"hours",M:"minutes",S:"seconds",D:"totalDays",I:"totalHours",N:"totalMinutes",T:"totalSeconds"},j=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.options=a.extend({},h),this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&("function"==typeof d?(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)):this.options=a.extend({},h,d)),this.setFinalDate(c),this.options.defer===!1&&this.start()};a.extend(j.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},this.options.precision)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var b,c=void 0!==a._data(this.el,"events"),d=new Date;b=this.finalDate.getTime()-d.getTime(),b=Math.ceil(b/1e3),b=!this.options.elapse&&b<0?0:Math.abs(b),this.totalSecsLeft!==b&&c&&(this.totalSecsLeft=b,this.elapsed=d>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToWeek:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToMonth:Math.floor(this.totalSecsLeft/60/60/24%30.4368),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),weeksToMonth:Math.floor(this.totalSecsLeft/60/60/24/7)%4,months:Math.floor(this.totalSecsLeft/60/60/24/30.4368),years:Math.abs(this.finalDate.getFullYear()-d.getFullYear()),totalDays:Math.floor(this.totalSecsLeft/60/60/24),totalHours:Math.floor(this.totalSecsLeft/60/60),totalMinutes:Math.floor(this.totalSecsLeft/60),totalSeconds:this.totalSecsLeft},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(b){var c=a.Event(b+".countdown");c.finalDate=this.finalDate,c.elapsed=this.elapsed,c.offset=a.extend({},this.offset),c.strftime=d(this.offset),this.$el.trigger(c)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];j.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new j(this,b[0],b[1])})}});

View File

@@ -0,0 +1,44 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
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<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic: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<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}});

View File

@@ -0,0 +1,223 @@
/*
* jQuery One Page Nav Plugin
* http://github.com/davist11/jQuery-One-Page-Nav
*
* Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
* Dual licensed under the MIT and GPL licenses.
* Uses the same license as jQuery, see:
* http://jquery.org/license
*
* @version 3.0.0
*
* Example usage:
* $('#nav').onePageNav({
* currentClass: 'current',
* changeHash: false,
* scrollSpeed: 750
* });
*/
;(function($, window, document, undefined){
// our plugin constructor
var OnePageNav = function(elem, options){
this.elem = elem;
this.$elem = $(elem);
this.options = options;
this.metadata = this.$elem.data('plugin-options');
this.$win = $(window);
this.sections = {};
this.didScroll = false;
this.$doc = $(document);
this.docHeight = this.$doc.height();
};
// the plugin prototype
OnePageNav.prototype = {
defaults: {
navItems: 'a',
currentClass: 'current',
changeHash: false,
easing: 'swing',
filter: '',
scrollSpeed: 750,
scrollThreshold: 0.5,
begin: false,
end: false,
scrollChange: false
},
init: function() {
// Introduce defaults that can be extended either
// globally or using an object literal.
this.config = $.extend({}, this.defaults, this.options, this.metadata);
this.$nav = this.$elem.find(this.config.navItems);
//Filter any links out of the nav
if(this.config.filter !== '') {
this.$nav = this.$nav.filter(this.config.filter);
}
//Handle clicks on the nav
this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this));
//Get the section positions
this.getPositions();
//Handle scroll changes
this.bindInterval();
//Update the positions on resize too
this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this));
return this;
},
adjustNav: function(self, $parent) {
self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
$parent.addClass(self.config.currentClass);
},
bindInterval: function() {
var self = this;
var docHeight;
self.$win.on('scroll.onePageNav', function() {
self.didScroll = true;
});
self.t = setInterval(function() {
docHeight = self.$doc.height();
//If it was scrolled
if(self.didScroll) {
self.didScroll = false;
self.scrollChange();
}
//If the document height changes
if(docHeight !== self.docHeight) {
self.docHeight = docHeight;
self.getPositions();
}
}, 250);
},
getHash: function($link) {
return $link.attr('href').split('#')[1];
},
getPositions: function() {
var self = this;
var linkHref;
var topPos;
var $target;
self.$nav.each(function() {
linkHref = self.getHash($(this));
$target = $('#' + linkHref);
if($target.length) {
topPos = $target.offset().top;
self.sections[linkHref] = Math.round(topPos);
}
});
},
getSection: function(windowPos) {
var returnValue = null;
var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
for(var section in this.sections) {
if((this.sections[section] - windowHeight) < windowPos) {
returnValue = section;
}
}
return returnValue;
},
handleClick: function(e) {
var self = this;
var $link = $(e.currentTarget);
var $parent = $link.parent();
var newLoc = '#' + self.getHash($link);
if(!$parent.hasClass(self.config.currentClass)) {
//Start callback
if(self.config.begin) {
self.config.begin();
}
//Change the highlighted nav item
self.adjustNav(self, $parent);
//Removing the auto-adjust on scroll
self.unbindInterval();
//Scroll to the correct position
self.scrollTo(newLoc, function() {
//Do we need to change the hash?
if(self.config.changeHash) {
window.location.hash = newLoc;
}
//Add the auto-adjust on scroll back in
self.bindInterval();
//End callback
if(self.config.end) {
self.config.end();
}
});
}
e.preventDefault();
},
scrollChange: function() {
var windowTop = this.$win.scrollTop();
var position = this.getSection(windowTop);
var $parent;
//If the position is set
if(position !== null) {
$parent = this.$elem.find('a[href$="#' + position + '"]').parent();
//If it's not already the current section
if(!$parent.hasClass(this.config.currentClass)) {
//Change the highlighted nav item
this.adjustNav(this, $parent);
//If there is a scrollChange callback
if(this.config.scrollChange) {
this.config.scrollChange($parent);
}
}
}
},
scrollTo: function(target, callback) {
var offset = $(target).offset().top;
$('html, body').animate({
scrollTop: offset
}, this.config.scrollSpeed, this.config.easing, callback);
},
unbindInterval: function() {
clearInterval(this.t);
this.$win.unbind('scroll.onePageNav');
}
};
OnePageNav.defaults = OnePageNav.prototype.defaults;
$.fn.onePageNav = function(options) {
return this.each(function() {
new OnePageNav(this, options).init();
});
};
})( jQuery, window , document );

View File

@@ -0,0 +1,471 @@
/*!
* SlickNav Responsive Mobile Menu v1.0.4
* (c) 2015 Josh Cope
* licensed under MIT
*/
;(function ($, document, window) {
var
// default settings object.
defaults = {
label: 'MENU',
duplicate: true,
duration: 200,
easingOpen: 'swing',
easingClose: 'swing',
closedSymbol: '&#9658;',
openedSymbol: '&#9660;',
prependTo: 'body',
parentTag: 'a',
closeOnClick: false,
allowParentLinks: false,
nestedParentLinks: true,
showChildren: false,
removeIds: false,
removeClasses: false,
brand: '',
init: function () {},
beforeOpen: function () {},
beforeClose: function () {},
afterOpen: function () {},
afterClose: function () {}
},
mobileMenu = 'slicknav',
prefix = 'slicknav';
function Plugin(element, options) {
this.element = element;
// jQuery has an extend method which merges the contents of two or
// more objects, storing the result in the first object. The first object
// is generally empty as we don't want to alter the default options for
// future instances of the plugin
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = mobileMenu;
this.init();
}
Plugin.prototype.init = function () {
var $this = this,
menu = $(this.element),
settings = this.settings,
iconClass,
menuBar;
// clone menu if needed
if (settings.duplicate) {
$this.mobileNav = menu.clone();
//remove ids from clone to prevent css issues
$this.mobileNav.removeAttr('id');
$this.mobileNav.find('*').each(function (i, e) {
$(e).removeAttr('id');
});
} else {
$this.mobileNav = menu;
// remove ids if set
$this.mobileNav.removeAttr('id');
$this.mobileNav.find('*').each(function (i, e) {
$(e).removeAttr('id');
});
}
// remove classes if set
if (settings.removeClasses) {
$this.mobileNav.removeAttr('class');
$this.mobileNav.find('*').each(function (i, e) {
$(e).removeAttr('class');
});
}
// styling class for the button
iconClass = prefix + '_icon';
if (settings.label === '') {
iconClass += ' ' + prefix + '_no-text';
}
if (settings.parentTag == 'a') {
settings.parentTag = 'a href="#"';
}
// create menu bar
$this.mobileNav.attr('class', prefix + '_nav');
menuBar = $('<div class="' + prefix + '_menu"></div>');
if (settings.brand !== '') {
var brand = $('<div class="' + prefix + '_brand">'+settings.brand+'</div>');
$(menuBar).append(brand);
}
$this.btn = $(
['<' + settings.parentTag + ' aria-haspopup="true" tabindex="0" class="' + prefix + '_btn ' + prefix + '_collapsed">',
'<span class="' + prefix + '_menutxt">' + settings.label + '</span>',
'<span class="' + iconClass + '">',
'<span class="' + prefix + '_icon-bar"></span>',
'<span class="' + prefix + '_icon-bar"></span>',
'<span class="' + prefix + '_icon-bar"></span>',
'</span>',
'</' + settings.parentTag + '>'
].join('')
);
$(menuBar).append($this.btn);
$(settings.prependTo).prepend(menuBar);
menuBar.append($this.mobileNav);
// iterate over structure adding additional structure
var items = $this.mobileNav.find('li');
$(items).each(function () {
var item = $(this),
data = {};
data.children = item.children('ul').attr('role', 'menu');
item.data('menu', data);
// if a list item has a nested menu
if (data.children.length > 0) {
// select all text before the child menu
// check for anchors
var a = item.contents(),
containsAnchor = false,
nodes = [];
$(a).each(function () {
if (!$(this).is('ul')) {
nodes.push(this);
} else {
return false;
}
if($(this).is("a")) {
containsAnchor = true;
}
});
var wrapElement = $(
'<' + settings.parentTag + ' role="menuitem" aria-haspopup="true" tabindex="-1" class="' + prefix + '_item"/>'
);
// wrap item text with tag and add classes unless we are separating parent links
if ((!settings.allowParentLinks || settings.nestedParentLinks) || !containsAnchor) {
var $wrap = $(nodes).wrapAll(wrapElement).parent();
$wrap.addClass(prefix+'_row');
} else
$(nodes).wrapAll('<span class="'+prefix+'_parent-link '+prefix+'_row"/>').parent();
if (!settings.showChildren) {
item.addClass(prefix+'_collapsed');
} else {
item.addClass(prefix+'_open');
}
item.addClass(prefix+'_parent');
// create parent arrow. wrap with link if parent links and separating
var arrowElement = $('<span class="'+prefix+'_arrow">'+(settings.showChildren?settings.openedSymbol:settings.closedSymbol)+'</span>');
if (settings.allowParentLinks && !settings.nestedParentLinks && containsAnchor)
arrowElement = arrowElement.wrap(wrapElement).parent();
//append arrow
$(nodes).last().after(arrowElement);
} else if ( item.children().length === 0) {
item.addClass(prefix+'_txtnode');
}
// accessibility for links
item.children('a').attr('role', 'menuitem').click(function(event){
//Ensure that it's not a parent
if (settings.closeOnClick && !$(event.target).parent().closest('li').hasClass(prefix+'_parent')) {
//Emulate menu close if set
$($this.btn).click();
}
});
//also close on click if parent links are set
if (settings.closeOnClick && settings.allowParentLinks) {
item.children('a').children('a').click(function (event) {
//Emulate menu close
$($this.btn).click();
});
item.find('.'+prefix+'_parent-link a:not(.'+prefix+'_item)').click(function(event){
//Emulate menu close
$($this.btn).click();
});
}
});
// structure is in place, now hide appropriate items
$(items).each(function () {
var data = $(this).data('menu');
if (!settings.showChildren){
$this._visibilityToggle(data.children, null, false, null, true);
}
});
// finally toggle entire menu
$this._visibilityToggle($this.mobileNav, null, false, 'init', true);
// accessibility for menu button
$this.mobileNav.attr('role','menu');
// outline prevention when using mouse
$(document).mousedown(function(){
$this._outlines(false);
});
$(document).keyup(function(){
$this._outlines(true);
});
// menu button click
$($this.btn).click(function (e) {
e.preventDefault();
$this._menuToggle();
});
// click on menu parent
$this.mobileNav.on('click', '.' + prefix + '_item', function (e) {
e.preventDefault();
$this._itemClick($(this));
});
// check for enter key on menu button and menu parents
$($this.btn).keydown(function (e) {
var ev = e || event;
if(ev.keyCode == 13) {
e.preventDefault();
$this._menuToggle();
}
});
$this.mobileNav.on('keydown', '.'+prefix+'_item', function(e) {
var ev = e || event;
if(ev.keyCode == 13) {
e.preventDefault();
$this._itemClick($(e.target));
}
});
// allow links clickable within parent tags if set
if (settings.allowParentLinks && settings.nestedParentLinks) {
$('.'+prefix+'_item a').click(function(e){
e.stopImmediatePropagation();
});
}
};
//toggle menu
Plugin.prototype._menuToggle = function (el) {
var $this = this;
var btn = $this.btn;
var mobileNav = $this.mobileNav;
if (btn.hasClass(prefix+'_collapsed')) {
btn.removeClass(prefix+'_collapsed');
btn.addClass(prefix+'_open');
} else {
btn.removeClass(prefix+'_open');
btn.addClass(prefix+'_collapsed');
}
btn.addClass(prefix+'_animating');
$this._visibilityToggle(mobileNav, btn.parent(), true, btn);
};
// toggle clicked items
Plugin.prototype._itemClick = function (el) {
var $this = this;
var settings = $this.settings;
var data = el.data('menu');
if (!data) {
data = {};
data.arrow = el.children('.'+prefix+'_arrow');
data.ul = el.next('ul');
data.parent = el.parent();
//Separated parent link structure
if (data.parent.hasClass(prefix+'_parent-link')) {
data.parent = el.parent().parent();
data.ul = el.parent().next('ul');
}
el.data('menu', data);
}
if (data.parent.hasClass(prefix+'_collapsed')) {
data.arrow.html(settings.openedSymbol);
data.parent.removeClass(prefix+'_collapsed');
data.parent.addClass(prefix+'_open');
data.parent.addClass(prefix+'_animating');
$this._visibilityToggle(data.ul, data.parent, true, el);
} else {
data.arrow.html(settings.closedSymbol);
data.parent.addClass(prefix+'_collapsed');
data.parent.removeClass(prefix+'_open');
data.parent.addClass(prefix+'_animating');
$this._visibilityToggle(data.ul, data.parent, true, el);
}
};
// toggle actual visibility and accessibility tags
Plugin.prototype._visibilityToggle = function(el, parent, animate, trigger, init) {
var $this = this;
var settings = $this.settings;
var items = $this._getActionItems(el);
var duration = 0;
if (animate) {
duration = settings.duration;
}
if (el.hasClass(prefix+'_hidden')) {
el.removeClass(prefix+'_hidden');
//Fire beforeOpen callback
if (!init) {
settings.beforeOpen(trigger);
}
el.slideDown(duration, settings.easingOpen, function(){
$(trigger).removeClass(prefix+'_animating');
$(parent).removeClass(prefix+'_animating');
//Fire afterOpen callback
if (!init) {
settings.afterOpen(trigger);
}
});
el.attr('aria-hidden','false');
items.attr('tabindex', '0');
$this._setVisAttr(el, false);
} else {
el.addClass(prefix+'_hidden');
//Fire init or beforeClose callback
if (!init){
settings.beforeClose(trigger);
}
el.slideUp(duration, this.settings.easingClose, function() {
el.attr('aria-hidden','true');
items.attr('tabindex', '-1');
$this._setVisAttr(el, true);
el.hide(); //jQuery 1.7 bug fix
$(trigger).removeClass(prefix+'_animating');
$(parent).removeClass(prefix+'_animating');
//Fire init or afterClose callback
if (!init){
settings.afterClose(trigger);
} else if (trigger == 'init'){
settings.init();
}
});
}
};
// set attributes of element and children based on visibility
Plugin.prototype._setVisAttr = function(el, hidden) {
var $this = this;
// select all parents that aren't hidden
var nonHidden = el.children('li').children('ul').not('.'+prefix+'_hidden');
// iterate over all items setting appropriate tags
if (!hidden) {
nonHidden.each(function(){
var ul = $(this);
ul.attr('aria-hidden','false');
var items = $this._getActionItems(ul);
items.attr('tabindex', '0');
$this._setVisAttr(ul, hidden);
});
} else {
nonHidden.each(function(){
var ul = $(this);
ul.attr('aria-hidden','true');
var items = $this._getActionItems(ul);
items.attr('tabindex', '-1');
$this._setVisAttr(ul, hidden);
});
}
};
// get all 1st level items that are clickable
Plugin.prototype._getActionItems = function(el) {
var data = el.data("menu");
if (!data) {
data = {};
var items = el.children('li');
var anchors = items.find('a');
data.links = anchors.add(items.find('.'+prefix+'_item'));
el.data('menu', data);
}
return data.links;
};
Plugin.prototype._outlines = function(state) {
if (!state) {
$('.'+prefix+'_item, .'+prefix+'_btn').css('outline','none');
} else {
$('.'+prefix+'_item, .'+prefix+'_btn').css('outline','');
}
};
Plugin.prototype.toggle = function(){
var $this = this;
$this._menuToggle();
};
Plugin.prototype.open = function(){
var $this = this;
if ($this.btn.hasClass(prefix+'_collapsed')) {
$this._menuToggle();
}
};
Plugin.prototype.close = function(){
var $this = this;
if ($this.btn.hasClass(prefix+'_open')) {
$this._menuToggle();
}
};
$.fn[mobileMenu] = function ( options ) {
var args = arguments;
// Is the first parameter an object (options), or was omitted, instantiate a new instance
if (options === undefined || typeof options === 'object') {
return this.each(function () {
// Only allow the plugin to be instantiated once due to methods
if (!$.data(this, 'plugin_' + mobileMenu)) {
// if it has no instance, create a new one, pass options to our plugin constructor,
// and store the plugin instance in the elements jQuery data object.
$.data(this, 'plugin_' + mobileMenu, new Plugin( this, options ));
}
});
// If is a string and doesn't start with an underscore or 'init' function, treat this as a call to a public method.
} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
// Cache the method call to make it possible to return a value
var returns;
this.each(function () {
var instance = $.data(this, 'plugin_' + mobileMenu);
// Tests that there's already a plugin-instance and checks that the requested public method exists
if (instance instanceof Plugin && typeof instance[options] === 'function') {
// Call the method of our plugin instance, and pass it the supplied arguments.
returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
}
});
// If the earlier cached method gives a value back return the value, otherwise return this to preserve chainability.
return returns !== undefined ? returns : this;
}
};
}(jQuery, document, window));

View File

@@ -0,0 +1,80 @@
(function($) {
"use strict";
$(window).on('load', function() {
/* Page Loader active
========================================================*/
$('#preloader').fadeOut();
// Sticky Nav
$(window).on('scroll', function() {
if ($(window).scrollTop() > 200) {
$('.scrolling-navbar').addClass('top-nav-collapse');
} else {
$('.scrolling-navbar').removeClass('top-nav-collapse');
}
});
/* slicknav mobile menu active */
$('.mobile-menu').slicknav({
prependTo: '.navbar-header',
parentTag: 'liner',
allowParentLinks: true,
duplicate: true,
label: '',
closedSymbol: '<i class="icon-arrow-right"></i>',
openedSymbol: '<i class="icon-arrow-down"></i>',
});
/* ==========================================================================
countdown timer
========================================================================== */
if(!ln['until'].includes("/")) {
ln['until'] = new Date().getTime() + (ln['until'] * 1000);
}
jQuery('#clock').countdown(ln['until'],function(event){
var $this=jQuery(this).html(event.strftime(''
+'<div class="time-entry days"><span>%-D</span> '+ln['days']+'</div> '
+'<div class="time-entry hours"><span>%H</span> '+ln['hours']+'</div> '
+'<div class="time-entry minutes"><span>%M</span> '+ln['minutes']+'</div> '
+'<div class="time-entry seconds"><span>%S</span> '+ln['seconds']+'</div> '));
});
/* WOW Scroll Spy
========================================================*/
var wow = new WOW({
//disabled for mobile
mobile: false
});
wow.init();
// one page navigation
$('.onepage-nev').onePageNav({
currentClass: 'active'
});
/* Back Top Link active
========================================================*/
var offset = 200;
var duration = 500;
$(window).scroll(function() {
if ($(this).scrollTop() > offset) {
$('.back-to-top').fadeIn(400);
} else {
$('.back-to-top').fadeOut(400);
}
});
$('.back-to-top').on('click',function(event) {
event.preventDefault();
$('html, body').animate({
scrollTop: 0
}, 600);
return false;
});
});
}(jQuery));

225
f_offline/assets/js/map.js Normal file
View File

@@ -0,0 +1,225 @@
jQuery(document).ready(function($) {
'use strict';
//set your google maps parameters
var $latitude = 39.742043,
$longitude = -104.991531,
$map_zoom = 14;
//google map custom marker icon - .png fallback for IE11
var is_internetExplorer11= navigator.userAgent.toLowerCase().indexOf('trident') > -1;
var $marker_url = ( is_internetExplorer11 ) ? 'img/map-marker.png' : 'assets/img/map-marker.png';
//define the basic color of your map, plus a value for saturation and brightness
var $main_color = '#2d313f',
$saturation= -20,
$brightness= 5;
//we define here the style of the map
var style= [
{
//set saturation for the labels on the map
elementType: "labels",
stylers: [
{saturation: $saturation}
]
},
{ //poi stands for point of interest - don't show these lables on the map
featureType: "poi",
elementType: "labels",
stylers: [
{visibility: "off"}
]
},
{
//don't show highways lables on the map
featureType: 'road.highway',
elementType: 'labels',
stylers: [
{visibility: "off"}
]
},
{
//don't show local road lables on the map
featureType: "road.local",
elementType: "labels.icon",
stylers: [
{visibility: "off"}
]
},
{
//don't show arterial road lables on the map
featureType: "road.arterial",
elementType: "labels.icon",
stylers: [
{visibility: "off"}
]
},
{
//don't show road lables on the map
featureType: "road",
elementType: "geometry.stroke",
stylers: [
{visibility: "off"}
]
},
//style different elements on the map
{
featureType: "transit",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "poi",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "poi.government",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "poi.sport_complex",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "poi.attraction",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "poi.business",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "transit",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "transit.station",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "landscape",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "road",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "road.highway",
elementType: "geometry.fill",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
},
{
featureType: "water",
elementType: "geometry",
stylers: [
{ hue: $main_color },
{ visibility: "on" },
{ lightness: $brightness },
{ saturation: $saturation }
]
}
];
//set google map options
var map_options = {
center: new google.maps.LatLng($latitude, $longitude),
zoom: $map_zoom,
panControl: false,
zoomControl: false,
mapTypeControl: false,
streetViewControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false,
styles: style,
}
//inizialize the map
var map = new google.maps.Map(document.getElementById('conatiner-map'), map_options);
//add a custom marker to the map
var marker = new google.maps.Marker({
position: new google.maps.LatLng($latitude, $longitude),
map: map,
visible: true,
icon: $marker_url,
});
//add custom buttons for the zoom-in/zoom-out on the map
function CustomZoomControl(controlDiv, map) {
//grap the zoom elements from the DOM and insert them in the map
var controlUIzoomIn= document.getElementById('cd-zoom-in'),
controlUIzoomOut= document.getElementById('cd-zoom-out');
}
var zoomControlDiv = document.createElement('div');
var zoomControl = new CustomZoomControl(zoomControlDiv, map);
//insert the zoom div on the top left of the map
map.controls[google.maps.ControlPosition.LEFT_TOP].push(zoomControlDiv);
});

View File

@@ -0,0 +1,42 @@
/**
* main.js
* http://www.codrops.com
*
* Licensed under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*
* Copyright 2014, Codrops
* http://www.codrops.com
*/
(function() {
var bodyEl = document.body,
content = document.querySelector( '.content-wrap' ),
openbtn = document.getElementById( 'open-button' ),
closebtn = document.getElementById( 'close-button' ),
isOpen = false;
function init() {
initEvents();
}
function initEvents() {
openbtn.addEventListener( 'click', toggleMenu );
if( closebtn ) {
closebtn.addEventListener( 'click', toggleMenu );
}
}
function toggleMenu() {
if( isOpen ) {
classie.remove( bodyEl, 'show-menu' );
}
else {
classie.add( bodyEl, 'show-menu' );
}
isOpen = !isOpen;
}
init();
})();

5
f_offline/assets/js/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,19 @@
//jQuery to collapse the navbar on scroll
$(window).scroll(function() {
if ($(".navbar").offset().top > 50) {
$(".navbar-fixed-top").addClass("top-nav-collapse");
} else {
$(".navbar-fixed-top").removeClass("top-nav-collapse");
}
});
//jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
$(document).on('click', 'a.page-scroll', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 1500, 'easeInOutExpo');
event.preventDefault();
});
});

2
f_offline/assets/js/vegas.min.js vendored Normal file

File diff suppressed because one or more lines are too long

184
f_offline/assets/js/wow.js Normal file
View File

@@ -0,0 +1,184 @@
(function() {
var Util,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
Util = (function() {
function Util() {}
Util.prototype.extend = function(custom, defaults) {
var key, value;
for (key in custom) {
value = custom[key];
if (value != null) {
defaults[key] = value;
}
}
return defaults;
};
Util.prototype.isMobile = function(agent) {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
};
return Util;
})();
this.WOW = (function() {
WOW.prototype.defaults = {
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true
};
function WOW(options) {
if (options == null) {
options = {};
}
this.scrollCallback = __bind(this.scrollCallback, this);
this.scrollHandler = __bind(this.scrollHandler, this);
this.start = __bind(this.start, this);
this.scrolled = true;
this.config = this.util().extend(options, this.defaults);
}
WOW.prototype.init = function() {
var _ref;
this.element = window.document.documentElement;
this.boxes = this.element.getElementsByClassName(this.config.boxClass);
if (this.boxes.length) {
if (this.disabled()) {
return this.resetStyle();
} else {
if ((_ref = document.readyState) === "interactive" || _ref === "complete") {
return this.start();
} else {
return document.addEventListener('DOMContentLoaded', this.start);
}
}
}
};
WOW.prototype.start = function() {
var box, _i, _len, _ref;
_ref = this.boxes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
this.applyStyle(box, true);
}
window.addEventListener('scroll', this.scrollHandler, false);
window.addEventListener('resize', this.scrollHandler, false);
return this.interval = setInterval(this.scrollCallback, 50);
};
WOW.prototype.stop = function() {
window.removeEventListener('scroll', this.scrollHandler, false);
window.removeEventListener('resize', this.scrollHandler, false);
if (this.interval != null) {
return clearInterval(this.interval);
}
};
WOW.prototype.show = function(box) {
this.applyStyle(box);
return box.className = "" + box.className + " " + this.config.animateClass;
};
WOW.prototype.applyStyle = function(box, hidden) {
var delay, duration, iteration;
duration = box.getAttribute('data-wow-duration');
delay = box.getAttribute('data-wow-delay');
iteration = box.getAttribute('data-wow-iteration');
return box.setAttribute('style', this.customStyle(hidden, duration, delay, iteration));
};
WOW.prototype.resetStyle = function() {
var box, _i, _len, _ref, _results;
_ref = this.boxes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
_results.push(box.setAttribute('style', 'visibility: visible;'));
}
return _results;
};
WOW.prototype.customStyle = function(hidden, duration, delay, iteration) {
var style;
style = hidden ? "visibility: hidden; -webkit-animation-name: none; -moz-animation-name: none; animation-name: none;" : "visibility: visible;";
if (duration) {
style += "-webkit-animation-duration: " + duration + "; -moz-animation-duration: " + duration + "; animation-duration: " + duration + ";";
}
if (delay) {
style += "-webkit-animation-delay: " + delay + "; -moz-animation-delay: " + delay + "; animation-delay: " + delay + ";";
}
if (iteration) {
style += "-webkit-animation-iteration-count: " + iteration + "; -moz-animation-iteration-count: " + iteration + "; animation-iteration-count: " + iteration + ";";
}
return style;
};
WOW.prototype.scrollHandler = function() {
return this.scrolled = true;
};
WOW.prototype.scrollCallback = function() {
var box;
if (this.scrolled) {
this.scrolled = false;
this.boxes = (function() {
var _i, _len, _ref, _results;
_ref = this.boxes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
box = _ref[_i];
if (!(box)) {
continue;
}
if (this.isVisible(box)) {
this.show(box);
continue;
}
_results.push(box);
}
return _results;
}).call(this);
if (!this.boxes.length) {
return this.stop();
}
}
};
WOW.prototype.offsetTop = function(element) {
var top;
top = element.offsetTop;
while (element = element.offsetParent) {
top += element.offsetTop;
}
return top;
};
WOW.prototype.isVisible = function(box) {
var bottom, offset, top, viewBottom, viewTop;
offset = box.getAttribute('data-wow-offset') || this.config.offset;
viewTop = window.pageYOffset;
viewBottom = viewTop + this.element.clientHeight - offset;
top = this.offsetTop(box);
bottom = top + box.clientHeight;
return top <= viewBottom && bottom >= viewTop;
};
WOW.prototype.util = function() {
return this._util || (this._util = new Util());
};
WOW.prototype.disabled = function() {
return this.config.mobile === false && this.util().isMobile(navigator.userAgent);
};
return WOW;
})();
}).call(this);