      // see http://www.greek-language.com/alphabet/

      function AtStart(i, text) {
        return ((i == 0) || (text.charAt(i-1) == ' '));
      }

      function AtEnd(i, text) {
        return ((i == text.length-1) || (text.charAt(i+1) == ' '));
      }

      function PrevChar(i, text) {
        if (AtStart(i, text)) {
          return "";
        }
        return text.charAt(i-1);
      }

      function NextChar(i, text) {
        if (AtEnd(i, text)) {
          return "";
        }
        return text.charAt(i+1);
      }

      function IsVowel(c) {
        return c==cap_a || c==cap_ye || c==cap_ee || c==cap_o || c==cap_u ||
               c==cap_yeru || c==cap_e || c==cap_yu || c==cap_ya;
      }

      function DisplayEnglish(dialect, text) {
        var modern = dialect[0].checked;
        var classical = dialect[1].checked;
        var direct = dialect[2].checked;
        var englishText = [''];

        for (var i=0; i<text.length; i++) {
          var charCode = text.charCodeAt(i);
          var lowerCase = false;
          if (charCode >= 945 && charCode <= 969) {
            lowerCase = true;
            charCode -= 32;
          }
          var greekLetter = "&#" + charCode + ";";
          var englishLetter = '';

          if (greekLetter == cap_alpha) {
            englishLetter = 'A';
          } else if (greekLetter == cap_beta) {
            if (classical || direct) {
              englishLetter = 'B';
            } else {
              englishLetter = 'V';
            }
          } else if (greekLetter == cap_gamma) {
            if (direct) {
              englishLetter = 'G';
            } else if (NextChar(i, text) == cap_gamma || NextChar(i, text) == low_gamma || 
                NextChar(i, text) == cap_kappa || NextChar(i, text) == low_kappa || 
                NextChar(i, text) == cap_xi || NextChar(i, text) == low_xi || 
                NextChar(i, text) == cap_chi || NextChar(i, text) == low_chi) {
              englishLetter = 'N';
            } else if (modern && (
                       NextChar(i, text) == cap_iota || NextChar(i, text) == low_iota ||
                       NextChar(i, text) == cap_epsilon || NextChar(i, text) == low_epsilon)) {
              englishLetter = 'N';
            } else {
              englishLetter = 'G';
            }
          } else if (greekLetter == cap_delta) {
            if (classical || direct) {
              englishLetter = 'D';
            } else {
              englishLetter = 'TH';
            }
          } else if (greekLetter == cap_epsilon) {
            englishLetter = 'E';
          } else if (greekLetter == cap_zeta) {
            if (classical) {
              englishLetter = 'ZD';
            } else {
              englishLetter = 'Z';
            }
          } else if (greekLetter == cap_eta) {
            if (classical) {
              englishLetter = 'E';
            } else if (direct) {
              englishLetter = 'H';
            } else {
              englishLetter = 'EE';
            }
          } else if (greekLetter == cap_theta) {
            if (classical) {
              englishLetter = 'T';
            } else {
              englishLetter = 'TH';
            }
          } else if (greekLetter == cap_iota) {
            if (classical) {
              englishLetter = 'I|EE';
            } else if (direct) {
              englishLetter = 'I';
            } else {
              englishLetter = 'Y|EE';
            }
          } else if (greekLetter == cap_kappa) {
            englishLetter = 'K';
          } else if (greekLetter == cap_lambda) {
            englishLetter = 'L';
          } else if (greekLetter == cap_mu) {
            englishLetter = 'M';
          } else if (greekLetter == cap_nu) {
            englishLetter = 'N';
          } else if (greekLetter == cap_xi) {
            if (direct) {
              englishLetter = 'H';
            } else {
              englishLetter = 'KS|X';
            }
          } else if (greekLetter == cap_omicron) {
            englishLetter = 'O';
          } else if (greekLetter == cap_pi) {
            englishLetter = 'P';
          } else if (greekLetter == cap_rho) {
            englishLetter = 'R';
          } else if (greekLetter == cap_sigma) {
            if (classical && (
                NextChar(i, text) == cap_beta || NextChar(i, text) == low_beta || 
                NextChar(i, text) == cap_gamma || NextChar(i, text) == low_gamma || 
                NextChar(i, text) == cap_delta || NextChar(i, text) == low_delta || 
                NextChar(i, text) == cap_mu || NextChar(i, text) == low_mu)) {
              englishLetter = 'Z';
            } else {
              englishLetter = 'S';
            }
          } else if (greekLetter == cap_tau) {
            englishLetter = 'T';
          } else if (greekLetter == cap_upsilon) {
            // upsilon rule here comes from http://www.gutenberg.org/howto/greek/
            if (PrevChar(i, text) == cap_alpha || PrevChar(i, text) == low_alpha || 
                PrevChar(i, text) == cap_epsilon || PrevChar(i, text) == low_epsilon || 
                PrevChar(i, text) == cap_omicron || PrevChar(i, text) == low_omicron) { 
              englishLetter = 'U';
            } else {
              englishLetter = 'Y';
            }
          } else if (greekLetter == cap_phi) {
            if (classical) {
              englishLetter = 'P';
            } else {
              englishLetter = 'F|PH';
            }
          } else if (greekLetter == cap_chi) {
            if (classical) {
              englishLetter = 'K';
            } else {
              englishLetter = 'KH';
            }
          } else if (greekLetter == cap_psi) {
            englishLetter = 'PS';
          } else if (greekLetter == cap_omega) {
            englishLetter = 'O';
          } else if (greekLetter == BLANK) {
            englishLetter = ' ';
          }
          if (lowerCase) {
            englishLetter = englishLetter.toLowerCase();
          }

          var englishLetterArray = englishLetter.split('|'); // array of letter choices to be appended
          letterCount = englishLetterArray.length;
          wordCount = englishText.length;

          // duplicate englishText array for each letter choice to be appended
          for (var letterIndex=1; letterIndex<letterCount; letterIndex++) {
            for (var wordIndex=0; wordIndex<wordCount; wordIndex++) {
              englishText[letterIndex*wordCount + wordIndex] = englishText[wordIndex];
            }
          }

          // append a different letter choice for each of the above duplications in englishText array
          for (var letterIndex=0; letterIndex<letterCount; letterIndex++) {
            for (var wordIndex=0; wordIndex<wordCount; wordIndex++) {
              englishText[letterIndex*wordCount + wordIndex] += englishLetterArray[letterIndex];
            }
          }
        }

        var result = englishText.join(', ');
        if (navigator.appName == "Netscape" && result.length > 4094) {
          result = "line too long"; // javascript on N4 seems to choke if it's longer than that
        }
        return result;
      }
