/*
------------------------------------------------------------------------------
XPlatformDom
------------------------------------------------------------------------------

This file contains Cross-Browser helper functions to make it easier to perform 
the common DHTML actions (such as getting the value from a form element, etc)


Functions:

-----------------------------------------
getText( string ElementID , [ document ] )
 - used to get the text inside an element, eg table cell or Div

eg: var sCellContents = getValue("celTotalFee");
-----------------------------------------
setText( string ElementID , string NewValue, [ document ] )
- used to set the text inside an element, eg table cell or Div

eg: setText("celTotalFee", "50.00"); // nb - had to take out pound sign as it caused the comment to break! SWD 20/07/06
-----------------------------------------
getValue( string ElementID , [ document ] )
 - used to get the value of a form element
 
eg: var iJobID = getValue("hidJobID");
-----------------------------------------
setValue( string ElementID , string NewValue, [ document ] )
- used to set the value of a form element

eg: setValue("hidJobID", 20);
-----------------------------------------
setClass( string ElementID , string NewClass, [ document ] )
- set a new CSS class for an element

eg: setClass("tblMyTable", "highlightedTable");
-----------------------------------------
getEl( string ElementID , [ document ] )
- returns a reference to the element specified.

eg: var sTable = getEl("tblMyTable");
-----------------------------------------

===================================================================
*/

function getText()
{
	var pDocument		= null;
	var sElementID		= "";
	var sReturnValue	= null;

	switch (arguments.length)
	{
		case 1:
			sElementID	= arguments[0];
			pDocument	= document;
			
			break;
			
		case 2:
			sElementID	= arguments[0];
			pDocument	= arguments[1];
	}

	var pElement = getEl(sElementID, pDocument);
	
	if (pElement)
	{
		if (isMozilla())
		{
			sReturnValue = pElement.childnodes[0].data;
		}
		else
		{
			sReturnValue = pElement.innerText;
		}
	}
	
	return sReturnValue;
}

function setText()
{
	var pDocument		= null;
	var sElementID		= "";
	var bSet		= false;
	var sNewValue		= "";

	switch (arguments.length)
	{
		case 2:
			sElementID	= arguments[0];
			sNewValue	= arguments[1];
			pDocument	= document;
			
			break;
			
		case 3:
			sElementID	= arguments[0];
			sNewValue	= arguments[1];
			pDocument	= arguments[2];
			
			break;
	}

	var pElement = getEl(sElementID, pDocument);
	
	if (pElement)
	{
		if (isMozilla())
		{
			pElement.childnodes[0].data	= sNewValue;
		}
		else
		{
			pElement.innerText		= sNewValue;
		}

		bSet = true;
	}
	
	return bSet;
}


function setClass()
{
	var pDocument		= null;
	var sElementID		= "";
	var sNewClass		= "";
	var bSet		= false;

	switch (arguments.length)
	{
		case 2:
			sElementID	= arguments[0];
			sNewClass	= arguments[1];
			pDocument	= document;
			
			break;
			
		case 3:
			sElementID	= arguments[0];
			sNewClass	= arguments[1];
			pDocument	= arguments[2];
			
			break;
	}

	var pElement = getEl(sElementID, pDocument);
	
	if (pElement)
	{
		pElement.className = sNewClass;
		bSet = true;
	}
	
	return bSet;
}

function getBoolean(_sParamName)
{
	return (getValue(_sParamName) == "true") ? true : false;
}

function setBoolean(_sParamName, _bValue)
{
	setValue(_sParamName, (_bValue) ? "true" : "false");
}

function getValue()
{
	var pDocument		= null;
	var sElementID		= "";
	var sReturnValue	= null;

	switch (arguments.length)
	{
		case 1:
			sElementID	= arguments[0];
			pDocument	= document;
			
			break;
			
		case 2:
			sElementID	= arguments[0];
			pDocument	= arguments[1];
	}

	var pElement		= getEl(sElementID, pDocument);
	
	if (pElement)
	{
		sReturnValue = pElement.value;
	}
	
	return sReturnValue;
}

function setValue()
{
	var pDocument		= null;
	var sElementID		= "";
	var sNewValue		= "";
	var bSet		= false;

	switch (arguments.length)
	{
		case 2:
			sElementID	= arguments[0];
			sNewValue	= arguments[1];
			pDocument	= document;
			
			break;
			
		case 3:
			sElementID	= arguments[0];
			sNewValue	= arguments[1];
			pDocument	= arguments[2];
			
			break;
	}

	var pElement		= getEl(sElementID, pDocument);
	
	if (pElement)
	{
		pElement.value	= sNewValue;
		bSet		= true;
	}
	
	return bSet;
}

function getEl()
{
	var pDocument		= null;
	var sElementID		= "";
	var pReturnElement	= null;
	
	switch (arguments.length)
	{
		case 1:
			sElementID	= arguments[0];
			pDocument	= document;
			
			break;
			
		default:
			sElementID	= arguments[0];
			pDocument	= arguments[1];
	}

	if ((!pDocument) || (!sElementID))
	{
		log(LOG_WARNING, "getEl could not find '" + sElementID + "' from '" + sElementID + "'", "XPlatformDOM");
	}
	else
	{
		pReturnElement = pDocument.getElementById(sElementID);
	}

	return pReturnElement;		
}

function setDisabled()
{
	var pDocument		= null;
	var sElementID		= "";
	var bNewValue		= true;
	var bSet		= false;

	switch (arguments.length)
	{
		case 2:
			sElementID	= arguments[0];
			bNewValue	= arguments[1];
			pDocument	= document;
			
			break;
			
		case 3:
			sElementID	= arguments[0];
			bNewValue	= arguments[1];
			pDocument	= arguments[2];
			
			break;
	}

	var pElement		= getEl(sElementID, pDocument);
	
	if (pElement)
	{
		pElement.disabled	= bNewValue;
		bSet			= true;
	}
	
	return bSet;
}



/*
------------------------------------------------------------------------------
BitBox
------------------------------------------------------------------------------
*/

function getBitBoxValue(_sBitBoxName)
{
	var sValue = getValue("hid" + _sBitBoxName);

	var bReturn = false;

	if (sValue)
	{
		if (sValue.toUpperCase() == "Y" || sValue.toUpperCase() == "TRUE")
		{
			bReturn = true;
		}
	}

	return bReturn;
}


function setBitBoxValue(_sBitBoxName, _bValue)
{
//	window.status = ("Setting BitBox " + _sBitBoxName + " to " +  _bValue);

	var sValue = "N";
	
	if (_bValue)
	{
		sValue = "Y";
	}
	
	
	var bSuccess = true;
	
	if (bSuccess)
	{
		bSuccess = setValue("hid" + _sBitBoxName, sValue);
	}
	
	if (bSuccess)
	{
		bSuccess = setText("box" + _sBitBoxName, sValue);
	}
	
	if (bSuccess)
	{
		bSuccess = setClass("box" + _sBitBoxName, "BitBox_" + sValue);
	}

//	alert("setBitBoxValue(_sBitBoxName) = " + _bValue);
	
	return bSuccess;
}

function reverseBitBox(_sBitBoxName)
{
	var bSuccess = false;

//	alert("getBitBoxValue(_sBitBoxName) = " + getBitBoxValue(_sBitBoxName));
	
	if (getBitBoxValue(_sBitBoxName))
	{
		bSuccess = setBitBoxValue(_sBitBoxName, false);
	}
	else
	{
		bSuccess = setBitBoxValue(_sBitBoxName, true);
	}
	
//	alert("getValue = " + getValue("hid" + _sBitBoxName));
	
	return bSuccess;
}


/*
------------------------------------------------------------------------------
RowSelect
------------------------------------------------------------------------------
*/

var gi_SelectedRow	= -1;

function scrollRowIntoView(pi_ScrollIntoViewIndex)
{
	var pRow = document.getElementById("ScreenRow_" + pi_ScrollIntoViewIndex);
	if (pRow)
	{
		pRow.scrollIntoView();
	}
}

function rowHighlight(ps_RowIndex)
{
	if (gi_SelectedRow != ps_RowIndex)
	{
		var pRow = document.getElementById("ScreenRow_" + ps_RowIndex);
		pRow.className = "HighlightedRow";
	}
}

function rowUnhighlight(ps_RowIndex)
{
	if (gi_SelectedRow != ps_RowIndex)
	{
		var pRow = document.getElementById("ScreenRow_" + ps_RowIndex);
		pRow.className = "UnHighlightedRow";
	}
}


function showSelectedRow(ps_Index)
{
	if (gi_SelectedRow != -1)
	{
		var pRow = document.getElementById("ScreenRow_" + gi_SelectedRow);
		pRow.className = "UnHighlightedRow";
	}

	var pRow = document.getElementById("ScreenRow_" + ps_Index);
	pRow.className = "SelectedRow";

	gi_SelectedRow = ps_Index;
}

function rowSelect(ps_RowIndex)
{
	clickedOnRow(ps_RowIndex);
	
}

function round (n, d) 
{
  n = n - 0; // force number
  if (d == null) d = 2;
  var f = Math.pow(10, d);
  n += Math.pow(10, - (d + 1)); // round first
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1)); // and again
  n += ''; // force string
  return d == 0 ? n.substring(0, n.indexOf('.')) :
      n.substring(0, n.indexOf('.') + d + 1);
}

window.status = ("HelperFunctions Ok.");
