// refactored code for ajax voting in the spigit webapp

function errorDisplayed(responseText) {
	if (responseText.length >= 6 && (responseText.substring(0, 6) == "Error:" || responseText.substring(0, 5) == "error")) {
		if (responseText.substring(0, 5) == "error") responseText = responseText.substring(5);
		alert(responseText);
		return true;
	}
	return false;
}

function spigitVoteCallback(responseText, args) {
	var spig = args[0];
	var nodeId = args[1];
	var voteUrl = args[2];
	var targetelement = '';
	if (args.length > 3) targetElement = args[3];
	
	if (errorDisplayed(responseText))	return false;
	document.getElementById('nodeSpigScrap' + (targetelement=='big' ? 'B' : '') + nodeId).innerHTML = responseText;
	if (spig == -1) {
		updateVoteSummary('/Core/VoteUseCookieAjax?nodeid=', nodeId);
		return;
	}
	var otherNode = 'nodeSpigScrap' + (targetelement=='big' ? '' : 'B') + nodeId;
	if (document.getElementById(otherNode)) {
		spigNode(-1, nodeId, voteUrl, (targetelement=='big' ? 'buttons' : 'big'));
	}
}

function spigNode(spig, nodeId, voteUrl, targetelement) {
	var href = voteUrl + nodeId + '&hm=2&htmltype=' + targetelement + '&vote=' + spig;
	spigit_call_ajax(href, function(transport, args) {
        	spigitVoteCallback(transport.responseText, args);
        }, null, arguments);
        
}

function updateSpigs(elem, spigs) {
	var spigspan;
	spigspan = elem.getElementsByClassName('spigitvote');
	if (spigspan.length) spigspan[0].innerHTML = spigs;
}

function updateScraps(elem, scraps) {
	var scrapspan;
	scrapspan = elem.getElementsByClassName('scrapitvote');
	if (scrapspan.length) scrapspan[0].innerHTML = scraps;
}

function updateVoteSummaryCallback(responseText, nodeId) {
	if (errorDisplayed(responseText)) return false;
	if (responseText.length) {
		var votelist = new Array();
		votelist = responseText.split(':');
	} else {
		return false;
	}
	var span_sm = $('votesummaryspan_sm' + nodeId);
	var span = $('votesummaryspan' + nodeId);
	if (span_sm) { updateSpigs(span_sm, votelist[0]); updateScraps(span_sm, votelist[1]);}
	if (span) { updateSpigs(span, votelist[0]); updateScraps(span, votelist[1]);}
}

function updateVoteSummary(getvoteUrl, nodeId) {
	var href = getvoteUrl + nodeId + '&action=votecount';
    new Ajax.Request(href, {
        method: 'get',
        requestHeaders: [ 'If-Modified-Since', 'Thu, 1 Jan 1970 00:00:00 GMT' ],
        onSuccess: function(transport) {
        	updateVoteSummaryCallback(transport.responseText, nodeId);
        },
        onFailure: function(transport) {
            // We don't do anything on failure at this time.
        }
    });
}