dojo.addOnLoad(function() {
    dojo.query('.favourite').connect('click', function(e) {
        dojo.stopEvent(e);
        dojo.xhrGet({
            url: e.target.href,
            error: function() {alert('Oh dear, adding to favourites failed')},
            load: function() {
                if (dojo.hasClass(e.target, 'addFavourite')) {
                    e.target.href = e.target.href.replace('add', 'del');
                    e.target.title = e.target.title.replace('Add', 'Del');
                    dojo.addClass(e.target, 'delFavourite');
                    dojo.removeClass(e.target, 'addFavourite');
                } else {
                    e.target.href = e.target.href.replace('del', 'add');
                    e.target.title = e.target.title.replace('Del', 'Add');
                    dojo.addClass(e.target, 'addFavourite');
                    dojo.removeClass(e.target, 'delFavourite');
                }
            }
        });
    });

    dojo.query('.vote').connect('click', function(e) {
        dojo.stopEvent(e);
        dojo.xhrGet({
            url: e.target.href,
            error: function() {alert('Oh dear, we couldn\' cast your vote')},
            handleAs: 'json',
            load: function(response) {
                if (!dojo.hasClass(e.target, 'current')) {
                    dojo.query('a.vote').removeClass('current');
                    dojo.addClass(e.target, 'current');
                } else {
                    dojo.query('a.vote').removeClass('current');
                }

                dojo.query('.up').forEach(function(el) { el.href = el.href.replace('neutral', 'up');});
                dojo.query('.down').forEach(function(el) { el.href = el.href.replace('neutral', 'down');});
                dojo.query('.current').forEach(function(el) { el.href = el.href.replace('up', 'neutral');});
                dojo.query('.current').forEach(function(el) { el.href = el.href.replace('down', 'neutral');});

                if (response.points != undefined) {
                    dojo.query('.points').forEach(function(el) { el.innerHTML = response.points;});
                    dojo.query('.votes').forEach(function(el) { el.innerHTML = response.votes;});
                } 
            }
        });
    });

    /**
     * Add snippets
     */
    var similarSnippets = null;
    dojo.query('input#title').connect('onkeyup', function(evt) {
        if (similarSnippets) clearTimeout(similarSnippets);

        similarSnippets = setTimeout(function() {
            var url = '/snippets/search';
            dojo.xhrGet({
                content: {q: evt.target.value, format: 'html'},
                url: url,
                handleAs: 'text',
                load: function(response) {
                    dojo.empty('similar');
                    dojo.create('h4', {innerHTML:'Similar Snippets'}, 'similar', 'first');
                    console.log(response);
                    dojo.place(response, 'similar', 'last');
                }
            });
        }, 200);
    });
});


