//-------------------------------------------------------------------------------------------------
// mascara: formata um valor com uma determinada mascara
// deve ser invocada no onkeydown
// ex: <input type=text name=data value="" onkeydown="return mascara(this, '99+/99+/9999', event)">
// para a mascara, utilize "9" para aceitar numeros
//                         "A" para letras
//                         "X" para letras e numeros
// coloque qualquer caracter depois do + para que apareça na mascara
//-------------------------------------------------------------------------------------------------
if(!document.all){ //Não é IE
     window.captureEvents(Event.KEYUP);
}

function mascara(o, masc, e ) {
   var t;                                       // tecla
   var v       = String(o.value).toUpperCase(); // valor
   var cvalido = "";                            // caracteres válidos
   var poscar  = new Array();                   // caracteres em cada posicao
   var tipocar = new Array();
   var s       = "";

   //Obtem o Código da Tecla
   e  = e ? e : window.event;
   t = ( document.all ) ? e.keyCode : null;
   t = ( (!t) && typeof( e.which )    == 'number' ) ? e.which    : t;
   t = ( (!t) && typeof( e.charCode ) == 'number' ) ? e.charCode : t;

   //--------------
   for (i=0, k=0; i < masc.length; i++) {
       if (masc.charAt(i) == "+") {
          poscar[k]    = masc.charAt(++i);
          tipocar[k++] = '+';
       }
       else {
          poscar[k]    = masc.charAt(i);
          tipocar[k++] = 'M';
       }
   }

   o.value = v;

   //BackSpace 8   Del 46       Home 36
   if (t == 8 || t == 46 || t == 9 || t == 36) {
      if (v[v.length-1] == ".") {
          v = v.substr(0, v.length-1);
      }
      o.value = v;
      e.returnValue = true;
      return true;
   }

   //<-37  ->39  Home 36  End 35 Ins 45
   //if(t==37 || t==39 || t==36 || t==35 || t==45) {
   //    return true;
   //}

   if (v.length >= poscar.length) {
      if (typeof(e.preventDefault)=='function') {
          e.preventDefault();
      }
      //o.value = v.substr(0, poscar.length);
      e.returnValue = false;
      return false;
   }

   i = v.length;
   if (tipocar[i] == '+') {
      v += poscar[i];
   }
   i = v.length;


   if (tipocar[i] == "M" && poscar[i] == "9")
      cvalido = '0123456789`abcdefghi'; // as letras representam os codigos dos numeros do teclado numerico
   else if (tipocar[i] == "M" && poscar[i] == "X")
      cvalido = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`abcdefghi ';
   else if (tipocar[i] == "M" && poscar[i] == "A")
      cvalido = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ';

   if ( cvalido.indexOf( String.fromCharCode( t ) ) == -1 ) {
      if (typeof(e.preventDefault)=='function') {
          e.preventDefault();
      }
      e.returnValue = false;
      return false;
   }

   if (tipocar[i] == '\\') {
      v += poscar[i];
   }
   o.value = v;
   //alert( 'o.value='+o.value);

   e.returnValue = true;
   return true;
}


function RetiraEspacos(Obj) {
    Obj.value = Obj.value.replace(/\r/g, " ");
    Obj.value = Obj.value.replace(/[^ A-Za-z0-9À-ÿ`~!@#\$%\^&\*\(\)-_=\+\\\|\]\[\}\{'";:\?\/\.>,<]/g, "");

    Obj.value = Obj.value.replace(/'/g, "");    //Substitui aspas simples por vazio

    Obj.value = Obj.value.replace(/ +/g, " ");
    Obj.value = Obj.value.replace(/^\s/g, "");
    Obj.value = Obj.value.replace(/\s$/g, "");

    if (Obj.value == ' ')
        Obj.value = '';
}


function replaceAll( str, from, to ) {
    var idx = str.indexOf( from );
    while ( idx > -1 ) {
        str = str.replace( from, to );
        idx = str.indexOf( from );
    }
    return str;
}


function Right(str, n) {
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}


