// 
//	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 btnDeleteProfileClick() 
{
	var selObj = document.getElementById("loadProfileId");
	var cProfileName = selObj.item(selObj.selectedIndex).text;
		
	if (selObj.selectedIndex == 0) alert("Can't delete default profile!")
	else if (confirm("Delete profile: " + cProfileName + "?")) 
	{
		profileDelete(cProfileName);
		selObj.options[selObj.selectedIndex] = null;
		selObj.selectedIndex = 0;
		setCookieData(cDefaultProfileCookieName, (selObj.selectedIndex).toString());
		btnReloadProfileClick();
	}
}

function btnReloadProfileClick() 
{
	loadProfileChange(this, document.getElementById("loadProfileId"));
}

function btnSaveProfileClick() 
{
	var inputSaveProfile = document.getElementById("textSaveProfileId");
	var cProfileName = String(inputSaveProfile.value).replace(/ /g, "");
	inputSaveProfile.value = cProfileName;
	
	if (cProfileName.indexOf("|") >= 0) 
	{
		alert("Illegal characters in name!");
		return;
	}
	
	if (cProfileName == "") alert("Please enter a name to save under!")
	else 
	{
		var bFound = false;
		var selObj = document.getElementById("loadProfileId");

		for (var i = 0; i < selObj.length; i++) 
		{
			if (cProfileName == selObj.item(i).text) 
			{
				if (confirm("Replace current profile saved under: " + cProfileName + "?")) 
				{
					bFound = true;
					selObj.selectedIndex = i;
					break;
				}
				else 
				{
					inputSaveProfile.value = "";
					return;
				}
			}
		}
		
		if (!bFound) 
		{
			selObj.options[selObj.length] = new Option(cProfileName, "");
			selObj.selectedIndex = selObj.length - 1;
		}
		
		profileSave(cProfileName);
		setCookieData(cDefaultProfileCookieName, (selObj.selectedIndex).toString());
		inputSaveProfile.value = "";
	}
}

function loadProfileChange(target, selObj) 
{
	setCookieData(cDefaultProfileCookieName, (selObj.selectedIndex).toString());

	if (selObj.selectedIndex > 0) 
	{
		profileLoad(selObj.item(selObj.selectedIndex).text);
	}
	else 
	{
		for (var i = 0; i < aTableData.length; i++) 
		{
			setSort(aTableData[i], 0);
			
			for (var j = 1; j < aTableData[i].Rank.length - 1; j++) 
			{
				if ((aTableData[i].Table.id == "tableTotalId") && (j == aTableData[i].Rank.length - 2)) 
				{
					setRank(aTableData[i], j, false);
				}
				else 
				{
					setRank(aTableData[i], j, true);
				}
			}

			calcRank(aTableData[i]);
			loadTable(aTableData[i]);
		}
	}
}

function profileDelete(cName) 
{
	var objSearch = profileSearch(cName);	
	
	if (objSearch.Found) 
	{
		var cCookieData = objSearch.CookieData.substr(0, objSearch.Start) + 
				objSearch.CookieData.slice(objSearch.Start + objSearch.ProfileData.length);
		setCookieData(cProfileCookieName, cCookieData);
	}
}

function profileDelimitName(cName) 
{
	return "|" + cName + "|";
}

function profileLoad(cName) 
{
	var objSearch = profileSearch(cName);
	
	if (objSearch.Found) 
	{
		var nStart = objSearch.Search.length;
		
		while (nStart < objSearch.ProfileData.length) 
		{
			var nDash = objSearch.ProfileData.indexOf("-", nStart);
			var cTableId = objSearch.ProfileData.substr(nStart, nDash - nStart);
			var tableData = tableDataFromId(cTableId);

			if (tableData == null) 
			{
				alert("Table data not found for id: " + cTableId);
				break;
			}
			
			nStart = nDash + 1;
			nDash = objSearch.ProfileData.indexOf("-", nStart);
			var cSortIndex = objSearch.ProfileData.substr(nStart, nDash - nStart);
			var nRankFlag = nDash + 1;
			var nRankIndex = 1;
			
			while ((nRankFlag < objSearch.ProfileData.length) && (nRankIndex < tableData.Rank.length - 1)) 
			{
				var cFlag = objSearch.ProfileData.substr(nRankFlag, 1);
				if (isNaN(cFlag)) break;
				setRank(tableData, nRankIndex, Number(cFlag));
				nRankFlag++;
				nRankIndex++;
			}

			calcRank(tableData);
			loadTable(tableData);
			setSort(tableData, Number(cSortIndex));
			
			nStart = nRankFlag;
		}
	}
	else 
	{
		alert("Profile not found: " + cName);
	}
}
		
function profileSave(cName) 
{
	var cProfileData = profileDelimitName(cName);
	
	for (var i = 0; i < aTableData.length; i++) 
	{
		var tableData = aTableData[i];
		
		cProfileData = cProfileData + tableData.Table.id + "-" + String(tableData.SortIndex) + "-";
		
		for (var j = 1; j < tableData.DataColCount - 1; j++) 
		{
			cProfileData = cProfileData + String(Number(tableData.Rank[j]));
		}
	}

	profileDelete(cName);	
	var cCookieData = getCookieData(cProfileCookieName) + cProfileData;
	setCookieData(cProfileCookieName, cCookieData);
}

function profileSearch(cName) 
{
	var objResult = new Object();
	
	objResult.Found = false;
	objResult.CookieData = getCookieData(cProfileCookieName);
	objResult.Name = cName;
	objResult.Search = profileDelimitName(cName);
	objResult.Start = objResult.CookieData.indexOf(objResult.Search);
	
	if (objResult.Start >= 0) 
	{
		objResult.Found = true;
		objResult.Stop = objResult.CookieData.indexOf("|", objResult.Start + objResult.Search.length);
		if (objResult.Stop == -1) objResult.Stop = objResult.CookieData.length;
		objResult.ProfileData = objResult.CookieData.substr(objResult.Start, objResult.Stop - objResult.Start);
	}
	
	return objResult;
}

