jQuery(document).ready(function($){ //check if a .cd-tour-wrapper exists in the DOM - if yes, initialize it $('.cd-tour-wrapper').exists() && initTour(); function initTour() { var tourWrapper = $('.cd-tour-wrapper'), tourSteps = tourWrapper.children('li'), stepsNumber = tourSteps.length, coverLayer = $('.cd-cover-layer'), tourStepInfo = $('.cd-more-info'), tourTrigger = $('#cd-tour-trigger'); //create the navigation for each step of the tour createNavigation(tourSteps, stepsNumber); tourTrigger.on('click', function(){ //start tour if(!tourWrapper.hasClass('active')) { //in that case, the tour has not been started yet tourWrapper.addClass('active'); showStep(tourSteps.eq(0), coverLayer); } }); //if(tourTrigger.hasClass("on")) tourTrigger.click(); //change visible step tourStepInfo.on('click', '.cd-prev', function(event){ if($(".is-selected").attr("prev-page") != undefined && $(".is-selected").attr("prev-page") != "") { var prevpage = $(".is-selected").attr("prev-page"); } //go to prev step - if available if(prevpage != undefined) { location.href=prevpage; } else if( !$(event.target).hasClass('inactive') ) { changeStep(tourSteps, coverLayer, 'prev'); } // ( !$(event.target).hasClass('inactive') ) && changeStep(tourSteps, coverLayer, 'prev'); }); tourStepInfo.on('click', '.cd-next', function(event){ if($(".is-selected").attr("next-page") != undefined && $(".is-selected").attr("next-page") != "") { var nextpage = $(".is-selected").attr("next-page"); } //go to next step - if available if(nextpage != undefined) { location.href=nextpage; } else if( !$(event.target).hasClass('inactive') ) { changeStep(tourSteps, coverLayer, 'next'); } }); //close tour tourStepInfo.on('click', '.cd-close', function(event){ closeTour(tourSteps, tourWrapper, coverLayer); }); tourStepInfo.on('click', '.cd-wclose', function(event){ window.close(); }); //detect swipe event on mobile - change visible step tourStepInfo.on('swiperight', function(event){ //go to prev step - if available if( !$(this).find('.cd-prev').hasClass('inactive') && viewportSize() == 'mobile' ) changeStep(tourSteps, coverLayer, 'prev'); }); tourStepInfo.on('swipeleft', function(event){ //go to next step - if available if( !$(this).find('.cd-next').hasClass('inactive') && viewportSize() == 'mobile' ) changeStep(tourSteps, coverLayer, 'next'); }); //keyboard navigation $(document).keyup(function(event){ if( event.which=='37' && !tourSteps.filter('.is-selected').find('.cd-prev').hasClass('inactive') ) { changeStep(tourSteps, coverLayer, 'prev'); } else if( event.which=='39' && !tourSteps.filter('.is-selected').find('.cd-next').hasClass('inactive') ) { changeStep(tourSteps, coverLayer, 'next'); } else if( event.which=='27' ) { closeTour(tourSteps, tourWrapper, coverLayer); } }); } function createNavigation(steps, n) { var tourNavigationHtml = '
Close'; var tourNavigationEndHtml = 'Close'; steps.each(function(index){ var html = ""; var step = $(this), stepNumber = index + 1; var np = $("#step"+stepNumber).attr("next-page"); var pp = $("#step"+stepNumber).attr("prev-page"); if(np != undefined) { nextClass = ''; html = tourNavigationHtml; } else { nextClass = ( stepNumber < n ) ? '' : 'inactive'; html = ( stepNumber < n ) ? tourNavigationHtml : tourNavigationEndHtml; } if(pp != undefined) { prevClass = ''; } else { prevClass = ( stepNumber == 1 ) ? 'inactive' : ''; } // prevClass = ( stepNumber == 1 ) ? 'inactive' : ''; var nav = $(html).find('.cd-next').addClass(nextClass).end().find('.cd-prev').addClass(prevClass).end().find('.cd-actual-step').html(stepNumber).end().appendTo(step.children('.cd-more-info')); }); } function showStep(step, layer) { step.addClass('is-selected').removeClass('move-left'); smoothScroll(step.children('.cd-more-info')); showLayer(layer); } function smoothScroll(element) { // (element.offset().top < $(window).scrollTop()) && $('body,html').animate({'scrollTop': element.offset().top}, 100); // (element.offset().top + element.height() > $(window).scrollTop() + $(window).height() ) && $('body,html').animate({'scrollTop': element.offset().top + element.height() - $(window).height()}, 100); var off = $("#guide_scr").offset(); var box_hc = element.offset().top + element.height()/2; var par_hc = $("#guide_scr").height()/2; if(box_hc>par_hc) { var mv = box_hc-par_hc; var stp = $("#guide_scr").scrollTop()+mv $("#guide_scr").animate({'scrollTop': stp}, 300); } else if(box_hc