(function($) {
    Share = $.klass({
        map: {
            facebook: 'sharer.php?u=@href@&t=@title@',
            twitter: 'home?status=@title@ @href@',
            digg: 'submit?url=@href@&title=@title@',
            delicious: 'post?v=4&noui&jump=close&url=@href@&title=@title@',
            stumbledupon: 'submit?url=@href@&title=@title@',
            reddit: 'submit?url=@href@&title=@title@'
        },

        initialize: function() {},
        
       
        onclick: function(evt) {
            var el = evt.target;
            if (el.nodeName.toLowerCase() !== 'a') {
                el = $(evt.target).closest('a').get(0);
            };
            this.handle(el.href, el.id);
            return false;
        },
        

        getPageTitle: function(id) {
            var title = $.trim(document.title);
            return id === 'twitter' ? title : encodeURIComponent(title);
        },

        handle: function(url, id) {
            var re = /@(href|title)@/g;
            var o = {
                href: id === 'twitter' || id === 'digg' ? document.location.href : encodeURIComponent(document.location.href),
                title: this.getPageTitle(id)
            };
            var query = this.map[id].replace(re, function(m, p) { 
                return o[p]; 
            })
            window.open(url + query);
        }
    });
})(jQuery);
