// Version: 22.4.2001, 9:50

function KleinerInterpolator(x0,x1,nn,modus,kk)
{
	x0=x0.replace(/\,/,".");
	x1=x1.replace(/\,/,".");
	if (x0=="") {alert('Der Startwert ist nicht angegeben');return;}
	if (x1=="") {alert('Der Endwert ist nicht angegeben');return;}
	var a=Number(x0);var b=Number(x1); var n=Number(nn)+1;
	nn=nn.replace(/ /g,"/");
	if (nn.indexOf("/")>0) 
	{
		nnn=nn.split("/");
		if (nnn.length==2) n=Number(nnn[0])+1; else n=Number(nnn[1])+1;
	}	
	if ((n<2)||(nn=="")) {alert('Die Anzahl der Zwischenwerte ist ungültig');return;}
	if (n>1112){alert('Die Anzahl der Zwischenwerte ist auf 1111 beschränkt');return;}
	var m =(modus==0) ? 'linear' : 'geometrisch';
	var t=String('');
	var k=Number(kk);
	var c=(b-a)/n;
	var f=Math.pow(a/b,(-1/n));
	if (nn.indexOf("/")>0) 
	{
		nnn=nn.split("/");
		if (nnn.length==2)
			{n=Number(nnn[0])+Number(nnn[1])+1;	}
		else
			{n=Number(nnn[0])+Number(nnn[1])+Number(nnn[2])+1;
			if (modus==0) a-=c*Number(nnn[0]); else a /= Math.pow(f,Number(nnn[0]));		
			}
	}
	var nta=n; if(n>500) nta=500;
	switch(modus)
	{
	case 0:
		t="";
		for(var i=0;i<n+1;i++) t+=String(Runden(a+i*c,k)).replace(/\./g,",")+'\n';
		break;
	case 1:
		if (a*b<=0) {alert ('Die Werte müssen für die Interpolation mittels geometrischer Reihe von Null verschieden sein und das gleiche Vorzeichen haben');return;}
		var x=a;
		t=String(Runden(a,k)).replace(/\./,",")+'\n';
		for (var i=0;i<n;i++)
		{
			x*=f;
			t+=String(Runden(x,k)).replace(/\./g,",")+'\n';
		}
		break;
	default:;
	}
	var win=window.window;
	var extext=new String("'Hinweise zum Extrapolieren\\n\\nDieses Programm kann auch extrapolieren, d.h. Werte vor dem Startwert \\nund/oder nach dem Endwert erzeugen:\\n\\n");
	extext+="Geben Sie dazu in das Feld Anzahl Zwischenwerte zwei oder drei Zahlen ein,\\ngetrennt durch Leerzeichen oder Schrägstrich (/).\\n\\n";
	extext+="Bei drei eingegebenen Zahlen a/b/c erhalten Sie a Werte vor dem Startwert,\\nb Zwischenwerte und c nach dem Endwert.\\n\\n";
	extext+="Bei zwei eingegebenen Zahlen erhalten Sie nur zusätzliche Werte nach dem \\nEndwert, beispielsweise werden bei der Angabe 23&nbsp;12 im Feld für \\nAnzahl Zwischenwerte";
	extext+=" 23 Werte interpoliert und 12 nach dem Endwert extrapoliert.\\n\\nWenn Sie nur 7 zusätzliche Werte vor dem Startwert brauchen, geben Sie\\nbeispielsweise 7/11/0 ein.'";
	win.document.close();
	win.document.open();
	win.document.write('<html><head><title>Kleiner Interpolator</title>\n');
	win.document.write('</head><body bgcolor="#FFFFEC">\n');	
	win.document.write('<h2 align="center">Interpolation</h2><hr><br>\n<table align="center"><tr><td valign="top">\n<table border="1" cellpadding="5">\n<tr><td align="center">von:</td>\n<td align="center">'+x0+'</td></tr>\n');
	win.document.write('<tr><td align="center">bis:</td><td align="center">'+x1+'</td></tr>\n<tr><td align="center">Modus:</td><td align="center">'+m+'</td></tr>\n');
	win.document.write('<tr><td align="center">Anzahl der Zwischenwerte:&nbsp;</td><td align="center">'+nn+'</td></tr>\n');	
	win.document.write('<tr><td align="center">Anzahl der Dezimalstellen:&nbsp;</td><td align="center">'+kk+'</td></tr>\n</table>\n');	
	win.document.write('<br><center><a href="javascript:alert('+extext+')">\nHinweise zum Extrapolieren</a></center>\n');
	win.document.write('<br><br><center><a href="javascript:history.back()">zur&uuml;ck</a></center>\n');	
	win.document.write('</td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td><form>\n<textarea rows='+(nta+2)+' cols=20>\n'+t+'\n</textarea></form></td></tr></table>\n');
	if (n>25) win.document.write('<br><center><a href="javascript:history.back()">zur&uuml;ck</a></center>\n');
	win.document.write('<br><br><br><hr><center>&#169;<a href="mailto:arndt.bruenner@t-online.de">Arndt&nbsp;Br&uuml;nner</a></center>\n<br></body></html>');	
	win.document.close();
}