/*
  QuinScape Xtreme Foundation Classes   (QXFC)
  JavaScript Framework
  
  Copyright (c) 2007 QuinScape GmbH
  All Rights Reserved.
 
  http://www.quinscape.de
 
  No part of this source code may be distributed in any form, be it altered
  or unaltered, without the explicit written permission of QuinScape.
 
  Author: Jörg Gottschling, Nils Berger
*/ 
/**
 * @namespace
 * 
 * @version 5.0-4a3

 * @author Jörg Gottschling
 * @author Nils Berger
 */
qxfc =
{
  version: '5.0-4a3',
  
  /**
   * <p>Setzt die Action-ID für die übergebene Schaltfläche und dessen Formular
   * oder für das erste (meist einzige) Formular auf der Seite.</p>
   *
   * Beispielaufruf für onclick einer Schaltfläche:
   * @example qxfc.setActionId('actDo', this);
   *
   * @param {number} actionId
   *     Die zu setzende Action ID, z.B. actMerge für Speichern, actDelete für Löschen ...
   *
   * @param {object} [button]
   *     Die Schaltfläche.
   *
   * @return Immer true wegen Eventhandlern und der gleichen.
   */
  setActionId : function(actionId, button)
  {
    form = document.forms[0];
    if (button && button.oUp)
    {
      form = button.form;
      if (!(button.oUp.oSource)) button.oUp.oSource = new Object();
      button.oUp.oSource.fr_ActionId = actionId;
      // Für Tooltips Request auf POST festlegen
      if (button.oUp.oTarget.bToolTipPopup)
        button.oUp.requestType = 3;
    }
    form.fr_ActionId.value = actionId;
  	return true;
  },

  /**
   * <p>Setzt die Action-ID für die übergebene Schaltfläche und dessen Formular
   * oder für das erste (meist einzige) Formular auf der Seite auf "actDo".
   * Wichtig um im Zusammenspiel mit QXFC-ActionControllern die Action-ID
   * explizit zu setzen.</p>
   *
   * Beispielaufruf für onclick einer Schaltfläche:
   * @example qxfc.setActionDo(this);
   *
   * @param {object} [button]
   *     Die Schaltfläche.
   *
   * @return Immer true wegen Eventhandlern und der gleichen.
   */
  setActionDo : function(button)
  {
    return this.setActionId('actDo', button);
  },

  /**
   * <p>Setzt die Action-ID für die übergebene Schaltfläche und dessen Formular
   * oder für das erste (meist einzige) Formular auf der Seite auf "actDelete".
   * Wichtig um im Zusammenspiel mit QXFC-ActionControllern die Action-ID
   * explizit zu setzen.</p>
   * 
   * <p><strong>Sehr praktisch zum Löschen aus Tabellen!</strong></p>
   *
   * Beispielaufruf für onclick einer Schaltfläche:
   * @example qxfc.setActionDelete(this);
   * 
   * @param {object} [button]
   *     Die Schaltfläche.
   *
   * @return Immer true wegen Eventhandlern und der gleichen.
   */
  setActionDelete : function(button)
  {
    return this.setActionId('actDelete', button);
  },
  
  /**
   * Deaktiviert ein ActionControl (egal welchen Typs) wenn nötig und möglich.
   * Berücksichtigt dabei die Validierung der Eingabefelder.
   * 
   * @param {object} button
   *     Das ActionControl (Schaltfläche, Link, ...). <strong>Pflicht!</strong>
   *
   * @return false solange die Felder noch nicht valide sind. 
   *     Wenn die Felder valide sind, beim ersten Aufruf für einen Button
   *     true. Danach immer false, damit eine Schaltfläche nicht doppelt
   *     geklickt werden kann.
   */
  deactivateAndWait : function(button)
  {
    // abbrechen, wenn der Button deaktiviert wurde oder die Pflichtfelder nicht gefüllt sind
    if( button && (button.qsDeactivated || !button.oUp.oFup.oForm.validateRequired()) )
      return false;

    button.qsDeactivated = true;
    
    document.forms[0].style.cursor="wait";

    return true;
  }

};

