/*(c)2010 Rob Garrison 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);a.body=b("html,body");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,k,h,l=a.win.scrollTop(),i=l+a.win.height(),m=a.doc.height(),j=a.$el.find(a.options.selectedAppliedTo).removeClass(a.options.inViewClass); a.$el.find(a.options.link).each(function(n){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();k=f+h+a.options.bottomMargin;if(f<i&&(f+h-a.options.bottomMargin>l||k>i))j.eq(n).addClass(a.options.inViewClass)}});e=i+a.options.bottomMargin>=m?":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:3000};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);
