var capsi_vote_xmlHttp

function voteUp( objectId )
{
	return vote( objectId, 'up', false )
}

function voteDown( objectId )
{
	return vote( objectId, 'down', false )
}

function favUp( objectId )
{
	return vote( objectId, 'up', true )
}

function favDown( objectId )
{
	return vote( objectId, 'down', true )
}

function vote( objectId, action, favOnly )
{
	// alert( 'vote ' + objectId + '/' + action + '/' + favOnly )
	capsi_vote_xmlHttp=GetXmlHttpObject()
	if (capsi_vote_xmlHttp==null)
		return false

	var url="/user/vote.html"
	var args = ""
	if ( favOnly )
	{
		args = "objectId=" + objectId + "&favOnly=1&action=" + action + "&sid=" + Math.random()
		var favDiv = document.getElementById( 'voteFav-' + objectId )
		favDiv.innerHTML = "<img src=\"http://content.capsi.com/img/crystal/action.gif\" width=\"16\" height=\"16\" alt=\"\" /> Updating favourites..."
	}
	else
		args = "objectId=" + objectId + "&action=" + action + "&sid=" + Math.random()

	capsi_vote_xmlHttp.onreadystatechange=voteStateChanged
	capsi_vote_xmlHttp.open("POST",url,true)
	capsi_vote_xmlHttp.setRequestHeader("Content-Type",  "application/x-www-form-urlencoded; charset=utf-8");
	capsi_vote_xmlHttp.send(args)

	return false
}

function voteStateChanged()
{
	if (capsi_vote_xmlHttp.readyState==4 || capsi_vote_xmlHttp.readyState=="complete")
	{ 
		var statusDiv = document.getElementById("vote-status");

		if (capsi_vote_xmlHttp.responseXML)
		{
			// alert( capsi_vote_xmlHttp.responseText );
                        var elAction = capsi_vote_xmlHttp.responseXML.getElementsByTagName("action")[0]
			var action = elAction.childNodes[0].nodeValue
			var elObjectId = capsi_vote_xmlHttp.responseXML.getElementsByTagName("objectId")[0]
			var objectId = elObjectId.childNodes[0].nodeValue

                        var elFavOnly = capsi_vote_xmlHttp.responseXML.getElementsByTagName("favOnly")[0]
			var favOnly = elFavOnly.childNodes[0].nodeValue

			if ( favOnly == 1 )
			{
				var favDiv = document.getElementById( 'voteFav-' + objectId )
				favDiv.innerHTML = getFavIconHtml( objectId, (action!="up") )

				var favTxt = document.getElementById( 'favTxt-' + objectId )
				if ( favTxt )
					favTxt.innerHTML = (action=="up") ? "in" : "not in"
			}
			else
			{
	                        var elScore = capsi_vote_xmlHttp.responseXML.getElementsByTagName("score")[0]
				var score = elScore.childNodes[0].nodeValue
	                        var elUp = capsi_vote_xmlHttp.responseXML.getElementsByTagName("up")[0]
				var up = elUp.childNodes[0].nodeValue
	                        var elDown = capsi_vote_xmlHttp.responseXML.getElementsByTagName("down")[0]
				var down = elDown.childNodes[0].nodeValue

				var upDiv = document.getElementById( 'voteup-' + objectId )
				upDiv.innerHTML = getIconHtml( objectId, 'up', (action!="up") )

				var downDiv = document.getElementById( 'votedown-' + objectId )
				downDiv.innerHTML = getIconHtml( objectId, 'down', (action!="down") )

				var scoreSpan = document.getElementById( 'score-' + objectId )
				scoreSpan.innerHTML = score
				var upSpan = document.getElementById( 'scoreUp-' + objectId )
				upSpan.innerHTML = up
				var downSpan = document.getElementById( 'scoreDown-' + objectId )
				downSpan.innerHTML = down
			}
		}
		else if (capsi_vote_xmlHttp.responseText)
		{
			// statusDiv.innerHTML=capsi_vote_xmlHttp.responseText
			alert( capsi_vote_xmlHttp.responseText );
		}
		else
		{
			// statusDiv.innerHTML="SNH. Contact Rob (error code: JS-SPCS-NOXML)."
			alert( "SNH. Contact Rob (error code: JS-VTRS-NOXML)." );
		}
	}
}

function getIconHtml( objectId, action, enabled )
{
	var icon = getIcon( action, enabled )

	var txt = "<a href=\"/user/vote.html?objectId=" + objectId +  "&action=" +  action +  "\" onclick=\"return vote(" + objectId + ", '" +  action +  "')\">"
	txt += "<img class=\"noborder\" src=\"http://content.capsi.com/img/crystal/" + icon + ".png\" width=\"16\" height=\"16\" alt=\"Vote " +  action +  "\" title=\"Vote " +  action +  "\" />"
	txt += "</a>"

	// alert(txt)
	return txt
}

function getIcon ( action, enabled )
{
	var icon = "smiley_" + action
	if ( !enabled )
		icon += "_grey"
	return icon
}

function getFavIconHtml( objectId, add )
{
	var icon = getFavIcon( add )
	var action = "add"
	var jsAction = "favUp"
	var title = "Add to favourites"
	if ( !add )
	{
		action = "down"
		jsAction = "favDown"
		title = "Remove from favourites"
	}

	var txt = "<a href=\"/user/vote.html?objectId=" + objectId +  "&favOnly=1&action=" +  action +  "\" onclick=\"return " + jsAction + "(" + objectId + ")\">"
	var txt = txt + "<img class=\"noborder\" src=\"http://content.capsi.com/img/crystal/" + icon + ".png\" width=\"16\" height=\"16\" alt=\"" +  title +  "\" title=\"" +  title +  "\" />"
	var txt = txt + "</a>"

	// alert(txt)
	return txt
}

function getFavIcon ( add )
{
	var icon = ( add ? "add" : "remove" )
	return icon
}
