


function trim(s)
{
  var result = '';
  var i, len;

  if (s == null)
    return(s);

  len = s.length;

  for (i = 0; i < len; i++) {
    if (s.charAt(i) != ' ')
      break;
  }

  result = s.substring(i, len);
  len = result.length;

  for (i = len - 1; i >= 0; i--) {
    if (result.charAt(i) != ' ')
      break;
  }

  s = result.substring(0, i + 1);

  return(s);
}

String.prototype.trim = function()
{
  var s = this;
  var result = '';
  var i, len;

  if (s == null)
    return(s);

  len = s.length;

  for (i = 0; i < len; i++) {
    if (s.charAt(i) != ' ')
      break;
  }

  result = s.substring(i, len);
  len = result.length;

  for (i = len - 1; i >= 0; i--) {
    if (result.charAt(i) != ' ')
      break;
  }

  s = result.substring(0, i + 1);

  return(s);
}
// this function returns the round off value to the nearest j decimal place
/**
function roundoff(i, j) {
  return Math.round(i*Math.pow(10,j))/(Math.pow(10,j));
}
*/

// this function returns the round off value to the nearest j decimal place
// FIXME: when i less than zero. e.g i = i + 1 /(Math.pow(10,j));
/**
function roundoff(i, j) {
	i = parseFloat(i);
	j = parseInt(j);
	i = i + 0.5 /(Math.pow(10,j));
  return Math.floor(i*Math.pow(10,j))/(Math.pow(10,j));
}
*/

function roundoff(i, j) {
	i = parseFloat(parseFloat(i).toFixed(13));
	j = parseInt(j);
	if(i*Math.pow(10,j)<1){
		return Math.round(i*Math.pow(10,j))/(Math.pow(10,j));
	}else{
		return parseFloat(i.toFixed(j));
	}
}


function trimTrailingZero(s) {
  s = String(s);
  var dpPos = s.lastIndexOf(".");
  if (dpPos == -1) {
    return s;
  }
  var pos = s.length - 1;
  while (pos >= dpPos && s.charAt(pos) == "0") {
    pos--;
  }
  if (s.charAt(pos) == ".") {
    pos--;
  }
  return s.substring(0, pos + 1);
}

function isvalidkey(s) {
	for (var i=0; i<s.length; i++) {
		var c = s.charAt(i);
		if (c=='\\')
			return false;
		if (c==':')
			return false;
		if (c=='*')
			return false;
		if (c=='?')
			return false;
		if (c=='"')
			return false;
		if (c=='\'')
			return false;
		if (c=='<')
			return false;
		if (c=='>')
			return false;
		if (c=='|')
			return false;
	}
	return true;
}

function isvalidkey2(s) {
	for (var i=0; i<s.length; i++) {
		var c = s.charAt(i);
		if (c=='"')
			return false;
		if (c=='\'')
			return false;
	}
	return true;
}


// this function returns TRUE if a string contains only white space characters.
function isblank(s)
{
	for (var i=0; i<s.length; i++)
	{
		var c = s.charAt(i);
		if ((c != ' ' && c != '\n' && c != '\t'))
			return false;
	}
	return true;
}

// this function returns TRUE if a string contains only numeric digits
function isdigit(s)
{
	for (var i=0; i<s.length; i++)
	{
		var digit = s.charAt(i);
		if (digit < "0" || digit > "9")
			return false;
	}
	return true;
}

// this function returns TRUE if a string contains only alphabets in upper/lower cases
function isalpha(s)
{
        for (var i=0; i<s.length; i++)
        {
                var Char = s.charAt(i);
                if ((Char < "a" || Char > "z") && (Char < "A" || Char > "Z"))
                        return false;
        }
        return true;
}

// this function returns TRUE if a string represents a valid date
function isDate(d)
{
	//if (isdigit(d) == false)
	//	return false;
	//if (d.length != 10)
	//	return false;

	//var month = parseInt(d.substring(0,2),10);
	//var day = parseInt(d.substring(3,5),10);
	//var year = parseInt(d.substring(5,10),10);

	var month = d.substring(0,d.indexOf("/"));
	var dayyesr = d.substring(d.indexOf("/")+1);
	var day = dayyesr.substring(0,dayyesr.indexOf("/"));
	var year = dayyesr.substring(dayyesr.indexOf("/")+1);

	if (!isNumeric(day) || !isNumeric(month) || !isNumeric(year))
		return false;

	if (year<1900 || year>2099)
		return false;

	if (month <= 0 || month > 12)
		return false;

	if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) &&
	    (day <= 0 || day > 31))
		return false;

	if ((month == 4 || month == 6 || month == 9 || month == 11) && (day <= 0 || day > 30))
		return false;

	if (month == 2)
	{
		if (day <= 0 || day > 29)
			return false;
		if (day > 28)
		{
			if (year % 4 != 0 || ((year % 100) == 0 && (year % 400) != 0))
				return false;
		}
	}
	return true;
}

function isYearMonth(d)
{
	var month = d.substring(0,d.indexOf("/"));
	var year = d.substring(d.indexOf("/")+1);

	if (!isNumeric(month) || !isNumeric(year))
		return false;

	if (year<1900 || year>2099)
		return false;

	if (month <= 0 || month > 12)
		return false;
	return true;
}

function convertSTDDate(d){
   if (d==""){
     return "";
   }

   if(isDate(d)){
      return d;
   }else{
      var ed = Date.parseDate(d,"");
					ed = ed.print("%m/%d/%Y");
      return ed;
   }


}

function compareDate(a,b){
   if (a=="" || b==""){
     return false;
   }

   var aDate;
   var bDate;

   if(isDate(a)){
      aDate =  Date.parseDate(a,"%m/%d/%Y");
   }else{
     aDate = Date.parseDate(d,"");
   }

   if(isDate(b)){
      bDate =  Date.parseDate(b,"%m/%d/%Y");
   }else{
     bDate = Date.parseDate(b,"");
   }

   return aDate>bDate;


}

function getFirstDateOfMonth(d){
   if (d==""){
     return "";
   }
   if(isDate(d)){
		var td =  Date.parseDate(d,"%m/%d/%Y");
		td.setDate(1);
		return  td.print("");
	}else if(isDate(convertSTDDate(d))){
		var td =  Date.parseDate(d,"");
		td.setDate(1);
		return  td.print("");
	}else{
		return d;
	}
}

function getLastDateOfMonth(d){
   if (d==""){
     return "";
   }
   if(isDate(d)){
		var td =  Date.parseDate(d,"%m/%d/%Y");
		td.setMonth(td.getMonth()+1);
		td.setDate(1);
		td.setDate(td.getDate()-1);
		return  td.print("");
	}else if(isDate(convertSTDDate(d))){
		var td =  Date.parseDate(d,"");
		td.setMonth(td.getMonth()+1);
		td.setDate(1);
		td.setDate(td.getDate()-1);
		return  td.print("");
	}else{
		return d;
	}
}


// this function return TRUE if email represents a valid email format
function isEmail(email)
{
	// valid format "a@b.cd"
	invalidChars = " /;,:{}[]|*%$#!()`<>?";
	if (email == "")
	{
		return false;
	}
	for (i=0; i< invalidChars.length; i++)
	{
		badChar = invalidChars.charAt(i)
		if (email.indexOf(badChar,0) > -1)
		{
			return false;
		}
	}
	atPos = email.indexOf("@",1)
	// there must be one "@" symbol
	if (atPos == -1)
	{
		return false;
	}

	if (email.indexOf("@", atPos+1) != -1)
	{
	// and only one "@" symbol
		return false;
	}

	periodPos = email.indexOf(".",atPos)
	if(periodPos == -1)
	{
	// and at least one "." after the "@"
		return false;
	}

	if ( atPos +2 > periodPos)
	// and at least one character between "@" and "."
	{
		return false;
	}

	if ( periodPos +3 > email.length)
	{
		return false;
	}
	return true;
}

function isNumeric(p)
{
    if (p == "")
        return false;

    var firstDigit = p.charAt(0);
    /*
    if (digit != '+' && digit != '-' && digit != "." && (digit < "0" || digit > "9"))
        return false;
     */
    if (!(firstDigit == '+' || firstDigit == '-' || firstDigit == '.' || ('0' <= firstDigit && firstDigit <= '9'))) {
        return false;
    }

    var l = p.length;
    for(var i=1; i<l; i++)
    {
        var digit = p.charAt(i);
        if ((digit < "0" || digit > "9") && (digit != "."))
            return false;
    }
    return true;
}
function isInteger(p)
{
    if (p == "")
        return false;

    var l = p.length;
    for(var i=0; i<l; i++)
    {
        var digit = p.charAt(i);
        if (digit < "0" || digit > "9")
            return false;
    }
    return true;
}
function isTel(p){
 var l = p.length;
    for(var i=1; i<l; i++)
    {
        var digit = p.charAt(i);
        if ((digit < "0" || digit > "9") && (digit != ".")&&(digit != "+")&&(digit != "-")&&(digit != "(")&&(digit != ")")&&(digit != " "))
            return false;
    }
    return true;
}

function isPositiveNumeric(p)
{
    if (p == "")
        return false;

    var firstDigit = p.charAt(0);
    if (!((firstDigit == '.') || ('0' <= firstDigit && firstDigit <= '9'))) {
        return false;
    }
    var l = p.length;
    for(var i=1; i<l; i++)
    {
        var digit = p.charAt(i);
        if ((digit < "0" || digit > "9") && (digit != "."))
            return false;
    }
    return true;
}

function roundoffDisplay(node, dp) {
    node.value = roundoff(parseFloat(node.value), dp);
}

function isIP(ip){
	var server = ip.split(".");
	if(server.length != 4 || !isdigit(server[0]) || !isdigit(server[1]) || !isdigit(server[2]) || !isdigit(server[3]) || !isNumeric(server[0]) || !isNumeric(server[1]) || !isNumeric(server[2]) || !isNumeric(server[3]) || server[0] > 255 || server[1] > 255 || server[2] > 255 || server[3] > 255){
		return false;
	}
	return true;
}

