function GetEquity()
{
	// Set all user inputs into various arrays:
	var chips=new Array();	//Number of chips for each player
	var payouts=new Array();	//Payout for each finishing position
	var equity=new Array();	//Equity for each player
	var chipsA=new Array();
	var equityA=new Array();
	var chipsB=new Array();
	var equityB=new Array();
	var i;
	// Grab variables
	for (i=1;i<=9;i++)
	{
		chips[i]=document.getElementById("play"+i+"chips").value;
		chipsA[i]=document.getElementById("play"+i+"chipsA").value;
		chipsB[i]=document.getElementById("play"+i+"chipsB").value;
		if (chips[i]=="") chips[i]="0";
		if (chipsA[i]=="") chipsA[i]="0";
		if (chipsB[i]=="") chipsB[i]="0";
		chips[i]=parseInt(chips[i]);
		payouts[i]=document.getElementById("place"+i+"pay").value;
		if (payouts[i]=="") payouts[i]="0";
		payouts[i]=parseFloat(payouts[i]);
		if ((payouts[i]!=0)&&(chips[i]==0)) alert("There are more payouts than players in the base scenario.  Finishing positions higher than "+(i-1)+" will be ignored.");
		equity[i]=0;
		equityA[i]=0;
		equityB[i]=0;
	}
	//Grab the equities
	for (i=1;i<=9;i++)
	{
		Equity(i,chips,equity,1,payouts,1);
		Equity(i,chipsA,equityA,1,payouts,1);
		Equity(i,chipsB,equityB,1,payouts,1);
	}
	//Print out the results.
	for (i=1;i<=9;i++)
	{
		document.getElementById("play"+i+"equity").innerHTML=(equity[i]).toFixed(5);	//Only because of rounding errors - 5 is pretty close anyway.
		document.getElementById("play"+i+"equityA").innerHTML=(equityA[i]).toFixed(5);
		document.getElementById("play"+i+"equityB").innerHTML=(equityB[i]).toFixed(5);
	}
	// Still need to determine if the decision made by the player is a good one - compare equities in A and B relative to their likelihoods
	var player=parseInt(document.getElementById("player").value);
	if (player==0) return;
	var likelihoodA=parseFloat(document.getElementById("likelihoodA").value)/100;
	var likelihoodB=parseFloat(document.getElementById("likelihoodB").value)/100;
	var avgEquity=equityA[player]*likelihoodA+equityB[player]*likelihoodB;
	var results="Average Equity after move: "+avgEquity.toFixed(5)+" (<strong>";
	var diff=(avgEquity-equity[player]).toFixed(5);
	if (diff>=0) diff="+"+diff;
	if (diff<0) diff="<span style='color:#f00;'>"+diff+"</span>";
	results=results+diff+"</strong> equity)";
	if (avgEquity>equity[player])
		results=results+".  This would be a good move.";
	if (avgEquity<equity[player])
		results=results+".  This would be a bad move.";
	document.getElementById("playermessage").innerHTML=results;
}
/**
input = which input was just updated by the user (the other input will be updated by us).
If input is <0 or >100, default it to 0 or 100, respectively
*/
function updateLikelihood(input)
{
	if (input=="A")
	{
		userData="likelihoodA";
		autoData="likelihoodB";
	}
	else if (input=="B")
	{
		userData="likelihoodB";
		autoData="likelihoodA";
	}
	else return;	// not called by us
	var userInput=document.getElementById(userData).value;
	if (userInput=="") userInput=0;
	userInput=parseFloat(userInput);
	if (userInput<0) userInput=0;
	if (userInput>100) userInput=100;
	autoInput=100-userInput;
	document.getElementById(userData).value=userInput;
	document.getElementById(autoData).value=autoInput
}
/**
player = For which player are we determining their equity
chipstacks = The chipstacks of all players whose equity hasn't been determined
equitys = Running total of each player's equity
odds = The odds of this situation occurring so far
	(i.e., odds of player 1 taking 1st and 4 taking 2nd BEFORE we look at 3rd place potentials)
payouts = The payouts of each position
place = The place for which we are examining equity
*/
function Equity(player,chipstacks,equitys,odds,payouts,place)
{
	if (chipstacks[player]==0) return; //0 chips = 0 equity
	var totalchips=0;
	var newstacks=new Array();
	for (p in chipstacks)
		totalchips+=parseInt(chipstacks[p]);
	var newodds=odds*(chipstacks[player]/totalchips);
	equitys[player]+=(newodds*payouts[place]);	//Add the equity for this player
	var length=0;
	for (p in chipstacks)
		length++;
	if ((length>1)&&(payouts[place+1]!=0))	//Only run if there are more paying finishing positions
	{
		for (p in chipstacks)
			if (p!=player)
				newstacks[p]=parseInt(chipstacks[p]);	//Grab the chipstacks of each player, except for the one we are working on now
		for (p in newstacks)
			Equity(p,newstacks,equitys,newodds,payouts,place+1);	//Recursive call for each player left
	}
}
