function vote(model, id, direction, elementNumber) {
    universal_vote("discuss",model, id, direction, elementNumber);
}

// elementNumber is difficult to use with just a single entry, because it depends on a loop, 
// if u want to vote on an object in a 'detail'-view ...
function universal_vote(app, model, id, direction, elementNumber, wish) {
    var _wish = (typeof(wish) == 'undefined')?false:true;
    // Adds a vote to the given model, and updates
	// varius DOM elements with new states and values
	var url = '/'+app+'/'+model+'/'+id+'/'+direction+'/';
	var scoreSpan = $('#score'+elementNumber);
	$.ajax({
		url: url,
		data: 'proxyvar=1',
		type: 'POST',
		success: function(data) {
			var json = eval('(' + data + ')');
			if (!json['score']) {
			    dbzErrorHandler('No JSON response returned for Vote');
			    return;
			}
			var score = json.score.score;
			if (!wish) {
			    if (score > 0) {
			        score = '+' + score;
			    }
			}
			if (score == 0) score = "0";
			scoreSpan.text(score);
			if (score == "0") {
			    scoreSpan.css("color", '#424242');
			} else if (score < 0) {
			    scoreSpan.css("color", '#BC0000');
			} else if (score > 0) {
			    scoreSpan.css("color", '#3B8E00');
			}
		}
	});
	return false;
}

function calcPercent(points,total) {
    return 100.0/(total/points);
}

function spam(app, model, id, elementNumber) {
    var url = '/' + app + '/' + model + '/spam/' + id + '/';
    var marked_as_spam = document.createElement("div");
    marked_as_spam.className = 'marked-as-spam-message';
    marked_as_spam.appendChild(document.createTextNode('This entry has been marked as spam'));
    $.ajax({
        url: url,
        data: 'proxyvar=1',
        type: 'POST',
        success: function(data) {
            if(!elementNumber){
                // no elementNumber given
                $('.detailsinfo3').css("color", '#b3b3b3');
                $('.contact-poster').fadeOut('slow');
                return false;
            }
            if (elementNumber == 0) {
                //$('#listing-0').animate({color:'#FFFFFF'},{ queue:false, duration:500 });
                $('#listing-0').animate({opacity: 0.1}, { duration: 500, queue: false }, callback=function(){
                    $(this).empty().append(marked_as_spam).fadeIn('slow');
                });
            } else {
                $('#listing-' + elementNumber).fadeOut('slow', callback=function(){
                    $(this).empty().append(marked_as_spam).fadeIn('slow');
                });
            }
        }
    });
    return false;
}
