/* JS Document */ /****************************** [Table of Contents] 1. Vars and Inits 2. Set Header 3. Init Menu 4. Init Parallax 5. Init Progress Bars 6. Init Accordions 7. Init Loaders 8. Init Milestones ******************************/ $(document).ready(function() { "use strict"; /* 1. Vars and Inits */ var ctrl = new ScrollMagic.Controller(); var header = $('.header'); var menuActive = false; var hamb = $('.hamburger_container'); var menu = $('.fs_menu_container'); var hambIcon = $('.hamburger_icon'); setHeader(); $(window).on('resize', function() { setHeader(); }); $(document).on('scroll', function() { setHeader(); }); initMenu(); initParallax(); initProgressBars(); initAccordions(); initLoaders(); initMilestones(); /* 2. Set Header */ function setHeader() { if(window.innerWidth < 992) { if($(window).scrollTop() > 100) { header.css({'height':"80"}); } else { header.css({'height':"110"}); } } else { if($(window).scrollTop() > 100) { header.css({'height':"80"}); } else { header.css({'height':"110"}); } } if(window.innerWidth > 991 && menuActive) { closeMenu(); } } /* 3. Init Menu */ function initMenu() { if($('.hamburger_container').length) { hamb.on('click', function() { if(!menuActive) { openMenu(); } else { closeMenu(); } }); } } function openMenu() { menu.addClass('active'); setTimeout(function() { hambIcon.addClass('active'); },500); menuActive = true; } function closeMenu() { menu.removeClass('active'); setTimeout(function() { hambIcon.removeClass('active'); },500); menuActive = false; } /* 4. Init Parallax */ function initParallax() { if($('.prlx_parent').length && $('.prlx').length) { var elements = $('.prlx_parent'); elements.each(function() { var ele = this; var bcg = $(ele).find('.prlx'); var slideParallaxScene = new ScrollMagic.Scene({ triggerElement: ele, triggerHook: 1, duration: "200%" }) .setTween(TweenMax.from(bcg, 1, {y: '-30%', ease:Power0.easeNone})) .addTo(ctrl); }); } } /* 5. Init Progress Bars */ function initProgressBars() { if($('.skill_bars').length) { var bars = $('.skill_bars'); bars.each(function() { var ele = $(this); var elePerc = ele.data('perc'); var eleName = '#' + ele.attr('id'); var statsScene = new ScrollMagic.Scene({ triggerElement: this, triggerHook: 'onEnter', reverse:false }) .on('start', function() { var pbar = new ProgressBar.Line(eleName, { strokeWidth: 0.5, easing: 'easeInOut', duration: 1400, color: '#ff4200', trailColor: '#f0f0f0', trailWidth: 1, svgStyle: {display: 'block', width: '100%', height: '100%'}, text: { style: { // Text color. // Default: same as stroke color (options.color) fontFamily: 'Open Sans', letterSpacing: '0.3em', textAlign: 'right', fontSize: '11px', width: '48px', color: '#1c1c1c', position: 'absolute', left: 'calc' + '(' + (elePerc * 100) + '% - 48px' + ')', top: '17px', padding: 0, margin: 0, transform: null }, autoStyleContainer: false }, from: {color: '#00bcd5'}, to: {color: '#00bcd5'}, step: function(state, bar) { bar.setText(Math.round(bar.value() * 100) + ' %'); } }); pbar.animate(elePerc); }) .addTo(ctrl); }) } } /* 6. Init Accordions */ function initAccordions() { if($('.accordion').length) { var accs = $('.accordion'); accs.each(function() { var acc = $(this); acc.on('click', function() { acc.toggleClass('active'); var panel = $(acc.next()); var panelH = panel.prop('scrollHeight') + "px"; if(panel.css('max-height') == "0px") { panel.css('max-height', panel.prop('scrollHeight') + "px"); } else { panel.css('max-height', "0px"); } }); }); } } /* 7. Init Loaders */ function initLoaders() { if($('.loader').length) { var loaders = $('.loader'); loaders.each(function() { var loader = this; var endValue = $(loader).data('perc'); var loaderScene = new ScrollMagic.Scene({ triggerElement: this, triggerHook: 'onEnter', reverse:false }) .on('start', function() { var bar = new ProgressBar.Circle(loader, { color: '#aaa', // This has to be the same size as the maximum width to // prevent clipping strokeWidth: 4, trailWidth: 1.6, easing: 'easeInOut', duration: 1400, text: { autoStyleContainer: false }, from:{ color: '#ff4200', width: 2 }, to: { color: '#ff4200', width: 2 }, // Set default step function for all animate calls step: function(state, circle) { circle.path.setAttribute('stroke', state.color); circle.path.setAttribute('stroke-width', state.width); var value = Math.round(circle.value() * 100); if (value === 0) { circle.setText('0%'); } else { circle.setText(value + "%"); } } }); bar.text.style.fontFamily = '"Open Sans", sans-serif'; bar.text.style.fontSize = '36px'; bar.text.style.fontWeight = '600'; bar.text.style.color = "#1c1c1c"; bar.animate(endValue); // Number from 0.0 to 1.0 }) .addTo(ctrl); }); } } /* 8. Init Milestones */ function initMilestones() { if($('.milestone_counter').length) { var milestoneItems = $('.milestone_counter'); milestoneItems.each(function(i) { var ele = $(this); var endValue = ele.data('end-value'); var eleValue = ele.text(); var milestoneScene = new ScrollMagic.Scene({ triggerElement: this, triggerHook: 'onEnter', reverse:false }) .on('start', function() { var counter = {value:eleValue}; var counterTween = TweenMax.to(counter, 4, { value: endValue, roundProps:"value", ease: Circ.easeOut, onUpdate:function() { document.getElementsByClassName('milestone_counter')[i].innerHTML = counter.value; } }); }) .addTo(ctrl); }); } } });