/**
 * 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 );
}
