function trim(str) {    if (str != null){        while (str.charAt(str.length -1) == " ")            str = str.substring(0, str.length -1);	        while (str.charAt(0) == " ")            str = str.substring(1, str.length);    }	    return str;}function isEmpty(str) {    if (str == null) {        return true;    } else if (str.length <= 0) {        return true;    }    return false;}function isPositiveInteger(str){    var pattern = "0123456789";    var i = 0;    var pos = 0;    do {        pos = 0;        for (j = 0; j < pattern.length; j++){            if (str.charAt(i) == pattern.charAt(j)) {                pos = 1;                break;            }        }        i++;    } while (pos==1 && i < str.length)    return pos == 1;}/** * Validacao de datas * @param campo do formulario */function validDate(formField){    var result = true;    if (formField) {        var elems = formField.value.split("/");        result = (elems.length == 3); // should be three components        if (result)	{            var day = elems[0];            var month = elems[1];            var year = elems[2];			            result = ! isNaN(elems[0]) && (month > 0) && (month < 13) &&            ! isNaN(elems[1]) && (day > 0) && (day < 32) &&            ! isNaN(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));        }        if (!result){            alert('Entre uma data valida!');            formField.focus();		            formField.select();        }    } else result = false;	    return result;}/* Formata??o para qualquer mascara  Exemplos:CEP  onKeyUP="formatar(this, '#####-###')"CPF  onKeyUP="formatar(this, '###.###.###-##')"DATA  onKeyUP="formatar(this, '##/##/####')"*/function formatar(src, mask) {    if (src != null && src.value != null) {        var i = src.value.length;        var saida = mask.substring(0,1);        var texto = mask.substring(i);        if (texto.substring(0,1) != saida) {            src.value += texto.substring(0,1);        }    }}/*  * Formata??o para qualquer mascara * Exemplos: * CEP - onkeyup="formatar(this, '#####-###')" * CPF - onkeyup="formatar(this, '###.###.###-##')" * DATA - onkeyup="formatar(this, '##/##/####')" */function formatar(src, mask) {    if (src != null && src.value != null) {        var i = src.value.length;        var saida = mask.substring(0,1);        var texto = mask.substring(i);        if (texto.substring(0,1) != saida) {            src.value += texto.substring(0,1);        }    }}function formatFone(src){    if ((src) && (src.vaue != '')) {        var s = new String(trimtodigits(src.value));        src.value = s.substring(0, s.length -4)+'-'+s.substring(s.length -4, s.length);    }    return;}function formatCPF(src){    if ((src) && (src.vaue != '')) {        var s = new String(trimtodigits(src.value));        src.value = s.substring(0, 9)+'-'+s.substring(9);    }    return;}function formatCNPJ(src){    if ((src) && (src.vaue != '')) {        var s = new String(trimtodigits(src.value));        src.value = s.substring(0, 2)+'.'+s.substring(2, 5)+'.'+s.substring(5, 8)+'/'+s.substring(8, 12)+'-'+s.substring(12, 14);    }    return;}//-------------------------------------------------------------------// FormataValor(object, tammax, decimals)//   Formata numero//-------------------------------------------------------------------function FormataValor(objeto,tammax,decimais) {    var vr = objeto.value;    if (vr == "") {        return;    }    objeto.value = floatToStr(vr, tammax, decimais)}/* efetua a formatação de números inteiros */function formataInt(obj) {    var vlr = obj.value;    vlr = parseInt(vlr);    if(! isNaN(vlr))        obj.value = vlr;    else        obj.value = "";}/* converte string para inteiro */function strToInt(str) {    vlr = parseInt(str);    return (! isNaN(vlr) ? vlr : 0);}/* converte string para float */function strToFloat(str) {    // remove pontos da máscara    if(str.search(/.*\..*,.*/) >= 0)        str = str.replace(/\./g, "");    str = str.replace(/,/, ".");    vlr = parseFloat(str);    return (! isNaN(vlr) ? vlr : 0.0);}/* converte float para string, com 2 casas decimais e separador de milhar */function floatToStr(vr, tammax, decimais) {    var idx = -1;    var negativo = vr.indexOf('-') >= 0; // se tiver o sinal (-)            // procura o "." ou "," de separacao das casas decimais    for (i = vr.length; i >= 0; i--){        if (vr.charAt(i) == "." || vr.charAt(i) == ",") {            idx = vr.length - i - 1;            break;        }    }    vr = trimtodigits(vr);    if (idx != -1) {        // faz o arredondamento        var currCD = idx;        vr = vr / Math.pow(10, currCD);        vr = (Math.round(vr * Math.pow(10, decimais)) / Math.pow(10, decimais))+"";        idx = -1;        for (i = vr.length; i >= 0; i--){            if (vr.charAt(i) == ".") {                idx = vr.length - i -1;                break;            }        }    }    var vi = "";    var vd = "";    if (idx == -1) {        idx = vr.length;        vi = vr;    } else {        vi = vr.substring(0, vr.length - idx -1)          vd = vr.substring(vr.length - idx, vr.length);    }    // adiciona o ponto a cada 3 casas    var viaux = vi;    vi = "";    var vialen = viaux.length;    while ((viaux.length - (viaux.length - vialen)) > 3) {        vi = "."+viaux.substring(vialen - 3, vialen) + vi;        vialen = vialen - 3;    }    vi = viaux.substring(0, vialen) + vi;    // adiciona zeros para a formatacao    var currCD = vd.length;    while (decimais > currCD) {        vd += "0";        currCD++;    }    // retorna    if (negativo) {        return "-"+vi+ "," +vd;    } else {         return vi+ "," +vd;    }}/* by Spot - verifica o CNPJ */function verificaCNPJ(scgc) {      var cgc = trimtodigits(scgc);      if(cgc.length != 14) {        return false;    }    var df, resto, dac = ""      df = 5*cgc.charAt(0)+4*cgc.charAt(1)+3*cgc.charAt(2)+2*cgc.charAt(3)+9*cgc.charAt(4)+8*cgc.charAt(5)+7*cgc.charAt(6)+6*cgc.charAt(7)+5*cgc.charAt(8)+4*cgc.charAt(9)+3*cgc.charAt(10)+2*cgc.charAt(11)      resto = df % 11      dac += ( (resto <= 1) ? 0 : (11-resto) )      df = 6*cgc.charAt(0)+5*cgc.charAt(1)+4*cgc.charAt(2)+3*cgc.charAt(3)+2*cgc.charAt(4)+9*cgc.charAt(5)+8*cgc.charAt(6)+7*cgc.charAt(7)+6*cgc.charAt(8)+5*cgc.charAt(9)+4*cgc.charAt(10)+3*cgc.charAt(11)+2*parseInt(dac)      resto = df % 11      dac += ( (resto <= 1) ? 0 : (11-resto) )      return (dac == cgc.substring(cgc.length-2,cgc.length))  }  //Remove todos os caracteres excetos 0-9  function trimtodigits(tstring){      s="";      ts=new String(tstring);      for (x=0;x<ts.length;x++){          ch=ts.charAt(x);          if (asc(ch)>=48 && asc(ch)<=57){              s=s+ch;          }      }      return s;  }  function DateUtil() {    // Retorna numero de dias entre datas    this.numDaysByInterval = function(date1, date2) {        if (date1 == null || date2 == null)             return 0;        return ((date2 - date1) / (24 * 60 * 60 * 1000)).toFixed(0);    }    // converte string em data    this.strToDate = function (str) {        var result = true;        if (str != null) {            var elems = str.split("/");            result = (elems.length == 3); // should be three components            if (result) {                var day = elems[0];                var month = elems[1];                var year = elems[2];                result = ! isNaN(elems[0]) && (month > 0) && (month < 13) &&                ! isNaN(elems[1]) && (day > 0) && (day < 32) &&                ! isNaN(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));                if (result) {                    return new Date(year, month, day);                } else {                    return null;                }            }        } else return null;    }    }// Retorna o c?digo ASC do caracter passada por par?metro  function asc(achar) {    var n=0;    var ascstr = makeCharsetString();    for(i=0;i<ascstr.length;i++) {        if(achar==ascstr.substring(i,i+1)) {            n=i;            break;        }    }    return n+32}// Gera uma string com os caracteres b?sicos na sequ?ncia de c?digos ASC  function makeCharsetString(){      var astr    astr = ' !"#$%&\'()*+,-./0123456789:;<=>?@';    astr+= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz';    astr+= '{|}~';    return astr;}/* verifica o cpf */function verificaCPF(cpf){    var num_cpf = trimtodigits(cpf);    if (num_cpf == null){         return false;    }    if (num_cpf.length != 11){        return false;    }    num_cpf_dv = num_cpf.substring(9,11);    num_cpf = num_cpf.substring(0,9);      for (k=1;k<3;k++) {        soma = 0;        multi = 1;        for (i=num_cpf.length-1;i>=0;i--){            multi++;            soma += (parseInt(num_cpf.substring(i,i+1),10) * multi);         }        resto = (soma % 11);        dv =0;        if (resto > 1){            dv= 11 - resto;        }        num_cpf +=dv;     }    return (num_cpf_dv == num_cpf.substring(9,11));}function RetiraAcentos(string) {    var strAc = "áàãââÁÀÃÂéêÉÊíÍóõôÓÔÕúüÚÜçÇabcdefghijklmnopqrstuvxwyz";    var srtRp = "AAAAAAAAAEEEEIIOOOOOOUUUUCCABCDEFGHIJKLMNOPQRSTUVXWYZ";    var posic, carac;    var newStr = "";    for (var i=0; i < string.length; i++)    {        carac = string.charAt (i);        posic  = strAc.indexOf (carac);        if (posic > -1)            newStr += srtRp.charAt (posic);        else            newStr += string.charAt (i);    }    return (newStr);}function isNumero(campo){    var digits="0123456789"    var campo_temp    for (var i=0;i<campo.value.length;i++){        campo_temp=campo.value.substring(i,i+1)        if (digits.indexOf(campo_temp)==-1){            campo.value = campo.value.substring(0,i);            break;        }    }}
