/**
 * This class is used by the the <code>Plate</code> object to ask the <code>ServerImageSet</code> object if 
 * images not currently shown on the <code>plate</code> document object model (dom) object do in fact need
 * to be shown on the  <code>plate</code> document object model (dom) object.  
 * <br><br>
 * This class contains a few optimizations in order to ensure the fastest possible execution of commands 
 * for movement in the two-dimensional plane, where speed is needed most.
 * <br><br>
 * <a href="mailto:ehudsons@andrew.cmu.edu">Ellen Hudson-Snyder</a>, 
 * <a href="mailto:evedar@andrew.cmu.edu">Elvin Vedar</a>,
 * <a href="mailto:cbalz@andrew.cmu.edu">Christopher M. Balz</a>.
 * <br><br>CVS Version Info:<br>
 *  $Id: PlateUpdateRequest.js,v 1.6 2005/11/08 07:22:53 evedar Exp $
 * <br><br>
 * @object-prop <code>boolean</code> <code>boo2DMovementOnly</code> A boolean value, used as a speed optimization,
 *                                   to indicate that the movement requested will be horizontal and/or vertical
 *                                   only.  If this value is <code>true</code>, then 
 *                                   <code>pIntLeftDistanceMovedPx</code> and <code>pIntLeftDistanceMovedPx</code> 
 *                                   must be non-<code>null</code>.
 * @object-prop <code>number</code> <code>intLeftDistanceMovedPx</code> The distance that the user would like to 
 *                                  move the plate in a horizontal direction.
 * @object-prop <code>number</code> <code>intTopDistanceMovedPx</code> The distance that the user would like to 
 *                                  move the plate in a vertical direction.
 * @object-prop <code>number</code> <code>intZoomLevel</code> An integer representing the level to which the 
 *                                  user would like to move in the stacking order of the zoom levels. This value
 *                                  may be set to <code>null</code>.    
 * @object-prop <code>number</code> <code>intOpaqueLayerLevel</code> An integer representing the level to which
 *                                  the user would like to move in the stacking order of the opaque layers.  This
 *                                  value may be set to <code>null</code>.
 * @author Team GigaToasted (Fall-2005-CMU-NASA/Google-Practicum Subteam) 
 * @version 1.0
 */


/**
 * Create a <code>PlatefulRequest</code>.
 * @param boo2DMovementOnly <code>boolean</code> A boolean value, used as a speed optimization, to indicate that
 *                          the movement will not include movement outside horizontal and/or vertical movement in
 *                          the 2-d plane.  If this value is <code>true</code>, then 
 *                          <code>pIntLeftDistanceMovedPx</code> and <code>pIntLeftDistanceMovedPx</code> must 
 *                          be non-<code>null</code>.
 * @param pIntLeftDistanceMovedPx <code>number</code> An integer representing the distance that the user would like
 *                                to move the plate in a horizontal direction.  This value may be set to
 *                                <code>null</code>.
 * @param pIntLeftDistanceMovedPx <code>number</code> An integer representing the distance that the user would like
 *                                to move the plate in a vertical direction.  This value may be left
 *                                <code>null</code>.
 * @param pIntZoomLevel <code>number</code> OPTIONAL An integer representing the level to which  the user would
 *                      like to move in the stacking order of the zoom levels.  This value may be set to
 *                      <code>null</code>.    
 * @param pIntOpaqueLayerLevel <code>number</code> OPTIONAL An integer representing the level to which the user
 *                             would like to move in the stacking order of the opaque layers.
 */
function PlateUpdateRequest( pBoo2DMovementOnly, pIntLeftDistanceMovedPx, pIntTopDistanceMovedPx, 
                             pIntZoomLevel, pIntOpaqueLayerLevel ) {
    this.boo2DMovementOnly = pBoo2DMovementOnly;        
    if (pBoo2DMovementOnly) {
        this.intLeftDistanceMovedPx = pIntLeftDistanceMovedPx;
        this.intTopDistanceMovedPx = pIntTopDistanceMovedPx;
    } else {
        this.intLeftDistanceMovedPx = pIntLeftDistanceMovedPx;
        this.intTopDistanceMovedPx = pIntTopDistanceMovedPx;
        this.intZoomLevel = pIntZoomLevel; 
        this.intOpaqueLayerLevel = pIntOpaqueLayerLevel;
    }
}
