/**
 * This class is used to pass information regarding the panorama dataset to be browsed by this
 * instance of the application.  The information in this class is set at initialization and is
 * available to modules needing information about the specifics of this dataset.  This information
 * will not change for a dataset while Gigapan is active.
 * <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: PanoramaProtocol.js,v 1.10 2005/11/19 17:55:50 ehudsons Exp $
 * <br><br>
 * @object-prop <code>string</code> <code>strTitle</code>  Title of the dataset protocol
 * @object-prop <code>string</code> <code>strDescription</code>  Description of the dataset protocol
 * @object-prop <code>string</code> <code>strDisplayHUnits</code>  Units for the horizontal axis
 * @object-prop <code>string</code> <code>strDisplayVUnits</code>  Units for the vertical axis
 * @object-prop <code>number</code> <code>intMaxDetailLevel</code>  Level number representing maximum detail
 * @object-prop <code>number</code> <code>intMinDetailLevel</code>  Level number representing minimum detail
 * @object-prop <code>string</code> <code>strTileArrangement</code>  Client or server determine arrangement
 * @object-prop <code>string</code> <code>strStartLayer</code>  On a multi-layer view, the first view
 * @object-prop <code>Object</code> <code>objMinX</code> An array of Min X values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objMinY</code> An array of Min Y values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objMaxX</code> An array of Max X values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objMaxY</code> An array of Max Y values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objTileWidth</code> = An array of Tile width values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objTileHeight</code> = An array of Tile height values for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objNumDigits</code> = An array of values indicating the number of digits representing 
 *                                  tile row and column for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objTileOriginX</code> An array of values representing the x value of th upper left corner
 *                                  of tile (0,0) for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objTileOriginY</code> An array of values representing the y value of th upper left corner
 *                                  of tile (0,0) for this panorama, indexed by level.
 * @object-prop <code>Object</code> <code>objSuffix</code> An array of values representing the filename suffix for this panorama,
 *                                  indexed by level. .jpg is the default value.
 * @author Team GigaToasted (Fall-2005-CMU-NASA/Google-Practicum Subteam) 
 * @version 1.0
 */


/**
 * Create a <code>PanoramaProtocol</code> object
 * @param pObjParent object  The parent of this object. In Gigapan Explorer, this 
 *                           should be the controller (Gigapan) object.
 */
function PanoramaProtocol(pObjParent) {
    this.strTitle = null;
    this.strDescription = null;
    this.strDisplayHUnits = null;
    this.strDisplayVUnits = null;
    this.intMaxDetailLevel = null;
    this.intMinDetailLevel = null;
    this.intZoomFactor = null;
    this.strTileArrangement = null;
    this.strStartLayer = "";

    // Level Numbers (such as zoom level) will be indices into the following arrays:
    this.objMinX = new Array();
    this.objMinY = new Array();
    this.objMaxX = new Array();
    this.objMaxY = new Array();
    this.objTileWidth = new Array();
    this.objTileHeight = new Array();
    this.objNumDigits = new Array();
    this.objTileOriginX = new Array(); // in pixels
    this.objTileOriginY = new Array(); // in pixels
    this.objSuffix = new Array();
    this.objPixelOriginH = new Array();
    this.objPixelOriginV = new Array();
    this.objPixelSizeV = new Array();
    this.objPixelSizeH = new Array();
    
    this.getTitle = PanoramaProtocol_getTitle;
    this.getDescription = PanoramaProtocol_getDescription;
    this.getDisplayHUnits = PanoramaProtocol_getDisplayHUnits;
    this.getDisplayVUnits = PanoramaProtocol_getDisplayVUnits;
    this.getMaxDetailLevel = PanoramaProtocol_getMaxDetailLevel;
    this.getMinDetailLevel = PanoramaProtocol_getMinDetailLevel;
    this.getZoomFactor = PanoramaProtocol_getZoomFactor;
    this.getTileArrangement = PanoramaProtocol_getTileArrangement;
    this.getStartLayer = PanoramaProtocol_getStartLayer;
    this.getMinX = PanoramaProtocol_getMinX;
    this.getMinY = PanoramaProtocol_getMinY;
    this.getMaxX = PanoramaProtocol_getMaxX;
    this.getMaxY = PanoramaProtocol_getMaxY;
    this.getTileWidth = PanoramaProtocol_getTileWidth;
    this.getTileHeight = PanoramaProtocol_getTileHeight;
    this.getNumDigits = PanoramaProtocol_getNumDigits;
    this.getTileOriginX = PanoramaProtocol_getTileOriginX;
    this.getTileOriginY = PanoramaProtocol_getTileOriginY;
    this.getSuffix = PanoramaProtocol_getSuffix;
    this.getPixelOriginH = PanoramaProtocol_getPixelOriginH;
    this.getPixelOriginV = PanoramaProtocol_getPixelOriginV;
    this.getPixelSizeV = PanoramaProtocol_getPixelSizeV;
    this.getPixelSizeH = PanoramaProtocol_getPixelSizeH;

    this.setTitle = PanoramaProtocol_setTitle;
    this.setDescription = PanoramaProtocol_setDescription;
    this.setDisplayHUnits = PanoramaProtocol_setDisplayHUnits;
    this.setDisplayVUnits = PanoramaProtocol_setDisplayVUnits;
    this.setMaxDetailLevel = PanoramaProtocol_setMaxDetailLevel;
    this.setMinDetailLevel = PanoramaProtocol_setMinDetailLevel;
    this.setTileArrangement = PanoramaProtocol_setTileArrangement;
    this.setStartLayer = PanoramaProtocol_setStartLayer;
    this.setMinX = PanoramaProtocol_setMinX;
    this.setMinY = PanoramaProtocol_setMinY;
    this.setMaxX = PanoramaProtocol_setMaxX;
    this.setMaxY = PanoramaProtocol_setMaxY;
    this.setZoomFactor = PanoramaProtocol_setZoomFactor;
    this.setTileWidth = PanoramaProtocol_setTileWidth;
    this.setTileHeight = PanoramaProtocol_setTileHeight;
    this.setNumDigits = PanoramaProtocol_setNumDigits;
    this.setTileOriginX = PanoramaProtocol_setTileOriginX;
    this.setTileOriginY = PanoramaProtocol_setTileOriginY;
    this.setSuffix = PanoramaProtocol_setSuffix;
    this.setPixelOriginH = PanoramaProtocol_setPixelOriginH;
    this.setPixelOriginV = PanoramaProtocol_setPixelOriginV;
    this.setPixelSizeV = PanoramaProtocol_setPixelSizeV;
    this.setPixelSizeH = PanoramaProtocol_setPixelSizeH;

    this.init = PanoramaProtocol_init;
}
/**
 * This method initializes the <code>panoramaProtocol</code> object with data from the XmlHttpRequest
 * @param  pObjXmlHttpRequest <code>Object</code>  An object containing all the protocol information to fill PanoramaProtocol
 */
function PanoramaProtocol_init(pObjXmlHttpRequest) {
    var i=0, j=0, objLevel=null, objDimensions=null, objTiling=null, objProjection=null, objUnprojected=null, objStartLayer=null;

    this.setTitle = pObjXmlHttpRequest.getElementsByTagName('title')[0].firstChild.data;
    this.setDescription(pObjXmlHttpRequest.getElementsByTagName('description')[0].firstChild.data);
    this.setDisplayHUnits(pObjXmlHttpRequest.getElementsByTagName('display_h_units')[0].firstChild.data);
    this.setDisplayVUnits(pObjXmlHttpRequest.getElementsByTagName('display_v_units')[0].firstChild.data);
    this.setMaxDetailLevel(pObjXmlHttpRequest.getElementsByTagName('max_detail_level')[0].firstChild.data);
    this.setMinDetailLevel(pObjXmlHttpRequest.getElementsByTagName('min_detail_level')[0].firstChild.data);
    this.setZoomFactor(pObjXmlHttpRequest.getElementsByTagName('zoom_factor')[0].firstChild.data);
    this.setTileArrangement(pObjXmlHttpRequest.getElementsByTagName('tile_arrangement')[0].firstChild.data);

    /* Optional Start Layer tag */
    objStartLayer=pObjXmlHttpRequest.getElementsByTagName('start_layer')[0];
    if (objStartLayer != null) {
        this.setStartLayer(objStartLayer.firstChild.data);
    }
    
    /* Process the zoom levels */    
    var objLevels = pObjXmlHttpRequest.getElementsByTagName('level');
    var intLevelLength = objLevels.length;
    for (; i < intLevelLength; i++) {
        objLevel = objLevels[i];

        objDimensions = objLevel.getElementsByTagName('dimensions')[0];
        this.setMinX(i, objDimensions.getElementsByTagName('min_x')[0].firstChild.data);
        this.setMinY(i, objDimensions.getElementsByTagName('min_y')[0].firstChild.data);
        this.setMaxX(i, objDimensions.getElementsByTagName('max_x')[0].firstChild.data);
        this.setMaxY(i, objDimensions.getElementsByTagName('max_y')[0].firstChild.data);

        objTiling = objLevel.getElementsByTagName('tiling')[0];
        this.setTileWidth(i, objTiling.getElementsByTagName('tile_width')[0].firstChild.data);
        this.setTileHeight(i, objTiling.getElementsByTagName('tile_height')[0].firstChild.data);
        this.setNumDigits(i, objTiling.getElementsByTagName('num_digits')[0].firstChild.data);
        this.setTileOriginX(i, objTiling.getElementsByTagName('tile_origin_x')[0].firstChild.data);
        this.setTileOriginY(i, objTiling.getElementsByTagName('tile_origin_y')[0].firstChild.data);

        this.setSuffix(i, objLevel.getElementsByTagName('suffix')[0].firstChild.data);

        objProjection = objLevel.getElementsByTagName('projection')[0];
        objUnprojected = objProjection.getElementsByTagName('unprojected')[0];
        this.setPixelOriginH(i, objUnprojected.getElementsByTagName('pixel_origin_h')[0].firstChild.data);
        this.setPixelOriginV(i, objUnprojected.getElementsByTagName('pixel_origin_v')[0].firstChild.data);
        this.setPixelSizeV(i, objUnprojected.getElementsByTagName('pixel_size_v')[0].firstChild.data);
        this.setPixelSizeH(i, objUnprojected.getElementsByTagName('pixel_size_h')[0].firstChild.data);
    }
}



// Getters:

/**
 * This method returns the <code>panoramaProtocol</code> title of the dataset
 * @return <code>string</code>  A string representing the title
 */
function PanoramaProtocol_getTitle() {
    return this.strTitle;

}


/**
 * This method returns the <code>panoramaProtocol</code> description of the dataset
 * @return <code>string</code>  A str representing the description
 */
function PanoramaProtocol_getDescription() {
    return this.strDescription;

}


/**
 * This method returns the <code>panoramaProtocol</code> horizontal display units
 * @return <code>string</code>  A str representing the horizontal display units
 */
function PanoramaProtocol_getDisplayHUnits() {
    return this.strDisplayHUnits;

}


/**
 * This method returns the <code>panoramaProtocol</code> vertical display units
 * @return <code>string</code>  A str representing the vertical display units
 */
function PanoramaProtocol_getDisplayVUnits() {
    return this.strDisplayVUnits;

}


/**
 * This method returns the <code>panoramaProtocol</code> maximum detail level
 * @return <code>number</code>  An int representing the maximum detail level
 */
function PanoramaProtocol_getMaxDetailLevel() {
    return this.intMaxDetailLevel;

}


/**
 * This method returns the <code>panoramaProtocol</code> minimum detail level
 * @return <code>number</code>  An int representing the minimum detail level
 */
function PanoramaProtocol_getMinDetailLevel() {
    return this.intMinDetailLevel;

}



/**
 * This method returns the <code>panoramaProtocol</code> zoom factor
 * which describes the relationship between zoom levels.
 * @return <code>number</code>  An int representing the zoom factor
 */
function PanoramaProtocol_getZoomFactor() {
    return this.intZoomFactor;

}


/**
 * This method returns the <code>panoramaProtocol</code> tile arrangement
 * @return <code>string</code>  An str representing the tile arrangement
 */
function PanoramaProtocol_getTileArrangement() {
    return this.strTileArrangement;

}


/**
 * This method returns the starting layer of the <code>panoramaProtocol</code>
 * @return <code>string</code>  An str representing the tile arrangement
 */
function PanoramaProtocol_getStartLayer() {
    return this.strStartLayer;

}


/**
 * This method returns the horizontal pixel position of the left edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the pixel position of the left edge (min_x value) of the panorama.
 */
function PanoramaProtocol_getMinX(intLevel) {
    return this.objMinX[intLevel];

}


/**
 * This method returns the vertical pixel position of the top edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the pixel position of the top edge (min_y value) of the panorama.
 */
function PanoramaProtocol_getMinY(intLevel) {
    return this.objMinY[intLevel];

}

/**
 * This method returns the vertical pixel position of the bottom edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the pixel position of the bottom edge (max_y value) of the panorama.
 */
function PanoramaProtocol_getMaxY(intLevel) {
    return this.objMaxY[intLevel];

}

/**
 * This method returns the horizontal pixel position of the right edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the pixel position of the right edge (max_x value) of the panorama.
 */
function PanoramaProtocol_getMaxX(intLevel) {
    return this.objMaxX[intLevel];

}


/**
 * This method returns the width of a tile, in pixels, of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the width of a tile of the panorama, in pixels.
 */
function PanoramaProtocol_getTileWidth(intLevel) {
    return this.objTileWidth[intLevel];

}

/**
 * This method returns the height of a tile, in pixels, of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the height of a tile of the panorama, in pixels.
 */
function PanoramaProtocol_getTileHeight(intLevel) {
    return this.objTileHeight[intLevel];

}

/**
 * This method returns the number of digits used to represent a tile row and column on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the number of digits used to represent a tile row and column.
 */
function PanoramaProtocol_getNumDigits(intLevel) {
    return this.objNumDigits[intLevel];

}

/**
 * This method returns the x value (in pixels) of the location of the upper left corner of tile (0,0) on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the x value of the location of the upper left corner of tile (0,0), in pixels.
 */
function PanoramaProtocol_getTileOriginX(intLevel) {
    return this.objTileOriginX[intLevel];

}

/**
 * This method returns the y value (in pixels) of the location of the upper left corner of tile (0,0) on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  An int representing the y value of the location of the upper left corner of tile (0,0), in pixels.
 */
function PanoramaProtocol_getTileOriginY(intLevel) {
    return this.objTileOriginY[intLevel];

}

/**
 * This method returns the suffix of image files on the current level. Default is .jpg
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>string</code>  A str representing the suffix of image files on the current level.
 */
function PanoramaProtocol_getSuffix(intLevel) {
    return this.objSuffix[intLevel];

}


/**
 * This method returns the horizontal pixel origin
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  A int representing the horizontal pixel origin on the current level.
 */
function PanoramaProtocol_getPixelOriginH(intLevel) {
    return this.objPixelOriginH[intLevel];

}


/**
 * This method returns the vertical pixel origin
 * @param intLevel  <code>number</code> A int representing the current level (i.e. zoom level)
 * @return <code>number</code>  A int representing the vertical pixel origin on the current level.
 */
function PanoramaProtocol_getPixelOriginV(intLevel) {
    return this.objPixelOriginV[intLevel];

}


/**
 * This method returns the vertical pixel size
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  A int representing the vertical pixel size on the current level.
 */
function PanoramaProtocol_getPixelSizeV(intLevel) {
    return this.objPixelSizeV[intLevel];

}


/**
 * This method returns the horizontal pixel size
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @return <code>number</code>  A int representing the horizontal pixel size on the current level.
 */
function PanoramaProtocol_getPixelSizeH(intLevel) {
    return this.objPixelSizeH[intLevel];

}


// Setters:


/**
 * This method sets the <code>panoramaProtocol</code> title of the dataset
 * @param strTitle <code>string</code> A str representing the title
 */
function PanoramaProtocol_setTitle(strTitle) {
    this.strTitle = strTitle;

}


/**
 * This method sets the <code>panoramaProtocol</code> description of the dataset
 * @param strDescription  <code>string</code> A str representing the description
 */
function PanoramaProtocol_setDescription(strDescription) {
    this.strDescription = strDescription;

}


/**
 * This method sets the <code>panoramaProtocol</code> horizontal display units
 * @param strDisplayHUnits  <code>string</code> A str representing the horizontal display units
 */
function PanoramaProtocol_setDisplayHUnits(strDisplayHUnits) {
    this.strDisplayHUnits = strDisplayHUnits;

}


/**
 * This method sets the <code>panoramaProtocol</code> vertical display units
 * @param strDisplayVUnits  <code>string</code> A str representing the vertical display units
 */
function PanoramaProtocol_setDisplayVUnits(strDisplayVUnits) {
    this.strDisplayVUnits = strDisplayVUnits;

}


/**
 * This method sets the <code>panoramaProtocol</code> maximum detail level
 * @param intMaxDetailLevel  <code>number</code> An int representing the maximum detail level
 */
function PanoramaProtocol_setMaxDetailLevel(intMaxDetailLevel) {
    this.intMaxDetailLevel = intMaxDetailLevel;

}


/**
 * This method sets the <code>panoramaProtocol</code> minimum detail level
 * @param intMinDetailLevel  <code>number</code> An int representing the minimum detail level
 */
function PanoramaProtocol_setMinDetailLevel(intMinDetailLevel) {
    this.intMinDetailLevel = intMinDetailLevel;

}

/**
 * This method sets the <code>panoramaProtocol</code> zoom factor,
 * which represents the relationship between zoom levels.
 * @param intZoomFactor  <code>number</code> An int representing the zoom factor
 */
function PanoramaProtocol_setZoomFactor(intZoomFactor) {
    this.intZoomFactor = intZoomFactor;

}


/**
 * This method sets the <code>panoramaProtocol</code> tile arrangement
 * @param strTileArrangement  <code>string</code> An str representing the tile arrangement
 */
function PanoramaProtocol_setTileArrangement(strTileArrangement) {
    this.strTileArrangement = strTileArrangement;

}


/**
 * This method sets the starting layer of <code>panoramaProtocol</code>
 * @param strStartLayer  <code>string</code> An str representing the tile arrangement
 */
function PanoramaProtocol_setStartLayer(strStartLayer) {
    this.strStartLayer = strStartLayer;

}


/**
 * This method sets the horizontal pixel position of the left edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intMinX  <code>number</code> An int representing the pixel position of the left edge (min_x value) of the panorama.
 */
function PanoramaProtocol_setMinX(intLevel, intMinX) {
    this.objMinX[intLevel] = intMinX;

}


/**
 * This method sets the vertical pixel position of the top edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intMinY  <code>number</code> An int representing the pixel position of the top edge (min_y value) of the panorama.
 */
function PanoramaProtocol_setMinY(intLevel, intMinY) {
    this.objMinY[intLevel] = intMinY;

}


/**
 * This method sets the horizontal pixel position of the right edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intMaxX  <code>number</code> An int representing the pixel position of the right edge (max_x value) of the panorama.
 */
function PanoramaProtocol_setMaxX(intLevel, intMaxX) {
    this.objMaxX[intLevel] = intMaxX;

}

/**
 * This method sets the vertical pixel position of the bottom edge of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intMaxY  <code>number</code> An int representing the pixel position of the bottom edge (max_y value) of the panorama.
 */
function PanoramaProtocol_setMaxY(intLevel, intMaxY) {
    this.objMaxY[intLevel] = intMaxY;
}


/**
 * This method sets the width of a tile, in pixels, of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intTileWidth  <code>number</code> An int representing the width of a tile of the panorama, in pixels.
 */
function PanoramaProtocol_setTileWidth(intLevel, intTileWidth) {
    this.objTileWidth[intLevel] = intTileWidth;
}


/**
 * This method sets the Height of a tile, in pixels, of the panoramic image on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intTileHeight  <code>number</code> An int representing the height of a tile of the panorama, in pixels.
 */
function PanoramaProtocol_setTileHeight(intLevel, intTileHeight) {
    this.objTileHeight[intLevel] = intTileHeight;
}


/**
 * This method sets the number of digits used to represent a tile row and column on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intNumDigits  <code>number</code> An int representing the number of digits used to represent a tile row and column.
 */
function PanoramaProtocol_setNumDigits(intLevel, intNumDigits) {
    this.objNumDigits[intLevel] = intNumDigits;
}


/**
 * This method sets the x value (in pixels) of the location of the upper left corner of tile (0,0) on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intTileOriginX  <code>number</code> An int representing the x value of the location of the upper left corner of tile (0,0), in pixels.
 */
function PanoramaProtocol_setTileOriginX(intLevel, intTileOriginX) {
    this.objTileOriginX[intLevel] = intTileOriginX;
}

/**
 * This method sets the y value (in pixels) of the location of the upper left corner of tile (0,0) on the current level.
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intTileOriginY  <code>number</code> An int representing the y value of the location of the upper left corner of tile (0,0), in pixels.
 */
function PanoramaProtocol_setTileOriginY(intLevel, intTileOriginY) {
    this.objTileOriginY[intLevel] = intTileOriginY;
}

/**
 * This method returns the suffix of image files on the current level. Default is .jpg
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param strSuffix  <code>string</code> A str representing the suffix of image files on the current level.
 */
function PanoramaProtocol_setSuffix(intLevel, strSuffix) {
    this.objSuffix[intLevel] = strSuffix;
}


/**
 * This method sets the horizontal pixel origin of the level
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intPixelOriginH  <code>number</code> A int representing the horizontal pixel origin.
 */
function PanoramaProtocol_setPixelOriginH(intLevel, intPixelOriginH) {
    this.objPixelOriginH[intLevel] = intPixelOriginH;
}


/**
 * This method sets the vertical pixel origin of the level
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intPixelOriginV  <code>number</code> A int representing the vertical pixel origin.
 */
function PanoramaProtocol_setPixelOriginV(intLevel, intPixelOriginV) {
    this.objPixelOriginV[intLevel] = intPixelOriginV;
}


/**
 * This method sets the horizontal pixel size of the level
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intPixelOriginH  <code>number</code> A int representing the horizontal pixel size.
 */
function PanoramaProtocol_setPixelSizeH(intLevel, intPixelSizeH) {
    this.objPixelSizeH[intLevel] = intPixelSizeH;
}


/**
 * This method sets the vertical pixel size of the level
 * @param intLevel  <code>number</code> An int representing the current level (i.e. zoom level)
 * @param intPixelOriginH  <code>number</code> A int representing the vertical pixel size.
 */
function PanoramaProtocol_setPixelSizeV(intLevel, intPixelSizeV) {
    this.objPixelSizeV[intLevel] = intPixelSizeV;
}


