function m2me(subject){  // Opens email client with my address as recipient.  // The subject parameter is optional.  m2('1B01060B0817DFFD0AF60B11F50FFC0ACDF70BFE', subject)}//-------------------------------------------------------function getPersonName(id){  // Returns the name of the person indicated by id, assuming  // the document contains an anchor with that person's name in it.  var theAnchor, personName  var anchorName = 'id' + id  if (document.anchors[anchorName] != null)    theAnchor = document.anchors[anchorName]  else  {    // In some browsers, the document.anchors array does not have properties    // whose names match the anchor names, so we can't retrieve our anchor    // directly by name.  In this case, we loop through the array and check    // the 'name' property of each array element.    for (var i=0; i<document.anchors.length; i++)    {      if (document.anchors[i].name == anchorName)      {        theAnchor = document.anchors[i]        break      }    }  }  if (theAnchor == null)    return null  else if (theAnchor.innerText != null)    personName = theAnchor.innerText  else    personName = theAnchor.text  // Inexplicably, Windows IE prepends a couple of CR characters to the anchor text,  // in every case except the page's first anchor.  Strip them off.  if (personName != null) personName = personName.replace(/^\s*/, '')  return personName}//-------------------------------------------------------function m2(r,s){  // Decodes the address which is encrypted in r, and opens the default  // email client populated with the decrypted address.  The s parameter  // is an optional string which (if present will be used as the subject  var mw = 'Waldo';  var rd = '';  for (i=0; i<r.length/2; i++)  {    n = parseInt(r.substring(i*2, i*2+2), 16);    rd += String.fromCharCode((n + mw.charCodeAt(i % mw.length)) % 256)  }  window.location = 'mailto:' + rd + ((s==null) ? '' : '?subject='+escape(s));}//-------------------------------------------------------function gm2me(id){  // Opens email client with my address as recipient, and  // with a subject consisting of the name & ID of the person  // specified by id.  var personName = getPersonName(id)  if (personName==null) personName = 'Genealogy'  m2me(personName + ' (ID #' + id + ')')}//-------------------------------------------------------function gm2(r, id){  // Decodes the address which is encrypted in r, and opens the default  // email client populated with the decrypted address.  The id parameter  // is optional; if it's specified, the function tries to find the name  // of the person specified by the id, and populates the subject field  // with that name.  Otherwise, the subject is set to 'Genealogy'.  var subject = null  if (id != null) subject = getPersonName(id)  if (subject == null) subject = 'Genealogy'  m2(r, subject)}