// The constructor function
function EmptyArray(length,defVal)
{
    var def = 0;
    if (EmptyArray.arguments.length > 0)
      def = defVal;
    this.size = length;
    for(var i = 1; i <= length; i++)
        this[i] = def;
}
// Using the constructor
// a = new EmptyArray(32);  sets all values to number 0
// b = new EmptyArray(32,"") sets all values to null string
//
//  Check if input arg is trivial -- defined, null, or all blanks
function trivial(argIn)
 { if (argIn == null)
    {return true;}
   if (argIn.length == 0)
    {return true;}
   for (var fex=0;fex<argIn.length;fex++)
    {if (argIn.charAt(fex) != " ") {return false;}}
   return true;
 }
//
//  Check if input arg is not trivial -- not undefined, not null, not all blanks
function nonTrivial(argIn)
 { if (argIn == null)
    {return false;}
   if (argIn.length == 0)
    {return false;}
   for (var fex=0;fex<argIn.length;fex++)
    {if (argIn.charAt(fex) != " ") {return true;}}
   return false;
 }
function giveInt(e)
 {var result = 0;
  if (nonTrivial(e.value))
    {e.value = stripL(e.value,"0");
     if (trivial(e.value)) {e.value="0";}
     if (numeric(e.value))
      {result = parseInt(e.value);}
     else
      {result = -1;}
    }
   return result;
 }
//
//
//
function imgRollOver(item)
 {
  item.style.background='#C70101';
 }
function imgRollOut(item)
 {
  item.style.background='#FFFFDD';
 }

//  if (isEmail(form.email.value) == false)
//    {alert("This does not appear to be a valid email.");...
//
function isEmail(argvalue)
 {
  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;

  // arrayString = argvalue.split("@"); (works only in netscape3 and above.)
  var retSize = customSplit(argvalue, "@", "arrayString");

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".")
  {return false;}

  return true;

 }

function customSplit(strvalue, separator, arrayName)
 {
  var n = 0;
  if (separator.length != 0)
    {
     while (strvalue.indexOf(separator) != -1)
       {
        eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
        strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
        n++;
       }
     eval("arr" + n + " = strvalue;");
     arraySize = n+1;
    }
  else
    {
     for (var x = 0; x < strvalue.length; x++)
      {
        eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
        n++;
      }
     arraySize = n;
    }

  eval(arrayName + " = new EmptyArray(arraySize,'');");

  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");

  return arraySize;
 }
// Remove blanks and dashes from input value
function cleanStr(inStr)
 {
  inStr = strChange(inStr, " " , "");
  inStr = strChange(inStr , "-", "");
  inStr = strChange(inStr, ".", "");
  return inStr;
 }
function strChange(argvalue, x, y)
 {
  if ((x == y) || (parseInt(y.indexOf(x)) > -1))
   {
    errmessage = "strChange function error: \n";
    errmessage += "Second argument and third argument could be the same ";
    errmessage += "or third argument contains second argument.\n";
    errmessage += "This will create an infinite loop as it's replaced globally.";
    alert(errmessage);
    return false;
   }
  while (argvalue.indexOf(x) != -1)
   {
    var leading = argvalue.substring(0, argvalue.indexOf(x));
    var trailing = argvalue.substring(argvalue.indexOf(x) + x.length,
        argvalue.length);
    argvalue = leading + y + trailing;
   }
  return argvalue;
 }

function stripL(theStr,aChar)
 { while(theStr.substring(0,1) == aChar)
    {theStr = theStr.substring(1,theStr.length);}
  return theStr;
 }
function stripT(theStr,aChar)
 { while(theStr.substring(theStr.length-1,theStr.length) == aChar)
    {theStr = theStr.substring(0,theStr.length-1);}
 }
/*************************************************************************\
  boolean numeric(String argvalue)
  return true if argvalue contains only numeric characters,
  else return false.
\*************************************************************************/
function numeric(argvalue)
 {if (argvalue == null)
    return false;
  argvalue = argvalue.toString();

  if (argvalue.length == 0)
    return false;

  for (var n = 0; n < argvalue.length; n++)
   {if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
      return false;
   }
  return true;
 }
/*************************************************************************\
  numeric cntChar(Char needle, String haystack)
  return the number of characters needle found in string haystack.
\*************************************************************************/
function cntChar(needle,haystack)
{ var result = 0
  for (var dex = 0; dex < haystack.length; dex++)
  { if (needle == haystack.charAt(dex))
      {result = result+1;}
  }
 return result;
}

