// This file contains intellectual property and artistic creations
// by Dennis Sandow and is copyright 2000-2010 by the author.
// For use only on websites maintained by Dennis Sandow, or with
// specific permission.  Do not remove this notice.

var HdrSizTxt='', WWid=800, WHt=600; //whatsNew='' ;
var toglv=1, WPop, WPopAutoCloseWarning, prefix='', ditherLO=0, ditherTO=0, ditherWD=0, ditherHT=0,ipAddress='';
var udf='undefined';
if ( typeof Mesage == udf ) { var Mesage=new Array(), Captn=new Array(); };
var LibClosed=0;
if (typeof ddm == udf) ddm='';
if (typeof pixPath == udf) pixPath='';
if (typeof WorkDir == udf) WorkDir='';
if (typeof isPrint == udf) isPrint='';
if( typeof isWeb == udf ) var isWeb=0;
if (typeof isKookie == udf ) var isKookie=0;
if ( typeof iAm == udf ) var iAm = 'unknown';

var ns4A = (document.layers)? true:false;
var ns6A = (document.getElementById)? true:false;
var ffA = false; // only used to distinguish NS from FF at stuffIframe.  NS can't handle. 
if (ns6A) {
  if (navigator.userAgent.indexOf('irefox')>0) {ffA = true;};
}; 
var ie4A = (document.all)? true:false;
var ie5A = false;
var ie6A = false;
//alert(ns4A+' '+ns6A+' '+ie4A+' '+ie5A+' '+ie6A+' '+navigator.userAgent)
if (ie4A) {
  if (navigator.userAgent.indexOf('MSIE 5')>0) {ie5A = true;};
  if (navigator.userAgent.indexOf('MSIE 6')>0) {ie5A = true; ie6A = true;};
  if (ns6A) {ns6A = false;};
};
//alert(ns4A+' '+ns6A+' '+ie4A+' '+ie5A+' '+ie6A+' '+navigator.userAgent)    

var xiw=0, xih=0;
if (ns4A){ xiw = self.innerWidth; xih=self.innerHeight ; };
if (ns6A){ xiw = self.outerWidth; xih=self.outerHeight ; };
function maybeReload(){
  if ( ns4A && ( xiw != self.innerWidth || xih != self.innerHeight )) self.location.reload();
  if ( ns6A && ( xiw != self.outerWidth || xih != self.outerHeight )) self.location.reload();
  return;
};

function PrintableWarn(){
  if ( typeof NoPrintableAdvice != udf ) return;
  Advice='Sometimes, your printer will chop off the right side of a web-page. '+
    'To reduce that possibility, this page is set up flush-left. '+
    'If it <I>still</I> prints with part clipped off, try this.'+
    '<ul><li><B>Netscape 4:</B> Click <I>File</I> then <I>Page Setup</I> '+
             'then reduce the width of the Left and Right Margins.'+
        '<li><B>Internet Explorer 5 or 6:</B> Click <I>File</I> '+
             'then <I>Page Setup</I> '+
             'then reduce the width of the Left and Right Margins.'+
             '<br>OR Click <I>View</I> '+
             'then <I>Text Size</I> '+
             'then click on a <i>smaller</i> size.'+
        '<li><B>Netscape 6 or 7:</B> Click <I>File</I> then <I>Page Setup</I> '+
             'then <I>Format and Options</I> '+
             'then check <I>Shrink to Fit Page Width</I> OR '+
             'check a <i>smaller percentage</i>.'+
    '</ul>';
  if (typeof PrintableAltText != udf && PrintableAltText ) Advice=PrintableAltText;
  if (typeof PrintableAddon != udf && PrintableAddon ) Advice += PrintableAddon;
  Advice = '<table align="center" width="365px" bgcolor="white" border=3 cellpadding=5 cellspacing=0><tr><td class=v10>'+Advice+'</td></tr></table>';
  overlib(Advice,CAPTION,'Printing Notes',STATUS,'Printing Notes', BGCOLOR,'#000000',FGCOLOR,'#ffc0c0',FIXX,10,FIXY,10,WIDTH,400,STICKY);
};

// mt = microTimer(); stuff; microTimer(mt);
function microTimer(arg){
  microDate = new Date();
  if (! arg ) return microDate.getTime();
  alert( (microDate.getTime()-arg) + ' millisecs');
};

var popA=new Array(),popAIdx=0;

// args = [-]URL [, style 1-6] [,[+]counterName]
// (-)URL -> nofocus;
// if URL=''
//   counterName='' then WdoNam='POP'+iAm
//   counterName = 'xx' then WdoNam=xx and counterName='';
//   counterName = '+xx' then WdoNam=xx and counterName=xx

function NewWd(URL) {
  if ( typeof isPrint != udf && ! isPrint && typeof nd != udf) nd();
  var args = arguments,style=1,makeCounter=0,counterName='',doChrome=1,doFocus=1,timeClose='';
  for (i = 1; i < args.length; i++) { // process extra args for style and countername
    if (args[i] == 'TIMEOUT'){
      timeClose=1;
    } else if (isNaN(args[i])){
      counterName=args[i];
    } else if(Math.abs(args[i]) <= 9){
      style=Math.abs(args[i]);
      if (args[i]<0) doChrome=0;
    };
  };
// detect '-URL' => nofocus, strip URL, un-doFocus.
  if ( URL.charAt(0) == '-' ) { URL=URL.substring(1,199); doFocus=0; };
// detect '+counterName' => Use counterName, even if URL=''
//  (for assessment comparables form).
  if ( counterName.charAt(0) == '+' ) {
    counterName=counterName.substring(1,199); makeCounter=1; };
// build WdoNam
  if ( URL ) {
    WdoNam=URL.replace(/ /g,'');
    if (WdoNam.indexOf("#") > 0 ){  // strip off trailing args
      WdoNam=WdoNam.substring(0, WdoNam.indexOf("#") );
    } else if (WdoNam.indexOf("?") > 0 ){
      WdoNam=WdoNam.substring(0, WdoNam.indexOf("?") );
    };
    if (WdoNam.charAt( WdoNam.length -1 ) == '/' ) WdoNam = WdoNam.substring( 0,WdoNam.length-1 );  // clip trailing '/'
    WdoNam=WdoNam.substring(WdoNam.lastIndexOf("/")+1 );  // abandon full path & save doc.name (if URL is relative and in same dir, then no "/" and -1+1=0)
    if ( WdoNam.substring(0,4).toLowerCase() == 'www.' ) WdoNam=WdoNam.substring(4,199);  // remove leading 'www.'
  // clip off extension.
    if (WdoNam.indexOf(".") > 0) WdoNam=WdoNam.substring(0,WdoNam.indexOf(".") );
//    WdoNam += counterName; // for Lib. Reason unk. Suppressed 12/25/05 on spec.
  };
// if no URL, then the counter arg was meant to be a WdoNam. Main will load window using target=.
  if ( ! URL )  WdoNam=counterName;
// last choice
  if ( ! WdoNam.length ) WdoNam='POP'+iAm ;
// Authorizes a NAMED child page to test its parent to see if
//   it (the child) should display a return button.
//   Suppressed for URL='', for consistency in target= calls.
  if ( URL ) {
// for web call from local page or from other website to safe the logic in child instance of GenPinkBox()
    if(URL.indexOf('http') == 0 || URL.indexOf('www') == 0 ){
      WdoNam=WorkDir.replace(/\//g,'')+'0k'+WdoNam;
    } else WdoNam='0k'+WdoNam;
  };
// DevStats,SiteIndex,Contents and WhatsNew name their child windows.
  if( typeof forceChildWindowName != udf && forceChildWindowName ) {
    // prevents test when web looks back to local page, which is blocked.
    WdoNam=forceChildWindowName ;
  };
// If no URL, then flag the window.name to not allow any overwrites (ex: swap backgrounds) if the child loads misc.js.
// Suppress flagging for Minutes windows, since this mod to name of target window confuses the window targeting from the search engine directives.
  if( ! URL && ! fromPairWd && typeof suppressNoBgSubst == udf ) WdoNam+='noBgSubst'
  fromPairWd=false;
// If it now turns out that the child will have the same name as the current window, we don't want the "new window" to be the same as this window. (see radon)
  dotJul = new Date();
  if ( WdoNam == window.name || WdoNam == 'hack' || WdoNam == '0khack' ) {
    WdoNam += dotJul.getTime();
  };
// Cleanup. Replace all non-alphanumerics (/\W/g). Some cause grief in IE
  WdoNam = WdoNam.replace(/\W/g,'_');
// Don't count, unless specifically told to (assessment/comps/form, etc).
  if ( ! URL && ! makeCounter ) counterName='';
  if ( URL.substring(0,5).toLowerCase() == 'http:' ||
       URL.substring(0,6).toLowerCase() == 'https:' ||
       makeCounter
     ) { SepChar = '_'; } else { SepChar = '-'; };
  xctr = counterName?iAm+SepChar+counterName:''
// can't handle local-to-web NewWd if this is local
// except when opener or opener.opener is a (local) priviledge page
// abandoned when FF3 can't read opener?? 4/4/09
//  privlPages='|contents|siteindx|newsmenu|private|'
//  while (true) {
//    if ( typeof isWeb != udf && isWeb ) break;
//    if ( iAm == 'private' || iAm == 'contents' ) break;
//    if ( ValidateOpener() && typeof opener.iAm != udf &&
//           privlPages.indexOf('|'+opener.iAm+'|') >=0 
//       ) break;
//    if ( ValidateOpener(2) && typeof opener.opener.iAm != udf &&
//           privlPages.indexOf('|'+opener.opener.iAm+'|') >=0 
//       ) break;
//    window.alert('Can\'t connect to \n\n'+URL+'\n'+WdoNam+'<>'+xctr+'\n\nbecause you are not on-line.');
//    if ( URL ) return;
//    return false; // to kill subsequent actions in form submits with target=
//    break;
//  };

// 1=large; 2=left 2/3 riverguage; 3=left 1/2 timecheck; 4=private wide and flat;
// 5=small private mailIP, 6=From siteindex/whatsnew
// 7=Secondary with forms,8=XL for Diane Library-to-MAIN,9=551x376 10tLocnPixSmall.
var LeftOffset = new Array( new Array( 0, 30, 10, 15, 30, 50, 10, 0, 5, 230 ), new Array( 0, 25, 10, 15, 25, 40, 10, 0, 5, 125 ) );
var TopOffset  = new Array( new Array( 0, 40, 10, 40, 40, 50, 20, 0, 5, 195 ), new Array( 0, 30, 10, 30, 30, 40, 15, 0, 5, 110 ) );
var Width      = new Array( new Array( 0,950,610,560,950,200,990,400,1010,590 ), new Array( 0,730,530,400,730,150,760,400,790,590 ) );
var Height     = new Array( new Array( 0,550,610,550,250,100,590,350,620,325 ), new Array( 0,430,450,430,200, 80,460,350,480,325 ) );

  if (screen.width >= 1024 ){ ScWid=0; } else { ScWid=1; };
  LeftO=LeftOffset[ScWid][style]+ditherLO; ditherLO=0;
  TopO=TopOffset[ScWid][style]+ditherTO; ditherTO=0;
  WidthO=Width[ScWid][style]+ditherWD; ditherWD=0;
  HeightO=Height[ScWid][style]+ditherHT; ditherHT=0;
  if(!doChrome) HeightO += 100;
  TopShift=0;
  if (ns4A && style == 1 ){
    LeftShift=10; TopShift=25; ChromeX=12; ChromeY=168-47;
    LeftO=screenX+LeftShift+ditherLO;
    WidthO=Math.min( outerWidth-ChromeX, (screen.width-LeftO-ChromeX) );
    TopO=screenY+TopShift+ditherTO;
    HeightO=Math.min( outerHeight-ChromeY, (screen.height-TopO-ChromeY) );
  };
if ( ns6A ) ShowLocBar=1;
if('|siteindx|whatsnew|contents|devstats|'.indexOf('|'+iAm+'|')>=0 )ShowLocBar=1;
//  if (ie4A && style == 1 ){
//    LeftShift=6; TopShift=-97; ChromeX=-20; ChromeY=0;
//    if( typeof ShowLocBar != udf && ShowLocBar ) TopShift += 25;
//    LeftO=screenLeft+LeftShift+ditherLO;
//    WidthO=Math.min( document.body.clientWidth-ChromeX, (screen.width-LeftO-ChromeX) );
//    TopO=screenTop+TopShift+ditherTO;
//    HeightO=Math.min( document.body.clientHeight-ChromeY, (screen.height-TopO-ChromeY) );
//  };

  if ( ( typeof isWeb == udf || isWeb ) && xctr ) {
    cdnw=new Image(); cdnw.src=myCgiAt+'pegstd.cgi?'+escape(xctr);
  };

  var addlocation='';
  if( ( typeof ShowLocBar != udf && ShowLocBar ) || ns6A ) {
    TopShift += 25; addlocation='location=yes,directories=yes,';} ;
  PosnStr="left="+LeftO+",top="+TopO+",width="+WidthO+",height="+HeightO
  if ( doChrome ) {
    KromCtl="scrollbars=yes,resizable=yes,toolbar=yes,menubar=yes,status=yes";
  } else {
    KromCtl="scrollbars=yes,resizable=yes,toolbar=no,menubar=no,status=no";
    addlocation='';
  };
  popA[popAIdx++]=WPop=window.open(URL,WdoNam,addlocation+KromCtl+','+PosnStr );
//  if ( ! URL ) { WPop.document.write(WdoNam); WPop.document.close(); };
  if ( ! URL && typeof WdoNam != 'undefined' && WdoNam ) { // special for recheck - undefines WdoNam ?
    WPop.document.write(WdoNam); WPop.document.close(); 
  } ;
  if ( doFocus ) { WPop.focus(); } else { WPop.blur(); };
// for WxRadio & Redwing - NO - OK to include TIMEOUT for WinAmp, since it opens autonomously.  But RealPlayer opens as a plugin IN THE NEW WINDOW, and if the window closes, RealPlayer dumps.  Since we can't know what the reader's playback preference is, then leave it out.
  if(timeClose)setTimeout('WPop.close()', 10000); 
  if ( typeof returnReminder != udf ) returnReminder(URL);
  return;
};

var fromPairWd=false; //for contents
function PairWd(urL){
  window.name=iAm; ForceNew=false; fromPairWd=true;
  if( typeof forceChildWindowName != udf && forceChildWindowName ) {
    ForceNew=true;
  };
  if( ForceNew ||
      typeof WnPop == udf ||
      WnPop == null ||
      typeof WnPop.closed == udf ||
      WnPop.closed ||
      typeof WnPop.location == udf ||
      WnPop.location.href == self.location.href
  ) NewWd('',6,'x'+iAm);
  WPop.location.href=urL; WnPop=WPop;
};

function NewWdLcl(arg){
  if ( isPrint ) return;
  NewWd('', 'drivingl'); widArg=''; preTable='<p>&nbsp;<p>&nbsp;';
  switch( WorkDir.replace('..','') ){
    case '/lht/': nwlBanner='LONG HILL TOWNSHIP'; break;
    case '/lib/': nwlBanner='LONG HILL TOWNSHIP LIBRARY'; break;
    case '/djs/': nwlBanner='LONG HILL TOWNSHIP'; break;
    case '/coc/': nwlBanner='LONG HILL CHAMBER OF COMMERCE'; break;
// for Mendham Conservation Easements
    case '/10t/': nwlBanner=''; widArg=' width="90%"'; preTable=''; break;
    default: nwlBanner='';
  };
  if(nwlBanner) nwlBanner='<span class=cs261><b>'+nwlBanner+'</b></span><br>'
  wholePop = '<html><head><title>'+Captn[arg].replace(/<br>/g,' ')+'</title>'+
    '<script type="text/javascript">'+
      'isWeb='+isWeb+';'+'MenuItems='+MenuItems+';'+
      'WorkDir="'+WorkDir+'";'+'pixPath="'+pixPath+'";'+
    '</script>'+
    '<script type="text/javascript" src="'+NxPg('js/misc.js')+'"></script>'+
    '<link rel=stylesheet type="text/css" href="'+ NxPg('js/lhts.css') +'"></head>'+
    '<body>'+preTable+'<table align=left border=1 cellpadding=10 cellspacing=0 '+widArg+'>'+
    '<tr><td align=center>'+nwlBanner+'<font size=+2><b>'+Captn[arg]+'</b></font></td></tr>'+
    '<tr><td align=left>'+Mesage[arg]+'</td></tr></table>'+
    '<script type="text/javascript">setTimeout(\'window.print();\',1000)</script>'+
    '</body></html>' ;
  WPop.document.write(wholePop);
  WPop.document.close();
  return;
};

// Prototype for SelfPrintPop
// <a href="javascript:NewWdLcl('Rutgers')"
//   onmouseover="return SelfPrintPop('Rutgers'[,'footer intro words'[,'status line words'[,'-300,L']])"
//   onmouseout=xnd(); ><b>Directions</b></a></td>
var Bump=50;

function SelfPrintPop(arg){
  if ( suppressPop() ) { 
    window.status='This text is shown at the bottom of the Printable Page';
    return true;
  };
  FooterPrefix = 'To print these directions, ';
  PopupStatusLine = 'Directions to '+arg
  PopupSpec = '-500,R'
  if ( typeof arguments[1] != udf && arguments[1] ) {
    FooterPrefix = arguments[1];
    PopupStatusLine=''; PopupSpec='';
  };
  if ( typeof arguments[2] != udf && arguments[2] ) {
    PopupStatusLine = arguments[2];
  };
  if ( typeof arguments[3] != udf && arguments[3] ) {
    PopupSpec = arguments[3];
  };
  Bump++;
  Mesage[Bump] = Mesage[arg] + '<p>'+FooterPrefix+
    ' <a href="javascript:NewWdLcl(\''+arg+'\')" '+
      'onMouseout="window.status=window.defaultStatus; return true;" '+
      'onmouseover="window.status=\'Click to open a new window to print this popup.\'; return true;" '+
      '>click here</a>, then click your browser\'s "Print" button.';
  Captn[Bump] = Captn[arg];
  return HintPop(Bump,PopupStatusLine,PopupSpec);
};

function overlibSetup(){
  if(typeof overstyl == udf) { CTSetup(); return; };
  overstyl( BGCOLOR,'#000000',FGCOLOR,'#ffffc0',VAUTO,SNAPX,25,SNAPY,15, CAPTIONSIZE,2,CLOSESIZE,1,CLOSETEXT,'<img src="'+NxPg('js/olclose.gif')+'" border=0>');
};

// MOUSEOFF is automatic non-toggle in ol3.33m.
// MOUSEOFF needs to be toggled on in CT.
// VAUTO not a toggle in ol3.33m.  Set ON above. [[ Also set ON in TextPopCommon(). ]]
// VAUTO is a toggle default off in CT. Toggle ON in TextPopCommon().
function CTSetup(){
  if( typeof ctPageDefaults == udf) return;
  ctPageDefaults(BGCOLOR,'#000000',FGCOLOR,'#ffffc0',SNAPX,25,SNAPY,15, CAPTIONSIZE,2,CLOSESIZE,1,CLOSETEXT,'<img src="'+NxPg('js/olclose.gif')+'" border=0>',MOUSEOFF);
};

if (typeof HdrMsg == udf) var HdrMsg = 'stubbed';
var ScWid='', pixFact='';
function setSizes(){ // IE doesn't know self until the body

  overlibSetup();
  WingdingOK=guessFontAvailability ('wingdings');  WDtested=1;
  
  if ( typeof menuSupportSetup != udf ) menuSupportSetup();
  
  if (screen.width >= 1024 ){ ScWid=0; } else { ScWid=1; };
  if (ie4A) { WWid = self.document.body.clientWidth;
    HdrSizTxt = '\nYour IE window outer size is '+self.document.body.clientWidth+'x'+self.document.body.clientHeight ;
  };
  if (ns4A) { WWid = self.innerWidth;
    HdrSizTxt = '\nYour NS4 window outer size is '+self.outerWidth+'x'+self.outerHeight+'.\nYour payload area size is '+self.innerWidth+'x'+self.innerHeight+'.' ;
  };
  if (ns6A) { WWid = self.outerWidth;
    HdrSizTxt = '\nYour NS6 window outer size is '+self.outerWidth+'x'+self.outerHeight+'.\nYour payload area size is '+self.innerWidth+'x'+self.innerHeight+'.' ;
  };
  if ( WWid >= 900 || (typeof isPrint != udf && isPrint ) ){ pixFact=1; } else { pixFact=.82; };
  HdrMsg += '\nYour screen size is '+screen.width+'x'+screen.height+'.'+HdrSizTxt ;
  HdrMsg += '\n\nThis window is named "'+window.name+'"' ;

// to insert an onload popup.  In --32 
// declare usePopupBlockerMessage=1 to trigger this HintPop call.
// or overwrite Mesage['popBlock']
// or declare a local function local() and call the std message
// or declare the local function and a different message.
  if (typeof thisOnloadWarning != udf ) { thisOnloadWarning();
    } else if (typeof usePopupBlockerMessage != udf ) HintPop('popBlock','Popup Blocker warning');

// StartJumpTop requires calls to start the "returntotop" scroller.  Each of them ends by calling onloadFinal().  If no RTT, start onloadFinal() here by default.
  if( typeof MenuItems != udf ) StartJumpTop(); else window.onload=onloadFinal;
};

function onloadFinal(){
  if (typeof MirrorOfficialSite != udf) MirrorOfficialSite();
// --32
// <script type="text/javascript">ddm="non-disappearing text";freezeddm=1;</script>
  if (typeof freezeddm == udf && DDMisActiveForKilling) setTimeout("divControl(0,'bloban')",ddmTimeout);
};

Captn['popBlock'] = 'Do you have a popup blocker?';
Mesage['popBlock'] = 'If you have a popup blocker, you may experience difficulty after you SUBMIT.  The browser may go into a nasty loop of warning messages saying "Retry or Cancel" and "Resend information".<p>Turn off your popup blocker.<br>Restart your browser.<br>Call this page again.<p>You still might find that the SUBMIT button is dead.  Look for a message in the Status Bar at the bottom of the window that says something like "Popups are blocked on this site.  Press the CTRL Key when you click SUBMIT."<p>If all else fails, go to Options (pink box at top right) and select "in-Line" <!-- href=http://www -->';

function maxOf(){
  tmp=arguments[0];
  for(x=1;x<arguments.length;x++){
    tmp=Math.max(tmp,arguments[x]);
  };
  return tmp;
};

// dotSizPosArg -> '[ [ [-]nnn ] [,[L|R|C] ] [,[A] ] ]'
// width = max( nnn,ol_width, ( 300, textcomputed ), captioncomputed ) <= 720
// width = -nnn -> absolute value forced.

var captionWord='',useWidth='',useLCR='',useV='';
function TextPopCommon(mc,dotSizPosArg,DefaultCaption) {
  if ( isPrint && dotSizPosArg == 380 ) {
    window.status='Agenda data not shown on the Printable Page'; return false;
  };
  if ( suppressPop() ) { 
    window.status='Popup text is shown at the bottom of the Printable Page';
    return false;
  };

  captionWord=Captn[mc]?Captn[mc].replace(/^\([0-9]*\) /,''):DefaultCaption;
  useLCR=HAUTO; useV=VAUTO; suggestMinWidth=0; useWidth=0;
  var sizeArgFrags=new Array();
  sizeArgFrags=(dotSizPosArg+',,').split(',');
  for (xx=0;xx<=2;xx++){
    switch ( sizeArgFrags[xx] ) {
      case ("L"): useLCR=LEFT; break;
      case ("R"): useLCR=RIGHT; break;
      case ("C"): useLCR=CENTER; break;
      case ("A"): useV=ABOVE; break;
      default: if(parseInt(sizeArgFrags[xx]) ){
          suggestMinWidth=Math.abs( parseInt(sizeArgFrags[xx] ) );
          if( parseInt(sizeArgFrags[xx] ) < 0 ) useWidth=suggestMinWidth
        };
        break;
    };
  };
  captionWide=Math.floor( captionWord.length*9 ); // catch width before <center> wrap
  if( typeof cInfo != udf) captionWord='<center>'+captionWord+'</center>'
  if (useWidth) return true;

//ctx
  if( typeof cInfo != udf) ol_width=cd_width;
  textWide=Math.floor( 300+Mesage[mc].length/4 );
  useWidth=Math.min( 720,
    maxOf( suggestMinWidth, ol_width, textWide, captionWide ) );
// alert ( 'useWidth ('+useWidth+') = Math.min( 720,maxOf( suggestMinWidth ('+suggestMinWidth+'), ol_width ('+ol_width+'), textWide ('+textWide+'), captionWide ('+captionWide+') )' );
  return true;
};

// *StatusTag suppresses StatusBar auto prefix "A warning about the"
function WarningPop(mc,StatusTag) {
  if ( typeof arguments[2] != udf ) dotSizPosArg = arguments[2] ; else dotSizPosArg = '';
  if ( typeof Mesage[mc] == udf && typeof opener != udf && typeof opener.Mesage[mc] != udf ) {
    Mesage[mc] = opener.Mesage[mc];
    if ( typeof opener.Captn[mc] != udf ) Captn[mc] = opener.Captn[mc];
  }
  if ( ! isPrint && typeof Mesage[mc] == udf ) return;
  if (! TextPopCommon(mc,dotSizPosArg,'Warning')) return true;
  if ( Mesage[mc].indexOf('href=') > 0 ) StickArg=STICKY; else StickArg=999;
  overlib(Mesage[mc],CAPTION,captionWord,TEXTSIZE,2,useLCR,useV, WIDTH,useWidth, STATUS,(StatusTag.substr(0,1)!='*'?'A warning about the ':'')+StatusTag.replace(/^\*/,''),BGCOLOR,'#ff3333', FGCOLOR,'#ffc0c0',StickArg);
  return true;
};
function HintPop(mc,StatusTag) {
  if ( typeof arguments[2] != udf ) dotSizPosArg = arguments[2] ; else dotSizPosArg = '';
//  alert(arguments[0]+' x '+arguments[1]+' x '+arguments[2]+' x '+arguments[3])
  if ( typeof arguments[3] != udf ) targetFrame = arguments[3] ; else targetFrame = '';
  // 10/10/05 so rank can build a child, leaving the Mesage in opener. Child will find it.
  if ( typeof Mesage[mc] == udf && typeof opener != udf && typeof opener.Mesage[mc] != udf ) {
    Mesage[mc] = opener.Mesage[mc];
    if ( typeof opener.Captn[mc] != udf ) Captn[mc] = opener.Captn[mc];
  }
  if (  ! isPrint && typeof Mesage[mc] == udf ) return;
  if (! TextPopCommon(mc,dotSizPosArg,'For Your Information')) {
    return true;
  }
  if ( Mesage[mc].indexOf('href=') > 0 ){
    return HintStick(mc,StatusTag,dotSizPosArg,targetFrame);
  };
  if (targetFrame) {
    overlib(Mesage[mc],CAPTION,captionWord,FRAME,targetFrame,TEXTSIZE,2, useLCR,useV,WIDTH,useWidth,STATUS,StatusTag);
  } else {
    overlib(Mesage[mc],CAPTION,captionWord,TEXTSIZE,2, useLCR,useV,WIDTH,useWidth, STATUS,StatusTag);
  };
  return true;
};
function HintStick(mc,StatusTag) {
  if ( typeof arguments[2] != udf ) dotSizPosArg = arguments[2] ; else dotSizPosArg = '';
  if ( typeof arguments[3] != udf ) targetFrame = arguments[3] ; else targetFrame = '';
  if ( typeof Mesage[mc] == udf && typeof opener != udf && typeof opener.Mesage[mc] != udf ) {
    Mesage[mc] = opener.Mesage[mc];
    if ( typeof opener.Captn[mc] != udf ) Captn[mc] = opener.Captn[mc];
  }
  if (  ! isPrint && typeof Mesage[mc] == udf ) return;
  if (! TextPopCommon(mc,dotSizPosArg,'For Your Information')) {
    return true;
  };
  hangTime=1000*(15+Mesage[mc].length/40); // + (StickForever?999:0) ); StickForever=0;
  if (targetFrame) {
    overlib(Mesage[mc],CAPTION,captionWord,FRAME,targetFrame,TEXTSIZE,2, useLCR,useV,WIDTH,useWidth,STATUS,StatusTag,STICKY,TIMEOUT,hangTime);
  } else {
    overlib(Mesage[mc],CAPTION,captionWord,TEXTSIZE,2,useLCR,useV, WIDTH,useWidth, STATUS,StatusTag,STICKY,TIMEOUT,hangTime);
  };
  return true;
};

var cachedPix = new Array(), nextCache=0, RotPx=new Array(), dotRPX=0;
function cachePix(){
  if (typeof arguments[0] == 'object' ) AA=arguments[0]; else AA=arguments;
  for (cpx=0; cpx<AA.length; cpx++){
    cachedPix[nextCache] = new Image(); cachedPix[nextCache++].src = AA[cpx]
  };
};

function startRotatePix(pixA,pixId,seks,incrSeks) {
  cachePix(pixA); 
// array containing: 
//   ID for display, array of pic URLs, ptr to pic array,mseconds,increment msecs
  RotPx[dotRPX] = new Array(pixId,pixA,0,
                       seks*(seks<1000?1000:1),incrSeks*(incrSeks<1000?1000:1));
  rotatePix( dotRPX++ );
};

function rotatePix(idxRPX) {
  AA=RotPx[idxRPX];
  for (cpx=0; cpx < cachedPix.length ; cpx++){
    if (cachedPix[cpx].src.indexOf(AA[1][AA[2]].replace(/.*\//,'')) >= 0) {
      document.getElementById(AA[0]).src = cachedPix[cpx].src; break;
    };
  };  
  RotPx[idxRPX][2] = (AA[2]+1)%AA[1].length;
  RotPx[idxRPX][3] = AA[3]+AA[4];
  setTimeout( "rotatePix("+ idxRPX+")", AA[3] )
};

function OverPic(picURL,captionWord){
// alert(arguments[0]+' '+arguments[1]+' '+arguments[2])
  if ( isPrint ) { window.status='Popup pictures are not shown on the Printable Page'; return true;};
  CapSiz=1; useLCR=HAUTO; useV=VAUTO ; stickyarg=DUMMY;
  suggestMinWidth=50; suggestMinWidth = ''; 
  while(captionWord.charAt(0) == '+' ){
    captionWord = captionWord.substr(1,99) ; CapSiz++ ;
  };

  if ( typeof arguments[2] != udf ) dotSizPosArg = arguments[2] ; else dotSizPosArg = '';
  var sizeArgFrags=new Array();
  sizeArgFrags=(dotSizPosArg+',,,').split(',');
  for (xx=0;xx<=3;xx++){
// alert(dotSizPosArg+' '+sizeArgFrags[xx])
    switch ( sizeArgFrags[xx] ) {
      case ("L"): useLCR=LEFT; break;
      case ("R"): useLCR=RIGHT; break;
      case ("C"): useLCR=CENTER; break;
      case ("A"): useV=ABOVE; break;
      case ("s"): stickyarg=STICKY; break;
      default: if(parseInt(sizeArgFrags[xx]) ){
          suggestMinWidth=Math.abs( sizeArgFrags[xx] );
        };
        break;
    };
  };
  httoken=DUMMY; htval=DUMMY;
  for (cpx=0; cpx<cachedPix.length; cpx++){
    if ( cachedPix[cpx].src != picURL ) continue;
    suggestMinWidth = cachedPix[cpx].width
    httoken=HEIGHT; htval = cachedPix[cpx].height
  };

  statusWord = captionWord;
  if( statusWord.indexOf('<')>0 )
      statusWord=statusWord.substr(0,statusWord.indexOf('<'));
  if( typeof cInfo != udf){
    captionWord='<center>'+captionWord+'</center>';
  };
//  if ( stickyarg ) {
//    overlib('<img src='+picURL+' border=0>',CAPTION,captionWord,CAPTIONSIZE,CapSiz, useLCR,useV,STATUS,statusWord,WIDTH,suggestMinWidth,VAUTO,STICKY);
//    return true; };
  overlib('<img src='+picURL+' border=0>',CAPTION,captionWord,CAPTIONSIZE,CapSiz, useLCR,useV,STATUS,statusWord,WIDTH,suggestMinWidth, httoken,htval ,stickyarg );
  return true;
};

// Reversed logic !!
function suppressPop(){
  if ( typeof overlib == udf ) { window.status=window.defaultStatus; return true; };
  if ( isPrint && 
       ( typeof allowIsPrintPops == udf || ! allowIsPrintPops ) 
     ) { window.status=window.defaultStatus; return true; };
  return false;
};

function xnd() {
  if ( ! suppressPop() ) nd();
  window.status=window.defaultStatus;  return true ;
};

function Solid(strIn){ Stuffed='';
  for (u=0; u<=strIn.length; u+=1) {
    ch=strIn.charAt(u);
    if (ch == ' ' ) { Stuffed=Stuffed+'&nbsp;';} else { Stuffed=Stuffed+ch ;};
  };
  return Stuffed;
};

// Excess vars for use by lib/renewadm.
var mailerAddress='', mailerSubject='', mailerRedNote='', mailerFootNote='', mailerSenderName='', mailerSenderEmail='', mailerPagename='', mailernoThank='', mailernoCCme='', mailernoHtml='', mailerdeMinimus='', mailerBody='', mailernoSQ='';
function AltEmail(eAddress,eSubject){
  if (window.name == 'mailer') {
    alert('Sorry, you can not recursively email from the Email form itself. Use the "Send Email Now" button.');
    if ( preSubmit() ) document.mailForm.submit();
    return ;
  };
// for UR frog. see template.
  if (eAddress == 'LATER') eAddress = getEAddress( eAddress );
  if (eAddress == 'LATER') return 0;
// Normally, this fn() opens mailer.htm, and then sets vars in the child DOM via the WPop.xxx vars after the call to NewWd().  There are timing issues in IE local, and re-passing can not occur at reload of mailer.htm. So to be failsafe, mailer.htm will reach back to the opener DOM for the mailerXxxx vars if its own DOM vars are unset.
  mailerAddress=eAddress;
  mailerSubject=eSubject;
  mailerPagename=altCaption;
  mailerRedNote='';
// webmasterMailerRedNote is in main template for lib. forceMailerRedNote is for fut use. 3/28/06
  if (typeof forceMailerRedNote != udf && forceMailerRedNote ) { mailerRedNote=forceMailerRedNote;};
  if (typeof webmasterMailerRedNote != udf && webmasterMailerRedNote && eAddress.indexOf('webmaster') >= 0 ) { mailerRedNote=webmasterMailerRedNote;};
  if ( typeof arguments[2] != udf ) mailerRedNote=arguments[2];
  NewUrl=NxPg('mailer.htm');
  NewWd(NewUrl,'mailer4');
  WPop.SendTo = eAddress;
  WPop.SendSubj = eSubject;
  WPop.SendPagename = mailerPagename;
  WPop.SendRedNote=mailerRedNote;
  WPop.SendFootNote=mailerFootNote;
};

function NxPg(xx) {
  if(typeof WorkDir != udf && WorkDir ) return WorkDir+xx; else return xx;
};

function ValidateOpener(voArg){
  if( typeof opener == udf || opener == null ) return false;
  if( typeof opener.closed == udf || opener.closed ) return false;
  if( ! voArg ) return true;
  if( typeof opener.opener == udf || opener.opener == null ) return false;
  if( typeof opener.opener.closed == udf || opener.opener.closed ) return false;
  return true;
};

var openerIAM='',buttonTextMsg='',buttonStatusMsg='',buttonHREF='';
var pinkText='',pinkBox='';

function genPinkBox(){
// Set up button to return to search
  if (document.referrer.indexOf('picosearch') > 0 ) {
     openerIAM='searchLis';
     buttonStatusMsg= 'Return to the search results';
     buttonTextMsg= 'Return&nbsp;to<br>Search&nbsp;Results';
     buttonHREF= "javascript:ManageOpener('"+openerIAM+".htm')";
  };
// Set up button to return to opener
  if (
      self.name.substring(0,2) == '0k' &&
      ValidateOpener() &&
      typeof opener.location.href != udf &&
      opener.location.href != self.location.href &&
      typeof opener.myChildrenTopRightButton != udf &&
      opener.myChildrenTopRightButton &&
      typeof opener.myChildrenStatusLine != udf &&
      opener.myChildrenStatusLine
  ) { openerIAM=opener.iAm;
      buttonTextMsg=opener.myChildrenTopRightButton;
      buttonStatusMsg= opener.myChildrenStatusLine;
      buttonHREF= "javascript:ManageOpener('"+openerIAM+".htm')";
  };
// Set up button to return to Home // set by URL?H
// Overrides ToC, etc. // This is NOT a NewWd().
  if ( typeof ShowR2H != udf && ShowR2H ) {
      openerIAM='Home';
      buttonTextMsg='Return&nbsp;to Home&nbsp;Page';
      buttonStatusMsg= 'Return to Home Page';
      buttonHREF= "javascript:back(1)";
  };
// gen the basic contents msg - Common for all cases
  if( openerIAM && buttonStatusMsg && buttonTextMsg && buttonHREF ) {
         pinkText = '<a href="'+buttonHREF+'" '+
         'onMouseout="window.status=window.defaultStatus; return true;" '+
         'onMouseover="window.status=\''+buttonStatusMsg+'\';  return true;" '+
         'class=v10><font color=red><b>'+buttonTextMsg+'</b></font></a>';
  };
// If Local, fast call to web equivalent 
  if ( ! isWeb ) {
    goUrl=window.location.href.replace(/^.*\//,basURL+WorkDir.replace(/\.\./,''));
    pinkText += (pinkText?'<br>':'')+'<small>On&minus;line&nbsp;page&nbsp;'+
//      '<a href="'+goUrl+'" '+
//        'onMouseout="window.status=window.defaultStatus; return true;" '+
//        'onMouseover="window.status=\''+goUrl+'\'; return true;" '+
//        'class=v10><font color=red>here</font></a>&nbsp;'+
      '<a href="javascript:NewWd(\''+goUrl+'\',\'\')" '+
        'onMouseout="window.status=window.defaultStatus; return true;" '+
        'onMouseover="window.status=\''+goUrl+'\'; return true;" '+
        'class=v10><font color=red>new</font></a></small>';
  };

// Append addl stuff --31 var trButtonAddMsg='x'; (See 10t 'view as PDF/PrintInstr' or LHT readme.js) or --31 var backRefs = 'URL|URL..' (See LTA)
// NS can't handle. FF can.
  if ( typeof backRefs != udf && backRefs && ( ! ns6A || ffA ) ) {
    Mesage['backref']='The current page will open at the bottom of this page. Click again to hide it.'
    backRefA=new Array(); backRefA=backRefs.split('|');
    if (typeof trButtonAddMsg == udf ) trButtonAddMsg=''; 
    for (br=0; br<backRefA.length; br++){
      trButtonAddMsg+=(trButtonAddMsg?'<br>':'')+'<a href='+
      '"javascript:void(0)" onclick="divControl(-1,\'ifrm'+br+'\')" '+      
        'onmouseout="xnd()" onMouseover="return HintPop(\'backref\',\'old page\')">'+ '<small>Compare&nbsp;'+(br?'another':'to')+'&nbsp;current</small></a>';
    };
  };
    
  if( typeof trButtonAddMsg != udf && trButtonAddMsg ){
    pinkText += (pinkText?'<br>':'')+trButtonAddMsg;
  };
  if( typeof kookieOptionsMsg != udf && kookieOptionsMsg ){
    pinkText += (pinkText?'<br>':'')+kookieOptionsMsg;
    Captn['kOpt'] = 'Your Preferences'; Mesage['kOpt'] = makeOptionsOLmessageBody();
  };

// Wrap the table border
  pinkBox = '<table border=5 cellpadding=8 bgcolor=#ffc0c0>'+
       '<tr><td align=center class=v10><b>'+pinkText+'</b></td></tr></table>';
  return;
};

//<table>
//<tr>[26='<td><img UC></td>']
//    <td center><a status()><img BANNER></a>[57=sweet spot]
//      <br><span t16><b>12=Title</b></span></td>
//    <script>
//       BloBanner()[=<td><table>..</table></td>] // Siteindx+Whatsnew+picosearch
//AND/OR BloBanner()[=</tr></table> <table red on white><tr><td>DDMsg</td>]
//    </script>
//</tr>
//</table><hr>

// Position the box
// showtestDDM=1;
function BloBanner(){
  genPinkBox();
  if ( pinkText ) document.write(''+
    '<td width="5%" valign=center align=center>'+pinkBox+'</td>' ) ;
  if ( location.href.indexOf('/admin') >= 0 && typeof showtestDDM != udf && showtestDDM && typeof ddmtest != udf && ddmtest ) ddm=ddmtest;
// ddm= must be in--32 since ddms.js loads after --31
  if ( typeof ddm != udf && ddm && typeof ddmSuppress == udf ){
    document.write('</tr></table>'+
      '<table bgcolor="#ffffff" border=2 cellpadding=3 cellspacing=0 width="100%">'+
      '<tr><td align=center class=v12><font color=red><b>'+ddm+'</b></font></td>');
  };
  return;
};

function PinkBoxCell(vpos){
  genPinkBox();
  if ( ! pinkText ) return '';
  return '<td width="5%" valign='+(vpos?vpos:'center')+' align=center>'+pinkBox+'</td>';
};

var ddmTimeout=14000, DDMisActiveForKilling=0;
function BeloBanner(){
  if ( location.href.indexOf('/admin') >= 0 && typeof showtestDDM != udf && showtestDDM && typeof ddmtest != udf && ddmtest ) ddm=ddmtest;
  if ( typeof ddm != udf && ddm && typeof ddmSuppress == udf ){
    document.write(''+
      '<div id=bloban style="display:inline;"><table bgcolor="#ffffff" border=2 cellpadding=3 cellspacing=0 width="100%">'+
      '<tr><td align=center class=v12>'+
        '<font color=red><b>'+ddm+'</b></font>'+
      '</td></tr></table></div>'
    );
    DDMisActiveForKilling=1;
  };
  return;
};

// Make a floating box anywhere on the page
function DrawReturnBox(){
//  genPinkBox();
//  if ( pinkText ) document.write( pinkBox ) ;
  return;
};

//setupDivControl(uniquedivnamebase, 
//                ShowDivExtraArgs, 
//                PayloadDivExtraArgs'
//                PayloadStdTop [usually, table and cell start common to all divs on the page] )
//setupDivControlBot(uniquedivnamebase,  [ONLY if you need an addl "hide" link at the bottom of a long exansion.  Else blank.
//                PayloadStdBot  [ mirrors PayloadStdTop, for perfect close.]

//<a href="javascript:divControl(-2|-1|0|1,'idname[^auxidname]'[,'idname'[,'idname']])">word</a>
////   onmouseover="divControl(-1,'idname')" div toggle display/hide
// <a href="javascript:void(0)" 
//   onclick|onmouseover="divControl(1,'idname')" div force display
//   onclick|onmouseout="divControl(0,'idname')" div force hide unless timer running
//   onclick="divControl(-2,'idname')" > On click - if 10 second timer, then hide. else if displayed (by mouseover), then set 10 second timer
//<div id=auxidname align=left style="display:inline;"><a href="javascript:void(0)" onclick="divControl(-1,'idname^auxidname')">Show More</a>
//<div id=idname align=left style="display:none;">

function setupDivControl(divid, arg1, arg2,arg3){
  if (typeof suppressDivCtl != udf && suppressDivCtl){document.write(arg3); return;};
  document.write(
    '<div id='+divid+'aux style="display:inline;" '+arg1+'>'+
    '<a href="javascript:void(0)" '+
      'onclick="divControl(1,\''+divid+'^'+divid+'aux\')"'+
      '>Show More</a></div>'+
    '<div id='+divid+' style="display:none;" '+arg2+'>'+
    '<a href="javascript:void(0)" '+
      'onclick="divControl(0,\''+divid+'^'+divid+'aux\')"'+
      '><b><small>Hide</small></b></a>'+arg3);
// text </div> in main or use setupDivControlBot()
};
function setupDivControlBot(divid, arg1){
  if (typeof suppressDivCtl != udf && suppressDivCtl){document.write(arg1); return;};
  document.write(
    (divid?'<a href="javascript:void(0)" '+
      'onclick="divControl(0,\''+divid+'^'+divid+'aux\')" '+
      '><b><small>Hide</small></b></a>':'')+
      arg1+'</div>');
};

freezediv=0;
function divControl(actn) {
  for (xc=1; xc<arguments.length; xc++ ) {
    divOpen=arguments[xc].split('^')[0]
    divreword=(arguments[xc]+'^').split('^')[1]
    styl=document.getElementById(divOpen).style
    if ( actn == 1 ) styl.display = 'inline';
    if ( actn == 0 && ! freezediv ) styl.display = 'none';
    if ( actn == -1 ) {
      styl.display = ( styl.display=='inline'?'none':'inline' );
    };
    if ( actn == -2 ) {
      if ( freezediv ) styl.display = 'none';
      if ( styl.display=='inline' ) { freezediv=1; setTimeout('freezediv=0',10000) };
    };
    if ( divreword ) {
      wordz=document.getElementById(divreword).style
      wordz.display = ( styl.display=='inline'?'none':'inline' );
    };
  };
};
 
// If the opener exists, focus it. Else reopen it.
function ManageOpener( sURL ){
  if( ValidateOpener() &&
      typeof opener.location != udf &&
      typeof opener.location.href != udf &&
      opener.location.href != self.location.href
  ) { opener.focus();
      if ( opener.location.href.indexOf(sURL) < 0 ) opener.location.href=sURL;
  } else {
      NewWd( NxPg(sURL) ); self.close();
  };
};

function downDays(arg){
  nowYr=HolYr=nowJul.getFullYear(); holiD = new Date();
  holiD.setMonth(arg.split('-')[0]-1);holiD.setDate(arg.split('-')[1]);
  if( holiD.getTime() < nowJul.getTime() ) holiD.setYear(nowYr+1);
  return Math.round((holiD.getTime()-nowJul.getTime())/(24*60*60*1000))
};

function StatusThings() {
  switch ( toglv ) {
    case (1): AddlHdrMsg=''; libIPs=''
      if ( typeof loadStart != udf && typeof loadSecs != udf ){
        nowJul=new Date();var readSecs=Math.floor((nowJul.getTime()-loadStart)/1000);
        AddlHdrMsg = '\n\nPage Loaded in ' + loadSecs + ' seconds.'+
          '\nPage active for ' + readSecs + ' seconds.'+
          '\nnavigator.appName = '+navigator.appName+
          '\nnavigator.appVersion = '+navigator.appVersion+
          '\nnavigator.userAgent = '+navigator.userAgent+
          '\nnavigator.cookieEnabled = '+navigator.cookieEnabled+
          '\nnavigator.javaEnabled() = '+navigator.javaEnabled()+
          (typeof fileSerialNo != udf?'\nfileSerialNo = '+fileSerialNo:'')+
          '\nCookies are '+(isKookie?'':'NOT')+' available'+
          ((isKookie && typeof kkHistLength != udf && kkHistLength)?''+
            '\nYou have visited '+
            (kkHistLength>100?'more than 100':kkHistLength)+
            ' pages on this website.':'');
        if(typeof LibraryIP != udf) libIPs='\nLib IP = '+LibraryIP+'\nDetected IP = '+myIPis ;
//        if (isKookie) setKookie(pgBgKookieName, 0, 1 ); // obs release pgBG
      };
      window.alert( HdrMsg + AddlHdrMsg + libIPs ); break;
    case (2): if (isWeb) {CtrPop(iAm); break; } else toglv += 1;
    case (3): NewWd( NxPg('devstats.htm') ); break;
  };
  if (++toglv > 3 ) toglv=1;
};

var PxlWid='', PxlHt='';
if (ScWid){ PxlWid=300; PxlHt=500; } else { PxlWid=400; PxlHt=700; };
function CtrPop(Targ){
  if(WorkDir) {
    FPN=(isWeb?'':basURL)+myCgiAt.replace('ERROR','')+'admin/'
  } else {
    FPN=myCgiAt.replace('ERROR','');
  };
  wobj = window.open(FPN+'view1ctr.cgi?'+Targ+'+x+30','left',"scrollbars=yes,resizable=yes,left=300,width="+PxlWid+",top=20,height="+PxlHt );
  wobj.focus(); return;
};

cmdLnArgs4Char = location.search.replace(/|.*$/,'').substring(1,4)+' '; var isFwd=0, isExpress=0, mySpecial=0;
if ( typeof forcedBG == udf ) var forcedBG=0;
if(cmdLnArgs4Char.replace(/ /g,'') == 'F') { // and no following chars.  Causes trouble in coc BusUpdate.
  newURL=location.href.replace(/\?.*$/,''); isFwd=1;
  setTimeout("window.location.href=newURL", 20000);
};
if(cmdLnArgs4Char.indexOf('X')>=0) isExpress=1;
if(cmdLnArgs4Char.indexOf('p')>=0) NoPrintableAdvice=1;
if(cmdLnArgs4Char.indexOf('H')>=0) ShowR2H=1;
if(cmdLnArgs4Char.indexOf('M')>=0) LibClosed=1;
if(cmdLnArgs4Char.indexOf('D')>=0) mySpecial=1;
if(cmdLnArgs4Char.indexOf('D2')>=0) mySpecial=2;
if( window.name.indexOf('noBgSubst')<0 ) {
  gPic=''
  if ( cmdLnArgs4Char.indexOf('G')>=0 ) gPic='picts/grid1000x1000.gif'
// ==0 blocks news.cgi/agxxx
  if ( cmdLnArgs4Char.indexOf('g')==0 ) gPic='picts/graphpaper.gif'
  if ( gPic ) {
    if ( location.href.indexOf('/cgi-local') >= 0 ) gPic='..'+WorkDir+gpic;
    if ( location.href.indexOf('/admin') >= 0 ) gPic='../'+gpic;
    document.write("<style type='text/css'>body{background:url('"+gPic+"') scroll repeat;}</style>");
    forcedBG=1;
  };
};

var dotSnoBG = '';
// var snoBG="/lht/picts/snoday.gif";
if ( ! forcedBG && ( ( typeof snoBG != udf && snoBG ) || ( typeof snoBGtest != udf && snoBGtest ) ) ) {
  if (isWeb) {
    dotSnoBG=snoBG;
    if ( location.href.indexOf('/admin') >= 0 && typeof showtestBG != udf && showtestBG && typeof snoBGtest != udf && snoBGtest ) dotSnoBG=snoBGtest;
  } else {
   dotSnoBG=snoBG.replace(/.*\/picts/,'picts');
   if ( location.href.indexOf('/admin') >= 0 && typeof showtestBG != udf && showtestBG && typeof snoBGtest != udf && snoBGtest ) dotSnoBG=snoBGtest.replace(/.*\/picts/,'picts');
  };
  if(dotSnoBG) forcedBG=1;
// The actual execution of alternate BG is through function snoBGlate() called at the end of StartJumpTop().  This delays the start of the (download and) 10-cycle repeat until after all else on the page is displayed.  When the start was here, the image downloaded and cycled before the whole (complex) page could be downloaded and rendered via modem.
};

function snoBGlate(){
  document.write("<style type='text/css'>body{background:url("+dotSnoBG+") scroll repeat;}</style>");
};

BgDate=new Date(); RndMod=500;
// *1.2 causes clock bg 1 out of 6 times. <1 suppresses clock bg.
bgRdm = LibClosed + Math.floor( BgDate.valueOf()%(RndMod*.99) /  RndMod ) ;

function AgendaStatus(mc,localList,localTitle){
  Captn[mc] = localTitle+' Meeting Agenda Status';
  if ( ! localList ) { Mesage[mc] = 'unknown'; return true; };
  localArray=new Array(); localArray=localList.split('|');
  Mesage[mc] = 'The agenda for '+localArray[0]+' at '+localArray[1]+' is on the website. Click the link.';
  return true ;
};

var WDtested=0, WingdingOK;
// Initial call in setsizes().  If called from fn wingding, and if call is inside the "right sidebar" table, and if Firefox, the outerright sidebar table goes to 100% width.
function guessFontAvailability (desiredFont) {
  if (ie4A) return true;
  teststring='abcdefghijklABCDEFGHIJKL'

  var qFontX = document.createElement ('span');
  var qFont0 = document.createElement ('span');
  qFontX.style.fontSize = qFont0.style.fontSize = '100px';
  qFontX.style.visibility = qFont0.style.visibility = 'hidden';

  qFontX.innerHTML = '<font face='+desiredFont+'>'+teststring+'</font>';
  qFont0.innerHTML = teststring;
  document.body.appendChild (qFontX);
  document.body.appendChild (qFont0);

  available = ! (qFontX.offsetWidth == qFont0.offsetWidth && qFontX.offsetHeight == qFont0.offsetHeight) 
// alert( 'fn '+qFontX.style.fontFamily+'<br>'+qFontX.offsetWidth +' '+qFont0.offsetWidth +' '+qFontX.offsetHeight+' '+ qFont0.offsetHeight+' '+available)
  qFontX.parentNode.removeChild (qFontX);
  qFont0.parentNode.removeChild (qFont0);
  return available;
}

// retflag 0=print now. 1=return it
function Wingding(a,retFlag){
// Normal call to GuessFont is in setsizes().  This call is obs.  If called from fn wingding, and if call is inside the "right sidebar" table, and if Firefox, the outerright sidebar table goes to 100% width.
  if(! WDtested) { WingdingOK=guessFontAvailability ('wingdings');  WDtested=1; };
  imageILOwingding=''; suppressOnPrint=0;
  switch (a) {
    case ('mouse'): wChar='8'; imageILOwingding='mouse14.gif'; suppressOnPrint=1; break ;
    case ('mouse12'): wChar='8'; imageILOwingding='mouse12.gif'; suppressOnPrint=1; break ;
    case ('clock'): wChar='<span class=h20>º</span>';   imageILOwingding='pktwatch.gif'; break ;
//    case ('rose'): wChar='¯'; imageILOwingding='rose.gix'; break ;
    case ('env'): wChar='*'; break ;
    case ('check'): wChar='&#254;'; break ; // þ causes unterm string error in IE
    case ('PC'): wChar=':'; break ;
    case ('cross'): wChar='U'; break;
//    case ('aleft'): wChar='ï'; break ; // 4 lines each cause unterm-string error in IE6 when wndo-popup-wndo (see police-complaint)
//    case ('aright'): wChar='ð'; break ;
//    case ('aup'): wChar='ñ'; break ;
//    case ('adown'): wChar='ò'; break ;
    default: return;
  };
  if (! WingdingOK && ! imageILOwingding ) return;
  if ( isPrint && suppressOnPrint ) return;

  if ( WingdingOK ) {
    wdx='<font face=wingdings>'+wChar+'</font>';
  } else {
    wdx='<img src='+pixPath+imageILOwingding+' border=0>' ;
  };
  if ( retFlag == 1 ){ return wdx; } else { document.write( wdx ); };
};

var maxUpdate='';
// before, mid and after noxx.js load
// <script type="text/javascript">maxUPD(upDate);</script>
function maxUPD(updin) {
// alert( 'in '+maxUpdate+' x '+updin )
  date2=new Date(updin.replace(/&nbsp;/g,' ')); date2J = date2.getTime()
  if (maxUpdate){ 
    date1=new Date(maxUpdate); date1J = date1.getTime();
    if ( date1J > date2J ) date2 = date1 ;
  }
  maxUpdate=upDate=date2.toString().split(' ')[1]+' '+date2.getDate()+', '+date2.getFullYear()
  return;
};

var getAdobeLink = '<a href="javascript:NewWd(\'http://www.adobe.com/products/acrobat/alternate.html\', \'loadAcrobat\')" onMouseout="window.status=window.defaultStatus; return true;" onMouseover="window.status=\'Abobe Acrobat download site.\'; return true;"><img src="'+pixPath+'getacro.gif" border="1" align=right></a>';
var getAdobeWords = 'The PDF file requires the Adobe Acrobat Reader.&nbsp; Click the logo to download the current version.';
var getAdobe = getAdobeLink+getAdobeWords;

function packageAdobe(pdfFileName,preTag,anchorText,pdfFileSize,useYellow){
  document.write(preTag+'<a href="javascript:NewWd(\''+pdfFileName+'.pdf\',\''+pdfFileName+'\')" onMouseover="return HintPop(\''+pdfFileName+'\',\''+anchorText+'\')" '+
  'onmouseout="xnd()"'+( (typeof useYellow != udf && useYellow)?' class=h':'')+'>'+anchorText+'</a>')
  Captn[pdfFileName] = anchorText;
  Mesage[pdfFileName] = stdAdobe( pdfFileName+'.pdf', pdfFileName, ( typeof pdfFileSize != udf && pdfFileSize )?'This is a '+pdfFileSize+' .pdf document.':'');
};

function stdAdobe(url,logID,text){
  return getAdobeLink+text+'&nbsp;'+getAdobeWords+'<ul><li><a href="javascript:NewWd(\''+url+'\', \''+logID+'\')"'+
  '>Click here</a> to open the file in a new window and view it.'+
  '<li><a href='+url+'>Right-click here</a>, then "save-link/target-as" to download and save the file for later viewing.'+
  '</ul>&nbsp;';
};

var rtfWords = 'The RTF file requires Microsoft Word or an alternative application capable of displaying a Rich Text Format document.';
function stdRtf(url,logID,text){return stdDoc(url,logID,text,rtfWords)};

var docWords = 'The DOC file requires Microsoft Word or an alternative application capable of displaying a Word document.';

function packageDoc(docFileName,preTag,anchorText,docFileSize,useYellow){
  document.write(preTag+'<a href="javascript:NewWd(\''+docFileName+'.doc\',\''+docFileName+'\')" onMouseover="return HintPop(\''+docFileName+'\',\''+anchorText+'\')" '+
  'onmouseout="xnd()"'+( (typeof useYellow != udf && useYellow)?' class=h':'')+'>'+anchorText+'</a>')
  Captn[docFileName] = anchorText;
  Mesage[docFileName] = stdDoc( docFileName+'.doc', docFileName, ( typeof docFileSize != udf && docFileSize )?'This is a '+docFileSize+' .doc document.':'');
};

function stdDoc(url,logID,text){
  dotWords = docWords;
  if ( typeof arguments[3] != udf ) dotWords = arguments[3];
  return text+'&nbsp;'+dotWords+'<ul><li><a href="javascript:NewWd(\''+url+'\', \''+logID+'\')"'+
  '>Click here</a> to open the file in a new window and view it.'+
  '<li><a href='+url+'>Right-click here</a>, then "save-link/target-as" to download and save the file for later viewing.'+
  '</ul>&nbsp;';
};

var pptWords = 'The PPT file requires Microsoft PowerPoint&reg or an alternative application capable of displaying a PowerPoint&reg document.';

function packagePpt(pptFileName,preTag,anchorText,pptFileSize,useYellow){
  document.write(preTag+'<a href="javascript:NewWd(\''+pptFileName+'.ppt\',\''+pptFileName+'\')" onMouseover="return HintPop(\''+pptFileName+'\',\''+anchorText+'\')" '+
  'onmouseout="xnd()"'+( (typeof useYellow != udf && useYellow)?' class=h':'')+'>'+anchorText+'</a>')
  Captn[pptFileName] = anchorText;
  Mesage[pptFileName] = stdPpt( pptFileName+'.ppt', pptFileName, ( typeof pptFileSize != udf && pptFileSize )?'This is a '+pptFileSize+' .ppt document.':'');
};

function stdPpt(url,logID,text){
  dotWords = pptWords;
  if ( typeof arguments[3] != udf ) pptWords = arguments[3];
  return text+'&nbsp;'+pptWords+'<ul><li><a href="javascript:NewWd(\''+url+'\', \''+logID+'\')"'+
  '>Click here</a> to open the file in a new window and view it.'+
  '<li><a href='+url+'>Right-click here</a>, then "save-link/target-as" to download and save the file for later viewing.'+
  '</ul>&nbsp;';
};

// Jumptop is started from setSizes()

// TopPhraseColor is set black in std.css. Overwrite as reqd.
// for mm4, overwrite to white in main
// For RankSampler individual pages set TopPhraseColor=red for use here
// For minutes, also set red, so it is visible over left margin text.
if (location.href.indexOf('/min/') > 0) TopPhraseColor='red';
// recursive doc.write screws up recheck child.  Don't write this style call unless req'd.
if ( typeof TopPhraseColor != udf && TopPhraseColor != 'black' ) {
  document.write('<style type="text/css">.r2T { font-family:Haettenschweiler,Arial Narrow,Helvetica,Arial; font-size:12pt; color:'+TopPhraseColor+'; text-decoration:none; }</style>');
};
var TopPhrase="<nobr>Return to Top</nobr>"
var TopLink='<a href="javascript:window.scrollTo(0,0)" onmouseover="window.status=\'\';return true;" class=r2T>'+TopPhrase+'</a>';

// new window in recheck reports udf undefined in next typeof statement.  This is a bandage. 11/13/07
if (typeof udf == 'undefined') var udf='undefined';
// responds to URL?H and change the basic message. Used in djs/home in links to digression pages, so they come back to home.
if ( typeof ShowR2H != udf && ShowR2H ) {
  TopLink += '<br><a href="javascript:back(1)" onmouseover="window.status=\'\';return true;" class=r2T><nobr>Return to Home Page</nobr></a>';
};

if ( typeof MenuItems == udf ) var MenuItems = 10;
var BotOfMenu=5, ShowOLonce=1;

function StartJumpTop(){
  if (isPrint || typeof NoJumpTop != udf) return;
  if (ie4A||ns6A) document.write('<span id="TopSpan" style="position:absolute; top:-300; z-index:100" >foo</span>');
  if (ie4A) window.onload=TopTriggerIE4;
  if (ns6A) window.onload=TopTriggerNS6;
  if (ie4A||ns6A) window.onresize=new Function("window.location.reload()");
  if (ns4A) window.onload=TopTriggerNS4;
  // override these in main, nomenu, nonuthin
  defaultMenuSpacing=17 ; defaultLogoAllow=145;
  if ( typeof menuSpacing == udf) menuSpacing=defaultMenuSpacing;
  if ( typeof logoAllow == udf) logoAllow=defaultLogoAllow;
  BotOfMenu = MenuItems*menuSpacing+logoAllow;
  CxLink= (( typeof r2topImg != udf && r2topImg)?(r2topImg+'<br>'):'')+TopLink;
  if( typeof dotSnoBG != udf && dotSnoBG ) snoBGlate();
};

function ShowDefaultPopupOnce(XoffS,YoffS){
// ctx
  if (typeof showingsticky != udf) oshowingsticky=showingsticky;
  if ( typeof oshowingsticky == udf && typeof o3_showingsticky == udf ) return false; // nonothing pages do not load overlib.
  if ( (typeof oshowingsticky != udf && oshowingsticky) ||
       (typeof o3_showingsticky != udf && o3_showingsticky) ) return true;
  if (! ShowOLonce || typeof gotPops == udf || ! gotPops ) return false;
  if (typeof initPopPhrase == udf ) {
    initPopPhrase='Mouseover the yellow highlights for more information'; };
  overlib(initPopPhrase, STICKY, TIMEOUT,8000,FGCOLOR,"yellow", FIXX, XoffS+3, FIXY, YoffS-70,WIDTH,150 );
  ShowOLonce=0; return true;
};

var TopObj='';
//functions for NS4
function TopTriggerNS4(){
  TopObj=new Layer(1005); TopObj.left=-300; TopObj.visibility="hidden";
  TopObj.document.write(CxLink); TopObj.document.close();
  setTimeout("window.onresize=regenerate",400);
  startstatic=setInterval("TopPosSetNS4()",500) ;
  onloadFinal();
};
function regenerate(){ window.location.reload(); };
function TopPosSetNS4(){
  TopObj.left=pageXOffset+9; // window.innerWidth-TopObj.document.width-28
  TopObj.top=pageYOffset+window.innerHeight-TopObj.document.height-50
  if ( ShowDefaultPopupOnce(pageXOffset,window.innerHeight) || (BotOfMenu > TopObj.top) || ! pageYOffset ){ TopObj.visibility="hidden"; return;};
  TopObj.visibility="show"
  if(! isWeb && toglv>1) {
    DiagNS4=CxLink+'<br>Ct:'+MenuItems+'_MBot:'+BotOfMenu+
      '_YOff:'+pageYOffset+'_InHt:'+window.innerHeight;
    TopObj.document.write(diagNS4); TopObj.document.close();
  };
};

//functions for IE4
function TopTriggerIE4(){
  TopObj=document.getElementById("TopSpan");
  TopObj.innerHTML=CxLink
  ShowDefaultPopupOnce(document.body.scrollLeft,document.body.clientHeight)
  window.onscroll=TopPosSetIE4;
  if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.left=document.body.scrollLeft+9;
  onloadFinal();
};

function TopPosSetIE4(){
  PosY=document.body.scrollTop+document.body.clientHeight-TopObj.offsetHeight-50;
  TopObj.style.top=PosY;
  TopObj.style.left=document.body.scrollLeft+9;
// scrollKill used by Lib.  Transparent overlay is killed when page scrolled off-normal (one-time for reopening)
  if (document.body.scrollTop && typeof scrollKill != udf )scrollKill.style.visibility="hidden";
  if ( (BotOfMenu > PosY ) || ! document.body.scrollTop ){
    TopObj.style.visibility="hidden"; 
    if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.visibility="visible";
    return;
  } else {
    TopObj.style.visibility="visible";
    if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.visibility="hidden";
  };
  if(! isWeb && toglv>1) {
    TopObj.innerHTML=CxLink+'<br>Ct:'+MenuItems+'_MBot:'+BotOfMenu+
    '_ScrlT:'+document.body.scrollTop+'_ClHt:'+document.body.clientHeight;
  };
};

//functions for NS6
function TopTriggerNS6(){
  TopObj=document.getElementById("TopSpan");
  TopObj.innerHTML=CxLink;
  ShowDefaultPopupOnce(pageXOffset, innerHeight);
  if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.left=pageXOffset+9;
  startstatic=setInterval("TopPosSetNS6()",500);
  onloadFinal();
};
function TopPosSetNS6(){
  PosY=pageYOffset+innerHeight-TopObj.offsetHeight-50;
  TopObj.style.top=PosY;
  TopObj.style.left=pageXOffset+9;
// scrollKill used by Lib.  Transparent overlay is killed when page scrolled off-normal (one-time for reopening)
  if (pageYOffset && typeof scrollKill != udf )scrollKill.style.visibility="hidden";
  if ( (BotOfMenu > PosY ) || ! pageYOffset ){
    TopObj.style.visibility="hidden"; 
    if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.visibility="visible";
    return;
  } else {
    TopObj.style.visibility="visible";
    if ( typeof xMenuItemObj != udf ) xMenuItemObj.style.visibility="hidden";
  };
  if(! isWeb && toglv>1) {
    TopObj.innerHTML=CxLink+'<br>Ct:'+MenuItems+'_MBot:'+BotOfMenu+
    '_YOff:'+pageYOffset+'_InHt:'+innerHeight;
  };
};

// here, because the minutes.htm do not load tcminlst.js. // NOT USED
function referPDF(){
  tc8=location.href.replace(/.*tc/,'tc').replace(/\..*/,'');
  if (tc8.substr(0,2) != 'tc') return;
  document.write('<form><div align=right class=v8><input type=button name=foo value="View these minutes in original format as a PFD document." onclick="location.href=\''+tc8+'.pdf\'">'+(isWeb?'<img src="/cgi-local/pegstd.cgi?'+tc8+'" alt="" width=1 height=1 border=0>':'')+'</div></form>');
};

function stuffIframe(iframeList){
  if ( ! iframeList ) return;
  if ( ns6A && ! ffA ) return; // NS can't handle. FF can.
  iframeA=new Array(); iframeA=iframeList.split('|');
  document.write ('<table width=90% align=right border=0><tr><td>');
  for (br=0; br<iframeA.length; br++){
    ifHt=(iframeA[br]+'^').split('^')[1];
    ifHt=ifHt?ifHt:200;
    document.write(
       '<div id=ifrm'+br+' align=right style="display:none;">'+
       '<center><a href="javascript:void(0)" onclick="divControl(-1,\'ifrm'+br+'\')">'+
        '<b>HIDE</a> '+iframeA[br].split('^')[0]+'</b></center>'+
        '<iframe width="100%" height='+ifHt+' scrolling="yes" src="'+iframeA[br].split('^')[0]+'"></iframe>'+
      '</div>'
    );
  };
  document.write('</td></tr></table>')
};

// http://www.mattkruse.com/javascript/

// if(!ddm)ddm='GRAND OPENING CEREMONY. Today. 1:00 PM.'
