UTILS_GRID_SEL_TR_CLASS_NAME = ' ADVGridSelRow' ;
UTILS_CURRENCY_ACTION        = 'Currency' ;
UTILS_FAVORITE_ACTION        = 3 ;
UTILS_SECON_WIN_WIDTH        = 700;
UTILS_SECON_WIN_HEIGHT       = 500;
UTILS_SECON_WIN_LEFT         = 20;
UTILS_SECON_WIN_TOP          = 20;
UTILS_AMS_ON_CLICK           = "ams_onclick" ;

UTILS_SEARCH_WIN    = 0 ;
UTILS_CALENDAR_WIN  = 1 ;
UTILS_TIMELINE_WIN  = 2 ;
UTILS_DOC_GOTO_WIN  = 3 ;
UTILS_MULTISORT_WIN = 4 ;

UTILS_NUM_VAL_PER_SEARCH_ELEM = 7;
var UTILS_moOpenWins = new Array( null, null, null, null, null ) ;

var UTILS_moColReference;
var UTILS_msDataSourceName;
var UTILS_msHelpPageLink;
var msUTILS_MltiSort               = new Array() ;
var UTILS_mboolCancelGridSelection = false ;
var UTILS_mboolFromGridAnchor      = false ;
var UTILS_mboolPerformingPick      = false ;
var UTILS_mboolPickFromGrid        = false ;
var UTILS_msOnClick                = "" ;
var UTILS_SearchList               = new Array();

var UTILS_HELP_WINDOW         = 'HelpWindow';
var UTILS_STARTUP_FRAME       = 'Startup';
var UTILS_SECONDARY_FRAME     = 'Secondary';
var UTILS_BFNAV_FRAME         = 'BFNav';

document.onkeydown = UTILS_KeyDownHandler;
if ( mboolNS4Up )
{
   document.captureEvents( Event.CLICK ) ;
}
document.onclick = UTILS_DisableClicks ;


function UTILS_DisplayErrorMsg(fsFormName, fsDSName, fsAction, fsFrameName)
{
   var lsQueryString = 'menu_action=menu_action'
                 + '&ams_action=' + fsAction + '&window_name=' + window.name;

   submitForm(document.forms[fsFormName], lsQueryString, fsFrameName);
}

function UTILS_OpenDocument( fsTarget, foForm, fsActionElemName,
      fsDocCat, fsDocType, fsDocCode, fsDocDept, fsDocID, fsDocVersNo,
      fiCategory, fsPageCode )
{
   var lsArgs ;

   lsArgs = "&" + fsActionElemName + "=" + fsActionElemName ;

   lsArgs += "&DOC_CAT="     + fsDocCat ;
   lsArgs += "&DOC_TYP="     + fsDocType ;
   lsArgs += "&DOC_CD="      + fsDocCode ;
   lsArgs += "&DOC_DEPT_CD=" + fsDocDept ;
   lsArgs += "&DOC_ID="      + fsDocID ;
   lsArgs += "&DOC_VERS_NO=" + fsDocVersNo ;
   if ( ( fiCategory != -1 ) && ( fsPageCode != null ) && ( fsPageCode.length > 0 ) )
   {
      lsArgs += "&ams_pagecategory=" + fiCategory ;
      lsArgs += "&ams_pagecode="     + fsPageCode ;
   }

   submitForm( foForm, lsArgs, fsTarget ) ;
   return ;
}

function UTILS_GridSelectRadio( foSelRadio )
{
   var loRadioGrp ;

   if ( !mboolIE4Up )
   {
      return ;
   }

   loRadioGrp = eval( 'foSelRadio.form.' + foSelRadio.name ) ;
   if ( ( loRadioGrp == null ) || ( loRadioGrp.length <= 0 ) )
   {
      return ;
   }

   for ( var liRadioCtr = 0 ; liRadioCtr < loRadioGrp.length ; liRadioCtr++ )
   {
      var loRadio  = loRadioGrp[liRadioCtr] ;
      var loTR ;
      var liOffset ;

      if ( ( loRadio == null ) || ( loRadio.parentElement == null )
          || ( loRadio.parentElement.parentElement == null ) )
      {
         continue ;
      }

      loTR = loRadio.parentElement.parentElement ;
      if ( ( loTR == null ) || ( loTR.className == null ) )
      {
         continue ;
      }

      liOffset = loTR.className.indexOf( UTILS_GRID_SEL_TR_CLASS_NAME ) ;
      if ( liOffset >= 0 )
      {
         loTR.className = loTR.className.substr( 0, liOffset ) ;
      }

      if ( loRadio == foSelRadio )
      {
         loRadio.parentElement.parentElement.className +=
                                             UTILS_GRID_SEL_TR_CLASS_NAME ;
      }
   }
}

function UTILS_GetDataSourceName()
{
   return UTILS_msDataSourceName;
}

function UTILS_SetDataSourceName(fsDataSourceName)
{
   UTILS_msDataSourceName = fsDataSourceName;
}

function UTILS_GetColReference()
{
   return UTILS_moColReference;
}

function UTILS_SetColReference( foColRef )
{
   var lsDataSource = DHTMLLIB_GetAttributeValue( foColRef, 'vsds' ) ;

   UTILS_moColReference = foColRef ;
   if ( ( lsDataSource != null ) && ( lsDataSource != '' ) )
   {
      UTILS_SetDataSourceName( lsDataSource ) ;
   }
}

function UTILS_ShowAdvPgHelp()
{
   DHTMLLIB_OpenNewWin( UTILS_msHelpPageLink, UTILS_HELP_WINDOW,
                        'no', 'no', 'no', 'yes', 'no',
                        'yes', 'auto', UTILS_SECON_WIN_WIDTH,
                        UTILS_SECON_WIN_HEIGHT,
                        UTILS_SECON_WIN_LEFT,
                        UTILS_SECON_WIN_TOP, true );
}

function UTILS_ShowCode( fsParams )
{
   var lsParam;
   var loClickedColRef = UTILS_GetColReference() ;
   if (loClickedColRef != null)
   {
      var lsColInfo = DHTMLLIB_GetAttributeValue(loClickedColRef,'showcodeinfo');
      var lsDSName  = DHTMLLIB_GetAttributeValue(loClickedColRef,'vsds');

      if (lsColInfo == null || lsColInfo.length == 0)
      {
         alert("No show code information provided for this field");
         return;
      }

      if (lsDSName == null || lsDSName.length == 0)
      {
         alert("No show code information provided for this field");
         return;
      }
      lsParam = 'menu_action=menu_action&ams_action=9&showCodeColInfo='+lsColInfo
              + '&vsds=' + lsDSName;
      submitForm(document.forms[0],lsParam,'ShowCode');
   }
   else
   {
      alert("Please select a field to perform this operation");
   }
}

function UTILS_PerformFldLvlHelp( fsParams )
{
   var loClickedColRef = UTILS_GetColReference() ;
   if (loClickedColRef != null)
   {
      var lsHelpFldPath;
      var loStartPg = UTILS_GetMainStartupPage();
      if (loStartPg != null)
      {
         lsHelpFldPath = loStartPg.STARTPG_GetFieldHelpFilesLocation();
      }

      var lsColName = DHTMLLIB_GetAttributeValue(loClickedColRef,'vsdf');
      var lsHelpFldDir = lsColName.substring(0,1);

      var lsHelpFldLink = lsHelpFldPath + lsHelpFldDir + "/" + lsColName + ".htm";
      var newHlpWin = window.open(lsHelpFldLink,
                                  UTILS_HELP_WINDOW,
                                  'resizable=yes,scrollbars=yes,titlebar=no,toolbar=no,menubar=no,location=no');
      newHlpWin.focus();
   }
   else
   {
      alert("Please select a field to perform this operation");
   }
}

function UTILS_ShowMultiSort( fsTemp, foEvent )
{
   var lsDataSource = UTILS_GetDataSourceName();

   if ( lsDataSource == null )
   {
      return ;
   }
   else
   {
      var loSortData = null ;

      for ( var liDSCtr = 0 ; liDSCtr < msUTILS_MltiSort.length ; liDSCtr++ )
      {
         if ( msUTILS_MltiSort[liDSCtr][0] == lsDataSource )
         {
            loSortData = msUTILS_MltiSort[liDSCtr] ;
            break ;
         }
      }
      if ( loSortData == null )
      {
         return ;
      }
      else
      {
         var loMultiSortWin  = DHTMLLIB_OpenNewWin( '', 'MultiSortWin', 'no', 'no', 'no', 'no', 'no', 'yes', 'no', 300, 150, 200, 200, true ) ;
         var loMultiSortDoc  = loMultiSortWin.document ;
         var lsHTML         = '' ;
         var lsBaseHREF     = UTILS_getBaseHref( document ) ;

         UTILS_moOpenWins[UTILS_MULTISORT_WIN] = loMultiSortWin ;

         lsHTML += '<html><head><base href="' + UTILS_getBaseHref( document ) + '">' ;
         lsHTML += '<title>Multiple Column Sort</title>' ;
         lsHTML += '<link type="text/css" rel="STYLESHEET" href="../AMSImages/ADVStyle.css">' ;
         lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSDHTMLLib.js"></script>' ;
         lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSUtils.js"></script>' ;
         lsHTML += '</head><body class="ADVPopup" oncontextmenu="event.returnValue=false;return false;" onload="UTILS_SetPopupWinSize();UTILS_EnableClicks();UTILS_SetFocusOnFirstField(document);" ' ;

         if (mboolIE4Up)
         {
            lsHTML += ' onkeydown="if(UTILS_AllowSearchKeyPress(event) == true)' ;
            lsHTML += '{var loElem=document.getElementById(\'ADVPerformMultiSort\');' ;
            lsHTML += 'if(loElem!=null){DHTMLLIB_ClickElement(loElem,document)}}">' ;
         }
         else if (mboolNS5Up)
         {
            lsHTML += 'onkeypress="if(UTILS_AllowSearchKeyPress(event) == true)' ;
            lsHTML += '{var loElem=document.getElementById(\'ADVPerformMultiSort\');' ;
            lsHTML += 'if(loElem!=null){loElem.focus();window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformMultiSort(' ;
            lsHTML += '\'' + lsDataSource + '\',window)}}">' ;
         }

         lsHTML += '<div name="PageContent" id="PageContent" class="ADVPgCont">' ;
         lsHTML += '<form name="MultiSort" ' ;

         if ( mboolIE4Up )
         {
            lsHTML += 'onsubmit="if (event.srcElement.tagName == \'FORM\') {' ;
            lsHTML += 'return false } return true">' ;
         }
         else if ( mboolNS5Up )
         {
            lsHTML += 'onsubmit="if (event.target.tagName == \'FORM\') {' ;
            lsHTML += 'return false } return true">' ;
         }

         lsHTML += '<table><tr><td class="ADVScalarCol"><table class="ADVScalar">' ;


         for ( var liSortCtr = 1 ; liSortCtr <= 3 ; liSortCtr++ )
         {
            lsHTML += '<tr><td class="Label"><label for="' + lsDataSource + 'Sort' + liSortCtr + '" title="' ;
            if ( liSortCtr == 1 )
            {
               lsHTML += 'Sort By' ;
            }
            else
            {
               lsHTML += 'Then By' ;
            }
            lsHTML += '"></td><td class="Val">' ;
            lsHTML += '<select class="ADVEditable" name="' + lsDataSource + 'Sort' + liSortCtr + '" id="' + lsDataSource + 'Sort' + liSortCtr + '" size="1">' ;
            lsHTML += '<option value=""></option>' ;

            for ( liOptionCtr = 0 ; liOptionCtr < loSortData[1].length ; liOptionCtr++ )
            {
               lsHTML += '<option value="' + loSortData[1][liOptionCtr] + '">' ;
               lsHTML += loSortData[2][liOptionCtr] + '</option>' ;
            }
            lsHTML += '</select>' ;
            lsHTML += '</td><td class="Val">' ;

            lsHTML += '<select class="ADVEditable" name="' + lsDataSource + 'SortOrd' + liSortCtr + '" id="' + lsDataSource + 'SortOrd' + liSortCtr + '" size="1">' ;
            lsHTML += '<option value="ASC">Ascending</option>' ;
            lsHTML += '<option value="DESC">Descending</option>' ;
            lsHTML += '</select>' ;

            lsHTML += '</td></tr>' ;
         }

         lsHTML += '</table></td></tr></table>' ;

         lsHTML += '<table class="ADVAction Popup"><tr><td>' ;
         lsHTML += '<a name="ADVPerformMultiSort" id="ADVPerformMultiSort" href="javascript:window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformMultiSort(\'' + lsDataSource + '\',window)"" title="Sort">Sort</a> ' ;
         lsHTML += '</td></tr></table>' ;

         lsHTML += '</form></div></body></html>' ;

         loMultiSortDoc.open() ;
         loMultiSortDoc.write( lsHTML ) ;
         loMultiSortDoc.close() ;
      }
   }
}

function UTILS_PerformMultiSort( fsDataSource, foSortWin )
{
   var lsQueryStr = 'menu_action=menu_action&ams_action=8&vsds=' + fsDataSource ;
   var loSortDoc  = foSortWin.document ;
   var loSortAttr ;
   var loSortOrd ;

   for ( var liSortCtr = 1 ; liSortCtr <= 3 ; liSortCtr++ )
   {
      loSortAttr = loSortDoc.getElementById( fsDataSource + 'Sort' + liSortCtr ) ;
      loSortOrd  = loSortDoc.getElementById( fsDataSource + 'SortOrd' + liSortCtr ) ;

      lsQueryStr += '&' + loSortAttr.name + '=' + loSortAttr.value ;
      lsQueryStr += '&' + loSortOrd.name + '=' + loSortOrd.value ;
   }
   submitForm( document.forms[0], lsQueryStr,window.name ) ;
}

function UTILS_GridPickExecute( foImg, fsMasterPickID,
                                fsMasterPickName , fsDataSource)
{
   var loMasterPick = null ;

   if (foImg != null)
   {
      var loParentNode = foImg.parentNode;
      if (loParentNode != null)
      {
         var loChildElem = loParentNode.getElementsByTagName('INPUT');
         if (loChildElem != null && loChildElem.length > 0)
         {
            var loStartPg = UTILS_GetMainStartupPage();
            if (loStartPg != null)
            {
               loStartPg.STARTPG_SetPickElem(loChildElem.item(0).name);
               UTILS_mboolPickFromGrid = true;
            }
         }
      }
   }

   UTILS_UpdateGridSelectRow(foImg, fsDataSource);

   if (mboolIE4Up || mboolNS5Up)
   {
      loMasterPick = document.getElementById(fsMasterPickID);
   }

   if ( loMasterPick != null )
   {
      if (mboolIE4Up)
      {
         loMasterPick.click() ;
      }
      else if (mboolNS5Up)
      {
         var lsName = DHTMLLIB_GetAttributeValue(loMasterPick, 'name');

         if (lsName != null)
         {
            var lsQueryString = lsName + '.x=0';

            submitForm(document.forms[0], lsQueryString,
                                document.forms[0].frame_name.value)
         }
      }
   }

   UTILS_mboolCancelGridSelection = true;
}

function UTILS_PerformAdvPageHelp()
{
   var lsQueryString = 'menu_action=menu_action&ams_action=65'

   submitForm(document.forms[0], lsQueryString,
                 document.forms[0].frame_name.value);
}

function UTILS_ShowAdvHelpPage(fsHelpPageLink)
{
   var newHlpWin = window.open(fsHelpPageLink,
                               UTILS_HELP_WINDOW,
                               'resizable=yes,scrollbars=yes,titlebar=no,toolbar=no,menubar=no,location=no');
   newHlpWin.focus();
}

function UTILS_ScrollToAnchor( fsAnchorName )
{
   if ( mboolIE4Up )
   {
      var loAnchor = eval( 'document.all.' + fsAnchorName ) ;

      if ( loAnchor != null )
      {
         loAnchor.scrollIntoView() ;
      }
   }
   else if ( mboolNS4Up )
   {
      var loAnchorElems = document.getElementsByTagName('A');

      if (loAnchorElems != null)
      {
         for ( var liIndex = 0; liIndex < loAnchorElems.length; liIndex++ )
         {
            if ( loAnchorElems[liIndex].name == fsAnchorName )
            {
               window.scrollTo(loAnchorElems[liIndex].offsetLeft,loAnchorElems[liIndex].offsetTop);
               break ;
            }
         }
      }
   }
}

function UTILS_SelectGridRowFromAnchor( foAnchor, fsDataSource, fsUniqCurrName )
{
   var loInput ;
   var loOldInput ;

   if ( ( fsDataSource == null ) || ( fsUniqCurrName == null ) )
   {
      return ;
   }
   loOldInput = eval( "document.forms[0]." + fsDataSource + "_Old_Currency" ) ;
   loInput = eval( "document.forms[0]." + fsDataSource + "_Currency" ) ;
   if ( ( loOldInput != null ) && ( loInput != null ) )
   {
      loOldInput.value = loInput.value ;
   }
   if ( loInput != null )
   {
      loInput.value = fsUniqCurrName ;
   }
   UTILS_SetDataSourceName( fsDataSource ) ;
}

function UTILS_ImageCurrencyClicked( foInput, fsDataSource, fsUniqCurrName )
{
   var loInput ;
   var loOldInput ;
   var loRefreshInput ;

   if ( ( fsDataSource == null ) || ( fsUniqCurrName == null ) )
   {
      return ;
   }
   loOldInput = eval( "document.forms[0]." + fsDataSource + "_Old_Currency" ) ;
   loInput = eval( "document.forms[0]." + fsDataSource + "_Currency" ) ;
   loRefreshInput = eval( "document.forms[0].refreshScalar" ) ;
   if ( ( loOldInput != null ) && ( loInput != null ) )
   {
      loOldInput.value = loInput.value ;
   }
   if ( loInput != null )
   {
      loInput.value = fsUniqCurrName ;
   }
   if ( loRefreshInput != null )
   {
      loRefreshInput.value = fsDataSource ;
   }
   UTILS_SetDataSourceName( fsDataSource ) ;
}

function UTILS_MirrorImageCurrencyClicked( foInput, fsDataSource, fsUniqCurrName, fsMainTableNm )
{
   var loInput ;

   if ( ( fsDataSource == null ) || ( fsUniqCurrName == null ) )
   {
      return ;
   }

   UTILS_ImageCurrencyClicked( foInput, fsDataSource, fsUniqCurrName ) ;

   loInput = eval( "document.forms[0].ams_main_table_name" ) ;
   if ( loInput != null )
   {
      loInput.value = fsMainTableNm ;
   }
}

function UTILS_SelectGridRow( foTR )
{
   var liOffset ;
   var loTD ;
   var loAnchor;

   if (!UTILS_mboolCancelGridSelection)
   {
      if ( !UTILS_CheckForTransaction() )
      {
         event.returnValue = false;
         return;
      }

      if ( foTR == null )
      {
         return ;
      }

      UTILS_HiglightSelectedRow( foTR ) ;

      if (UTILS_mboolFromGridAnchor)
      {
         UTILS_mboolFromGridAnchor = false ;
         return;
      }

      if (mboolNS5Up)
      {
         var loNodeList = foTR.getElementsByTagName('TD');
         var loNode;
         var loAttributes;
         var loTD ;
         for (var liIndex = 0; liIndex < loNodeList.length; liIndex++)
         {
            loTD = loNodeList.item(liIndex) ;
            loAnchor = loTD.getElementsByTagName('INPUT').item(0) ;

            if (loAnchor != null)
            {
               if(DHTMLLIB_GetAttributeValue(loAnchor, 'vsaction')
                           == UTILS_CURRENCY_ACTION)
               {
                  if(loAnchor.tagName == 'INPUT' &&
                     DHTMLLIB_GetAttributeValue(loAnchor,'type') == 'image')
                  {
                     UTILS_ImageCurrencyClicked( loAnchor,
                        DHTMLLIB_GetAttributeValue(loAnchor,'vsds'),
                        DHTMLLIB_GetAttributeValue(loAnchor,'currency_name') ) ;
                     DHTMLLIB_ClickElement(loAnchor, document);
                     return ;
                  }
                  else if (loAnchor.tagName == 'INPUT' &&
                     DHTMLLIB_GetAttributeValue(loAnchor,'type') == 'checkbox')
                  {
                     loAnchor.click();
                     return;
                  }
               }
            }
         }
      }
      else if (mboolIE4Up)
      {
         for (var liIndex = 0; liIndex < foTR.children.length; liIndex++)
         {
            loAnchor = foTR.children[liIndex].children[0] ;
            if (loAnchor != null &&
                loAnchor.vsaction == UTILS_CURRENCY_ACTION)
            {
               loAnchor.click() ;
               break;
            }
         }
      }
   }
   else
   {
      UTILS_mboolCancelGridSelection = false;
   }
}

function UTILS_WriteErrorMsg( fsErrorStr )
{
   if ( ( fsErrorStr != null ) && ( fsErrorStr != '' ) )
   {
      alert( fsErrorStr ) ;
   }
}

function UTILS_ShowDocNavPanel()
{
   if ( top.frames[UTILS_SECONDARY_FRAME] != null )
   {
      var loAppNavPanel = DHTMLLIB_GetLayerFromDocument( 'AppNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loBFNavPanel  = DHTMLLIB_GetLayerFromDocument( 'BFNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loDocNavPanel = DHTMLLIB_GetLayerFromDocument( 'DocNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var liBFNavYPos = DHTMLLIB_GetTop(loBFNavPanel);

      DHTMLLIB_HideLayer( loAppNavPanel ) ;

      if ( DHTMLLIB_IsVisible( loBFNavPanel ) )
      {
         var loBFFrame = top.frames[UTILS_SECONDARY_FRAME].document.getElementById('BFNav');

         if ( loBFFrame != null )
         {
            DHTMLLIB_SetAttributeValue( loBFFrame, "scrolling", "no" ) ;
         }

         DHTMLLIB_MoveLayerTo( loDocNavPanel, 0, 30 ) ;
      }
      else
      {
         DHTMLLIB_HideLayer( loBFNavPanel ) ;
         DHTMLLIB_MoveLayerTo( loDocNavPanel, 0, 0 ) ;
      }
      DHTMLLIB_ShowLayer( loDocNavPanel ) ;
   }
}

function UTILS_HideDocNavPanel()
{
   if ( top.frames[UTILS_SECONDARY_FRAME] != null )
   {
      var loAppNavPanel = DHTMLLIB_GetLayerFromDocument( 'AppNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loBFNavPanel  = DHTMLLIB_GetLayerFromDocument( 'BFNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loDocNavPanel = DHTMLLIB_GetLayerFromDocument( 'DocNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;

      if (loAppNavPanel == null || loBFNavPanel == null || loDocNavPanel == null )
      {
         return;
      }

      DHTMLLIB_HideLayer( loDocNavPanel ) ;

      if ( DHTMLLIB_IsVisible( loBFNavPanel ) )
      {
         var loBFFrame = top.frames[UTILS_SECONDARY_FRAME].document.getElementById('BFNav');

         if (loBFFrame != null)
         {
            loBFFrame.scrolling = "auto" ;
         }

         DHTMLLIB_HideLayer( loAppNavPanel ) ;
      }
      else
      {
         DHTMLLIB_ShowLayer( loAppNavPanel ) ;
         DHTMLLIB_HideLayer( loBFNavPanel ) ;
      }
   }
}

function UTILS_ShowBFNavPanel()
{
   if ( top.frames[UTILS_SECONDARY_FRAME] != null )
   {
      var loAppNavPanel = DHTMLLIB_GetLayerFromDocument( 'AppNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loBFNavPanel  = DHTMLLIB_GetLayerFromDocument( 'BFNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loDocNavPanel = DHTMLLIB_GetLayerFromDocument( 'DocNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;

      DHTMLLIB_ShowLayer( loBFNavPanel ) ;
      DHTMLLIB_HideLayer( loDocNavPanel ) ;
      DHTMLLIB_HideLayer( loAppNavPanel ) ;
   }
}

function UTILS_ShowAppNavPanel()
{
   if ( top.frames[UTILS_SECONDARY_FRAME] != null )
   {
      var loAppNavPanel = DHTMLLIB_GetLayerFromDocument( 'AppNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loBFNavPanel  = DHTMLLIB_GetLayerFromDocument( 'BFNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;
      var loDocNavPanel = DHTMLLIB_GetLayerFromDocument( 'DocNavPanel',
                                       "top.frames['" + UTILS_SECONDARY_FRAME + "'].document" ) ;

      if (loAppNavPanel != null && loBFNavPanel != null
           && loDocNavPanel != null)
      {
         DHTMLLIB_ShowLayer( loAppNavPanel ) ;
         DHTMLLIB_HideLayer( loBFNavPanel ) ;
         DHTMLLIB_HideLayer( loDocNavPanel ) ;
      }
   }
}

function UTILS_GridDeleteExecute( foImg, fsMasterDeleteID,
                                  fsMasterDeleteName, fsDataSource)
{
   var loMasterDelete = null ;
   var lsHref = null;

   UTILS_UpdateGridSelectRow(foImg, fsDataSource);

   if ( mboolIE4Up || mboolNS5Up)
   {
      loMasterDelete = document.getElementById( fsMasterDeleteID ) ;
   }

   if (loMasterDelete == null)
   {
      return;
   }

   lsHref = DHTMLLIB_GetAttributeValue(loMasterDelete, 'href');

   if ( loMasterDelete != null  && lsHref != null
               && lsHref.length > 0)
   {
      if (confirm('Are you sure you want to delete this line?'))
      {
         DHTMLLIB_ClickElement(loMasterDelete, document);
      }
   }

   UTILS_mboolCancelGridSelection = true;
}

function UTILS_GridCopyLineExecute( foImg, fsMasterCopyLineID,
                                    fsMasterCopyLineName, fsDataSource)
{
   var loMasterCopyLine = null ;
   var lsHref = null;

   UTILS_UpdateGridSelectRow(foImg, fsDataSource);

   if ( mboolIE4Up || mboolNS5Up)
   {
      loMasterCopyLine = document.getElementById(fsMasterCopyLineID ) ;
   }

   if ( loMasterCopyLine != null )
   {
      DHTMLLIB_ClickElement(loMasterCopyLine, document);
   }

   UTILS_mboolCancelGridSelection = true;
}

function UTILS_UpdateGridSelectRow( foChildElem, fsDataSource )
{
   var loParentRow = foChildElem.parentNode.parentNode;
   var loAnchor;

   if (!UTILS_CheckForTransaction())
   {
      event.returnValue = false;
      return;
   }

   if (loParentRow != null)
   {
      var loChildElems = loParentRow.getElementsByTagName('TD');

      for (var liIndex = 0; liIndex < loChildElems.length; liIndex++)
      {
         loAnchor = loChildElems[liIndex].firstChild ;

         if (loAnchor != null &&
             loAnchor.nodeType == 1 && //ignore whitepace in the HTML
             DHTMLLIB_GetAttributeValue(loAnchor, 'vsaction') == UTILS_CURRENCY_ACTION)
         {
            var  lsAnchorCurrency = DHTMLLIB_GetAttributeValue(loAnchor, 'currency_name');
            if (lsAnchorCurrency != null)
            {
               UTILS_SelectGridRowFromAnchor(loAnchor, fsDataSource,
                                                lsAnchorCurrency);
            }
            break;
         }
      }
   }
}

function UTILS_OpenObjAttPage( fsFormName, fsDSName, fsAction, fsFrameName )
{
   var lsQueryString;

   lsQueryString = 'menu_action=' + 'menu_action' + '&ams_action=' + fsAction ;
   lsQueryString += '&DataSource=' + fsDSName ;

   submitForm( document.forms[fsFormName], lsQueryString, fsFrameName ) ;
}

function UTILS_AddFavorite()
{
   var lsQueryString = 'menu_action=menu_action&ams_action=' + UTILS_FAVORITE_ACTION ;
   var lsFrameName   = window.name ;
   var lsFavName     = null ;

   lsFavName = UTILS_PromptForFavoriteName( null, null ) ;
   if ( lsFavName != null )
   {
      lsQueryString = "menu_action=menu_action&ams_action=" + UTILS_FAVORITE_ACTION ;
      lsQueryString += "&AMS_FAV_NAME=" + lsFavName ;
      submitForm( document.forms[0], lsQueryString, lsFrameName ) ;
   }
}

function UTILS_PromptForFavoriteName( fsPrompt, fsValue )
{
   var lsFavName ;

   if ( fsPrompt == null )
   {
      if ( fsValue == null )
      {
         fsValue = "New Favorite" ;
      }
      lsFavName = prompt( "Enter a name for this favorite:", fsValue ) ;
   }
   else
   {
      lsFavName = prompt( fsPrompt, fsValue ) ;
   }

   if ( lsFavName == null )
   {
      return null ;
   }
   else
   {
      if ( lsFavName.length > 50 )
      {
         return UTILS_PromptForFavoriteName( "Favorite names must be less then 50 characters in length. Please re-enter:", lsFavName ) ;
      }
      else if ( ( lsFavName.length < 1 ) || ( UTILS_TrimString( lsFavName ).length < 1 ) )
      {
         return UTILS_PromptForFavoriteName( "Favorite names cannot be blank. Please re-enter:", lsFavName ) ;
      }
      else
      {
         return lsFavName ;
      }
   }
}

function UTILS_TrimString( fsString )
{
   if ( fsString != null )
   {
      while ( fsString.charAt( 0 ) == ' ' )
      {
         fsString = fsString.substr( 1, fsString.length ) ;
      }
      while ( fsString.charAt( fsString.length - 1 ) == ' ' )
      {
         fsString = fsString.substr( 0, fsString.length - 1 ) ;
      }
      return fsString ;
   }
   else
   {
      return null ;
   }
}

function UTILS_GetMainStartupPage()
{
   var loTopWindow;

   if (top.window.name.indexOf( 'ADV' ) == 0 )
   {
      return top.frames[UTILS_STARTUP_FRAME];
   }
   else
   {
      loTopWindow = top.window.opener;
      if (loTopWindow == null)
      {
         return null;
      }

      try
      {
         var loParentHref = loTopWindow.location.href;
         if (loParentHref != null && loParentHref.indexOf('Advantage') == -1)
         {
            return null;
         }
      }
      catch ( exp )
      {
         return null;
      }

      if (loTopWindow.top.window.closed)
      {
         return null;
      }

      while (true)
      {
         try
         {
            if (loTopWindow.top.window.name.indexOf( 'ADV' ) == 0 )
            {
               return loTopWindow.top.frames[UTILS_STARTUP_FRAME];
            }
            else
            {
               loTopWindow = loTopWindow.top.window.opener;

               if (loTopWindow == null)
               {
                  return null;
               }
            }
         }
         catch ( exp )
         {
            return null;
         }
      }
   }

   return null;
}

function UTILS_IsTransactionInProgress()
{
   var loStartupPage;

   if (!UTILS_IsRegisteringTransactions())
   {
      return false;
   }

   loStartupPage = UTILS_GetMainStartupPage();

   if ( loStartupPage != null )
   {
      if ( ( loStartupPage.mboolTransactionInProgress ) && ( loStartupPage.moTransactionTargetWindow != null ) )
      {
         if ( loStartupPage.moTransactionTargetWindow.closed )
         {
            loStartupPage.mboolTransactionInProgress = false ;
            loStartupPage.moTransactionTargetWindow = null ;
         }
      }
      return loStartupPage.mboolTransactionInProgress ;
   }
   else
   {
      return true;
   }
}

function UTILS_SetTransactionInProgress( fboolValue )
{
   loStartupPage = UTILS_GetMainStartupPage() ;

   if ( loStartupPage != null )
   {
      loStartupPage.mboolTransactionInProgress = fboolValue ;
   }
}

function UTILS_SetTransactionTargetWin( foTargetWin )
{
   loStartupPage = UTILS_GetMainStartupPage() ;

   if ( loStartupPage != null )
   {
      loStartupPage.moTransactionTargetWindow = foTargetWin ;
   }
}

function UTILS_AddNewBrowserWindow( foWindow )
{
   loStartupPage = UTILS_GetMainStartupPage() ;

   if ( loStartupPage != null )
   {
      if ( loStartupPage.moADVBrowserWindows == null )
      {
         loStartupPage.moADVBrowserWindows = new Array( 0 ) ;
         if ( foWindow != loStartupPage.top )
         {
            loStartupPage.moADVBrowserWindows[0] = loStartupPage.top ;
         }
      }
      loStartupPage.moADVBrowserWindows[loStartupPage.moADVBrowserWindows.length] = foWindow ;
   }
}

function UTILS_RemoveBrowserWindow( fiIndex )
{
   loStartupPage = UTILS_GetMainStartupPage() ;

   if ( loStartupPage != null )
   {
      if ( loStartupPage.moADVBrowserWindows != null )
      {
         if ( loStartupPage.moADVBrowserWindows.length > fiIndex )
         {
            var loFront = loStartupPage.moADVBrowserWindows.slice( 0, fiIndex ) ;
            var loBack  = loStartupPage.moADVBrowserWindows.slice( fiIndex + 1 ) ;

            loStartupPage.moADVBrowserWindows = loFront.concat( loBack ) ;
         }
      }
   }
}

function UTILS_StartRegisteringTransactions()
{
   loStartupPage = UTILS_GetMainStartupPage();

   if (loStartupPage != null)
   {
      loStartupPage.mboolStartRegTransactions = true;
   }
}

function UTILS_StopRegisteringTransactions()
{
   loStartupPage = UTILS_GetMainStartupPage();

   if (loStartupPage != null)
   {
      loStartupPage.mboolStartRegTransactions = false;
   }
}

function UTILS_IsRegisteringTransactions()
{
   loStartupPage = UTILS_GetMainStartupPage();

   if (loStartupPage != null)
   {
      return loStartupPage.mboolStartRegTransactions;
   }
}

function UTILS_CheckForTransaction()
{
   if ( UTILS_IsTransactionInProgress() )
   {
      alert( 'An action is currently being performed. Please wait for the action to complete before performing the next action' ) ;
      return false;
   }
   return true;
}

function UTILS_BeforeFormSubmit()
{
   var loTargetWin ;

   if ( !UTILS_CheckForTransaction() )
   {
      return false;
   }

   UTILS_SetTransactionInProgress( true ) ;

   loTargetWin = UTILS_GetFrame( document.forms[0].target )
   if ( loTargetWin == null )
   {
      loTargetWin = DHTMLLIB_OpenNewWin( '../../advantage/AMSImages/Empty.htm',
            document.forms[0].target, 'no', 'no', 'no', 'yes', 'no',
            'yes', 'auto', UTILS_SECON_WIN_WIDTH, UTILS_SECON_WIN_HEIGHT,
            UTILS_SECON_WIN_LEFT, UTILS_SECON_WIN_TOP, true ) ;

      if (document.forms[0].target.indexOf('ADVHMPGWIN') == -1)
      {
         UTILS_AddNewBrowserWindow( loTargetWin ) ;
      }

   }

   UTILS_SetTransactionTargetWin( loTargetWin ) ;

   if ( ( mboolNS5Up ) && ( miGeckoMajor < 1 ) )
   {
      UTILS_ExpandSectionsBeforeSubmit() ;
   }

   return true ;
}

function UTILS_ExpandSectionsBeforeSubmit()
{
   var loDIVs = DHTMLLIB_GetLayers() ;

   if ( loDIVs != null )
   {
      for ( var liCtr = 0 ; liCtr < loDIVs.length ; liCtr++ )
      {
         var loDIV   = loDIVs[liCtr] ;
         var lsClass = DHTMLLIB_GetClassName( loDIV ) ;

         if ( ( lsClass != null ) && ( lsClass == "ADVSection" ) )
         {
            var loSection       = DHTMLLIB_GetLayer( loDIV.id ) ;
            var loSectionButton = eval( "document." + loDIV.id + '_Button' ) ;

            AMSTAB_ExpandSectionWithObjects( loSection, loSectionButton ) ;
         }
      }
   }
}

function UTILS_InitPage()
{
   UTILS_SetTransactionInProgress( false ) ;
   UTILS_SetTransactionTargetWin( null ) ;
   if ( ( window.name == null ) ||
        ( ( window.name != 'Notification' ) && ( window.name != 'ErrorDetail' ) ) )
   {
      self.focus() ;
   }
}

function UTILS_GetFrame( fsTargetFrame )
{
   var loStartupPage ;

   if ( ( fsTargetFrame == '_self' ) || ( fsTargetFrame == '' ) )
   {
      return window ;
   }
   else if ( fsTargetFrame == '_parent' )
   {
      return window.parent ;
   }
   else if ( fsTargetFrame == '_top' )
   {
      return window.top ;
   }

   loStartupPage = UTILS_GetMainStartupPage() ;
   if ( loStartupPage == null )
   {
      return null ;
   }
   else
   {
      var loBrowser ;

      if ( loStartupPage.moADVBrowserWindows == null )
      {
         return null ;
      }
      for ( var liWinCtr = loStartupPage.moADVBrowserWindows.length - 1 ; liWinCtr >= 0 ; liWinCtr-- )
      {
         loBrowser = loStartupPage.moADVBrowserWindows[liWinCtr] ;
         if ( loBrowser.closed )
         {
            UTILS_RemoveBrowserWindow( liWinCtr ) ;
            continue ;
         }
         else
         {
            var loFrame = UTILS_GetFrameFromWindow( loBrowser, fsTargetFrame ) ;

            if ( loFrame != null )
            {
               return loFrame ;
            }
         }
      }
   }

   return null ;
}

function UTILS_GetFrameFromWindow( foWindow, fsTargetFrame )
{
   if ( ( foWindow.name != null ) && ( foWindow.name == fsTargetFrame ) )
   {
      return foWindow ;
   }

   for ( var liFrameIdx = 0 ; liFrameIdx < foWindow.frames.length; liFrameIdx++ )
   {
      if ( fsTargetFrame == foWindow.frames[liFrameIdx].name )
      {
         return foWindow.frames[liFrameIdx] ;
      }
      else
      {
         if ( ( foWindow.frames[liFrameIdx].name == 'Display' ) &&
              ( ( foWindow.frames[liFrameIdx].document.forms.length > 0 ) &&
                ( foWindow.frames[liFrameIdx].document.forms[0] != 'HomePage' ) ) )
         {
            continue ;
         }

         for ( liChildIdx = 0 ; liChildIdx < foWindow.frames[liFrameIdx].frames.length ; liChildIdx++ )
         {
            if ( fsTargetFrame == foWindow.frames[liFrameIdx].frames[liChildIdx].name )
            {
               return foWindow.frames[liFrameIdx].frames[liChildIdx] ;
            }
         }
      }
   }
   return null ;
}

function UTILS_SelectCheckBoxCurrency(foElem, foEvent)
{
   if (foElem != null)
   {
      UTILS_HiglightSelectedRow(foElem.parentNode.parentNode)
      UTILS_mboolCancelGridSelection = true;
      return false;
   }
}

function UTILS_GridRowAnchorClicked()
{
   UTILS_mboolFromGridAnchor = true;
}

function UTILS_HiglightSelectedRow(foTR)
{
   if (mboolNS5Up || mboolIE4Up)
   {
      var loTable = foTR.parentNode;
      var loNodeList = loTable.getElementsByTagName('TR');
      var loTR;
      var liOffset ;
      var loAtr;
      var lsClassName;

      for (var liIndex = 0; liIndex < loNodeList.length; liIndex++)
      {
         var lboolCurrent = null ;

         loTR = loNodeList.item(liIndex);
         lsClassName = DHTMLLIB_GetClassName(loTR);
         if (lsClassName != null)
         {
            liOffset = lsClassName.indexOf(UTILS_GRID_SEL_TR_CLASS_NAME);

            if ( loTR == foTR )
            {
               var loElem = null ;

               if ( liOffset < 0 )
               {
                  lsClassName += ' ' + UTILS_GRID_SEL_TR_CLASS_NAME ;
                  lboolCurrent = true ;
               }
            }
            else
            {
               if ( liOffset >= 0 )
               {
                  lsClassName = lsClassName.substr( 0, liOffset ) ;
                  lboolCurrent = false ;
               }
            }
            DHTMLLIB_SetClassName( loTR, lsClassName ) ;
            UTILS_SetCurrencyImage( loTR, lboolCurrent ) ;
         }
      }
   }
}

function UTILS_SetCurrencyImage( foTR, fboolCurrent )
{
   var lsAltTitle = "Select Row" ;
   var lsImgSrc   = "../AMSImages/ADVRowSel.gif" ;
   var loCurrImg  = null ;

   if ( fboolCurrent == null )
   {
      return ;
   }
   else if ( fboolCurrent )
   {
      lsAltTitle = "Current Row" ;
      lsImgSrc   = "../AMSImages/ADVRowCurr.gif" ;
   }

   if ( mboolIE4Up )
   {
      for ( var liChildIdx = 0 ; liChildIdx < foTR.children.length ; liChildIdx++ )
      {
         var loElem = foTR.children[liChildIdx].children[0] ;

         if ( loElem != null && loElem.tagName == 'INPUT' && DHTMLLIB_GetAttributeValue( loElem, 'type' ) == 'image' )
         {
            var lsVSAction = DHTMLLIB_GetAttributeValue( loElem, 'vsaction' ) ;

            if ( lsVSAction != null && lsVSAction == 'Currency' )
            {
               loCurrImg = loElem ;
               break ;
            }
         }
      }
   }
   else if ( mboolNS5Up )
   {
      var loNodeList = foTR.getElementsByTagName( 'TD' ) ;

      for ( var liChildIdx = 0 ; liChildIdx < loNodeList.length ; liChildIdx++ )
      {
         var loElem       = loNodeList.item( liChildIdx ) ;
         var loChildElems = loElem.getElementsByTagName( 'INPUT' ) ;

         if ( loChildElems.length > 0 )
         {
            var loChildElem = loChildElems.item(0) ;

            if ( loChildElem.tagName == 'INPUT' && DHTMLLIB_GetAttributeValue( loChildElem, 'type' ) == 'image' )
            {
               var lsVSAction = DHTMLLIB_GetAttributeValue( loChildElem, 'vsaction' ) ;

               if ( lsVSAction != null && lsVSAction == 'Currency' )
               {
                  loCurrImg = loChildElem ;
                  break ;
               }
            }
         }
      }
   }
   if ( loCurrImg != null )
   {
      DHTMLLIB_SetAttributeValue( loCurrImg, 'alt',   lsAltTitle ) ;
      DHTMLLIB_SetAttributeValue( loCurrImg, 'title', lsAltTitle ) ;
      DHTMLLIB_SetAttributeValue( loCurrImg, 'src',   lsImgSrc ) ;
   }
}

function UTILS_SelectGridRowForDate(foImg)
{
   var loDateChoiceParent = null;
   var loMasterDateChoice = null ;

   loDateChoiceParent = foImg.parentNode;

   if (loDateChoiceParent != null)
   {
      loMasterDateChoice = loDateChoiceParent.getElementsByTagName("INPUT");

      if (loMasterDateChoice != null)
      {
         AMSCalendar_CreateCalendar(loMasterDateChoice[0].value, loMasterDateChoice[0].name, loMasterDateChoice[0]);
      }
   }

   UTILS_mboolCancelGridSelection = true;
}

function UTILS_KeyPressHandler( fsDfltAction, foEvent )
{
   var liKeyPressed = 0;

   if (mboolIE4Up)
   {
      liKeyPressed = foEvent.keyCode;
   }
   else if (mboolNS5Up)
   {
      liKeyPressed = foEvent.which;
   }

   if (liKeyPressed == 13)
   {
      var lsEventTgtTagType;
      var loEventElem;

      if (fsDfltAction == null || fsDfltAction.length == 0)
      {
         return true;
      }

      if (mboolNS5Up)
      {
         lsEventTgtTagType = foEvent.target.tagName;
         loEventElem = foEvent.target;
      }
      else if (mboolIE4Up)
      {
         lsEventTgtTagType = foEvent.srcElement.tagName;
         loEventElem = foEvent.srcElement;
      }

      if ( ( lsEventTgtTagType != null && lsEventTgtTagType == 'A' )
          || ((lsEventTgtTagType == 'INPUT') &&
              ( loEventElem.type &&
              loEventElem.type.toUpperCase() == 'BUTTON' ||
              loEventElem.type.toUpperCase() == 'SUBMIT' ||
              loEventElem.type.toUpperCase() == 'IMAGE' ||
              loEventElem.type.toUpperCase() == 'RESET')))
      {
         return true;
      }

      var loAnchorElems = document.getElementsByTagName('A');

      if (loAnchorElems != null)
      {
         for (var liIndex = 0; liIndex < loAnchorElems.length; liIndex++)
         {
            loAnchor = loAnchorElems.item(liIndex);

            if (loAnchor != null && loAnchor.name == fsDfltAction)
            {
               DHTMLLIB_ClickElement(loAnchor, document);
               foEvent.returnValue  = false ;
               foEvent.cancelBubble = true ;
               return false ;
            }
         }
      }

      var loInputElems = document.getElementsByTagName('INPUT');

      if (loInputElems != null)
      {
         for (var liIndex = 0; liIndex < loInputElems.length; liIndex++)
         {
            loInput = loInputElems.item(liIndex);

            if (loInput != null && loInput.name == fsDfltAction)
            {
               DHTMLLIB_ClickElement(loInput, document);
               foEvent.returnValue  = false ;
               foEvent.cancelBubble = true ;
               return false ;
            }
         }
      }
   }
   else if (liKeyPressed == 8)
   {
      if (mboolNS5Up)
      {
         var loEventElem = foEvent.target;
         var lsEventTargetName = foEvent.target.tagName;

         if ((lsEventTargetName != 'INPUT' &&
             lsEventTargetName != 'TEXTAREA') ||
             ((lsEventTargetName == 'INPUT') &&
              (loEventElem.type &&
              loEventElem.type.toUpperCase() == 'BUTTON' ||
              loEventElem.type.toUpperCase() == 'SUBMIT' ||
              loEventElem.type.toUpperCase() == 'IMAGE' ||
              loEventElem.type.toUpperCase() == 'RESET' ) ))
         {
            return false;
         }
         else
         {
            return true;
         }
      }
      else if (mboolIE4Up)
      {
         return true;
      }
   }
}

function UTILS_KeyDownHandler()
{
   if ( !( ( mboolIE4Up ) && ( window.event ) ) )
   {
      return true ;
   }

   switch ( window.event.keyCode )
   {
      case 8 : // BACKSPACE
      case 27 : // ESCAPE
         {
            var loEventElem = window.event.srcElement ;

            if ( ( ( loEventElem.tagName != 'INPUT' ) &&
                   ( loEventElem.tagName != 'TEXTAREA' ) ) ||
                 ( ( loEventElem.tagName == 'INPUT' ) &&
                   ( ( loEventElem.type ) &&
                     ( ( loEventElem.type.toUpperCase() == 'BUTTON' ) ||
                       ( loEventElem.type.toUpperCase() == 'SUBMIT' ) ||
                       ( loEventElem.type.toUpperCase() == 'IMAGE' ) ||
                       ( loEventElem.type.toUpperCase() == 'RESET' ) ) ) ) )
            {
               window.event.keyCode = 0 ;
               return false ;
            }
         }
         break ;
      case 37 : // LEFT ARROW
      case 39 : // RIGHT ARROW
         if ( window.event.altKey )
         {
            window.event.keyCode = 0 ;
            return false ;
         }
         break ;
      case 72 : // 'H'
         if ( window.event.ctrlKey )
         {
            window.event.keyCode = 0 ;
            return false ;
         }
         break ;
      case 78 : // 'N'
         if ( window.event.ctrlKey )
         {
            DHTMLLIB_OpenNewWin( window.document.URL, '_blank', 'no' , 'no' , 'no',
                  'yes' , 'no', 'yes', 'yes', null, null, 0, 0, true ) ;
            window.event.keyCode = 0 ;
            return false ;
         }
         break ;
      case 82 : // 'R'
         if ( window.event.ctrlKey )
         {
            window.event.keyCode = 0 ;
            return false ;
         }
         break ;
      case 116 : // F5
         window.event.keyCode = 0 ;
         return false ;
      case 121 : // F10
         if ( window.event.shiftKey )
         {
            window.event.keyCode = 0 ;
            return false ;
         }
         break ;
      case 122 : // F11
         window.event.keyCode = 0 ;
         return false ;
      default :
         break ;
   }

   return true ;
}

function UTILS_PrintPage()
{
   MNU_OnclickHideMenu();
   if (window.print)
   {
      window.focus();
      window.print();
   }
   return;
}

function UTILS_ShowPopupPick(foForm, foHyperlink)
{
   if (foForm != null)
   {
      var loStartPg = UTILS_GetMainStartupPage();

      if (loStartPg != null)
      {
         if (UTILS_mboolPickFromGrid != true)
         {
            var loParentNode = foHyperlink.parentNode;
            if (loParentNode != null)
            {
               var loChildElems = loParentNode.getElementsByTagName( 'INPUT' );
               if (loChildElems != null && loChildElems.length > 0)
               {
                  loStartPg.STARTPG_SetPickElem(loChildElems.item(0).name);
               }
            }
            UTILS_mboolPerformingPick = 'true';
         }
      }
   }
   return true;
}

function UTILS_ClosePickWindow(foForm, foAnchor)
{
}

function UTILS_ScrollToPickElem()
{
   var loStartPg = UTILS_GetMainStartupPage();

   if (loStartPg != null)
   {
      var lsPickField = loStartPg.STARTPG_GetPickElem();
      if (lsPickField != null && lsPickField.length > 0)
      {
         var loElement = document.forms[0][lsPickField];
         if (loElement != null)
         {
            loElement.focus();
         }
      }
   }
}

function UTILS_ExpandTreeNode(foImg)
{
   if (foImg == "")
   {
      return;
   }
   else
   {
      var loInputElems = document.getElementsByTagName('INPUT');

      if (loInputElems != null)
      {
         for (var liIndex = 0; liIndex < loInputElems.length; liIndex++)
         {
            loInput = loInputElems.item(liIndex);

            if (loInput != null && loInput.name == foImg)
            {
               if (document.forms[0].target.length != 0)
               {
                  document.forms[0].target = '';
               }
               DHTMLLIB_ClickElement(loInput, document);
               return;
            }
         }
      }
   }
}

function UTILS_SetPopupWinSize()
{
   var loWinWidth  = document.body.scrollWidth + 50 ;
   var loWinHeight = document.body.scrollHeight + 50 ;

   window.resizeTo( loWinWidth, loWinHeight ) ;
}

function UTILS_BuildSearchWin( fsDSName, foElemList )
{
   var liNumOfElems = Math.floor(foElemList.length / 3);
   var loSearchWin  = DHTMLLIB_OpenNewWin( '', 'SearchWin', 'no', 'no', 'no', 'no', 'no', 'yes', 'no', 200, 200, 200, 200, true ) ;
   var loSearchDoc  = loSearchWin.document ;
   var lsHTML       = '' ;

   UTILS_moOpenWins[UTILS_SEARCH_WIN] = loSearchWin ;

   lsHTML += '<html><head><base href="' + UTILS_getBaseHref( document ) + '">' ;
   lsHTML += '<title>Search</title>' ;
   lsHTML += '<link type="text/css" rel="STYLESHEET" href="../AMSImages/ADVStyle.css">' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSDHTMLLib.js"></script>' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSUtils.js"></script>' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSCalendar.js"></script>' ;
   lsHTML += '</head><body class="ADVPopup" oncontextmenu="event.returnValue=false;return false;" onload="UTILS_SetPopupWinSize();UTILS_EnableClicks();UTILS_SetFocusOnFirstField(document);" onunload="UTILS_CloseOpenWindows();" ' ;


   lsHTML += 'onkeypress="if(UTILS_AllowSearchKeyPress(event) == true){' ;
      
   for(var i = 0; i < foElemList.length; ++i )
   {
      lsElement = foElemList[ 1 + ( i * UTILS_NUM_VAL_PER_SEARCH_ELEM ) ];

      loInputElem = document.forms[0][lsElement];
      lsOnBlurEvent = DHTMLLIB_GetAttributeValue( loInputElem, 'onblur' ) ;
      	
      if ( lsOnBlurEvent != null )
      {
         lsEvent = lsOnBlurEvent.replace( "this", "document.forms[0]['"+lsElement+"']" );
      		
         if( lsEvent != "null" ) { lsHTML += lsEvent; }
      }
   }
      
   lsHTML += 'var loElem=document.getElementById(\'ADVPerformSearch\');' ;
   lsHTML += 'if(loElem!=null){loElem.focus();window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformSearch(' ;
   lsHTML += '\'' + fsDSName + '\',window)}}">' ;


   lsHTML += '<div name="PageContent" id="PageContent" class="ADVPgCont">' ;
   lsHTML += '<form name="SearchWindow" ' ;

   if (mboolIE4Up)
   {
      lsHTML += 'onsubmit="if (event.srcElement.tagName == \'FORM\') {' ;
      lsHTML += 'return false } return true">' ;
   }
   else if (mboolNS5Up)
   {
      lsHTML += 'onsubmit="if (event.target.tagName == \'FORM\') {' ;
      lsHTML += 'return false } return true">' ;
   }

   lsHTML += '<table><tr><td class="ADVScalarCol"><table class="ADVScalar">' ;

   if (liNumOfElems <= 5)
   {
      lsHTML += UTILS_WriteSearchWinTbl( fsDSName, foElemList, 0, liNumOfElems ) ;
   }
   else
   {
      var liNumOfElemsPerCol = Math.ceil( liNumOfElems / 2 ) ;

      lsHTML += UTILS_WriteSearchWinTbl( fsDSName, foElemList, 0, liNumOfElemsPerCol ) ;
      lsHTML += '</table></td><td class="ADVScalarCol"><table class="ADVScalar">' ;
      lsHTML += UTILS_WriteSearchWinTbl( fsDSName, foElemList, liNumOfElemsPerCol, liNumOfElems ) ;
   }

   lsHTML += '</table></td></tr></table>' ;

   lsHTML += '<table class="ADVAction Popup"><tr><td>' ;
   lsHTML += '<a name="ADVPerformSearch" id="ADVPerformSearch" href="javascript:window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformSearch(\'' + fsDSName + '\',window)" title="Ok">Ok</a> ' ;
   lsHTML += '<a name="ADVClearSearch" id="ADVClearSearch" href="javascript:UTILS_ClearSearchWin(document)" title="Clear Query Criteria">Clear</a> ' ;
   lsHTML += '<a name="ADVCancelSearch" id="ADVCancelSearch" href="javascript:window.close();" title="Cancel">Cancel</a>' ;
   lsHTML += '</td></tr></table>' ;

   lsHTML += '</form></div></body></html>' ;

   loSearchDoc.open();
   loSearchDoc.write( lsHTML ) ;
   loSearchDoc.close() ;
}

function UTILS_WriteSearchWinTbl( fsDSName, foElemList, fiBeginIndex, fiEndIndex )
{
   var loInputElem ;
   var loOnBlurEvent ;
   var lsTimelineDt ;
   var lsHTML         = '' ;
   var lsElemReq      = '' ;
   var lsElemMinChars = '' ;
   var lsElemWildcard = '' ;

   for ( var liElemCtr = fiBeginIndex * 7 ; liElemCtr < ( fiEndIndex * 7 ) ; liElemCtr += 7 )
   {
      loInputElem = document.forms[0][foElemList[liElemCtr+1]] ;
      if ( loInputElem != null )
      {
         lsElemReq      = foElemList[liElemCtr+4] ;
         lsElemMinChars = foElemList[liElemCtr+5] ;
         lsElemWildcard = foElemList[liElemCtr+6] ;

         if ( lsElemReq == "Required" )
         {
            lsHTML += '<tr><td class="Label Required"><span class="ReqMarker">*</span><label for="' + foElemList[liElemCtr+1] + '" title="' + foElemList[liElemCtr+2] + '">' ;
            lsHTML += foElemList[liElemCtr+2] + ' :</label></td><td class="Val Required">' ;
         }
         else
         {
            lsHTML += '<tr><td class="Label"><label for="' + foElemList[liElemCtr+1] + '" title="' + foElemList[liElemCtr+2] + '">' ;
            lsHTML += foElemList[liElemCtr+2] + ' :</label></td><td class="Val">' ;
         }

         if ( loInputElem.type == 'text' )
         {
            var lsInputVal = UTILS_SearchList[foElemList[liElemCtr+1]].replace(/\"/g, "&quot;" ) ;

            lsHTML += '<input type="text" class="ADVEditable" name="' + foElemList[liElemCtr+1] + '" id="' + foElemList[liElemCtr+1] + '" ' ;
            lsHTML += 'title="' + foElemList[liElemCtr+2] + '" size="' + DHTMLLIB_GetAttributeValue(loInputElem, 'size') + '" value="' + lsInputVal + '" ' ;

            if ( lsElemReq == "Required" )
            {
               lsHTML += 'ams_elem_required="Required" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_required="" ' ;
            }

            if ( lsElemMinChars != null )
            {
               lsHTML += 'ams_elem_min_char="' + lsElemMinChars + '" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_min_char="" ' ;
            }

            if ( lsElemWildcard == "NoWildcard" )
            {
               lsHTML += 'ams_elem_wildcard="NotAllowed" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_wildcard="" ' ;
            }

            loOnBlurEvent = DHTMLLIB_GetAttributeValue( loInputElem, 'onblur' ) ;
            if ( loOnBlurEvent != null )
            {
               var liBeginIndex ;
               var liEndIndex ;
               var lsOnBlurEventStr ;

               lsOnBlurEventStr = new String( loOnBlurEvent ) ;
               liBeginIndex = lsOnBlurEventStr.indexOf( 'UTILS_OnBlurUpperCaseAndTrim' ) ;

               if ( liBeginIndex >= 0 )
               {
                  liEndIndex = lsOnBlurEventStr.indexOf( ';', liBeginIndex ) ;
                  if ( liEndIndex != -1 )
                  {
                     lsHTML += ' onblur="' + lsOnBlurEventStr.substring( liBeginIndex, liEndIndex ) + '" ' ;
                  }
               }
            }

            lsTimelineDt = DHTMLLIB_GetAttributeValue( loInputElem, 'ams_timeline_qbf' ) ;
            if ( lsTimelineDt != null )
            {
               lsHTML += 'vsformat="MM/dd/yyyy"> <a href="javascript:{}" onclick="UTILS_moOpenWins[UTILS_CALENDAR_WIN]=AMSCalendar_CreateCalendar(document.forms[0].' + foElemList[liElemCtr+1] + '.value, \'' + foElemList[liElemCtr+1] + '\', document.forms[0].' + foElemList[liElemCtr+1] + ');event.returnValue=false;return false;" title="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window">' ;
               lsHTML += '<img src="../AMSImages/ADVCalendar.gif" alt="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window" title="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window"></a>' ;
            }
            else if ( foElemList[liElemCtr+3] != null )
            {
               lsHTML += '> <a href="javascript:window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformSearchPick(\'' + fsDSName + '\',window, \'' + foElemList[liElemCtr+3] + '\',' ;
               lsHTML += '\'' + foElemList[liElemCtr+1] + '\')" title="Select ' + foElemList[liElemCtr+2] + ': Will open in the previous window">' ;
               lsHTML += '<img alt="Select ' + foElemList[liElemCtr+2] + ': Will open in the previous window" title="Select ' + foElemList[liElemCtr+2] + ': Will open in the previous window" src="../AMSImages/ADVPick.gif"></a>' ;
            }
            else if ( AMSCalendar_IsValidDateFormat( loInputElem ) )
            {
               lsHTML += 'vsformat="' + DHTMLLIB_GetAttributeValue( loInputElem, 'vsformat' ) + '"> <a href="javascript:{}" onclick="UTILS_moOpenWins[UTILS_CALENDAR_WIN]=AMSCalendar_CreateCalendar(document.forms[0].' + foElemList[liElemCtr+1] + '.value, \'' + foElemList[liElemCtr+1] + '\', document.forms[0].'+ foElemList[liElemCtr+1] + ');event.returnValue=false;return false;" title="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window">' ;
               lsHTML += '<img src="../AMSImages/ADVCalendar.gif" alt="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window" title="Select ' + foElemList[liElemCtr+2] + ': Will open in a new window"></a>' ;
            }
            else
            {
               lsHTML += '>' ;
            }
         }
         else if ( loInputElem.type == 'checkbox' )
         {
            lsHTML += '<select class="ADVEditable" name="' + foElemList[liElemCtr+1] + '" id="' + foElemList[liElemCtr+1] + '" size="1" title="' + foElemList[liElemCtr+2] + '" ' ;

            if ( lsElemReq == "Required" )
            {
               lsHTML += 'ams_elem_required="Required">' ;
            }
            else
            {
               lsHTML += 'ams_elem_required="">' ;
            }

            if ( UTILS_SearchList[foElemList[liElemCtr+1]] == '' )
            {
               lsHTML += '<option value="" selected></option>' ;
            }
            else
            {
               lsHTML += '<option value=""></option>' ;
            }

            if ( UTILS_SearchList[foElemList[liElemCtr+1]] == 'true' )
            {
               lsHTML += '<option value="true" selected>Yes</option>' ;
            }
            else
            {
               lsHTML += '<option value="true">Yes</option>' ;
            }

            if ( UTILS_SearchList[foElemList[liElemCtr+1]] == 'false' )
            {
               lsHTML += '<option value="false" selected>No</option>' ;
            }
            else
            {
               lsHTML += '<option value="false">No</option>' ;
            }

            lsHTML += '</select>' ;
         }
         else if ( loInputElem.type.indexOf( 'select' ) != -1 )
         {
            lsHTML += '<select class="ADVEditable" name="' + foElemList[liElemCtr+1] + '" id="' + foElemList[liElemCtr+1] + '" size="1" title="' + foElemList[liElemCtr+2] + '" ' ;

            if ( lsElemReq == "Required" )
            {
               lsHTML += 'ams_elem_required="Required">' ;
            }
            else
            {
               lsHTML += 'ams_elem_required="">' ;
            }

            for ( liOptionCtr = 0 ; liOptionCtr < loInputElem.options.length ; liOptionCtr++ )
            {
               if ( liOptionCtr == 0 )
               {
                  if ( !( ( loInputElem.options[liOptionCtr].value == null ) || ( loInputElem.options[liOptionCtr].value == "" ) ) )
                  {
                     lsHTML += '<option value=""></option> ' ;
                  }
               }
               lsHTML += '<option value="' + loInputElem.options[liOptionCtr].value + '"' ;

               if ( UTILS_SearchList[foElemList[liElemCtr+1]] == loInputElem.options[liOptionCtr].value )
               {
                  lsHTML += ' selected' ;
               }

               lsHTML += '>' + loInputElem.options[liOptionCtr].text + '</option>' ;
            }
            lsHTML += '</select>' ;
         }
         else if ( loInputElem.type == 'textarea' )
         {
            lsHTML += '<textarea class="ADVEditable" name="' + foElemList[liElemCtr+1] + '" id="' + foElemList[liElemCtr+1] + '" title="' + foElemList[liElemCtr+2] + '" ' ;
            lsHTML += 'rows="' + DHTMLLIB_GetAttributeValue( loInputElem, 'rows' ) + '" ' ;
            lsHTML += 'cols="' + DHTMLLIB_GetAttributeValue( loInputElem, 'cols' ) + '" ' ;
            lsHTML += 'value="' + UTILS_SearchList[foElemList[liElemCtr+1]] + '" ' ;

            if ( lsElemReq == "Required" )
            {
               lsHTML += 'ams_elem_required="Required" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_required="" ' ;
            }

            if ( lsElemMinChars != null )
            {
               lsHTML += 'ams_elem_min_char="' + lsElemMinChars + '" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_min_char="" ' ;
            }

            if ( lsElemWildcard == "NoWildcard" )
            {
               lsHTML += 'ams_elem_wildcard="NotAllowed" ' ;
            }
            else
            {
               lsHTML += 'ams_elem_wildcard="" ' ;
            }

            loOnBlurEvent = DHTMLLIB_GetAttributeValue( loInputElem, 'onblur' ) ;
            if ( loOnBlurEvent != null )
            {
               var liBeginIndex ;
               var liEndIndex ;
               var lsOnBlurEventStr ;

               lsOnBlurEventStr = new String( loOnBlurEvent ) ;
               liBeginIndex = lsOnBlurEventStr.indexOf( 'UTILS_OnBlurUpperCaseAndTrim' ) ;

               if ( liBeginIndex >= 0 )
               {
                  liEndIndex = lsOnBlurEventStr.indexOf( ';', liBeginIndex ) ;
                  if ( liEndIndex != -1 )
                  {
                     lsHTML += ' onblur="' + lsOnBlurEventStr.substring( liBeginIndex, liEndIndex ) + '" ' ;
                  }
               }
            }
            lsHTML += '></textarea>' ;
         }
         lsHTML += '</td></tr>' ;
      }
   }
   return lsHTML ;
}

function UTILS_ClearSearchWin(foDocument)
{
   if (foDocument == null)
   {
      return;
   }

   var loSearchElemList = foDocument.getElementsByTagName('INPUT');

   for (var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++)
   {
      loSearchElemList[liElemCtr].value = ''
   }

   loSearchElemList = foDocument.getElementsByTagName('SELECT');

   for (var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++)
   {
      loSearchElemList[liElemCtr].value = '';
   }

   loSearchElemList = foDocument.getElementsByTagName('TEXTAREA');

   for (var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++)
   {
      loSearchElemList[liElemCtr].value = '';
   }
}

function UTILS_PerformSearch( fsDSName, foSearchWin )
{
   var loSearchVerified = UTILS_VerifySearchCriteria( fsDSName, foSearchWin );

   if(loSearchVerified == true)
   {
      var lsQueryStr = 'menu_action=menu_action&ams_action=72&' ;
      var lsQryStr   = UTILS_AddSearchParams( fsDSName, foSearchWin ) ;

      if ( lsQryStr != null )
      {
         lsQueryStr = lsQueryStr + lsQryStr ;
      }
      else
      {
         return ;
      }

      submitForm( document.forms[0], lsQueryStr, window.name ) ;
   }
   else
   {
      UTILS_moOpenWins[UTILS_SEARCH_WIN].focus() ;
      return ;
   }

}

function UTILS_VerifySearchCriteria( fsDSName, fsFrameName )
{
   var loSearchDoc = fsFrameName.document ;

   var loInputElems = loSearchDoc.getElementsByTagName('INPUT') ;
   if (loInputElems != null)
   {
      for (var liInputIndex = 0; liInputIndex < loInputElems.length; liInputIndex++)
      {
         loInput = loInputElems.item(liInputIndex) ;

         if (loInput != null)
         {
            var lsInputName         = DHTMLLIB_GetAttributeValue(loInput,'name') ;
            var lsInputValue        = DHTMLLIB_GetAttributeValue(loInput,'value') ;
            var lsInputTitle        = DHTMLLIB_GetAttributeValue(loInput,'title') ;
            var lsInputElemReq      = DHTMLLIB_GetAttributeValue(loInput,'ams_elem_required') ;
            var lsInputElemMinChars = DHTMLLIB_GetAttributeValue(loInput,'ams_elem_min_char') ;
            var lsInputElemWildcard = DHTMLLIB_GetAttributeValue(loInput,'ams_elem_wildcard') ;

            if ( lsInputElemReq != null )
            {
               if ( ( lsInputElemReq == 'Required' ) && ( ( lsInputValue == null ) || ( lsInputValue.length < 0 ) ) )
               {
                  alert( lsInputTitle + " is a required field for search." ) ;
                  return false ;
               }
            }

            if ( lsInputElemWildcard != null )
            {
               if ( lsInputElemWildcard == 'NotAllowed' &&
                    lsInputValue != null && lsInputValue.indexOf( '*' ) != -1 )
               {
                  if ( lsInputValue != '=*' && lsInputValue != '\'*' )
                  {
                     alert( "Wildcard characters cannot be entered for " + lsInputTitle + "." ) ;
                     return false ;
                  }
               }
            }

            if ( lsInputElemMinChars != null )
            {
               if ( lsInputValue != null && lsInputValue.indexOf( '*' ) != -1 &&
                    lsInputValue.indexOf( '*' ) < lsInputElemMinChars )
               {
                  alert( "A minimum of " + lsInputElemMinChars +
                         " characters must be entered for " +
                         lsInputTitle + " before the wildcard." ) ;
                  return false ;
               }
            }
         }
      }
   }

   var loSelectElems = loSearchDoc.getElementsByTagName('SELECT') ;
   if (loSelectElems != null)
   {
      for (var liSelectIndex = 0; liSelectIndex < loSelectElems.length; liSelectIndex++)
      {
         loSelect = loSelectElems.item(liSelectIndex) ;

         if (loSelect != null)
         {
            var lsSelectName    = DHTMLLIB_GetAttributeValue(loSelect,'name') ;
            var lsSelectValue   = DHTMLLIB_GetAttributeValue(loSelect,'value') ;
            var lsSelectTitle   = DHTMLLIB_GetAttributeValue(loSelect,'title') ;
            var lsSelectElemReq = DHTMLLIB_GetAttributeValue(loSelect,'ams_elem_required') ;

            if ( lsSelectElemReq != null )
            {
               if ( ( lsSelectElemReq == 'Required' ) && ( ( lsSelectValue == null ) || ( lsSelectValue.length < 0 ) ) )
               {
                  alert( lsSelectTitle + " is a required field for search." ) ;
                  return false ;
               }
            }
         }
      }
   }

   return true;
}

function UTILS_OnChangeUpperCase( foInput )
{
   if ( mboolNS5Up )
   {
      foInput.value = ( foInput.value ).toUpperCase() ;
   }
   return;
}

function UTILS_OnKeyPressUpperCase(foEvent)
{
   if ( mboolIE4Up )
   {
      var keyCode = foEvent.keyCode ;
      var key = String.fromCharCode( keyCode ) ;

      key = key.toUpperCase() ;
      foEvent.keyCode = key.charCodeAt() ;
    }
    return true ;
}

function UTILS_OnBlurUpperCase( foInput )
{
   foInput.value = ( foInput.value ).toUpperCase() ;
   return;
}

function UTILS_OnBlurUpperCaseAndTrim( foInput, fboolUpperCase, fboolTrimSpace )
{
   if (fboolUpperCase)
   {
      foInput.value = ( foInput.value ).toUpperCase() ;
   }

   if (fboolTrimSpace)
   {
      foInput.value = UTILS_TrimString( foInput.value );
   }
   return true;
}

function UTILS_OnBlurTrim( foInput )
{
   foInput.value = UTILS_TrimString( foInput.value );
   return;
}

function UTILS_DisableClicks()
{
   alert( 'The page is currently being loaded. Please wait for the page to completely load before performing the next action' ) ;
   return false ;
}

function UTILS_EnableClicks()
{
   var lsOnClick = UTILS_GetAMSOnClick() ;

   if ( lsOnClick != null )
   {
      UTILS_msOnClick = lsOnClick ;
   }
   else
   {
      UTILS_msOnClick = null ;
   }
   document.onclick = UTILS_OnClick ;
}

function UTILS_GetAMSOnClick()
{
   var loBody = document.body ;

   if ( loBody != null )
   {
      return DHTMLLIB_GetAttributeValue( loBody, UTILS_AMS_ON_CLICK ) ;
   }
   return null ;
}

function UTILS_OnClick( foEvent )
{
   if ( mboolNS5Up )
   {
      event = foEvent ;
   }
   eval( UTILS_msOnClick ) ;
}

function UTILS_SetFocusOnFirstField(foDocument)
{
   if (foDocument == null)
   {
      foDocument = document;
   }

   if ( foDocument.forms.length > 0 )
   {
      var loForm = foDocument.forms[0] ;
      for ( i = 0; i < loForm.length; i++ )
      {
         if ( ( loForm.elements[i].type == "text" ) ||
              ( loForm.elements[i].type == "textarea" ) ||
              ( loForm.elements[i].type.toString().charAt(0) == "s" ) )
         {
            loForm.elements[i].focus() ;
            break ;
         }
      }
   }
}

function UTILS_SetupOnClickForPage()
{
   var loAnchorElems = document.getElementsByTagName('A');

   if (loAnchorElems != null)
   {
      for (var liIndex = 0; liIndex < loAnchorElems.length; liIndex++)
      {
         loOnclickEvent = DHTMLLIB_GetAttributeValue(
                                       loAnchorElems[liIndex],'onclick');

         if (loOnclickEvent == null)
         {
            loAnchorElems[liIndex].onclick = UTILS_CheckForTransaction;
         }
      }
   }

   UTILS_EnableClicks();
}

function UTILS_AllowSearchKeyPress(foEvent)
{
   var liKeyPressed = 0;

   if (mboolIE4Up)
   {
      liKeyPressed = foEvent.keyCode;
   }
   else if (mboolNS5Up)
   {
      liKeyPressed = foEvent.which;
   }

   if (liKeyPressed == 13)
   {
      var lsEventTgtTagType;
      var loEventElem;

      if (mboolNS5Up)
      {
         lsEventTgtTagType = foEvent.target.tagName;
         loEventElem = foEvent.target;
      }
      else if (mboolIE4Up)
      {
         lsEventTgtTagType = foEvent.srcElement.tagName;
         loEventElem = foEvent.srcElement;
      }

      if ( ( lsEventTgtTagType != null && lsEventTgtTagType == 'A' )
          || ((lsEventTgtTagType == 'INPUT') &&
              ( loEventElem.type &&
              loEventElem.type.toUpperCase() == 'BUTTON' ||
              loEventElem.type.toUpperCase() == 'SUBMIT' ||
              loEventElem.type.toUpperCase() == 'IMAGE' ||
              loEventElem.type.toUpperCase() == 'RESET')))
      {
         return false;
      }
      else
      {
         return true;
      }
   }
   else
   {
      return false;
   }
}

/**
 * This function is used by VSS to Load the Navigation Tree on the Load of the Page.
 *
 * Modification Log : Mark Orlando        - 11/15/2001
 *                                        - inital version
 * fsName - The ID of the button which is to be "clicked"
 * foDocument - The current document 
 */   
 function UTILS_VSSOnloadClick(fsName, foDocument)
 {
    loElem = foDocument.getElementById(fsName);
    if (loElem != null)
    {
         DHTMLLIB_ClickElement(loElem,foDocument);
    }
 }

 /**
 * This function is used by VSS to return the User to the Login Screen via a link
 * from within an application page.  Performs the exact same action as the Logout 
 * button.  The Functional folks wanted the logout/login capability from multiple 
 * location within the page.
 *
 * Modification Log : Mark Orlando        - 3/30/2001
 *                                        - inital version
 * 
 */    
 function UTILS_VSSGoLoginScreen()
 {
     document.forms[0].target = '_parent';
     if (mboolNS4)
     {
         document.forms[0].Logout.click();
     }
     else if (mbMinIE4 || mboolNS5Up)
     {
         var loElem = document.getElementById('Logout')
         if (loElem != null)
         {
            loElem.click();
         }
      }
 } 
function UTILS_BuildCustTimelineSelection( fsDataSource, fsID, fsActnName, foEvent )
{
   var loTimelineWin  = DHTMLLIB_OpenNewWin( '', 'TimelineWin', 'no', 'no', 'no', 'no', 'no', 'yes', 'no', 300, 150, 200, 200, true ) ;
   var loTimelineDoc  = loTimelineWin.document ;
   var lsHTML         = '' ;
   var lsTimelineFrom = fsDataSource + 'TimelineFrom' ;
   var lsTimelineTo   = fsDataSource + 'TimelineTo' ;
   var lsBaseHREF     = UTILS_getBaseHref( document ) ;

   UTILS_moOpenWins[UTILS_TIMELINE_WIN] = loTimelineWin ;

   lsHTML += '<html><head><base href="' + UTILS_getBaseHref( document ) + '">' ;
   lsHTML += '<title>Specify Timeline Range</title>' ;
   lsHTML += '<link type="text/css" rel="STYLESHEET" href="../AMSImages/ADVStyle.css">' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSDHTMLLib.js"></script>' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSUtils.js"></script>' ;
   lsHTML += '<script type="text/javascript" language="JavaScript" src="../AMSJS/AMSCalendar.js"></script>' ;
   lsHTML += '</head><body class="ADVPopup" oncontextmenu="event.returnValue=false;return false;" onload="UTILS_SetPopupWinSize();UTILS_EnableClicks();UTILS_SetFocusOnFirstField(document);" onunload="UTILS_CloseOpenWindows();" ' ;

   if (mboolIE4Up)
   {
      lsHTML += ' onkeydown="if(UTILS_AllowSearchKeyPress(event) == true)' ;
      lsHTML += '{var loElem=document.getElementById(\'ADVPerformSearch\');' ;
      lsHTML += 'if(loElem!=null){DHTMLLIB_ClickElement(loElem,document)}}">' ;
   }
   else if (mboolNS5Up)
   {
      lsHTML += 'onkeypress="if(UTILS_AllowSearchKeyPress(event) == true)' ;
      lsHTML += '{var loElem=document.getElementById(\'ADVPerformSearch\');' ;
      lsHTML += 'if(loElem!=null){loElem.focus();window.opener.top.frames[\'' + window.name + '\'].UTILS_PerformSearch(null,' ;
      lsHTML += '\'' + fsDSName + '\',window)}}">' ;
   }

   lsHTML += '<div name="PageContent" id="PageContent" class="ADVPgCont">' ;
   lsHTML += '<form name="SearchWindow" ' ;

   if (mboolIE4Up)
   {
      lsHTML += 'onsubmit="if (event.srcElement.tagName == \'FORM\') {' ;
      lsHTML += 'return false } return true">' ;
   }
   else if (mboolNS5Up)
   {
      lsHTML += 'onsubmit="if (event.target.tagName == \'FORM\') {' ;
      lsHTML += 'return false } return true">' ;
   }


   lsHTML += '<table><tr><td class="ADVScalarCol"><table class="ADVScalar">' ;

   lsHTML += '<tr><td class="Label"><label for="' + fsDataSource + 'From" title="From">From :</label></td><td class="Val">' ;
   lsHTML += '<input type="text" class="ADVEditable" name="' + fsDataSource + 'From" id="' + fsDataSource + 'From" size="11" ' ;
   lsHTML += 'value="' + document.forms[0].elements[lsTimelineFrom].value + '"  vsformat="MM/dd/yyyy"> ' ;
   lsHTML += '<a href="javascript:{}" onclick="UTILS_moOpenWins[UTILS_CALENDAR_WIN]=AMSCalendar_CreateCalendar(document.forms[0].' + fsDataSource + 'From.value, \'' + fsDataSource + 'From\', document.forms[0].' + fsDataSource + 'From);event.returnValue=false;return false;" title="Select From: Will open in a new window">' ;
   lsHTML += '<img src="../AMSImages/ADVCalendar.gif" alt="Select From: Will open in a new window" title="Select From: Will open in a new window"></a>'
   lsHTML += '</td></tr>' ;

   lsHTML += '<tr><td class="Label"><label for="' + fsDataSource + 'To" title="To">To :</label></td><td class="Val">' ;
   lsHTML += '<input type="text" class="ADVEditable" name="' + fsDataSource + 'To" id="' + fsDataSource + 'To" size="11" ' ;
   lsHTML += 'value="' + document.forms[0].elements[lsTimelineTo].value + '"  vsformat="MM/dd/yyyy"> ' ;
   lsHTML += '<a href="javascript:{}" onclick="UTILS_moOpenWins[UTILS_CALENDAR_WIN]=AMSCalendar_CreateCalendar(document.forms[0].' + fsDataSource + 'To.value, \'' + fsDataSource + 'To\', document.forms[0].' + fsDataSource + 'To);event.returnValue=false;return false;" title="Select To: Will open in a new window">' ;
   lsHTML += '<img src="../AMSImages/ADVCalendar.gif" alt="Select To: Will open in a new window" title="Select To: Will open in a new window"></a>'
   lsHTML += '</td></tr>' ;

   lsHTML += '</table></td></tr></table>' ;

   lsHTML += '<table class="ADVAction Popup"><tr><td>' ;
   lsHTML += '<a name="ADVPerformSearch" id="ADVPerformSearch" href="javascript:window.opener.top.frames[\'' + window.name + '\'].UTILS_GetCustTimeline(\''+ fsDataSource + '\',\'' + fsActnName + '\',document.forms[0].'+ fsDataSource + 'From.value,document.forms[0].'+ fsDataSource + 'To.value)" title="Ok">Ok</a> ' ;
   lsHTML += '<a name="ADVClearSearch" id="ADVClearSearch" href="javascript:UTILS_ClearSearchWin(document)" title="Clear Query Criteria">Clear</a> ' ;
   lsHTML += '<a name="ADVCancelSearch" id="ADVCancelSearch" href="javascript:window.close();" title="Cancel">Cancel</a>' ;
   lsHTML += '</td></tr></table>' ;

   lsHTML += '</form></div></body></html>' ;

   loTimelineDoc.open() ;
   loTimelineDoc.write( lsHTML ) ;
   loTimelineDoc.close() ;
}

function UTILS_GetCustTimeline( fsDataSource, fsActnName, fsFrom, fsTo )
{
   var lsQuery ;

   lsQuery = fsActnName + "=" + fsActnName ;
   lsQuery += "&" + fsDataSource + "From=" + fsFrom ;
   lsQuery += "&" + fsDataSource + "To=" + fsTo ;

   submitForm( document.forms[0], lsQuery, window.name ) ;

}

function UTILS_TrimTextArea( foField, fiMaxLen )
{
   if ( foField.value.length > fiMaxLen )
   {
      foField.value = foField.value.substring( 0, fiMaxLen ) ;
   }
}

function UTILS_PerformSearchPick( fsDSName, foSearchWin, fsPickName, fsScalarElem )
{
   var lsQueryStr = 'menu_action=menu_action&ams_action=83&' ;
   var lsQryStr   = UTILS_AddSearchParams( fsDSName, foSearchWin ) ;
   if ( lsQryStr != null )
   {
      lsQueryStr = lsQueryStr + lsQryStr ;
   }
   lsQueryStr = lsQueryStr + '&vspick=' + fsPickName + '&ams_searchpick_elem=' + fsScalarElem ;

   submitForm( document.forms[0], lsQueryStr, window.name ) ;
}

function UTILS_AddSearchParams( fsDSName, foSearchWin )
{
   var loDocument = foSearchWin.document ;
   var loSearchElemList ;
   var loElemList ;
   var lsQueryStr = 'vsds='+fsDSName ;
   var lsQryStr ;
   var lsElemName ;
   var lsElemValue ;

   if ( loDocument == null )
   {
      return null ;
   }

   loSearchElemList = loDocument.getElementsByTagName('INPUT') ;

   for ( var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++ )
   {
      lsElemName = DHTMLLIB_GetAttributeValue(
                       loSearchElemList[liElemCtr], 'name' ) ;
      lsElemValue = loSearchElemList[liElemCtr].value ;

      if ( lsElemName != null && lsElemValue != null &&
           lsElemName.length > 0  && lsElemValue.length > 0 )
      {
         lsQueryStr += '&' + lsElemName + '=' + escape(lsElemValue) ;
      }
   }

   loSearchElemList = loDocument.getElementsByTagName('SELECT') ;

   for ( var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++ )
   {
      lsElemName = DHTMLLIB_GetAttributeValue(
                       loSearchElemList[liElemCtr], 'name' ) ;
      lsElemValue = loSearchElemList[liElemCtr].value ;

      if ( lsElemName != null && lsElemValue != null &&
           lsElemName.length > 0  && lsElemValue.length > 0 )
      {
         lsQueryStr += '&' + lsElemName + '=' + escape(lsElemValue) ;
      }
   }

   loSearchElemList = loDocument.getElementsByTagName( 'TEXTAREA' ) ;

   for ( var liElemCtr=0; liElemCtr < loSearchElemList.length; liElemCtr++ )
   {
      lsElemName = DHTMLLIB_GetAttributeValue(
                       loSearchElemList[liElemCtr], 'name' ) ;
      lsElemValue = loSearchElemList[liElemCtr].value ;

      if ( lsElemName != null && lsElemValue != null &&
           lsElemName.length > 0  && lsElemValue.length > 0 )
      {
         lsQueryStr += '&' + lsElemName + '=' + escape(lsElemValue) ;
      }
   }

   return lsQueryStr ;

}

function UTILS_getBaseHref( foDocument )
{
   var lsBaseTags = foDocument.getElementsByTagName("BASE");
   return lsBaseTags[0].getAttribute("HREF");
}

function UTILS_CloseOpenWindows()
{
   var loWin ;
   for ( var liIdx = 0 ; liIdx < UTILS_moOpenWins.length ; liIdx++ )
   {
      loWin = UTILS_moOpenWins[liIdx] ;

      if ( ( loWin != null ) && ( !loWin.closed ) )
      {
         loWin.close() ;
      }
   }
}

function UTILS_AddPagePopupWindow( foWindow )
{
   UTILS_moOpenWins[length] = foWindow ;
}

function UTILS_ResetTimeout()
{
   var loStartPg = UTILS_GetMainStartupPage() ;

   if ( loStartPg != null )
   {
      loStartPg.STARTPG_ResetSessionTimer() ;
   }
}

function UTILS_FocusOnWindow( fiWinIdx, fboolFocusOnFirstField )
{
   if ( UTILS_moOpenWins[fiWinIdx] != null )
   {
      UTILS_moOpenWins[fiWinIdx].focus() ;
      if ( fboolFocusOnFirstField )
      {
         UTILS_SetFocusOnFirstField( UTILS_moOpenWins[fiWinIdx].document ) ;
      }
   }
}


function UTILS_onKeyPressUpperCaseAndTrim( foTextBox, foEvent, fboolUpperCase, fboolTrimSpace )
{
   var liKeyPressed = 0;

   if (mboolIE4Up)
   {
      liKeyPressed = foEvent.keyCode;
   }
   else if (mboolNS5Up)
   {
      liKeyPressed = foEvent.which;
   }

   /**
    * In Netscape6, the default behaviour is not
    * blur for textfields when you press "ENTER"
    * key, hence this change was required.
    */
   if (liKeyPressed == 13) // Enter Key
   {
      UTILS_OnBlurUpperCaseAndTrim( foTextBox, fboolUpperCase, fboolTrimSpace );
   }

   return true;
}
