/*
 * @(#)ADVHomePage.js     1.0 10/04/2000
 *
 * Copyright 2000 by American Management Systems, Inc.,
 * 4050 Legato Road, Fairfax, Virginia, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of American Management Systems, Inc. ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with American Management Systems, Inc.
 *
 * JavaScript Dependencies : AMSDHTMLLib, Jade Script
 *
 * PVCS Modification Log:
 *
 * $Log:   N:/ASG/Projects/ADVANTAGE_3.1_V55_Infrastructure/archives/dev/advantage/Source/ClientApps/HTMLApps/Advantage.app/JS/ADVHomePage.js-arc  $

   Rev 1.2   19 Sep 2002 13:42:32   MShipley
IR-HRFX0043: Added page code, where clause, order by, and mode indicator for ADV pages

   Rev 1.1   22 Aug 2002 12:08:52   mshipley
Reapplied versions from 5.1.3 archives applied after 5.5 conversion

   Rev 1.0   20 Aug 2002 15:12:44   SCOLONEY
Initial revision.

   Rev 1.2   15 Aug 2002 11:25:42   MShipley
IR-HRFX0611: Disable right clicks as needed and adjust the body width for IE 6.0 to fill the entire window

   Rev 1.1   27 Jun 2002 17:05:16   SNaikoti
IR-NFFX006115: Removed the old javascript variables.

   Rev 1.0   Apr 13 2002 14:20:48   SColoney
Initial revision.

   Rev 1.3   Nov 04 2001 20:48:52   SSurabhi
Changes for Netscape61

   Rev 1.2   Oct 08 2001 23:45:34   RApparaj
Advantage EJB conversion (Build 5)

   Rev 1.1   Oct 08 2001 20:34:50   RApparaj
Versata EJB changes(Build 5)

   Rev 1.0   Jun 24 2001 09:06:04   SColoney
Initial revision.

   Rev 1.3   Feb 14 2001 09:07:26   MShipley
Changed footer cursor to se-resize

   Rev 1.2   Dec 15 2000 11:05:46   MShipley
updated home page functionality

   Rev 1.1   Oct 05 2000 15:36:40   MShipley
Added dependency list

   Rev 1.0   Oct 05 2000 14:40:10   SCOLONEY
Initial revision.
 *
 */

ADVHMPG_SIZE_INCREMENT           = 25 ;
ADVHMPG_MIN_WIN_WIDTH            = 100 ;
ADVHMPG_MIN_WIN_HEIGHT           = 100 ;
ADVHMPG_TITLE_HEIGHT             = 20 ;
ADVHMPG_FOOTER_HEIGHT            = 10 ;
ADVHMPG_NAME_IDX                 = 0 ;
ADVHMPG_WIDTH_IDX                = 1 ;
ADVHMPG_HEIGHT_IDX               = 2 ;
ADVHMPG_TOP_IDX                  = 3 ;
ADVHMPG_LEFT_IDX                 = 4 ;
ADVHMPG_MAX_IDX                  = 5 ;
ADVHMPG_Z_IDX                    = 6 ;
ADVHMPG_MOVE_FLAG_IDX            = 7 ;
ADVHMPG_SIZE_FLAG_IDX            = 8 ;
ADVHMPG_OLD_WIDTH_IDX            = 9 ;
ADVHMPG_OLD_HEIGHT_IDX           = 10 ;
ADVHMPG_OLD_TOP_IDX              = 11 ;
ADVHMPG_OLD_LEFT_IDX             = 12 ;
ADVHMPG_START_TOP_IDX            = 13 ;
ADVHMPG_START_LEFT_IDX           = 14 ;
ADVHMPG_TITLE_SUFFIX             = 'TTL' ;
ADVHMPG_BODY_SUFFIX              = 'BDY' ;
ADVHMPG_FOOTER_SUFFIX            = 'FTR' ;
ADVHMPG_ICON_SUFFIX              = 'ICO' ;
ADVHMPG_CACASDE_OFFSET           = 21 ;
ADVHMPG_MAXREST_IMAGE            = "Images/HmpgMaximize.gif" ;
ADVHMPG_MINIMIZE_IMAGE           = "Images/HmpgMinimize.gif" ;
ADVHMPG_CLOSE_IMAGE              = "Images/HmpgClose.gif" ;
ADVHMPG_DEST_ATTRIB_NAME         = "ams_destination" ;
ADVHMPG_FRAMESET_ATTRIB_NAME     = "ams_framesetpagename" ;
ADVHMPG_FRAME_ATTRIB_NAME        = "ams_framename" ;
ADVHMPG_APPL_ATTRIB_NAME         = "ams_applname" ;
ADVHMPG_PAGE_CD_ATTRIB_NAME      = "ams_pagecode" ;
ADVHMPG_ADDRECORD_ATTRIB_NAME    = "ams_addrecord" ;
ADVHMPG_QUERYMODE_ATTRIB_NAME    = "ams_query" ;
ADVHMPG_WHERE_CLAUSE_ATTRIB_NAME = "ams_whereclause" ;
ADVHMPG_ORDER_BY_ATTRIB_NAME     = "ams_orderbyclause" ;
ADVHMPG_ADD_MODE                 = 0 ;
ADVHMPG_BROWSE_MODE              = 1 ;
ADVHMPG_QUERY_MODE               = 2 ;

/*
 *  This variable holds the array of window settings
 */
var moADVHMPG_WinArray = null ;

/*
 *  This is the top z-index for the page.  Each time a window is activated, its
 *  z-index is reset and this variable is incremented.
 */
var miADVHMPG_TopZIdx ;

/*
 *  In order to correctly generate the header and footer IFRAMEs, this variable
 *  contains the base href for the document.
 */
var msADVHMPG_BaseURL  = null ;

/*
 * Builds the header and footer iframes based on
 * the settings passed in.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foTitleDoc - The title bar IFRAME's document object
 * foFooterDoc - The footer IFRAME's document object
 * fsTitle - The window title
 * fsBGColor - The title bar background color
 * fsTextColor - The title bar text color
 * fiDivNum - The number of the window in the home page
 */
function ADVHMPG_BuildOuterFrames( foTitleDoc, foFooterDoc, fsTitle, fsBGColor, fsTextColor, fiDivNum )
{
   ADVHMPG_BuildTitleFrame( foTitleDoc, fsTitle, fsBGColor, fsTextColor, fiDivNum ) ;
   ADVHMPG_BuildFooterFrame( foFooterDoc, fsTitle, fsBGColor, fsTextColor, fiDivNum ) ;
}

/*
 * Builds the header iframe based on
 * the settings passed in.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foDocument - The title bar IFRAME's document object
 * fsTitle - The window title
 * fsBGColor - The title bar background color
 * fsTextColor - The title bar text color
 * fiDivNum - The number of the window in the home page
 */
function ADVHMPG_BuildTitleFrame( foDocument, fsTitle, fsBGColor, fsTextColor, fiDivNum )
{
   foDocument.clear() ;
   foDocument.open() ;
   foDocument.writeln( '<HTML><HEAD><TITLE>' + fsTitle + '</TITLE>' ) ;
   foDocument.writeln( '<base href="' + msADVHMPG_BaseURL + '">' ) ;
   foDocument.writeln( '</head>' ) ;

   foDocument.writeln( '<body oncontextmenu="return false;" bgcolor="' + fsBGColor + '" text="' + fsTextColor + '" ' ) ;
   foDocument.writeln( 'onclick="parent.ADVHMPG_ActivateWindow(' + fiDivNum + ');" ' ) ;
   foDocument.write( 'ondblclick="parent.ADVHMPG_MaxRest(' + fiDivNum + ');" ' ) ;

   foDocument.writeln( 'onmousedown="parent.ADVHMPG_ActivateWindow(' + fiDivNum + ');parent.ADVHMPG_StartMove(' + fiDivNum + ',event);" ' ) ;
   foDocument.writeln( 'onmouseup="parent.ADVHMPG_StopMove(' + fiDivNum + ');" ' ) ;
   foDocument.writeln( 'onmousemove="parent.ADVHMPG_Move(' + fiDivNum + ',event);" ' ) ;
   foDocument.writeln( 'onmouseout="parent.ADVHMPG_StopMove(' + fiDivNum + ');">' ) ;

   foDocument.writeln( '<div style="position:absolute;top:2;left:5;font-weight:bold;font-family:sans-serif;font-size:8pt;">&nbsp;' + fsTitle + '</div>') ;
   foDocument.writeln( '<div style="position:absolute; top:0; right:5;">') ;
   foDocument.writeln( '<img src="' + ADVHMPG_MINIMIZE_IMAGE + '" valign="top" border=0 hspace=1 vspace=3 onclick="parent.ADVHMPG_Minimize(' + fiDivNum + ', event);">' ) ;
   foDocument.writeln( '<img name="maxrest" src="' + ADVHMPG_MAXREST_IMAGE + '" valign="top" border=0 hspace=1 vspace=3 onclick="parent.ADVHMPG_MaxRest(' + fiDivNum + ');">' ) ;
   foDocument.writeln( '<img src="' + ADVHMPG_CLOSE_IMAGE + '" valign="top" border=0 hspace=1 vspace=3 onclick="parent.ADVHMPG_CloseWindow(' + fiDivNum + ', event);">' ) ;
   foDocument.writeln( '</div>' ) ;

   foDocument.writeln( '</body></HTML>' ) ;

   foDocument.close() ;
}

/*
 * Builds the footer iframe based on
 * the settings passed in.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foDocument - The footer IFRAME's document object
 * fsTitle - The window title
 * fsBGColor - The title bar background color
 * fsTextColor - The title bar text color
 * fiDivNum - The number of the window in the home page
 */
function ADVHMPG_BuildFooterFrame( foDocument, fsTitle, fsBGColor, fsTextColor, fiDivNum )
{
   foDocument.clear() ;
   foDocument.open() ;
   foDocument.writeln( '<HTML><HEAD><TITLE>' + fsTitle + '</TITLE>' ) ;
   foDocument.writeln( '<base href="' + msADVHMPG_BaseURL + '">' ) ;
   foDocument.writeln( '</head>' ) ;
   foDocument.writeln( '<body oncontextmenu="return false;" bgcolor="' + fsBGColor + '" text="' + fsTextColor + '" ' ) ;
   foDocument.writeln( 'onclick="parent.ADVHMPG_ActivateWindow(' + fiDivNum + ');" ' ) ;
   foDocument.writeln( 'onmousedown="parent.ADVHMPG_ActivateWindow(' + fiDivNum + '); parent.ADVHMPG_StartResize(' + fiDivNum + ',event);" ' ) ;
   foDocument.writeln( 'onmouseup="parent.ADVHMPG_StopResize(' + fiDivNum + ');" ' ) ;
   foDocument.writeln( 'onmousemove="parent.ADVHMPG_Resize(' + fiDivNum + ',event);" ' ) ;
   foDocument.writeln( 'onmouseout ="parent.ADVHMPG_StopResize(' + fiDivNum + ');" style="cursor:se-resize;">' ) ;
   foDocument.writeln( '</body></html>' ) ;

   foDocument.close() ;
}

/*
 * Tiles the windows in the Home Page.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 */
function ADVHMPG_TileWindows()
{
   var liWinCtr ;
   var liBrowserWidth  = DHTMLLIB_GetEvenNumber( DHTMLLIB_GetWindowWidth() ) ;
   var liBrowserHeight = DHTMLLIB_GetEvenNumber( DHTMLLIB_GetWindowHeight() ) ;
   var liWinWidth      = liBrowserWidth ;
   var liWinHeight     = liBrowserHeight ;
   var liLeft          = 0 ;
   var liTop           = 0 ;

   if ( moADVHMPG_WinArray.length > 1 )
   {
      liWinWidth = liBrowserWidth / 2 ;
      if ( moADVHMPG_WinArray.length > 2 )
      {
         liWinHeight = liBrowserHeight / 2 ;
      }
   }

   for ( liWinCtr = 0 ; liWinCtr < moADVHMPG_WinArray.length ; liWinCtr++ )
   {
      var loWinSettings = moADVHMPG_WinArray[liWinCtr] ;

      ADVHMPG_SetWindowSize( loWinSettings, liWinWidth, liWinHeight ) ;
      DHTMLLIB_MoveLayerTo( DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ), liLeft, liTop ) ;
      loWinSettings[ADVHMPG_LEFT_IDX]     = liLeft ;
      loWinSettings[ADVHMPG_TOP_IDX]      = liTop ;
      loWinSettings[ADVHMPG_OLD_LEFT_IDX] = liLeft ;
      loWinSettings[ADVHMPG_OLD_TOP_IDX]  = liTop ;
      ADVHMPG_Unminimize( liWinCtr ) ;
      ADVHMPG_ActivateWindow( liWinCtr ) ;

      if ( DHTMLLIB_GetEvenNumber( liWinCtr ) == liWinCtr )
      {
         liLeft = liWinWidth ;
      }
      else
      {
         liTop  += liWinHeight ;
         liLeft = 0 ;
      }
   }

   return true ;
}

/*
 * Cascades the windows in the Home Page.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 */
function ADVHMPG_CascadeWindows()
{
   var liWinCtr ;
   var liXPos ;
   var liYPos ;

   for ( liWinCtr = 0, liXPos = 5, liYPos = 5; liWinCtr < moADVHMPG_WinArray.length ; liWinCtr++, liXPos += ADVHMPG_CACASDE_OFFSET, liYPos += ADVHMPG_CACASDE_OFFSET )
   {
      var loWinSettings = moADVHMPG_WinArray[liWinCtr] ;

      loWinSettings[ADVHMPG_OLD_LEFT_IDX] = loWinSettings[ADVHMPG_LEFT_IDX] ;
      loWinSettings[ADVHMPG_OLD_TOP_IDX]  = loWinSettings[ADVHMPG_TOP_IDX] ;
      ADVHMPG_Unminimize( liWinCtr ) ;
      ADVHMPG_ActivateWindow( liWinCtr ) ;
      DHTMLLIB_MoveLayerTo( DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ), liXPos, liYPos ) ;
      loWinSettings[ADVHMPG_LEFT_IDX]     = liXPos ;
      loWinSettings[ADVHMPG_TOP_IDX]      = liYPos ;
   }

   return true ;
}

/*
 * Minimizes the given window by hiding the
 * window and showing its icon.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to minimize
 */
function ADVHMPG_Minimize( fiWinNum , foEvent)
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   ADVHMPG_CloseWindow( fiWinNum , foEvent) ;
   DHTMLLIB_ShowLayer( DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] + ADVHMPG_ICON_SUFFIX ) ) ;

   return true ;
}

/*
 * Unminimizes the given window by showing the
 * window and hiding its icon.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to unminimize
 */
function ADVHMPG_Unminimize( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   ADVHMPG_OpenWindow( fiWinNum ) ;
   DHTMLLIB_HideLayer( DHTMLLIB_GetLayer(
           loWinSettings[ADVHMPG_NAME_IDX] + ADVHMPG_ICON_SUFFIX ) ) ;

   return true ;
}

/*
 * Closes the given window by hiding the
 * window div.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to close
 */
function ADVHMPG_CloseWindow( fiWinNum, foEvent )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;
   var loHmpgWin = DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] );

   if (loHmpgWin != null)
   {
      if ( mboolIE4Up )
      {
         DHTMLLIB_HideLayer( loHmpgWin ) ;
      }
      else if ( mboolNS5Up )
      {
         ADVHMPG_CloseWindowNS(loWinSettings)
      }
   }

   return true ;
}

/*
 * Opens the given window by showing the
 * window div.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to open
 */
function ADVHMPG_OpenWindow( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   if (mboolIE4Up)
   {
      DHTMLLIB_ShowLayer(
          DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ) ) ;
   }
   else if (mboolNS5Up)
   {
      ADVHMPG_RestoreNS(loWinSettings);
   }

   return true ;
}

/*
 * This function is called whenever a user begins
 * to resize a window.  It sets the window's resizing
 * flag to true and captures the current x and y
 * coordinates.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to resize
 * foEvent - The mouse event
 */
function ADVHMPG_StartResize( fiWinNum, foEvent )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   loWinSettings[ADVHMPG_SIZE_FLAG_IDX]  = true ;
   if (mboolIE4Up)
   {
      loWinSettings[ADVHMPG_START_LEFT_IDX] = foEvent.x ;
      loWinSettings[ADVHMPG_START_TOP_IDX]  = foEvent.y ;
   }
   else if (mboolNS5Up)
   {
      loWinSettings[ADVHMPG_START_LEFT_IDX] = foEvent.pageX ;
      loWinSettings[ADVHMPG_START_TOP_IDX]  = foEvent.pageY ;
   }

   return true ;
}

/*
 * This function is called whenever a user stops
 * resizing a window.  It sets the window's resizing
 * flag to false.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to resize
 */
function ADVHMPG_StopResize( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   loWinSettings[ADVHMPG_SIZE_FLAG_IDX] = false ;

   return true ;
}

/*
 * This function is called whenever a user resizes
 * a window.  It captures the current x and y
 * coordinates, compares them to the old x and y
 * coordinates and resizes the window accordingly.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to resize
 * foEvent - The mouse event
 */
function ADVHMPG_Resize( fiWinNum, foEvent )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;
   var liEventX;
   var liEventY;

   if (mboolNS5Up)
   {
      liEventX = foEvent.pageX;
      liEventY = foEvent.pageY;
   }
   else if (mboolIE4Up)
   {
      liEventX = foEvent.x;
      liEventY = foEvent.y;
   }

   if ( loWinSettings[ADVHMPG_SIZE_FLAG_IDX] == true )
   {
      var liChangeX   = liEventX - loWinSettings[ADVHMPG_START_LEFT_IDX] ;
      var liChangeY   = liEventY - loWinSettings[ADVHMPG_START_TOP_IDX] ;
      var loWindow    = DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ) ;
      var liNewWidth  = DHTMLLIB_GetWidth( loWindow ) + liChangeX ;
      var liNewHeight = DHTMLLIB_GetHeight( loWindow ) + liChangeY ;

      ADVHMPG_SetWindowSize( loWinSettings, liNewWidth, liNewHeight ) ;
      loWinSettings[ADVHMPG_START_LEFT_IDX] = liEventX ;
      loWinSettings[ADVHMPG_START_TOP_IDX]  = liEventY ;
   }

   return true ;
}

/*
 * Activates the given window by settings its
 * z-index to be greater than all other windows.
 * It also increments the top z-index.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to activate
 */
function ADVHMPG_ActivateWindow( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   DHTMLLIB_SetzIndex( DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ),
                                          ++miADVHMPG_TopZIdx ) ;

   return true ;
}

function ADVHMPG_RestoreNS( foWinSettings )
{
   var lsWinName   = foWinSettings[ADVHMPG_NAME_IDX] ;
   var loWindow    = DHTMLLIB_GetLayer( lsWinName ) ;

   DHTMLLIB_MoveLayerTo(loWindow, foWinSettings[ADVHMPG_OLD_LEFT_IDX],
                                  foWinSettings[ADVHMPG_OLD_TOP_IDX]) ;
}


function ADVHMPG_CloseWindowNS( foWinSettings )
{
   var lsWinName   = foWinSettings[ADVHMPG_NAME_IDX] ;
   var loWindow    = DHTMLLIB_GetLayer( lsWinName ) ;
   var loTitleBar  = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_TITLE_SUFFIX ) ;
   var loBody      = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_BODY_SUFFIX ) ;
   var loFooter    = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_FOOTER_SUFFIX ) ;

   foWinSettings[ADVHMPG_LEFT_IDX]     = -10 ;
   foWinSettings[ADVHMPG_TOP_IDX]      = -10 ;
   foWinSettings[ADVHMPG_OLD_LEFT_IDX] = DHTMLLIB_GetLeft(loWindow) ;
   foWinSettings[ADVHMPG_OLD_TOP_IDX]  = DHTMLLIB_GetTop(loWindow) ;

/*
   loWindow.style.width    = 0 ;
   loTitleBar.style.width  = 0 ;
   loBody.style.width      = 0 ;
   loFooter.style.width    = 0 ;

   loWindow.style.height = 0 ;
   loBody.style.height   = 0 ;
   loFooter.style.height    = 0 ;
*/
   DHTMLLIB_MoveLayerTo(loWindow, -1000, -1000) ;
}

/*
 * This function resizes the given window to
 * the size specified.  It also verifies that
 * the window has at least the minimum width
 * and height.  If not it resizes the window
 * accordingly.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foWinSettings - The window settings
 * fiWidth - The new window width
 * fiHeight - The new window height
 */
function ADVHMPG_SetWindowSize( foWinSettings, fiWidth, fiHeight )
{
   var liNewWidth  = fiWidth  < ADVHMPG_MIN_WIN_WIDTH  ? ADVHMPG_MIN_WIN_WIDTH  : fiWidth ;
   var liNewHeight = fiHeight < ADVHMPG_MIN_WIN_HEIGHT ? ADVHMPG_MIN_WIN_HEIGHT : fiHeight ;
   var lsWinName   = foWinSettings[ADVHMPG_NAME_IDX] ;
   var loWindow    = DHTMLLIB_GetLayer( lsWinName ) ;
   var loTitleBar  = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_TITLE_SUFFIX ) ;
   var loBody      = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_BODY_SUFFIX ) ;
   var loFooter    = DHTMLLIB_GetLayer( lsWinName + ADVHMPG_FOOTER_SUFFIX ) ;
   var liHeightDif = liNewHeight - DHTMLLIB_GetHeight( loWindow ) ;

   foWinSettings[ADVHMPG_WIDTH_IDX]  = liNewWidth ;
   foWinSettings[ADVHMPG_HEIGHT_IDX] = liNewHeight ;
   loWindow.style.width    = liNewWidth ;
   loTitleBar.style.width  = liNewWidth ;
   loBody.style.width      = liNewWidth ;
   loFooter.style.width    = liNewWidth ;

   loWindow.style.height = liNewHeight ;
   loBody.style.height   = liNewHeight - ( ADVHMPG_TITLE_HEIGHT + ADVHMPG_FOOTER_HEIGHT ) ;
   loFooter.style.top    = ADVHMPG_GetNumber( loFooter.style.top ) + liHeightDif ;
}

/*
 * This function is called whenever a user begins
 * to move a window.  It sets the window's moving
 * flag to true and captures the current x and y
 * coordinates.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to move
 * foEvent - The mouse event
 */
function ADVHMPG_StartMove( fiWinNum, foEvent )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   loWinSettings[ADVHMPG_MOVE_FLAG_IDX]  = true ;
   if (mboolIE4Up)
   {
      loWinSettings[ADVHMPG_START_LEFT_IDX] = foEvent.x ;
      loWinSettings[ADVHMPG_START_TOP_IDX]  = foEvent.y ;
   }
   else if (mboolNS5Up)
   {
      loWinSettings[ADVHMPG_START_LEFT_IDX] = foEvent.pageX ;
      loWinSettings[ADVHMPG_START_TOP_IDX]  = foEvent.pageY ;
   }

   return true ;
}

/*
 * This function is called whenever a user stops
 * moving a window.  It sets the window's moving
 * flag to false.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to move
 */
function ADVHMPG_StopMove( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   loWinSettings[ADVHMPG_MOVE_FLAG_IDX] = false ;

   return true ;
}

/*
 * This function is called whenever a user moves
 * a window.  It captures the current x and y
 * coordinates, compares them to the old x and y
 * coordinates and moves the window accordingly.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to move
 * foEvent - The mouse event
 */
function ADVHMPG_Move( fiWinNum, foEvent )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;
   var liEventX;
   var liEventY;

   if (mboolNS5Up)
   {
      liEventX = foEvent.pageX;
      liEventY = foEvent.pageY;
   }
   else if (mboolIE4Up)
   {
      liEventX = foEvent.x;
      liEventY = foEvent.y;
   }

   if ( loWinSettings[ADVHMPG_MOVE_FLAG_IDX] == true )
   {
      var liChangeX = liEventX - loWinSettings[ADVHMPG_START_LEFT_IDX] ;
      var liChangeY = liEventY - loWinSettings[ADVHMPG_START_TOP_IDX] ;

      DHTMLLIB_MoveLayerBy( DHTMLLIB_GetLayer( loWinSettings[ADVHMPG_NAME_IDX] ), liChangeX, liChangeY ) ;

      loWinSettings[ADVHMPG_LEFT_IDX]     += liChangeX ;
      loWinSettings[ADVHMPG_TOP_IDX]      += liChangeY ;
      loWinSettings[ADVHMPG_OLD_LEFT_IDX] += liChangeX ;
      loWinSettings[ADVHMPG_OLD_TOP_IDX]  += liChangeY ;
   }

   return true ;
}

/*
 * This function is called whenever a user
 * either double-clicks a window's title bar
 * or clicks the maximize/restore button.  Based
 * on whether the window is maximized or not
 * it calls the correct function.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fiWinNum - The window number to maximize or restore
 */
function ADVHMPG_MaxRest( fiWinNum )
{
   var loWinSettings = moADVHMPG_WinArray[fiWinNum] ;

   if ( loWinSettings[ADVHMPG_MAX_IDX] == false )
   {
      ADVHMPG_Maximize( loWinSettings ) ;
   }
   else
   {
      ADVHMPG_Restore( loWinSettings ) ;
   }

   return true ;
}


/*
 * This function maximizes a window.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foWinSettings - The window's settings
 */
function ADVHMPG_Maximize( foWinSettings )
{
   var liNewWidth  = DHTMLLIB_GetWindowWidth() ;
   var liNewHeight = DHTMLLIB_GetWindowHeight() ;

   foWinSettings[ADVHMPG_OLD_HEIGHT_IDX] = foWinSettings[ADVHMPG_HEIGHT_IDX] ;
   foWinSettings[ADVHMPG_OLD_WIDTH_IDX]  = foWinSettings[ADVHMPG_WIDTH_IDX] ;
   foWinSettings[ADVHMPG_OLD_TOP_IDX]    = foWinSettings[ADVHMPG_TOP_IDX] ;
   foWinSettings[ADVHMPG_OLD_LEFT_IDX]   = foWinSettings[ADVHMPG_LEFT_IDX] ;

   foWinSettings[ADVHMPG_TOP_IDX]  = 0 ;
   foWinSettings[ADVHMPG_LEFT_IDX] = 0 ;
   foWinSettings[ADVHMPG_MAX_IDX]  = true ;

   DHTMLLIB_MoveLayerTo( DHTMLLIB_GetLayer( foWinSettings[ADVHMPG_NAME_IDX] ), 0, 0 ) ;
   ADVHMPG_SetWindowSize( foWinSettings, liNewWidth, liNewHeight ) ;
}

/*
 * This function restores a maximized window.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * foWinSettings - The window's settings
 */
function ADVHMPG_Restore( foWinSettings )
{
   DHTMLLIB_MoveLayerTo( DHTMLLIB_GetLayer( foWinSettings[ADVHMPG_NAME_IDX] ),
                         foWinSettings[ADVHMPG_OLD_LEFT_IDX],
                         foWinSettings[ADVHMPG_OLD_TOP_IDX] ) ;

   foWinSettings[ADVHMPG_TOP_IDX]  = foWinSettings[ADVHMPG_OLD_TOP_IDX] ;
   foWinSettings[ADVHMPG_LEFT_IDX] = foWinSettings[ADVHMPG_OLD_LEFT_IDX] ;
   foWinSettings[ADVHMPG_MAX_IDX]  = false ;

   ADVHMPG_SetWindowSize( foWinSettings,
                       foWinSettings[ADVHMPG_OLD_WIDTH_IDX],
                       foWinSettings[ADVHMPG_OLD_HEIGHT_IDX] ) ;
}

/*
 * This function strips the 'px' off of a number
 * string.
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fsPixel - The number string
 * return - The number without the 'px'
 */
function ADVHMPG_GetNumber( fsPixel )
{
   var liIndex = fsPixel.indexOf( "px" ) ;
   var liNumber = Number ( fsPixel.substr( 0,liIndex ) ) ;
   return liNumber ;
}

/*
 * This function is called for each ADVANTAGE home page
 * window when the home page is loaded.  It performs a
 * dynamic transition to the specified page
 *
 * Modification Log : Mark Shipley - 05/16/00
 *                                 - inital version
 *
 * fsDestination - The destination page template
 * fsFrameset - The destination frameset page template name
 * fsFrame - The frame in the frameset page for the destination
 * fsTarget - The target frame
 */
function ADVHMPG_OpenPage( fsTarget, fsPageCode, fsWhereClause, fsOrderBy,
      fsDestination, fsFrameset, fsFrame, fsApplName, fiModeInd )
{
   var lsRequest = "" ;

   lsRequest += 'OpenPage=OpenPage&' ;
   lsRequest += ADVHMPG_PAGE_CD_ATTRIB_NAME      + '="' + ( fsPageCode    ? fsPageCode    : "" ) + '"&' ;
   if ( fiModeInd == ADVHMPG_ADD_MODE )
   {
      lsRequest += ADVHMPG_ADDRECORD_ATTRIB_NAME + '="' + ADVHMPG_ADDRECORD_ATTRIB_NAME + '"&' ;
   } /* end if ( fiModeInd == ADVHMPG_ADD_MODE ) */
   else if ( fiModeInd == ADVHMPG_QUERY_MODE )
   {
      lsRequest += ADVHMPG_QUERYMODE_ATTRIB_NAME + '="' + ADVHMPG_QUERYMODE_ATTRIB_NAME + '"&' ;
   } /* end else if ( fiModeInd == ADVHMPG_QUERY_MODE ) */
   lsRequest += ADVHMPG_WHERE_CLAUSE_ATTRIB_NAME + '="' + ( fsWhereClause ? fsWhereClause : "" ) + '"&' ;
   lsRequest += ADVHMPG_ORDER_BY_ATTRIB_NAME     + '="' + ( fsOrderBy     ? fsOrderBy     : "" ) + '"&' ;
   lsRequest += ADVHMPG_DEST_ATTRIB_NAME         + '="' + ( fsDestination ? fsDestination : "" ) + '"&' ;
   lsRequest += ADVHMPG_FRAMESET_ATTRIB_NAME     + '="' + ( fsFrameset    ? fsFrameset    : "" ) + '"&' ;
   lsRequest += ADVHMPG_FRAME_ATTRIB_NAME        + '="' + ( fsFrame       ? fsFrame       : "" ) + '"&' ;
   lsRequest += ADVHMPG_APPL_ATTRIB_NAME         + '="' + ( fsApplName    ? fsApplName    : "" ) + '"' ;

   submitForm( document.forms["HomePage"], lsRequest, fsTarget ) ;
}
