// (c) 2000, D.Holmes

var stillloading = true;
var t_total = 0;
var f_total = 0;
var et_total = 0;
var ef_total = 0;
var checkthumbN = 0;
var checkfullN = 0;
var type = "";
var num = 0;
var checkfullid, checkthumbid;

var maxStrings		=  17;


var rMax		=  7;
var cLen		= 28;
var cellWidth		= 11;
var cellHeight		= 15;


var letterbg = "#2E3B22"; // y4 & B
if (colourcode == "b"  || colourcode == "gB") letterbg = "#FFFFFF";
if (colourcode == "B2") letterbg = "#042999";


var browseMODE		= 0;
browseMODE = location.search.substring(1);
if (	browseMODE != "0" &&
	browseMODE != "1" &&
	browseMODE != "2" &&
	browseMODE != "3" 
    ) browseMODE = "0";


if (browseMODE == 0)     { loopmode = 0; textmode = 0; }
else if (browseMODE == 1) { loopmode = 0; textmode = 2; }
else if (browseMODE == 2) { loopmode = 2; textmode = 0; }
else if (browseMODE == 3) { loopmode = 2; textmode = 2; }

var StartDelay		= 4000;
var StringDelay		= 800;
var RepeatDelay		= 6000;
var StatusInterval	= 1000;

var typeNormal	= true;	
var typeSpeed	= 70;
var crlfSpeed	= (typeSpeed * 4);
var highSpeed	= 0;
var commaPause	= 6;
var stopPause	= 18;
var delayPause	= 0;

BELchar		=   7;
BSchar		=   8;	
HTchar		=   9;
LFchar		=  10;
VTchar		=  11;	
FFchar		=  12;
CRchar		=  13;
SPACE		=  32;

MagicTABs	=   true;
TABwidth	=   8;
LowerASCII	=  32;
UpperASCII	= 126;

var rIndex     =  0;
var cIndex     =  0;
var sIndex     =  0;
var sCount     =  1;
var currString = "";


var printing		= false;
var timerStatus		= 0;


var putLineID;
var formFeedID;
var mainLoopID;
var repeatIntervalID;

var INformFeed = -1;

var clockBlink = false;
var nowTime;
var clkIntervalID;
var clockLen = 8;


for (imgs = 32; imgs <= 126 ; imgs++) {
        eval("var " + imgprefix + imgs + " = new Image()\;");
}
for (imgs = 32; imgs <= 126 ; imgs++) {
        eval(imgprefix + imgs + ".src = \"" + fileprefix + imgs + filesuffix + "\"\;");

}

function endgame() {
	formFeed();
	stopDisplay();
	//	      123456789_123456789_123456789_            123456789_123456789_123456789_

//	currString = "To replay this text, reload"	+'\t'+ "the page or select the"
//							+'\t'+ "checkbox shown on the right ->";
//	typeNormal = false;
//	putLine();
//	document['lcd2c29'].src = imgdir + "r-arrow1.gif";	// r-arrow_t.gif
//	return;
	
	currString = "cliquer et relire l'aide  ->"	+'\t'+ "                          "
							+'\t'+ "Si l'ecran est trop petit"							
						+'\t'+ "ouvrir dans une popup :"
					+'\t'+ "# diaporama mode 1        ->"
						+'\t'+ "# diaporama mode 2        ->";
	typeNormal = false;
	putLine();
	document['lcd0c26'].src = imgdir + "r-arrowtrait.gif";	// r-arrow_t.gif
	document['lcd0c27'].src = imgdir + "r-arrow1.gif";	// r-arrow_t.gif
	document['lcd4c26'].src = imgdir + "r-arrowtrait.gif";	// r-arrow_t.gif
	document['lcd4c27'].src = imgdir + "r-arrow1.gif";	// r-arrow_t.gif
	document['lcd5c26'].src = imgdir + "r-arrowtrait.gif";	// r-arrow_t.gif
	document['lcd5c27'].src = imgdir + "r-arrow1.gif";	// r-arrow_t.gif
	return;	
}

function replay() {
	formFeed();
	stopDisplay();
	sCount = 1;
	repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
	document.forms[0].reset();
}

function LCDclock() {

	var c = 0

	var now = new Date();
	var nowHour = now.getHours();
	var nowMin  = now.getMinutes();
	var now12Hr

	//clearTimeout(clkIntervalID);
	
	if (now.getTimezoneOffset() == 0) {
		//nowTime = nowHour;
		nowTime = ((nowHour < 10) ? "0" : "") + nowHour;
		nowTime += ((clockBlink) ? " " : ":")
		nowTime += ((nowMin < 10) ? "0" : "") + nowMin;
		nowTime += " GMT";
		clockLen = 9;
	} else {
		now12Hr  = ((nowHour > 12) ? nowHour - 12 : nowHour);
		nowTime  = ((now12Hr < 10) ? " " : "") + now12Hr;
		nowTime += ((clockBlink) ? " " : ":")
		nowTime += ((nowMin < 10) ? "0" : "") + nowMin;
		nowTime += (nowHour >= 12) ? " pm" : " am";
		clockLen = 8;
	}

	clockBlink  = !clockBlink;

	while (c < clockLen) {
		target = "lcd" + rMax + "c" + (cLen - clockLen + c);
		source = fileprefix + nowTime.charCodeAt(c) + filesuffix;
		document[target].src = source;
		c++;
	}
	//clkIntervalID = setTimeout("LCDclock()",2000);
}
	

function mainLoop() {

	printing = true;
	rIndex = 0;
	cIndex = 0;
	if (sCount > maxStrings) {
		sCount = 1;
		formFeedID = setTimeout("formFeed()",RepeatDelay);
	} else {
		currString = eval("Text" + sCount);
		if (currString == "xHALTx") {
			stopDisplay();
			return;
		} else if (currString == "xCODEx") {
			stopDisplay();
			endgame();	// run special routine
			return;
		} else if (currString == "xSKIPx") {
			printing = false;
			sCount++;
			return;
		}
		formFeed();
		putLine();
		sCount++;
	}

}

function repeatLoop() {

	if (! printing) {
		printing = true;
		mainLoop();
	}
}

function afterload() {

	rMax-- ;
	clkIntervalID = setInterval("LCDclock()",2000);
	//LCDclock();

	repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
}


function formFeed() {
	clearTimeout(putLineID);
	for (r = 0; r < rMax ; r++) { 
		for (c = 0; c < cLen ; c++) {
			target = "lcd" + r + "c" + c;
			//source = imgprefix + "32.src";
			source = eval(imgprefix + "32.src");
			//document[target].src = eval(source);
			document[target].src = source;
		}
	}
	target = "lcd" + "0" + "c" + "0";
	source = cursorimg.src;
	document[target].src = source;

	rIndex = 0;
	cIndex = 0;

	INformFeed = -1;
	printing   = false;

}

function clearRow(row) {
        clearTimeout(putLineID);
        r = row;
        if (r < rMax) {
                for (c = 0; c < cLen ; c++) {
                        target = "lcd" + r + "c" + c;
                        source = imgprefix + "32.src";
                        document[target].src = eval(source);
                }
        }
        cIndex = 0;
        rIndex = r;
}

function outputFinished() {
	printing = false;
	typeNormal = true;
}

function stopDisplay() {

	stillloading = false;
	clearTimeout(checkthumbid);
	clearTimeout(checkfullid);
	clearTimeout(mainLoopID);
	clearTimeout(repeatIntervalID);
	clearTimeout(formFeedID);
	clearTimeout(putLineID);
	timerStatus = 0;
	outputFinished();
}

function startDisplay(when) {
	
	if (timerStatus == 0) {
		timerStatus = -1;
		if (INformFeed == 0) {
			INformFeed = -1;
			clearTimeout(formFeedID);
			formFeedID = setTimeout("formFeed()",when);
			putLineID = setTimeout("putLine()", 1000);
			printing = true;
			repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
		} else {
			clearTimeout(putLineID);
			putLineID = setTimeout("putLine()",when);
			printing = true;
			repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
		}
	} else {
	}
}




function putLine() {

	printing = true;
	clearTimeout(putLineID);

	var localstring = currString;
	var localrownum = rIndex;
	var localcolumn = cIndex;
	var localCode   = 0;


	if (localstring.length > 0) {

		localCode = localstring.charCodeAt();

		if (isNaN(localCode)) localCode = NotAChar;
		if        (localCode == LFchar) {
			endofLine(LFchar);
		} else if (localCode == CRchar) {
			endofLine(CRchar);
		} else if (localCode == HTchar && MagicTABs) {
			endofLine(HTchar);
		} else if (localCode == HTchar) {
		} else if ( localCode < LowerASCII || localCode > UpperASCII ) {
			localCode = NotAChar;
		} else {


			target = "lcd" + localrownum + "c" + localcolumn;
			source = eval(imgprefix + localCode + ".src");
			document[target].src = source;

			localcolumn++;

			if (localcolumn <= cLen) {

				if (typeNormal && (localcolumn < cLen) ) {
					target = "lcd" + localrownum + "c" + localcolumn;
					source = cursorimg.src;
					document[target].src = source;
				}

				localstring = localstring.slice(1);
				currString = localstring;
				cIndex = localcolumn;
			    if (!typeNormal)
				putLineID = setTimeout("putLine()",highSpeed);

			    else if ( delayPause == 0 && ((localCode > 63) || (localCode == 32)) )
				putLineID = setTimeout("putLine()",typeSpeed);

			    else if (delayPause != 0) {						
				if ( (delayPause == 44) || (delayPause == 58) ) 	
					putLineID = setTimeout("putLine()",(typeSpeed * commaPause));
				else
					putLineID = setTimeout("putLine()",(typeSpeed * stopPause));
				delayPause = 0;
			    }

			    else if ( localCode != 46 && localCode != 44 && localCode != 33 && 	
					localCode != 63 && localCode != 59 && localCode != 58) 
				putLineID = setTimeout("putLine()",typeSpeed);

			    else if ( ( (localCode == 46) || (localCode == 33) || (localCode == 63) ) && 
				           (localstring.length > 1) &&
				      (	(localstring.charCodeAt(0) == 34) ||
				      	(localstring.charCodeAt(0) == 39) ||
				      	(localstring.charCodeAt(0) == 41) ||
				      	(localstring.charCodeAt(0) == 93) ||
					(localstring.charCodeAt(0) == 125) ) ) {
				delayPause = localCode;
				putLineID = setTimeout("putLine()",typeSpeed);
			    }

			    else if ( (localstring.length >= 1) &&
				       ( (localstring.charCodeAt(0) == localCode) ||
					 (localstring.charCodeAt(0) != SPACE) &&
					 (localstring.charCodeAt(0) != HTchar) ) )
				putLineID = setTimeout("putLine()",typeSpeed);

			    else if ( (localCode == 44) || (localCode == 58) )
				putLineID = setTimeout("putLine()",(typeSpeed * commaPause));
			    else
				{
				putLineID = setTimeout("putLine()",(typeSpeed * stopPause));
				}

			} else {

				endofLine(localCode);
			}
		}
	} else {
		printing = false;
		typeNormal = true;
	}
}



function endofLine(ending) {

	if (cIndex < cLen) {
		target = "lcd" + rIndex + "c" + cIndex;
		//source = imgprefix + "32.src";
		source = eval(imgprefix + "32.src");
		//document[target].src = eval(source);
		document[target].src = source;
	}

	if (rIndex < rMax) {
		rIndex++
		cIndex=0;
		target = "lcd" + rIndex + "c" + cIndex;
		source = cursorimg.src;
		document[target].src = source;
	} else {
		rIndex=0;
		cIndex=0;
		currString = Text0;
		INformFeed = 0;
		formFeedID = setTimeout("formFeed()",4000);
	}
	if (ending == HTchar) {
		currString = currString.slice(1);
		if (!typeNormal) putLineID = setTimeout("putLine()",highSpeed);
		else putLineID = setTimeout("putLine()",crlfSpeed);
	} else {
		printing = false;
		typeNormal = false;
	}
}

function drawTable() {

   var BGimg = cellbackground;
   var FGimg = fileprefix + "32" + filesuffix;

   var LCDtable = "<TABLE BGCOLOR=\"" + letterbg + "\" WIDTH=\"" + ((cellWidth * cLen) + 8) + 
		  "\" CELLPADDING=\"4\" CELLSPACING=\"0\" BORDER=\"0\">\n";
   LCDtable += "<TR><TD>\n";
   LCDtable += "<TABLE BACKGROUND=\"" + BGimg + "\" WIDTH=" + (cellWidth * cLen) + 
		" CELLPADDING=0 CELLSPACING=0 BORDER=0>\n";

   for (r = 0; r < rMax ; r++) {
     LCDtable += "<TR><TD NOWRAP>";
     for (c = 0; c < cLen ; c++) {
	LCDtable += "<IMG \nNAME=\"lcd" + r + "c" + c + "\" SRC=\"" + FGimg + "\"";
	LCDtable += "WIDTH=\"" + cellWidth + "\" HEIGHT=\"" + cellHeight + "\">";
     }
     LCDtable += "</TD></TR>\n";
   }
   LCDtable += "</TABLE>\n";

   LCDtable += "</TD></TR>\n";
   LCDtable += "</TABLE>\n";

   document.write(LCDtable);
   // this isn't technically polite...
   document.close();
}
