Main Content
Waverly Woods is set on beautiful rolling and often wooded terrain. Five sets of tees ranging from 4808 to 7024 yards make the course enjoyable for golfers of all skill levels.
Junior Programming
A fun, safe, and educational environment designed with your child in mind.
Tee Times
Waverly Woods utilizes dynamic pricing. So there’s an opportunity to play for the rate you want to pay.
Outings
Our fantastic team will make sure your tournament is an event to remember.
Instruction
The teaching facilities at Waverly Woods are some of the finest in the state of Maryland. Lessons are conducted on the expansive practice facilities which include a large grass surface driving range, top-notch bent grass putting green, and a separate chipping green with sand bunkers.
Waverly Woods Golf Club offers several top-notch instructors to choose from. No matter what your skill level, these teachers will help you improve every aspect of your golf game.
Junior Programming
Summer Junior Camps at Waverly Woods are a fantastic way to grow the game of golf; perfect for the beginner or intermediate player.
Leagues
We have leagues for all ages and player types. Play golf with some of the finest company and enjoy the community at Waverly Woods.
WHAT THEY SAY
-
-
A must play for the serious area golfer.
– The Washington Times -
Rivals the area’s most elite clubs.
– Baltimore Sun
-
var $ = $.noConflict();
(function($) {
var Slider = (function () {
function _Slider(element, settings) { this.defaults = { slideDuration: \'5000\', speed: 500 /* , arrowRight: \'.right-arrow\', arrowLeft: \'.left-arrow\' */ };
this.settings = $.extend({}, this.defaults, settings);
this.initials = { currentSlide: 0, $currentSlide: null, totalSlides: false, cssTransitions: false };
$.extend(this, this.initials);
this.$el = $(element);
this.changeSlide = $.proxy(this.changeSlide, this);
this.init();
}
return _Slider;
})();
Slider.prototype.init = function () { this.cssTransitionTest(); this.$el.addClass(\'slider\'); this.build(); this.events(); this.activate(); this.initTimer(); };
Slider.prototype.cssTransitionTest = function () { var elem = document.createElement(\'modernizr\');
var props = [\'transition\', \'WebkitTransition\', \'MozTransition\', \'OTransition\', \'msTransition\'];
for (var i in props) { var prop = props[i]; var result = elem.style[prop] !== undefined ? prop : false; if (result) { this.cssTransitions = result; break; } } };
Slider.prototype.addCSSDuration = function () { var sliderModule = this;
sliderModule.$el.find(\'.testimonial-slide\').each(function () {
this.style[sliderModule.cssTransitions + \'Duration\'] = sliderModule.settings.speed + \'ms\'; }); };
Slider.prototype.removeCSSDuration = function () { var sliderModule = this;
//here we are using \'this\' but we can also write sliderModule //since we are refering to the same element...shorter and cleaner this.$el.find(\'.testimonial-slide\').each(function () { this.style[sliderModule.cssTransitions + \'Duration\'] = \'\'; }); };
//create indicator dots below which also have the functionality //as the arrows Slider.prototype.build = function () { var $indicators = this.$el.append(\"
- \").find(\'.dots-wrapper\');
this.totalSlides = this.$el.find(\'.testimonial-slide\').length;
for (var i = 0; i < this.totalSlides; i++) {
$indicators.append(\"
- \");
}
};
Slider.prototype.activate = function () { this.$currentSlide = this.$el.find(\'.testimonial-slide\').eq(0); this.$el.find(\'.dots-wrapper li\').eq(0).addClass(\'active\'); };
Slider.prototype.events = function () { $(\'body\') .on(\'click\', this.settings.arrowRight, { direction: \'right\' }, this.changeSlide) .on(\'click\', this.settings.arrowLeft, { direction: \'left\' }, this.changeSlide) .on(\'click\', \'.dots-wrapper li\', this.changeSlide); };
Slider.prototype.clearTimer = function () { if (this.timer) { clearInterval(this.timer); } };
Slider.prototype.initTimer = function () { this.timer = setInterval( this.changeSlide, this.settings.slideDuration); };
Slider.prototype.startTimer = function () { this.initTimer(); this.throttle = false; };
Slider.prototype.changeSlide = function (e) { if (this.throttle) { return; } this.throttle = true;
this.clearTimer();
var direction = this._direction(e);
var animate = this._next(e, direction); if (!animate) { return; }
var $nextSlide = this.$el.find(\'.testimonial-slide\').eq(this.currentSlide).addClass(direction + \' active\');
if (!this.csstransitions) { this._jsAnimation($nextSlide, direction); } else { this._cssAnimation($nextSlide, direction); } };
Slider.prototype._direction = function (e) { var direction; if (typeof e !== \'undefined\') { direction = (typeof e.data === \'undefined\' ? \'right\' : e.data.direction); } else { direction = \'right\'; } return direction; };
Slider.prototype._next = function (e, direction) { var index = (typeof e !== \'undefined\' ? $(e.currentTarget).data(\'index\') : undefined); switch (true) { case (typeof index !== \'undefined\'): if (this.currentSlide == index) { this.startTimer(); return false; } this.currentSlide = index; break; case (direction == \'right\' && this.currentSlide < (this.totalSlides - 1)): this.currentSlide++; break; case (direction == \'right\'): this.currentSlide = 0; break; case (direction == \'left\' && this.currentSlide === 0): this.currentSlide = (this.totalSlides - 1); break; case (direction == \'left\'): this.currentSlide--; break; } return true; }; Slider.prototype._cssAnimation = function ($nextSlide, direction) { setTimeout(function () { this.$el.addClass(\'transition\'); this.addDuration(); this.$currentSlide.addClass(\'shift\' + direction); }.bind(this), 100); setTimeout(function () { this.$el.removeClass(\'transition\'); this.removeCSSDuration(); this.$currentSlide.removeClass(\'active shift-left shift-right\'); this.$currentSlide = $nextSlide.removeClass(direction); this._updateIndicators(); this.startTimer(); }.bind(this), 100 + this.settings.speed); }; Slider.prototype._jsAnimation = function ($nextSlide, direction) { var sliderModule = this; if (direction == \'right\') { sliderModule.$currentSlide.addClass(\'js-reset-left\'); } var animation = {}; animation[direction] = \'0%\'; var animationPrev = {}; animationPrev[direction] = \'100%\'; this.$currentSlide.animate(animationPrev, this.settings.speed); $nextSlide.animate(animation, this.settings.speed, \'swing\', function () { sliderModule.$currentSlide.removeClass(\'active js-reset-left\').attr(\'style\', \'\'); sliderModule.$currentSlide = $nextSlide.removeClass(direction).attr(\'style\', \'\'); sliderModule._updateIndicators(); sliderModule.startTimer(); }); }; Slider.prototype._updateIndicators = function () { this.$el.find(\'.dots-wrapper li\').removeClass(\'active\').eq(this.currentSlide).addClass(\'active\'); }; $.fn.Slider = function (options) { return this.each(function (index, el) { el.Slider = new Slider(el, options); }); }; })($); var args = { arrowRight: \'.right-arrow\', arrowLeft: \'.left-arrow\', speed: 500, slideDuration: 5000 }; $(\'.testimonial\').Slider(args); var biggestHeight = \"0\"; $(\".testimonial .testimonial-ul > .testimonial-slide.active\").each(function(){ if ($(this).height() > biggestHeight ) { biggestHeight = $(this).height() } });
$(\".testimonial .testimonial-ul\").height(biggestHeight);