278 lines
7.9 KiB
JavaScript
278 lines
7.9 KiB
JavaScript
'use strict';
|
|
|
|
// Init all plugin when document is ready
|
|
$(document).on('ready', function () {
|
|
// 0. Init console to avoid error
|
|
var method;
|
|
var noop = function () { };
|
|
var methods = [
|
|
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
|
|
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
|
|
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
|
|
'timeStamp', 'trace', 'warn'
|
|
];
|
|
var length = methods.length;
|
|
var console = (window.console = window.console || {});
|
|
var contextWindow = $(window);
|
|
var $root = $('html, body');
|
|
while (length--) {
|
|
method = methods[length];
|
|
// Only stub undefined methods.
|
|
if (!console[method]) {
|
|
console[method] = noop;
|
|
}
|
|
}
|
|
|
|
// 1. Background image as data attribut
|
|
var list = $('.bg-img');
|
|
for (var i = 0; i < list.length; i++) {
|
|
var src = list[i].getAttribute('data-image-src');
|
|
list[i].style.backgroundImage = "url('" + src + "')";
|
|
list[i].style.backgroundRepeat = "no-repeat";
|
|
list[i].style.backgroundPosition = "center";
|
|
list[i].style.backgroundSize = "cover";
|
|
}
|
|
// Background color as data attribut
|
|
var list = $('.bg-color');
|
|
for (var i = 0; i < list.length; i++) {
|
|
var src = list[i].getAttribute('data-bgcolor');
|
|
list[i].style.backgroundColor = src;
|
|
}
|
|
|
|
// 2. Init Coutdown clock
|
|
try {
|
|
// check if clock is initialised
|
|
$('.clock-countdown').downCount({
|
|
date: $('.site-config').attr('data-date'),
|
|
offset: +10
|
|
});
|
|
}
|
|
catch (error) {
|
|
// Clock error : clock is unavailable
|
|
console.log("clock disabled/unavailable");
|
|
}
|
|
|
|
// 3. Show/hide menu when icon is clicked
|
|
var menuItems = $('.top-menu-links, .main-menu');
|
|
var menuIcon = $('.menu-icon, #menu-link');
|
|
var menuLinks = $(".top-menu-links a, .main-menu a");
|
|
// Menu icon clicked
|
|
menuIcon.on('click', function () {
|
|
menuIcon.toggleClass('menu-visible')
|
|
menuItems.toggleClass('menu-visible');
|
|
return false;
|
|
});
|
|
|
|
// Hide menu after a menu item clicked
|
|
menuLinks.on('click', function () {
|
|
if (menuItems.hasClass('menu-visible')) {
|
|
menuIcon.removeClass('menu-visible');
|
|
menuItems.removeClass('menu-visible');
|
|
}
|
|
return true;
|
|
});
|
|
|
|
// 4. Slider / Slideshow
|
|
// 4.a Slideshow background
|
|
var imageList = $('.slide-show .img');
|
|
var imageSlides = [];
|
|
for (var i = 0; i < imageList.length; i++) {
|
|
var src = imageList[i].getAttribute('data-src');
|
|
imageSlides.push({ src: src });
|
|
}
|
|
$('.slide-show').vegas({
|
|
delay: 5000,
|
|
shuffle: true,
|
|
slides: imageSlides,
|
|
animation: ['kenburnsUp', 'kenburnsDown', 'kenburnsLeft', 'kenburnsRight']
|
|
});
|
|
|
|
// 4.b Products/Projects/items slider
|
|
var swiper = new Swiper('.swiper-container', {
|
|
pagination: '.items-pagination',
|
|
paginationClickable: '.items-pagination',
|
|
nextButton: '.items-button-next',
|
|
prevButton: '.items-button-prev',
|
|
grabCursor: true,
|
|
slidesPerView: 1,
|
|
centeredSlides: true,
|
|
spaceBetween: 0,
|
|
breakpoints: {
|
|
1024: {
|
|
slidesPerView: 1,
|
|
},
|
|
800: {
|
|
slidesPerView: 1,
|
|
spaceBetween: 32
|
|
},
|
|
640: {
|
|
slidesPerView: 1,
|
|
spaceBetween: 32
|
|
},
|
|
440: {
|
|
slidesPerView: 1,
|
|
spaceBetween: 32
|
|
}
|
|
}
|
|
});
|
|
|
|
// 5. Init video background
|
|
var videoBg = $('.video-container video, .video-container object');
|
|
videoBg.maximage('maxcover');
|
|
|
|
// 6. Prepare titles, content for animation
|
|
$('.section .content .anim .title h2, .section .content .anim .title h3, .section .content .anim .desc p, \
|
|
.section .content .anim .title-desc h2, .section .content .anim .title-desc h3, .section .content .anim .title-desc h4, .section .content .anim .item-desc h3,.section .content .anim .title-desc p, \
|
|
.cta-btns .btn').wrap("<span class='anim-wrapper'></span>");
|
|
|
|
// 7. Init fullPage.js plugin
|
|
var pageSectionDivs = $('.fullpg .section');
|
|
var headerLogo = $('.header-top .logo');
|
|
var bodySelector = $('body');
|
|
var sectionSelector = $('.section');
|
|
var headerContainer = $('.hh-header');
|
|
var slideElem = $('.slide');
|
|
var arrowElem = $('.p-footer .arrow-d');
|
|
var pageElem = $('.section');
|
|
var pageSections = [];
|
|
var pageAnchors = [];
|
|
var nextSectionDOM;
|
|
var nextSection;
|
|
var fpnavItem;
|
|
var mainPage = $('#mainpage');
|
|
var sendEmailForm = $('.send_email_form');
|
|
var sendMessageForm = $('.send_message_form');
|
|
var scrollOverflow = true;
|
|
// disable scroll overflow on small device
|
|
if (contextWindow.width() < 601) {
|
|
scrollOverflow = false;
|
|
}
|
|
else {
|
|
scrollOverflow = true;
|
|
}
|
|
// Get sections name
|
|
for (var i = 0; i < pageSectionDivs.length; i++) {
|
|
pageSections.push(pageSectionDivs[i]);
|
|
}
|
|
window.asyncEach(pageSections, function (pageSection, cb) {
|
|
var anchor = pageSection.getAttribute('data-section');
|
|
pageAnchors.push(anchor + "");
|
|
cb();
|
|
}, function (err) {
|
|
// Init plugin
|
|
if (mainPage.height()) {
|
|
// config fullpage.js
|
|
mainPage.fullpage({
|
|
menu: '#qmenu',
|
|
anchors: pageAnchors,
|
|
verticalCentered: false,
|
|
css3: true,
|
|
navigation: true,
|
|
responsiveWidth: 601,
|
|
responsiveHeight: 480,
|
|
scrollOverflow: scrollOverflow,
|
|
scrollOverflowOptions: {
|
|
click: true,
|
|
submit: true,
|
|
},
|
|
afterRender: function () {
|
|
// Fix video background
|
|
videoBg.maximage('maxcover');
|
|
|
|
// Fix for internet explorer : adjust content height
|
|
// Detect IE 6-11
|
|
var isIE = /*@cc_on!@*/false || !!document.documentMode;
|
|
if (isIE){
|
|
var contentColumns = $('.section .content .c-columns');
|
|
contentColumns.height(contextWindow.height())
|
|
for (var i = 0; i < contentColumns.length; i++) {
|
|
if (contentColumns[i].height <= contextWindow.height()) {
|
|
contentColumns[i].style.height = "100vh";
|
|
}
|
|
}
|
|
}
|
|
|
|
// init contact form
|
|
// Default server url
|
|
var newsletterServerUrl = './ajaxserver/serverfile.php';
|
|
var messageServerUrl = './ajaxserver/serverfile.php';
|
|
|
|
// Use form define action attribute
|
|
if (sendEmailForm.attr('action') && (sendEmailForm.attr('action')) != '') {
|
|
newsletterServerUrl = sendEmailForm.attr('action');
|
|
}
|
|
if (sendMessageForm.attr('action') && (sendMessageForm.attr('action') != '')) {
|
|
messageServerUrl = sendMessageForm.attr('action');
|
|
}
|
|
|
|
sendEmailForm.initForm({
|
|
serverUrl: newsletterServerUrl,
|
|
});
|
|
sendMessageForm.initForm({
|
|
serverUrl: messageServerUrl,
|
|
});
|
|
|
|
},
|
|
afterResize: function () {
|
|
var pluginContainer = $(this);
|
|
$.fn.fullpage.reBuild();
|
|
},
|
|
onLeave: function (index, nextIndex, direction) {
|
|
// Behavior when a full page is leaved
|
|
arrowElem.addClass('gone');
|
|
pageElem.addClass('transition');
|
|
slideElem.removeClass('transition');
|
|
pageElem.removeClass('transition');
|
|
},
|
|
afterLoad: function (anchorLink, index) {
|
|
// Behavior after a full page is loaded
|
|
// hide or show clock
|
|
if ($('.section.active').hasClass('hide-clock')) {
|
|
headerContainer.addClass('gone');
|
|
} else {
|
|
headerContainer.removeClass('gone');
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
});
|
|
// Scroll to fullPage.js next/previous section
|
|
$('.scrolldown a, .scroll.down').on('click', function () {
|
|
try {
|
|
// fullpage scroll
|
|
$.fn.fullpage.moveSectionDown();
|
|
} catch (error) {
|
|
// normal scroll
|
|
$root.animate({
|
|
scrollTop: window.innerHeight
|
|
}, 400, function () {
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
// 8. Hide some ui on scroll
|
|
var scrollHeight = $(document).height() - contextWindow.height();
|
|
contextWindow.on('scroll', function () {
|
|
var scrollpos = $(this).scrollTop();
|
|
var siteHeaderFooter = $('.site-footer, .header-top');
|
|
|
|
if (scrollpos > 10 && scrollpos < scrollHeight - 100) {
|
|
siteHeaderFooter.addClass("scrolled");
|
|
}
|
|
else {
|
|
siteHeaderFooter.removeClass("scrolled");
|
|
}
|
|
});
|
|
|
|
|
|
// 9. Page Loader : hide loader when all are loaded
|
|
contextWindow.on('load', function () {
|
|
$('#page-loader').addClass('p-hidden');
|
|
$('.section').addClass('anim');
|
|
});
|
|
|
|
});
|
|
|