function addSpace(argvalue, numlength) {

  if (! numlength > 0)
    numlength = 10;

  if (argvalue.length < numlength) {
    for(var i = argvalue.length; i < numlength; i++)
      argvalue = " " + argvalue;
  }

  return argvalue;

}

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 makeArray(arraySize);");

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

  return arraySize;
}

function DeleteCookie(cookiename) {
  var exp = new Date();

  exp.setTime(exp.getTime() - 1);
  var cookieVal = getCookie(cookiename);
  if (cookieVal != null)
    document.cookie = name + "=" + cookieVal + "; expires=" + exp.toGMTString();

  return;

}

function formatDecimal(argvalue, addzero, decimaln) {
  var numOfDecimal = (decimaln == null) ? 2 : decimaln;
  var number = 1;

  number = Math.pow(10, numOfDecimal);

  argvalue = Math.round(parseFloat(argvalue) * number) / number;
  // If you're using IE3.x, you will get error with the following line.
  // argvalue = argvalue.toString();
  // It works fine in IE4.
  argvalue = "" + argvalue;

  if (argvalue.indexOf(".") == 0)
    argvalue = "0" + argvalue;

  if (addzero == true) {
    if (argvalue.indexOf(".") == -1)
      argvalue = argvalue + ".";

    while ((argvalue.indexOf(".") + 1) > (argvalue.length - numOfDecimal))
      argvalue = argvalue + "0";
  }

  return argvalue;
}

function formatValue(argvalue, format) {
  var numOfDecimal = 0;
  if (format.indexOf(".") != -1) {
    numOfDecimal = format.substring(format.indexOf(".") + 1, format.length).length;
  }
  argvalue = formatDecimal(argvalue, true, numOfDecimal);

  argvalueBeforeDot = argvalue.substring(0, argvalue.indexOf("."));
  retValue = argvalue.substring(argvalue.indexOf("."), argvalue.length);

  strBeforeDot = format.substring(0, format.indexOf("."));

  for (var n = strBeforeDot.length - 1; n >= 0; n--) {
    oneformatchar = strBeforeDot.substring(n, n + 1);
    if (oneformatchar == "#") {
      if (argvalueBeforeDot.length > 0) {
        argvalueonechar = argvalueBeforeDot.substring(argvalueBeforeDot.length - 1, argvalueBeforeDot.length);
        retValue = argvalueonechar + retValue;
        argvalueBeforeDot = argvalueBeforeDot.substring(0, argvalueBeforeDot.length - 1);
      }
    }
    else {
      if (argvalueBeforeDot.length > 0 || n == 0)
        retValue = oneformatchar + retValue;
    }
  }

  return retValue;
}

function GetCookie(name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;

  while (i < clen) {
    var j = i + alen;

    if (document.cookie.substring(i, j) == arg)
      return GetCookieVal(j);

    i = document.cookie.indexOf(" ", i) + 1;

    if (i == 0) 
      break; 
  }

  return null;
}

function GetCookieVal(offset) {
  var endstr = document.cookie.indexOf(";", offset);

  if (("" + endstr) == "" || endstr == -1)
    endstr = document.cookie.length;

  return unescape(document.cookie.substring(offset, endstr));
}

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 isURL(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("http://") == -1)
    return false;
  else if (argvalue == "http://")
    return false;
  else if (argvalue.indexOf("http://") > 0)
    return false;

  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}

function isW(argvalue) {
  var onechar = "";

  for (var n = 0; n < argvalue.length; n++) {
    onechar = argvalue.substring(n, n+1);
    if ((onechar < "0" || onechar > "9") && (onechar < "A" ||
      onechar > "Z") && (onechar < "a" || onechar > "z") &&
         (onechar != "_")) {
      return false;
    }
  }

  return true;

}
/*
ltrim function
Remove the leading space/s of an argument.

Syntax
ltrim(stringValue)

stringValue is the string which the leading space/s will be removed.

Description
Examples

The following will return "abc ".
ltrim("  abc ")
The following will return "a b c  ".
ltrim("  a b c  ")

Code
*/
function ltrim(argvalue) {

  while (1) {
    if (argvalue.substring(0, 1) != " ")
      break;
    argvalue = argvalue.substring(1, argvalue.length);
  }

  return argvalue;
}

/*
makeArray function
Create an array object.

Syntax
makeArray(intArraySize)

intArraySize is the length of the array created.

Description
Some browser does not support latest javascript which has Array object. This function can be used in those browser.

Examples

The following will create an array with 3 in length.
newArray = new makeArray(3);
*/
function makeArray(IntarrSize) {

  for (var n = 0; n < IntarrSize; n++)
    this[n] = "";

  return this;

}

/*
numCheck function
Determine an argument if it only contains number.

Syntax
numCheck(testValue)

testValue is the value that you want to check.

Description
numCheck function will return true if the argument only contains "0-9".

Examples

The followings will return "true".
numCheck("1234")
numCheck("0123")

The followings will return "false".
numCheck("abcd")
numCheck("a123")
numCheck("123a")
numCheck("12.3")
*/
function numCheck(argvalue) {

  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;

}

/*
ParseCookies function
Parse the cookies data and assign these data to "document.Cookie_cookie_name".

Syntax
ParseCookies()

Description
The value of cookie, cookieName, is stored in "document.Cookie_cookieName.value".

There are few ways to save the cookie data, but I found that this is the way which works in both Netscape3.0 and Internet Explorer3.0.

Examples

If the server returns the following cookie:
  Set-Cookie: Cookie1=Value1; Cookie2=Value2
After you call the ParseCookies().
parseCookies();
"document.Cookie_Cookie1.value" will contains value "Value1";
"document.Cookie_Cookie1.name" will contains value "Cookie1";
"document.Cookie_Cookie2.value" will contains value "Value2";
"document.Cookie_Cookie2.name" will contains value "Cookie2";
*/
function ParseCookies() {
  var cookie_string;
  var cookie_name;
  var cookie_value;
  var tmpcookie = document.cookie;
  var cookie_count = 0;

  while (tmpcookie.indexOf("; ") != -1) {
    cookie_string = tmpcookie.substring(0, tmpcookie.indexOf("; "));
    cookie_name = cookie_string.substring(0, cookie_string.indexOf("="));
    cookie_value = cookie_string.substring(cookie_string.indexOf("=") + 
        "=".length, cookie_string.length);
    eval("document.Cookie_" + cookie_name + 
	" = new Cookies(cookie_name, cookie_value);");

    tmpcookie = tmpcookie.substring(tmpcookie.indexOf("; ") + "; ".length, 
        tmpcookie.length);

    cookie_count++;
  }

  cookie_name = tmpcookie.substring(0, tmpcookie.indexOf("="));
  cookie_value = tmpcookie.substring(tmpcookie.indexOf("=") + "=".length, 
        tmpcookie.length);
  eval("document.Cookie_" + cookie_name + 
	" = new Cookies(cookie_name, cookie_value);");
  cookie_count++;
  
  return cookie_count;

}

function Cookies(argname, argvalue) {
  this.name = argname;
  this.value = unescape(argvalue);

  return this;

}

/*
replace function
Substitute a string X to a string Y in an argument.

Syntax
replace(stringValue, X, Y)

stringValue is the string which has all X will be substituted by Y.

Description
This function will replace all the string X to string Y in the argument, it can not change the string X in certain place.

Examples

The following will return "abcABCdefgh".
replace("abc123defgh", "123", "ABC");
*/
function replace(argvalue, x, y) {

  if ((x == y) || (parseInt(y.indexOf(x)) > -1)) {
    errmessage = "replace 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;

}

/*
rtrim function
Remove the trailing space/s of an argument.

Syntax
rtrim(stringValue)

stringValue is the string that you want to remove its trailing space/s.

Description
Examples

The following will return "abc".
rtrim("abc   ")
The following will return "a b c".
rtrim("a b c   ")
The following will return "  abc".
rtrim("  abc  ")
*/
function rtrim(argvalue) {

  while (1) {
    if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
      break;
    argvalue = argvalue.substring(0, argvalue.length - 1);
  }

  return argvalue;
}

/*
SetCookie function
Setting new cookie value.

Syntax
SetCookie(cookiename, cookievalue, expires, path, domain, secure)

Description
To retrieve the cookie's value, try parseCookie function.

For more information about cookie, see Netscape's Cookie Specification at http://home.netscape.com/newsref/std/cookie_spec.html.
Examples

SetCookie("Cookie1", "Value1", null, "/");
SetCookie("Cookie2", "Value2", new Date(), "/");
document.cookie will have value "Cookie1=Value1; Cookie2=Value2".
*/
function SetCookie(cookiename, cookievalue) {
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;

  document.cookie = cookiename + "=" + escape(cookievalue) +
    ((expires == null) ? "" 	    : ("; expires=" + expires.toGMTString())) +
    ((path    == null) ? ""	    : ("; path="    + path                 )) +
    ((domain  == null) ? "" 	    : ("; domain="  + domain               )) +
    ((secure  == true) ? "; secure" : "");

  return;

}

/*
trim function
Remove both the leading and the trailing space/s of an argument.

Syntax
trim(stringValue)

stringValue is the string which the leading and the trailing space/s will be removed.

Description
When you use this function, make sure ltrim and rtrim are inside the same html file too.

Examples

The following will return "abc".
trim("  abc  ")
The following will return "a b c".
trim("  a b c  ")
*/
function trim(argvalue) {
  var tmpstr = ltrim(argvalue);

  return rtrim(tmpstr);

}

function getRadioButtonSelectedIndex(radioButton){
	var i;
	for(i = 0; i < radioButton.length; i++){
		if(radioButton[i].checked == true){
			return(i);
		}
	}
	return(-1);
}
