(function($) { "use strict"; $(document).ready(function() { var aviabodyclasses = AviaBrowserDetection('html'); $.avia_utilities = $.avia_utilities || {}; if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) && 'ontouchstart' in document.documentElement) { $.avia_utilities.isMobile = true; } else { $.avia_utilities.isMobile = false; } //activates the hamburger mobile menu avia_hamburger_menu(); //show scroll top but1ton avia_scroll_top_fade(); //calculate width of content aviaCalcContentWidth(); //creates search tooltip new $.AviaTooltip({"class": 'avia-search-tooltip',data: 'avia-search-tooltip', event:'click', position:'bottom', scope: "body", attach:'element', within_screen: true}); //creates relate posts tooltip new $.AviaTooltip({"class": 'avia-related-tooltip', data: 'avia-related-tooltip', scope: ".related_posts, .av-share-box", attach:'element', delay:0}); //creates ajax search new $.AviaAjaxSearch({scope:'#header, .avia_search_element'}); // actiavte portfolio sorting if($.fn.avia_iso_sort) $('.grid-sort-container').avia_iso_sort(); // Checks height of content and sidebar and applies shadow class to the higher one AviaSidebarShaowHelper(); $.avia_utilities.avia_ajax_call(); }); $.avia_utilities = $.avia_utilities || {}; $.avia_utilities.avia_ajax_call = function(container) { if(typeof container == 'undefined'){ container = 'body';}; $('a.avianolink').on('click', function(e){ e.preventDefault(); }); $('a.aviablank').attr('target', '_blank'); //activates the prettyphoto lightbox if($.fn.avia_activate_lightbox){ $(container).avia_activate_lightbox(); } //scrollspy for main menu. must be located before smoothscrolling if($.fn.avia_scrollspy) { if(container == 'body') { $('body').avia_scrollspy({target:'.main_menu .menu li > a'}); } else { $('body').avia_scrollspy('refresh'); } } //smooth scrooling if($.fn.avia_smoothscroll) $('a[href*="#"]', container).avia_smoothscroll(container); avia_small_fixes(container); avia_hover_effect(container); avia_iframe_fix(container); //activate html5 video player if($.fn.avia_html5_activation && $.fn.mediaelementplayer) $(".avia_video, .avia_audio", container).avia_html5_activation({ratio:'16:9'}); }; // ------------------------------------------------------------------------------------------- // Error log helper // ------------------------------------------------------------------------------------------- $.avia_utilities.log = function(text, type, extra) { if(typeof console == 'undefined'){return;} if(typeof type == 'undefined'){type = "log";} type = "AVIA-" + type.toUpperCase(); console.log("["+type+"] "+text); if(typeof extra != 'undefined') console.log(extra); }; // ------------------------------------------------------------------------------------------- // keep track of the browser and content width // ------------------------------------------------------------------------------------------- function aviaCalcContentWidth() { var win = $(window), width_select= $('html').is('.html_header_sidebar') ? "#main" : "#header", outer = $(width_select), outerParent = outer.parents('div:eq(0)'), the_main = $(width_select + ' .container:first'), css_block = "", calc_dimensions = function() { var css = "", w_12 = Math.round( the_main.width() ), w_outer = Math.round( outer.width() ), w_inner = Math.round( outerParent.width() ); //css rules for mega menu css += " #header .three.units{width:" + ( w_12 * 0.25)+ "px;}"; css += " #header .six.units{width:" + ( w_12 * 0.50)+ "px;}"; css += " #header .nine.units{width:" + ( w_12 * 0.75)+ "px;}"; css += " #header .twelve.units{width:" +( w_12 ) + "px;}"; //css rules for tab sections css += " .av-framed-box .av-layout-tab-inner .container{width:" +( w_inner )+ "px;}"; css += " .html_header_sidebar .av-layout-tab-inner .container{width:" +( w_outer )+ "px;}"; css += " .boxed .av-layout-tab-inner .container{width:" +( w_outer )+ "px;}"; //css rules for submenu container css += " .av-framed-box#top .av-submenu-container{width:" +( w_inner )+ "px;}"; //ie8 needs different insert method try{ css_block.text(css); } catch(err){ css_block.remove(); css_block = $("").appendTo('head:first'); } }; if($('.avia_mega_div').length > 0 || $('.av-layout-tab-inner').length > 0 || $('.av-submenu-container').length > 0) { css_block = $("").appendTo('head:first'); win.on( 'debouncedresize', calc_dimensions); calc_dimensions(); } } // ------------------------------------------------------------------------------------------- // Tiny helper for sidebar shadow // ------------------------------------------------------------------------------------------- function AviaSidebarShaowHelper(){ var $sidebar_container = $('.sidebar_shadow#top #main .sidebar'); var $content_container = $('.sidebar_shadow .content'); if ($sidebar_container.height() >= $content_container.height()) { $sidebar_container.addClass('av-enable-shadow'); } else{ $content_container.addClass('av-enable-shadow'); } } // ------------------------------------------------------------------------------------------- // modified SCROLLSPY by bootstrap // ------------------------------------------------------------------------------------------- function AviaScrollSpy(element, options) { var self = this; var process = $.proxy(self.process, self) , refresh = $.proxy(self.refresh, self) , $element = $(element).is('body') ? $(window) : $(element) , href; self.$body = $('body'); self.$win = $(window); self.options = $.extend({}, $.fn.avia_scrollspy.defaults, options); self.selector = (self.options.target || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 || ''); self.activation_true = false; if(self.$body.find(self.selector + "[href*='#']").length) { self.$scrollElement = $element.on('scroll.scroll-spy.data-api', process); self.$win.on('av-height-change', refresh); self.$body.on('av_resize_finished', refresh); self.activation_true = true; self.checkFirst(); setTimeout(function() { self.refresh(); self.process(); },100); } } AviaScrollSpy.prototype = { constructor: AviaScrollSpy , checkFirst: function () { var current = window.location.href.split('#')[0], matching_link = this.$body.find(this.selector + "[href='"+current+"']").attr('href',current+'#top'); } , refresh: function () { if(!this.activation_true) return; var self = this , $targets; this.offsets = $([]); this.targets = $([]); $targets = this.$body .find(this.selector) .map(function () { var $el = $(this) , href = $el.data('target') || $el.attr('href') , hash = this.hash , hash = hash.replace(/\//g, "") , $href = /^#\w/.test(hash) && $(hash); return ( $href && $href.length && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null; }) .sort(function (a, b) { return a[0] - b[0]; }) .each(function () { self.offsets.push(this[0]); self.targets.push(this[1]); }); } , process: function () { if(!this.offsets) return; if(isNaN(this.options.offset)) this.options.offset = 0; var scrollTop = this.$scrollElement.scrollTop() + this.options.offset , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight , maxScroll = scrollHeight - this.$scrollElement.height() , offsets = this.offsets , targets = this.targets , activeTarget = this.activeTarget , i; if (scrollTop >= maxScroll) { return activeTarget != (i = targets.last()[0]) && this.activate ( i ); } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate( targets[i] ); } } , activate: function (target) { var active , selector; this.activeTarget = target; $(this.selector) .parent('.' + this.options.applyClass) .removeClass(this.options.applyClass); selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]'; active = $(selector) .parent('li') .addClass(this.options.applyClass); if (active.parent('.sub-menu').length) { active = active.closest('li.dropdown_ul_available').addClass(this.options.applyClass); } active.trigger('activate'); } }; /* AviaScrollSpy PLUGIN DEFINITION * =========================== */ $.fn.avia_scrollspy = function (option) { return this.each(function () { var $this = $(this) , data = $this.data('scrollspy') , options = typeof option == 'object' && option; if (!data) $this.data('scrollspy', (data = new AviaScrollSpy(this, options))); if (typeof option == 'string') data[option](); }); }; $.fn.avia_scrollspy.Constructor = AviaScrollSpy; $.fn.avia_scrollspy.calc_offset = function() { var offset_1 = (parseInt($('.html_header_sticky #main').data('scroll-offset'), 10)) || 0, offset_2 = ($(".html_header_sticky:not(.html_top_nav_header) #header_main_alternate").outerHeight()) || 0, offset_3 = ($(".html_header_sticky.html_header_unstick_top_disabled #header_meta").outerHeight()) || 0, offset_4 = 1, offset_5 = parseInt($('html').css('margin-top'),10) || 0, offset_6 = parseInt($('.av-frame-top ').outerHeight(),10) || 0; return offset_1 + offset_2 + offset_3 + offset_4 + offset_5 + offset_6; }; $.fn.avia_scrollspy.defaults = { offset: $.fn.avia_scrollspy.calc_offset(), applyClass: 'current-menu-item' }; // ------------------------------------------------------------------------------------------- // detect browser and add class to body // ------------------------------------------------------------------------------------------- function AviaBrowserDetection(outputClassElement) { //code from the old jquery migrate plugin var current_browser = {}, uaMatch = function( ua ) { ua = ua.toLowerCase(); var match = /(edge)\/([\w.]+)/.exec( ua ) || /(opr)[\/]([\w.]+)/.exec( ua ) || /(chrome)[ \/]([\w.]+)/.exec( ua ) || /(iemobile)[\/]([\w.]+)/.exec( ua ) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+)/.exec( ua ) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || /(msie) ([\w.]+)/.exec( ua ) || ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || []; return { browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || "", version: match[ 2 ] || match[ 4 ] || "0", versionNumber: match[ 4 ] || match[ 2 ] || "0" }; }; var matched = uaMatch( navigator.userAgent ); if ( matched.browser ) { current_browser.browser = matched.browser; current_browser[ matched.browser ] = true; current_browser.version = matched.version; } // Chrome is Webkit, but Webkit is also Safari. if ( current_browser.chrome ) { current_browser.webkit = true; } else if ( current_browser.webkit ) { current_browser.safari = true; } if(typeof(current_browser) !== 'undefined') { var bodyclass = '', version = current_browser.version ? parseInt(current_browser.version) : ""; if(current_browser.msie || current_browser.rv || current_browser.iemobile){ bodyclass += 'avia-msie'; }else if(current_browser.webkit){ bodyclass += 'avia-webkit'; }else if(current_browser.mozilla){ bodyclass += 'avia-mozilla'; } if(current_browser.version) bodyclass += ' ' + bodyclass + '-' + version + ' '; if(current_browser.browser) bodyclass += ' avia-' + current_browser.browser + ' avia-' +current_browser.browser +'-' + version + ' '; } if(outputClassElement) $(outputClassElement).addClass(bodyclass); return bodyclass; } // ------------------------------------------------------------------------------------------- // html 5 videos // ------------------------------------------------------------------------------------------- $.fn.avia_html5_activation = function(options) { var defaults = { ratio: '16:9' }; var options = $.extend(defaults, options), isMobile = $.avia_utilities.isMobile; // if(isMobile) return; this.each(function() { var fv = $(this), id_to_apply = '#' + fv.attr('id'), posterImg = fv.attr('poster'); fv.mediaelementplayer({ // if the