/**
 * 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.maxLength;
  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;

  /* Se não for tecla de inserção de caracteres, retorna sem fazer o avanço */
  if ( (key == 9) /* TAB */
    || (key >= 16 && key <= 18) /* SHIFT, CTRL, ALT */
    || (key == 20) /* CAPSLCK */
    || (key >= 33 && key <= 40) /* PGUP, PGDWN, END, HOME, LEFT, UP, RIGHT, DOWN */
    || (key == 91 || key == 93) /* WINDOWS, POPUP */
    || (key == 144) /* NUMLCK */
    || (key >= 112 && key <= 123) ) /* F1 - F12 */
    return true;

  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
          }
  /* se não moveu o foco e já está no limite, retira o foco do componente */
  if (size <= value.length && !selected)
    field.blur();
}

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 openWindow(url, formId, height, width) {
   if (url.indexOf('?') > -1) {
      url = url + '&formId=' + formId;
   } else {
      url = url + '?formId=' + formId;
   }
   openerWindow = window.open(url,'_blank','hotkeys=no, scrollbars=yes, height=' + height + ', width=' + width + '');
   openerWindow.focus();
}

