// --Checks If Numeric
function IsNumeric(str)
{
	var ch;
	for(var i=0;i<str.length;i++)
	{
		ch=str.charAt(i);
		if ( (ch>=0 && ch<=9) || (ch==".") || (ch=="+") || (ch=="-"))
		{}
		else
			return false;
	}
	return true;
}

// --Add space to the beginning of an argument
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;
}

// --Split the argument string into an array of strings
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;
}

// --Delete the cookie
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;
}

//-- Print the floating point number with certain decimal point
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;
}

//-- Print a number according to the format specified. Used for currency format
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;
}

// --Get the value of a cookie
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));
}

// --Determine an argument if it is an email address format
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;

}

// --Determine an argument if it is a URL
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;
}

// --Determine an argument if it only contains "word" characters
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;
}

// --Remove the leading space/s of an argument
function LTrim(argvalue) {

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

  return argvalue;
}

// --Create an array object
function MakeArray(IntarrSize) {

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

  return this;

}

// --Determine an argument if it only contains number
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;

}

// --Parse the cookies data and assign these data to "document.Cookie_cookie_name".
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;

}

// --Substitute a string X to a string Y in an argument
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;

}

//--Remove the trailing space/s of an argument
function RTrim(argvalue) {

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

  return argvalue;
}

//--Setting new cookie value
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;

}

//--Remove both the leading and the trailing space/s of an argument
function Trim(argvalue) {
  var tmpstr = LTrim(argvalue);

  return RTrim(tmpstr);

}

