// (c) 2001, D.Holmes

var slowlink     = false;
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		=  8;


var rMax		=  6;
var cLen		= 24;

// see gallery_cache.js

var letterbg = "#001955"; // y2 & B
if (colourcode == "b"  || colourcode == "gB") letterbg = "#FFFFFF";
if (colourcode == "B2") letterbg = "#042999";
if (colourcode == "y3") 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 * 6);
var highSpeed	= 0;	// used for typeNormal only - showInfo() doesn't use this


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;


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 == "xSKIPx") {
			printing = false;
			sCount++;
			return;
		}
		formFeed();
		putLine();
		sCount++;
	}

}

function repeatLoop() {

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


function addthumbs_1() { imgLoadChk("t",1); }
function addthumbs_2() { imgLoadChk("t",2); }
function addthumbs_3() { imgLoadChk("t",3); }
function addthumbs_4() { imgLoadChk("t",4); }
function addthumbs_5() { imgLoadChk("t",5); }
function addthumbs_6() { imgLoadChk("t",6); }
function addthumbs_7() { imgLoadChk("t",7); }
function addthumbs_8() { imgLoadChk("t",8); }
function addthumbs_9() { imgLoadChk("t",9); }
function addthumbs_10() { imgLoadChk("t",10); }
function addthumbs_11() { imgLoadChk("t",11); }
function addthumbs_12() { imgLoadChk("t",12); }

function addfulls_1() { imgLoadChk("f",1); }
function addfulls_2() { imgLoadChk("f",2); }
function addfulls_3() { imgLoadChk("f",3); }
function addfulls_4() { imgLoadChk("f",4); }
function addfulls_5() { imgLoadChk("f",5); }
function addfulls_6() { imgLoadChk("f",6); }
function addfulls_7() { imgLoadChk("f",7); }
function addfulls_8() { imgLoadChk("f",8); }
function addfulls_9() { imgLoadChk("f",9); }
function addfulls_10() { imgLoadChk("f",10); }
function addfulls_11() { imgLoadChk("f",11); }
function addfulls_12() { imgLoadChk("f",12); }

function errort_12() { imgLoadChk("et",12); }
function errorf_12() { imgLoadChk("ef",12); }

function imgLoadChk(type,num) {
	var imgtype = type;
	var imgnum  = num;
	var r,c,target,source;

	eval(imgtype + "_total++");
        
	if (stillloading) {
		r = (Math.ceil(imgnum / maxcols)) + 1;
		c = (Math.ceil(imgnum % maxcols));
		if (c == 0) { c = 3; }

		if (type == "t") {
			document["lcd" + r + "c" + c].src = imgdir + "cursoropen" + filesuffix;
		} else if (type == "f") {
			document["lcd" + r + "c" + c].src = imgdir + "cursorblock" + filesuffix;
		} else if (type == "et") {
			t_total++;
			document["lcd" + r + "c" + c].src = fileprefix + "42" + filesuffix;
		} else if (type == "ef") {
			f_total++;
			document["lcd" + r + "c" + c].src = fileprefix + "42" + filesuffix;
		}
	}
}

function checkthumb() {
	var c;
	checkthumbN++;
	if (t_total >= 12) {
		if (checkthumbN > 950) {
		//if (checkthumbN > 0) {
		//cifb :checkthumbN > 50 modifie en checkthumbN > 950 pour eviter d office cause lent
			clearRow(0);
			currString = "Le reseau semble lent !	 Transfert debit< 7kBps";			
			typeNormal = false;
			putLine();
			slowlink = true;
			pmode(); // Simulate two clicks on play mode change
			pmode(); // to get us into single-frame play mode.
			browseMODE = 0;
			if (jschk) { 
				startPanel();
			} else { 
				afterloadB();
			}
		} else {
			document['show'].src = "finals/n_valle_aulnes_logo.gif";
			loadFulls();
			checkfullid = setTimeout("checkfull()",70);
		}
		insertThumbs();
	} else {
		checkthumbid = setTimeout("checkthumb()",70);
	}
}

function checkfull() {
	var c;
	checkfullN++;
	if (f_total >= 12) {
		if (checkthumbN > 50) {
			typeNormal = true;
		}
		if (jschk) startPanel();
		afterloadB();
	} else {
		checkfullid = setTimeout("checkfull()",70);
	}
}

function afterload() {
/*
      96  `    97  a    98  b    99  c   100  d   101  e   102  f   103  g
     104  h   105  i   106  j   107  k   108  l   109  m   110  n   111  o
     112  p   113  q   114  r   115  s   116  t   117  u   118  v   119  w
     120  x   121  y   122  z   123  {   124  |   125  }   126  ~   127 del
*/

	document['lcd0c0'].src  = spincursimg.src;
	document['lcd0c1'].src  = asc32.src;
	document['lcd0c2'].src  = asc80.src;
	document['lcd0c3'].src  = asc114.src;
	document['lcd0c4'].src  = asc101.src;
	document['lcd0c5'].src  = asc112.src;
	document['lcd0c6'].src  = asc97.src;
	document['lcd0c7'].src  = asc114.src;
	document['lcd0c8'].src  = asc97.src;
		document['lcd0c9'].src  = asc116.src;
	document['lcd0c10'].src  = asc105.src;
	document['lcd0c11'].src  = asc111.src;
	document['lcd0c12'].src  = asc110.src;
	loadThumbs();
	document['lcd2c1'].src  = imgdir + "45" + filesuffix;
	document['lcd2c2'].src  = imgdir + "45" + filesuffix;
	document['lcd2c3'].src  = imgdir + "45" + filesuffix;
	document['lcd3c1'].src  = imgdir + "45" + filesuffix;
	document['lcd3c2'].src  = imgdir + "45" + filesuffix;
	document['lcd3c3'].src  = imgdir + "45" + filesuffix;
	document['lcd4c1'].src  = imgdir + "45" + filesuffix;
	document['lcd4c2'].src  = imgdir + "45" + filesuffix;
	document['lcd4c3'].src  = imgdir + "45" + filesuffix;
	document['lcd5c1'].src  = imgdir + "45" + filesuffix;
	document['lcd5c2'].src  = imgdir + "45" + filesuffix;
	document['lcd5c3'].src  = imgdir + "45" + filesuffix;

	document['lcd2c5'].src  = imgdir + "73" + filesuffix;
	document['lcd2c6'].src  = imgdir + "110" + filesuffix;
	document['lcd2c7'].src  = imgdir + "105" + filesuffix;
	document['lcd2c8'].src  = imgdir + "116" + filesuffix;
	document['lcd2c9'].src  = imgdir + "105" + filesuffix;
	document['lcd2c10'].src  = imgdir + "97" + filesuffix;
	document['lcd2c11'].src  = imgdir + "108" + filesuffix;
	document['lcd2c12'].src  = imgdir + "105" + filesuffix;
	document['lcd2c13'].src  = imgdir + "115" + filesuffix;
	document['lcd2c14'].src  = imgdir + "101" + filesuffix;
	document['lcd2c15'].src  = imgdir + "114" + filesuffix;

	document['lcd2c17'].src  = imgdir + "115" + filesuffix;
	document['lcd2c18'].src  = imgdir + "116" + filesuffix;
	document['lcd2c19'].src  = imgdir + "97" + filesuffix;
	document['lcd2c20'].src  = imgdir + "116" + filesuffix;
	document['lcd2c21'].src  = imgdir + "117" + filesuffix;
	document['lcd2c22'].src  = imgdir + "115" + filesuffix;
	document['lcd2c23'].src  = imgdir + "58" + filesuffix;

	document['lcd4c7'].src  = imgdir + "cursoropen" + filesuffix;

	document['lcd4c9'].src  = imgdir + "118" + filesuffix;
	document['lcd4c10'].src  = imgdir + "105" + filesuffix;
	document['lcd4c11'].src  = imgdir + "103" + filesuffix;
	document['lcd4c12'].src  = imgdir + "110" + filesuffix;
	document['lcd4c13'].src  = imgdir + "101" + filesuffix;
	document['lcd4c14'].src  = imgdir + "116" + filesuffix;
	document['lcd4c15'].src  = imgdir + "116" + filesuffix;
	document['lcd4c16'].src  = imgdir + "101" + filesuffix;

	document['lcd5c7'].src  = imgdir + "cursorblock" + filesuffix;

	document['lcd5c9'].src  = imgdir + "110" + filesuffix;
	document['lcd5c10'].src  = imgdir + "111" + filesuffix;
	document['lcd5c11'].src  = imgdir + "114" + filesuffix;
	document['lcd5c12'].src  = imgdir + "109" + filesuffix;
	document['lcd5c13'].src  = imgdir + "97" + filesuffix;
	document['lcd5c14'].src  = imgdir + "108" + filesuffix;

	checkthumbid = setTimeout("checkthumb()",100);
}


function afterloadB() {

	if(jschk && textmode == 2) {	// panel req's JS1.2
		printing = true;
		repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
	} // jschk
	waitforload(); // in slideshow_*.js - starts capture of mousemove events and slide show timer
}


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 formFeed() {
	clearTimeout(putLineID);
	for (r = 0; r < rMax ; r++) { 
		for (c = 0; c < cLen ; c++) {
			target = "lcd" + r + "c" + c;
			source = imgprefix + "32.src";
			document[target].src = eval(source);
		}
	}
	target = "lcd" + "0" + "c" + "0";
	source = cursorimg.src;
	document[target].src = source;

	rIndex = 0;
	cIndex = 0;

	INformFeed = -1;
	printing   = false;

}

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 showInfo(row,column) {
	
   localrow = row;
   localcol = column;
   localstring = eval("phototxt_" + ((localrow-1)*3 + localcol)) ;
   if (localstring != "no image") {
	stopDisplay();
	formFeed();	
	for (r = 0; r < rMax ; r++) {
		for (c = 0 ; c < cLen ; c++) {
			localCode = localstring.charCodeAt();
			if (localCode == HTchar || localCode == LFchar || isNaN(localCode)) { 
				break;
			} // eol for line or record end
			target = "lcd" + r + "c" + c;
			source = eval(imgprefix + localCode + ".src");
			document[target].src = source;
			localstring = localstring.slice(1);
		}
		localstring = localstring.slice(1);
   	}
   }
}


function showDesc(row,column) {

}

function animPlay() {
	if ( textmode == 2 ) {
		stopDisplay();
		formFeed();
		sCount = 1;
		repeatIntervalID = setInterval("repeatLoop()",StatusInterval);
	}
}
	

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) {
					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 (localCode != 46 && localCode != 44 && localCode != 33 && localCode != 63) 
				putLineID = setTimeout("putLine()",typeSpeed);
			    else if (	(localstring.length > 1) &&
					(localstring.charCodeAt(0) != SPACE) &&
					(localstring.charCodeAt(0) != HTchar) )
				putLineID = setTimeout("putLine()",typeSpeed);
			    else if (localCode == 44)
				putLineID = setTimeout("putLine()",(typeSpeed * 8));
			    else
				putLineID = setTimeout("putLine()",(typeSpeed * 15));

			} else if ((localcolumn - 1) < cLen) {

				localstring = localstring.slice(1);
				currString = localstring;
				cIndex = localcolumn;
			
			    if (!typeNormal)
				putLineID = setTimeout("putLine()",highSpeed);
			    else if (localCode != 46 && localCode != 44 && localCode != 33 && localCode != 63) 
				putLineID = setTimeout("putLine()",typeSpeed);
			    else if (	(localstring.length > 1) &&
					(localstring.charCodeAt(0) != SPACE) &&
					(localstring.charCodeAt(0) != HTchar) )
				putLineID = setTimeout("putLine()",typeSpeed);
			    else if (localCode == 44)
				putLineID = setTimeout("putLine()",(typeSpeed * 8));
			    else
				putLineID = setTimeout("putLine()",(typeSpeed * 15));
		
			} else {

				endofLine(localCode);

			}

		}


	} else {
		printing = false;
		typeNormal = true;
	}


}



function endofLine(ending) {

	if (cIndex < cLen) {
		target = "lcd" + rIndex + "c" + cIndex;
		source = imgprefix + "32.src";
		document[target].src = eval(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();
}

