426 lines
10 KiB
JavaScript
426 lines
10 KiB
JavaScript
/* ===================================================================
|
|
* Infinity - Main JS
|
|
*
|
|
* ------------------------------------------------------------------- */
|
|
|
|
(function($) {
|
|
|
|
"use strict";
|
|
|
|
var cfg = {
|
|
defAnimation : "fadeInUp", // default css animation
|
|
scrollDuration : 800, // smoothscroll duration
|
|
mailChimpURL : 'http://facebook.us8.list-manage.com/subscribe/post?u=cdb7b577e41181934ed6a6a44&id=e65110b38d'
|
|
},
|
|
|
|
$WIN = $(window);
|
|
|
|
|
|
// Add the User Agent to the <html>
|
|
// will be used for IE10 detection (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0))
|
|
var doc = document.documentElement;
|
|
doc.setAttribute('data-useragent', navigator.userAgent);
|
|
|
|
|
|
/* Preloader
|
|
* -------------------------------------------------- */
|
|
var ssPreloader = function() {
|
|
|
|
$WIN.on('load', function() {
|
|
|
|
// force page scroll position to top at page refresh
|
|
$('html, body').animate({ scrollTop: 0 }, 'normal');
|
|
|
|
// will first fade out the loading animation
|
|
$("#loader").fadeOut("slow", function(){
|
|
|
|
// will fade out the whole DIV that covers the website.
|
|
$("#preloader").delay(300).fadeOut("slow");
|
|
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
/* FitVids
|
|
------------------------------------------------------ */
|
|
var ssFitVids = function() {
|
|
$(".fluid-video-wrapper").fitVids();
|
|
};
|
|
|
|
|
|
/* Masonry
|
|
------------------------------------------------------ */
|
|
var ssMasonryFolio = function() {
|
|
|
|
var containerBricks = $('.bricks-wrapper');
|
|
|
|
containerBricks.imagesLoaded( function() {
|
|
containerBricks.masonry( {
|
|
itemSelector: '.brick',
|
|
resize: true
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
/* Light Gallery
|
|
------------------------------------------------------- */
|
|
var ssLightGallery = function() {
|
|
|
|
$('#folio-wrap').lightGallery({
|
|
showThumbByDefault: false,
|
|
hash: false,
|
|
selector: ".item-wrap"
|
|
});
|
|
};
|
|
|
|
|
|
/* Flexslider
|
|
* ------------------------------------------------------ */
|
|
var ssFlexSlider = function() {
|
|
|
|
$WIN.on('load', function() {
|
|
|
|
$('#testimonial-slider').flexslider({
|
|
namespace: "flex-",
|
|
controlsContainer: "",
|
|
animation: 'slide',
|
|
controlNav: true,
|
|
directionNav: false,
|
|
smoothHeight: true,
|
|
slideshowSpeed: 7000,
|
|
animationSpeed: 600,
|
|
randomize: false,
|
|
touch: true,
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* Carousel
|
|
* ------------------------------------------------------ */
|
|
var ssOwlCarousel = function() {
|
|
|
|
$(".owl-carousel").owlCarousel({
|
|
nav: false,
|
|
loop: true,
|
|
margin: 50,
|
|
responsiveClass:true,
|
|
responsive: {
|
|
0:{
|
|
items:2,
|
|
margin: 20
|
|
},
|
|
400:{
|
|
items:3,
|
|
margin: 30
|
|
},
|
|
600:{
|
|
items:4,
|
|
margin: 40
|
|
},
|
|
1000:{
|
|
items:6
|
|
}
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Menu on Scrolldown
|
|
* ------------------------------------------------------ */
|
|
var ssMenuOnScrolldown = function() {
|
|
|
|
var menuTrigger = $('#header-menu-trigger');
|
|
|
|
$WIN.on('scroll', function() {
|
|
|
|
if ($WIN.scrollTop() > 150) {
|
|
menuTrigger.addClass('opaque');
|
|
}
|
|
else {
|
|
menuTrigger.removeClass('opaque');
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
|
|
/* OffCanvas Menu
|
|
* ------------------------------------------------------ */
|
|
var ssOffCanvas = function() {
|
|
|
|
var menuTrigger = $('#header-menu-trigger'),
|
|
nav = $('#menu-nav-wrap'),
|
|
closeButton = nav.find('.close-button'),
|
|
siteBody = $('body'),
|
|
mainContents = $('section, footer');
|
|
|
|
// open-close menu by clicking on the menu icon
|
|
menuTrigger.on('click', function(e){
|
|
e.preventDefault();
|
|
menuTrigger.toggleClass('is-clicked');
|
|
siteBody.toggleClass('menu-is-open');
|
|
});
|
|
|
|
// close menu by clicking the close button
|
|
closeButton.on('click', function(e){
|
|
e.preventDefault();
|
|
menuTrigger.trigger('click');
|
|
});
|
|
|
|
// close menu clicking outside the menu itself
|
|
siteBody.on('click', function(e){
|
|
if( !$(e.target).is('#menu-nav-wrap, #header-menu-trigger, #header-menu-trigger span') ) {
|
|
menuTrigger.removeClass('is-clicked');
|
|
siteBody.removeClass('menu-is-open');
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* Smooth Scrolling
|
|
* ------------------------------------------------------ */
|
|
var ssSmoothScroll = function() {
|
|
|
|
$('.smoothscroll').on('click', function (e) {
|
|
var target = this.hash,
|
|
$target = $(target);
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
$('html, body').stop().animate({
|
|
'scrollTop': $target.offset().top
|
|
}, cfg.scrollDuration, 'swing').promise().done(function () {
|
|
|
|
// check if menu is open
|
|
if ($('body').hasClass('menu-is-open')) {
|
|
$('#header-menu-trigger').trigger('click');
|
|
}
|
|
|
|
window.location.hash = target;
|
|
});
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* Placeholder Plugin Settings
|
|
* ------------------------------------------------------ */
|
|
var ssPlaceholder = function() {
|
|
$('input, textarea, select').placeholder();
|
|
};
|
|
|
|
|
|
/* Alert Boxes
|
|
------------------------------------------------------- */
|
|
var ssAlertBoxes = function() {
|
|
|
|
$('.alert-box').on('click', '.close', function() {
|
|
$(this).parent().fadeOut(500);
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* Animations
|
|
* ------------------------------------------------------- */
|
|
var ssAnimations = function() {
|
|
|
|
if (!$("html").hasClass('no-cssanimations')) {
|
|
$('.animate-this').waypoint({
|
|
handler: function(direction) {
|
|
|
|
var defAnimationEfx = cfg.defAnimation;
|
|
|
|
if ( direction === 'down' && !$(this.element).hasClass('animated')) {
|
|
$(this.element).addClass('item-animate');
|
|
|
|
setTimeout(function() {
|
|
$('body .animate-this.item-animate').each(function(ctr) {
|
|
var el = $(this),
|
|
animationEfx = el.data('animate') || null;
|
|
|
|
if (!animationEfx) {
|
|
animationEfx = defAnimationEfx;
|
|
}
|
|
|
|
setTimeout( function () {
|
|
el.addClass(animationEfx + ' animated');
|
|
el.removeClass('item-animate');
|
|
}, ctr * 30);
|
|
|
|
});
|
|
}, 100);
|
|
}
|
|
|
|
// trigger once only
|
|
this.destroy();
|
|
},
|
|
offset: '95%'
|
|
});
|
|
}
|
|
|
|
};
|
|
|
|
|
|
/* Intro Animation
|
|
* ------------------------------------------------------- */
|
|
var ssIntroAnimation = function() {
|
|
|
|
$WIN.on('load', function() {
|
|
|
|
if (!$("html").hasClass('no-cssanimations')) {
|
|
setTimeout(function(){
|
|
$('.animate-intro').each(function(ctr) {
|
|
var el = $(this),
|
|
animationEfx = el.data('animate') || null;
|
|
|
|
if (!animationEfx) {
|
|
animationEfx = cfg.defAnimation;
|
|
}
|
|
|
|
setTimeout( function () {
|
|
el.addClass(animationEfx + ' animated');
|
|
}, ctr * 300);
|
|
});
|
|
}, 100);
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* Contact Form
|
|
* ------------------------------------------------------ */
|
|
var ssContactForm = function() {
|
|
|
|
/* local validation */
|
|
$('#contactForm').validate({
|
|
|
|
/* submit via ajax */
|
|
submitHandler: function(form) {
|
|
var sLoader = $('#submit-loader');
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "inc/sendEmail.php",
|
|
data: $(form).serialize(),
|
|
|
|
beforeSend: function() {
|
|
sLoader.fadeIn();
|
|
},
|
|
success: function(msg) {
|
|
// Message was sent
|
|
if (msg == 'OK') {
|
|
sLoader.fadeOut();
|
|
$('#message-warning').hide();
|
|
$('#contactForm').fadeOut();
|
|
$('#message-success').fadeIn();
|
|
}
|
|
// There was an error
|
|
else {
|
|
sLoader.fadeOut();
|
|
$('#message-warning').html(msg);
|
|
$('#message-warning').fadeIn();
|
|
}
|
|
},
|
|
error: function() {
|
|
sLoader.fadeOut();
|
|
$('#message-warning').html("Something went wrong. Please try again.");
|
|
$('#message-warning').fadeIn();
|
|
}
|
|
});
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
|
|
/* AjaxChimp
|
|
* ------------------------------------------------------ */
|
|
var ssAjaxChimp = function() {
|
|
|
|
$('#mc-form').ajaxChimp({
|
|
language: 'es',
|
|
url: cfg.mailChimpURL
|
|
});
|
|
|
|
// Mailchimp translation
|
|
//
|
|
// Defaults:
|
|
// 'submit': 'Submitting...',
|
|
// 0: 'We have sent you a confirmation email',
|
|
// 1: 'Please enter a value',
|
|
// 2: 'An email address must contain a single @',
|
|
// 3: 'The domain portion of the email address is invalid (the portion after the @: )',
|
|
// 4: 'The username portion of the email address is invalid (the portion before the @: )',
|
|
// 5: 'This email address looks fake or invalid. Please enter a real email address'
|
|
|
|
$.ajaxChimp.translations.es = {
|
|
'submit': 'Submitting...',
|
|
0: '<i class="fa fa-check"></i> We have sent you a confirmation email',
|
|
1: '<i class="fa fa-warning"></i> You must enter a valid e-mail address.',
|
|
2: '<i class="fa fa-warning"></i> E-mail address is not valid.',
|
|
3: '<i class="fa fa-warning"></i> E-mail address is not valid.',
|
|
4: '<i class="fa fa-warning"></i> E-mail address is not valid.',
|
|
5: '<i class="fa fa-warning"></i> E-mail address is not valid.'
|
|
}
|
|
|
|
};
|
|
|
|
|
|
/* Back to Top
|
|
* ------------------------------------------------------ */
|
|
var ssBackToTop = function() {
|
|
|
|
var pxShow = 500, // height on which the button will show
|
|
fadeInTime = 400, // how slow/fast you want the button to show
|
|
fadeOutTime = 400, // how slow/fast you want the button to hide
|
|
scrollSpeed = 300, // how slow/fast you want the button to scroll to top. can be a value, 'slow', 'normal' or 'fast'
|
|
goTopButton = $("#go-top")
|
|
|
|
// Show or hide the sticky footer button
|
|
$(window).on('scroll', function() {
|
|
if ($(window).scrollTop() >= pxShow) {
|
|
goTopButton.fadeIn(fadeInTime);
|
|
} else {
|
|
goTopButton.fadeOut(fadeOutTime);
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
|
|
/* Initialize
|
|
* ------------------------------------------------------ */
|
|
(function ssInit() {
|
|
|
|
ssPreloader();
|
|
ssFitVids();
|
|
ssMasonryFolio();
|
|
ssLightGallery();
|
|
ssFlexSlider();
|
|
ssOwlCarousel();
|
|
ssMenuOnScrolldown();
|
|
ssOffCanvas();
|
|
ssSmoothScroll();
|
|
ssPlaceholder();
|
|
ssAlertBoxes();
|
|
ssAnimations();
|
|
ssIntroAnimation();
|
|
ssContactForm();
|
|
ssAjaxChimp();
|
|
ssBackToTop();
|
|
|
|
})();
|
|
|
|
|
|
})(jQuery); |