var NN = NN || {};

(function ($, document, NN) {
    'use strict';

    NN.hashHighlight = function (className) {
        var hash = document.location.hash.replace('#', '');
        className = className || 'hashDestination';

        if (hash) {
            // old destinations
            $('.' + className).removeClass(className);
            $('.' + className + 'Parent').removeClass(className + 'Parent');
            $('.' + className + 'Next').removeClass(className + 'Next');
            $('.' + className + 'Previous').removeClass(className + 'Previous');

            // new destination
            $('#' + hash)
                .addClass(className)
                .parent().addClass(className + 'Parent').end()
                .prev().addClass(className + 'Previous').end()
                .next().addClass(className + 'Next');
        }
    };

    NN.hashHighlight.loadCSS = function (path) {
        $.get(path, function (css) {
            $('head').append('<style>' + css + '</style>');
        });
    };

    NN.hashHighlight.init = function (config) {
        if (config && config.className) {
            if (config.cssFile) {
                NN.hashHighlight.loadCSS(config.cssFile);
            }

            $(document).ready(function () {
                NN.hashHighlight(config.className);
            });
            $(window).bind('hashchange', function () {
                NN.hashHighlight(config.className);
            });
            NN.hashHighlight(config.className);
        }
    };
})(jQuery, document, NN);
