<!--
//
// StringUtils.js
//
// @author      Michael Skolik
// @version     2.0
// @date        November  06, 1999
// @modified    October   28, 2000
//
// @purpose:	Collection of String functions
//


//
// Trims leading and trailing spaces.
//
// Arguments:
//	str	- string
//

function trim(str)
{
  newStr = new String("");
  for (i=0; i < str.length; i++){
     if (str.charAt(i) != " ")	break;
  }
  if (i < str.length) {
    for (var j=str.length-1; j > 0  &&  str.charAt(j) == " "; j--){
       if (str.charAt(j) != " ")	break;
    }
    newStr += str.substring(i,j+1);
  }
  return newStr;
}



//
// Replaces oldString through newString in line.
//
// Arguments:
//	line		- original string
//	oldString	- string which has to be replaced
//	newString	- replacement string for oldString
//

function replace(line, oldString, newString)
{
  var is = 0;
  var ie = 0;
  var oLen = oldString.length;
  s = new String();

  while ((ie = line.indexOf(oldString, is)) >= 0) {
    // Replace the old string with the new string
    s += line.substring(is, ie);
    s += newString;
    is = ie + oLen;
  }
  s += line.substring(is,line.length);
  return s.toString();
}



//
// Extract a SubList from a Vector based on an ID-List
//
// Arguments:
//	vID	  - ID Vector
//	vItems    - Itmes Vector 
//	Delimiter - Delimiter (default = ",")

function ExtractList(vID, vItems)
{
  var argv      = ExtractList.arguments;
  var argc      = ExtractList.arguments.length;
  var Delimiter = (argc > 2) ? argv[2] : ",";
  var str = "";
  for (var i=0; i < vID.length; i ++) {
     str = AppendWord(str, vItems[vID[i]], i, Delimiter);
  } 
  return str;
}


//
// Concatinates all argument-list elements using Delimiter 
//
// Arguments:
//	Delimiter - Delimiter

function ConcatItems(Delimiter, FirstItem)
{
  var argv      = ConcatItems.arguments;
  var argc      = ConcatItems.arguments.length;
  var str	= FirstItem;
  for (var i=2; i < argc; i ++)	str += Delimiter + argv[i];
  return str;
}



//
// Append a word with a delimiter to a string
//
// Arguments:
//	line		- String where word has to be added.
//	word		- Word to add.
//	AddEmptyWord	- Flag indicating, if an empty word should be added.
//	Delimiter	- Delimiter (default = ",") 

function AppendWord(Line, Word, AddEmptyWord)
{
  var argv      = AppendWord.arguments;
  var argc      = AppendWord.arguments.length;
  var Delimiter	= (argc > 3) ? argv[3] : ",";
  if (Word.length > 0) {
    if (Line.length > 0)	Line += Delimiter;
    Line += Word;
  } else {
    if (AddEmptyWord)		Line += Delimiter;
  }
  return Line;
}


//
// Rounds a number and formats the string with digits decimals.
//
// Arguments:
//	number	- Number to format
//	digits	- number of digits
//

function FormatNumber(number, digits) {
  if (digits < 0)	return number;
  if (digits == 0)	return Math.floor(number*1+0.5);
  var d = Math.pow(10,digits);
  var f = Math.floor(number*d+0.5)/d;
  var s = new String(f);
  var l = s.length;
  var p = s.lastIndexOf(".");
  if (p < 0) {
    s += "."; p = l; l++;
  }

  for (var i = 1; i <= digits; i++) {
    if (p+i >= l)  s += "0";
  }
  return s;
}


//
// Formats a number with leading zeros.
//
// Arguments:
//	price	- Number to format
//	digits	- number of digits
//

function FormatNumber1(number, digits) {
  if (digits < 2)	return String(number);
  var s = new String(number);
  var n = digits - s.length;
  if (n < 0) n = 0;

  s = new String("");
  for (var i = 0; i < n; i++)  s += "0";
  s += String(number);

  return s;
}

function mm(str, EscChars) {
  var newStr = str;
  for (var i=0; i < EscChars.length; i++){
     var EscChar = new String(EscChars.charAt(i));
     var EscStr  = "\\" + EscChar;
     newStr = replace (newStr, EscChar, EscStr);
  }
  return newStr;
}

// string.toUpperCase()
// string.toLowerCase()
