codefordayton/metroparks-tribute

View on GitHub
tribute_files/main.js

Summary

Maintainability
F
3 wks
Test Coverage
/**jQuery.browser.mobile (http://detectmobilebrowser.com/)**/
(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|android|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);

var isXs = (jQuery(window).width() <= 480);
var isSm = (jQuery(window).width() < 480);
var isMd = (jQuery(window).width() > 990);
var isLg = (jQuery(window).width() > 1200);

var isMobile = (jQuery(window).width() <= 550);

jQuery(document).ready(function($) {
  initGoogleFonts();
  initNavigation();
  initFooter();
  initHomePage();
  initParkPage();
  initActivityPage();
  initRentalPage();
  initActivityFinderPage();
  initAlertsPage();
  initBlog();
  initTrailsPage();
  initPermitPage();
  initDefaultPage();
  initInteractiveMap();
  initProgramsAndEvents();
  initBikeMonth(); 
  Retina.init();

  convertSVGToInline(); 
  customFeatureAd();
  alerts();
});


jQuery(window).load(function($) {
  //squareSectionAreas();
  //iOSLinkFix();
  jQuery('header').addClass('loaded');
  squareSectionAreas();
});


jQuery(window).on('resize', function($){
 //squareSectionAreas();
});

function initHomePage() {
  // Set up Swiper for homepage
  function homeSwiper() {
    var swiperSpeed = jQuery('.swiper-container').attr('data-slideshow-speed');
    var mySwiper = new Swiper('.swiper-container', {
        slidesPerView:'auto',
        centeredSlides: true,
        loop:true,
        loopedSlides:20,  
        spaceBetween: 10, 
        autoplay: swiperSpeed,
        speed: 1000,
        pagination: '.swiper-pagination',
        paginationClickable: true,
        nextButton: '.swiper-button-next',
        prevButton: '.swiper-button-prev',
    });  

    var ww = jQuery(window).width();
    jQuery(window).resize(function(){
        if (ww<=740) mySwiper.params.slidesPerView = 1;
        //parkFeatureswiper.reInit();
      });
      jQuery(window).trigger('resize');

    function swiperHover() {
      jQuery('.swiper-container').hover(function(){
        jQuery('.swiper-button-next').addClass('hover');
        jQuery('.swiper-button-prev').addClass('hover');
        mySwiper.stopAutoplay();
      });
      jQuery('.swiper-container').mouseleave(function(){
        jQuery('.swiper-button-next').removeClass('hover');
        jQuery('.swiper-button-prev').removeClass('hover');
        //mySwiper.params.autoplay = swiperSpeed;
        //mySwiper.startAutoplay();
      });
    }
    swiperHover(); 
  }
    
  if(jQuery('body').hasClass('page-template-page-home')) {
    homeSwiper();
  }
}

function initFooter() {
  jQuery('#feedback_popup').popup({
    /*outline: true, // optional
    focusdelay: 400, // optional
    vertical: 'top' //optional*/
  });

  jQuery('.footer-contact-button').click(function(){
    //if( !jQuery('.newsletter-email-input').val() ) {
       var queryString = '?footer-feedback-popup'; 

      //window.location.href = queryString;
      //location.search += queryString;

      var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + queryString;
      window.history.pushState({path:newurl},'',newurl);
    //}

  });

  if (window.location.href.indexOf("?footer-feedback-popup") > -1) {
    jQuery("html, body").animate({ scrollTop: jQuery(document).height() }, "slow");
    jQuery(".footer-contact-button").trigger("click");
  }

  jQuery('#newsletter_popup').popup({
    /*outline: true, // optional
    focusdelay: 400, // optional
    vertical: 'top' //optional*/
    onopen: function() {
      var inputVal = jQuery('.newsletter-email-input').val();
      if( inputVal.length > 0 ) {
        jQuery('.ginput_container_email').children('input').val(inputVal);
      }
    }
  });

  if (window.location.href.indexOf("?newsletter-email") > -1) {
    jQuery("html, body").animate({ scrollTop: jQuery(document).height() }, "slow");
    jQuery(".newsletter-submit-button").trigger("click");
  }

  jQuery('.newsletter-submit-button').click(function(){
    var inputVal = jQuery('.newsletter-email-input').val();
    //if( !jQuery('.newsletter-email-input').val() ) {
       var queryString = '?newsletter-email=' + inputVal; 

      //window.location.href = queryString;
      //location.search += queryString;

      var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + queryString;
      window.history.pushState({path:newurl},'',newurl);
    //}

  });
}

// Init Park & Park Area Pages
function initParkPage() {
  function expandParkDescription() {
      jQuery('.park-banner-description-button').click(function() {
        if(!jQuery(this).hasClass('open')) {
          jQuery(this).addClass('open');
          jQuery('.park-banner-description-expand').addClass('open');
        } else {
          jQuery(this).removeClass('open');
          jQuery('.park-banner-description-expand').removeClass('open');
        }
      });
  }

  function  parkFeatureSwiper() {
    var ww = jQuery(window).width();
    var slidesview = 3;
    if (ww<=740) {
      slidesview = 1; 
    }

    var slideNumber = jQuery('.park-feature-swiper-slide').length; 

    /*jQuery('.park-feature-swiper-slide').each(function(){
      console.log("yes");
      jQuery('.park-feature-swiper-pagination').append('<span class="swiper-pagination-bullet"></span>');
    });*/

    if(slideNumber  > 3) {
      var parkFeatureswiper = new Swiper('.park-features-swiper-container', {
         slidesPerView: slidesview,
          spaceBetween: 15,
          autoHeight: true,
          pagination: '.park-feature-swiper-pagination',
          paginationClickable: true,
          nextButton: '.park-feature-swiper-button-next',
          prevButton: '.park-feature-swiper-button-prev',
          //autoplay: 6000,
          speed: 400,
          simulateTouch: false, 
          //freeMode: true,
         /* breakpoints: {
          640: {
            slidesPerView: 1,
            spaceBetweenSlides: 
          }
        }*/
      });

      jQuery(window).resize(function(){
        if (ww<=740) parkFeatureswiper.params.slidesPerView = 1;
        //parkFeatureswiper.reInit();
      });
      jQuery(window).trigger('resize');
    } else {
      jQuery('.park-features-swiper-container').addClass('static');
      jQuery('.park-features-swiper-container').removeClass('swiper-container');
      jQuery('.park-features-swiper-wrapper').removeClass('swiper-wrapper');
      jQuery('.park-feature-swiper-pagination').css('display', 'none');
      jQuery('.park-feature-swiper-button-prev').css('display', 'none');
      jQuery('.park-feature-swiper-button-next').css('display', 'none');
    }

    var handler = onVisibilityChange(jQuery('.park-features-swiper-container'), function() {
          parkFeatureswiper.params.autoplay = 10000;
          parkFeatureswiper.startAutoplay();
      });

      jQuery(window).on('DOMContentLoaded load resize scroll', handler); 
  }

  function hoverParkMapInfo() {
    var amenityBtn = jQuery('.park-amenities-button');
    var amenityInfoBoxes = jQuery('.park-amenity-info-box');
    var closeButton = jQuery('.close-info-box-button');
    amenityBtn.click(function(){
      activityBtn.removeClass('open');
      amenityBtn.removeClass('open');
      btn = jQuery(this);
      btnData = jQuery(this).attr("data-info-button");
      findCorrespondingBox('Amenity', btn, btnData);
    });

    var activityBtn = jQuery('.park-activities-button');
    var activityInfoBoxes = jQuery('.park-activity-info-box');
    activityBtn.click(function(){
      activityBtn.removeClass('open');
      amenityBtn.removeClass('open');
      btn = jQuery(this);
      btnData = jQuery(this).attr("data-info-button");
      findCorrespondingBox('Activity', btn, btnData);
    });

    closeButton.click(function(){
      jQuery(this).siblings().removeClass('open');
      jQuery(this).removeClass('open');
      activityBtn.removeClass('open');
      amenityBtn.removeClass('open');
    });


    function findCorrespondingBox(typeOfBox, button, buttonData) {
      if(typeOfBox == "Amenity") {

        amenityInfoBoxes.each(function(){
        box = jQuery(this);
        boxData = jQuery(this).attr("data-info-box");
        if(buttonData == boxData && !button.hasClass('open')) {
          button.addClass('open');
          box.addClass('open');
          box.siblings().removeClass('open');
          closeButton.addClass('open');

          box.parent().siblings('.park-activities-info-boxes').children().removeClass('open');
          //if(isMobile) {
            
            jQuery('html,body').animate({
               scrollTop: jQuery(".park-amenities-section").offset().top - 150
            });
          //}
        } else if(buttonData == boxData && button.hasClass('open')){
          button.removeClass('open');
          box.removeClass('open');
          closeButton.removeClass('open');
        }
      });

    } else if (typeOfBox == "Activity") {
        activityInfoBoxes.each(function(){
        box = jQuery(this);
        boxData = jQuery(this).attr("data-info-box");

        if(buttonData == boxData && !button.hasClass('open')) {
          button.addClass('open');
          box.addClass('open');
          box.siblings().removeClass('open');
          closeButton.addClass('open');

          box.parent().siblings('.park-amenities-info-boxes').children().removeClass('open');
          //if(isMobile) {
            jQuery('html,body').animate({
               scrollTop: jQuery(".park-amenities-section").offset().top - 150
            });
         // }
        } else if (buttonData == boxData && button.hasClass('open')) {
          button.removeClass('open');
          box.removeClass('open');
          closeButton.removeClass('open');
        }
      });
      }
    }

  }

  function panMapImage() {
    var parkContentBox = jQuery('.park-amenities-section-row > div').last();
    var boxHeight = parkContentBox.height() - 50;
    var boxWidth = parkContentBox.width(); 

    var mapContainer = jQuery('.park-amenities-map-area').children('.pan-zoom').children('a').children('img');

    mapContainer.width(boxWidth);
    mapContainer.height(boxHeight);

    jQuery.panzoom('.pan-zoom a');

    var triggeredOnce = false;

    jQuery('.park-amenities-thumbnail-map').click(function(){
      if(!jQuery(this).hasClass('hidden') && jQuery(window).width() > 780 ) {
        jQuery('.pan-zoom').addClass('visible');
        jQuery('.pan-zoom a').trigger( "click" );
        jQuery(this).addClass('hidden');
        triggeredOnce = true;
      } else {
        jQuery('.pan-zoom').removeClass('visible');
        jQuery(this).removeClass('hidden');
      }
    });

    jQuery('.pan-zoom').click(function(){
      if(jQuery('.pan-zoom').hasClass('visible') && triggeredOnce === true) {
        jQuery('.pan-zoom').removeClass('visible');
        jQuery('.park-amenities-thumbnail-map').removeClass('hidden');
        triggeredOnce = false;
      }
    });
  }

  function parkAccordion() {
    var mainTitle = jQuery('.park-accordion-area > .main-title');

    mainTitle.click(function() {
      var content = jQuery(this).siblings('.park-accordion-content'); 
      if(!content.hasClass('open')) {
        content.addClass('open');
        jQuery(this).addClass('open');
      } else {
        content.removeClass('open');
        jQuery(this).removeClass('open');
      }
    });

    var subaccordion = jQuery('.park-accordion-wrap > h5');
    subaccordion.click(function(){
      var content = jQuery(this).siblings('.general-content');
      if(!content.hasClass('open')) {
        content.addClass('open');
        jQuery(this).addClass('open');
      } else {
        content.removeClass('open');
        jQuery(this).removeClass('open');
      }

      var expandbtn = jQuery('.expand-all-button');
      expandbtn.click(function(){
        if(!jQuery(this).hasClass('open')) {
          jQuery(this).addClass('open'); 
          subaccordion.siblings('.general-content').addClass('open');
          mainTitle.siblings('.park-accordion-content').addClass('open');
          mainTitle.addClass('open');
          subaccordion.addClass('open');
        } else {
          jQuery(this).removeClass('open'); 
          subaccordion.siblings('.general-content').removeClass('open');
          mainTitle.siblings('.park-accordion-content').removeClass('open');
          mainTitle.removeClass('open');
          subaccordion.removeClass('open');
        }
      });
    });
  }

  if(jQuery('body').hasClass('single-park_areas')) {
    expandParkDescription();
    hoverSocialShare();
    parkFeatureSwiper();
    hoverParkMapInfo();
    panMapImage();
    parkAccordion();

    if(jQuery('.subpage-banner-slide-background-image').length > 1) {
      subpageSwiper();
    } else {
      jQuery('.subpage-banner-swiper-slide').addClass('static-background');
      jQuery('.subpage-swiper-button-next').css('display', 'none');
      jQuery('.subpage-swiper-button-prev').css('display', 'none');
    }
  }
}

function initDefaultPage () {
  function setUpDefaultAccordion() {
    var accordArea = jQuery('.rental-collapse-area');
    if(window.location.hash) {
      var hash = window.location.hash.substr(1);
      jQuery('.rental-collapse-area').each(function() {
        if(jQuery(this).attr('id') === hash) {
          jQuery(this).addClass('open');
          jQuery('html, body').animate({
            scrollTop: jQuery(this).offset().top - 150
          }, 1000);
        }
      });

      jQuery('.inner-collapse').each(function(){
        if(jQuery(this).attr('id') === hash) {
          jQuery(this).addClass('open');
          jQuery('html, body').animate({
            scrollTop: jQuery(this).offset().top - 150
          }, 1000);
        }
      });
    }

    accordArea.children('h4').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        jQuery(this).parent().siblings().removeClass('open');
        var id = jQuery(this).parent().attr('id');
        window.location.hash=id;

        jQuery('html, body').animate({
            scrollTop: jQuery(this).parent().offset().top - 150
          }, 1000);
      } else {
        jQuery(this).parent().removeClass('open');
        window.location.href.replace( /#.*/, ""); 
        return false; 
      }
    });

    jQuery('.inner-collapse').children('h5').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        console.log(jQuery(this));
        jQuery(this).parent().siblings().removeClass('open');
        var id = jQuery(this).parent().attr('id');
        window.location.hash=id;

        jQuery('html, body').animate({
            scrollTop: jQuery(this).parent().offset().top - 150
          }, 1000);
      } else {
        jQuery(this).parent().removeClass('open');
      }
    });
  }
  if(jQuery('body').hasClass('page-template-default')){
    setUpDefaultAccordion();
  }
}

function initActivityPage () {
  function  activityFeatureSwiper() {
    var ww = jQuery(window).width();
    var slidesview = 3;
    if (ww<=740) {
      slidesview = 1; 
    }
    if(jQuery('.access-points-swiper-slide').length > 3) {
      var accessPointsswiper = new Swiper('.access-points-swiper-container', {
          slidesPerView: slidesview,
          spaceBetween: 15,
          autoHeight: true,
          pagination: '.access-points-swiper-pagination',
          paginationClickable: true,
          nextButton: '.access-points-swiper-button-next',
          prevButton: '.access-points-swiper-button-prev',
          //autoplay: 6000,
          speed: 400,
         /* breakpoints: {
          640: {
            slidesPerView: 1,
            spaceBetweenSlides: 
          }
        }*/
      });

      jQuery(window).resize(function(){
        if (ww<=740) accessPointsswiper.params.slidesPerView = 1;
        //parkFeatureswiper.reInit();
      })
      jQuery(window).trigger('resize');
    } else {
      jQuery('.access-points-swiper-container').addClass('static');
      jQuery('.access-points-swiper-container').removeClass('swiper-container');
      jQuery('.access-points-swiper-wrapper').removeClass('swiper-wrapper');
      jQuery('.access-points-swiper-pagination').css('display', 'none');
      jQuery('.access-points-swiper-button-prev').css('display', 'none');
      jQuery('.access-points-swiper-button-next').css('display', 'none');
    }

      var handler = onVisibilityChange(jQuery('.access-points-swiper-container'), function() {
          accessPointsswiper.params.autoplay = 10000;
          accessPointsswiper.startAutoplay();
      });

      jQuery(window).on('DOMContentLoaded load resize scroll', handler); 
  }

  function  programSwiper() {
    var ww = jQuery(window).width();
    var slidesview = 2;
    if (ww<=740) {
      slidesview = 1; 
    }
    if(jQuery('.programs-swiper-slide').length > 2) {
      var programsSwiper = new Swiper('.programs-swiper-container', {
          slidesPerView: slidesview,
          spaceBetween: 15,
          autoHeight: true,
          pagination: '.programs-swiper-pagination',
          paginationClickable: true,
          nextButton: '.programs-swiper-button-next',
          prevButton: '.programs-swiper-button-prev',
         /* breakpoints: {
          640: {
            slidesPerView: 1,
            spaceBetweenSlides: 
          }
        }*/
      });

      jQuery(window).resize(function(){
        if (ww<=740) programsSwiper.params.slidesPerView = 1;
        //parkFeatureswiper.reInit();
      })
      jQuery(window).trigger('resize');
    } else {
      jQuery('.programs-swiper-pagination').css('display', 'none');
      jQuery('.programs-swiper-button-prev').css('display', 'none');
      jQuery('.programs-swiper-button-next').css('display', 'none');
    }
  }

  function locationGallery() {
    var galleryBtn = jQuery('.has-gallery');

   galleryBtn.click(function(event){
      //event.preventDefault();
      if(jQuery(this).siblings('.access-points-content').children('.lightbox-gallery').length > 0) {
        var gallery = jQuery(this).siblings('.access-points-content').children('.lightbox-gallery'); 
        gallery.children('a:first-child').click();
      } else {
        return;
      }
    });

     jQuery('.lightbox-gallery').lightGallery(); 
  }

  if(jQuery('body').hasClass('single-activities')) {
    hoverSocialShare();
    activityFeatureSwiper();
    programSwiper();
    locationGallery();

     jQuery('.venue-light-gallery').lightGallery({
        youtubePlayerParams: {
          modestbranding: 1,
          showinfo: 0,
          rel: 0,
          controls: 0
        }
    });

    if(jQuery('.subpage-banner-slide-background-image').length > 1) {
      subpageSwiper();
    } else {
      jQuery('.subpage-banner-swiper-slide').addClass('static-background');
    }
  }
}

function initRentalPage() {
  function galleryRentalVenues() {
    var galleryBtn = jQuery('.venue-rental-gallery-button');

   galleryBtn.click(function(event){
      event.preventDefault();
      if(jQuery(this).siblings('.venue-light-gallery').length > 0) {
        var outdoorGallery = jQuery(this).siblings('.venue-light-gallery'); 
        outdoorGallery.children('a:first-child').click();
      } else {
        return;
      }
    });

     jQuery('.venue-light-gallery').lightGallery(); 
  }

  function rentalAccordianArea () {
    var accordArea = jQuery('.rental-collapse-area');

    if(window.location.hash) {
      var hash = window.location.hash.substr(1);
      jQuery('.rental-collapse-area').each(function() {
        if(jQuery(this).attr('id') === hash) {
          jQuery(this).addClass('open');
          jQuery('html, body').animate({
            scrollTop: jQuery(this).offset().top - 150
          }, 1000);
        }
      });
    }

    accordArea.children('h4').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        jQuery(this).parent().siblings().removeClass('open');
        var id = jQuery(this).parent().attr('id');
        window.location.hash=id;

        jQuery('html, body').animate({
            scrollTop: jQuery(this).parent().offset().top - 150
          }, 1000);
      } else {
        jQuery(this).parent().removeClass('open');
        window.location.href.replace( /#.*/, ""); 
        return false; 
      }
    });   

   /* accordArea.children('h4').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        jQuery(this).parent().siblings().removeClass('open');
      } else {
        jQuery(this).parent().removeClass('open');
      }
    });*/
  }

  if(jQuery('body').hasClass('page-template-page-rental')) {
    galleryRentalVenues();
    rentalAccordianArea();
  }
}

function subpageSwiper() {
  // Set up Swiper for homepage
  var swiperSpeed = jQuery('.subpage-swiper-container').attr('data-slideshow-speed');
  var mySwiper = new Swiper('.subpage-swiper-container', {
      slidesPerView:'auto',
      centeredSlides: true,
      loop:true,
      loopedSlides:20, 
      spaceBetween: 5, 
      //effect: "fade",
      autoplay: swiperSpeed,
      pagination: '.subpage-swiper-pagination',
      paginationClickable: true,
      nextButton: '.subpage-swiper-button-next',
      prevButton: '.subpage-swiper-button-prev',
  });  

  function swiperHover() {
    jQuery('.swiper-container').hover(function(){
      jQuery('.swiper-button-next').addClass('hover');
      jQuery('.swiper-button-prev').addClass('hover');
      mySwiper.stopAutoplay();
    });
    jQuery('.swiper-container').mouseleave(function(){
      jQuery('.swiper-button-next').removeClass('hover');
      jQuery('.swiper-button-prev').removeClass('hover');
      //mySwiper.params.autoplay = swiperSpeed;
      //mySwiper.startAutoplay();
    });
  }
  swiperHover(); 
}

function initActivityFinderPage () {
  function setUpGridListView() {
    var gridViewBtn = jQuery('.finder-grid-view');
    var listViewBtn = jQuery('.finder-list-view');
    var listingArea = jQuery('.finder-activities-listing-area');

    gridViewBtn.click(function() {
      if(!listingArea.hasClass('grid-view')) {
        listingArea.addClass('grid-view');
        listingArea.removeClass('list-view');
      }
    });

    listViewBtn.click(function() {
      if(!listingArea.hasClass('list-view')) {
        listingArea.addClass('list-view');
        listingArea.removeClass('grid-view');
      }
    });

    if(isMobile) {
      listingArea.addClass('list-view');
      listingArea.removeClass('grid-view');
    }
  }

  /*function findActivity() {
    post_ajax('.finder-activities-listing-area ul', 'activities', '', '', 'type_of_activity', 'activity', '', '', '-1');
    //$projects_q = custom_query($post_type = array( 'activities' ), $post_status = '', $category_name = '', $taxonomy = 'type_of_activity', $term = 'activity', $order = '', $orderby = '', $posts_per_page = -1);


    jQuery('.finder-dropdown-btn').click(function() {
        //e.preventDefault();

        //vars
        var post_type = jQuery(this).attr('data-post-type'),
        post_status = jQuery(this).attr('data-post-status'),
        category_name = jQuery(this).attr('data-category-name'),
        taxonomy = jQuery(this).attr('data-taxonomy'),
        term = jQuery(this).attr('data-term'),
        order = jQuery(this).attr('data-order'),
        orderby = jQuery(this).attr('data-orderby'),
        posts_per_page = jQuery(this).attr('data-posts-per-page'),
        target_elm = '.finder-activities-listing-area ul', 
        key = jQuery(this).attr('data-key'),
        value = jQuery('.finder-dropdown').val();
        
        if(category_name&&!taxonomy) {
          jQuery(this).attr('data-active', 'yes');
        }
        
        if(taxonomy) {
          jQuery.each(jQuery('.filter-link'), function() {
            var active = jQuery(this).attr('data-active');
            
            if(active == 'yes') {
              category_name = jQuery(this).attr('data-category-name');
            }
            
          });
        } */
        
        //post_ajax(target_elm, post_type, post_status, category_name, taxonomy, term, order, orderby, posts_per_page, key, value );
        
        /*$.each($('.page-template-page-landing .project'), function() {
          $(this).outerHeight( $(this).outerWidth() );
        });*/
                
      //});
  //}

  function findActivity() {

    jQuery(".finder-activities-listing-area ul > li").each(function(i) {
      jQuery(this).delay((i++) * 300).fadeTo(1000, 1);
    });

    if(window.location.search.length) {
      function getParameterByName(name, url) {
          if (!url) url = window.location.href;
          name = name.replace(/[\[\]]/g, "\\$&");
          var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
              results = regex.exec(url);
          if (!results) return null;
          if (!results[2]) return '';
          return decodeURIComponent(results[2].replace(/\+/g, " "));
      }

      var parkID = getParameterByName('park'); 
      jQuery('.finder-dropdown').val(parkID);

      jQuery('html, body').animate({
          scrollTop: jQuery('#activity-finder').offset().top + -100
      }, 'slow');

    } else {
        return;
    }
  }

  if(jQuery('body').hasClass('page-template-page-activity-finder')){
    hoverSocialShare();
    setUpGridListView();
    findActivity();
  }
}

function initAlertsPage() {
  function setUpExpandLinks() {
    jQuery('.alerts-page-alert-expand-btn').click(function() {
      if(!jQuery(this).hasClass('expanded')) {
        jQuery(this).addClass('expanded');
        jQuery(this).parent().siblings('.alerts-page-expand-info').addClass('expanded');
      } else {
        jQuery(this).removeClass('expanded');
        jQuery(this).parent().siblings('.alerts-page-expand-info').removeClass('expanded');
      }
    })
  }
  if(jQuery('body').hasClass('page-template-page-alerts')){
    setUpExpandLinks();
  }
}

function initBlog() {
  function setUpBlogSorting () {
    var sortList = jQuery('.blog-sorting-options');
    var sortListData = sortList.attr('data-sort');

    jQuery('.blog-sorting-options li').each(function(){
      if(jQuery(this).children().html() == sortListData) {
        jQuery(this).addClass('current');
      }
    })
  }

  function setUpPressSorting() {
    var url = window.location.search;
    if (window.location.href.indexOf("press-release") > -1) {
      jQuery("button[value='press-release']").addClass('current');
    } else if (window.location.href.indexOf("staff-article") > -1) {
       jQuery("button[value='staff-article']").addClass('current');
    } else if (window.location.href.indexOf("press-coverage") > -1) {
      jQuery("button[value='press-coverage']").addClass('current');
    } else {
      jQuery(".press-sorting-options .view-all").addClass('current');
    }
  }

  if(jQuery('body').hasClass('archive') || jQuery('body').hasClass('blog')){
    setUpBlogSorting();
  }
  if(jQuery('body').hasClass('page-template-page-press')) {
    setUpPressSorting();
  }
}

function initTrailsPage () {
  function trailsAccordianArea() {
    var accordArea = jQuery('.rental-collapse-area');

    if(window.location.hash) {
      var hash = window.location.hash.substr(1);
      jQuery('.rental-collapse-area').each(function() {
        if(jQuery(this).attr('id') === hash) {
          jQuery(this).addClass('open');
          jQuery('html, body').animate({
            scrollTop: jQuery(this).offset().top - 150
          }, 1000);
        }
      });
    }

    accordArea.children('h4').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        jQuery(this).parent().siblings().removeClass('open');
        var id = jQuery(this).parent().attr('id');
        window.location.hash=id;

        jQuery('html, body').animate({
            scrollTop: jQuery(this).parent().offset().top - 150
          }, 1000);
      } else {
        jQuery(this).parent().removeClass('open');
        window.location.href.replace( /#.*/, ""); 
        return false; 
      }
    });

    jQuery('.inner-collapse').children('h5').click(function(){
      if(!jQuery(this).parent().hasClass('open')) {
        jQuery(this).parent().addClass('open');
        /*jQuery(this).parent().siblings().removeClass('open');
        var id = jQuery(this).parent().attr('id');*/
      } else {
        jQuery(this).parent().removeClass('open');
      }
    });
  }

  if(jQuery('.trails-section').length > 0) {
    trailsAccordianArea();
  }
}

function initPermitPage() {
  if(jQuery('body').hasClass('page-template-page-permit')) {
    //squareSectionAreas();
  }
}

function initInteractiveMap() {
  function interactiveMapFormErrors() {
    /*jQuery('.sort-two-form input').keypress(function() {
      var value = jQuery(this).val();
      if (value.length != 5) {
        jQuery(this).parent().siblings('.error').addClass('visible');
      }
    });

    if (jQuery('.sort-two-form input').val().length === 5)  {
      alert("correct");
      jQuery(this).parent().siblings('.error').removeClass('visible');
    }*/

    jQuery('.sort-two-submit').click(function(event){
      var locatorInput = jQuery('#wpsl-search-input');
      event.preventDefault();
      jQuery('.interactive-park-map-area').remove();
  
      if (jQuery('.sort-two-form input').val().length === 5) {
        jQuery('.sort-two-form .error').removeClass('visible');
        var zipcodeValue = jQuery('.sort-two-form input').val(); 
        locatorInput.val(zipcodeValue);
        jQuery('#wpsl-search-btn').trigger('click');

        var resultList = jQuery('#wpsl-result-list'); 
        var resultMap = jQuery('#wpsl-gmap');
        var regularMap = jQuery('.interactive-park-map-area');
        var resultRow = jQuery('.interactive-map-park-listing-area');

        // Show result Wp Locator map
        resultMap.css('opacity', '1');
        resultMap.css('position','relative');
        resultMap.addClass('wp-locator-map-open');

        // Hide regular map that loads on default
        regularMap.remove();
        /*regularMap.css('opacity', '0');
        regularMap.css('position','absolute');
        regularMap.addClass('map-hidden');*/

        /*resultMap.css('display','block');
        regularMap.css('display','none');
        resultRow.addClass('original-row');
        resultList.append('resultList');
        resultRow.css('display', 'none');
        //resultList.addClass('interactive-map-park-listing-area');
        resultList.addClass('row');
        //jQuery('.sort-two-form').submit();*/
      } else {
        event.preventDefault();
        jQuery('.sort-two-form .error').addClass('visible');
        setInterval(function(){ 
          jQuery('.sort-two-form .error').removeClass('visible');
        }, 3000);
      }
    });
  }
  if(jQuery('body').hasClass('page-template-page-parks-map')) {
    interactiveParkMap();
    hoverSocialShare();
    //interactiveMapFormErrors();
  }
}

function initProgramsAndEvents() {
  function addListViewButtons() {
    jQuery('.subpage-headline').after('<div class="events-list-buttons-area"><button class="events-list-view-btn open" type="button"></button><button class="events-calendar-view-btn" type="button"></button></div>');
  } 

  function toggleListCalendarView() {
    jQuery('#insivia-frmp-calendar-listview').addClass('open');
    showSidebar();

    if(isMobile) {
      jQuery('#insivia-frmp-calendar-listview').addClass('open');
      showSidebar();
    }

     jQuery('.events-list-view-btn').click(function(){
      if(!jQuery(this).hasClass('open')) {
        jQuery(this).addClass('open');
        jQuery(this).siblings().removeClass('open');
        jQuery('#insivia-frmp-calendar').removeClass('open');
        jQuery('#insivia-frmp-calendar-listview').addClass('open');
        showSidebar();
      } 
    });

    jQuery('.events-calendar-view-btn').click(function(){
      if(!jQuery(this).hasClass('open')) {
        jQuery(this).addClass('open');
        jQuery(this).siblings().removeClass('open');
        jQuery('#insivia-frmp-calendar').addClass('open');
        jQuery('#insivia-frmp-calendar-listview').removeClass('open');
        hideSidebar();
      } 
    });

    function showSidebar() {
      jQuery('.col-m-12').addClass('col-m-9');
      jQuery('.col-m-12').removeClass('col-m-12');
      jQuery('.subpage-sidebar-area').css('display','block');
    }

    function hideSidebar() {
      jQuery('.col-m-9').addClass('col-m-12');
      jQuery('.col-m-9').removeClass('col-m-9');
      jQuery('.subpage-sidebar-area').css('display','none');
    }
  }
  if(jQuery('#insivia-frmp-calendar').length) {
    jQuery('body').addClass('programs-and-events');
    addListViewButtons();
    toggleListCalendarView();
  }
}

function initBikeMonth() {
  function bikeMonthNavigation() {
    var pageSlug = jQuery('.site-content').attr('data-page-slug'); 

    jQuery('.bike-site-menu li').each(function() {
      if(jQuery(this).hasClass(pageSlug)) {
        jQuery(this).children('a').addClass('current');
      }
    });

    jQuery('.bike-sidebar-expand-btn').click(function(){
      if(!jQuery(this).hasClass('open')) {
        jQuery(this).addClass('open');
        jQuery('.menu-bike-month-site-menu-container').addClass('open');
      }else {
        jQuery(this).removeClass('open');
        jQuery('.menu-bike-month-site-menu-container').removeClass('open');
      }
    });
  }
  if(jQuery('body').hasClass('single-bike_site')) {
    bikeMonthNavigation();
  }
}

function iOSLinkFix() {
 /*if(jQuery(window).width() <= 500){
    jQuery('a').on('click touchend', function(e) {
        if(jQuery(this).hasClass('disabled')) {
          return;
        }
        var el = jQuery(this);
        var link = el.attr('href');
        window.location = link;
    });
  }*/
}

function initGoogleFonts() { 
   WebFontConfig = {
   google: { families: [ 'Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic:latin' ] }
  };
  (function() {
    var wf = document.createElement('script');
    wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
      '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
    wf.type = 'text/javascript';
    wf.async = 'true';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(wf, s);
  })();
}

function squareSectionAreas() {
  function equalHeights(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = jQuery(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
  }

  if(jQuery('.home-box-description-content').length > 0 && !isMobile){
    equalHeights(jQuery('.home-box-description-content'));
  }

  if(jQuery('.park-banner-row').length > 0 && !isMobile) {
    equalHeights(jQuery('.park-banner-row').children('div'));
  }

  if(jQuery('.park-feature-content').length > 0 && !isMobile) {
    equalHeights(jQuery('.park-feature-content'));
  }

  if(jQuery('.park-amenities-section-row').length > 0 && jQuery(window).width() > 770){
    equalHeights(jQuery('.park-amenities-section-row > div'));
  }

  if(jQuery('.access-points-content').length > 0 && !isMobile) {
    equalHeights(jQuery('.access-points-content'));
  }

  if(jQuery('.activity-map-section').length > 0 && !isMobile){
    equalHeights(jQuery('.activity-map-section .row > div > div'));
  }

  if(jQuery('.programs-swiper-slide').length > 0 && !isMobile) {
    equalHeights(jQuery('.programs-swiper-slide'));
  }
  if(jQuery('.programs-description-row').length > 0 && !isMobile) {
    equalHeights(jQuery('.programs-description-row > div'));
  }
  if(jQuery('.activity-ad-resource-section').length > 0 && jQuery(window).width() > 850) {
    equalHeights(jQuery('.activity-ad-resource-section .activity-content-div'));
  }
  if(jQuery('.activity-ad-headline-area').length > 0 && !isMobile) {
   // equalHeights(jQuery('.activity-ad-headline-area'));
  }

}

function hoverSocialShare(){
  if(jQuery(window).width() < 780) { 
    jQuery('.share-hover-button').click(function(){
        jQuery('.share-hover-list').addClass('visible');
        jQuery(this).addClass('hidden');
      });
    } else {
      jQuery('.share-hover-button').hover(function(){
        jQuery('.share-hover-list').addClass('visible');
        jQuery(this).addClass('hidden');
      });

      jQuery('.share-hover-area').mouseleave(function(){
        if(jQuery('.share-hover-list').hasClass('visible')){
          jQuery('.share-hover-list').removeClass('visible');
          jQuery('.share-hover-button').removeClass('hidden');
        }
      });
    }
  }

jQuery.fn.extend({

  addTemporaryClass: function(className, duration) {
      var elements = this;
      setTimeout(function() {
          elements.removeClass(className);
      }, duration);

      return this.each(function() {
          jQuery(this).addClass(className);
      });
  }
});

// Turn off default ad if a custom ad exists
function customFeatureAd() {
  if(jQuery('.activity-ad-area').length > 0) {
    if(jQuery('.custom-feature').length > 0) {
      jQuery('.custom-feature').addClass('visible');
    } else {
      jQuery('.default-feature').addClass('visible');
    }
  }
}

// Set up alerts if alerts exist
function alerts() {
    if(jQuery('.alert').length > 0) {
      var alert = jQuery('.alert');
      var alertCloseBtn = jQuery('.alert-close-button');

      // If more than one alert, show only the first
      // Add number of extra alerts to the first alert
      // Add Read More after H2
      if(alert.length > 1) {
        alert.addClass('hidden');
        alert.first().removeClass('hidden');
        alert.first().children().append('<div class="alert-number">' + alert.length + '</div>');
        alert.children().children('h2').append('<a href="#" class="read-more">more</a>');
      }

      // Add Read More and ... to long alerts
      alert.first().children().children('h2').dotdotdot({
        after: "a.read-more"
      });

      // If number of alerts clicked, open all alerts
      jQuery('.alert-number').click(function(){
        alert.removeClass('hidden');
        jQuery(this).remove();

        alert.first().siblings().children().children('h2').dotdotdot({
          after: "a.read-more"
        });
      });

      // If Read More link clicked, expand alert
      jQuery('.read-more').click(function(e){
        e.preventDefault();
        var wrapper = jQuery(this).parent();
        wrapper.trigger("destroy");
        wrapper.addClass('expanded');
        wrapper.css('height','auto');
      });

      // If close button clicked, close out alerts
      alertCloseBtn.click(function(){
        var alert = jQuery(this).parent().parent();

        alert.addClass('close');

        alert.siblings().each(function(){
          if(jQuery(this).hasClass('hidden')) {
            jQuery(this).removeClass('hidden');

            jQuery(this).children().children('h2').dotdotdot({
              after: "a.read-more"
            });
          }
        });
      });
    }
}

function convertSVGToInline() {
  convertSVG();

  setTimeout(convertSVG, 900);
  function convertSVG () {
     jQuery('img.inline-svg').each(function(){
            var $img = jQuery(this);
            var imgID = $img.attr('id');
            var imgClass = $img.attr('class');
            var imgURL = $img.attr('src');

            jQuery.get(imgURL, function(data) {
                // Get the SVG tag, ignore the rest
                var $svg = jQuery(data).find('svg');

                // Add replaced image's ID to the new SVG
                if(typeof imgID !== 'undefined') {
                    //$svg = $svg.attr('id', imgID);
                }
                // Add replaced image's classes to the new SVG
                if(typeof imgClass !== 'undefined') {
                    $svg = $svg.attr('class', imgClass+' replaced-svg');
                }

                // Remove any invalid XML tags as per http://validator.w3.org
                $svg = $svg.removeAttr('xmlns:a');

                // Replace image with new SVG
                $img.replaceWith($svg);
                $svg.removeAttr('id');

            }, 'xml');
        });
  }
}


  //Assign to a variable so that we can use it anytime
  var post_ajax = function(target_elm, post_type, post_status, category_name, taxonomy, term, order, orderby, posts_per_page, key, value) {
    
    //Check if vars are empty and assign a default value if it is
    if(!post_type) { post_type = 'activity'; } 
    if(!post_status) { post_status = 'publish'; }
    if(!category_name) { category_name = ''; }
    if(!taxonomy) { taxonomy = ''; }
    if(!term) { term = ''; }
    if(!order) { order = 'ASC'; }
    if(!orderby) { orderby = 'date'; }
    if(!posts_per_page) { posts_per_page = -1; }
    if(!key) { key = ''; }
    if(!value) { value = ''; }


    //jQuery ajax call                
    jQuery.ajax({
      dataType:"html", //Return HTML
      type:"GET",
      url:"/wp-admin/admin-ajax.php", //WP Ajax core, target function MUST be registered and this page MUST be localized in the function file
      data: {
        'action' : 'ajax_post_load', //Name of target function
        'post_type' : post_type, //Assign var values to data array
        'post_status' : post_status,
        'category_name' : category_name,
        'order' : order,
        'orderby' : orderby,
        'posts_per_page' : posts_per_page,
        'taxonomy' : taxonomy,
        'term' : term,
        'key' : key,
        'value' : value
      },
      success : function(data) {
        //If it works
        console.log('successful');

        jQuery(target_elm).html(data);
        
        /*
         * data is what will be returned from your target php function
         * you would utilize jQuery to append the data to what ever container you would like
         * I'm in the proccess of making the target a variable so I am just printing everything
         * to the console
         **************************************************************************************/
         
        console.log(data);
      },
      error : function(xhr, textStatus, errorThrown) {
        //If it doesn't work
        console.error('error');
        //XMLHttpRequest
        console.log(xhr+ ' :: ' +textStatus+' :: '+errorThrown);
      }
    });
  };

  function onVisibilityChange(el, callback) {
      var old_visible;
      return function () {
          var visible = isElementInViewport(el);
          if (visible != old_visible) {
              old_visible = visible;
              if (typeof callback == 'function') {
                  callback();
              }
          }
      }
    }

  function isElementInViewport (el) {

    //special bonus for those using jQuery
    if (typeof jQuery === "function" && el instanceof jQuery) {
        el = el[0];
    }

    var rect = el.getBoundingClientRect();

    return (
        rect.top >= 0 &&
        rect.left >= 0 &&
        rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
        rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
    );
}
  
  //Call the function from any where
  //post_ajax('portfolio', 'publish', 'branding-category', 'project-type', 'annual-reports' );
  


/*
function isScrolledIntoView(elem)
{
    var $elem = jQuery(elem);
    var $window = jQuery(window);

    var docViewTop = $window.scrollTop();
    var docViewBottom = docViewTop + $window.height();

    var elemTop = $elem.offset().top;
    var elemBottom = elemTop + $elem.height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}*/