/**
 * Format
 */

// Constantes
SYMBOL      = 0;
CARACTER    = 1;
SEPARATOR   = 2;
SIGNAL      = 3;
UPPER       = 4;
LOWER       = 5;
MINUS       = 6;
OTHER       = 7;

function fillLeft( str, c, len )
{
  for( var i = str.length; i < len; ++i )
    str = c + str;
  return( str );
}

function sizeMask( mask )
{
  var caracter;
  var lenMask = 0;
  var type;
  for( var i = 0; i < mask.length; ++i )
  {
    caracter = mask.charAt( i );
    type = findSymbol( caracter );
    if( type != UPPER &&
        type != LOWER &&
        type != SIGNAL &&
        type != MINUS &&
        type != SEPARATOR )
      ++lenMask;
  }
  return( lenMask );
}

function findSymbol( symbol )
{
  var typeSymbol = SYMBOL;
  switch( symbol )
  {
    case '#':
    case '0':
    case 'L':
    case 'l':
    case 'A':
    case 'a':
    case 'C':
    case 'c': {
                typeSymbol = CARACTER;
                break;
              }
    case 'S': {
                typeSymbol = SIGNAL;
                break;
              }
    case 's': {
                typeSymbol = MINUS;
                break;
              }
    case '>': { typeSymbol = UPPER;
                break;
              }
    case '<': { typeSymbol = LOWER;
                break;
              }
    case '\\': {
                 typeSymbol = SEPARATOR;
                 break;
               }
    default: typeSymbol = OTHER;
  }
  return( typeSymbol );
}

function nextFocus( field, size, event )
{
  // Alteração feita por Darlan necessário para remover acentuações dos campos.
  var value = field.value;
  var valueFormated = removerAcentuacao( value );
  if( value != valueFormated )
    field.value = valueFormated;

  /* Tenta recuperar a tecla pelo Netscape */
  var key = event.keyCode;
  /* ou pelo IE */
  if( key == null )
    key = event.which;
  /* Se não conseguir por nenhum dos dois, seta como A */
  if( key == null )
    key = 65;

  var i;
  var value = field.value;
  var selected = false; 

  if( field.form.elements.length != 0 &&
      size <= value.length &&
      key != 0 && key != 8 && key != 9 && key != 16 && key != 20 && key != 27 &&
      !(key >= 33 && key <= 46) &&
      !(key >= 16 && key <= 18) &&
      !(key >= 90 && key <= 93) &&
      !(key >= 112 && key <= 123) &&
      !(key >= 144 && key <= 145) )
    for( i = 0; i < field.form.elements.length - 1 && ! selected; i++ )
      if( field == field.form[ i ] )
        for( j = i + 1; j < field.form.elements.length && ! selected; j++ )
          if( field.form[ j ].type != "hidden" && field.form[ j ].disabled != true )
          {
            field.form[ j ].focus();
            selected = true
          }
}

