// (c) patorjk.com
// If you're interested in a FIGlet JS lib give me a little while and I'll release a version. 
// I've got a design in my head for a new version but I need some spare time to put it together.
// This code is old and for now I'm not releasing it for use outside of this site.

// Create the console object if it doesn't exist (like in IE)
try { console.assert(1); } catch(e) { console = { log: function() {}, assert: function() {} } }

var defaultHorizontalSmush = true;

var hFullWidth = false;
var hUnivSmush = false;
var hFitting = false;
var hSmush1 = true;
var hSmush2 = false;
var hSmush3 = false;
var hSmush4 = false;
var hSmush5 = false;
var hSmush6 = false;

var vFullWidth = true;
var vUnivSmush = false;
var vFitting = false;
var vSmush1 = false;
var vSmush2 = false;
var vSmush3 = false;
var vSmush4 = false;
var vSmush5 = false;
var hardblank = "$";

var printDirection = 0;

var authorComments = "Author : Myflix<br/>Date   : 2003/10/18 21:37:14<br/>Version: 1.0<br/>-------------------------------------------------<br/><br/>-------------------------------------------------<br/>This font has been created using JavE's FIGlet font export assistant.<br/>Have a look at: http://www.jave.de<br/><br/>Permission is hereby given to modify this font, as long as the<br/>modifier's name is placed on a comment line.<br/><br/>---<br/><br/>Font modified June 17, 2007 by patorjk <br/>This was to widen the space character.<br/>";

var fontChars = new Array(95);

// char height
var charHeight = 7;

// basic font info
var fontPointSize = 10;
var fontFace = "monospace";

// author's initials
var initials = "";

// font file type extension
var fontFileExt = "flf";

for (var i = 0; i < 95; i++) 
{
	fontChars[i] = new Array(charHeight);
}

fontChars[0][0] = "$  $";
fontChars[0][1] = "$  $";
fontChars[0][2] = "$  $";
fontChars[0][3] = "$  $";
fontChars[0][4] = "$  $";
fontChars[0][5] = "$  $";
fontChars[0][6] = "$  $";
fontChars[1][0] = "  _    ";
fontChars[1][1] = "U|\"|u  ";
fontChars[1][2] = "\\| |/  ";
fontChars[1][3] = " |_|   ";
fontChars[1][4] = " (_)   ";
fontChars[1][5] = " |||_  ";
fontChars[1][6] = "(__)_) ";
fontChars[2][0] = "\"";
fontChars[2][1] = " ";
fontChars[2][2] = " ";
fontChars[2][3] = " ";
fontChars[2][4] = " ";
fontChars[2][5] = " ";
fontChars[2][6] = " ";
fontChars[3][0] = "";
fontChars[3][1] = " ";
fontChars[3][2] = " ";
fontChars[3][3] = " ";
fontChars[3][4] = " ";
fontChars[3][5] = " ";
fontChars[3][6] = " ";
fontChars[4][0] = "$";
fontChars[4][1] = " ";
fontChars[4][2] = " ";
fontChars[4][3] = " ";
fontChars[4][4] = " ";
fontChars[4][5] = " ";
fontChars[4][6] = " ";
fontChars[5][0] = "%";
fontChars[5][1] = " ";
fontChars[5][2] = " ";
fontChars[5][3] = " ";
fontChars[5][4] = " ";
fontChars[5][5] = " ";
fontChars[5][6] = " ";
fontChars[6][0] = "&";
fontChars[6][1] = " ";
fontChars[6][2] = " ";
fontChars[6][3] = " ";
fontChars[6][4] = " ";
fontChars[6][5] = " ";
fontChars[6][6] = " ";
fontChars[7][0] = " _  ";
fontChars[7][1] = "|\"| ";
fontChars[7][2] = "|_| ";
fontChars[7][3] = "    ";
fontChars[7][4] = "    ";
fontChars[7][5] = "    ";
fontChars[7][6] = "    ";
fontChars[8][0] = "(";
fontChars[8][1] = " ";
fontChars[8][2] = " ";
fontChars[8][3] = " ";
fontChars[8][4] = " ";
fontChars[8][5] = " ";
fontChars[8][6] = " ";
fontChars[9][0] = ")";
fontChars[9][1] = " ";
fontChars[9][2] = " ";
fontChars[9][3] = " ";
fontChars[9][4] = " ";
fontChars[9][5] = " ";
fontChars[9][6] = " ";
fontChars[10][0] = "*";
fontChars[10][1] = " ";
fontChars[10][2] = " ";
fontChars[10][3] = " ";
fontChars[10][4] = " ";
fontChars[10][5] = " ";
fontChars[10][6] = " ";
fontChars[11][0] = "+";
fontChars[11][1] = " ";
fontChars[11][2] = " ";
fontChars[11][3] = " ";
fontChars[11][4] = " ";
fontChars[11][5] = " ";
fontChars[11][6] = " ";
fontChars[12][0] = "    ";
fontChars[12][1] = "    ";
fontChars[12][2] = "    ";
fontChars[12][3] = "    ";
fontChars[12][4] = " _  ";
fontChars[12][5] = "(\") ";
fontChars[12][6] = " \\| ";
fontChars[13][0] = "        ";
fontChars[13][1] = "        ";
fontChars[13][2] = " U  u   ";
fontChars[13][3] = " /___\\  ";
fontChars[13][4] = "|__\"__| ";
fontChars[13][5] = "        ";
fontChars[13][6] = "        ";
fontChars[14][0] = "    ";
fontChars[14][1] = "    ";
fontChars[14][2] = "    ";
fontChars[14][3] = "    ";
fontChars[14][4] = " _  ";
fontChars[14][5] = "(\") ";
fontChars[14][6] = " \"  ";
fontChars[15][0] = "/";
fontChars[15][1] = " ";
fontChars[15][2] = " ";
fontChars[15][3] = " ";
fontChars[15][4] = " ";
fontChars[15][5] = " ";
fontChars[15][6] = " ";
fontChars[16][0] = "  ___      ";
fontChars[16][1] = " / _\"\\  u  ";
fontChars[16][2] = "| / U |/   ";
fontChars[16][3] = "| \\// |,-. ";
fontChars[16][4] = " \\___/(_/  ";
fontChars[16][5] = "  //       ";
fontChars[16][6] = " (__)      ";
fontChars[17][0] = "    _    ";
fontChars[17][1] = "   /\"|   ";
fontChars[17][2] = " u | |u  ";
fontChars[17][3] = "  \\| |/  ";
fontChars[17][4] = "   |_|   ";
fontChars[17][5] = " _//&lt;,-, ";
fontChars[17][6] = "(__)(_/  ";
fontChars[18][0] = "  ____    ";
fontChars[18][1] = " |___\"\\   ";
fontChars[18][2] = " U __) |  ";
fontChars[18][3] = " \\/ __/ \\ ";
fontChars[18][4] = " |_____|u ";
fontChars[18][5] = " &lt;&lt;  //   ";
fontChars[18][6] = "(__)(__)  ";
fontChars[19][0] = " _____   ";
fontChars[19][1] = "|___\"/u  ";
fontChars[19][2] = "U_|_ \\/  ";
fontChars[19][3] = " ___) |  ";
fontChars[19][4] = "|____/   ";
fontChars[19][5] = " _// \\\\  ";
fontChars[19][6] = "(__)(__) ";
fontChars[20][0] = " _  _    ";
fontChars[20][1] = "| ||\"|   ";
fontChars[20][2] = "| || |_  ";
fontChars[20][3] = "|__   _| ";
fontChars[20][4] = "  /|_|\\  ";
fontChars[20][5] = " u_|||_u ";
fontChars[20][6] = " (__)__) ";
fontChars[21][0] = "  ____    ";
fontChars[21][1] = "U|\"___|u  ";
fontChars[21][2] = "\\|___ \\/  ";
fontChars[21][3] = "  ___) |  ";
fontChars[21][4] = " |____/   ";
fontChars[21][5] = ",-,&gt;&gt;\\,-. ";
fontChars[21][6] = " \\ ) (_/  ";
fontChars[22][0] = "   __     ";
fontChars[22][1] = "U /\"/_ u  ";
fontChars[22][2] = "\\| '_ \\/  ";
fontChars[22][3] = " | (_) |  ";
fontChars[22][4] = "  \\___/   ";
fontChars[22][5] = " _// \\\\_  ";
fontChars[22][6] = "(__) (__) ";
fontChars[23][0] = "  _____  ";
fontChars[23][1] = " |___ \"| ";
fontChars[23][2] = "    / /  ";
fontChars[23][3] = " u// /\\  ";
fontChars[23][4] = "  /_/ U  ";
fontChars[23][5] = " &lt;&lt;&gt;&gt;_   ";
fontChars[23][6] = "(__)__)  ";
fontChars[24][0] = "  ___     ";
fontChars[24][1] = "U( \" ) u  ";
fontChars[24][2] = "\\/   \\/   ";
fontChars[24][3] = "| ( ) |   ";
fontChars[24][4] = " \\___/&gt;&gt;  ";
fontChars[24][5] = "  )( (__) ";
fontChars[24][6] = " (__)     ";
fontChars[25][0] = "   ___    ";
fontChars[25][1] = "  / _\"\\   ";
fontChars[25][2] = " | (_) |  ";
fontChars[25][3] = " /\\__, |\\ ";
fontChars[25][4] = "U&lt;&lt; |_/ u ";
fontChars[25][5] = "(__) )(   ";
fontChars[25][6] = "    (__)  ";
fontChars[26][0] = "    ";
fontChars[26][1] = " _  ";
fontChars[26][2] = "(\") ";
fontChars[26][3] = "    ";
fontChars[26][4] = " _  ";
fontChars[26][5] = "(\") ";
fontChars[26][6] = "    ";
fontChars[27][0] = ";";
fontChars[27][1] = " ";
fontChars[27][2] = " ";
fontChars[27][3] = " ";
fontChars[27][4] = " ";
fontChars[27][5] = " ";
fontChars[27][6] = " ";
fontChars[28][0] = "&lt;";
fontChars[28][1] = " ";
fontChars[28][2] = " ";
fontChars[28][3] = " ";
fontChars[28][4] = " ";
fontChars[28][5] = " ";
fontChars[28][6] = " ";
fontChars[29][0] = "=";
fontChars[29][1] = " ";
fontChars[29][2] = " ";
fontChars[29][3] = " ";
fontChars[29][4] = " ";
fontChars[29][5] = " ";
fontChars[29][6] = " ";
fontChars[30][0] = "&gt;";
fontChars[30][1] = " ";
fontChars[30][2] = " ";
fontChars[30][3] = " ";
fontChars[30][4] = " ";
fontChars[30][5] = " ";
fontChars[30][6] = " ";
fontChars[31][0] = "  ___    ";
fontChars[31][1] = " |__\"\\   ";
fontChars[31][2] = "U  / /u  ";
fontChars[31][3] = " \\|_|/   ";
fontChars[31][4] = "  (_)    ";
fontChars[31][5] = " _//\\,-. ";
fontChars[31][6] = "(__)( /  ";
fontChars[32][0] = "@";
fontChars[32][1] = " ";
fontChars[32][2] = " ";
fontChars[32][3] = " ";
fontChars[32][4] = " ";
fontChars[32][5] = " ";
fontChars[32][6] = " ";
fontChars[33][0] = "    _      ";
fontChars[33][1] = "U  /\"\\  u  ";
fontChars[33][2] = " \\/ _ \\/   ";
fontChars[33][3] = " / ___ \\   ";
fontChars[33][4] = "/_/   \\_\\  ";
fontChars[33][5] = " \\\\    &gt;&gt;  ";
fontChars[33][6] = "(__)  (__) ";
fontChars[34][0] = "   ____   ";
fontChars[34][1] = "U | __\")u ";
fontChars[34][2] = " \\|  _ \\/ ";
fontChars[34][3] = "  | |_) | ";
fontChars[34][4] = "  |____/  ";
fontChars[34][5] = " _|| \\\\_  ";
fontChars[34][6] = "(__) (__) ";
fontChars[35][0] = "   ____  ";
fontChars[35][1] = "U /\"___| ";
fontChars[35][2] = "\\| | u   ";
fontChars[35][3] = " | |/__  ";
fontChars[35][4] = "  \\____| ";
fontChars[35][5] = " _// \\\\  ";
fontChars[35][6] = "(__)(__) ";
fontChars[36][0] = "  ____    ";
fontChars[36][1] = " |  _\"\\   ";
fontChars[36][2] = "/| | | |  ";
fontChars[36][3] = "U| |_| |\\ ";
fontChars[36][4] = " |____/ u ";
fontChars[36][5] = "  |||_    ";
fontChars[36][6] = " (__)_)   ";
fontChars[37][0] = "U _____ u ";
fontChars[37][1] = "\\| ___\"|/ ";
fontChars[37][2] = " |  _|\"   ";
fontChars[37][3] = " | |___   ";
fontChars[37][4] = " |_____|  ";
fontChars[37][5] = " &lt;&lt;   &gt;&gt;  ";
fontChars[37][6] = "(__) (__) ";
fontChars[38][0] = "  _____  ";
fontChars[38][1] = " |\" ___| ";
fontChars[38][2] = "U| |_  u ";
fontChars[38][3] = "\\|  _|/  ";
fontChars[38][4] = " |_|     ";
fontChars[38][5] = " )(\\\\,-  ";
fontChars[38][6] = "(__)(_/  ";
fontChars[39][0] = "   ____   ";
fontChars[39][1] = "U /\"___|u ";
fontChars[39][2] = "\\| |  _ / ";
fontChars[39][3] = " | |_| |  ";
fontChars[39][4] = "  \\____|  ";
fontChars[39][5] = "  _)(|_   ";
fontChars[39][6] = " (__)__)  ";
fontChars[40][0] = "  _   _   ";
fontChars[40][1] = " |'| |'|  ";
fontChars[40][2] = "/| |_| |\\ ";
fontChars[40][3] = "U|  _  |u ";
fontChars[40][4] = " |_| |_|  ";
fontChars[40][5] = " //   \\\\  ";
fontChars[40][6] = "(_\") (\"_) ";
fontChars[41][0] = "              ";
fontChars[41][1] = "     ___      ";
fontChars[41][2] = "    |_\"_|     ";
fontChars[41][3] = "     | |      ";
fontChars[41][4] = "   U/| |\\u    ";
fontChars[41][5] = ".-,_|___|_,-. ";
fontChars[41][6] = " \\_)-' '-(_/  ";
fontChars[42][0] = "     _      ";
fontChars[42][1] = "  U |\"| u   ";
fontChars[42][2] = " _ \\| |/    ";
fontChars[42][3] = "| |_| |_,-. ";
fontChars[42][4] = " \\___/-(_/  ";
fontChars[42][5] = "  _//       ";
fontChars[42][6] = " (__)       ";
fontChars[43][0] = "   _  __    ";
fontChars[43][1] = "  |\"|/ /    ";
fontChars[43][2] = "  | ' /     ";
fontChars[43][3] = "U/| . \\\\u   ";
fontChars[43][4] = "  |_|\\_\\    ";
fontChars[43][5] = ",-,&gt;&gt; \\\\,-. ";
fontChars[43][6] = " \\.)   (_/  ";
fontChars[44][0] = "   _      ";
fontChars[44][1] = "  |\"|     ";
fontChars[44][2] = "U | | u   ";
fontChars[44][3] = " \\| |/__  ";
fontChars[44][4] = "  |_____| ";
fontChars[44][5] = "  //  \\\\  ";
fontChars[44][6] = " (_\")(\"_) ";
fontChars[45][0] = "  __  __   ";
fontChars[45][1] = "U|' \\/ '|u ";
fontChars[45][2] = "\\| |\\/| |/ ";
fontChars[45][3] = " | |  | |  ";
fontChars[45][4] = " |_|  |_|  ";
fontChars[45][5] = "&lt;&lt;,-,,-.   ";
fontChars[45][6] = " (./  \\.)  ";
fontChars[46][0] = "  _   _     ";
fontChars[46][1] = " | \\ |\"|    ";
fontChars[46][2] = "&lt;|  \\| |&gt;   ";
fontChars[46][3] = "U| |\\  |u   ";
fontChars[46][4] = " |_| \\_|    ";
fontChars[46][5] = " ||   \\\\,-. ";
fontChars[46][6] = " (_\")  (_/  ";
fontChars[47][0] = "   U  ___ u ";
fontChars[47][1] = "    \\/\"_ \\/ ";
fontChars[47][2] = "    | | | | ";
fontChars[47][3] = ".-,_| |_| | ";
fontChars[47][4] = " \\_)-\\___/  ";
fontChars[47][5] = "      \\\\    ";
fontChars[47][6] = "     (__)   ";
fontChars[48][0] = "  ____    ";
fontChars[48][1] = "U|  _\"\\ u ";
fontChars[48][2] = "\\| |_) |/ ";
fontChars[48][3] = " |  __/   ";
fontChars[48][4] = " |_|      ";
fontChars[48][5] = " ||&gt;&gt;_    ";
fontChars[48][6] = "(__)__)   ";
fontChars[49][0] = "   ___    ";
fontChars[49][1] = "  / \" \\   ";
fontChars[49][2] = " | |\"| |  ";
fontChars[49][3] = "/| |_| |\\ ";
fontChars[49][4] = "U \\__\\_\\u ";
fontChars[49][5] = "   \\\\//   ";
fontChars[49][6] = "  (_(__)  ";
fontChars[50][0] = "   ____     ";
fontChars[50][1] = "U |  _\"\\ u  ";
fontChars[50][2] = " \\| |_) |/  ";
fontChars[50][3] = "  |  _ &lt;    ";
fontChars[50][4] = "  |_| \\_\\   ";
fontChars[50][5] = "  //   \\\\_  ";
fontChars[50][6] = " (__)  (__) ";
fontChars[51][0] = "  ____     ";
fontChars[51][1] = " / __\"| u  ";
fontChars[51][2] = "&lt;\\___ \\/   ";
fontChars[51][3] = " u___) |   ";
fontChars[51][4] = " |____/&gt;&gt;  ";
fontChars[51][5] = "  )(  (__) ";
fontChars[51][6] = " (__)      ";
fontChars[52][0] = "  _____   ";
fontChars[52][1] = " |_ \" _|  ";
fontChars[52][2] = "   | |    ";
fontChars[52][3] = "  /| |\\   ";
fontChars[52][4] = " u |_|U   ";
fontChars[52][5] = " _// \\\\_  ";
fontChars[52][6] = "(__) (__) ";
fontChars[53][0] = "   _   _  ";
fontChars[53][1] = "U |\"|u| | ";
fontChars[53][2] = " \\| |\\| | ";
fontChars[53][3] = "  | |_| | ";
fontChars[53][4] = " &lt;&lt;\\___/  ";
fontChars[53][5] = "(__) )(   ";
fontChars[53][6] = "    (__)  ";
fontChars[54][0] = " __     __   ";
fontChars[54][1] = " \\ \\   /\"/u  ";
fontChars[54][2] = "  \\ \\ / //   ";
fontChars[54][3] = "  /\\ V /_,-. ";
fontChars[54][4] = " U  \\_/-(_/  ";
fontChars[54][5] = "   //        ";
fontChars[54][6] = "  (__)       ";
fontChars[55][0] = "              ";
fontChars[55][1] = " __        __ ";
fontChars[55][2] = " \\\"\\      /\"/ ";
fontChars[55][3] = " /\\ \\ /\\ / /\\ ";
fontChars[55][4] = "U  \\ V  V /  U";
fontChars[55][5] = ".-,_\\ /\\ /_,-.";
fontChars[55][6] = " \\_)-'  '-(_/ ";
fontChars[56][0] = "  __  __   ";
fontChars[56][1] = "  \\ \\/\"/   ";
fontChars[56][2] = "  /\\  /\\   ";
fontChars[56][3] = " U /  \\ u  ";
fontChars[56][4] = "  /_/\\_\\   ";
fontChars[56][5] = ",-,&gt;&gt; \\\\_  ";
fontChars[56][6] = " \\_)  (__) ";
fontChars[57][0] = "  __   __ ";
fontChars[57][1] = "  \\ \\ / / ";
fontChars[57][2] = "   \\ V /  ";
fontChars[57][3] = "  U_|\"|_u ";
fontChars[57][4] = "    |_|   ";
fontChars[57][5] = ".-,//|(_  ";
fontChars[57][6] = " \\_) (__) ";
fontChars[58][0] = "  _____  ";
fontChars[58][1] = " |\"_  /u ";
fontChars[58][2] = " U / //  ";
fontChars[58][3] = " \\/ /_   ";
fontChars[58][4] = " /____|  ";
fontChars[58][5] = " _//&lt;&lt;,- ";
fontChars[58][6] = "(__) (_/ ";
fontChars[59][0] = "[";
fontChars[59][1] = " ";
fontChars[59][2] = " ";
fontChars[59][3] = " ";
fontChars[59][4] = " ";
fontChars[59][5] = " ";
fontChars[59][6] = " ";
fontChars[60][0] = "\\";
fontChars[60][1] = " ";
fontChars[60][2] = " ";
fontChars[60][3] = " ";
fontChars[60][4] = " ";
fontChars[60][5] = " ";
fontChars[60][6] = " ";
fontChars[61][0] = "]";
fontChars[61][1] = " ";
fontChars[61][2] = " ";
fontChars[61][3] = " ";
fontChars[61][4] = " ";
fontChars[61][5] = " ";
fontChars[61][6] = " ";
fontChars[62][0] = "U _ u ";
fontChars[62][1] = "\\/\"\\/ ";
fontChars[62][2] = "|/`\\| ";
fontChars[62][3] = "      ";
fontChars[62][4] = "      ";
fontChars[62][5] = "      ";
fontChars[62][6] = "      ";
fontChars[63][0] = "_";
fontChars[63][1] = " ";
fontChars[63][2] = " ";
fontChars[63][3] = " ";
fontChars[63][4] = " ";
fontChars[63][5] = " ";
fontChars[63][6] = " ";
fontChars[64][0] = " ___ ";
fontChars[64][1] = "(\" / ";
fontChars[64][2] = " )/  ";
fontChars[64][3] = "     ";
fontChars[64][4] = "     ";
fontChars[64][5] = "     ";
fontChars[64][6] = "     ";
fontChars[65][0] = "    _      ";
fontChars[65][1] = "U  /\"\\  u  ";
fontChars[65][2] = " \\/ _ \\/   ";
fontChars[65][3] = " / ___ \\   ";
fontChars[65][4] = "/_/   \\_\\  ";
fontChars[65][5] = " \\\\    &gt;&gt;  ";
fontChars[65][6] = "(__)  (__) ";
fontChars[66][0] = "   ____   ";
fontChars[66][1] = "U | __\")u ";
fontChars[66][2] = " \\|  _ \\/ ";
fontChars[66][3] = "  | |_) | ";
fontChars[66][4] = "  |____/  ";
fontChars[66][5] = " _|| \\\\_  ";
fontChars[66][6] = "(__) (__) ";
fontChars[67][0] = "   ____  ";
fontChars[67][1] = "U /\"___| ";
fontChars[67][2] = "\\| | u   ";
fontChars[67][3] = " | |/__  ";
fontChars[67][4] = "  \\____| ";
fontChars[67][5] = " _// \\\\  ";
fontChars[67][6] = "(__)(__) ";
fontChars[68][0] = "  ____    ";
fontChars[68][1] = " |  _\"\\   ";
fontChars[68][2] = "/| | | |  ";
fontChars[68][3] = "U| |_| |\\ ";
fontChars[68][4] = " |____/ u ";
fontChars[68][5] = "  |||_    ";
fontChars[68][6] = " (__)_)   ";
fontChars[69][0] = "U _____ u ";
fontChars[69][1] = "\\| ___\"|/ ";
fontChars[69][2] = " |  _|\"   ";
fontChars[69][3] = " | |___   ";
fontChars[69][4] = " |_____|  ";
fontChars[69][5] = " &lt;&lt;   &gt;&gt;  ";
fontChars[69][6] = "(__) (__) ";
fontChars[70][0] = "  _____  ";
fontChars[70][1] = " |\" ___| ";
fontChars[70][2] = "U| |_  u ";
fontChars[70][3] = "\\|  _|/  ";
fontChars[70][4] = " |_|     ";
fontChars[70][5] = " )(\\\\,-  ";
fontChars[70][6] = "(__)(_/  ";
fontChars[71][0] = "   ____   ";
fontChars[71][1] = "U /\"___|u ";
fontChars[71][2] = "\\| |  _ / ";
fontChars[71][3] = " | |_| |  ";
fontChars[71][4] = "  \\____|  ";
fontChars[71][5] = "  _)(|_   ";
fontChars[71][6] = " (__)__)  ";
fontChars[72][0] = "  _   _   ";
fontChars[72][1] = " |'| |'|  ";
fontChars[72][2] = "/| |_| |\\ ";
fontChars[72][3] = "U|  _  |u ";
fontChars[72][4] = " |_| |_|  ";
fontChars[72][5] = " //   \\\\  ";
fontChars[72][6] = "(_\") (\"_) ";
fontChars[73][0] = "              ";
fontChars[73][1] = "     ___      ";
fontChars[73][2] = "    |_\"_|     ";
fontChars[73][3] = "     | |      ";
fontChars[73][4] = "   U/| |\\u    ";
fontChars[73][5] = ".-,_|___|_,-. ";
fontChars[73][6] = " \\_)-' '-(_/  ";
fontChars[74][0] = "     _      ";
fontChars[74][1] = "  U |\"| u   ";
fontChars[74][2] = " _ \\| |/    ";
fontChars[74][3] = "| |_| |_,-. ";
fontChars[74][4] = " \\___/-(_/  ";
fontChars[74][5] = "  _//       ";
fontChars[74][6] = " (__)       ";
fontChars[75][0] = "   _  __    ";
fontChars[75][1] = "  |\"|/ /    ";
fontChars[75][2] = "  | ' /     ";
fontChars[75][3] = "U/| . \\\\u   ";
fontChars[75][4] = "  |_|\\_\\    ";
fontChars[75][5] = ",-,&gt;&gt; \\\\,-. ";
fontChars[75][6] = " \\.)   (_/  ";
fontChars[76][0] = "   _      ";
fontChars[76][1] = "  |\"|     ";
fontChars[76][2] = "U | | u   ";
fontChars[76][3] = " \\| |/__  ";
fontChars[76][4] = "  |_____| ";
fontChars[76][5] = "  //  \\\\  ";
fontChars[76][6] = " (_\")(\"_) ";
fontChars[77][0] = "  __  __   ";
fontChars[77][1] = "U|' \\/ '|u ";
fontChars[77][2] = "\\| |\\/| |/ ";
fontChars[77][3] = " | |  | |  ";
fontChars[77][4] = " |_|  |_|  ";
fontChars[77][5] = "&lt;&lt;,-,,-.   ";
fontChars[77][6] = " (./  \\.)  ";
fontChars[78][0] = "  _   _     ";
fontChars[78][1] = " | \\ |\"|    ";
fontChars[78][2] = "&lt;|  \\| |&gt;   ";
fontChars[78][3] = "U| |\\  |u   ";
fontChars[78][4] = " |_| \\_|    ";
fontChars[78][5] = " ||   \\\\,-. ";
fontChars[78][6] = " (_\")  (_/  ";
fontChars[79][0] = "   U  ___ u ";
fontChars[79][1] = "    \\/\"_ \\/ ";
fontChars[79][2] = "    | | | | ";
fontChars[79][3] = ".-,_| |_| | ";
fontChars[79][4] = " \\_)-\\___/  ";
fontChars[79][5] = "      \\\\    ";
fontChars[79][6] = "     (__)   ";
fontChars[80][0] = "  ____    ";
fontChars[80][1] = "U|  _\"\\ u ";
fontChars[80][2] = "\\| |_) |/ ";
fontChars[80][3] = " |  __/   ";
fontChars[80][4] = " |_|      ";
fontChars[80][5] = " ||&gt;&gt;_    ";
fontChars[80][6] = "(__)__)   ";
fontChars[81][0] = "   ___    ";
fontChars[81][1] = "  / \" \\   ";
fontChars[81][2] = " | |\"| |  ";
fontChars[81][3] = "/| |_| |\\ ";
fontChars[81][4] = "U \\__\\_\\u ";
fontChars[81][5] = "   \\\\//   ";
fontChars[81][6] = "  (_(__)  ";
fontChars[82][0] = "   ____     ";
fontChars[82][1] = "U |  _\"\\ u  ";
fontChars[82][2] = " \\| |_) |/  ";
fontChars[82][3] = "  |  _ &lt;    ";
fontChars[82][4] = "  |_| \\_\\   ";
fontChars[82][5] = "  //   \\\\_  ";
fontChars[82][6] = " (__)  (__) ";
fontChars[83][0] = "  ____     ";
fontChars[83][1] = " / __\"| u  ";
fontChars[83][2] = "&lt;\\___ \\/   ";
fontChars[83][3] = " u___) |   ";
fontChars[83][4] = " |____/&gt;&gt;  ";
fontChars[83][5] = "  )(  (__) ";
fontChars[83][6] = " (__)      ";
fontChars[84][0] = "  _____   ";
fontChars[84][1] = " |_ \" _|  ";
fontChars[84][2] = "   | |    ";
fontChars[84][3] = "  /| |\\   ";
fontChars[84][4] = " u |_|U   ";
fontChars[84][5] = " _// \\\\_  ";
fontChars[84][6] = "(__) (__) ";
fontChars[85][0] = "   _   _  ";
fontChars[85][1] = "U |\"|u| | ";
fontChars[85][2] = " \\| |\\| | ";
fontChars[85][3] = "  | |_| | ";
fontChars[85][4] = " &lt;&lt;\\___/  ";
fontChars[85][5] = "(__) )(   ";
fontChars[85][6] = "    (__)  ";
fontChars[86][0] = " __     __   ";
fontChars[86][1] = " \\ \\   /\"/u  ";
fontChars[86][2] = "  \\ \\ / //   ";
fontChars[86][3] = "  /\\ V /_,-. ";
fontChars[86][4] = " U  \\_/-(_/  ";
fontChars[86][5] = "   //        ";
fontChars[86][6] = "  (__)       ";
fontChars[87][0] = "              ";
fontChars[87][1] = " __        __ ";
fontChars[87][2] = " \\\"\\      /\"/ ";
fontChars[87][3] = " /\\ \\ /\\ / /\\ ";
fontChars[87][4] = "U  \\ V  V /  U";
fontChars[87][5] = ".-,_\\ /\\ /_,-.";
fontChars[87][6] = " \\_)-'  '-(_/ ";
fontChars[88][0] = "  __  __   ";
fontChars[88][1] = "  \\ \\/\"/   ";
fontChars[88][2] = "  /\\  /\\   ";
fontChars[88][3] = " U /  \\ u  ";
fontChars[88][4] = "  /_/\\_\\   ";
fontChars[88][5] = ",-,&gt;&gt; \\\\_  ";
fontChars[88][6] = " \\_)  (__) ";
fontChars[89][0] = "  __   __ ";
fontChars[89][1] = "  \\ \\ / / ";
fontChars[89][2] = "   \\ V /  ";
fontChars[89][3] = "  U_|\"|_u ";
fontChars[89][4] = "    |_|   ";
fontChars[89][5] = ".-,//|(_  ";
fontChars[89][6] = " \\_) (__) ";
fontChars[90][0] = "  _____  ";
fontChars[90][1] = " |\"_  /u ";
fontChars[90][2] = " U / //  ";
fontChars[90][3] = " \\/ /_   ";
fontChars[90][4] = " /____|  ";
fontChars[90][5] = " _//&lt;&lt;,- ";
fontChars[90][6] = "(__) (_/ ";
fontChars[91][0] = "    __  ";
fontChars[91][1] = "u  /\"/U ";
fontChars[91][2] = " \\| |/  ";
fontChars[91][3] = " &lt; &lt;    ";
fontChars[91][4] = "  | |   ";
fontChars[91][5] = " &lt;&lt;\\_\\  ";
fontChars[91][6] = "(__)_)  ";
fontChars[92][0] = "|";
fontChars[92][1] = " ";
fontChars[92][2] = " ";
fontChars[92][3] = " ";
fontChars[92][4] = " ";
fontChars[92][5] = " ";
fontChars[92][6] = " ";
fontChars[93][0] = "__      ";
fontChars[93][1] = "\\\"\\  u  ";
fontChars[93][2] = " | |/   ";
fontChars[93][3] = "/ &gt; &gt;   ";
fontChars[93][4] = "U| |    ";
fontChars[93][5] = "/_/&gt;&gt;_  ";
fontChars[93][6] = " (_(__) ";
fontChars[94][0] = "~";
fontChars[94][1] = " ";
fontChars[94][2] = " ";
fontChars[94][3] = " ";
fontChars[94][4] = " ";
fontChars[94][5] = " ";
fontChars[94][6] = " ";

// this variable lets us know the last page the user clicked
// this is useful when changing colors of the display (background / text color)

// 0 = output page
// 1 = author page
// 2 = test all page

var userLastClicked = 0; // authorInfoLastClicked 

// For use with AJAX
var xmlHttp = null;

// TESTING ALL globals
var oldFontName = "";
var curFontName = "a non-empty string";
var testAllIndex = 0;
var testingAll = false;

var browser=navigator.appName;
var IE6 = false;
if (browser == "Microsoft Internet Explorer")
{
  var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
}

// trims the whites spaces in front and in back of the string
String.prototype.trim = function() 
{ 
	return this.replace(/^\s+|\s+$/g, ''); 
}

String.prototype.urlsToHyperlinks = function() 
{ 
 return this.replace(/\bhttp:[^ \)\n\<,]+/g, "<a href='$&' target='_new'>$&</a>"); 
}

// reverses a string
String.prototype.reverse = function() 
{
	var ret = ""; 
	for (var i = 0; i <= this.length; i++) 
	{ 
		ret = this.charAt(i) + ret; 
	} 
	return ret;
}

var fL = [];
var ii = 0;

// font count: 318 

fL[ii++] = "1Row.flf";
fL[ii++] = "3-D.flf";
fL[ii++] = "3D Diagonal.flf";
fL[ii++] = "3x5.flf";
fL[ii++] = "4Max.flf";
fL[ii++] = "5 Line Oblique.flf";

fL[ii++] = "AMC 3 Line.flf";
fL[ii++] = "AMC 3 Liv1.flf";
fL[ii++] = "AMC AAA01.flf";
fL[ii++] = "AMC Neko.flf";
fL[ii++] = "AMC Razor.flf";
fL[ii++] = "AMC Razor2.flf";
fL[ii++] = "AMC Slash.flf";
fL[ii++] = "AMC Slider.flf";
fL[ii++] = "AMC Thin.flf";
fL[ii++] = "AMC Tubes.flf";
fL[ii++] = "AMC Untitled.flf";
fL[ii++] = "ASCII New Roman.flf";
fL[ii++] = "Abraxis-Big.aol";
fL[ii++] = "Abraxis-Small.aol";
fL[ii++] = "Acrobatic.flf";
fL[ii++] = "Alligator.flf";
fL[ii++] = "Alligator2.flf";
fL[ii++] = "Alpha.flf";
fL[ii++] = "Alphabet.flf";
fL[ii++] = "Arrows.flf";
fL[ii++] = "Avatar.flf";

fL[ii++] = "B1FF.flf";
fL[ii++] = "Banner.flf";
fL[ii++] = "Banner3-D.flf";
fL[ii++] = "Banner3.flf";
fL[ii++] = "Banner4.flf";
fL[ii++] = "Barbwire.flf";
fL[ii++] = "Basic.flf";
fL[ii++] = "Bear.flf";
fL[ii++] = "Bell.flf";
fL[ii++] = "Benjamin.flf";
fL[ii++] = "Bent.aol";
fL[ii++] = "Big Chief.flf";
fL[ii++] = "Big Money-ne.flf";
fL[ii++] = "Big Money-nw.flf";
fL[ii++] = "Big Money-se.flf";
fL[ii++] = "Big Money-sw.flf";
fL[ii++] = "Big.flf";
fL[ii++] = "Bigfig.flf";
fL[ii++] = "Binary.flf";
fL[ii++] = "Blest.aol";
fL[ii++] = "Block.flf";
fL[ii++] = "Blocks.flf";
fL[ii++] = "Boie.aol";
fL[ii++] = "Boie2.aol";
fL[ii++] = "Bolger.flf";
fL[ii++] = "Bone's Font.aol";
fL[ii++] = "Braced.flf";
fL[ii++] = "Bright.flf";
fL[ii++] = "Broadway KB.flf";
fL[ii++] = "Broadway.flf";
fL[ii++] = "Bubble.flf";
fL[ii++] = "Bulbhead.flf";

fL[ii++] = "CaMiZ.aol";
fL[ii++] = "Caligraphy.flf";
fL[ii++] = "Caligraphy2.flf";
fL[ii++] = "Cards.flf";
fL[ii++] = "Catwalk.flf";
fL[ii++] = "CeA.aol";
fL[ii++] = "CeA2.aol";
fL[ii++] = "Cheese.aol";
fL[ii++] = "Chiseled.flf";
fL[ii++] = "Chunky.flf";
fL[ii++] = "Coinstak.flf";
fL[ii++] = "Cola.flf";
fL[ii++] = "Colossal.flf";
fL[ii++] = "Computer.flf";
fL[ii++] = "Contessa.flf";
fL[ii++] = "Contrast.flf";
fL[ii++] = "Cosmike.flf";
fL[ii++] = "Crawford.flf";
fL[ii++] = "Crawford2.flf";
fL[ii++] = "Crazy.flf";
fL[ii++] = "Cricket.flf";
fL[ii++] = "Cursive.flf";
fL[ii++] = "Cyberlarge.flf";
fL[ii++] = "Cybermedium.flf";
fL[ii++] = "Cybersmall.flf";
fL[ii++] = "Cygnet.flf";

fL[ii++] = "DANC4.flf";
fL[ii++] = "DWhistled.flf";
fL[ii++] = "DaiR.aol";
fL[ii++] = "Dancing Font.flf";
fL[ii++] = "Decimal.flf";
fL[ii++] = "Def Leppard.flf";
fL[ii++] = "Diamond.flf";
fL[ii++] = "Diet Cola.flf";
fL[ii++] = "Digital.flf";
fL[ii++] = "Doh.flf";
fL[ii++] = "Doom.flf";
fL[ii++] = "Dot Matrix.flf";
fL[ii++] = "Double Shorts.flf";
fL[ii++] = "Double.flf";
fL[ii++] = "Dr Pepper.flf";

fL[ii++] = "Efti Chess.flf";
fL[ii++] = "Efti Font.flf";
fL[ii++] = "Efti Italic.flf";
fL[ii++] = "Efti Piti.flf";
fL[ii++] = "Efti Robot.flf";
fL[ii++] = "Efti Wall.flf";
fL[ii++] = "Efti Water.flf";
fL[ii++] = "Epic.flf";

fL[ii++] = "Fender.flf";

fL[ii++] = "Filter.flf";
fL[ii++] = "Filth.aol";
fL[ii++] = "Fire Font-k.flf";
fL[ii++] = "Fire Font-s.flf";
fL[ii++] = "Flipped.flf";
fL[ii++] = "Flower Power.flf";
fL[ii++] = "FoGG.aol";
fL[ii++] = "Four Tops.flf";
fL[ii++] = "Fraktur.flf";
fL[ii++] = "Fun Face.flf";
fL[ii++] = "Fun Faces.flf";
fL[ii++] = "Fuzzy.flf";

fL[ii++] = "Galactus.aol";
fL[ii++] = "Georgi16.flf";
fL[ii++] = "Georgia11.flf";
fL[ii++] = "Ghost.flf";
fL[ii++] = "Ghoulish.flf";
fL[ii++] = "Glenyn.flf";
fL[ii++] = "Glue.aol";
fL[ii++] = "Goofy.flf";
fL[ii++] = "Gothic.flf";
fL[ii++] = "Graceful.flf";
fL[ii++] = "Gradient.flf";
fL[ii++] = "Graffiti.flf";
fL[ii++] = "Greek.flf";

fL[ii++] = "HeX's Font.aol";
fL[ii++] = "Heart Left.flf";
fL[ii++] = "Heart Right.flf";
fL[ii++] = "Hellfire.aol";
fL[ii++] = "Henry 3D.flf";
fL[ii++] = "Hex.flf";
fL[ii++] = "Hieroglyphs.flf";
fL[ii++] = "Hollywood.flf";
fL[ii++] = "Horizontal Left.flf";
fL[ii++] = "Horizontal Right.flf";

fL[ii++] = "ICL-1900.flf";
fL[ii++] = "Impossible.flf";
fL[ii++] = "Invita.flf";
fL[ii++] = "Isometric1.flf";
fL[ii++] = "Isometric2.flf";
fL[ii++] = "Isometric3.flf";
fL[ii++] = "Isometric4.flf";
fL[ii++] = "Italic.flf";
fL[ii++] = "Ivrit.flf";
fL[ii++] = "JS Block Letters.flf";
fL[ii++] = "JS Bracket Letters.flf";
fL[ii++] = "JS Capital Curves.flf";
fL[ii++] = "JS Cursive.flf";
fL[ii++] = "JS Stick Letters.flf";
fL[ii++] = "Jacky.flf";
fL[ii++] = "Jazmine.flf";
fL[ii++] = "Jerusalem.flf";

fL[ii++] = "Katakana.flf";
fL[ii++] = "Kban.flf";
fL[ii++] = "Keyboard.flf";
fL[ii++] = "Knob.flf";
fL[ii++] = "Konto Slant.flf";
fL[ii++] = "Konto.flf";
fL[ii++] = "LCD.flf";
fL[ii++] = "Larry 3D.flf";
fL[ii++] = "Lean.flf";
fL[ii++] = "Letters.flf";
fL[ii++] = "Lil Devil.flf";
fL[ii++] = "Line Blocks.flf";
fL[ii++] = "Linux.flf";
fL[ii++] = "Lockergnome.flf";

fL[ii++] = "Madrid.flf";
fL[ii++] = "Marquee.flf";
fL[ii++] = "Maxfour.flf";
fL[ii++] = "MeDi.aol";
fL[ii++] = "Mer.aol";
fL[ii++] = "Merlin1.flf";
fL[ii++] = "Merlin2.flf";
fL[ii++] = "Mike.flf";
fL[ii++] = "Mini.flf";
fL[ii++] = "Mirror.flf";
fL[ii++] = "Mnemonic.flf";
fL[ii++] = "Modular.flf";
fL[ii++] = "Morse.flf";
fL[ii++] = "Morse2.flf";
fL[ii++] = "Moscow.flf";
fL[ii++] = "Mshebrew210.flf";
fL[ii++] = "Muzzle.flf";

fL[ii++] = "NScript.flf";
fL[ii++] = "NT Greek.flf";
fL[ii++] = "NV Script.flf";
fL[ii++] = "Nancyj-Fancy.flf";
fL[ii++] = "Nancyj-Improved.flf";
fL[ii++] = "Nancyj-Underlined.flf";
fL[ii++] = "Nancyj.flf";
fL[ii++] = "Nipples.flf";

fL[ii++] = "O8.flf";
fL[ii++] = "OS2.flf";
fL[ii++] = "Octal.flf";
fL[ii++] = "Ogre.flf";
fL[ii++] = "Old Banner.flf";

fL[ii++] = "Pawp.flf";
fL[ii++] = "Peaks Slant.flf";
fL[ii++] = "Peaks.flf";
fL[ii++] = "Pebbles.flf";
fL[ii++] = "Pepper.flf";
fL[ii++] = "Poison.flf";
fL[ii++] = "PsY.aol";
fL[ii++] = "PsY2.aol";
fL[ii++] = "Puffy.flf";
fL[ii++] = "Puzzle.flf";
fL[ii++] = "Pyramid.flf";

fL[ii++] = "Rammstein.flf";
fL[ii++] = "Rectangles.flf";
fL[ii++] = "Red Phoenix.flf";
fL[ii++] = "Reeko Font 1.aol";
fL[ii++] = "Relief.flf";
fL[ii++] = "Relief2.flf";
fL[ii++] = "Reverse.flf";
fL[ii++] = "Ribbit.aol";
fL[ii++] = "Ribbit2.aol";
fL[ii++] = "Ribbit3.aol";
fL[ii++] = "Roman.flf";
fL[ii++] = "Rot13.flf";
fL[ii++] = "Rotated.flf";
fL[ii++] = "Rounded.flf";
fL[ii++] = "Rowan Cap.flf";
fL[ii++] = "Rozzo.flf";
fL[ii++] = "Runic.flf";
fL[ii++] = "Runyc.flf";

fL[ii++] = "S Blood.flf";
fL[ii++] = "SL Script.flf";
fL[ii++] = "Santa Clara.flf";
fL[ii++] = "Script.flf";
fL[ii++] = "Serifcap.flf";
fL[ii++] = "Shadow.flf";
fL[ii++] = "Shimrod.flf";
fL[ii++] = "Short.flf";
fL[ii++] = "Slant Relief.flf";
fL[ii++] = "Slant.flf";
fL[ii++] = "Slide.flf";
fL[ii++] = "Small Caps.flf";
fL[ii++] = "Small Isometric1.flf";
fL[ii++] = "Small Keyboard.flf";
fL[ii++] = "Small Poison.flf";
fL[ii++] = "Small Script.flf";
fL[ii++] = "Small Shadow.flf";
fL[ii++] = "Small Slant.flf";
fL[ii++] = "Small Tengwar.flf";
fL[ii++] = "Small.flf";
fL[ii++] = "Soft.flf";
fL[ii++] = "Sony.aol";
fL[ii++] = "Speed.flf";
fL[ii++] = "Spliff.flf";
fL[ii++] = "Stacey.flf";
fL[ii++] = "Stampate.flf";
fL[ii++] = "Stampatello.flf";
fL[ii++] = "Standard.flf";
fL[ii++] = "Star Strips.flf";
fL[ii++] = "Star Wars.flf";
fL[ii++] = "Stellar.flf";
fL[ii++] = "Stforek.flf";
fL[ii++] = "Stick Letters.flf";
fL[ii++] = "Stop.flf";
fL[ii++] = "Straight.flf";
fL[ii++] = "Sub-Zero.flf";
fL[ii++] = "Swamp Land.flf";
fL[ii++] = "Swan.flf";
fL[ii++] = "Sweet.flf";

fL[ii++] = "TRaC Mini.aol";
fL[ii++] = "TRaC Tiny.aol";
fL[ii++] = "TRaC's Old School Font.aol";
fL[ii++] = "TRaC.aol";
fL[ii++] = "Tanja.flf";
fL[ii++] = "Tengwar.flf";
fL[ii++] = "Term.flf";
fL[ii++] = "Test1.flf";
fL[ii++] = "Thick.flf";
fL[ii++] = "Thin.flf";
fL[ii++] = "Thorned.flf";
fL[ii++] = "Three Point.flf";
fL[ii++] = "Ticks Slant.flf";
fL[ii++] = "Ticks.flf";
fL[ii++] = "Tiles.flf";
fL[ii++] = "Tinker-Toy.flf";
fL[ii++] = "Tombstone.flf";
fL[ii++] = "Train.flf";
fL[ii++] = "Trek.flf";
fL[ii++] = "Tsalagi.flf";
fL[ii++] = "Tubular.flf";
fL[ii++] = "Twiggy.aol";
fL[ii++] = "Twisted.flf";
fL[ii++] = "Two Point.flf";

fL[ii++] = "USA Flag.flf";
fL[ii++] = "Univers.flf";

fL[ii++] = "Varsity.flf";

fL[ii++] = "Wavy.flf";
fL[ii++] = "Weird.flf";
fL[ii++] = "Wet Letter.flf";
fL[ii++] = "Whimsy.flf";
fL[ii++] = "Wow.flf";

fL[ii++] = "X-Pose.aol";
fL[ii++] = "X99.aol";
fL[ii++] = "X992.aol";

fL[ii++] = "Zodi.aol";

function updateFonts()
{
  parent.controlFrame.document.getElementById("fontType").value = document.getElementById("dropdownFontTypes").value;
  
  parent.controlFrame.document.getElementById("isUpdatingFontList").value = "true";

  // Remember the last font we looked at 
  var lastSelectedFont = parent.controlFrame.document.getElementById("fonts").value;
  var lastSelectedIndex = -1;

  console.log("lastSelectedFont = " + lastSelectedFont);

  // Clear the font list (except for the first item "___TEST ALL___"

	while(parent.controlFrame.document.getElementById("fonts").length > 1) {
		parent.controlFrame.document.getElementById("fonts").options[parent.controlFrame.document.getElementById("fonts").length-1] = null;
	}

  var fontIndex = 1;

  for (var i = 0; i < fL.length; i++)
  {
    var fontNameParts = fL[i].split(".");
    var fontName = fontNameParts[0];
    var fontExt = fontNameParts[1];
    if (fontExt == document.getElementById("dropdownFontTypes").value || document.getElementById("dropdownFontTypes").value == "all")
    {
			var option1 = new Option(fontName, fL[i], false, false);
			parent.controlFrame.document.getElementById("fonts").options[parent.controlFrame.document.getElementById("fonts").length] = option1;	
			
			// Was this the font we previously had selected?
			if (fL[i] == lastSelectedFont) 
			{
			  lastSelectedIndex = fontIndex;
			}
			
			fontIndex++;
    } 
  }
  
  if (lastSelectedIndex == -1)
  {
    lastSelectedIndex = 1;
  }
  
  parent.controlFrame.document.getElementById("fonts").selectedIndex = lastSelectedIndex;
  
  parent.controlFrame.document.getElementById("isUpdatingFontList").value = "false";
  parent.controlFrame.document.getElementById("shouldUpdateFont").value = "true";
  
  updateFont(document.fontSettings.fonts.value);
}

function testAll_switchFont(fontName)
{
  var fontFound = false;
  var fontFoundIndex = 1;
  for (var i = 0; i < parent.controlFrame.document.getElementById("fonts").length; i++)
  {
    if (parent.controlFrame.document.getElementById("fonts").options[i].value == fontName)
    {
      fontFound = true;  
      fontFoundIndex = i;
      break;
    }
  }
  
  if (fontFound == true)
  {
    parent.controlFrame.document.getElementById("fonts").selectedIndex = fontFoundIndex;
    updateFont(fontName);
  }
    
}

/**
 * Function: setupControls()
 *
 * About: This function is called when we want to set the default values for the buttons that determine the color
 *        information in the output document.
 *
 **/
function setupControls() 
{
	checkTopWindow();

	var color;
	color = document.fontSettings.bgColorVal.value;
	document.fontSettings.bgColor.style.backgroundColor = color;
	document.fontSettings.bgColor.style.color = InverseColor(color.substring(1));

	color = document.fontSettings.textColorVal.value;
	document.fontSettings.textColor.style.backgroundColor = color;
	document.fontSettings.textColor.style.color = InverseColor(color.substring(1));

  updateFonts();

	// set the text

  waitUntilStoredFrameIsReady();
  
}

function waitUntilStoredFrameIsReady() {
  try
  {
  	document.fontSettings.inputText.value = parent.storageFrame.document.storedValues.holdInputTxt.value;
  
  	document.fontSettings.inputText.focus();
    noteThatFooterIsNotVisible();
    
    removeLoadingTextMessage();
  } 
  catch(err) 
  {
    setTimeout( "waitUntilStoredFrameIsReady()", 250);
  }
}

function removeLoadingTextMessage() 
{
  try 
  {
    var x = parent.output.document.getElementById("contentDivForTextOutput").innerHTML;
    generateText( document.fontSettings.inputText.value );
  }
  catch(err)
  {
    setTimeout( "removeLoadingTextMessage()", 250);
  }
}

/**
 * Function: OnBtnColorClick(color,param)
 *
 * About: N/A
 *
 **/
function OnBtnColorClick(color,param)
{
	fnShowChooseColorDlg(color,param,"../../../common/colordialog/");
}

/**
 * Function: OnChangeColor(color,param)
 *
 * About: N/A
 *
 **/
function OnChangeColor(color,param)
{
	if(color){
		if(param==1){
			document.fontSettings.bgColorVal.value = color;
			document.fontSettings.bgColor.style.backgroundColor = color;
			document.fontSettings.bgColor.style.color = InverseColor(color.substring(1));

			if (userLastClicked == 1)
			{
				displayAuthorInfo();
			}
			else if (userLastClicked == 2)
			{
				changeTestAllColors();
			}
			else
			{
				generateText(document.fontSettings.inputText.value);
			}
		} else if (param==2){
			document.fontSettings.textColorVal.value = color;
			document.fontSettings.textColor.style.backgroundColor = color;
			document.fontSettings.textColor.style.color = InverseColor(color.substring(1));
			
			if (userLastClicked == 1)
			{
				displayAuthorInfo();
			}
			else if (userLastClicked == 2)
			{
				changeTestAllColors();
			}
			else
			{
				generateText(document.fontSettings.inputText.value);
			}
		}
	}
}


/**
 * Function: filterText
 *
 * About: Outdated function.
 *
 **/
function filterText(txt)
{
	var filteredTxt = "";
	for (var i = 0; i < txt.length; i++)
	{
		if (txt.substr(i, 1) == "\n")
		{
			filteredTxt = filteredTxt + "ß";
		}
		else
		{
			filteredTxt = filteredTxt + txt.substr(i, 1);
		}
	}
	return filteredTxt;
}


/**
 * Function: updateHorizontalSmushingOpt
 *
 * About: This function allows the user to turn on/off the default horizontal smushing value.
 *
 **/
function updateHorizontalSmushingOpt()
{
	defaultHorizontalSmush = document.fontSettings.horizontalSmush.checked;
	generateText(document.fontSettings.inputText.value);
}

/**
 * Function: overlapCompare(str1, str2)
 *
 * About: This function compares two lines from a the text array to see at what point they differ
 *        when the two letters are placed next to each other.
 *
 **/
function overlapCompare(inputTxt1, inputTxt2) 
{
	var str1 = inputTxt1.reverse(); // the character that comes before
	var str2 = inputTxt2;                    // the character that comes after
	var theOverlap = 0;
	var shouldBreak = false;

	if (hFullWidth == true)
	{
		return 0;
	}

	var str1CompIndex = 0;
	var shouldSmush = true;
	for (var i = 0; i < str1.length; i++)
	{
		if (str1.substr(i, 1) == " ")
		{
			str1CompIndex++;
			theOverlap++;
		}
		else
		{
			// for control smushing, see if this character can be smushed
			if (smushChar_GetClassVal(str1.substr(i, 1)) == -1)
			{
				shouldSmush = false;
			}
			break;
		}
	}

	//alert("start overlap: " + str1CompIndex + "," + "'" + str1 + "'");

	if (str1CompIndex == str1.length)
	{
		return Math.min(str1.length, str2.length);
	}

	for (var i = 0; i < Math.min(str1.length, str2.length); i++) 
	{
		if (str2.substr(i, 1) == hardblank)
		{
			// smush rule 6 + hFitting fix
			if ((hSmush6 == true && str1.substr(str1CompIndex, 1) == hardblank) )
			{
				theOverlap++;
			}
			break;
		}
		else if (str2.substr(i, 1) != " " && str1.substr(str1CompIndex, 1) == hardblank)
		{
			break;
		}
		else if (str2.substr(i, 1) != " ")
		{
			if ( smushChar_GetClassVal(str2.substr(i, 1)) == -1 )
			{	
				shouldSmush = false;
			} 

			if (shouldSmush == true && (hFitting == false && defaultHorizontalSmush == true))
			{
				theOverlap++;
			}
			break;
		}

		theOverlap++;
	}

	return theOverlap;
}

/**
 * Function: smushAmount(s1, currPos)
 *
 * About: This function looks at two letters and seeing how much they should be "smushed".
 *
 **/
function smushAmount(prevPos, currPos)
{
	if (prevPos == -1)
	{
		return 0;
	}

	var smushed = false;
	var smushedAmount = 10000; // a value so big, it will be replaced with the first return of overlapCompare

	for (var i = 0; i < charHeight; i++)
	{
		val = overlapCompare(fontChars[prevPos][i], fontChars[currPos][i]);

		if (val < smushedAmount)
		{
			smushedAmount = val;
		}
	}

	return smushedAmount;
}


/**
 * Function: smushChar_GetClassVal(inputVal)
 *
 * About: Gets class of given char.
 *
 **/
function smushChar_GetClassVal(inputVal)
{
	var ret = -1;

	switch( inputVal )
	{
		case ("|"):
			ret = 1;
			break;
		case (String.fromCharCode(92)):
			ret = 2;
			break;
		case ("/"):
			ret = 2;
			break;
		case ("["):
			ret = 3;
			break;
		case ("]"):
			ret = 3;
			break;
		case ("{"):
			ret = 4;
			break;
		case ("}"):
			ret = 4;
			break;
		case ("("):
			ret = 5;
			break;
		case (")"):
			ret = 5;
			break;
		case ("<"):
			ret = 6;
			break;
		case (">"):
			ret = 6;
			break;
	}
	return ret;
}

/**
 * Function: smushTxt(txt1, txt2)
 *
 * About: This function "smushes" two strings together
 *
 **/
function smushTxt(txt1, txt2, theSmushAmount)
{
	var txt1Offset = txt1.length - theSmushAmount;
	var ret = txt1.substr(0, txt1Offset);

	for (var i = 0; i < theSmushAmount; i++)
	{

		var txt1_char = txt1.substr(txt1Offset + i, 1);
		var txt2_char = txt2.substr(i, 1);
		var txt1_smushClass = smushChar_GetClassVal(txt1_char);
		var txt2_smushClass = smushChar_GetClassVal(txt2_char);

		if (hSmush1 == true && txt2_char == txt1_char)
		{
			ret = ret + txt1_char;
		}
		else if (hSmush2 == true && txt1_char == "_" && txt2_smushClass != -1)
		{
			ret = ret + txt2_char;
		}
		else if (hSmush2 == true && txt2_char == "_" && txt1_smushClass != -1)
		{
			ret = ret + txt1_char;
		}
		else if (hSmush3 == true && txt1_smushClass != -1 && txt2_smushClass != -1 && txt2_smushClass != txt1_smushClass)
		{
			if (txt1_smushClass > txt2_smushClass)
			{
				ret = ret + txt1_char;
			}
			else
			{
				ret = ret + txt2_char;
			}
		}

		// rule 5 needs to come before rule 4, because of how rule 4 is written here

		else if (hSmush5 == true && txt2_char == String.fromCharCode(92) && txt1_char == "/" )
		{
			ret = ret + "|";
		}
		else if (hSmush5 == true && txt2_char == "/" && txt1_char == String.fromCharCode(92) )
		{
			ret = ret + "Y";
		}
		else if (hSmush5 == true && txt2_char == "<" && txt1_char == ">")
		{
			ret = ret + "X";
		}
		else if (hSmush4 == true && txt2_smushClass != -1 && txt2_smushClass == txt1_smushClass && txt2_char != txt1_char)
		{
			ret = ret + "|";
		}

		// for smush rule 6, see the overlapCompare function

		else if (txt1_char == " ")
		{
			ret = ret + txt2_char;
		}
		else
		{
			ret = ret + txt1_char;
		}
	}

	ret = ret + txt2.substr(theSmushAmount);
	
	return ret;
}

function simpleEncrypt(txt)
{
  var encryptedText="", charSet1, charSet2, i, pos, encryptedChar;
  
  charSet1 = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  charSet2 = " nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM";
  
  for(i = 0; i < txt.length; i++)
  {
      pos = charSet1.indexOf(txt.substring(i, i+1), 0);
      
      if (pos >= 0) 
      {
          encryptedChar = charSet2.substring(pos, pos+1);
          encryptedText = encryptedText + encryptedChar;
      } else {
          encryptedText = encryptedText + txt.substring(i, i+1);
      }
  }
  return encryptedText
}


/**
 * Function: generateText(txt)
 *
 * About: This function generates the ASCII Art text
 *
 **/
function generateText(txt) 
{
  if (document.getElementById("shouldUpdateFont").value == "true")
  {
    document.getElementById("shouldUpdateFont").value = "false"
    updateFont(document.fontSettings.fonts.value);
  }
  
	// check for special "TEST ALL" value
	if (document.fontSettings.fonts.value == "______TEST ALL______")
	{
		return;
	}

	// the last thing the user did was type, not click for info on the author
	userLastClicked = 0; 

	// figure out how to align the text
	var aIndex = 0;
	for (var i = 0; i < 3; i++)
	{
		if (document.fontSettings.tAlignment[i].checked == true)
		{
			aIndex = i;
		}
	}
	var textAlignment = document.fontSettings.tAlignment[aIndex].value;

  var fName = document.fontSettings.fonts.value;
  var newHtml = "";

  if ( fName.indexOf(".flf") == -1 )
  {
    newHtml = "<pre class='aol'>"; 
  }
  else
  {
    newHtml = "<pre class='flf'>";      
  }

	var outputText = createLargeText(txt);
	
	if (parent.storageFrame.document.storedValues.code_comments_c && parent.storageFrame.document.storedValues.code_comments_c.value === "ON") {
	    outputText = "/***\n *    " + outputText.split("\n").join("\n *    ") + "\n */";   
	}
	
	// add in feature modifications from the "More Options" page
	if (parent.storageFrame.document.storedValues.whitespace_feature.value === "ON")
	{
	  var newWhiteSpace = parent.storageFrame.document.storedValues.whitespace_value.value;
	  if (newWhiteSpace.length != 0) 
	  {
	    outputText = outputText.replace(/ /g, parent.storageFrame.document.storedValues.whitespace_value.value);
	  }
	}
	
  newHtml = newHtml + outputText;

	// print the author's initials
	if (outputText.trim() != "")
	{
		newHtml = newHtml + "\n" + initials;
	}

	newHtml = newHtml + "\n" + "</pre>";
	
	parent.output.document.getElementById("bodyId").style.textAlign = textAlignment;
	parent.output.document.getElementById("bodyId").style.color = document.fontSettings.textColorVal.value;
	parent.output.document.getElementById("bodyId").style.backgroundColor = document.fontSettings.bgColorVal.value;
	
  parent.output.document.getElementById("contentDivForTextOutput").style.textAlign = textAlignment;
	parent.output.document.getElementById("contentDivForTextOutput").style.color = document.fontSettings.textColorVal.value;
	parent.output.document.getElementById("contentDivForTextOutput").style.backgroundColor = document.fontSettings.bgColorVal.value;
	
	// print out "open in new window" URL
  if (outputText.trim() != "")
	{
	  var bgParam = "&bg=" + escape(document.fontSettings.bgColorVal.value);
	  var fcParam = "&fc=" + escape(document.fontSettings.textColorVal.value);
	  var alignParam = "&align=" + textAlignment;
	  var msg_url = "http://patorjk.com/textart/msg1.php?font=" + escape(document.fontSettings.fonts.value) + "&hs=" + defaultHorizontalSmush + bgParam + fcParam + alignParam + "&txt=" + escape(simpleEncrypt(txt));
	  
	  // update code to open in a new window
	  var openInNewWindowImageHtml = "<a href=\"" + msg_url + "\" target=\"_blank\"><img src=\"images/new-window.png\" width=\"60\" height=\"60\" style=\"float:left;display:inline;border:0;\"/></a>";
	  //parent.output.document.getElementById("newWindowLinkImage").innerHTML = openInNewWindowImageHtml;
	  
	  var openInNewWindowTextHtml = "<a href=\"" + msg_url + "\" target=\"_blank\">Open Message In A New Window Or<br/> Share Message With A Friend</a>";
	  parent.output.document.getElementById("newWindowLinkText").innerHTML = openInNewWindowTextHtml;
	  
	  // only allow for the generate image option if the font is NOT an AOL font
	  
	  if ( fName.indexOf(".flf") != -1 )
	  {
  	  var imageGen_url = "./image-generation.php?font=" + escape(document.fontSettings.fonts.value) + "&hs=" + defaultHorizontalSmush + bgParam + fcParam + alignParam + "&txt=" + escape(simpleEncrypt(txt));
  	  var imageGenImageHtml = "<a href=\"" + imageGen_url + "\" ><img src=\"generateimage.png\" width=\"60\" height=\"60\" style=\"float:left;display:inline;border:0;\"/></a>";
  	  //parent.output.document.getElementById("generateImageLinkImage").innerHTML = imageGenImageHtml;
  	  
  	  parent.output.document.getElementById("generateImageLinkImage").style.display = 'block';
  	  parent.output.document.getElementById("generateImageLinkText").style.display = 'block';
  	  
  	  var imageGenTextHtml = "<a href=\"" + imageGen_url + "\" >Generate Image Of Output Text</a>";
  	  parent.output.document.getElementById("generateImageLinkText").innerHTML = imageGenTextHtml;
	  }
	  else
	  {
	    //parent.output.document.getElementById("generateImageLinkImage").innerHTML = "";
	    //parent.output.document.getElementById("generateImageLinkText").innerHTML = "";
	    parent.output.document.getElementById("generateImageLinkImage").style.display = 'none';
	    parent.output.document.getElementById("generateImageLinkText").style.display = 'none';
	  }
	}
	
	parent.output.document.getElementById("contentDivForTextOutput").innerHTML = newHtml;
	
  if ( footerVisible() == false )
  {
  
    // if we're using IE6, fuck this shit, lets get out of here
    if (IE6 == true)
    {
      return;
    }
    
    setFooterObj( parent.output.document.getElementById("footer") );
    parent.output.document.getElementById("footer").style.display = "block";
	  fadeInFooter(50);
	}
}

function createLargeText(txt)
{
	var largeText = "";

	// now lets handle creating the ascii art text
	var filteredTxt = txt; // filterText( txt );

	// direction is important for fonts like Mirror
	if (printDirection == 1)
	{
		filteredTxt = filteredTxt.reverse();
	}
	var filteredTxtLines = filteredTxt.split("\n"); // ß

	for (lines = 0; lines < filteredTxtLines.length; lines++)
	{
		var alphabet = null;
		if (fontFileExt == "aol" || fontFileExt == "txt")
		{
			alphabet = " abcdefghijklmnopqrstuvwxyz";
			filteredTxtLines[lines] = filteredTxtLines[lines].toLowerCase();
		}
		else if (fontFileExt == "flf")
		{
			alphabet = " !" + String.fromCharCode(34) + "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[" + String.fromCharCode(92) + "]^_`abcdefghijklmnopqrstuvwxyz{|}~";
		}

		var outputString = "";
		var finalText = "";
		var prevPos = -1;

		var smushAmountArray;
		if (fontFileExt == "flf") 
		{
			// find the smush amount for each character in the line
			smushAmountArray = new Array();
			for (var i = 0; i < filteredTxtLines[lines].length; i++)
			{
				var pos = alphabet.indexOf(filteredTxtLines[lines].substr(i,1));
				if (pos != -1)
				{
					var theSmushAmount = smushAmount(prevPos, pos);
					smushAmountArray[i] = theSmushAmount;
				}
				prevPos = pos;
			}
		}

		prePos = -1;

		for (var height = 0; height < charHeight; height++)
		{
			for (var i = 0; i < filteredTxtLines[lines].length; i++)
			{
				var pos = alphabet.indexOf(filteredTxtLines[lines].substr(i,1));
				if (pos != -1)
				{

					if (fontFileExt == "aol" || fontFileExt == "txt") 
					{
						outputString = outputString + fontChars[pos][height];
					}
					else if (fontFileExt == "flf")
					{
						var theSmushAmount = smushAmountArray[i]; //smushAmount(prevPos, pos);
						outputString = smushTxt(outputString,  fontChars[pos][height], theSmushAmount);
					}
				}
				prevPos = pos;
			}
			if ((lines < (filteredTxtLines.length-1)) || (height < (charHeight-1)))
			{
				finalText = finalText + outputString + "\n";
			} 
			else
			{
				finalText = finalText + outputString;
			}

			prevPos = -1;
			outputString = "";
		}

		if (fontFileExt == "flf")
		{
			// remove the hardblanks
			finalText = finalText.split(hardblank).join(" "); // replace all, we have to do it this way since hardblank could be a special character (for reg expressions)
		}

		// print the final text
		largeText = largeText + finalText;

		if (lines != (filteredTxtLines.length-1))
		{
			largeText = largeText + "\n";
		}
	}
	return largeText;
}

// ---------------------------------------------------------- Above is code for generation

/**
 * Function: displayAuthorInfo()
 *
 * About: This function displays the comments inside of the flf font file.
 *
 **/
function displayAuthorInfo() 
{
	// if we're on the "test all" page, just return
	if (userLastClicked == 2)
	{
		return;
	}

  noteThatFooterIsNotVisible();

	// the last thing the user did was click for info on the author
	userLastClicked = 1; 

	var hyperlinkedComments = authorComments.urlsToHyperlinks();
	
	// figure out how to align the text
	var aIndex = 0;
	for (var i = 0; i < 3; i++)
	{
		if (document.fontSettings.tAlignment[i].checked == true)
		{
			aIndex = i;
		}
	}
  var textAlignment = document.fontSettings.tAlignment[aIndex].value;
  
	// set up the document
	
	parent.output.document.getElementById("bodyId").style.textAlign = textAlignment;
	parent.output.document.getElementById("bodyId").style.color = document.fontSettings.textColorVal.value;
	parent.output.document.getElementById("bodyId").style.backgroundColor = document.fontSettings.bgColorVal.value;
	
  parent.output.document.getElementById("contentDivForTextOutput").style.textAlign = textAlignment;
	parent.output.document.getElementById("contentDivForTextOutput").style.color = document.fontSettings.textColorVal.value;
	parent.output.document.getElementById("contentDivForTextOutput").style.backgroundColor = document.fontSettings.bgColorVal.value;
	
	parent.output.document.getElementById("footer").style.display = "none";
	
	parent.output.document.getElementById("contentDivForTextOutput").innerHTML = "<pre class='figlet'>" + hyperlinkedComments + "</pre>";
}

function text_decode(str)
{
	var strChars = str.split("%");
	var retStr = "";
	var decNum = "";

	// first index in the array will be blank since input strings have the format:
	// "%XX%XX%XX"
	for (var i = 1; i < strChars.length; i++) 	
	{
		if (strChars[i] == "GG")
		{
			retStr = retStr + "‘";
		}
		else if (strChars[i] == "II")
		{
			retStr = retStr + "‚";
		}
		else if (strChars[i] == "JJ")
		{
			retStr = retStr + "˜";
		}
		else if (strChars[i] == "LL")
		{
			retStr = retStr + "—";
		}
		else if (strChars[i] == "MM")
		{
			retStr = retStr + "–";
		}
		else if (strChars[i] == "NN")
		{
			retStr = retStr + "“";
		}
		else if (strChars[i] == "PP")
		{
			retStr = retStr + "™";
		}
		else if (strChars[i] == "QQ")
		{
			retStr = retStr + "›";
		}
		else if (strChars[i] == "RR")
		{
			retStr = retStr + "‹";
		}
		else if (strChars[i] == "SS")
		{
			retStr = retStr + "’";
		}
		else if (strChars[i] == "TT")
		{
			retStr = retStr + "”";
		}
		else if (strChars[i] == "UU")
		{
			retStr = retStr + "”";
		}
		else
		{
			decNum = parseInt(strChars[i], 16);
			retStr = retStr + String.fromCharCode(decNum);
		}
	}

	return retStr;
}

function changeTestAllColors() 
{
  parent.output.document.body.style.background = document.fontSettings.bgColorVal.value ; 
  parent.output.document.body.style.color = document.fontSettings.textColorVal.value ;
}

/**
 * Function: setupTestAll()
 *
 * About: Sets up the "test all" page.
 *
 **/
function setupTestAll()
{
	// this lets us know to chage the color of the "test all" page when the user changes colors
	userLastClicked = 2; 
  parent.output.document.location = "test-all.php";
}

/**
 * Function: keyupUpdateFont()
 *
 * About: Due to a bug in Firefox, the OnChange event of the select element doesn't get fired when
 *        you use the arrow keys, so I have to write a keyup function to detect this.
 *
 **/
function keyupUpdateFont()
{
	if (navigator.userAgent.indexOf("Firefox")!=-1)
	{
		updateFont(document.fontSettings.fonts.value);
	}
}


/**
 * Function: updateFont(newFontName)
 *
 * About: This function is called when a user changes fonts.
 *
 **/
function updateFont(newFontName)
{
	// test for the special "TEST ALL" value
	if (newFontName == "______TEST ALL______")
	{
		setupTestAll();
		return;
	}

  // make sure we're not currently updating the font list
  if ( document.getElementById("isUpdatingFontList").value == "true")
  {
    return; 
  }

  // clear the page incase we're on the test all or author info page
  
  console.log("userLastClicked = " + userLastClicked);
  
  if (userLastClicked == 1)
  {
    noteThatFooterIsNotVisible();
  }
  else if (userLastClicked == 2)
  {
    parent.output.document.location = "blank.shtml";
    
    noteThatFooterIsNotVisible();
    
    // ok, just in case it doesn't load quickly enough, print the needed HTML

    parent.output.document.open();
    parent.output.document.writeln("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n");
    parent.output.document.writeln("<html>");
    parent.output.document.writeln("<head>");
    parent.output.document.writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/subpage-style.css\" />\n");
    parent.output.document.writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/subpage-footer.css\" />\n");
    parent.output.document.writeln("<body id=\"bodyId\">\n");

    parent.output.document.writeln(parent.storageFrame.document.getElementById("footerContents").innerHTML);    

    parent.output.document.writeln("<div id=\"contentDivForTextOutput\"></div>\n");
    parent.output.document.writeln("</body>\n");
    parent.output.document.writeln("</html>\n");
    parent.output.document.close();
  }

	xmlHttp = GetXmlHttpObject()

	if (xmlHttp == null)
  	{
  		//updateFonts();
  		return;
  	} 

	var url = "getFontInfo.php";
	url = url+"?fontname=" + newFontName;

	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function convert_to_boolean(str)
{
	var ret = false;
	if (str == "true")
	{
		ret = true;
	}
	return ret;
}

var theFontName = "";

function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 
		var retData = xmlHttp.responseText;
		var retArray = retData.split("\n");

		var retIndex = 0;

		theFontName = retArray[retIndex++];

		fontFileExt	= retArray[retIndex++];
		fontPointSize 	= retArray[retIndex++];
		fontFace 	= retArray[retIndex++];
		initials 	= retArray[retIndex++];
		hardblank 	= retArray[retIndex++];
		printDirection 	= retArray[retIndex++];
		hFullWidth 	= convert_to_boolean(retArray[retIndex++]);
		hFitting 	= convert_to_boolean(retArray[retIndex++]);
		hSmush1 		= convert_to_boolean(retArray[retIndex++]);
		hSmush2		= convert_to_boolean(retArray[retIndex++]);
		hSmush3 		= convert_to_boolean(retArray[retIndex++]);
		hSmush4 		= convert_to_boolean(retArray[retIndex++]);
		hSmush5 		= convert_to_boolean(retArray[retIndex++]);
		hSmush6 		= convert_to_boolean(retArray[retIndex++]);
		var numChars	= retArray[retIndex++];
		charHeight	= retArray[retIndex++];		

		//alert(hFitting + "," + hFullWidth + "," + hSmush1 + "," + hSmush2 + "," + hSmush3);
		//alert(fontFileExt + "," + fontPointSize + "," +fontFace + "," + initials + "," + hardblank);

		fontChars = null;
		fontChars = new Array(numChars);

		for (var i = 0; i < numChars; i++) 
		{
			fontChars[i] = new Array(charHeight);
		}
		
		var inLoop = 0;

		for (i = 0; i < numChars; i++) 
		{
			for (var i2 = 0; i2 < charHeight; i2++) 
			{
				if ( fontFileExt == "aol" )
				{
				fontChars[i][i2] = text_decode(retArray[retIndex]);
				}
				else
				{
				fontChars[i][i2] = retArray[retIndex];
				}

				// replace escape sequences
				fontChars[i][i2] = fontChars[i][i2].replace(/</g, "&lt;");
				fontChars[i][i2] = fontChars[i][i2].replace(/>/g, "&gt;");
				fontChars[i][i2] = fontChars[i][i2].replace(/\\"/g, "\"");
				fontChars[i][i2] = fontChars[i][i2].replace(/\\\\/g, "\\");
				retIndex++;
				
				inLoop++;
			}
		}

		// the author's comments
		authorComments = "";
		for (var i2 = retIndex; i2 < retArray.length; i2++)
		{
			authorComments = authorComments + retArray[i2] + "\n";
		}
		authorComments = authorComments.replace(/\\"/g, "\"");
		authorComments = authorComments.replace(/\\\\/g, "\\");

		generateText(document.fontSettings.inputText.value);

		curFontName = theFontName;
	}
}

function changePage(newPage)
{
  noteThatFooterIsNotVisible();
  
	if (testingAll == true)
	{
		return;
	}
	else if (newPage == "testall") 
	{
    document.fontSettings.fonts.selectedIndex = 0;
    setupTestAll();
	}
	else
	{
		parent.output.document.location = newPage;
	}
}
