	function removeCurrencyFormat( strVal ) 
	{
	  var strValue = strVal + "";//convert to string
	  var objRegExp = /\(/;
	  var strMinus = '';

	  //check if negative
	  if(objRegExp.test(strValue))
	  {
	    	strMinus = '-';
	  }

	  objRegExp = /\)|\(|[,]/g;
	  strValue = strValue.replace(objRegExp,'');
	  if(strValue.indexOf('$') >= 0)
	  {
	    	strValue = strValue.substring(1, strValue.length);
	  }
	  return  strMinus + strValue;
	}

	/**  adds a thousandths seperator - comma to a number string.
	@param string value
	*/
	function addComma(str)
	{
		if ( str == null || str == "" ) return "";
		var num = parseFloat(str);
		if ( isNaN ( num ) )
		{
			return str; // not a valid number, so return without changes
		}
		if ( parseInt(num) > 999 )
		{
			// needs a thousands sep
			var dec = str.indexOf(".");
			var pos = 3;
			if ( dec > 0 ) pos += 3 ; // asuming 2 decimal points
			seppos = str.length - pos;
			return str.substring(0, seppos ) + ","  + str.substring( seppos, str.length );
			
		}
		else
		{
			return str; // less than 999 ;seperator is not needed
		}
	}


	function getNumber(ele)
	{
		var val = getValue(ele);
		if ( !isNaN(parseFloat(val)) )
			return parseFloat(val);
		else
			return 0;
	}
			
  	function getValue(ele)
	{
		switch ( ele.type)
		{
			case 'text':
				return ele.value;
			case 'select-one' :
				return ele.options[ele.options.selectedIndex].value;
			case 'radio' :
			{
			   return getSelectedRadioValue(ele);
			}
			default :
			{
				//alert ( "unhandled type : " + ele.type  + " for element " + ele.name );
			}
		}
	}
	
  	function setValue(ele, val)
	{
		ele.value = val;
	}	


function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
}

function addDecimals(ThisNumber) 
{
	/*Purpose:  Appends 2 trailing zeros at the end of a number.                   */

	strLeft = Token_Extract(ThisNumber.toString(), ".", 1)
	strRight = Token_Extract(ThisNumber.toString(), ".", 2)
	if (strRight.length > 1) {
		strRight = Left(strRight, 2)
	} else if (strRight.length == 1) {
		strRight = strRight + '0';
	} else {
		strRight = strRight + '00';
	}
		
	return strLeft + '.' + strRight
}

// from the FSA calculators

var strRowOldColor = '';
	
/*-----------------------------------------------------------------------------*/	
function Row_OnMouseOver(objRow) {
/*-----------------------------------------------------------------------------*/	
	strRowOldColor = objRow.style.backgroundColor;
	objRow.style.backgroundColor = '#DCEAEB';
}
function EERow_OnMouseOver(objRow) {
/*-----------------------------------------------------------------------------*/	
	strRowOldColor = objRow.style.backgroundColor;
	objRow.style.backgroundColor = '#DCEAEB';
}
/*-----------------------------------------------------------------------------*/	
function Row_OnMouseOut(objRow) {
/*-----------------------------------------------------------------------------*/	
	objRow.style.backgroundColor = strRowOldColor;
}

/*-----------------------------------------------------------------------------*/	
function Row_OnMouseOut_White(objRow) {
/*-----------------------------------------------------------------------------*/	
	objRow.style.backgroundColor = '#FFFFFF';
}


/*-----------------------------------------------------------------------------*/
function Format_Number_As_Currency(ThisNumber) {
/*-----------------------------------------------------------------------------*/
/*Purpose:  Appends 2 trailing zeros at the end of a number.                   */

	strLeft = Token_Extract(ThisNumber.toString(), ".", 1)
	strRight = Token_Extract(ThisNumber.toString(), ".", 2)
	if (strRight.length > 1) {
		strRight = Left(strRight, 2)
	} else if (strRight.length == 1) {
		strRight = strRight + '0';
	} else {
		strRight = strRight + '00';
	}
		
	return strLeft + '.' + strRight
}


function defaultHandler() {return false}
function silentHandler()  {return true}
function customHandler(desc,page,line,chr)  
{
 alert(
  'Error: Your browser experienced an error processing a script.\n'
  +'\nError description: \t'+desc
  +'\nPage address:      \t'+page
  +'\nLine number:       \t'+line
 )
 return true;
}


window.onerror=customHandler;



/*-----------------------------------------------------------------------------*/
function Token_Extract(InString, sDelimiter, Token) {
/*-----------------------------------------------------------------------------*/
/*Purpose:  Think of InString as a row in a table.  Then, think of sDelimiter  */
/*          as a way that each column in InString is separated.  Token is the  */
/*          column number of interest (1-based).                               */

	var sResult

	sResult = "";

	//Make sure that neither of the input parameters are null
	if (InString != null && sDelimiter != null) {

		//Make sure that they are not empty strings
		if (InString.length > 0 && sDelimiter.length > 0) {

			var curToken;
			var OldToken;
			var TokenCounter;
			var LocalInString;
			var sRemaining;

			curToken = -1;
			OldToken = -1;
			TokenCounter = 0;
			LocalInString = "";
			sRemaining = "";

			LocalInString = InString + sDelimiter;

			for (TokenCounter = 1; TokenCounter < Token + 1; TokenCounter++) {

				if (curToken != -1)
					OldToken = curToken + sDelimiter.length;
				else
					OldToken = curToken + 1;

				sRemaining = LocalInString.substring(OldToken, OldToken + (LocalInString.length - OldToken));

				curToken = sRemaining.indexOf(sDelimiter);
				if (curToken == -1) return sResult;

				curToken += OldToken;
			}

			if (OldToken > -1) sResult = LocalInString.substring(OldToken, curToken);
		}
	}

	return sResult;
}
	
/*-----------------------------------------------------------------------------*/
function Left(sInput, iInput) {
/*-----------------------------------------------------------------------------*/

	var sResult = "";
	var iMaxChar = 0;

	if (sInput.length < 1) return sInput;

	sResult = sInput;
	iMaxChar = sInput.length - 1;

	if (iInput < sInput.length) {
		sResult = sInput.substring(0, iInput);
	}

	return sResult;
}

/*-----------------------------------------------------------------------------*/
function IsFloat(sNumber) {
/*-----------------------------------------------------------------------------*/

	var iASCII;
	var iPeriodCounter = 0;

	if (sNumber.length == 0) return false;

	for (var intCounter = 0; intCounter < sNumber.length; intCounter++) {
		iASCII = sNumber.charAt(intCounter);
		if (iASCII < '0' || iASCII > '9') {
			if (iASCII == '.') {
				iPeriodCounter++;
				if (iPeriodCounter > 1) return false;
			} else {
				return false;
			}
		}
	}

	return true;
}

function CloseWindow()
{
	window.close();
}

	/*-----------------------------------------------------------------------------*/
	function gotoTopic(astrTopicFilename) {
	/*-----------------------------------------------------------------------------*/

		Topicwindow = window.open(astrTopicFilename + '.aspx', '_blank' ,'height=600,width=750,toolbar=1,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1');
		Topicwindow.focus();
	}

/*-----------------------------------------------------------------------------*/
function Back() {
/*-----------------------------------------------------------------------------*/

	window.history.back();
}

function round(number,X) {
  // rounds number to X decimal places, defaults to 2
  X = (!X ? 2 : X);
  return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

	/* set the inner HTML text for a layer (div, span, p) tag in the document. */
	function setText(layerName, txt )
	{
		var layer;

		if ( document.getElementById )
		{
			//latest browsers
			layer = document.getElementById( layerName );
		}
		else if ( document.all )
		{
			//ie 
			layer = eval ( "document.all." + layerName );
		}
		else if ( document.layers )
		{
			//netscape
			layer = eval ( "document." + layerName );
		}
		layer.innerHTML = txt;
	}

