// 
//	TYGR Productions Interactive Statistics
//	
//	This file contains JavaScript support functions for TYGR Productions' Interactive Statistics.  The code contained herein
//  is NOT in the public domain.  This file is provided for download to personal computers and is only authorized for personal 
//  use in conjuction with TYGR Productions' Interactive Statistics.  Copying or reposting this file in whole or in part on 
//  any web server or other network server, or reusing any portion of the code is not allowed without express written consent 
//  of the author.  Any commercial use is strictly prohibited.
//	
//	Copyright (c) 2005 by Jon T. Camp.  All rights reserved.
// 
function calcRank(tableData) 
{
	var aOrdinals = [];
	var aPointers;
	var aSorted;
	var aTotal = [];
	var aValues;
	var nCount = 0;

	if (tableData.Table.id == "tableTotalId")	loadTotals();

	for (var i = 0; i < tableData.DataColCount - 1; i++) 
	{
		if (tableData.Rank[i]) 
		{
			aPointers = [];
			aSorted = [];
			aValues = [];
			loadValues(tableData, i, aValues);
			sortValues(tableData, i, aPointers, aSorted, aValues);
			
			var nSteps = aSorted.length - 1;
			var nDelta = (aSorted[nSteps] - aSorted[0]) / nSteps;
			
			if (bWeightedRanking && (!isNaN(nDelta)))
			{
				for (var j = 0; j <= nSteps; j++)
				{
					aOrdinals[aPointers[j]] = (nDelta == 0 ? 1 : ((aSorted[j] - aSorted[0]) / nDelta) + 1);
				}
			}
			else
			{
				var nOrdinal = 1;
				aOrdinals[aPointers[0]] = 1;

				for (var j = 1; j < aSorted.length; j++) 
				{
					if (aSorted[j] != aSorted[j - 1]) nOrdinal = j + 1;
					aOrdinals[aPointers[j]] = nOrdinal;
				}
			}

			if (aTotal.length > 0) for (var j = 0; j < aOrdinals.length; j++) aTotal[j] += aOrdinals[j];
			else for (var j = 0; j < aOrdinals.length; j++) aTotal[j] = aOrdinals[j];

			nCount++;
		}
	}

	if (nCount > 0) 
	{
		for (var i = 0; i < aTotal.length; i++) aTotal[i] = (aTotal[i] / nCount).toFixed(1);
		storeValues(tableData, tableData.DataColCount - 1, aTotal);
	}
	else 
	{
		storeValues(tableData, tableData.DataColCount - 1, null);
	}
}

function ckWeightingChange(target, ckBox)
{
	setCookieData(cWeightingCookieName, ckBox.checked.toString());
	bWeightedRanking = (ckBox.checked.toString() == "true" ? true : false);
	
	for (var i = 0; i < aTableData.length; i++)
	{
		calcRank(aTableData[i]);
		sortPointers(aTableData[i]);
		loadTable(aTableData[i]);
	}
	
	if (cFavoriteTeam != "") paintTables();
}

function setRank(tableData, nIndex, bValue) 
{
	var cText;
	
	tableData.Rank[nIndex] = bValue;
	if (bValue) cText = "X"
	else cText = " ";
	tableData.Table.tBodies[1].rows[0].cells[dataColToTableCol(nIndex)].firstChild.nodeValue = cText;
}

function toggleRank(tableData, nIndex) 
{
	setRank(tableData, nIndex, !tableData.Rank[nIndex]);
	calcRank(tableData);
	if (tableData.SortIndex == tableData.DataColCount - 1) sortPointers(tableData);
	loadTable(tableData);
	if (tableData.Table.id != "tableTotalId") refreshTotals(tableDataFromId("tableTotalId"));
}
