// variablen für das Template
var agetrandom = 0;					// Zufällig ausgefählter Text mit den bleibenden Einstellungen
var awaitstop = 5;
var awaitmodus = 1;					// wartemodus  0 = normal; 1 = flash; 2 = flip; 3 = round; 4 = color flash
// variablen für das Template

var waitcounter = 0;
var colwait = 2;
var colcount = 0;
var colorbit = 0;
var rotatebit = 0;

var mletter = '';
var ntc = 0;
var aletter = new Array();

var ltreuro =       new Array(0,0,0,0,0,0, 0,0,1,1,1,0, 0,1,0,0,0,0, 1,1,1,1,0,0, 0,1,0,0,0,0, 0,0,1,1,1,0, 0,0,0,0,0,0);
var ltrcopy =       new Array(0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,1,1,0,1, 1,0,1,0,0,1, 1,0,1,1,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0);
var ltrdlangle =    new Array(0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,1,0,1,0, 0,1,0,1,0,0, 0,0,1,0,1,0, 0,0,0,1,0,0, 0,0,0,0,0,0);
var ltrdrangle =    new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 0,1,0,1,0,0, 0,0,1,0,1,0, 0,1,0,1,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrtm =         new Array(0,0,0,0,0,0, 1,1,1,1,0,1, 0,1,0,1,1,1, 0,1,0,1,0,1, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltra =					new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 0,1,0,1,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrb =					new Array(0,0,0,0,0,0, 1,1,1,1,0,0, 1,0,0,0,1,0, 1,1,1,1,0,0, 1,0,0,0,1,0, 1,1,1,1,0,0, 0,0,0,0,0,0);
var ltrc =					new Array(0,0,0,0,0,0, 0,1,1,1,0,0, 1,0,0,0,1,0, 1,0,0,0,0,0, 1,0,0,0,1,0, 0,1,1,1,0,0, 0,0,0,0,0,0);
var ltrd =					new Array(0,0,0,0,0,0, 1,1,1,1,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,1,1,1,0,0, 0,0,0,0,0,0);
var ltre =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,0,0,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrf =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 0,0,0,0,0,0);
var ltrg =					new Array(0,0,0,0,0,0, 0,1,1,1,0,0, 1,0,0,0,0,0, 1,0,0,1,1,0, 1,0,0,0,1,0, 0,1,1,1,1,0, 0,0,0,0,0,0);
var ltrh =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltri =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrj =					new Array(0,0,0,0,0,0, 0,0,1,1,1,0, 0,0,0,1,0,0, 1,0,0,1,0,0, 1,0,0,1,0,0, 1,1,1,1,0,0, 0,0,0,0,0,0);
var ltrk =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,1,0,0, 1,1,1,0,0,0, 1,0,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrl =					new Array(0,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrm =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,1,0,1,1,0, 1,0,1,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrn =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,1,0,0,1,0, 1,0,1,0,1,0, 1,0,0,1,1,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltro =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrp =					new Array(0,0,0,0,0,0, 1,1,1,1,0,0, 1,0,0,0,1,0, 1,1,1,1,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 0,0,0,0,0,0);
var ltrq =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,0,1,0,1,0, 1,0,0,1,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrr =					new Array(0,0,0,0,0,0, 1,1,1,1,0,0, 1,0,0,0,1,0, 1,1,1,1,0,0, 1,0,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrs =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrt =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltru =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,1,1,0,0, 0,0,0,0,0,0);
var ltrv =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,0,1,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrw =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,1,0,1,0, 1,1,0,1,1,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrx =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 0,1,0,1,0,0, 0,0,1,0,0,0, 0,1,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltry =					new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,0,1,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrz =					new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrspace =			new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrexclamat =		new Array(0,0,0,0,0,0, 0,0,0,1,1,0, 0,0,1,1,1,0, 0,0,1,1,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 0,0,0,0,0,0);
var ltrtwoquote =		new Array(0,0,0,0,0,0, 1,1,0,1,1,0, 0,1,0,0,1,0, 1,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrpound =			new Array(0,0,0,0,0,0, 0,1,0,1,0,0, 1,1,1,1,1,0, 0,1,0,1,0,0, 1,1,1,1,1,0, 0,1,0,1,0,0, 0,0,0,0,0,0);
var ltrdollar =			new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,1,0,0,0, 1,1,1,1,1,0, 0,0,1,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrpercent =		new Array(0,0,0,0,0,0, 1,1,0,0,1,0, 1,1,0,1,0,0, 0,0,1,0,0,0, 0,1,0,1,1,0, 1,0,0,1,1,0, 0,0,0,0,0,0);
var ltrand =				new Array(0,0,0,0,0,0, 0,1,1,1,1,0, 1,0,1,0,0,0, 0,1,1,1,1,0, 1,0,1,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,0);
var ltronequote =		new Array(0,0,0,0,0,0, 0,1,1,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrlparen =			new Array(0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0);
var ltrrparen =			new Array(0,0,0,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,0,0,0,0);
var ltrasterisk =		new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 1,0,1,0,1,0, 0,1,1,1,0,0, 0,1,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0);
var ltrplus =				new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 1,1,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrcomma =			new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,1,1,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,0,0,0,0);
var ltrdash =				new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrperiod =			new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0);
var ltrslash =			new Array(0,0,0,0,0,0, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,0,0,0,0,0, 0,0,0,0,0,0);
var ltrone =				new Array(0,0,0,0,0,0, 0,1,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,1,1,1,0,0, 0,0,0,0,0,0);
var ltrtwo =				new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrthree =			new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 0,0,1,1,1,0, 0,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrfour =				new Array(0,0,0,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 0,0,0,0,1,0, 0,0,0,0,0,0);
var ltrfive =				new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,1,0,0, 0,0,0,0,1,0, 1,1,1,1,0,0, 0,0,0,0,0,0);
var ltrsix =				new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrseven =			new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltreight =			new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrnine =				new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 0,0,0,0,1,0, 0,0,0,0,0,0);
var ltrzero =				new Array(0,0,0,0,0,0, 0,1,1,1,0,0, 1,1,0,0,1,0, 1,0,1,0,1,0, 1,0,0,1,1,0, 0,1,1,1,0,0, 0,0,0,0,0,0);
var ltrcolon =			new Array(0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0);
var ltrsemicolon =	new Array(0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrlangle =			new Array(0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0);
var ltrequal =			new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrrangle =			new Array(0,0,0,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,0,0,0,0);
var ltrquestion =		new Array(0,0,0,0,0,0, 0,1,1,1,0,0, 1,0,0,0,1,0, 0,0,1,1,0,0, 0,0,0,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrassss =			new Array(0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,1,0, 1,1,1,0,1,0, 1,0,1,0,1,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrat =					new Array(0,0,0,0,0,0, 0,1,1,1,0,0, 1,0,1,0,1,0, 1,0,1,1,0,0, 1,0,0,0,0,0, 0,1,1,1,0,0, 0,0,0,0,0,0);
var ltrlbracket =		new Array(0,0,0,0,0,0, 0,1,1,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,1,0,0,0, 0,0,0,0,0,0);
var ltrbackslash =	new Array(0,0,0,0,0,0, 1,0,0,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0, 0,0,0,0,0,0);
var ltrrbracket =		new Array(0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0);
var ltrcarrot =			new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 0,1,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrunderscore =	new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,0);
var ltrbackquote =	new Array(0,0,0,0,0,0, 0,1,1,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);
var ltrlbrace =			new Array(0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,1,1,0,0, 0,0,0,0,0,0);
var ltrpipe =				new Array(0,0,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0);
var ltrrbrace =			new Array(0,0,0,0,0,0, 0,1,1,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,1,0,0,0, 0,0,0,0,0,0);
var ltrtilde =			new Array(0,0,0,0,0,0, 0,0,0,0,0,0, 0,1,0,0,0,0, 1,0,1,0,1,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0);

var signon  = ".";
var signoff = " ";
var rowbeg = 1;
var lcdBackColor = document.getElementById("jsclass").style.backgroundColor;
var minChars = maximumChars;
var printrow = new Array();

// fading settings
var fliside = 0;
var friside = ((minChars + 1) * 6) - 1;
var friend  = (((minChars + 1) * 6) / 2) + 1;
var floside = (((minChars + 1) * 6) / 2) - 1;
var froside = (((minChars + 1) * 6) / 2);
var froend = floside + 1;

for (var x = 0; x < 100; x++) {
 printrow[x] = signoff;
}

var mtext = '';

var fadeing = 0;
var rowtop = 0;
var outfade = 0;
var inverted = 0;
var rowcount = 1;
var txtcheck = 0;
var startdelay = 0;
var txtcounter = 0;
if (getrandom) {
 txtcounter = parseInt(Math.random() * LCDtext.length);
 if (txtcounter >= LCDtext.length) txtcounter = 0;
}
waitmode = LCDwait[txtcounter];
var delaycount = delayTimer;
var lefttoright = 0;
var rowdirection = 0;
var maxLCDtext = LCDtext.length;
var actText = window.setInterval("printText()", 50);

function printText() {
 if (!fadeing) checkOutFade();
 if (!startdelay && !fadeing) createLCD(LCDtext[txtcounter]);
 if (fadeing && outfade) fadeTextOut(outfade);

 if (startdelay) {
  delaycount--;
  waitmode = LCDwait[txtcounter];
  waitModus();
  if (delaycount <= 0) {
   startdelay = 0;
   delaycount = delayTimer;
   if (outfade) fadeing = 1;
  }
 }
 if (!startdelay) {
  if (!txtcheck && !fadeing) {
   if (getrandom) {
   	ntc = parseInt(Math.random() * LCDtext.length);
   	if (ntc == txtcounter) ntc = parseInt(Math.random() * LCDtext.length);
   	if (ntc = LCDtext.length) ntc = parseInt(Math.random() * LCDtext.length);
   	txtcounter = ntc;
   } else txtcounter++;
   if (txtcounter >= LCDtext.length) {
    clearPrintrow();
    txtcounter = 0;
    resetLCD();
   }
  }

 }
}

function checkOutFade() {
 if (LCDoptionOut[txtcounter]) outfade = LCDoptionOut[txtcounter];
}

function resetLCD() {
 rowtop = 0;
 outfade = 0;
 fliside = 0;
 friside = (minChars * 6) - 1;
 floside = (((minChars + 1) * 6) / 2) - 1;
 froside = (((minChars + 1) * 6) / 2);
 fadeing = 0;
 colorbit = 0;
 colcount = 0;
 inverted = 0;
 rowcount = 1;
 txtcheck = 0;
 waitmode = 0;
 rotatebit = 0;
 startdelay = 0;
 waitcounter = 0;
 delaycount = delayTimer;
 lefttoright = 0;
 rowdirection = 0;
}

function clearPrintrow() {
 for (var x = 0; x < 100; x++) {
  printrow[x] = " ";
 }
}

function clearPrintline(x) {
 printrow[x] = " ";
}

function createLCD(mytext) {
 signon = ".";
 signoff = " ";
 if (LCDoption[txtcounter] == 1) { signoff = "."; signon = " "; inverted = 1; }			// invert
 if (LCDoption[txtcounter] == 3) { signoff = "."; signon = " "; inverted = 1; }			// invert
 if (LCDoption[txtcounter] == 6) { signoff = "."; signon = " "; inverted = 1; }			// invert
 if (LCDoption[txtcounter] == 7) { signoff = "."; signon = " "; inverted = 1; }			// invert

 clearPrintrow();
 mtext = mytext.toLowerCase();
 if (mtext.length < minChars) {
  for (var x = mtext.length; x < minChars; x++) {
   mtext += " ";
  }
 } else if (mtext.length > minChars) {
  mtext = mtext.substr(0, minChars);
 }

 txtColor = lcdTextColor;
 if (LCDcolor[txtcounter] != 0) txtColor = LCDcolor[txtcounter];
 document.getElementById("jsfnt").color = txtColor;

 txtBgColor = lcdBackColor;
 if (LCDbgcolor[txtcounter] != 0) txtBgColor = LCDbgcolor[txtcounter];
 document.getElementById("jsclass").style.backgroundColor = txtBgColor;

 if (LCDoption[txtcounter] == 2 || LCDoption[txtcounter] == 3) {						// from the left to the right
  txtcheck = 1;
  drawFromLeft();

 } else if (LCDoption[txtcounter] == 4 || LCDoption[txtcounter] == 6) {			// from up to down
  rowdirection = 1;
  txtcheck = 1;
 	inUpDown();

 } else if (LCDoption[txtcounter] == 5 || LCDoption[txtcounter] == 7) {			// down to up
  rowdirection = 2;
  txtcheck = 1;
  inUpDown();

 } else {
  for (var z = 0; z < mtext.length; z++) {
   mletter = mtext.substr(z, 1);
   getLetter();
   create();
  }
  sendOutString();
  startdelay = 1;
 }

}

function drawFromLeft() {
 for (var x = 0; x < lefttoright; x++) {
  mletter = mtext.substr(x, 1);
  getLetter();
  create();
 }
 sendOutString();
 lefttoright++;
 if (lefttoright >= mtext.length) {
  resetLCD();
  startdelay = 1;
 }
}

function getLetter() {
  if (mletter == " ") { aletter = ltrspace;
  } else if (mletter == "a")  { aletter = ltra;
  } else if (mletter == "b")  { aletter = ltrb;
  } else if (mletter == "c")  { aletter = ltrc;
  } else if (mletter == "d")  { aletter = ltrd;
  } else if (mletter == "e")  { aletter = ltre;
  } else if (mletter == "f")  { aletter = ltrf;
  } else if (mletter == "g")  { aletter = ltrg;
  } else if (mletter == "h")  { aletter = ltrh;
  } else if (mletter == "i")  { aletter = ltri;
  } else if (mletter == "j")  { aletter = ltrj;
  } else if (mletter == "k")  { aletter = ltrk;
  } else if (mletter == "l")  { aletter = ltrl;
  } else if (mletter == "m")  { aletter = ltrm;
  } else if (mletter == "n")  { aletter = ltrn;
  } else if (mletter == "o")  { aletter = ltro;
  } else if (mletter == "p")  { aletter = ltrp;
 	} else if (mletter == "™")  { aletter = ltrtm;
 	} else if (mletter == "»")  { aletter = ltrdrangle;
 	} else if (mletter == "«")  { aletter = ltrdlangle;
 	} else if (mletter == "©")  { aletter = ltrcopy;
 	} else if (mletter == "®")  { aletter = ltrcopy;
  } else if (mletter == "q")  { aletter = ltrq;
  } else if (mletter == "r")  { aletter = ltrr;
  } else if (mletter == "s")  { aletter = ltrs;
  } else if (mletter == "t")  { aletter = ltrt;
  } else if (mletter == "u")  { aletter = ltru;
  } else if (mletter == "v")  { aletter = ltrv;
  } else if (mletter == "w")  { aletter = ltrw;
  } else if (mletter == "x")  { aletter = ltrx;
  } else if (mletter == "y")  { aletter = ltry;
  } else if (mletter == "z")  { aletter = ltrz;
  } else if (mletter == "!")  { aletter = ltrexclamat;
  } else if (mletter == "\"") { aletter = ltrtwoquote;
  } else if (mletter == "#")	{ aletter = ltrpound;
  } else if (mletter == "$")	{ aletter = ltrdollar;
  } else if (mletter == "%")	{ aletter = ltrpercent;
  } else if (mletter == "&")	{ aletter = ltrand;
  } else if (mletter == "'")	{ aletter = ltronequote;
  } else if (mletter == "(")	{ aletter = ltrlparen;
  } else if (mletter == ")")	{ aletter = ltrrparen;
  } else if (mletter == "*")	{ aletter = ltrasterisk;
  } else if (mletter == "+")	{ aletter = ltrplus;
  } else if (mletter == ",")	{ aletter = ltrcomma;
  } else if (mletter == "-")	{ aletter = ltrdash;
  } else if (mletter == ".")	{ aletter = ltrperiod;
	} else if (mletter == "/")	{ aletter = ltrslash;
	} else if (mletter == "1")	{ aletter = ltrone;
	} else if (mletter == "2")	{ aletter = ltrtwo;
	} else if (mletter == "3")	{ aletter = ltrthree;
	} else if (mletter == "4")	{ aletter = ltrfour;
	} else if (mletter == "5")	{ aletter = ltrfive;
	} else if (mletter == "6")	{ aletter = ltrsix;
	} else if (mletter == "7")	{ aletter = ltrseven;
	} else if (mletter == "8")	{ aletter = ltreight;
	} else if (mletter == "9")	{ aletter = ltrnine;
	} else if (mletter == "0")	{ aletter = ltrzero;
	} else if (mletter == ":")	{ aletter = ltrcolon;
	} else if (mletter == ";")	{ aletter = ltrsemicolon;
	} else if (mletter == "<")	{ aletter = ltrlangle;
	} else if (mletter == "=")	{ aletter = ltrequal;
	} else if (mletter == ">")	{ aletter = ltrrangle;
	} else if (mletter == "?")	{ aletter = ltrquestion;
	} else if (mletter == "@")	{ aletter = ltrat;
	} else if (mletter == "€")	{ aletter = ltreuro;
	} else if (mletter == "[")	{ aletter = ltrlbracket;
	} else if (mletter == "§")	{ aletter = ltrbackslash;
	} else if (mletter == "]")	{ aletter = ltrrbracket;
	} else if (mletter == "^")	{ aletter = ltrcarrot;
	} else if (mletter == "_")	{ aletter = ltrunderscore;
	} else if (mletter == "`")	{ aletter = ltrbackquote;
	} else if (mletter == "{")	{ aletter = ltrlbrace;
	} else if (mletter == "|")	{ aletter = ltrpipe;
	} else if (mletter == "}")	{ aletter = ltrrbrace;
	} else if (mletter == "~")	{ aletter = ltrtilde;
  } else aletter = ltrperiod;
}

function sendOutString() {
 var obj = document.getElementById('jstxt');
 nLen = obj.childNodes.length;
 var z = 0;
 rowend = rowbeg + 6;
 for (var x = 0; x < rowend; x++) {
  obj.childNodes[z].nodeValue = printrow[x];
  z = z + 2;
 }
}

function getSign(d) {
 if(aletter[d] == 0) return signoff;
  else return signon;
}

function create() {
 for (var x = 0; x < 6; x++) {
  printrow[0] += getSign(x + 0);
  printrow[1] += getSign(x + 6);
  printrow[2] += getSign(x + 12);
  printrow[3] += getSign(x + 18);
  printrow[4] += getSign(x + 24);
  printrow[5] += getSign(x + 30);
  printrow[6] += getSign(x + 36);
 }
}

function inUpDown() {
 if (!rowtop) {
  clearPrintrow();
  mtext = LCDtext[txtcounter].toLowerCase();
  if (mtext.length < minChars) {
   for (var x = mtext.length; x < minChars; x++) {
    mtext += " ";
   }
  } else if (mtext.length > minChars) {
   mtext = mtext.substr(0, minChars);
  }

  if (rowdirection == 1) {														// here we go up
   beginread = 0;
   startrow = 7 - rowcount;
   endrow = startrow + rowcount;
  } else if (rowdirection == 2) {											// here wo go down
   beginread = 7 - rowcount;
 	 startrow = 0;
 	 endrow = rowcount;
  }

  for (var a = startrow; a < endrow; a++) {
   for (var z = 0; z < mtext.length; z++) {
    mletter = mtext.substr(z, 1);
    getLetter();
    d = beginread * 6;
    for (var x = 0; x < 6; x++) {
     printrow[a] += getSign(d);
     d++;
    }
   }
   beginread++;
  }

  var obj = document.getElementById('jstxt');
  nLen = obj.childNodes.length;
  var z = 0;
  rowend = rowbeg + 6;
  for (var x = 0; x < rowend; x++) {
   obj.childNodes[z].nodeValue = printrow[x];
   z = z + 2;
  }

  rowcount++;
  if (rowcount >= 8) {
   resetLCD();
   startdelay = 1;
  }
 }
}

function fadeTextOut(outfade) {
 endfade = 8;
 if (outfade == 1) fadeUp();
 if (outfade == 2) fadeDown();
 if (outfade == 3) {
  endfade = friend;
  fadeLeftRightIn(0);
 }
 if (outfade == 4) {
  endfade = friend;
  fadeLeftRightIn(1);
 }
 if (outfade == 5) {
  endfade = froend;
  fadeLeftRightOut(0);
 }
 if (outfade == 6) {
  endfade = froend;
  fadeLeftRightOut(1);
 }
 if (outfade == 7) {
  endfade = 15;
  colorFadeOut();
 }

 rowcount++;
 if (rowcount >= endfade) {
  resetLCD();
  fadeing = 0;
  if (outfade == 7) {
   clearPrintrow()
   sendOutString()
   document.getElementById("jsfnt").color = lcdTextColor;
  }
  outfade = 0;
 }

}

function colorFadeOut() {
 newColor = '#';
 newTextColor = document.getElementById("jsfnt").color;
 newBackColor = document.getElementById("jsclass").style.backgroundColor;
 oldChars = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
 newChars = new Array("0", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E");
 nenChars = new Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "F");
 singlenew  = new Array();
 singleback = new Array(newBackColor.substr(1, 1), newBackColor.substr(2, 1), newBackColor.substr(3, 1), newBackColor.substr(4, 1), newBackColor.substr(5, 1), newBackColor.substr(6, 1));
 singletext = new Array(newTextColor.substr(1, 1), newTextColor.substr(2, 1), newTextColor.substr(3, 1), newTextColor.substr(4, 1), newTextColor.substr(5, 1), newTextColor.substr(6, 1));

 for (i = 0; i < 6; i++) {
  singlenew[i] = singletext[i];
  if (singletext[i] != singleback[i]) {
   hmm = newChars;
   if (singletext[i] < singleback[i]) hmm = nenChars;
   for (var y = 0; y < oldChars.length; y++) {
    if (singletext[i].toLowerCase() == oldChars[y]) singlenew[i] = hmm[y];
   }
	}
 }
 for (i = 0; i < 6; i++) {
  newColor += singlenew[i];
 }
 document.getElementById("jsfnt").color = newColor;
}

function fadeLeftRightOut(invert) {			// from inside to outside
 fadeSign = ' ';
 if (invert) fadeSign = '.';
 for (var x = 0; x < 7; x++) {
  line = '';
 	for (var y = 0; y < printrow[x].length; y++) {
   if (y == floside) line += fadeSign;
    else if (y == froside) line += fadeSign;
    else {
     line += printrow[x].substr(y, 1);
   }
  }
  printrow[x] = line;
 }
 froside++;
 floside--;
 drawFade();
}

function fadeLeftRightIn(invert) {			// from left and right side to middle
 fadeSign = ' ';
 if (invert) fadeSign = '.';
 for (var x = 0; x < 7; x++) {
  line = '';
 	for (var y = 0; y < printrow[x].length; y++) {
   if (y == fliside) line += fadeSign;
    else if (y == friside) line += fadeSign;
    else {
     line += printrow[x].substr(y, 1);
   }
  }
  printrow[x] = line;
 }
 friside--;
 fliside++;
 drawFade();
}

function fadeDown() {										// from up to down
 var z = 6;
 for (var x = 5; x > 0; x--) {
  printrow[z] = printrow[x];
  z--;
 }
 printrow[0] = " ";
 printrow[1] = " ";
 drawFade();
}

function fadeUp() {											// from down to up
 var z = 0;
 for (var x = 1; x < 7; x++) {
  printrow[z] = printrow[x];
  z++;
 }
 printrow[5] = " ";
 printrow[6] = " ";
 drawFade();
}

function drawFade() {
 var obj = document.getElementById('jstxt');
 var z = 0;
 for (var x = 0; x < 7; x++) {
  obj.childNodes[z].nodeValue = printrow[x];
  z = z + 2;
 }
}

function flashIt() {
 waitcounter++;
 if (waitcounter >= waitstop) {
 	waitcounter = 0;
 	if (inverted) {
 	 inverted = 0;
 	 signon = '.';
 	 signoff = ' ';
 	} else {
 	 inverted = 1;
 	 signon = ' ';
 	 signoff = '.';
 	}
  clearPrintrow();
  for (var z = 0; z < mtext.length; z++) {
   mletter = mtext.substr(z, 1);
   getLetter();
   create();
  }
  sendOutString();
 }
}

function turnIt() {
 clearPrintrow();
 for (var z = 0; z < mtext.length; z++) {
  mletter = mtext.substr(z, 1);
  getLetter();
  create();
 }
 if (rotatebit == 0) {
  printrow[3] = printrow[2];
  printrow[3] = printrow[4];
  printrow[2] = printrow[1];
  printrow[4] = printrow[5];
  clearPrintline(1);
  clearPrintline(5);
 } else if (rotatebit == 1) {
  printrow[3] = printrow[1];
  printrow[3] = printrow[5];
  clearPrintline(1);
  clearPrintline(2);
  clearPrintline(4);
  clearPrintline(5);
 } else if (rotatebit == 2) {
  aa = printrow[2];
  printrow[2] = printrow[4];
  printrow[4] = aa;
  clearPrintline(1);
  clearPrintline(5);
 } else if (rotatebit == 3) {
  aa = printrow[2];
  printrow[2] = printrow[4];
  printrow[4] = aa;
  aa = printrow[1];
  printrow[1] = printrow[5];
  printrow[5] = aa;
 } else if (rotatebit == 4) {
  printrow[4] = printrow[1];
  printrow[2] = printrow[5];
  clearPrintline(1);
  clearPrintline(5);
 } else if (rotatebit == 5) {
  printrow[3] = printrow[5];
  printrow[3] = printrow[1];
  clearPrintline(1);
  clearPrintline(2);
  clearPrintline(4);
  clearPrintline(5);
 } else if (rotatebit == 6) {
  printrow[2] = printrow[1];
  printrow[4] = printrow[5];
  clearPrintline(1);
  clearPrintline(5);
 } else if (rotatebit == 7) {
 }
 rotatebit++;
 if (rotatebit == 10) rotatebit = 0;
 sendOutString();
}

function roundIt() {
 rrow = printrow[1];
 for (var x = 2; x < 7; x++) {
 	y = x - 1;
  printrow[y] = printrow[x];
 }
 printrow[6] = rrow;
 sendOutString();
}

function colorIt() {
 colcount++;
 if (colcount >= colwait) {
  colcount = 0;
  if (!colorbit) {
   colorbit = 1;
   ncol = txtColor;
  } else {
   colorbit = 0;
   ncol = LCDflashCol[txtcounter];
   if (!ncol) ncol = lcdBackColor;
  }
  document.getElementById("jsfnt").color = ncol;
 }
}

function colorIt2() {
 colcount++;
 if (colcount >= colwait) {
  colcount = 0;
  if (!colorbit) {
   colorbit = 1;
   ncol = txtBgColor;
  } else {
   colorbit = 0;
   ncol = LCDflashCol[txtcounter];
   if (!ncol) ncol = txtColor;
  }
  document.getElementById("jsclass").style.backgroundColor = ncol;
 }
}

function waitModus() {
 if (waitmode == 1) flashIt();							// let's flash the panel
 if (waitmode == 2) turnIt();
 if (waitmode == 3) roundIt();
 if (waitmode == 4) colorIt();							// Text
 if (waitmode == 5) colorIt2();							// Background
}

function rowAlert() {
 alert(
"r[0]:" + printrow[0] + "\n" + 
"r[1]:" + printrow[1] + "\n" + 
"r[2]:" + printrow[2] + "\n" + 
"r[3]:" + printrow[3] + "\n" + 
"r[4]:" + printrow[4] + "\n" + 
"r[5]:" + printrow[5] + "\n" + 
"r[6]:" + printrow[6]
 );
}

function makeAlert() {
 alert(
"fading:" + fadeing + "\n" + 
"rowtop:" + rowtop + "\n" + 
"outfade:" + outfade + "\n" + 
"rowcount:" + rowcount + "\n" + 
"txtcheck:" + txtcheck + "\n" + 
"startdelay:" + startdelay + "\n" + 
"txtcounter:" + txtcounter + "\n" + 
"delaycount:" +  delaycount + "\n" + 
"lefttoright:" + lefttoright + "\n" + 
"rowdirection:" + rowdirection + "\n"
 );
}
