function onScroll()
{
	divScrollHeaders.scrollLeft = divSpreadsheetContents.scrollLeft;
}

var m_arData = new Array();

function SpreadsheetData(sSpreadsheet)
{
	this.Name = sSpreadsheet;
	this.LastClass = null;
	this.LastObj = null;
	this.IgnoreClick = false;
	this.CheckEnablers = false;
	this.arEnablers = null;
}

function GetSpreadsheetData(sSpreadsheet)
{
	var i;
	for (i = 0; i < m_arData.length; i++)
	{
		if (m_arData[i].Name == sSpreadsheet)
		{
			return m_arData[i];
		}
	}
	var data = new SpreadsheetData(sSpreadsheet);
	m_arData[m_arData.length] = data;
	return data;
}

function Spreadsheet(sSpreadsheet)
{
	this.Data = GetSpreadsheetData(sSpreadsheet);
	this.onClick = Spreadsheet__onClick;
	this.onMouseEnter = Spreadsheet__onMouseEnter;
	this.onMouseLeave = Spreadsheet__onMouseLeave;
	this.onPageChange = Spreadsheet__onPageChange;
	this.onPageKeyUp = Spreadsheet__onPageKeyUp;
	this.onPagePrev = Spreadsheet__onPagePrev;
	this.onPageNext = Spreadsheet__onPageNext;
}

function Spreadsheet__onClick(sUrl, sActionTarget, bKeepState, bAllowControlClick)
{
	if (this.Data.IgnoreClick) {
		this.Data.IgnoreClick = false;
		return;
	}
	var oSrcElement = event.srcElement;
	if (oSrcElement.nodeName == "IMG")
		oSrcElement = oSrcElement.parentElement;
	if (bKeepState)
	{
		oSrcElement = oSrcElement.parentElement;
		if (this.Data.LastObj != null)
			this.Data.LastObj.className = this.Data.LastObj.OriginalClass;
		this.Data.LastObj = oSrcElement;
		oSrcElement.OriginalClass = this.Data.LastClass;
		oSrcElement.className = "SpreadsheetRowOn";
	}
	if (bAllowControlClick == true && event.ctrlKey)
		var oWindow = window.open(sUrl, "_blank", "", false);
	else
		Navigate(sUrl, sActionTarget);
}

function Spreadsheet__onMouseEnter()
{
	var oSrcElement = event.srcElement;
	if (oSrcElement.className == "SpreadsheetRowOn")
		return;
	this.Data.LastClass = oSrcElement.className;
	oSrcElement.className = "SpreadsheetRowHover";
}

function Spreadsheet__onMouseLeave()
{
	var oSrcElement = event.srcElement;
	if (oSrcElement.className == "SpreadsheetRowOn")
		return;
	oSrcElement.className = this.Data.LastClass;
}

function Spreadsheet__onPageKeyUp()
{
	var oSrcElement = event.srcElement;
	if (event.keyCode == 13)
	{
		this.onPageChange();
		document.all["__Paging"].value = "1";
		document.forms["frmMain"].submit();
	}
}

function Spreadsheet__onPagePrev(nPage)
{
	event.returnValue=false;
	this.onPageChange(nPage);
	document.all["__Paging"].value = "1";
	document.forms["frmMain"].submit();
}

function Spreadsheet__onPageNext(nPage)
{
	event.returnValue=false;
	this.onPageChange(nPage);
	document.all["__Paging"].value = "1";
	document.forms["frmMain"].submit();
}

function Spreadsheet__onPageChange(nPage)
{
	var bRevert = false;
	var oSrcElement = event.srcElement;
	var nMaxCount = Number.NaN;
	var nPages = Number.NaN;
	var nCurrent = new Number(oSrcElement.value);
	if (nPage != null)
		nCurrent = nPage;
	if (document.all("__MaxCount") != null)
		nMaxCount = new Number(document.all("__MaxCount").value);
	if (document.all("__Pages") != null)
		nPages = new Number(document.all("__Pages").value);
	if (isNaN(nMaxCount) || isNaN(nPages))
		return;
	if (! isNaN(nCurrent))
		bRevert = (nCurrent < 1 || nCurrent > nPages);
	if (bRevert) {
		nCurrent = 1;
		oSrcElement.value = "1";
	}
	if (document.all("StartingIndex") != null)
		document.all("StartingIndex").value = (nCurrent - 1) * nMaxCount + 1;
}


function SpreadsheetLink(sSpreadsheet)
{
	this.Data = GetSpreadsheetData(sSpreadsheet);
	this.onMouseOver = SpreadsheetLink__onMouseOver;
	this.onMouseOut = SpreadsheetLink__onMouseOut;
	this.onClick = SpreadsheetLink__onClick;
	this.onCheckboxClick = SpreadsheetLink__onCheckboxClick;
	this.onCheckboxMasterClick = SpreadsheetLink__onCheckboxMasterClick;
	this.CheckboxEnable = SpreadsheetLink__CheckboxEnable;
	this.onDropDownListClick = SpreadsheetLink__onDropDownListClick;
	this.onTextBoxClick = SpreadsheetLink__onTextBoxClick;
}

function SpreadsheetLink__onMouseOver()
{
	var oSrcElement = event.srcElement;
	oSrcElement.className = "SpreadsheetLinkHover";
}

function SpreadsheetLink__onMouseOut()
{
	var oSrcElement = event.srcElement;
	oSrcElement.className = "SpreadsheetLink";
}

function SpreadsheetLink__onClick(sLink)
{
	this.Data.IgnoreClick = true;
	if (event.ctrlKey == true)
		window.showModelessDialog(sLink, "center:yes; edge:raised; help: yes; resizable:yes; scroll: yes; status: yes; unadorned: no;");
	else
		window.navigate(sLink)
}

function SpreadsheetLink__CheckboxEnable(bMaster)
{
	var oSrcElement = event.srcElement;
	if (this.Data.CheckEnablers == true)
		this.arEnablers = this.Data.arEnablers;
	else
	{
		this.Data.CheckEnablers = true;
		var arChildren = null;
		if (bMaster)
			sEnablers = oSrcElement.Enablers;
		else
			sEnablers = document.all(oSrcElement.id + "_Master").Enablers;
		if (sEnablers == null || sEnablers == "")
			return;
		this.arEnablers = this.Data.arEnablers = sEnablers.split(";");
	}
	if (this.arEnablers == null)
		return;

	var bEnable = false;
	if (bMaster)
		bEnable = oSrcElement.checked;
	else {
		var arChildren = null;
		arChildren = document.all(oSrcElement.id);
		if (arChildren == null)
			return;
		if (arChildren.length == 0)
			bEnable = arChildren.checked;
		for (i = 0; i < arChildren.length; i++)
		{
			if (arChildren[i].checked)
			{
				bEnable = true;
				break;
			}
		}
	}
	for (i = 0; i < this.arEnablers.length; i++)
		document.all(this.arEnablers[i]).disabled = ! bEnable;
}

function SpreadsheetLink__onCheckboxClick()
{
	this.Data.IgnoreClick = true;
	this.CheckboxEnable(false);
}

function SpreadsheetLink__onCheckboxMasterClick()
{
	this.CheckboxEnable(true);
	var oSrcElement = event.srcElement;
	if (oSrcElement.id == null)
		return;
	var arChildren = document.all(oSrcElement.child);
	if (arChildren == null)
		return;
	if (arChildren.length != null)
	{
		var i;
		for (i = 0; i < arChildren.length; i++)
			arChildren[i].checked = oSrcElement.checked;
	}
	else
		arChildren.checked = oSrcElement.checked;
}

function SpreadsheetLink__onDropDownListClick()
{
	this.Data.IgnoreClick = true;
}

function SpreadsheetLink__onTextBoxClick()
{
	this.Data.IgnoreClick = true;
}