
var m0 = new Array(1)

m0[1] = new Array(52,36);
m0[1].base = new Array(1,0);
m0[1].root =0;
m0[1].move =0;
m0[2] = new Array(51,35);
m0[2].base = new Array(2,0);
m0[2].root =0;
m0[2].move =0;
m0[3] = new Array(14,22);
m0[3].base = new Array(4,0);
m0[3].root =0;
m0[3].move =1;
m0[4] = new Array(6,21);
m0[4].base = new Array(5,0);
m0[4].root =0;
m0[4].move =1;
m0[6] = new Array(45,28);
m0[6].base = new Array(16,0);
m0[6].root =5;
m0[6].move =9;
m0[5] = new Array(12,28,37,28,11,19,28,19,5,19,62,45,14,30,51,35,30,38,45,30);
m0[5].base = new Array(6,7,8,9,10,11,12,13,14,15,0);
m0[5].root =0;
m0[5].move =1;
m0[7] = new Array(10,26,52,36);
m0[7].base = new Array(17,18,0);
m0[7].root =0;
m0[7].move =1;
m0[8] = new Array(9,17);
m0[8].base = new Array(19,0);
m0[8].root =0;
m0[8].move =1;
m0[11] = new Array(3,12,56,61,8,24,45,46,21,28,37,28,13,29,28,21,77,77,5,21,38,14);
m0[11].base = new Array(48,49,50,51,52,53,54,55,55,56,57,0);
m0[11].root =10;
m0[11].move =26;
m0[10] = new Array(6,21,52,44,10,26,49,41,1,18,61,25,2,11,58,49,12,20,60,62,127,61,5,12,51,43,4,6,71,5,25,18,11,18,45,28,0,2,57,51,21,11,59,38,11,28,49,28,12,21,61,45,21,28,37,28,3,10,38,31,15,23,56,61,14,22,31,23,10,28,45,21);
m0[10].base = new Array(23,24,25,26,27,28,29,30,31,32,32,33,34,35,35,36,37,38,39,40,41,42,43,44,45,46,47,58,59,60,61,62,63,64,65,66,0);
m0[10].root =9;
m0[10].move =1;
m0[12] = new Array(10,26);
m0[12].base = new Array(69,0);
m0[12].root =9;
m0[12].move =3;
m0[9] = new Array(62,45,14,22,54,46,5,14,61,54,6,21,60,62,127,61,4,6,71,5,51,43,10,26,50,42,1,18,57,40,0,1);
m0[9].base = new Array(21,22,67,68,70,71,72,72,73,73,74,75,76,77,78,79,0);
m0[9].root =0;
m0[9].move =2;
m0[13] = new Array(50,34);
m0[13].base = new Array(82,0);
m0[13].root =0;
m0[13].move =4;
m0[14] = new Array(62,45,2,38);
m0[14].base = new Array(83,84,0);
m0[14].root =0;
m0[14].move =4;
m0[16] = new Array(52,25,1,18,25,9,18,33);
m0[16].base = new Array(92,93,94,95,0);
m0[16].root =15;
m0[16].move =5;
m0[15] = new Array(2,38,61,52,38,52,59,52,12,20,62,45,10,26,60,62,127,61,1,18);
m0[15].base = new Array(86,87,88,89,90,91,96,97,97,98,0);
m0[15].root =0;
m0[15].move =5;
m0[17] = new Array(27,35);
m0[17].base = new Array(99,0);
m0[17].root =0;
m0[17].move =5;
m0[18] = new Array(1,11,62,45,10,18,57,42,5,19,61,52,4,6,71,5,60,62,127,61,5,4,48,32,20,28);
m0[18].base = new Array(102,103,104,105,106,107,108,108,109,109,110,111,112,0);
m0[18].root =0;
m0[18].move =7;
m0[19] = new Array(62,45,4,6,71,5);
m0[19].base = new Array(114,115,115,0);
m0[19].root =0;
m0[19].move =8;
m0[20] = new Array(61,52,4,6,71,5);
m0[20].base = new Array(116,117,117,0);
m0[20].root =0;
m0[20].move =8;
m0[21] = new Array(4,6,71,5);
m0[21].base = new Array(119,119,0);
m0[21].root =0;
m0[21].move =9;
m0[22] = new Array(1,11);
m0[22].base = new Array(120,0);
m0[22].root =0;
m0[22].move =9;
m0[23] = new Array(2,16);
m0[23].base = new Array(123,0);
m0[23].root =0;
m0[23].move =11;
m0[24] = new Array(10,26);
m0[24].base = new Array(124,0);
m0[24].root =0;
m0[24].move =11;
m0[25] = new Array(4,6,71,5);
m0[25].base = new Array(125,125,0);
m0[25].root =0;
m0[25].move =11;
m0[26] = new Array(59,52);
m0[26].base = new Array(131,0);
m0[26].root =0;
m0[26].move =18;
m0[27] = new Array(48,32);
m0[27].base = new Array(132,0);
m0[27].root =0;
m0[27].move =18;
m0[28] = new Array(59,60);
m0[28].base = new Array(133,0);
m0[28].root =0;
m0[28].move =18;
m0[29] = new Array(11,26);
m0[29].base = new Array(135,0);
m0[29].root =0;
m0[29].move =19;
m0[30] = new Array(21,36);
m0[30].base = new Array(140,0);
m0[30].root =0;
m0[30].move =23;
m0[31] = new Array(14,22);
m0[31].base = new Array(141,0);
m0[31].root =0;
m0[31].move =23;
m0[32] = new Array(12,19,28,21);
m0[32].base = new Array(144,145,0);
m0[32].root =0;
m0[32].move =25;
m0[33] = new Array(48,32);
m0[33].base = new Array(147,0);
m0[33].root =0;
m0[33].move =26;
m0[34] = new Array(5,3,43,25,18,2,46,31);
m0[34].base = new Array(149,150,151,152,0);
m0[34].root =0;
m0[34].move =27;
m0[35] = new Array(21,11);
m0[35].base = new Array(153,0);
m0[35].root =0;
m0[35].move =27;
m0[36] = new Array(0,2,43,25);
m0[36].base = new Array(154,155,0);
m0[36].root =0;
m0[36].move =27;
m0[37] = new Array(52,45,5,3);
m0[37].base = new Array(157,158,0);
m0[37].root =0;
m0[37].move =28;
m0[39] = new Array(26,34,14,35,13,29,41,34);
m0[39].base = new Array(163,164,165,166,0);
m0[39].root =38;
m0[39].move =2;
m0[38] = new Array(21,4,28,14,4,14,52,38);
m0[38].base = new Array(160,161,162,167,0);
m0[38].root =0;
m0[38].move =29;
m0[40] = new Array(15,23,28,21,12,21,31,21,14,21,52,38,6,7,38,39,7,14,61,45,5,3,45,46,14,5,39,21);
m0[40].base = new Array(168,169,170,171,172,173,174,175,176,177,178,179,180,181,0);
m0[40].root =0;
m0[40].move =29;
m0[43] = new Array(20,28,43,36);
m0[43].base = new Array(188,189,0);
m0[43].root =42;
m0[43].move =1;
m0[44] = new Array(35,44,31,21,14,21,38,39);
m0[44].base = new Array(192,193,194,195,0);
m0[44].root =42;
m0[44].move =3;
m0[45] = new Array(43,15,6,3,38,47,21,12,15,36);
m0[45].base = new Array(197,198,199,200,201,0);
m0[45].root =42;
m0[45].move =4;
m0[42] = new Array(52,38,6,7,61,45,5,6,45,47,21,12,31,21,15,23,43,36,18,10,36,9,10,9,38,30,12,21,47,23,14,23,30,23);
m0[42].base = new Array(186,187,190,191,196,202,203,204,205,206,207,208,209,210,211,212,213,0);
m0[42].root =41;
m0[42].move =3;
m0[41] = new Array(27,35,28,21,12,21,31,21);
m0[41].base = new Array(182,183,184,185,0);
m0[41].root =0;
m0[41].move =29;
m0[47] = new Array(31,14,7,14,52,38,14,7,38,30,5,6,28,21,12,21,30,21,6,14,61,45);
m0[47].base = new Array(216,217,218,219,220,221,222,223,224,225,226,0);
m0[47].root =46;
m0[47].move =1;
m0[48] = new Array(14,21,52,31);
m0[48].base = new Array(228,229,0);
m0[48].root =46;
m0[48].move =2;
m0[46] = new Array(6,7,31,21,27,35,21,15,5,3,15,30);
m0[46].base = new Array(214,215,227,230,231,232,0);
m0[46].root =0;
m0[46].move =29;
m0[50] = new Array(6,15,52,31,15,6,31,38,6,15,61,45);
m0[50].base = new Array(238,239,240,241,242,243,0);
m0[50].root =49;
m0[50].move =4;
m0[51] = new Array(6,14,52,38,14,7,61,45,27,35,15,29,18,45,38,39,45,31,39,31,7,14,31,15);
m0[51].base = new Array(244,245,246,247,248,249,250,251,252,253,254,255,0);
m0[51].root =49;
m0[51].move =4;
m0[49] = new Array(26,34,31,21,14,21,43,15,6,7,52,31);
m0[49].base = new Array(233,234,235,236,237,256,0);
m0[49].root =0;
m0[49].move =29;
m0[52] = new Array(52,31,13,29,61,45);
m0[52].base = new Array(258,259,260,0);
m0[52].root =0;
m0[52].move =30;
m0[53] = new Array(6,7,52,31);
m0[53].base = new Array(262,263,0);
m0[53].root =0;
m0[53].move =31;
m0[54] = new Array(61,45,13,21);
m0[54].base = new Array(267,268,0);
m0[54].root =0;
m0[54].move =34;
m0[56] = new Array(14,49);
m0[56].base = new Array(272,0);
m0[56].root =55;
m0[56].move =1;
m0[57] = new Array(61,45);
m0[57].base = new Array(273,0);
m0[57].root =55;
m0[57].move =1;
m0[58] = new Array(5,3,31,22,6,5,28,14,5,6,14,23,6,7,22,14);
m0[58].base = new Array(275,276,277,278,279,280,281,282,0);
m0[58].root =55;
m0[58].move =2;
m0[59] = new Array(5,13,31,7);
m0[59].base = new Array(283,284,0);
m0[59].root =55;
m0[59].move =2;
m0[55] = new Array(13,29,14,28,5,21,61,45);
m0[55].base = new Array(270,271,274,285,0);
m0[55].root =0;
m0[55].move =35;
m0[60] = new Array(5,3,31,7);
m0[60].base = new Array(286,287,0);
m0[60].root =0;
m0[60].move =35;
m0[61] = new Array(27,35,31,7);
m0[61].base = new Array(288,289,0);
m0[61].root =0;
m0[61].move =35;
m0[62] = new Array(14,21,38,30);
m0[62].base = new Array(292,293,0);
m0[62].root =0;
m0[62].move =37;
m0[63] = new Array(27,35,45,47,12,39,47,39);
m0[63].base = new Array(296,297,298,299,0);
m0[63].root =0;
m0[63].move =39;
m0[64] = new Array(5,6,45,47,12,39,47,39);
m0[64].base = new Array(300,301,302,303,0);
m0[64].root =0;
m0[64].move =39;
m0[65] = new Array(12,30,38,30,20,28,45,47,18,23,47,23);
m0[65].base = new Array(304,305,306,307,308,309,0);
m0[65].root =0;
m0[65].move =39;
m0[66] = new Array(20,28);
m0[66].base = new Array(310,0);
m0[66].root =0;
m0[66].move =39;
m0[67] = new Array(37,28);
m0[67].base = new Array(316,0);
m0[67].root =0;
m0[67].move =44;
m0[68] = new Array(0,1);
m0[68].base = new Array(318,0);
m0[68].root =0;
m0[68].move =45;
m0[69] = new Array(28,37,9,17,23,14,56,61);
m0[69].base = new Array(321,322,323,324,0);
m0[69].root =0;
m0[69].move =47;
m0[70] = new Array(9,27);
m0[70].base = new Array(328,0);
m0[70].root =0;
m0[70].move =50;
m0[71] = new Array(9,16);
m0[71].base = new Array(329,0);
m0[71].root =0;
m0[71].move =50;
m0[72] = new Array(28,37,11,38,14,7,61,37,21,14,38,30,1,9,30,27);
m0[72].base = new Array(331,332,333,334,335,336,337,338,0);
m0[72].root =0;
m0[72].move =51;
m0[73] = new Array(21,28,38,31);
m0[73].base = new Array(343,344,0);
m0[73].root =0;
m0[73].move =55;
m0[74] = new Array(55,39);
m0[74].base = new Array(346,0);
m0[74].root =0;
m0[74].move =56;
m0[75] = new Array(13,21,20,12);
m0[75].base = new Array(348,349,0);
m0[75].root =0;
m0[75].move =57;
m0[76] = new Array(54,38);
m0[76].base = new Array(353,0);
m0[76].root =0;
m0[76].move =60;
m0[77] = new Array(5,6,21,3);
m0[77].base = new Array(357,358,0);
m0[77].root =0;
m0[77].move =63;
m0[78] = new Array(7,15);
m0[78].base = new Array(362,0);
m0[78].root =0;
m0[78].move =66;
m0[0] = new Array(53,37,11,27,52,44,6,21,49,41,12,20,58,49,5,12,61,43,9,17,62,45,2,9,57,42,1,11,60,62,127,61,4,6,71,5,42,52,10,26,52,46,3,10,45,28,11,28,49,28,10,18,59,52,8,16,46,31,21,31,43,15,6,15,52,31,15,6,28,14,6,14,31,38,14,15,61,45,20,28,45,47,18,23,47,23,15,23,38,11,12,21,11,9,23,14,56,61,0,1,9,11,5,3,11,38,14,5,37,28,21,14,28,20,1,9,38,22,13,21,61,21,14,21,22,21,5,4,21,7,4,12,7,14,12,20,14,9,3,19,9,16,27,35,44,35,26,35,55,39,35,43,16,43);
m0[0].base = new Array(0,3,20,80,81,85,100,101,113,118,121,122,126,127,128,128,129,129,130,134,136,137,138,139,142,143,146,148,156,159,257,261,264,265,266,269,290,291,294,295,311,312,313,314,315,317,319,320,325,326,327,330,339,340,341,342,345,347,350,351,352,354,355,356,359,360,361,363,364,365,366,367,368,369,370,371,372,0);
m0[0].root =0;
m0[0].move =0;
var n0 = new Array();
var b0 = -1;
var pieces = "KQNBR ";
var pos_after = "Position after ";
var start_pos = "Startposition ";
function g0(a,b)
{	gm(m0,n0,0,b0,'laskerbauer_rp1g0.htm',a,b);}
function MB_50()
{b0=MB_5(m0,n0,0,b0,'laskerbauer_rp1g0.htm'); GMS(m0,n0,0,b0,'laskerbauer_rp1g0.htm');}
function MB0()
{b0=MB(m0,n0,0,b0,'laskerbauer_rp1g0.htm'); GMS(m0,n0,0,b0,'laskerbauer_rp1g0.htm');}
function MF_50()
{b0=MF_5(m0,n0,0,b0,'laskerbauer_rp1g0.htm'); GMS(m0,n0,0,b0,'laskerbauer_rp1g0.htm');}
function MF0(bVarWin)
{b0=MF(m0,n0,0,b0,'laskerbauer_rp1g0.htm',bVarWin); GMS(m0,n0,0,b0,'laskerbauer_rp1g0.htm');}
var nMoves = new Array(0,0);
var nLevels = new Array(0,0);
var nNameCount = new Array(0,0);
var nOld = new Array(-1,-1);
baseName = 'laskerbauer_rp1';
var EmptyWhitePath = "gif/w.gif";
var EmptyBlackPath = "gif/b.gif";
var gifPath  = 'gif/';
var BackColor = "#F0F4C8";
var leftWindow		= this;
var rightWindow		= this;
var bFrames = 0;
var leftDocument		= leftWindow.document;
var rightDocument	= rightWindow.document;
// Copyright 98,99,00,01 by ChessBase GmbH, Germany
function Init( path )
{ gifs = new Array(6);
	for ( var i=0; i< 26; i++)
		gifs[i]= new Image();
	gifs[0].src = path + "b.gif";
	gifs[1].src = path + "bbb.gif";
	gifs[2].src = path + "bbw.gif";
	gifs[3].src = path + "bkb.gif";
	gifs[4].src = path + "bkw.gif";
	gifs[5].src = path + "bqb.gif";
	gifs[6].src = path + "bqw.gif";
	gifs[7].src = path + "brb.gif";
	gifs[8].src = path + "brw.gif";
	gifs[9].src = path + "bnb.gif";
	gifs[10].src = path + "bnw.gif";
	gifs[11].src = path + "wbb.gif";
	gifs[12].src = path + "wbw.gif";
	gifs[13].src = path + "wrb.gif";
	gifs[14].src = path + "wrw.gif";
	gifs[15].src = path + "wqb.gif";
	gifs[16].src = path + "wqw.gif";
	gifs[17].src = path + "wkb.gif";
	gifs[18].src = path + "wkw.gif";
	gifs[19].src = path + "wnb.gif";
	gifs[20].src = path + "wnw.gif";
	gifs[21].src = path + "wpb.gif";
	gifs[22].src = path + "wpw.gif";
	gifs[23].src = path + "bpb.gif";
	gifs[24].src = path + "wpb.gif";
	gifs[25].src = path + "b.gif";
}
function SyncPicture( base, basename )
{	if ( base > -1 ) return base;
	for ( i=0; i < leftDocument.images.length; i++ )
	{	if ( leftDocument.images[i].name != "" )
			if ( leftDocument.images[i].name == basename )
				return i;
			else if ( leftDocument.images[i].name.substring(0,3) == basename.substring(0,3) )
				i+= 63;
	}
	return -1;
}
function MF_5( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	for ( i=0; nMoves[nm] < moves[nLevels[nm]].length / 2 && i < 10; i++ )
		MF( moves, names, nm, base, false );
	return base;
}
function MB_5( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	for ( i=0; ( nMoves[nm] > 0 || nLevels[nm] > 0 ) && i < 10; i++ )
		MB( moves, names, nm, base );
	return base;
}
function GoStart( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	while ( nMoves[nm] > 0 || nLevels[nm] > 0 )
		MB( moves, names, nm, base );
	return base;
}
function GoEnd( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	while ( nMoves[nm] < moves[nLevels[nm]].length / 2 )
		MF( moves, names, nm, base, false );
	return base;
}
function MF( moves, names, nm, base, basename, bCheckV )
{	base = SyncPicture( base, basename );
	if ( bCheckV )
	{	var b = false;
		for ( i=0; i < moves.length; i++ )
			if ( i != nLevels[nm] && moves[i].root == nLevels[nm] && moves[i].move == nMoves[nm] )
				b = true;
		if ( b )
		{	GenerateVarWindow(moves, names, nm, base, basename);
			return base;
		}
	}
	if ( nMoves[nm] < moves[nLevels[nm]].length / 2 )
	{	var n = nMoves[nm]*2;
		var from = moves[nLevels[nm]][ n ] & 0x3f;
		var to = moves[nLevels[nm]][ n+1 ] & 0x3f;
		names[ nNameCount[nm]   ] = leftDocument.images[ base + from ].src;
		names[ nNameCount[nm]+1 ] = leftDocument.images[ base + to ].src;
		var len = names[nNameCount[nm]].length;
		var nn = (Math.floor(( to / 8 )) + ( to % 8 ));
		var dest = ( nn % 2 ) == 1 ? "b" : "w";
		var piece = names[nNameCount[nm]].substring(len-6,len-5);
		if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x80 )
			piece = "q";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x100 )
			piece = "n";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x180 )
			piece = "b";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x200 )
			piece = "r";
		leftDocument.images[ base + to ].src = names[nNameCount[nm]].substring(0,len-6) + piece + dest + names[nNameCount[nm]].substring(len-4,len);
		nn = (Math.floor(( from / 8 )) + ( from % 8 ));
		if (( nn % 2 ) == 1 )
			leftDocument.images[ base + from ].src = EmptyBlackPath;
		else
			leftDocument.images[ base + from ].src = EmptyWhitePath;
		nMoves[nm]++;
		nNameCount[nm] = nNameCount[nm] + 2;
		if ( nMoves[nm] < moves[nLevels[nm]].length / 2 && ( moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x40 ) == 0x40 )
			MF( moves, names, nm, base, bCheckV );
	}
	return base
}
function MB( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	if ( nMoves[nm] > 0 )
	{	nMoves[nm]--;
		nNameCount[nm] -= 2;
		var from = moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x3f;
		var to = moves[nLevels[nm]][ nMoves[nm]*2+1 ] & 0x3f;
		leftDocument.images[ base + from ].src = names[ nNameCount[nm] ];
		leftDocument.images[ base + to ].src = names[ nNameCount[nm]+1 ];
		if (( moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x40 ) == 0x40 )
			MB( moves, names, nm, base );
	}
	if ( nMoves[nm] == 0 )
		if ( nLevels[nm] > 0 )
		{	nMoves[nm] = moves[nLevels[nm]].move;
			nLevels[nm] = moves[nLevels[nm]].root;
			if (( moves[nLevels[nm]][nMoves[nm]*2] & 0x40 ) == 0x40 )
				nMoves[nm]--;
		}
	return base;
}
function GMS2(  moves, names, nm, base, nMoveNumber, nLevel, basename )
{	if ( nMoveNumber > 0 )
	{	var n = (nMoveNumber-1)*2;
		var off=1;
		for ( i=0; i <= n; i += 2 )
			if (( moves[nLevel][i] & 0x40 ) == 0x40 )
				off = off+1;
		var from = moves[nLevel][ n ] & 0x3f;
		var to = moves[nLevel][ n+1 ] & 0x3f;
		var len = leftDocument.images[ base + to ].src.length;
		var piece = leftDocument.images[ base + to ].src.substring(len-6,len-5);
		if ( piece == "q" )
			piece = pieces.substring(1,2);
		else if ( piece == "r" )
			piece = pieces.substring(4,5);
		else if ( piece == "b" )
			piece = pieces.substring(3,4);
		else if ( piece == "n" )
			piece = pieces.substring(2,3);
		else if ( piece ==  "k" )
			piece = pieces.substring(0,1);
		else piece = pieces.substring(5,6);
		var piece2 = "";
		if (( moves[nLevel][ n ] & 0x380 ) == 0x80 )
			piece2 = pieces.substring(1,2);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x100 )
			piece2 = pieces.substring(2,3);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x180 )
			piece2 = pieces.substring(3,4);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x200 )
			piece2 = pieces.substring(4,5);
		var lines = "abcdefgh";
		var rows = "87654321";
		var fromLine = from%8;
		var fromRow = Math.floor(from/8);
		var toLine = to%8;
		var toRow = Math.floor(to/8);
		var moveNumber = gmn( moves, nLevel ) + nMoveNumber-off;
		var result = (Math.floor((moveNumber)/2)+1).toString() + ". ";
		if ( leftDocument.images[ base + to ].src.substring(len-7,len-6) == "b" )
			result = result + "... ";
		if ( n >= 2 && (( moves[nLevel][n] & 0x40 ) == 0x40 ))
		{	if (( moves[nLevel][n-1] == 62 ) || ( moves[nLevel][n-1] == 6 ))
				result = result + "0-0"
			else if (( moves[nLevel][n-1] == 2 + 7 * 8 ) || ( moves[nLevel][n-1] == 2 + 0 * 8 ))
				result = result + "0-0-0"
			else
			{	var sep = "x";
				from = moves[nLevel][ n-2 ] & 0x3f;
				to = moves[nLevel][ n-1 ] & 0x3f;
				fromLine = from%8;
				fromRow = Math.floor(from/8);
				toLine = to%8;
				toRow = Math.floor(to/8);
				result = result	+ lines.substring( fromLine, fromLine+1 ) + rows.substring( fromRow, fromRow+1 )
										+ sep
										+ lines.substring( toLine, toLine+1 ) + rows.substring( toRow, toRow+1 )
										+ piece2 + " ep";
			}
		}
		else
		{	var len = names[ nNameCount[nm]-1 ].length;
			var substr = names[ nNameCount[nm]-1 ].substring( len-6, len );
			var sep = (( substr == "/w.gif" ) || ( substr == "\\w.gif" ) ||
						  ( substr == "/b.gif" ) || ( substr == "\\b.gif" )) ? "-" : "x";
			if ( piece2 != "" ) piece = "";
			result = result + piece.toUpperCase() + lines.substring( fromLine, fromLine+1 ) + rows.substring( fromRow, fromRow+1 )
				+ sep
				+ lines.substring( toLine, toLine+1 ) + rows.substring( toRow, toRow+1 )
				+ piece2;
		}
	}
	else
		result='';
	if (leftDocument.all)
	{	if ( bFrames )	name = 'i' + baseName + '0';
		else name = 'i' + baseName + nm;
		if ( result == '' )
			leftDocument.all.tags( "DIV" )[name].innerHTML = start_pos;
		else
			leftDocument.all.tags( "DIV" )[name].innerHTML = pos_after + result;
	}
	else if ( leftDocument.layers )
	{	var inx = nm;
		if ( bFrames ) inx = 0;
		leftDocument.layers[inx].document.layers[0].document.clear();
		if ( result == '' )
			var gesamt = "<center>" + start_pos + "</center>";
		else
			var gesamt = "<center>" + pos_after + " " + result + "</center>";
		leftDocument.layers[inx].document.layers[0].document.write(gesamt);
		leftDocument.layers[inx].document.layers[0].document.close();
	}
	return result;
}
function GMS( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	var nLevel = nLevels[nm];
	var nMoveNumber = nMoves[nm];
	if ( nMoveNumber >= 0 && nMoveNumber <= moves[nLevel].length / 2 )
	{	if ( leftDocument.all )
		{	if ( nOld[nm] != -1 )
				rightDocument.anchors[nOld[nm]].style.background=BackColor;
			if ( nMoveNumber > 0 )
			{	nOld[nm] = moves[nLevel].base[nMoveNumber-1];
				rightDocument.anchors[nOld[nm]].style.background="gray";
				with ( rightDocument )
					with ( all.tags("a")[nOld[nm]] )
					{	if ( parent.frames[1] && ( offsetTop > body.scrollTop + offsetParent.offsetHeight - offsetHeight || offsetTop < body.scrollTop ))
							rightWindow.scrollTo( 0, offsetTop - ( offsetParent.offsetHeight / 2 ) );
					}
			}
			else
				nOld[nm] = -1;
		}
		return GMS2( moves, names, nm, base, nMoveNumber, nLevel, basename );
	}
	else
		return "??";
}
function gm( moves, names, nm, base, basename, n, m )
{	base = SyncPicture( base, basename );
	GoStart(moves,names,nm,base,basename );
	gm_sub( moves,names,nm,base,basename,n,m);
	GMS( moves, names, nm, base, basename );
}
function gmn( moves, m )
{	if ( m > 0 )
	{	var off=0;
		var n2 = moves[m].move;
		var m2 = moves[m].root;
		for ( i=0; i <= n2*2; i += 2 )
			if (( moves[m2][i] & 0x40 ) == 0x40 )
				off = off+1;
		return gmn( moves, m2 ) + ( n2 - off );
	}
	return 0;
}
function gm_sub( moves, names, nm, base, basename, n, m )
{	if ( m > 0 )
	{	var off=0;
		var n2 = moves[m].move;
		var m2 = moves[m].root;
		for ( i=0; i <= n2*2; i += 2 )
			if (( moves[m2][i] & 0x40 ) == 0x40 )
				off = off+1;
		gm_sub( moves,names,nm,base, basename, n2-off, m2  );
	}
	nLevels[nm]=m;
	nMoves[nm]=0;
	for ( i=0; i < n; i++ )
		MF(moves,names,nm,base,basename, false);
}
