+ function ($){
"use strict";
function Plugin(action, options){
var args;
return args=Array.prototype.slice.call(arguments, 1), this.each(function (){
var $this, data;
$this=$(this), data=$this.data("vc.accordion"), data||(data=new Accordion($this, $.extend(!0, {}, options)), $this.data("vc.accordion", data)), "string"==typeof action&&data[action].apply(data, args)
})
}
var Accordion, clickHandler, old, hashNavigation;
Accordion=function ($element, options){
this.$element=$element, this.activeClass="gem-tta-active", this.animatingClass="vc_animating", this.useCacheFlag=void 0, this.$target=void 0, this.$targetContent=void 0, this.selector=void 0, this.$container=void 0, this.animationDuration=void 0, this.index=0
}
Accordion.transitionEvent=function (){
var transition, transitions, el;
el=document.createElement("vcFakeElement"), transitions={
transition: "transitionend",
MSTransition: "msTransitionEnd",
MozTransition: "transitionend",
WebkitTransition: "webkitTransitionEnd"
};
for (transition in transitions)
if("undefined"!=typeof el.style[transition]) return transitions[transition]
}
Accordion.emulateTransitionEnd=function ($el, duration){
var callback, called;
called = !1, duration||(duration=250), $el.one(Accordion.transitionName, function (){
called = !0
}), callback=function (){
called||$el.trigger(Accordion.transitionName)
}, setTimeout(callback, duration)
}
Accordion.DEFAULT_TYPE="collapse", Accordion.transitionName=Accordion.transitionEvent(), Accordion.prototype.controller=function (options){
var $this;
$this=this.$element;
var action=options;
"string"!=typeof action&&(action=$this.data("vcAction")||this.getContainer().data("vcAction")), "undefined"==typeof action&&(action=Accordion.DEFAULT_TYPE), "string"==typeof action&&Plugin.call($this, action, options)
}
Accordion.prototype.isCacheUsed=function (){
var useCache, that;
return that=this, useCache=function (){
return !1!==that.$element.data("vcUseCache")
}, "undefined"==typeof this.useCacheFlag&&(this.useCacheFlag=useCache()), this.useCacheFlag
}
Accordion.prototype.getSelector=function (){
var findSelector, $this;
return $this=this.$element, findSelector=function (){
var selector;
return selector=$this.data("vcTarget"), selector||(selector=$this.attr("href")), selector
}, this.isCacheUsed() ? ("undefined"==typeof this.selector&&(this.selector=findSelector()), this.selector):findSelector()
}
Accordion.prototype.findContainer=function (){
var $container;
return $container=this.$element.closest(this.$element.data("vcContainer")), $container.length||($container=$("body")), $container
}
Accordion.prototype.getContainer=function (){
return this.isCacheUsed() ? ("undefined"==typeof this.$container&&(this.$container=this.findContainer()), this.$container):this.findContainer()
}
Accordion.prototype.getTarget=function (){
var selector, that, getTarget;
return that=this, selector=that.getSelector(), getTarget=function (){
var element;
return element=that.getContainer().find(selector), element.length||(element=that.getContainer().filter(selector)), element
}, this.isCacheUsed() ? ("undefined"==typeof this.$target&&(this.$target=getTarget()), this.$target):getTarget()
}
Accordion.prototype.getTargetContent=function (){
var $target, $targetContent;
return $target=this.getTarget(), this.isCacheUsed() ? ("undefined"==typeof this.$targetContent&&($targetContent=$target, $target.data("vcContent")&&($targetContent=$target.find($target.data("vcContent")), $targetContent.length||($targetContent=$target)), this.$targetContent=$targetContent), this.$targetContent):$target.data("vcContent")&&($targetContent=$target.find($target.data("vcContent")), $targetContent.length) ? $targetContent:$target
}
Accordion.prototype.getTriggers=function (){
var i;
return i=0, this.getContainer().find("[data-vc-accordion]").each(function (){
var accordion, $this;
$this=$(this), accordion=$this.data("vc.accordion"), "undefined"==typeof accordion&&($this.vcAccordion(), accordion=$this.data("vc.accordion")), accordion&&accordion.setIndex&&accordion.setIndex(i++)
})
}
Accordion.prototype.setIndex=function (index){
this.index=index
}
Accordion.prototype.getIndex=function (){
return this.index
}
Accordion.prototype.triggerEvent=function (event, opt){
var $event;
"string"==typeof event&&($event=$.Event(event), this.$element.trigger($event, opt))
}
Accordion.prototype.getActiveTriggers=function (){
var $triggers;
return $triggers=this.getTriggers().filter(function (){
var $this, accordion;
return $this=$(this), accordion=$this.data("vc.accordion"), accordion.getTarget().hasClass(accordion.activeClass)
})
}
Accordion.prototype.changeLocationHash=function (){
var id, $target;
$target=this.getTarget(), $target.length&&(id=$target.attr("id")), id&&(history.pushState ? history.pushState(null, null, "#" + id):location.hash="#" + id)
}
Accordion.prototype.isActive=function (){
return this.getTarget().hasClass(this.activeClass)
}
Accordion.prototype.getAnimationDuration=function (){
var findAnimationDuration, that;
return that=this, findAnimationDuration=function (){
var $targetContent, duration;
return "undefined"==typeof Accordion.transitionName ? "0s":($targetContent=that.getTargetContent(), duration=$targetContent.css("transition-duration"), duration=duration.split(",")[0])
}, this.isCacheUsed() ? ("undefined"==typeof this.animationDuration&&(this.animationDuration=findAnimationDuration()), this.animationDuration):findAnimationDuration()
}
Accordion.prototype.getAnimationDurationMilliseconds=function (){
var duration;
return duration=this.getAnimationDuration(), "ms"===duration.substr(-2) ? parseInt(duration):"s"===duration.substr(-1) ? Math.round(1e3 * parseFloat(duration)):void 0
}
Accordion.prototype.isAnimated=function (){
return parseFloat(this.getAnimationDuration()) > 0
}
Accordion.prototype.show=function (opt){
var $target, that, $targetContent;
that=this;
$target=that.getTarget();
$targetContent=that.getTargetContent();
if(that.isActive()){
return;
}
if(that.isAnimated()){
that.triggerEvent('beforeShow.vc.accordion');
if(that.$container&&((that.$container.find('.gem-tta-tabs-container').length&&that.$container.find('.gem-tta-tabs-container').is(':visible'))||(that.$container.find('.vc_pagination').length&&that.$container.find('.vc_pagination').is(':visible')))){
$target.clearQueue().finish()
.queue(function(next){
$targetContent.attr('style', '');
$targetContent.css({
display: 'block',
opacity: 0,
});
that.triggerEvent('gem.show.vc.tabs', opt);
if($target.parent().outerHeight() <=$targetContent.outerHeight()){
$target.parent().outerHeight($targetContent.outerHeight());
}
next();
})
.queue(function(next){
that.triggerEvent('show.vc.accordion', opt);
$targetContent.clearQueue().finish().animate({opacity:1}, 500, function(){
$target.addClass(that.activeClass);
("object"==typeof opt&&opt.hasOwnProperty("changeHash")&&opt.changeHash||"undefined"==typeof opt)&&that.changeLocationHash();
that.triggerEvent('afterShow.vc.accordion', opt);
$targetContent.attr('style', '');
$target.parent().attr('style', '');
});
next();
});
}else{
$target
.queue(function(next){
$targetContent.one(Accordion.transitionName, function (){
$target.removeClass(that.animatingClass);
$targetContent.attr('style', '');
that.triggerEvent('afterShow.vc.accordion', opt);
that.triggerEvent('gem.show.vc.accordion', opt);
});
Accordion.emulateTransitionEnd($targetContent, that.getAnimationDurationMilliseconds() + 100);
next();
})
.queue(function(next){
$targetContent.attr('style', '');
$targetContent.css({
position: 'absolute',
visibility: 'hidden',
display: 'block'
});
var height=$targetContent.height();
$targetContent.data('vcHeight', height);
$targetContent.attr('style', '');
next();
})
.queue(function(next){
$targetContent.height(0);
$targetContent.css({
'padding-top': 0,
'padding-bottom': 0
});
next();
})
.queue(function(next){
$target.addClass(that.animatingClass);
$target.addClass(that.activeClass);
("object"==typeof opt&&opt.hasOwnProperty("changeHash")&&opt.changeHash||"undefined"==typeof opt)&&that.changeLocationHash();
that.triggerEvent('show.vc.accordion', opt);
next();
})
.queue(function(next){
var height=$targetContent.data('vcHeight');
$targetContent.animate({ 'height': height }, {
duration: that.getAnimationDurationMilliseconds(),
complete: function (){
if(!$targetContent.data('events')){
$targetContent.attr('style', '');
}}
});
$targetContent.css({
'padding-top': '',
'padding-bottom': ''
});
next();
});
}}else{
$target.addClass(that.activeClass);
that.triggerEvent('show.vc.accordion', opt);
}};
Accordion.prototype.hide=function (opt){
var $target, that, $targetContent;
that=this;
$target=that.getTarget();
$targetContent=that.getTargetContent();
if(! that.isActive()){
return;
}
if(that.isAnimated()){
that.triggerEvent('beforeHide.vc.accordion');
if(that.$container&&((that.$container.find('.gem-tta-tabs-container').length&&that.$container.find('.gem-tta-tabs-container').is(':visible'))||(that.$container.find('.vc_pagination').length&&that.$container.find('.vc_pagination').is(':visible')))){
$target
.queue(function(next){
$targetContent.attr('style', '');
if($target.parent().outerHeight() <=$targetContent.outerHeight()){
$target.parent().outerHeight($targetContent.outerHeight());
}
$targetContent.css({
display: 'block',
opacity: 1,
position: 'absolute',
top: '-'+$targetContent.css('border-top-width'),
left: '-'+$targetContent.css('border-left-width'),
right: '-'+$targetContent.css('border-right-width'),
});
next();
})
.queue(function(next){
that.triggerEvent('hide.vc.accordion', opt);
$targetContent.clearQueue().finish().animate({opacity:0}, 500, function(){
$target.removeClass(that.activeClass);
$targetContent.attr('style', '');
$target.parent().attr('style', '');
});
next();
});
}else{
$target
.queue(function(next){
$targetContent.one(Accordion.transitionName, function (){
$target.removeClass(that.animatingClass);
$targetContent.attr('style', '');
that.triggerEvent('afterHide.vc.accordion', opt);
});
Accordion.emulateTransitionEnd($targetContent, that.getAnimationDurationMilliseconds() + 100);
next();
})
.queue(function(next){
$target.addClass(that.animatingClass);
$target.removeClass(that.activeClass);
that.triggerEvent('hide.vc.accordion', opt);
next();
})
.queue(function(next){
var height=$targetContent.height();
$targetContent.height(height);
next();
})
.queue(function(next){
$targetContent.animate({ 'height': 0 }, that.getAnimationDurationMilliseconds());
$targetContent.css({
'padding-top': 0,
'padding-bottom': 0
});
next();
});
}}else{
$target.removeClass(that.activeClass);
that.triggerEvent('hide.vc.accordion', opt);
}};
Accordion.prototype.toggle=function (opt){
var $this;
$this=this.$element, this.isActive() ? Plugin.call($this, "hide", opt):Plugin.call($this, "show", opt)
}
Accordion.prototype.dropdown=function (opt){
var $this;
$this=this.$element, this.isActive() ? Plugin.call($this, "hide", opt):(Plugin.call($this, "show", opt), $(document).on("click.vc.accordion.data-api.dropdown", function (e){
Plugin.call($this, "hide", opt), $(document).off(e)
}))
}
Accordion.prototype.collapse=function (opt){
var $this, $triggers;
$this=this.$element, $triggers=this.getActiveTriggers().filter(function (){
return $this[0]!==this
}), $triggers.length&&Plugin.call($triggers, "hide", opt), Plugin.call($this, "show", opt)
}
Accordion.prototype.collapseAll=function (opt){
var $this, $triggers;
$this=this.$element, $triggers=this.getActiveTriggers().filter(function (){
return $this[0]!==this
}), $triggers.length&&Plugin.call($triggers, "hide", opt), Plugin.call($this, "toggle", opt)
}
Accordion.prototype.showNext=function (opt){
var $triggers, $activeTriggers, activeIndex;
if($triggers=this.getTriggers(), $activeTriggers=this.getActiveTriggers(), $triggers.length){
if($activeTriggers.length){
var lastActiveAccordion;
lastActiveAccordion=$activeTriggers.eq($activeTriggers.length - 1).vcAccordion().data("vc.accordion"), lastActiveAccordion&&lastActiveAccordion.getIndex&&(activeIndex=lastActiveAccordion.getIndex())
}
activeIndex > -1&&activeIndex + 1 < $triggers.length ? Plugin.call($triggers.eq(activeIndex + 1), "controller", opt):Plugin.call($triggers.eq(0), "controller", opt)
}}
Accordion.prototype.showPrev=function (opt){
var $triggers, $activeTriggers, activeIndex;
if($triggers=this.getTriggers(), $activeTriggers=this.getActiveTriggers(), $triggers.length){
if($activeTriggers.length){
var lastActiveAccordion;
lastActiveAccordion=$activeTriggers.eq($activeTriggers.length - 1).vcAccordion().data("vc.accordion"), lastActiveAccordion&&lastActiveAccordion.getIndex&&(activeIndex=lastActiveAccordion.getIndex())
}
activeIndex > -1 ? activeIndex - 1 >=0 ? Plugin.call($triggers.eq(activeIndex - 1), "controller", opt):Plugin.call($triggers.eq($triggers.length - 1), "controller", opt):Plugin.call($triggers.eq(0), "controller", opt)
}}
Accordion.prototype.showAt=function (index, opt){
var $triggers;
$triggers=this.getTriggers(), $triggers.length&&index&&index < $triggers.length&&Plugin.call($triggers.eq(index), "controller", opt)
}
Accordion.prototype.scrollToActive=function (opt){
if("undefined"==typeof opt||"undefined"==typeof opt.scrollTo||opt.scrollTo){
var that, $targetElement, offset, delay, speed;
that=this, offset=1, delay=300, speed=300, $targetElement=$(this.getTarget()), $targetElement.length&&this.$element.length&&setTimeout(function (){
var posY=$targetElement.offset().top - $(window).scrollTop() - that.$element.outerHeight() * offset;
0 > posY&&$("html, body").animate({
scrollTop: $targetElement.offset().top - that.$element.outerHeight() * offset
}, speed)
}, delay)
}}, old=$.fn.vcAccordion, $.fn.vcAccordion=Plugin, $.fn.vcAccordion.Constructor=Accordion, $.fn.vcAccordion.noConflict=function (){
return $.fn.vcAccordion=old, this
}, clickHandler=function (e){
var $this;
$this=$(this), e.preventDefault(), Plugin.call($this, "controller")
}, hashNavigation=function (){
var hash, $targetElement, $accordion, offset, delay, speed;
offset=.2, delay=300, speed=0, hash=window.location.hash, hash&&($targetElement=$(hash), $targetElement.length&&($accordion=$targetElement.find('[data-vc-accordion][href="' + hash + '"],[data-vc-accordion][data-vc-target="' + hash + '"]'), $accordion.length&&(setTimeout(function (){
$("html, body").animate({
scrollTop: $targetElement.offset().top - $(window).height() * offset
}, speed)
}, delay), $accordion.trigger("click"))))
}, $(window).on("hashchange.vc.accordion", hashNavigation), $(document).on("click.vc.accordion.data-api", "[data-vc-accordion]", clickHandler), $(document).on("ready.vc.accordion", hashNavigation), $(document).on("afterShow.vc.accordion", function (e, opt){
Plugin.call($(e.target), "scrollToActive", opt)
})
}(window.jQuery);