/**
 * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/11/2009
 * @author Ariel Flesler
 * @version 1.2.7
 **/
;
(function($) {
    var l = location.href.replace( /#.*/ , '');
    var g = $.localScroll = function(a) { $('body').localScroll(a); };
    g.defaults = { duration: 1e3, axis: 'y', event: 'click', stop: true, target: window, reset: true };
    g.hash = function(a) {
        if (location.hash) {
            a = $.extend({ }, g.defaults, a);
            a.hash = false;
            if (a.reset) {
                var e = a.duration;
                delete a.duration;
                $(a.target).scrollTo(0, a);
                a.duration = e;
            }
            i(0, location, a);
        }
    };
    $.fn.localScroll = function(b) {
        b = $.extend({ }, g.defaults, b);
        return b.lazy ? this.bind(b.event, function(a) {
            var e = $([a.target, a.target.parentNode]).filter(d)[0];
            if (e) i(a, e, b);
        }) : this.find('a,area').filter(d).bind(b.event, function(a) { i(a, this, b); }).end().end();

        function d() {
            return !!this.href && !!this.hash && this.href.replace(this.hash, '') == l && (!b.filter || $(this).is(b.filter));
        }
    };

    function i(a, e, b) {
        var d = e.hash.slice(1), f = document.getElementById(d) || document.getElementsByName(d)[0];
        if (!f) return;
        if (a) a.preventDefault();
        var h = $(b.target);
        if (b.lock && h.is(':animated') || b.onBefore && b.onBefore.call(b, a, f, h) === false) return;
        if (b.stop) h.stop(true);
        if (b.hash) {
            var j = f.id == d ? 'id' : 'name', k = $('<a> </a>').attr(j, d).css({ position: 'absolute', top: $(window).scrollTop(), left: $(window).scrollLeft() });
            f[j] = '';
            $('body').prepend(k);
            location = e.hash;
            k.remove();
            f[j] = d;
        }
        h.scrollTo(f, b).trigger('notify.serialScroll', [f]);
    }
})(jQuery);
