jQuery(function($){
function isTOCVisible(){
var $el=$('#cmtoc_wrapper_id');
var elementTop=$el.offset().top;
var elementBottom=elementTop + $el.outerHeight();
var viewportTop=$(window).scrollTop();
var viewportBottom=viewportTop + $(window).height();
return elementBottom > viewportTop&&elementTop < viewportBottom;
}
function isContentVisible(){
var $el=$('#cmtoc_wrapper_id').parent();
var elementTop=$el.offset().top;
var elementBottom=elementTop + $el.outerHeight();
var viewportTop=$(window).scrollTop();
var viewportBottom=viewportTop + $(window).height();
return viewportTop < elementBottom&&viewportBottom > elementTop;
}
var showFloatingButton=window.cmtoc_data.floating_button;
var hide_main_toc=(showFloatingButton==="1") ? window.cmtoc_data.fb_hide_main:0;
var fb_show_in_content_area=(showFloatingButton==="1") ? window.cmtoc_data.fb_show_in_content_area:0;
if(showFloatingButton==="1"&&$('#cmtoc_wrapper_id').length){
var body=$('body');
var pageContent=$('#cmtoc_wrapper_id').parent();
var floatingButtonText=window.cmtoc_data.floating_button_text;
var tocButton=$('<button class="cmtoc-flbtn">' + floatingButtonText + '</button>');
var newElement=$('<div class="cmtoc-flbtn-container cmtoc-flbtn-container_hidden"></div>');
newElement.append(tocButton);
var tocElementCopy=$('ul.cmtoc_table').clone()[0];
var newToc=$('<div class="cmtoc-flbtn-content cmtoc-flbtn-content_hidden">' +
'<div class="cmtoc-flbtn-close">&#10005;</div>' +
'<div class="cmtoc_table_of_contents_description">' + window.cmtoc_data.header_description + '</div></div>');
newToc.append(tocElementCopy);
newElement.append(newToc);
body.append(newElement);
if(window.cmtoc_data.floating_button_position=='middle'&&$(window).outerWidth() >=400){
var contentHalfHeight=($('.cmtoc-flbtn-content').height()+ 100)/2;
$('.cmtoc-flbtn-content').css({top:'50%', 'margin-top': -contentHalfHeight });
}
function calculateBtnPosition(){
var data;
if(( pageContent.offset().left + pageContent.innerWidth() + 50) > $(window).width()){
data={
"right": "10px",
"left": "auto"
};}else{
data={
"left": pageContent.offset().left + pageContent.innerWidth(),
"right": "auto"
};}
newElement.children(tocButton).css(data);
}
function calculateContentPosition(){
var data;
if(( pageContent.offset().left + pageContent.innerWidth() + 320) >  $(window).width()){
data={
"right": "0",
"left": "auto"
};}else{
data={
"right": "auto",
"left": pageContent.offset().left + pageContent.innerWidth()
};}
newElement.children(newToc).css(data);
}
calculateBtnPosition();
function floatingBtnOnScroll(){
let show_fl_btn=(fb_show_in_content_area==1) ? isContentVisible():!isTOCVisible();
if(show_fl_btn){
newElement.removeClass('cmtoc-flbtn-container_hidden', 500, 'easeOutCirc');
}else{
newElement.addClass('cmtoc-flbtn-container_hidden', 500, 'easeOutCirc');
}};
window.onresize=function(){ resizeThrottler() };
var resizeTimeout;
function resizeThrottler(){
if(!resizeTimeout){
resizeTimeout=setTimeout(function(){
resizeTimeout=null;
if(tocButton.hasClass('cmtoc-flbtn_hidden')){
calculateContentPosition();
}else{
calculateBtnPosition();
}}, 66);
}}
function closeTOCContent(){
newToc.addClass('cmtoc-flbtn-content_hidden');
tocButton.removeClass('cmtoc-flbtn_hidden');
calculateBtnPosition();
}
$(document).on('click', '.cmtoc-flbtn',function(e){
e.preventDefault();
e.stopPropagation();
calculateContentPosition();
if(tocButton.parent().hasClass('cmtoc-flbtn-container_hidden') )
return false;
if(newToc.hasClass('cmtoc-flbtn-content_hidden')){
newToc.removeClass('cmtoc-flbtn-content_hidden');
tocButton.addClass('cmtoc-flbtn_hidden');
}else{
closeTOCContent();
}});
$(document).on('click', '.cmtoc-flbtn-content', function (e){
e.stopPropagation();
});
$(document).on('click', 'body', function (){
closeTOCContent();
});
$(document).on('click', '.cmtoc-flbtn-close', function (e){
e.preventDefault();
e.stopPropagation();
closeTOCContent();
});
$(document).on('click', '.cmtoc_table a', function (){
if($(window).width() < 400){
closeTOCContent();
}
return true;
});
}
$(document).ready(function (){
if($('body').hasClass('et_divi_theme')){
$('ul.cmtoc_table a').off('click');
}});
var jump_back_btn=window.cmtoc_data.jump_back_btn;
if(jump_back_btn==="1"&&$('#cmtoc_wrapper_id').length){
var $TOCwrapper=$('#cmtoc_wrapper_id');
var TOCData=$($TOCwrapper).data();
var button='<div class="cmtoc_to_top_btn" style="display:none;" >';
if(TOCData.text.length){
button +='<div class="cmtoc_btn-text">' + TOCData.text + '</div>';
}else{
button +='<svg id="cmtoc_svg-arrow" style="enable-background:new 0 0 64 64;" version="1.1" viewBox="0 0 64 64" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Icon-Chevron-Left" transform="translate(237.000000, 335.000000)"><polyline class="st0" id="Fill-35" points="-191.3,-296.9 -193.3,-294.9 -205,-306.6 -216.7,-294.9 -218.7,-296.9 -205,-310.6 -191.3,-296.9"/></g></svg>';
}
button +='</div>';
$('body').append(button);
function jumpBackBtnOnScroll(){
if((!isTOCVisible()&&TOCData.position=="1")||(TOCData.position!="1"&&(document.body.scrollTop > 100||document.documentElement.scrollTop > 100))){
$('.cmtoc_to_top_btn').show()
}else{
$('.cmtoc_to_top_btn').hide();
}}
$('.cmtoc_to_top_btn').click(function(){
if(TOCData.position=="1"){
var $offset=$('#cmtoc_wrapper_id').offset().top - 100;
$('html, body').animate({ scrollTop: $offset });
}else{
$('html, body').animate({ scrollTop: 0 });
}});
}
window.onscroll=function(){
if(jump_back_btn==="1"&&$('#cmtoc_wrapper_id').length){
jumpBackBtnOnScroll();
}
if(showFloatingButton==="1"&&$('#cmtoc_wrapper_id').length){
floatingBtnOnScroll();
}};
var width=$(window).width();
var minWidth=window.cmtoc_data.hide_width;
var defaultFold=window.cmtoc_data.default_hide;
var scrollTime=window.cmtoc_data.scroll_time;
var rowToggle=window.cmtoc_data.row_toggle;
$('.cmtoc_wrapper').foldable({
'titleWrapper': '<div class="cmtoc_table_of_contents_description">',
'titleSearchSelector': '.cmtoc_table_of_contents_description',
'defaultFold':(defaultFold||(width < minWidth) ),
'titleAsHtml': true,
'hideText': window.cmtoc_data.hide,
'showText': window.cmtoc_data.show,
'hideTime': 50
});
if(defaultFold||(width < minWidth)){
$('.cmtoc_wrapper .foldable-wrapper').hide();
}
if(!hide_main_toc){
$('.cmtoc_wrapper').show();
}
if(rowToggle){
$('.cmtoc_table_of_contents_row_wrapper').each(function(key, el){
jQuery(el).prepend('<span class="cmtoc_row_toggle cm-pull-left">+</span>');
});
$('.cmtoc_table_of_contents_row_wrapper').on('click', '.cmtoc_row_toggle', function(){
jQuery(this).parents('.cmtoc_table_of_contents_row_wrapper').toggleClass('cm-collapse');
});
}
(function(document, history, location){
var HISTORY_SUPPORT = !!(history&&history.pushState);
var anchorScrolls={
ANCHOR_REGEX: /^(.*)(#[^ ]+)$/,
OFFSET_HEIGHT_PX: parseInt(window.cmtoc_data.offset),
init: function (){
this.scrollIfAnchor(location.hash);
if(scrollTime!=0){
$('body').on('click', 'a', $.proxy(this, 'delegateAnchors') );
$('body').on('click', 'a[href^="#"]', $.proxy(this, 'delegateAnchors') );
}},
getFixedOffset: function (){
return this.OFFSET_HEIGHT_PX;
},
scrollIfAnchor: function(href, pushToHistory){
var match, anchorOffset, hashPart, locationPart, currentUrl, currentUrlLink, allUrlLink;
currentUrlLink=jQuery('li.cmtoc_table_of_contents_row a[href="' + window.location.href + '"]');
allUrlLink=jQuery('li.cmtoc_table_of_contents_row a');
if(currentUrlLink.length){
allUrlLink.removeClass('current');
currentUrlLink.addClass('current');
}
if(!this.ANCHOR_REGEX.test(href) ){
return false;
}
hashPart=href.match(this.ANCHOR_REGEX);
locationPart=window.location.href.match(this.ANCHOR_REGEX);
if(null!==locationPart){
currentUrl=locationPart[1];
}else{
currentUrl=window.location.href;
}
if(!hashPart[1].length||hashPart[1]===currentUrl){
match=document.getElementById(hashPart[2].slice(1) );
if(match){
anchorOffset=$(match).offset().top - this.getFixedOffset();
if($(window).width() < 500) anchorOffset=$(match).offset().top - parseInt(window.cmtoc_data.offsetMobile);
$('html, body').animate({ scrollTop: anchorOffset }, parseInt(scrollTime));
if(HISTORY_SUPPORT&&pushToHistory){
history.pushState({ }, document.title, location.pathname + hashPart[2]);
}
currentUrlLink=jQuery('li.cmtoc_table_of_contents_row a[href="' + href + '"]');
if(currentUrlLink.length){
allUrlLink.removeClass('current');
currentUrlLink.addClass('current');
}}
}else{
match=null;
}
return !!match;
},
delegateAnchors: function(e){
var elem=e.target;
if(this.scrollIfAnchor(elem.getAttribute('href'), true) ){
e.preventDefault();
}}
};
anchorScrolls.init();
})(window.document, window.history, window.location);
});