/* Module itd.js - JavaScript 1.5

IDWD Global JavaScript parameters and functions

©1999- InnoTech Dynamics Web Design®
  http://idwd.vantonder.net
  E-mail: itdwd at vantonder dot net

Created : 1999
Most recent updates:
 2008-05-08
 2009-05-20
 2009-06-17
*/

/* Initialisation and variable definitions:
   Executed when a page is loaded */

var count;
var docId;
var levInx;
var tmp;
var txtInx;
var txtInx2;
//var undefined;
var wrtStr;
var yrUpd;

//* Character Codes

var nbsp = String.fromCharCode(160);       // non-breaking space, U+00A0
var ncopy = String.fromCharCode(169);      // © U+00AE
var nreg = String.fromCharCode(174);       // ® U+00A9
var ndash = String.fromCharCode(8211);     // – U+2013
var mdash = String.fromCharCode(8212);     // — U+2014
var ntrade = String.fromCharCode(8482);    // ™ U+2122
var nradic = String.fromCharCode(8730);    // square root U+221A


/// Time

var now = new Date();
var yrNow = now.getFullYear().toString();
var dteCrt = yrNow;
var dteUpd = dteCrt;
var msDay = 24 * 60 * 60 * 1000;

var dagNaam = ["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"];
var dayName = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var maandNaam = ["", "Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"];
var monthName = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];


function TimeISO(TimeIn, Secs, Cmpct) {
/*
 Time in ISO standard format: YYYY-MM-DDTHH:mm:ss+HH:mm
 (toUTCString() - http header format: Sun, 06 Nov 1994 08:49:37 UTC)

Updates:
 2006-12-16
 2006-12-22
 2007-02-24
*/

  var year;
  var month;
  var day;
  var hour;
  var minute;
  var second;
  var fracsec;
  var timeDiffUTC;
  var timeDiffHr;
  var timeDiffMn;
  var timeDiffSgn;

  var spcrDt = "-";
  var spcrTm = ":";
  if (Cmpct) {
    spcrDt = "";
    spcrTm = "";
  }
  year = TimeIn.getFullYear();
  month = TimeIn.getMonth() + 1;
  day = TimeIn.getDate();
  hour = TimeIn.getHours();
  minute = TimeIn.getMinutes();
  second = TimeIn.getSeconds();
  fracsec = TimeIn.getMilliseconds() / 10;
  fracsec = Math.floor(fracsec);
  if (fracsec < 10) {
    fracsec = "0" + fracsec;
  }
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  if (hour < 10) {
    hour = "0" + hour;
  }
  if (minute < 10) {
    minute = "0" + minute;
  }
  if (second < 10) {
    second = "0" + second;
  }
  timeDiffUTC = TimeIn.getTimezoneOffset();
  timeDiffSgn = 1;
  if (timeDiffUTC < 0) {
    timeDiffSgn = -1;
  }
  timeDiffUTC = timeDiffUTC * timeDiffSgn;
  timeDiffHr = Math.floor(timeDiffUTC / 60);
  timeDiffMn = timeDiffUTC - timeDiffHr * 60;
  if (timeDiffHr < 10) {
    timeDiffHr = "0" + timeDiffHr;
  }
  if (timeDiffMn < 10) {
    timeDiffMn = "0" + timeDiffMn;
  }
  if (timeDiffSgn == 1) {
    timeDiffSgn = "-";
  } else {
    timeDiffSgn = "+";
  }
  var fmtTime = year + spcrDt + month + spcrDt + day;
  tmp = " ";
  if (Secs == "T" || Secs == "sc" || Secs == "ms") {
    tmp = "T";
  }
  fmtTime = fmtTime + tmp + hour + spcrTm + minute;
  if (Secs == "sc" || Secs == "ms") {
    fmtTime = fmtTime + spcrTm + second;
  }
  if (Secs == "ms") {
    fmtTime = fmtTime + "," + fracsec;
  }
  tmp = "";
  fmtTime = fmtTime + tmp + timeDiffSgn + timeDiffHr + spcrTm + timeDiffMn;
  return fmtTime;
}
//** end TimeISO


/// Browser

function BrowserCheck() {
/*
 v1: 2004-01-27
Updates:
 2005-03-31
 2006-03-19
 2009-05-20
*/

  var b = navigator.appName;
  if (b == "Netscape") {
    this.b = "ns";
    this.v = parseInt(navigator.appVersion, 10);
    this.nsOk = (this.b == "ns" && this.v >= 5);
    this.nsMin = (this.b == "ns" && this.v >= 5);
  } else {
    if (b.indexOf("Internet Explorer") > -1) {
      this.b = "ie";
      this.v = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE") + 5));
      this.ieOk = (this.b == "ie" && this.v >= 6);
      this.ieMin = (this.b == "ie" && this.v >= 4);
    } else {
      this.b = b;
    }
  }

  this.dom = ((document.createRange &&
   (document.createRange().createContextualFragment)) ? true : false);

  this.Ok = this.nsOk || this.ieOk || this.b == b;
  this.Min = this.nsMin || this.ieMin || this.b == b;

  var ua = navigator.userAgent.toLowerCase();
  if (ua.indexOf("win") > -1) {
    this.platform = "win32";
  } else {
    if (ua.indexOf("mac") > -1) {
      this.platform = "mac";
    } else {
      this.platform = "other";
    }
  }
}
//** end BrowserCheck


// Automatically create the "brwsrIs" object
var brwsrIs = new BrowserCheck();
var brwsrIsOk = brwsrIs.Ok;
var brwsrIsMin = brwsrIs.Min;
var brwsrNme = brwsrIs.b;
var brwsrVer = brwsrIs.v;
var brwsrIsIE = brwsrNme == "ie" ? true : false;

///-end- Browser


/// Viewport

var rsltnRat = screen.width / 1024;
var srclBr;
var srclBrIE = 20;
var srclBrOthr = 16;
if (navigator.userAgent.indexOf("MSIE") > -1) {
  srclBr = srclBrIE;
} else {
  srclBr = srclBrOthr;
}
var wndwHt;
var wndwHtUsbl;
var wndwWd;
var wndwWdUsbl;

function wndwSize() {
/* Get window internal dimensions and scroll bar width
 2006-04-10
*/

  wndwWd = 0;
  wndwHt = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    wndwWd = window.innerWidth;
    wndwHt = window.innerHeight;
  } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    //IE 6+ in 'standards compliant mode'
    wndwWd = document.documentElement.clientWidth;
    wndwHt = document.documentElement.clientHeight;
  } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
    //IE 4 compatible
    wndwWd = document.body.clientWidth;
    wndwHt = document.body.clientHeight;
  }
  wndwWdUsbl = wndwWd - srclBr;
  wndwHtUsbl = wndwHt - srclBr;
}
//** end wndwSize

wndwSize();

///-end- Viewport


/// This document

var docTitle = document.title;
var url = document.URL;
var isXhtml = false;
var isHtml401 = false;

if (document.doctype !== null) {
  if (document.doctype.publicId.toLowerCase().indexOf("xhtml") > -1) {
    isXhtml = true;
  }
  else if (document.doctype.publicId.toLowerCase().indexOf("html 4.01") > -1) {
    isHtml401 = true;
  }
} else {
  //brwsrIsIE (not defined in standard for html docs)
}

var lngAf = document.body && document.body.lang &&
      (document.body.lang.toLowerCase() == "af") ? true : false;

var bdAnchClr;
var bdBgClr;
var bdBgImg;
var bdClr;
var bdEl = document.getElementsByTagName("body");

if (bdEl[0] === undefined) {
  isFrmset = true;
} else {
  isFrmset = false;
  if (navigator.appName.indexOf("Microsoft") != -1) {
    bdClr = bdEl[0].currentStyle.color;
    bdBgClr = bdEl[0].currentStyle.backgroundColor;
    bdBgImg = bdEl[0].currentStyle.backgroundImage;
  } else {
    bdClr = window.getComputedStyle(bdEl[0], null).color;
    bdBgClr = document.defaultView.getComputedStyle(bdEl[0], null).backgroundColor;
    bdBgImg = document.defaultView.getComputedStyle(bdEl[0], null).backgroundImage;
  }
}

if (document.body)
{
  document.write('<a></a>');  //dummy anchor to determine anchor text colour
}
var anchEl = document.getElementsByTagName("a");
if (anchEl[0] !== undefined) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    bdAnchClr = anchEl[0].currentStyle.color;
  } else {
    bdAnchClr = window.getComputedStyle(anchEl[0], null).color;
  }
}

var bdMgLft;
var bdMgLftXtr = 0;
var bdMgRgt;
var bdWd;
var bdWdEm;
var cntMg;
var cntWd;
var elmCntnt;
var elmNav;
var navWd;

function em2px() {
/* em size in pixels
 2007-04-08
*/

  var eDmy = document.createElement("div");
  eDmy.setAttribute("id", "divDmy");
  document.body.appendChild(eDmy);
  eDmy.style.visibility = "hidden";
  eDmy.style.position = "absolute";
  eDmy.style.left = "1em";
  eDmy.style.top = "1em";
  var empx = eDmy.offsetLeft;
  document.body.removeChild(eDmy);
  return empx;
}
//** end em2px


var emSzPx = em2px();
var bdJstfy = "ctr";
var bdWdTgt = 62;
var bdwdPrt = 44;

function bdyWdth() {
/* Set body width
 2006-06-11
Updates:
 2006-06-11
 2007-04-08
 2009-06-17
*/

  if (bdJstfy == "prt") {
    bdWd = emSzPx * bdwdPrt;
  } else {
    bdWd = emSzPx * bdWdTgt;
  }
  if (bdWd > wndwWdUsbl) {
    //var diff = Math.ceil((bdWd - wndwWdUsbl) / emSzPx); alert(diff);
    //if (diff > 0.25 * bdWdEm) diff = Math.ceil(0.25 * bdWdEm);
    var frc = (bdWd - wndwWdUsbl) / bdWdTgt; //alert(frc);
    if (frc > 0.25) {frc = 0.25;}
    bdWdEm = Math.floor(bdWdTgt * (1 - frc));
    bdWd = bdWdEm * emSzPx;  //alert(bdWdEm);
  }
  document.body.style.width = bdWd + "px";
}
//** end bdyWdth


function pgMgns() {
/* Adjust page margins according to window width
 2006-04-10
Updates:
 2006-06-14
 2009-05-19
 2009-06-17
*/
  if (bdJstfy == "ctr") {
    tmp = (wndwWdUsbl - bdWdEm * emSzPx - bdMgLftXtr) / 2 + bdMgLftXtr;
    bdMgLft = Math.floor(Math.max(emSzPx / 2 + bdMgLftXtr, Math.max(tmp, emSzPx / 2 + bdMgLftXtr)));
  } else if (bdJstfy == "lft") {
    bdMgLft = emSzPx * 2;
  } else if (bdJstfy == "prt") {
    bdMgLft = 0;
    if (brwsrIsIE) {
      bdMgLft = emSzPx * 2;
    } else {
      bdMgLft = emSzPx * 2;
    }
  } else {
    bdMgLft = 0;
  }
  document.body.style.marginLeft = bdMgLft + "px";
  bdMgRgt = Math.floor(Math.max(emSzPx / 2, wndwWdUsbl - bdMgLft - bdWd));
  document.body.style.marginRight = bdMgRgt + "px";
}
//** end pgMgns

///-end- This document


//// Document file name and folder structure

var lvlSep = "/";
var RtPred = "//";    // assume web server

if (url.substring(5, 8) == "///") {
  RtPred = "///";    //Mozilla, local drive
} else {
  if (url.substring(0, 7) == "file://") {
    lvlSep = "\\";    //One backslash, escaped: IE, local drive
  } else {
    if (url.indexOf("mk:@MSITStore:") > -1) {
      RtPred = "Store:";    // windows .CHM Compressed Help Module
    }
  }
}

/// File name and last folder name

var famBrnch = [];
var famRltv = [];
var nmePrts = [];

tmp = location.pathname;
var begD;
var begF;
var len;

begF = tmp.lastIndexOf("/") + 1;
len = tmp.lastIndexOf(".") - begF;
nmePrts[4] = tmp.substr(begF, len);
begD = tmp.lastIndexOf("/", begF - 2) + 1;
len = begF - begD - 1;
nmePrts[3] = tmp.substr(begD, len);
nmePrts[5] = nmePrts[3] + "-" + nmePrts[4];

///-end- Document file name and folder structure


/// IDWD Webs
var WebSvr = "http://idwd.vantonder.net/";
var EMail = "itdwd at vantonder dot net";
var svrRts = [];
var svrRt;

var ctxContext = "This";
var ctxLinks = "Links";
var ctxPortal = "Portal";
var ctxPortalTip = "Site home page";
var chptr = {c: "Chapter", p: "Part", s: "Lesson"};
var chNum;
var chTyp;

var msgPgd = "Page design";
var msgBy = " by ";
var msgCrt = "Created";
var msgEml = "E-Mail";
var msgRghts = "All rights reserved.";
var msgUpd = "Updated";
var msgVld = "Valid";
var msgWbDs = " Web Design";

if (lngAf) {
  ctxContext = "Hierdie";
  ctxLinks = "Skakels";
  ctxPortal = "Portaal";
  ctxPortalTip = "Tuisblad";
  chptr.c = "Hoofstuk";
  chptr.p = "Deel";
  chptr.s = "Les";

  msgPgd = "Blad-ontwerp";
  msgBy = " deur ";
  msgCrt = "Geskep";
  msgEml = "E-pos";
  msgRghts = "Alle regte voorbehou.";
  msgUpd = "Bygewerk";
  msgVld = "Geldige";
  msgWbDs = " Web-Ontwerp";
}

var atbUndf = {Hdr: "", Ltxt: "", Aux: "", Tgt: ""};  //  "empty" attribute array
var atbLst = atbUndf;
var ctnNm = {};    // <Folder object> attribute objects
ctnNm.atbUndf = atbUndf;
ctnNm.atbLst = atbLst;

///-end- IDWD Webs


/// Functions

function addHostLnk(elmID, lnkID, lnkPath, before, after) {
/*
 if (set of links with ID's of which "lnkID" is a part _
     does not include a link to a location on the current host)
 {
   create link to a location on the current host with path = "lnkPath" _
    in element with ID "elmID" in document;
 }
 add "before" and "after" -if defined- before and after link to current host;

Original: 2004-01-28
Updates:
 2004-02-26
 2004-06-05
 2005-04-14
 2005-10-25
 2007-06-27
*/

  var insert = document.getElementById(elmID);
  var txtHost = {a: "Hierdie webtuiste", e: "This web host"};

  var lnk;
  var hostInx = -1;
  var thsHstLnkID = "thsHst" + lnkID;
  for (var i = 0; i < document.links.length; i++) {
    lnk = document.links[i];
    if (lnk.id.indexOf(lnkID) > -1 &&
       lnk.hostname == window.location.hostname) {
      hostInx = i;
      break;
    }
  }
  if (hostInx < 0) {
    var link = document.createElement("a");
    if (window.location.protocol == "file:") {
      link.setAttribute("href", "file://" + hostname + lnkPath);
      var spn = document.createElement("span");
      spn.style.fontStyle = "italic";
      spn.appendChild(document.createTextNode("\"File system\"" + nbsp));
      link.appendChild(spn);
    } else {
      link.setAttribute("href", "http://" + hostname + lnkPath);
      link.appendChild(document.createTextNode(link.hostname));
    }
    link.setAttribute("id", thsHstLnkID);
    insert.appendChild(link);
    lnk = document.getElementById(thsHstLnkID);
  }
  if (before !== undefined) {
    txtBfr = txtHost[before.toLowerCase()];
    if (brwsrIsIE) {
      lnk.insertAdjacentText("BeforeBegin", txtBfr + " -  ");
    } else {
      lnk.innerHTML = txtBfr + " - &nbsp; " + lnk.innerHTML;
    }
  }
  if (after !== undefined) {
    txtAft = txtHost[after.toLowerCase()];
    if (brwsrIsIE) {
      lnk.insertAdjacentText("AfterEnd", "  - " + txtAft);
    } else {
      lnk.innerHTML = lnk.innerHTML + " &nbsp; - " + txtAft;
    }
  }
}
//** end addHostLnk


function anchHdr(anchTtl, anchNm) {
  var title = anchTtl;

  if (anchNm === undefined) {
    anchNm = "pgTop";
  }

  if (title === "") {
    if (lngAf) {
        title = "Bo";
    } else {
        title = "Top";
    }
  } else {
    if (typeof title != "string") {title = ctnNm[txtInx].Hdr;}
  }

  document.writeln('<p class="ffar fs90 mt150">' + '<a href="#' + anchNm + '"><img src="' +
   hmRltv + '../icns/top.gif" width="10" height="15" border="0"' +
   ' align="bottom" alt="top" /></a> <a href="#' + anchNm + '">' + title + '</a></p>');
}
//** end anchHdr


function BrowserOK(tuis, home) {
/*
Updates:
 2005-04-11
 2006-03-19
 2006-06-12
*/

  if (!brwsrIsMin) {alert('The website you are attempting to browse\n' +
    'requires web standards compliant functionality.\n' +
    'The required functionality is not available in\n' +
    'versions of Internet Explorer before 6 SP 1\n' +
    'and other early-generation browsers.\n\n' +
    'Please upgrade your browser.');}

  var eDvCur = document.getElementById("brwInfo");
  if (brwsrIsOk) {
    var ePar = document.createElement("p");
    ePar.setAttribute("id", "anchBrwMn");
    ePar.className = "tac";
    var eAnch = document.createElement("a");
    eAnch.setAttribute("href", "javascript: unhdBrwMn();");
    tmp = document.createTextNode("Webwerf" + ndash + " en Webblaaier inligting");
    eAnch.appendChild(tmp);
    ePar.appendChild(eAnch);
    ePar.appendChild(document.createTextNode(" " + nbsp + " | " + nbsp + " "));
    eAnch = document.createElement("a");
    eAnch.setAttribute("href", "javascript: unhdBrwMn();");
    tmp = document.createTextNode("Website and Browser information");
    eAnch.appendChild(tmp);
    ePar.appendChild(eAnch);
    eDvCur.appendChild(ePar);

    ePar = document.createElement("p");
    ePar.setAttribute("id", "hmlnk");
    ePar.className = "tac m000";
    ePar.appendChild(document.createTextNode(" " + nbsp + " " + nbsp + " "));
    eAnch = document.createElement("a");
    eAnch.setAttribute("href", tuis);
    tmp = document.createTextNode("Tuisblad");
    eAnch.appendChild(tmp);
    ePar.appendChild(eAnch);
    ePar.appendChild(document.createTextNode(" " + nbsp + " | " + nbsp + " "));
    var eAnch2 = document.createElement("a");
    eAnch2.setAttribute("href", home);
    tmp = document.createTextNode("Homepage");
    eAnch2.appendChild(tmp);
    ePar.appendChild(eAnch2);
    eDvCur.appendChild(ePar);

    var e_hmlnk = document.getElementById("hmlnk");
    e_hmlnk.style.backgroundColor = bdBgClr;
    e_hmlnk.style.color = bdBgClr;
    e_anhrs = e_hmlnk.getElementsByTagName("a");
    for (var i=0; i<e_anhrs.length; i++) {
      e_anhrs[i].style.color = bdBgClr;
    }
  } else {
    tmotDly = 30000;
    var eTbl = document.createElement("table");
    eTbl.setAttribute("align", "center");
    eTbl.setAttribute("border", "0");
    eTbl.setAttribute("cellspacing", "0");
    eTbl.setAttribute("cellpadding", "6");
    var eTbdy = document.createElement("tbody");
    eTbl.appendChild(eTbdy);

    var clg = document.createElement("colgroup");
    var clm = document.createElement("col");
    clm.setAttribute("width", "49%");
    clg.appendChild(clm);
    clm.setAttribute("width", "2%");
    clg.appendChild(clm);
    clm.setAttribute("width", "49%");
    clg.appendChild(clm);
    eTbdy.appendChild(clg);

    var eTr = document.createElement("tr");
    var eTd1 = document.createElement("td");
    var eImg1 = document.createElement("img");
    eImg1.setAttribute("src", "imgs/alert.gif");
    eImg1.setAttribute("width", 24);
    eImg1.setAttribute("height", 24);
    eImg1.setAttribute("alt", "Alert");
    eImg1.style.verticalAlign = "text-bottom";
    eTd1.appendChild(eImg1);
    var eSpn = document.createElement("span");
    eSpn.className = "fsz2";
    eSpn.appendChild(document.createTextNode(" Opgradeer asseblief u webblaaier !"));
    eTd1.appendChild(eSpn);
    eTr.appendChild(eTd1);

    var eTd2 = document.createElement("td");
    var eImg2 = document.createElement("img");
    eImg2.setAttribute("src", "imgs/alert.gif");
    eImg2.setAttribute("width", 24);
    eImg2.setAttribute("height", 24);
    eImg2.setAttribute("alt", "Alert");
    eImg2.style.verticalAlign = "text-bottom";
    eTd2.appendChild(eImg2);
    eTr.appendChild(eTd2);

    var eTd3 = document.createElement("td");
    eTd3.style.textAlign = "right";
    eSpn = document.createElement("span");
    eSpn.className = "fsz2";
    eSpn.appendChild(document.createTextNode("Please upgrade your browser ! "));
    eTd3.appendChild(eSpn);
    var eImg3 = document.createElement("img");
    eImg3.setAttribute("src", "imgs/alert.gif");
    eImg3.setAttribute("width", 24);
    eImg3.setAttribute("height", 24);
    eImg3.setAttribute("alt", "Alert");
    eImg3.style.verticalAlign = "text-bottom";
    eTd3.appendChild(eImg3);
    eTr.appendChild(eTd3);
    eTbdy.appendChild(eTr);

    eTr = document.createElement("tr");
    eTd1 = document.createElement("td");
    eSpn = document.createElement("span");
    eSpn.style.fontSize = "100%";
    eSpn.appendChild(document.createTextNode("Die webblaaier tans in gebruik kan nie die webwerf ten beste vertoon nie."));
    eTd1.appendChild(eSpn);
    eTr.appendChild(eTd1);

    eTd2 = document.createElement("td");
    eTd2.appendChild(document.createTextNode(nbsp));
    eTr.appendChild(eTd2);

    eTd3 = document.createElement("td");
    eTd3.style.textAlign = "right";
    eSpn = document.createElement("span");
    eSpn.style.fontSize = "100%";
    eSpn.appendChild(document.createTextNode("The browser currently in use is unable to properly display the content of this site."));
    eTd3.appendChild(eSpn);
    eTr.appendChild(eTd3);

    eTbdy.appendChild(eTr);

    eDvCur.appendChild(eTbl);
  }
}
//** end BrowserOK


function chgRcLnk(lnkID, lnkPath, before, after) {
/* Change link in navigation page
   Write text before and/or after link

Original: 2004-01-19
Updates:
 2004-01-24
 2004-06-05
*/

  var lnk = document.getElementById(lnkID);
  if (lnk.hostname == window.location.hostname) {
    lnk.pathname = lnk.pathname + lnkPath;
    if (before !== undefined) {
      if (brwsrIsIE) {
        lnk.insertAdjacentText("BeforeBegin", before + " -  ");
      } else {
        lnk.innerHTML = before + " - &nbsp; " + lnk.innerHTML;
      }
    }
    if (after !== undefined) {
      if (brwsrIsIE) {
        lnk.insertAdjacentText("AfterEnd", "  - " + after);
      } else {
        lnk.innerHTML = lnk.innerHTML + " &nbsp; - " + after;
      }
    }
  }
}
//** end chgRcLnk


function cntrWndw(factH) {
/* Set window size relative to screen
   Scale height by factH and centre on screen
 2004-01-18
Updates:
 2004-03-07
 2004-06-09
*/

  var wndwHt;
  if (factH === undefined) {
    factH = 1;
  }
  if (window.opener != self) {
    wndwHt = wndwH * factH;
    window.resizeTo(wndwW, wndwHt);
    window.moveTo(wndwX, wndwY);
  }
}
//** end cntrWndw


function clrLine(cols, clr) {
  document.writeln('<td colspan="' + cols + '" bgcolor="' + clr + '">');
  document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
  document.writeln('<tbody><tr><td height="1"></td></tr>');
  document.writeln('</tbody></table>');
  document.writeln('</td>');
}
//** end clrLine


function deframe() {
/* If document is located in a frame, take it to the top of the window
 2004-01-24
*/

  if (top.location.href != document.location.href) {
    top.location.href = document.location.href;
  }
}
//** end deframe


var hmRltv;
var hostname;
var rtEnd;
var rtRltv;

function fndSvrRt(anchTtl, anchNm) {
/*  Find "server" root
 2005-04-04
 2005-10-25
 2006-05-22
 2006-06-09
*/

  var urll = url.toLowerCase();
  for (count = 0; count < svrRts.length; count++) {
    var rtPos = urll.lastIndexOf(svrRts[count].toLowerCase() + lvlSep);
    if (rtPos > -1) {
      svrRt = url.substr(rtPos, svrRts[count].length);
      break;
    }
  }

  if (svrRt === undefined) {    // not in svrRts array
    rtEnd = url.indexOf(lvlSep, 7);    // assume "http://", first slash after root folder
    svrRt = url.substr(7, rtEnd - 7);
    hostname = window.location.hostname;
  } else {
    rtEnd = url.indexOf(lvlSep, url.lastIndexOf(svrRt + lvlSep));
    hostname = url.substr(7, rtEnd - 7);
  }
  famBrnch = lfLvl(svrRt);
  famBrnch[0] = "Root";

  famRltv[0] = "";

  for (count = 1; count < rtLvl + 1; count++) {
    famRltv[count] = famRltv[count - 1] + "../";
  }

  hmRltv = famRltv[rtLvl - 1];
  rtRltv = famRltv[rtLvl]; //alert("hmRltv '"+hmRltv+"'  rtRltv "+rtRltv);
}
//** end fndSvrRt


function fsColRow(nCol, nRow) {
/* Create frameset col and frameset row statements
   ("illegal" (w3c) use of scripts in frameset html. Supported by Mozilla and IE.
Updates:
 2005-03-23
 2006-03-17
*/

  if (nCol > -1) {
    wrtStr = '<frameset cols="' + navWd + fsCol[nCol] + '">';
    document.writeln(wrtStr);
    document.write('  ');
  }
  document.writeln('<frameset rows="' + fsRow[nRow] + '">');
}
//** end fsColRow


var rtLvl;

function lfLvl(root) {
/* Find level of current page in folder structure relative to folder "root"
   For automatice setting of backward links and location of global icons etc.
 2004-03-14
 2005-04-04
 2006-06-09
*/

  var last;
  var Lvl;
  var pos;
  var pos2;
  var rel = "";
  var prev;
  var next;
  var strctFldr = [];

  // Remove possible search and hash parts of url
  last = url.indexOf("?");
  if (last > -1) {
    url = url.substr(0, last);
  }
  last = url.indexOf("#");
  if (last > -1) {
    url = url.substr(0, last);
  }

  // Search for root folder
  pos = url.lastIndexOf(root + lvlSep);
  prev = pos;

  pos = url.indexOf(lvlSep, pos);    // first slash after root folder
  next = pos;
  pos = 1;
  prev = url.indexOf(RtPred, pos) + RtPred.length;    // hostname start
  next++;
  nmePrts[0] = url.substr(prev, next - prev);    // host
  nmePrts[1] = url.substr(next, url.length - next);    //remainder

  //* Search for folders below root
  pos = next;
  prev = pos;
  Lvl = -1;
  var Frst = -1;

  while (pos > -1) {
    Lvl++;
    pos++;
    pos = url.indexOf(lvlSep, pos);
    if (pos > -1) {
      strctFldr[Lvl + 1] = url.substr(prev, pos - prev);
      prev = pos + 1;
    } else {
      pos2 = prev;
      while (pos2 > -1) {
        pos2++;
        pos2 = url.indexOf(".", pos2);
        if (pos2 > -1) {
          next = pos2 + 1;
          if (Frst == -1) {
            Frst = next;
          }
        }
      }
      strctFldr[Lvl + 1] = url.substr(prev, Frst - prev - 1);    //file name
      strctFldr[Lvl + 2] = url.substr(next, url.length - next);    //extension
      if (Frst != next) {
        strctFldr[Lvl + 3] = url.substr(Frst, next - Frst - 1);    //qualifier
      }
    }
  }
  rtLvl = Lvl;
  nmePrts[2] = "";
  var nmePrt = nmePrts[1];
  var lenPt = nmePrt.length;
  flgXt = 0;
  lstFnd = -1;
  if (lenPt > 25) {
    schBg = lenPt / 2;
    pos2 = nmePrt.indexOf(lvlSep, schBg);    //searh down
    if (pos2 > -1) {
      schBg = pos2 - 2;    // first one down
      lstFnd = pos2;
    } else {
      schBg = schBg - 1;    // nothing downwards
    }

  //* Get last slash before halfway
    while (flgXt < 1) {
      pos2 = nmePrt.indexOf(lvlSep, schBg);
      if (pos2 < 0) {
        flgXt = 1;
      }
      if (pos2 > -1) {
        if (pos2 < lstFnd) {
          lstFnd = pos2;
          flgXt = 1;
        } else {
          schBg = schBg - 1;
          if (schBg < 1) {
            flgXt = 1;
          } // exit
        }
      }
    }
    if (lstFnd > -1) {
      nmePrts[2] = nmePrt.substr(lstFnd + 1, lenPt - lstFnd - 1);
      nmePrts[1] = nmePrt.substr(0, lstFnd + 1);
    }
  }
  return strctFldr;
}
//** end lfLvl


/* Begin page header functions */

function pgHdrPrm(lfHdr, lfLtxt, lfAux) {
/*
 2004-04-20
*/

  if (ctnNm[famBrnch[rtLvl + 1]] !== undefined) {
    atbLst = ctnNm[famBrnch[rtLvl + 1]];    //replace "empty" array with calculated values
  } else {
    atbLst.Ltxt = famBrnch[rtLvl + 1];    //substitute link text
    atbLst.Hdr = famBrnch[rtLvl + 1];    //substitute header text
  }
  // Do not substitute caculated values with undefined or empty strings
  if (lfLtxt !== undefined && lfLtxt !== "") {
    atbLst.Ltxt = lfLtxt;
  }
  if (lfHdr !== undefined && lfHdr !== "") {
    atbLst.Hdr = lfHdr;
    if (atbLst.Hdr == " ") {
      atbLst.Hdr = "";
    }
  }
  if (lfAux !== undefined) {
    atbLst.Aux = lfAux;
  }
  if (atbLst.Hdr == chptr.s) {
    chTyp = "s";
  } else {
    if (atbLst.Hdr == chptr.c) {
      chTyp = "c";
    } else {
      chTyp = "p";
    }
  }
}
//** end pgHdrPrm

/* End of page header functions */


/* Begin page footer functions */

var w3ImgW3 = "imgs/w3c_home.png";
var w3ImgW3Alt = "w3c home";
var w3ImgCs = "imgs/vcss.png";
var w3ImgCsAlt = "valid css";
var w3ImgH4 = "imgs/valid-html401.png";
var w3ImgH4Alt = "valid html";
var w3ImgXh = "imgs/valid-xhtml10.png";
var w3ImgXhAlt = "valid xhtml";
var w3HmHr = "http://www.w3.org";
var w3HmTt = "World Wide Web Consortium";
var w3SpCsHr = "http://www.w3.org/TR/CSS21";
var w3SpCsTt = "CSS 2.1 Specification";
var w3SpH4Hr = "http://www.w3.org/TR/html401";
var w3SpH4Tt = "HTML 4.01 Specification";
var w3SpXhHr = "http://www.w3.org/TR/xhtml1";
var w3SpXhTt = "XHTML 1.0 Specification";
var w3VlCsHr = "http://jigsaw.w3.org/css-validator";
var w3VlCsTt = "CSS Validation Service";
var w3VlHtHr = "http://validator.w3.org";
var w3VlHtTt = "Markup Validation Service";

if (isHtml401) {
  w3ImgHt = w3ImgH4;
  w3ImgHtAlt = w3ImgH4Alt;
  w3SpHtHr = w3SpH4Hr;
  w3SpHtTt = w3SpH4Tt;
  htmlNml = "HTML 4.01";
  htmlSml = "html";
} else if (isXhtml) {
  w3ImgHt = w3ImgXh;
  w3ImgHtAlt = w3ImgXhAlt;
  w3SpHtHr = w3SpXhHr;
  w3SpHtTt = w3SpXhTt;
  htmlNml = "XHTML 1.0";
  htmlSml = "xhtml";
}

//  faXyz -- function arguments

//  1. faCrt -- Created by
var skCrt = 0;  // sk -- skip creator statement
var pdCrt = 1;  // pd -- page design by (default)
var cbCrt = 2;  // cb -- created by

//  2. faW3c -- Compliance to standards statements
var btW3c = true;
var bfW3c = false;  // (default)
    // Standards statements format
var nmW3c = "n";  // nm -- normal (default)
var mnW3c = "m";  // mn -- minimal
var grW3c = "g";  // gr -- graphics

//  3. faRgt -- Rights reserved statement
var btRgt = true;  // bt -- boolean true
var bfRgt = false;  // bf -- boolean false (default)

//  4. faFlNm -- "hidden" file name display
var btFlNm = true;  // bt -- boolean true
var bfFlNm = false;  // bf -- boolean false (default)


function pgFtr(faCrt, faW3c, faRgt, faFlNm) {
/* Page footer
 1999
 2006-03-27 : DOM version
Updates:
 2006-07-19
 2006-12-06
 2007-06-21
*/

  // Defaults
  if (arguments.length < 4) {faFlNm = bfFlNm;}
  if (arguments.length < 3) {faRgt = bfRgt;}
  if (arguments.length < 2) {faW3c = bfW3c;}
  if (arguments.length < 1) {faCrt = pdCrt;}
//alert(faCrt+" | "+faW3c+" | "+faRgt+" | "+faFlNm);

  var yrCrt = dteCrt.substring(0,4);
  var yrUpd = dteUpd.substring(0,4);

  var eDvFtr = document.createElement("div");
  eDvFtr.setAttribute("id", "divFtr");
  if (parent != self || faFlNm || svrRts[0] == "chm") {
    pgeName(eDvFtr);
  }
  var eHr = document.createElement("hr");
  eHr.className = "mb000";
  eDvFtr.appendChild(eHr);

  var eDv = document.createElement("div");
  eDv.className = "fsz1m fftb";

  if (faCrt != skCrt && faW3c != mnW3c) {
    ePar = document.createElement("p");
    ePar.className = "m000 mb050m";
    if (faCrt == cbCrt) {
      pgCrtr = msgCrt;
    } else {
      pgCrtr = msgPgd;
    }
    ePar.appendChild(document.createTextNode(pgCrtr + msgBy));
    var eAnch = document.createElement("a");
    eAnch.setAttribute("href", WebSvr);
    eAnch.setAttribute("target", "sWndw");
    eAnch.appendChild(document.createTextNode("Inn"));
    eSpn = document.createElement("span");
    eSpn.className = "lsit";
    eSpn.appendChild(document.createTextNode("oTe"));
    eAnch.appendChild(eSpn);
    eAnch.appendChild(document.createTextNode("ch Dynamics" + nreg + msgWbDs));
    ePar.appendChild(eAnch);
    eSpn = document.createElement("span");
    eSpn.className = "fsz2m";
    eSpn.appendChild(document.createTextNode(" " + ncopy + yrCrt));
    if (yrNow > yrCrt) {
      eSpn.appendChild(document.createTextNode("-" + yrNow));
    }
    ePar.appendChild(eSpn);
    if (faRgt) {
      ePar.appendChild(document.createTextNode(" " + msgRghts));
    }
    eDv.appendChild(ePar);
  }
  ePar = document.createElement("p");
  ePar.className = "m000 tar";
  if (faW3c == mnW3c) {ePar.className = ePar.className + " fsz1m";}
  ePar.appendChild(document.createTextNode(msgUpd + ": " + dteUpd));
  eDv.appendChild(ePar);

  if (!isXhtml && !isHtml401) {
    faW3c = false;
  }

  switch (faW3c) {
    case grW3c:
      ePar = document.createElement("p");
      ePar.className = "tac mt025";
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlHtHr);
      eAnch.setAttribute("title", w3VlHtTt);
      eAnch.setAttribute("target", "sWndw");
      var eImg1 = document.createElement("img");
      eImg1.setAttribute("src", rtRltv + w3ImgHt);
      eImg1.setAttribute("width", 88);
      eImg1.setAttribute("height", 31);
      eImg1.setAttribute("border", 0);
      eAnch.appendChild(eImg1);
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(" " + nbsp + " "));

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlCsHr);
      eAnch.setAttribute("title", w3VlCsTt);
      eAnch.setAttribute("target", "sWndw");
      var eImg2 = document.createElement("img");
      eImg2.setAttribute("src", rtRltv + w3ImgCs);
      eImg2.setAttribute("width", 88);
      eImg2.setAttribute("height", 31);
      eImg2.setAttribute("border", 0);
      eAnch.appendChild(eImg2);
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(" " + nbsp + " "));

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3HmHr);
      eAnch.setAttribute("title", w3HmTt);
      eAnch.setAttribute("target", "sWndw");
      var eImg3 = document.createElement("img");
      eImg3.setAttribute("src", rtRltv + w3ImgW3);
      eImg3.setAttribute("width", 88);
      eImg3.setAttribute("height", 31);
      eImg3.setAttribute("border", 0);
      eAnch.appendChild(eImg3);
      ePar.appendChild(eAnch);

      eDv.appendChild(ePar);
      break;
    case true:
    case nmW3c:
      ePar = document.createElement("p");
      ePar.className = "tac m000";
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3HmHr);
      eAnch.setAttribute("title", w3HmTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode("W3C"));
      ePar.appendChild(eAnch);
      eSpn = document.createElement("span");
      eSpn.setAttribute("title", "Validated");
      eSpn.appendChild(document.createTextNode(" "+nradic+" "));
      ePar.appendChild(eSpn);

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlCsHr);
      eAnch.setAttribute("title", w3VlCsTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(msgVld));
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(nbsp));
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3SpCsHr);
      eAnch.setAttribute("title", w3SpCsTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode("CSS 2.1"));
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(" "+nbsp));

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlHtHr);
      eAnch.setAttribute("title", w3VlHtTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(msgVld));
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(nbsp));
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3SpHtHr);
      eAnch.setAttribute("title", w3SpHtTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(htmlNml));
      ePar.appendChild(eAnch);
      eDv.appendChild(ePar);
      break;
    case mnW3c:
      ePar = document.createElement("p");
      ePar.className = "m000";
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3HmHr);
      eAnch.setAttribute("title", w3HmTt.toLowerCase());
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode("w3c"));
      ePar.appendChild(eAnch);
      eSpn = document.createElement("span");
      eSpn.setAttribute("title", "Validated");
      eSpn.appendChild(document.createTextNode(nradic + " "));
      ePar.appendChild(eSpn);

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlCsHr);
      eAnch.setAttribute("title", w3VlCsTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(msgVld));
      ePar.appendChild(eAnch);
      //ePar.appendChild(document.createTextNode(" "));
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3SpCsHr);
      eAnch.setAttribute("title", w3SpCsTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode("css"));
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(" "));

      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3VlHtHr);
      eAnch.setAttribute("title", w3VlHtTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(msgVld));
      ePar.appendChild(eAnch);
      //ePar.appendChild(document.createTextNode(" "));
      eAnch = document.createElement("a");
      eAnch.setAttribute("href", w3SpHtHr);
      eAnch.setAttribute("title", w3SpHtTt);
      eAnch.setAttribute("target", "sWndw");
      eAnch.appendChild(document.createTextNode(htmlSml));
      ePar.appendChild(eAnch);
      ePar.appendChild(document.createTextNode(" "));
      eDv.appendChild(ePar);
      break;
    default:
      break;
  }
  eDvFtr.appendChild(eDv);

  elmCntnt = document.getElementById("dvCntnt");
  if (elmCntnt !== null) {
    elmCntnt.appendChild(eDvFtr);
  } else {
    document.body.appendChild(eDvFtr);
  }

  //alert(elmCntnt.offsetParent);
  if (elmCntnt !== null) {
    tmp = elmCntnt.offsetTop;
  } else {
    tmp = 0;
  }

  eDvFtr = document.getElementById("divFtr");
  if (eDvFtr.offsetTop < (wndwHtUsbl - 5 * emSzPx)) {
     eDvFtr.style.marginTop =  (wndwHtUsbl - 2 * emSzPx) - eDvFtr.offsetTop + tmp + "px";
  } else {
     eDvFtr.style.marginTop = (10 * emSzPx) + "px";
  }
}
//** end pgFtr


function pgeName(elm) {
/* Write page name (invisible)
 2004-04-29
Updates:
 2006-03-27 DOM version
 2006-04-18
*/

  ePar = document.createElement("p");
  ePar.className = "flnm";
  ePar.style.color = bdBgClr;
  ePar.onmouseover = function(e) {e = this.style.color=bdClr;};
  ePar.onmouseout = function(e) {e = this.style.color=bdBgClr;};
  ePar.appendChild(document.createTextNode(nmePrts[1] + " " + nmePrts[2]));
  elm.appendChild(ePar);
}
//** end pgeName

///-end- Page footer functions


function parntClrs() {
/*
 2006-03
Updates:
 2006-03-22
*/

  var i;
  if (!isFrmset && parent != self) {
    document.body.style.backgroundColor = parent.bdBgClr;

    if (parent.bdBgImg != "none") {
      document.body.style.backgroundImage = parent.bdBgImg;
      if (parent.bdBgImg.indexOf("book.jpg") > -1) {
        document.body.style.backgroundPosition = "-40px";
      }
    }

    var e_all = document.getElementsByTagName("*");
    for (i=0; i<e_all.length; i++) {
      e_all[i].style.color = parent.bdClr;
    }

    var e_anhrs = document.getElementsByTagName("a");
    for (i=0; i<e_anhrs.length; i++) {
      e_anhrs[i].style.color = parent.bdAnchClr;
    }
  }
}
//** end parntClrs


var hrefIn = window.location.hostname.toLowerCase();
var hrefOut;
var referIn = document.referrer.toLowerCase();
var tmotDly = 4000;
var tmotId;

function redirect() {
/* Updates:
 2005-04-11
*/

  tmotId = window.setTimeout("window.location.href = hrefOut", tmotDly);
}
//** End redirect


function shwBrwMn() {
/* if browser does not comply
    show browser requirement info
  else
    proceed

Updates:
 2005-05-26
 2006-03-19
 2006-06-11
*/

  var i;
  if (brwsrIsOk) {
    var e_all = frames[0].document.getElementsByTagName("*");
    for (i=0; i<e_all.length; i++) {
      e_all[i].style.color = bdBgClr;
    }
  } else {
    tmotDly = Math.max(tmotDly, 30000);
  }
  window.setTimeout(redirect, 500);
}
//** End shwBrwMn


function unhdBrwMn() {
/* Updates:
 2005-05-26
 2006-03-19
 2006-06-11
*/

  var i;
  window.clearTimeout(tmotId);

  var e_anchBrwMn = document.getElementById("anchBrwMn");
  var e_hmlnk = document.getElementById("hmlnk");

  var e_all = frames[0].document.getElementsByTagName("*");
  for (i=0; i<e_all.length; i++) {
    e_all[i].style.color = bdClr;
  }

  var e_anhrs = frames[0].document.getElementsByTagName("a");
  for (i=0; i<e_anhrs.length; i++) {
    e_anhrs[i].style.color = bdAnchClr;
  }

  if (e_anchBrwMn) {
    e_anchBrwMn.style.color = bdBgClr;

    if (e_hmlnk) {
      e_hmlnk.style.marginTop = "-2em";
    } else {
      e_anhrs = document.getElementById("ifrmBrw");
      e_anhrs.style.marginTop = "-2em";
    }

    e_anhrs = e_anchBrwMn.getElementsByTagName("a");
    for (i=0; i<e_anhrs.length; i++) {
      e_anhrs[i].style.color = bdBgClr;
      e_anhrs[i].style.backgroundColor = bdBgClr;
    }
  }

  if (e_hmlnk) {
    e_hmlnk.style.color = "#000000";
    e_anhrs = e_hmlnk.getElementsByTagName("a");
    for (i=0; i<e_anhrs.length; i++) {
      e_anhrs[i].style.color = bdAnchClr;
    }
  }

  tmotDly = Math.max(tmotDly, 30000);
  tmotId = window.setTimeout("window.location.href = hrefOut", tmotDly);
}
//** End unhdBrwMn


function emlTo(emlDot, emlDmn, emlIndv, emlTtl, emlTxt) {
/* Construct mailto: link (avoid spam)
 2007-06-21
 2007-06-25
*/

  var emlAdr = emlIndv + "@" + emlDmn + "." + emlDot;
  var emlAnch = '<a href="mailto:'+ emlAdr + '"';
  if (emlTtl) { emlAnch += ' title="' + emlTtl; }
  if (emlTxt != undefined) {
    emlAnch += '">'+ emlTxt;
  } else {
    emlAnch += '">'+ emlAdr + '<\/a>';
  }
  document.write(emlAnch);
}
//** End mailTo


function winOnErr(strErr, strURL, strLineNumber) {
/*  window.onerror handler
 2007-04-08
*/

  dbug(nbsp);
  dbug("onerror:");
  dbug("Line: " + strLineNumber);
  dbug("Message: " + strErr);
}
//window.onerror = winOnErr;
//** End winOnErr


function dbug(msg) {
/*
 2004-01-19
Updates:
 2007-04-08
*/

  if (!dbug.box) {
    dbug.box = document.createElement("div");
    //setAttribute("class", "ccc") and setAttribute("style", "sss") do not work in IE !
    //dbug.box.className = "ffmss";
    dbug.box.style.border = "solid red 1px";
    dbug.box.style.fontFace = "sans-serif";
    dbug.box.style.marginTop = "5em";
    dbug.box.style.padding = ".5em";
    document.body.appendChild(dbug.box);
    // innerHTML is not part of the W3C DOM standard, but it is supported
    // by Netscape 6 and Internet Explorer 4 and later.
    dbug.box.innerHTML =
      "<p style='text-align:center; margin:-.2em 0em 0em; font-size:120%; color:red;'>Debugging Output</p>" +
      "<p style=\"margin:0; text-align:center; color:red\">Please e-mail this page to:" +
      " &nbsp; <span style=\"color:blue\">" + EMail + "&nbsp; (aaa@bbb.ccc)</span> &nbsp; Thank you</p>" +
      "<p style=\"margin: 0.1em 0; color:green\">environment:</p>" +
      "<p style=\"margin: 0.1em 0;\">UserAgent: " + navigator.userAgent + "</p>" +
      "<p style=\"margin: 0.1em 0;\">DOM: " + brwsrIs.dom + "</p>" +
      "<p style=\"margin: 0.1em 0;\">URI: " + url + "</p>" +
      "<p style=\"margin: 0.1em 0;\">Document title: " + docTitle + "</p>";
  }
  // When we get here, dbug.box refers to a <div> element into which
  // we can insert our debugging message.
  var p = document.createElement("p");
  p.style.fontFace = "monospace";
  p.style.lineHeight = "1.1em";
  p.style.margin = "0.1em 0";
  p.appendChild(document.createTextNode(msg));
  dbug.box.appendChild(p);
}
//** end dbug

