var jsonPath = '/ELECTION/2008/primary/json/scorecard/';
var imgHost = 'http://i.l.cnn.net/cnn/';
var imgPath = '/.element/img/2.0/sect/election/';
var cnnParty;
var cnnCandidateID;
var statesWon = [];
var allStates = [];

function csiLoadCandidateResults( candID, candParty )
{
	var jsonFile = jsonPath+candParty+'.html';
	cnnParty = candParty;
	cnnCandidateID = candID;
	CSIManager.getInstance().call( jsonFile, '', 'cnnElexCText_0', loadCandidateDelegates, true );
	var listBoxOrder = ( cnnParty == 'D' ) ? ['DEMOCRATS','REPUBLICANS'] : ['REPUBLICANS','DEMOCRATS'];
        rearrangeSelectBox('cnnDD_elexCand_list', listBoxOrder, true);
}

function loadCandidateDelegates( obj )
{
	var html = '';
	var nationData = obj.nationraces;
	nationData.sort( function( a,b ) {
		if( a.winner )
		{
			if( b.winner )
			{
				if( a.tdelegates == b.tdelegates )
				{
					return 0;
				}
				else { return b.tdelegates - a.tdelegates; }
			}
			else { return -1; }
		}
		else if( b.winner ) { return 1; }
		else
		{
			return b.tdelegates - a.tdelegates;
		}
	});
	
	var cnnRanking = [];
	var candName = '';
	var candRank = 0;
	var currRank = 0;
	var candDels = 0;
	html += '<div class="cnnMagicNumText">Needed to Win<span class="cnnMagicNum">'
		+ obj.ctdelegatestowin + '</span></div>';
	html += '<div class="cnnElexCandTotals">';
	for( var i=0; i<nationData.length; i++ )
	{
		currRank = ( nationData[i].delegateorder + 1 );
		
		if( !cnnRanking[ currRank ] ) { cnnRanking[ currRank ] = 1; }
		else { cnnRanking[ currRank ]++; }
		
		if( nationData[i].id == cnnCandidateID )
		{
			candDels = nationData[i].tdelegates;
			candRank = currRank;
			statesWon = nationData[i].allstateswon;
			
			html += 'Delegate Total <img src="'+imgHost+imgPath
				+ 'primaries/results/common/asterik.gif" align="top" width="8" height="7" alt="*">'
				+ '<br><b>'+nationData[i].tcdelegates+'</b> ';
		}
	}
	for( var z=0; z<obj.candidates.length; z++ )
	{
		var cand = obj.candidates[z];
		if( cand.id == cnnCandidateID ) { candName = cand.fname + ' ' + cand.lname; }
	}
	html += '</div><div class="cnnElexCandPos">';

	if( candRank > 0 )
	{
		var suffix;

		if( candRank == 1 ) { suffix = 'ST'; }
		else if( candRank == 2 ) { suffix = 'ND'; }
		else if( candRank == 3 ) { suffix = 'RD'; }
		else { suffix = 'TH'; }
	
		html += '<div class="cnnElexCandPos">Currently in:</div>'
			+ '<div class="cnnElexCandPosValue">'+candRank+'</div>'
			+ '<div class="cnnElexCandPosDetails">'+suffix+' PLACE IN TOTAL DELEGATES';

		if( cnnRanking[ candRank ] > 1 )
		{
			var numTied = cnnRanking[ candRank ] - 1;
			html += ' (Tied with '+numTied+' candidate';
			if( numTied > 1 ) { html += 's'; }
			html += ')';
		}
		html += '</div>';
	}
	else
	{
		html += '<div style="min-height:64px;">&nbsp;</div>';
	}
	html += '<div class="clear"></div>';

	html += '<div class="cnnElexCandStates" style="margin-bottom:10px;"><b>States won: <img src="'+imgHost+imgPath+ 'primaries/results/common/asterik.gif" align="top" width="8" height="7" alt="*"></b><br>';
	var stateData = obj.stateraces;
	stateData.sort( function( a,b ) {
		if( a.lts > b.lts ) { return 1; }
		else if( a.lts < b.lts ) { return -1; }
		else
		{
			if( a.electiondate > b.electiondate ) { return 1; }
			else if( a.electiondate < b.electiondate ) { return -1; }
			else { return 0; }
		}
	});
	if( statesWon.length )
	{
		//for( var j=0; j<stateData.length; j++ )
		//{
			//allStates[ stateData[j].code ] = stateData[j].state;
		//}
		for( var l=0; l<statesWon.length; l++ )
		{
			var stateCode = statesWon[l];
			if( l != 0 ) { html += ' | '; }
		
			html += '<a href="/ELECTION/2008/primaries/results/state/#'+stateCode+'">'
				+ stateCode +'</a>';
		}
	}
	else { html += 'None'; }

	html += '</div>';
	var adj = ( cnnParty == 'D' ) ? 'Democratic' : 'Republican';
	html += '<div class="cnnElexCandFullScore">'
		+ '<a href="/ELECTION/2008/primaries/results/candidates/#'+cnnCandidateID+'">Full Results for '+candName+' &raquo;</a><br/>'
		+ '<a href="/ELECTION/2008/primaries/results/scorecard/#'+cnnParty+'">Full '+adj+' Results &raquo;</a></div>';
	
	var timeStampText = getElectionTimestamp(obj.lts,false);
	if(timeStampText.indexOf('ago') > -1){
		$('primaryTimeStamp').className='cnnHtTimestamp';
	}
	$('primaryTimeStamp').innerHTML = timeStampText;
	
	return html;
}

var curr_elex_ctext = '0';

function showElex_CText(text_id) {
	if(text_id != curr_elex_ctext) {
		document.getElementById("cnnElexCNav_" + curr_elex_ctext).className = '';
		document.getElementById("cnnElexCNav_" + text_id).className = 'active';

		if (document.getElementById) { document.getElementById('cnnElexCText_' + curr_elex_ctext).style.display = 'none'; }
		else if (document.all) { document.all['cnnElexCText_' + curr_elex_ctext].style.display = 'none'; }

		if (document.getElementById) { document.getElementById('cnnElexCText_' + text_id).style.display = 'block'; }
		else if (document.all) { document.all['cnnElexCText_' + text_id].style.display = 'block'; }

		curr_elex_ctext = text_id;

	}	
}
