
var otherCheckFunctionDefined = false;
var otherCheckFunctionListDefined = false;

/**
 * This function selects or deselects all checkboxes (the 'Select' column) in a sorting bar
 * Params:
 *    selectName: name of the input to check
 *    form_name: name of the form (generally 'search_form')
 */
var lastSelectAll = new Array();

function selectAll(selectName, form_name)
{
  if(lastSelectAll[selectName] == null)
  {
    lastSelectAll[selectName] = false;
  }
  var selectObj = getFormObject(selectName, form_name);

  if(selectObj != null)
  {
    var len = selectObj.length;
    if(len != null)
    {
      for( i=0; i<len; i++ )
      {
        if( selectObj[ i ].disabled != true && selectObj[ i ].style.display != 'none')
        {
          selectObj[  i  ].checked = !lastSelectAll[selectName];
        }
      }
    }
    else
    {
      if( selectObj.disabled == true && selectObj.style.display != 'none')
      {
        selectObj.checked = !lastSelectAll[selectName];
      }
    }
  }
  lastSelectAll[selectName] = !lastSelectAll[selectName];
}

function enableAll( selectName, form_name, disable )
{
  var selectObj = getFormObject(selectName, form_name);

  if(selectObj != null)
  {
    var len = selectObj.length;
    if(len != null)
    {
      var index = 0;
      for( i=0; i<len; i++ )
      {
        selectObj[  i  ].checked = false;
        selectObj[  i  ].disabled = disable;
      }
    }
    else
    {
      selectObj.checked = false;
      selectObj.disabled = disable;
    }
  }
}

function checkActionBox( sAction, sFormName )
{
  setInputValue( sAction, '1', sFormName );
}

function uncheckActionBox( sAction, sFormName )
{
  setInputValue( sAction, '', sFormName );
}

/**
 * Look for the checkbox inputs named 'input_name'
 * into the for 'form_name'.
 * Return true if one of the checkboxes is checked
 * Return false in any other cases
 */
function hasSelectedCheckboxes(input_names, form_name)
{
  if((input_names == null) || (input_names.length == null))
    {
      return false;
    }
    
  var i;
  for(i = 0; i < input_names.length; i++)
    {
      var inputObjs = getFormObject(input_names[i], form_name);
      if(inputObjs != null)
        {
          var objLength = inputObjs.length;
          if(objLength == null)
            {
              if(inputObjs.checked == true)
                {
                  return true;
                }
            }
          else
            {
              var j;
              for(j = 0; j < objLength; j++)
                {
                  if(inputObjs[j].checked == true)
                    {
                      return true;
                    }
                }
            }
        }
    }
  return false;
}

/**
 * Look for the checkbox inputs named 'input_name'
 * into the for 'form_name'.
 * Returns an array of selected checkbox values
 */
function getSelectedCheckboxes(input_names, form_name)
{
  if((input_names == null) || (input_names.length == null))
    {
      return false;
    }
    
  var i;
  var ret = new Array();
  for(i = 0; i < input_names.length; i++)
    {
      var inputObjs = getFormObject(input_names[i], form_name);
      if(inputObjs != null)
        {
          var objLength = inputObjs.length;
          if(objLength == null)
            {
              if(inputObjs.checked == true)
                {
                  ret[ ret.length ] = inputObjs.value;
                }
            }
          else
            {
              var j;
              for(j = 0; j < objLength; j++)
                {
                  if(inputObjs[j].checked == true)
                    {
                      ret[ ret.length ] = inputObjs[j].value;
                    }
                }
            }
        }
    }
  return ret;
}

function getCheckedActions( tab, sFormName )
{
  var i;
  var action;
  if( sFormName == null )
  {
    sFormName = 'search_form';
  }
  if(tab == null)
  {
    if( !window.aActionsList )
    {
      alert('aActionsList_not_supplied');
    }
    tab = aActionsList;
  }
  var ret = new Array();
  if(tab != null)
  {
    for(i = 0; i < tab.length; i++)
    {
      if( isActionChecked( tab[i], sFormName ) )
      {
        ret[ ret.length ] = tab[i];
      }
    }
  }
  return ret;
}

function isActionChecked( sAction, sFormName )
{
  var pObj = getFormObject( sAction, sFormName );
  if ( pObj != null )
  {
    var sVal = getInputValue( sAction, sFormName );
    return sVal == true || sVal == '1';
  }
}

function hasCheckedActions( tab, sFormName )
{
  var aActions = getCheckedActions( tab, sFormName );

  return aActions.length > 0;
}

function uncheckOtherActions( sAction, aActions, bDisableActions, sFormName )
{
  if( sAction )
  {
    var bChecked = isActionChecked( sAction, sFormName );

    for( i = 0; i < aActions.length; i++ )
    {
      if( aActions[i] != sAction )
      {
        var pObj = getFormObject(aActions[i], sFormName );
        if( pObj )
        {
          if( bChecked == true )
          {
            uncheckActionBox( sAction[i], sFormName );
            if( bDisableActions == true )
            {
              pObj.disabled = true;
            }
          }
          else
          {
            pObj.disabled = false;
          }
        }
      }
    }
  }
}

function checkActionSubmission( tab, sFormName, bDoNotAlertUser )
{
  var bAction   = hasCheckedActions(tab, sFormName);
  var bSelected = hasSelectedCheckboxes(['select'], sFormName );

  if( !bSelected )
  {
    var bEnabled;
    if( getFormObject( 'select', sFormName ) != null )
    {
      if( getFormObject( 'select', sFormName ).length != null )
      {
        bEnabled = !getFormObject( 'select', sFormName )[0].disabled;
      }
      else
      {
        bEnabled = !getFormObject( 'select', sFormName ).disabled;
      }
    }
    else
    {
      bEnabled = false;
    }
    if( !bEnabled )
    {
      bSelected = true;
    }
  }

  if(    (  bDoNotAlertUser && ( ( !bAction && bSelected ) || ( bAction && !bSelected ) ) )
      || ( !bDoNotAlertUser && ( !bAction || !bSelected ) ) )
  {
    if( !bAction )
    {
      alert(sMessageNoSelectedAction);
      return false;
    } 
    if( !bSelected )
    {
      alert(sMessageNoSelectedRow);
      return false;
    }
  }
  return true;
}

function submitActionsForm( inputName, formName, myDocument )
{
  if( !window.aActionsList )
    return submitActionForm( inputName, formName, myDocument );
  
  if( !checkActionSubmission( window.aActionsList, formName ) )
    return; // ne pas retourner null, car c'est affiche dans le navigateur
  
  return submitActionForm( inputName, formName, myDocument );
}

function goHref(newHref, windowObj)
{
  if(windowObj == null)
    windowObj = window;
  if(windowObj.destroyPage)
  {
    try
    {
      if(windowObj.destroyPage(newHref) !== false)
        windowObj.location.href = newHref;
    }
    catch(ex)
    {
      //if(ex instanceof CheckerException && ex.getErrorNumber() == WARNING_PLEASE_SAVE_BEFORE_QUITTING )
      if( ex.showUser )
      {
        ex.showUser(window);
      }
      else
      {
        throw ex;
      }
    }
  }
  else
    windowObj.location.href = newHref;
}


