/**
 * Generic
 */

var defaultFocusOccur;
var defaultFocusField;

function selectValue( url )
{
	var hWnd = window.open( url, "PopUp", "width=250,height=325,resizable=yes,scrollbars=yes" );
	if( ( document.window != null ) && ( !hWnd.opener ) )
		hWnd.opener = document.window;
}

function updateField( field, value )
{
	field.value = value;
	window.close();
}

function isDigit( str )
{
  for( var i = 0; i < str.length; i++ )
  {
    var charCode = str.charCodeAt( i );
    if( !(charCode >= 48 && charCode <= 57) )
      return( false );
  }
  return( true );
}

function isLetter( str )
{
  for( var i = 0; i < str.length; i++ )
  {
    var charCode = str.charCodeAt( i );
    if( !(charCode >= 65 && charCode <= 90 || charCode >= 97 && charCode <= 122) )
      return( false );
  }
  return( true );
}

function isLetterOrDigit( str )
{
  for( var i = 0; i < str.length; i++ )
  {
    var character = str.charAt( i );
    if( !isDigit( character ) && !isLetter( character ) )
      return( false );
  }
  return( true );
}


function searchKey( campo, keyEvent )
{
  var key = keyEvent.keyCode;
  document.form[campo].value = key;
}


function nextField( field, event )
{
  var size = field.maxLenght;
  if (isNaN(size)) {
    size = field.size;
    if (isNaN(size)) {
      var cols = field.cols;
      var rows = field.rows;
      if (!isNaN(cols) || !isNaN(rows)) {
        if (isNaN(cols)) {
          cols = 20;
        }
        if (isNaN(rows)) {
          rows = 2;
        }
        size = cols * rows;
      } else {
        size = 20;
      }
    }
  }
  nextFieldFocus( field, size, true, event );
}

function nextFocus( field, size, event )
{
  nextFieldFocus( field, size, true, event );
}

function nextFieldFocus( field, size, accents, event )
{
  /* Removendo acentuação caso seja indesejada */
  if( accents == false )
    field.value = removeAccents( field.value );

  /* 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
          }

}

function getField( c )
{
  var i;
  var j;
  for( i = 0; i < document.forms.length; i++ )
  {
    var f = document.forms[ i ];
    for( j = 0; j < f.elements.length; j++ )
    {
      var campo = f[ j ];
      if( c == campo.name )
        return campo;
    }
  }
  return null;
}

function setFocus( campofoco )
{
  var campo = getField( campofoco )
  if( campo != null && campo.disabled != true)
    campo.focus();
}

function setFirstFieldFocus()
{
  if( defaultFocusOccur != null )
    window.location.hash = defaultFocusOccur;
  if( defaultFocusField != null )
    setFocus( defaultFocusField );
  else
  {
    var form = document.forms[ 0 ];
    if( form != null )
      for( var i = 0; i < form.elements.length; ++i )
        if( form[ i ].type != 'hidden' && form[ i ].disabled != true)
        {
          form[ i ].focus();
          break;
        }
  }
}

function selectAll( newState )
{
  for( var i = 0; i < document.forms[0].elements.length; i++ )
    document.forms[0].elements[i].checked = newState;
}

function getQueryString()
{
  var res = "";
  for( var i = 0; i < document.forms[0].elements.length; i++ )
  {
    var field = document.forms[0].elements[i];
    if( i > 0 )
      res = res + "&";
    res = res + field.name + "=" + field.value;
  }
  return res;
}

function getQueryStringWithout( e )
{
  var res = "";
  for( var i = 0; i < document.forms[0].elements.length; i++ )
  {
    var elem = document.forms[0].elements[i];
    if( e != elem.name )
    {
      if( i > 0 )
        res = res + "&";
      res = res + elem.name + "=" + elem.value;
    }
  }
  return res;
}

function getQueryStringWithoutSubmits()
{
  var res = "";
  for( var i = 0; i < document.forms[0].elements.length; i++ )
  {
    var elem = document.forms[0].elements[i];
    if( elem.type != "submit" )
    {
      if( i > 0 )
        res = res + "&";
      res = res + elem.name + "=" + elem.value;
    }
  }
  return res;
}

function getWindowName()
{
  return window.name.length > 0 ? window.name : "_top";
}

function removeAccents( fieldValue )
{
  var value = '';
  var caracterStr;
  for( var j = 0; j < fieldValue.length; ++j )
  {
    caracterStr  = fieldValue.charAt( j );

    switch( caracterStr )
    {
      case 'ª':
      case 'º':
      case '\'':
      case '´': 
      case '`': 
      case '^': 
      case '¨': 
      case '~': break;

      case 'Ã':
      case 'Á':
      case 'À':
      case 'Â':
      case 'Ä':
        {
          value = value + 'A';
          break;
        }
      case 'ã':
      case 'á':
      case 'à':
      case 'â':
      case 'ä':
        {
          value = value + 'a';
          break;
        }
                
      case 'Ç':
        {
          value = value + 'C';
          break;
        }
      case 'ç':
        {
          value = value + 'c';
          break;
        }

      case 'É':
      case 'È':
      case 'Ê':
      case 'Ë':
        {
          value = value + 'E';
          break;
        }
      case 'é':
      case 'è':
      case 'ê':
      case 'ë':
        {
          value = value + 'e';
          break;
        }

      case 'Í':
      case 'Ì':
      case 'Î':
      case 'Ï':
        {
          value = value + 'I';
          break;
        }
      case 'í':
      case 'ì':
      case 'î':
      case 'ï':
        {
          value = value + 'i';
          break;
        }

      case 'Ý':
        {
          value = value + 'Y';
          break;
        }
      case 'ý':
        {
          value = value + 'y';
          break;
        }

      case 'Õ':
      case 'Ó':
      case 'Ò':
      case 'Ô':
      case 'Ö':
        {
          value = value + 'O';
          break;
        }
      case 'õ':
      case 'ó':
      case 'ò':
      case 'ô':
      case 'ö':
        {
          value = value + 'o';
          break;
        }

      case 'Ú':
      case 'Ù':
      case 'Û':
      case 'Ü':
        {
          value = value + 'U';
          break;
        }
      case 'ú':
      case 'ù':
      case 'û':
      case 'ü':
        {
          value = value + 'u';
          break;
        }

      case 'Ñ':
        {
          value = value + 'N';
          break;
        }
      case 'ñ':
        {
          value = value + 'n';
          break;
        }
      default: value = value + caracterStr;
    }
  }
  return( value );
}
