/**
 * Created by IntelliJ IDEA.
 * Author: Eugene Syrota
 */

(function($) {

    var defaults = {
        ease: 'linear',
        activeClassName: 'active'
    };

    var options;

    $.fn.smoothMenu = function(params){

        options = $.extend({}, defaults, options, params);

        var $links = $(this);

        /* find referred blocks */
        $links.each(function(){

            var $this = $(this);
            var $item;

            var cssPath = $this.attr("href"); /* #id */
            if (cssPath != '#'){
                $item = $(cssPath);
                $this.data('item', $item);
            }

        });

        $links.click(function(){

            var $this = $(this);
//            location.hash = $this.attr("href");

            var $item = $this.data('item') || $("body");

            $('html,body').stop().animate({
                scrollTop: $item.offset().top
           }, 777, options.ease);

            return false;
        });

        function changeActiveState(){

            var scrollTop = $(this).scrollTop();
            var $activeLink;

            $links.each(function(){

                var $this = $(this);
                var $item = $this.data('item');
                if ($item){
                    var position = $item.position().top - scrollTop;
                    if (position <= 5){
                        $activeLink = $this;
                    }
                }

            });

            var $parent = $activeLink.parent();

            if ( !$parent.hasClass(options.activeClassName) || $('.' + options.activeClassName).length == 0){

                $links.parent().removeClass(options.activeClassName);
                $parent.addClass(options.activeClassName);

            }

        }

        changeActiveState();
        $(window).scroll(changeActiveState);

        return this;
    };
})(jQuery);


