var _____WB$wombat$assign$function_____=function(name){return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name))||self[name];};if(!self.__WB_pmw){self.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{ let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opens = _____WB$wombat$assign$function_____("opens"); /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2015 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="sppb-alert"]' var SPPBAlert = function (el) { $(el).on('click', dismiss, this.close) } SPPBAlert.VERSION = '3.2.0' SPPBAlert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.hasClass('sppb-alert') ? $this : $this.parent() } $parent.trigger(e = $.Event('close.sppb.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.sppb.alert').remove() } $.support.transition && $parent.hasClass('sppb-fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(150) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('sppb.alert') if (!data) $this.data('sppb.alert', (data = new SPPBAlert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.spbalert $.fn.spbalert = Plugin $.fn.spbalert.Constructor = SPPBAlert // ALERT NO CONFLICT // ================= $.fn.spbalert.noConflict = function () { $.fn.spbalert = old return this } // ALERT DATA-API // ============== $(document).on('click.sppb.alert.data-api', dismiss, SPPBAlert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.2.0 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var SPPBCarousel = function (element, options) { this.$element = $(element).on('keydown.sppb.carousel', $.proxy(this.keydown, this)) this.$indicators = this.$element.find('.sppb-carousel-indicators') this.options = options this.paused = this.sliding = this.interval = this.$active = this.$items = null this.options.pause == 'hover' && this.$element .on('mouseenter.sppb.carousel', $.proxy(this.pause, this)) .on('mouseleave.sppb.carousel', $.proxy(this.cycle, this)) } SPPBCarousel.VERSION = '3.2.0' SPPBCarousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true } SPPBCarousel.prototype.keydown = function (e) { switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } SPPBCarousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } SPPBCarousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.sppb-item') return this.$items.index(item || this.$active) } SPPBCarousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.sppb-item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.sppb.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) } SPPBCarousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } SPPBCarousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } SPPBCarousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } SPPBCarousel.prototype.slide = function (type, next) { var $active = this.$element.find('.sppb-item.active') var $next = next || $active[type]() var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var fallback = type == 'next' ? 'first' : 'last' var that = this if (!$next.length) { if (!this.options.wrap) return $next = this.$element.find('.sppb-item')[fallback]() } if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.sppb.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.sppb.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('sppb-slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('sppb.carousel') var options = $.extend({}, SPPBCarousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('sppb.carousel', (data = new SPPBCarousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.sppbcarousel $.fn.sppbcarousel = Plugin $.fn.sppbcarousel.Constructor = SPPBCarousel // CAROUSEL NO CONFLICT // ==================== $.fn.sppbcarousel.noConflict = function () { $.fn.sppbcarousel = old return this } //SP Page Builder $(document).ready(function(){ $('.sppb-carousel').each(function (index) { var items = $(this).find('.sppb-item'); var id = 'sppb-carousel' + (index+1); var controller_items = ''; //Set ID $(this).attr('id', id ); for (var i = 0; i < items.length; i++) { if(i==0) { controller_items += '
  • '; } else { controller_items += '\n
  • '; } }; $(this).find('>.sppb-carousel-indicators').html(controller_items); $(this).find('.sppb-carousel-control').attr('href', '#' + id); $(this).find('.sppb-item').first().addClass('active'); }); }) // CAROUSEL DATA-API // ================= $(document).on('click.sppb.carousel.data-api', '[data-slide], [data-sppb-slide-to]', function (e) { var href var $this = $(this) var $target = $($this.attr('data-sppb-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('sppb-carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-sppb-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('sppb.carousel').to(slideIndex) } e.preventDefault() }) $(window).on('load', function () { $('[data-sppb-ride="sppb-carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.2.0 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; $(document).on('click', '.sppb-panel-heading', function(event){ event.preventDefault(); var $this = $(this); var $items = $this.closest('.sppb-panel-group').find('>div'); var $handlers = $items.find('.sppb-panel-heading'); var $panels = $items.find('.sppb-panel-collapse'); if( $(this).hasClass('active') ) { $(this).removeClass('active'); $panels.slideUp(); } else { $handlers.removeClass('active'); $panels.slideUp(); $(this).addClass('active').next().slideDown(); } }); }(jQuery); /* ======================================================================== * Bootstrap: tab.js v3.2.0 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var SPPBTab = function (element) { this.element = $(element) } SPPBTab.VERSION = '3.2.0' SPPBTab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var previous = $ul.find('.active:last a')[0] var e = $.Event('show.sppb.tab', { relatedTarget: previous }) $this.trigger(e) if (e.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $this.trigger({ type: 'shown.sppb.tab', relatedTarget: previous }) }) } SPPBTab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && $active.hasClass('sppb-fade') function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') element.addClass('active') if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('sppb-fade') } if (element.parent('.dropdown-menu')) { element.closest('li.dropdown').addClass('active') } callback && callback() } transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(150) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('sppb.tab') if (!data) $this.data('sppb.tab', (data = new SPPBTab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.sppbtab $.fn.sppbtab = Plugin $.fn.sppbtab.Constructor = SPPBTab // TAB NO CONFLICT // =============== $.fn.sppbtab.noConflict = function () { $.fn.sppbtab = old return this } //Dynamic IDS $(document).ready(function () { $('.sppb-tab').each(function (index){ var id = 'sppb-tab' + (index+1); $(this).find('>.sppb-nav').children().each(function (index) { $(this).find('>a').attr('href', '#' + id + '-' + (index+1) ) }); $(this).find('>.sppb-tab-content').children().each(function (index) { $(this).attr('id', id + '-' + (index+1) ) }); }); }); // TAB DATA-API // ============ $(document).on('click.sppb.tab.data-api', '[data-toggle="sppb-tab"], [data-toggle="sppb-pill"]', function (e) { e.preventDefault() Plugin.call($(this), 'show') }) }(jQuery); /* ======================================================================== * Bootstrap: tooltip.js v3.2.0 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var SPPBTooltip = function (element, options) { this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null this.init('sppbtooltip', element, options) } SPPBTooltip.VERSION = '3.2.0' SPPBTooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } SPPBTooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } SPPBTooltip.prototype.getDefaults = function () { return SPPBTooltip.DEFAULTS } SPPBTooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } SPPBTooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } SPPBTooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('sppb.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('sppb.' + this.type, self) } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } SPPBTooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('sppb.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('sppb.' + this.type, self) } clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } SPPBTooltip.prototype.show = function () { var e = $.Event('show.sppb.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(document.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('sppb-fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('sppb.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var $parent = this.$element.parent() var parentDim = this.getPosition($parent) placement = placement == 'bottom' && pos.top + pos.height + actualHeight - parentDim.scroll > parentDim.height ? 'top' : placement == 'top' && pos.top - parentDim.scroll - actualHeight < 0 ? 'bottom' : placement == 'right' && pos.right + actualWidth > parentDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < parentDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { that.$element.trigger('shown.sppb.' + that.type) that.hoverState = null } $.support.transition && this.$tip.hasClass('sppb-') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(150) : complete() } } SPPBTooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top = offset.top + marginTop offset.left = offset.left + marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var arrowDelta = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowPosition = delta.left ? 'left' : 'top' var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition) } SPPBTooltip.prototype.replaceArrow = function (delta, dimension, position) { this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '') } SPPBTooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.sppb-tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('sppb-fade in top bottom left right') } SPPBTooltip.prototype.hide = function () { var that = this var $tip = this.tip() var e = $.Event('hide.sppb.' + this.type) this.$element.removeAttr('aria-describedby') function complete() { if (that.hoverState != 'in') $tip.detach() that.$element.trigger('hidden.sppb.' + that.type) } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && this.$tip.hasClass('sppb-fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(150) : complete() this.hoverState = null return this } SPPBTooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } SPPBTooltip.prototype.hasContent = function () { return this.getTitle() } SPPBTooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(), width: isBody ? $(window).width() : $element.outerWidth(), height: isBody ? $(window).height() : $element.outerHeight() }, isBody ? { top: 0, left: 0 } : $element.offset()) } SPPBTooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } SPPBTooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } SPPBTooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } SPPBTooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } SPPBTooltip.prototype.tip = function () { return (this.$tip = this.$tip || $(this.options.template)) } SPPBTooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.sppb-tooltip-arrow')) } SPPBTooltip.prototype.validate = function () { if (!this.$element[0].parentNode) { this.hide() this.$element = null this.options = null } } SPPBTooltip.prototype.enable = function () { this.enabled = true } SPPBTooltip.prototype.disable = function () { this.enabled = false } SPPBTooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } SPPBTooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('sppb.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('sppb.' + this.type, self) } } self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } SPPBTooltip.prototype.destroy = function () { clearTimeout(this.timeout) this.hide().$element.off('.' + this.type).removeData('sppb.' + this.type) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('sppb.tooltip') var options = typeof option == 'object' && option if (!data && option == 'destroy') return if (!data) $this.data('sppb.tooltip', (data = new SPPBTooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.sppbtooltip $.fn.sppbtooltip = Plugin $.fn.sppbtooltip.Constructor = SPPBTooltip // TOOLTIP NO CONFLICT // =================== $.fn.sppbtooltip.noConflict = function () { $.fn.sppbtooltip = old return this } }(jQuery); /* ======================================================================== * Bootstrap: popover.js v3.2.0 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var SPPBPopover = function (element, options) { this.init('sppbpopover', element, options) } if (!$.fn.sppbtooltip) throw new Error('Popover requires tooltip.js') SPPBPopover.VERSION = '3.2.0' SPPBPopover.DEFAULTS = $.extend({}, $.fn.sppbtooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ SPPBPopover.prototype = $.extend({}, $.fn.sppbtooltip.Constructor.prototype) SPPBPopover.prototype.constructor = SPPBPopover SPPBPopover.prototype.getDefaults = function () { return SPPBPopover.DEFAULTS } SPPBPopover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.sppb-popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.sppb-popover-content').empty()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('sppb-fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.sppb-popover-title').html()) $tip.find('.sppb-popover-title').hide() } SPPBPopover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } SPPBPopover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } SPPBPopover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } SPPBPopover.prototype.tip = function () { if (!this.$tip) this.$tip = $(this.options.template) return this.$tip } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('sppb.popover') var options = typeof option == 'object' && option if (!data && option == 'destroy') return if (!data) $this.data('sppb.popover', (data = new SPPBPopover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.sppbpopover $.fn.sppbpopover = Plugin $.fn.sppbpopover.Constructor = SPPBPopover // POPOVER NO CONFLICT // =================== $.fn.sppbpopover.noConflict = function () { $.fn.sppbpopover = old return this } }(jQuery); /* ======================================================================== * Bootstrap: transition.js v3.2.0 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); //fix carousel issue fr mootools if (typeof jQuery != 'undefined' && typeof MooTools != 'undefined' ) { (function($) { $(document).ready(function(){ $('.sppb-carousel').each(function(index, element) { $(this)[index].slide = null; }); }); })(jQuery); } /* * Vide - v0.1.2 * Easy as hell jQuery plugin for video backgrounds. * http://vodkabears.github.io/vide/ * * Made by Ilya Makarov * Under MIT License */ ;(function ($, window, document, navigator) { "use strict"; /** * Vide settings */ var pluginName = "vide", defaults = { volume: 1, playbackRate: 1, muted: true, loop: true, autoplay: true, position: "50% 50%" }; /** * Is iOs or Android? */ var iOS = /iPad|iPhone|iPod/i.test(navigator.userAgent), android = /Android/i.test(navigator.userAgent); /** * Special plugin object for instances. * @type {Object} */ $[pluginName] = { lookup: [] }; /** * Parse string with options * @param str * @returns {Object} */ var parseOptions = function (str) { var obj = {}, clearedStr, arr; // remove spaces before and after delimiters clearedStr = str.replace(/\s*:\s*/g, ":").replace(/\s*,\s*/g, ","); // parse string arr = clearedStr.split(","); var i, len, val; for (i = 0, len = arr.length; i < len; i++) { arr[i] = arr[i].split(":"); val = arr[i][1]; // if val is an empty string, make it undefined if (!val) { val = undefined; } // convert string value if it is like a boolean if (typeof val === "string" || val instanceof String) { val = val === "true" || (val === "false" ? false : val); } // convert string value if it is like a number if (typeof val === "string" || val instanceof String) { val = !isNaN(val) ? +val : val; } obj[arr[i][0]] = val; } return obj; }; /** * Parse position option * @param str * @returns {{x: *, y: *}} */ var parsePosition = function (str) { // convert anything to the string str = "" + str; // default value is a center var args = str.split(/\s+/), x = "50%", y = "50%"; for (var i = 0, len = args.length, arg; i < len; i++) { arg = args[i]; // convert values if (arg === "left") { x = "0%"; } else if (arg === "right") { x = "100%"; } else if (arg === "top") { y = "0%"; } else if (arg === "bottom") { y = "100%"; } else if (arg === "center"){ if (i === 0) { x = "50%"; } else { y = "50%"; } } else { if (i === 0) { x = arg; } else { y = arg; } } } return { x: x, y: y }; }; /** * Vide constructor * @param element * @param path * @param options * @constructor */ function Vide(element, path, options) { this.element = $(element); this._defaults = defaults; this._name = pluginName; // remove extension path = path.replace(/\.\w*$/, ""); this.settings = $.extend({}, defaults, options); this.path = path; this.init(); } /** * Initialization */ Vide.prototype.init = function () { var that = this; this.wrapper = $("
    "); // Set video wrapper styles var position = parsePosition(this.settings.position); this.wrapper.css({ "position": "absolute", "z-index": -1, "top": 0, "left": 0, "bottom": 0, "right": 0, "overflow": "hidden", "-webkit-background-size": "cover", "-moz-background-size": "cover", "-o-background-size": "cover", "background-size": "cover", "background-repeat": "no-repeat", "background-position": position.x + " " + position.y }); // Set video poster if ($(this.element).data('vide-image')) { this.wrapper.css("background-image", "url(" + $(this.element).data('vide-image') + ")"); } // if parent element has a static position, make it relative if (this.element.css("position") === "static") { this.element.css("position", "relative"); } this.element.prepend(this.wrapper); if (!iOS && !android) { var video_src = ''; if($(this.element).data('vide-mp4')) { video_src += ""; } if($(this.element).data('vide-ogv')) { video_src += ""; } this.video = $(""); // Disable visibility, while loading this.video.css("visibility", "hidden"); // Set video properties this.video.prop({ autoplay: this.settings.autoplay, loop: this.settings.loop, volume: this.settings.volume, muted: this.settings.muted, playbackRate: this.settings.playbackRate }); // Append video this.wrapper.append(this.video); // Video alignment this.video.css({ "margin": "auto", "position": "absolute", "z-index": -1, "top": position.y, "left": position.x, "-webkit-transform": "translate(-" + position.x + ", -" + position.y + ")", "-ms-transform": "translate(-" + position.x + ", -" + position.y + ")", "transform": "translate(-" + position.x + ", -" + position.y + ")" }); // resize video, when it's loaded this.video.bind("loadedmetadata." + pluginName, function () { that.video.css("visibility", "visible"); that.resize(); }); // resize event is available only for 'window', // use another code solutions to detect DOM elements resizing $(this.element).bind("resize." + pluginName, function () { that.resize(); }); } }; /** * Get video element of the background * @returns {HTMLVideoElement} */ Vide.prototype.getVideoObject = function () { return this.video ? this.video[0] : null; }; /** * Resize video background */ Vide.prototype.resize = function () { if (!this.video) { return; } // get native video size var videoHeight = this.video[0].videoHeight, videoWidth = this.video[0].videoWidth; // get wrapper size var wrapperHeight = this.wrapper.height(), wrapperWidth = this.wrapper.width(); if (wrapperWidth / videoWidth > wrapperHeight / videoHeight) { this.video.css({ "width": wrapperWidth + 2, // +2 pixels to prevent empty space after transformation "height": "auto" }); } else { this.video.css({ "width": "auto", "height": wrapperHeight + 2 // +2 pixels to prevent empty space after transformation }); } }; /** * Destroy video background */ Vide.prototype.destroy = function () { this.element.unbind(pluginName); if (this.video) { this.video.unbind(pluginName); } delete $[pluginName].lookup[this.index]; this.element.removeData(pluginName); this.wrapper.remove(); }; /** * Plugin constructor * @param path * @param options * @returns {*} */ $.fn[pluginName] = function (path, options) { var instance; this.each(function () { instance = $.data(this, pluginName); if (instance) { // destroy plugin instance if exists instance.destroy(); } // create plugin instance instance = new Vide(this, path, options); instance.index = $[pluginName].lookup.push(instance) - 1; $.data(this, pluginName, instance); }); return this; }; $(document).ready(function () { // window resize event listener $(window).bind("resize." + pluginName, function () { for (var len = $[pluginName].lookup.length, instance, i = 0; i < len; i++) { instance = $[pluginName].lookup[i]; if (instance) { instance.resize(); } } }); // Auto initialization. // Add 'data-vide-bg' attribute with a path to the video without extension. // Also you can pass options throw the 'data-vide-options' attribute. // 'data-vide-options' must be like "muted: false, volume: 0.5". $(document).find("[data-" + pluginName + "-bg]").each(function (i, element) { var $element = $(element), options = $element.data(pluginName + "-options"), path = ''; if (!options) { options = {}; } else { options = parseOptions(options); } $element[pluginName](path, options); }); }); })(window.jQuery, window, document, navigator); /*! WOW - v1.0.1 - 2014-08-15 * Copyright (c) 2014 Matthieu Aussaguel; Licensed MIT */ ;(function() { var a, b, c, d = function(a, b) { return function() { return a.apply(b, arguments) } }, e = [].indexOf || function(a) { for (var b = 0, c = this.length; c > b; b++) if (b in this && this[b] === a) return b; return -1 }; b = function() { function a() {} return a.prototype.extend = function(a, b) { var c, d; for (c in b) d = b[c], null == a[c] && (a[c] = d); return a }, a.prototype.isMobile = function(a) { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a) }, a }(), c = this.WeakMap || this.MozWeakMap || (c = function() { function a() { this.keys = [], this.values = [] } return a.prototype.get = function(a) { var b, c, d, e, f; for (f = this.keys, b = d = 0, e = f.length; e > d; b = ++d) if (c = f[b], c === a) return this.values[b] }, a.prototype.set = function(a, b) { var c, d, e, f, g; for (g = this.keys, c = e = 0, f = g.length; f > e; c = ++e) if (d = g[c], d === a) return void(this.values[c] = b); return this.keys.push(a), this.values.push(b) }, a }()), a = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (a = function() { function a() { console.warn("MutationObserver is not supported by your browser."), console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.") } return a.notSupported = !0, a.prototype.observe = function() {}, a }()), this.SPPBWOW = function() { function f(a) { null == a && (a = {}), this.scrollCallback = d(this.scrollCallback, this), this.scrollHandler = d(this.scrollHandler, this), this.start = d(this.start, this), this.scrolled = !0, this.config = this.util().extend(a, this.defaults), this.animationNameCache = new c } return f.prototype.defaults = { boxClass: "sppb-wow", animateClass: "sppb-animated", offset: 0, mobile: !0, live: !0 }, f.prototype.init = function() { var a; return this.element = window.document.documentElement, "interactive" === (a = document.readyState) || "complete" === a ? this.start() : document.addEventListener("DOMContentLoaded", this.start), this.finished = [] }, f.prototype.start = function() { var b, c, d, e; if (this.stopped = !1, this.boxes = function() { var a, c, d, e; for (d = this.element.querySelectorAll("." + this.config.boxClass), e = [], a = 0, c = d.length; c > a; a++) b = d[a], e.push(b); return e }.call(this), this.all = function() { var a, c, d, e; for (d = this.boxes, e = [], a = 0, c = d.length; c > a; a++) b = d[a], e.push(b); return e }.call(this), this.boxes.length) if (this.disabled()) this.resetStyle(); else { for (e = this.boxes, c = 0, d = e.length; d > c; c++) b = e[c], this.applyStyle(b, !0); window.addEventListener("scroll", this.scrollHandler, !1), window.addEventListener("resize", this.scrollHandler, !1), this.interval = setInterval(this.scrollCallback, 50) } return this.config.live ? new a(function(a) { return function(b) { var c, d, e, f, g; for (g = [], e = 0, f = b.length; f > e; e++) d = b[e], g.push(function() { var a, b, e, f; for (e = d.addedNodes || [], f = [], a = 0, b = e.length; b > a; a++) c = e[a], f.push(this.doSync(c)); return f }.call(a)); return g } }(this)).observe(document.body, { childList: !0, subtree: !0 }) : void 0 }, f.prototype.stop = function() { return this.stopped = !0, window.removeEventListener("scroll", this.scrollHandler, !1), window.removeEventListener("resize", this.scrollHandler, !1), null != this.interval ? clearInterval(this.interval) : void 0 }, f.prototype.sync = function() { return a.notSupported ? this.doSync(this.element) : void 0 }, f.prototype.doSync = function(a) { var b, c, d, f, g; if (!this.stopped) { if (null == a && (a = this.element), 1 !== a.nodeType) return; for (a = a.parentNode || a, f = a.querySelectorAll("." + this.config.boxClass), g = [], c = 0, d = f.length; d > c; c++) b = f[c], e.call(this.all, b) < 0 ? (this.applyStyle(b, !0), this.boxes.push(b), this.all.push(b), g.push(this.scrolled = !0)) : g.push(void 0); return g } }, f.prototype.show = function(a) { return this.applyStyle(a), a.className = "" + a.className + " " + this.config.animateClass }, f.prototype.applyStyle = function(a, b) { var c, d, e; return d = a.getAttribute("data-sppb-wow-duration"), c = a.getAttribute("data-sppb-wow-delay"), e = a.getAttribute("data-sppb-wow-iteration"), this.animate(function(f) { return function() { return f.customStyle(a, b, d, c, e) } }(this)) }, f.prototype.animate = function() { return "requestAnimationFrame" in window ? function(a) { return window.requestAnimationFrame(a) } : function(a) { return a() } }(), f.prototype.resetStyle = function() { var a, b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) a = d[b], e.push(a.setAttribute("style", "visibility: visible;")); return e }, f.prototype.customStyle = function(a, b, c, d, e) { return b && this.cacheAnimationName(a), a.style.visibility = b ? "hidden" : "visible", c && this.vendorSet(a.style, { animationDuration: c }), d && this.vendorSet(a.style, { animationDelay: d }), e && this.vendorSet(a.style, { animationIterationCount: e }), this.vendorSet(a.style, { animationName: b ? "none" : this.cachedAnimationName(a) }), a }, f.prototype.vendors = ["moz", "webkit"], f.prototype.vendorSet = function(a, b) { var c, d, e, f; f = []; for (c in b) d = b[c], a["" + c] = d, f.push(function() { var b, f, g, h; for (g = this.vendors, h = [], b = 0, f = g.length; f > b; b++) e = g[b], h.push(a["" + e + c.charAt(0).toUpperCase() + c.substr(1)] = d); return h }.call(this)); return f }, f.prototype.vendorCSS = function(a, b) { var c, d, e, f, g, h; for (d = window.getComputedStyle(a), c = d.getPropertyCSSValue(b), h = this.vendors, f = 0, g = h.length; g > f; f++) e = h[f], c = c || d.getPropertyCSSValue("-" + e + "-" + b); return c }, f.prototype.animationName = function(a) { var b; try { b = this.vendorCSS(a, "animation-name").cssText } catch (c) { b = window.getComputedStyle(a).getPropertyValue("animation-name") } return "none" === b ? "" : b }, f.prototype.cacheAnimationName = function(a) { return this.animationNameCache.set(a, this.animationName(a)) }, f.prototype.cachedAnimationName = function(a) { return this.animationNameCache.get(a) }, f.prototype.scrollHandler = function() { return this.scrolled = !0 }, f.prototype.scrollCallback = function() { var a; return !this.scrolled || (this.scrolled = !1, this.boxes = function() { var b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) a = d[b], a && (this.isVisible(a) ? this.show(a) : e.push(a)); return e }.call(this), this.boxes.length || this.config.live) ? void 0 : this.stop() }, f.prototype.offsetTop = function(a) { for (var b; void 0 === a.offsetTop;) a = a.parentNode; for (b = a.offsetTop; a = a.offsetParent;) b += a.offsetTop; return b }, f.prototype.isVisible = function(a) { var b, c, d, e, f; return c = a.getAttribute("data-sppb-wow-offset") || this.config.offset, f = window.pageYOffset, e = f + Math.min(this.element.clientHeight, innerHeight) - c, d = this.offsetTop(a), b = d + a.clientHeight, e >= d && b >= f }, f.prototype.util = function() { return null != this._util ? this._util : this._util = new b }, f.prototype.disabled = function() { return !this.config.mobile && this.util().isMobile(navigator.userAgent) }, f }() }).call(this); //Initiat WOW JS jQuery(function($){ new SPPBWOW().init(); }); /** * author Christopher Blum * - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/ * - forked from http://github.com/zuk/jquery.inview/ */ (function ($) { var inviewObjects = {}, viewportSize, viewportOffset, d = document, w = window, documentElement = d.documentElement, expando = $.expando, timer; $.event.special.inview = { add: function(data) { inviewObjects[data.guid + "-" + this[expando]] = { data: data, $element: $(this) }; // Use setInterval in order to also make sure this captures elements within // "overflow:scroll" elements or elements that appeared in the dom tree due to // dom manipulation and reflow // old: $(window).scroll(checkInView); // // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays // intervals while the user scrolls. Therefore the inview event might fire a bit late there // // Don't waste cycles with an interval until we get at least one element that // has bound to the inview event. if (!timer && !$.isEmptyObject(inviewObjects)) { timer = setInterval(checkInView, 250); } }, remove: function(data) { try { delete inviewObjects[data.guid + "-" + this[expando]]; } catch(e) {} // Clear interval when we no longer have any elements listening if ($.isEmptyObject(inviewObjects)) { clearInterval(timer); timer = null; } } }; function getViewportSize() { var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth }; // if this is correct then return it. iPad has compat Mode, so will // go into check clientHeight/clientWidth (which has the wrong value). if (!size.height) { mode = d.compatMode; if (mode || !$.support.boxModel) { // IE, Gecko domObject = mode === 'CSS1Compat' ? documentElement : // Standards d.body; // Quirks size = { height: domObject.clientHeight, width: domObject.clientWidth }; } } return size; } function getViewportOffset() { return { top: w.pageYOffset || documentElement.scrollTop || d.body.scrollTop, left: w.pageXOffset || documentElement.scrollLeft || d.body.scrollLeft }; } function checkInView() { var $elements = $(), elementsLength, i = 0; $.each(inviewObjects, function(i, inviewObject) { var selector = inviewObject.data.selector, $element = inviewObject.$element; $elements = $elements.add(selector ? $element.find(selector) : $element); }); elementsLength = $elements.length; if (elementsLength) { viewportSize = viewportSize || getViewportSize(); viewportOffset = viewportOffset || getViewportOffset(); for (; i viewportOffset.top && elementOffset.top < viewportOffset.top + viewportSize.height && elementOffset.left + elementSize.width > viewportOffset.left && elementOffset.left < viewportOffset.left + viewportSize.width) { visiblePartX = (viewportOffset.left > elementOffset.left ? 'right' : (viewportOffset.left + viewportSize.width) < (elementOffset.left + elementSize.width) ? 'left' : 'both'); visiblePartY = (viewportOffset.top > elementOffset.top ? 'bottom' : (viewportOffset.top + viewportSize.height) < (elementOffset.top + elementSize.height) ? 'top' : 'both'); visiblePartsMerged = visiblePartX + "-" + visiblePartY; if (!inView || inView !== visiblePartsMerged) { $element.data('inview', visiblePartsMerged).trigger('inview', [true, visiblePartX, visiblePartY]); } } else if (inView) { $element.data('inview', false).trigger('inview', [false]); } } } } $(w).bind("scroll resize scrollstop", function() { viewportSize = viewportOffset = null; }); // IE < 9 scrolls to focused elements without firing the "scroll" event if (!documentElement.addEventListener && documentElement.attachEvent) { documentElement.attachEvent("onfocusin", function() { viewportOffset = null; }); } //Animated Progress $(document).on('inview', '.sppb-progress', function(event, visible, visiblePartX, visiblePartY) { var $bar = $(this).find('.sppb-progress-bar'); if (visible) { $bar.css('width', $bar.data('width')); $(this).unbind('inview'); } }); //Animated Number $.fn.sppbanimateNumbers = function(stop, commas, duration, ease) { return this.each(function() { var $this = $(this); var start = parseInt($this.text().replace(/,/g, "")); commas = (commas === undefined) ? true : commas; $({value: start}).animate({value: stop}, { duration: duration == undefined ? 1000 : duration, easing: ease == undefined ? "swing" : ease, step: function() { $this.text(Math.floor(this.value)); if (commas) { $this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); } }, complete: function() { if (parseInt($this.text()) !== stop) { $this.text(stop); if (commas) { $this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); } } } }); }); }; $(document).on('inview', '.sppb-animated-number', function(event, visible, visiblePartX, visiblePartY) { var $this = $(this); if (visible) { $this.sppbanimateNumbers($this.data('digit'), false, $this.data('duration')); $this.unbind('inview'); } }); // Pie Chart $(document).on('inview', '.sppb-pie-chart', function(event, visible, visiblePartX, visiblePartY) { var $this = $(this); if (visible) { $this.easyPieChart({ barColor: $this.data('barcolor'), trackColor: $this.data('trackcolor'), scaleColor: false, lineWidth: $this.data('width'), size: $this.data('size'), onStep: function(from, to, percent) { $this.find('.sppb-chart-percent > span').text(Math.round(percent) + '%'); } }); $this.unbind('inview'); } }); })(jQuery); //Ajax Contact Form jQuery(function($) { $(document).on('submit', '.sppb-ajaxt-contact-form', function(event) { event.preventDefault(); var $self = $(this); var value = $(this).serializeArray(); var request = { 'option' : 'com_sppagebuilder', 'task' : 'ajax', 'addon' : 'ajax_contact', 'data' : value }; $.ajax({ type : 'POST', data : request, beforeSend: function(){ $self.find('.fa').addClass('fa-spinner fa-spin'); }, success: function (response) { $self.find('.fa-spin').removeClass('fa-spinner fa-spin'); $self.next('.sppb-ajax-contact-status').html($.parseJSON(response).data).fadeIn().delay(2000).fadeOut(500);; } }); return false; }); }); // Magnetic Popup jQuery(function($) { $(document).on('click', '.sppb-magnific-popup', function(event) { event.preventDefault(); var $this = $(this); $this.magnificPopup({ type: $this.data('popup_type'), mainClass: $this.data('mainclass') }).magnificPopup('open'); }); }); } /* FILE ARCHIVED ON 14:16:20 Sep 15, 2024 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 11:02:23 Mar 07, 2026. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): capture_cache.get: 25.043 load_resource: 187.224 (2) PetaboxLoader3.resolve: 261.054 (5) PetaboxLoader3.datanode: 137.664 (5) captures_list: 0.623 exclusion.robots: 0.018 exclusion.robots.policy: 0.009 esindex: 0.01 cdx.remote: 6.388 LoadShardBlock: 221.945 (3) */