/*
 * visualNavigation (visualNav) v2.1.2 minified
 * http://wowmotty.blogspot.com/2010/07/visual-navigation.html
 *
 * Copyright (c) 2010 Rob Garrison (aka Mottie & Fudgey)
 * Dual licensed under the MIT and GPL licenses.
 *
 * Plugin base: http://starter.pixelgraphics.us/
 */

(function(b){b.visualNav=function(d,g){var a=this;a.$el=b(d);a.el=d;a.$el.data("visualNav",a);a.w=window;a.win=b(a.w);a.doc=b(document);var k="html, body";b("html, body").each(function(){var c=b(this).attr("scrollTop");b(this).attr("scrollTop",c+1);if(b(this).attr("scrollTop")===c+1){k=this.nodeName.toLowerCase();b(this).attr("scrollTop",c);return false}});a.body=b(k);a.init=function(){a.options=b.extend({},b.visualNav.defaultOptions,g);a.body.bind("scroll mousedown DOMMouseScroll mousewheel keyup", function(c){if(c.which>0||c.type==="mousedown"||c.type==="mousewheel")a.body.stop()});a.$el.find(a.options.link).add(b("."+a.options.contentLinks)).click(function(){var c=this.tagName==="A"?"href":a.options.targetAttr;a.animate(b(this).attr(c));return false});a.win.scroll(function(){a.findLocation()}).resize(function(){a.findLocation()})};a.animate=function(c){if(c!=="#"&&b(c).length){var f=Math.min(b(c).offset().top,a.doc.height()-a.win.height());a.body.stop().animate({scrollTop:f},a.options.animationTime, function(){a.w.location.hash=c})}};a.findLocation=function(){var c,f,e,l,h,m=a.win.scrollTop(),i=m+a.win.height(),n=a.doc.height(),j=a.$el.find(a.options.selectedAppliedTo).removeClass(a.options.inViewClass);a.$el.find(a.options.link).each(function(o){e=b(this).attr(a.options.targetAttr);if(e==="#"||e.length<=1)e="";c=b(e);if(c.length){f=c.offset().top;h=c.outerHeight();l=f+h+a.options.bottomMargin;if(f<i&&(f+h-a.options.bottomMargin>m||l>i))j.eq(o).addClass(a.options.inViewClass)}});e=i+a.options.bottomMargin>= n?":last":":first";j.removeClass(a.options.selectedClass);j.filter("."+a.options.inViewClass+e).addClass(a.options.selectedClass)};a.init();a.findLocation()};b.visualNav.defaultOptions={link:"a",targetAttr:"href",inViewClass:"inView",selectedClass:"selected",selectedAppliedTo:"li",contentClass:"content",contentLinks:"visualNav",bottomMargin:100,animationTime:1200};b.fn.visualNav=function(d){return this.each(function(){var g=b(this).data("visualNav");typeof d==="string"&&/^#/.test(d)&&g.animate(d); g||new b.visualNav(this,d)})};b.fn.getvisualNav=function(){this.data("visualNav")}})(jQuery);

