function LTrim(str)
        /***
                PURPOSE: Remove leading blanks from our string.
                IN: str - the string we want to LTrim

                RETVAL: An LTrimmed string!
        ***/
        {
                var whitespace = new String(" \t\n\r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(0)) != -1) {
                    // We have a string with leading blank(s)...

                    var j=0, i = s.length;

                    // Iterate from the far left of string until we
                    // don't have any more whitespace...
                    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
                        j++;


                    // Get the substring from the first non-whitespace
                    // character to the end of the string...
                    s = s.substring(j, i);
                }

                return s;
        }

function RTrim(str)
        /***
                PURPOSE: Remove trailing blanks from our string.
                IN: str - the string we want to RTrim

                RETVAL: An RTrimmed string!
        ***/
        {
                // We don't want to trip JUST spaces, but also tabs,
                // line feeds, etc.  Add anything else you want to
                // "trim" here in Whitespace
                var whitespace = new String(" \t\n\r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
                    // We have a string with trailing blank(s)...

                    var i = s.length - 1;       // Get length of string

                    // Iterate from the far right of string until we
                    // don't have any more whitespace...
                    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                        i--;


                    // Get the substring from the front of the string to
                    // where the last non-whitespace character is...
                    s = s.substring(0, i+1);
                }

                return s;
        }

function Trim(str)
        /***
                PURPOSE: Remove trailing and leading blanks from our string.
                IN: str - the string we want to Trim

                RETVAL: A Trimmed string!
        ***/
        {
                return RTrim(LTrim(str));
        }
function validarData(dtData) {
		isValid = false

		if (dtData.substring(2,3) == "/" && dtData.substring(5,6) == "/") {
			dia = dtData.substring(0, 2)
			mes = dtData.substring(3, 5)
			ano = dtData.substring(6, 10)

			if (validarAno(ano)) {
				if (validarMes(mes)) {
					if (validarDia(ano, mes, dia)) {
						isValid = true
					}
				}
			}
		}

		return isValid
	}

function validarAno(ano) {
		isValid = false

		if (ano >= 1900) {
			isValid = true
		}

		return isValid
	}

function validarMes(mes) {
		isValid = false

		if (mes >= 1 && mes <= 12) {
			isValid = true
		}

		return isValid
	}

function validarDia(ano, mes, dia) {
		isValid = true

	    if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) {
    		if (dia < 1 || dia > 31) {
        		isValid = false
	      	}
	    }
		else if (mes == 2) {
			if (dia > 0) {				
        		if (ano % 4 == 0) {
          			if (dia > 29) {
            			isValid = false
          			}
        		}				
				else {
          			if (dia > 28) {
            			isValid = false
          			}
				}
			}
			else {
				isValid = false
			}
		}
		else {
      		if (dia < 1 || dia > 30) {
        		isValid = false
      		}
		}

		return isValid
	}

	function verificaCPF(cpf)
	{
		if(cpf == "") {
			return true;
		}
		var dac = "", inicio = 2, fim = 10, soma, digito, i, j
		for (j=1;j<=2;j++) {
			soma = 0
			for (i=inicio;i<=fim;i++) {
				soma += parseInt(cpf.substring(i-j-1,i-j))*(fim+1+j-i)
			}
			if (j == 2) { soma += 2*digito }
			digito = (10*soma) % 11
			if (digito == 10) { digito = 0 }
			dac += digito
			inicio = 3
			fim = 11
		}
		return (dac == cpf.substring(cpf.length-2,cpf.length))
	}


	function isNumeric(valor) {
		isValid = true

		re = /[^0-9]/

		if (valor.length == 0 || valor.match(re) != null) {
			isValid = false
		}

		return isValid
	}

function validaCNPJ(s)
	{
		var i;
		s = Trim(s);
		var c = s.substr(0,12);
		var dv = s.substr(12,2);
		var d1 = 0;
		for (i = 0; i < 12; i++)
		{
			d1 += c.charAt(11-i)*(2+(i % 8));
		}
	        if (d1 == 0) return false;
	        d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(0) != d1)
		{
			return false;
		}

		d1 *= 2;
		for (i = 0; i < 12; i++)
		{
			d1 += c.charAt(11-i)*(2+((i+1) % 8));
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(1) != d1)
		{
			return false;
		}
	        return true;
	}

       function modulo11(s)
	{
		s1 = Trim(s); 
		L = s1.length;
		dv = 0;
		p = 9;
		for (i = L-1; i>-1 ; i--)
		{
			dv = dv + (s1.charAt(i))*p;
			p--;
			if (p<2) { p=9};
		}
	        if (dv == 0) { d ='0' }
	        else {
	              dv = (dv % 11);
		      if (dv > 9) d = 'X'
		      else d = dv;
		     }
		return d;
	}

function dvBanrisul(s) {
		s1 = Trim(s); 
		dv=s1.charAt(0)*3 + s1.charAt(1)*2 + s1.charAt(2)*4;
		L = s1.length;
		p = 7;
		for (i=3; i<=L ; i++)
		{
			dv = dv + (s1.charAt(i))*p;
			p--;
			if (p<2) { p=7};
		}
		resto = dv % 11;
	        if (resto == 0) { d ='0' }
	        else {
	              if (resto == 1) { d ='6' }
	              else { d = 11 - resto }
		     }
		return d;
}


function date_time(dateFormat) {
  var dt, d, m, y, _d, _m, s;

  var validateFormat = function (fmt) {
    var VALID_FORMATS = new Array('dmy', 'mdy', 'ymd');
    var S1 = '';
    for (i = 0; i < VALID_FORMATS.lenght; i++)
      if (fmt == VALID_FORMATS[i]) S1 = VALID_FORMATS[i];
    if (S1 == '') fmt = VALID_FORMATS[0];
    return (fmt);
  }

  var formatDate = function (sep, day, mon, year) {
    var r;
    dateFormat = validateFormat(dateFormat);
    if (dateFormat == 'dmy') 
      r = day + sep + mon + sep + year;
    if (dateFormat == 'mdy') 
      r = mon + sep + day + sep + year;
    if (dateFormat == 'ymd') 
      r = year + sep + mon + sep + day;
    return (r);
  }

  var setDateData = function (sep) {
    s = sep || '/';
    dt = new Date();
    y = dt.getFullYear();
    m = (((_m = dt.getMonth() + 1)) + '').length == 1 ? ('0' + _m) : _m;
    d = ((_d = dt.getDate()) + '').length == 1 ? ('0' + _d) : _d;
  }

  this.date = function(sep) {
    setDateData(sep);
    var r = formatDate(s, d, m, y);
    return (r);
  }

  this.time = function() {
    var h, m, sc, _h, _m, _sc;
    dt = new Date();   
    h = ((_h = (dt.getHours()) + '')).length == 1 ? '0'+_h : _h;
    m = ((_m = (dt.getMinutes()) + '')).length == 1 ? '0'+_m : _m;
    sc = ((_sc = (dt.getSeconds()) + '')).length == 1 ? '0'+_sc : _sc;
    return (h + ':' + m + ':' + sc);
  }

  this.dateTime = function (sep) {
    return (this.date(sep) + ' ' + this.time());
  }
  this.addDays = function(days, sep) {
    var DAYS_OF_MONTHS = Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    days = parseInt(days);
    setDateData(sep);
    _d = dt.getDate() + days;
    while (_d > DAYS_OF_MONTHS[_m - 1]) {
      _d = (_d - DAYS_OF_MONTHS[_m - 1]);
      if (_d < 0) _d = _d * -1;
      _m++;
      if (_m > 12) {
        _m = 1;
        y++;
      }
      m = _m;
    }
    d = (_d + '').length == 1 ? ('0' + _d) : _d;
    return formatDate(s, d, m, y);
  }
}
