var Eba=new String();
var TT="";


//Umwandeln der (Komma-)Zahl a vom sq-System zum sz-System, maximal n Kommastellen
function convert(a,sq,sz,n,E)
{
	if((sq<2)||(sq>16)||(sz<2)||(sz>16))return "";
	a=String(a).replace(/\.\.\./,"").replace(/,,,/,"").replace(/\./,",").toUpperCase().replace(/ /g,"");
	//alert(a);
	var h=a.split(","),G=h[0],K=h[1],g=0,k=0,i=0,t="",j=0;
	var Z=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
	var dn=0,L=0,tt="";
	TT="";
	if(sq!=10)
	{

		var p=1,ss;
		for(i=G.length-1;i>=0;i--)
		{
			t=G.substr(i,1);
			if(sq<10){g+=p*(ss=Number(t));}
			else{for(ss=0;ss<16;ss++){if(Z[ss]==t){g+=p*ss;break;}}}
			p*=sq;if(ss>=sq)return "Falsches Zeichen: "+t;
            }
		p=1;
		if(h.length==2)
		{
			if(E)
			{
				TT="Der Nachkommateil  0,"+K+"  wird ins Dezimalsystem umgewandelt.\n\n";
				TT+="Arbeite die Ziffern nach dem Komma von rechts nach links ab.\n";
				TT+="Multipliziere die Ziffern mit wachsenden Potenzen der Basis, ";
				TT+="angefangen mit \n"+sq+"° = 1, und summiere die Produkte:\n\n";
				L=String(Math.pow(sq,K.length)).length;
			}
			for(i=K.length-1;i>=0;i--)
			{
				t=K.substr(i,1);
				if(sq<10){k+=p*(ss=Number(t));}
				else{for(ss=0;ss<16;ss++)if(Z[ss]==t){k+=p*ss;break;}}
				if(E)
				{
					TT+="     "+rb(ss,2)+" · "+rb(p,L)+" =  "+rb(ss*p,L)+"\n";
				}
				dn++;if(ss>=sq)return "Falsches Zeichen: "+t;
				p*=sq;
			}
			if(E)
			{
				TT+=rb("",13+L)+"———————————————————————————".substr(0,L+1)+"\n";
				TT+=rb(k,14+2*L)+"\n\n";
				TT+="Teile dann diese Summe durch die nächste Potenz der Basis " +sq+":\n\n";
				TT+="     "+k+" : "+p+" = ";
			}
			K=genauteilen(k,p,50);
			k/=p;
			
		}
		//K=String(k);
		
		K=K.substring(K.indexOf(".")+1,K.length).replace(/_/,"...");//alert(K);
		G=String(G);
		var gg=String(g);
		if(E)
		{
			TT+="0,"+K+"\n\nund addiere den bereits ermittelten ganzzahligen Anteil "+gg+":\n\n";
			TT+="   "+rb("",gg.length) +"0,"+K+"\n  + "+gg+"\n";
			TT+="   "+"—————————————————————————————————————————————————".substr(0,K.length+gg.length+2)+"\n";
			TT+="    "+gg+","+K+"\n\n\n";
		}
		K=K.replace(/\.\.\./,"").substr(0,15);
	}
	else
	{
		k=(h.length==2)?Number(K.substr(0,15)):0;
		g=Number(G);
	}
	dn=(h.length==2)?K.length:1;
	var d=Math.pow(10,dn),KK="",GG="";
	if(sz!=10)
	{
		var r=g;
		do{
			GG=Z[r%sz]+GG;
			r=Math.floor(r/sz);
		}while(r>0);
		if(h.length==1)return GG;
		i=0;
		var kkk=Number("0."+K);
		var rrr=new Array(),P="";
		r=Number(K)*sz;rrr[0]=r;
		if(E)
		{
			TT+="Der Dezimalbruch  0,"+K+"  soll ins "+sz+"er System umgewandelt werden.\n\n";
			TT+="Gehe nach folgendem Verfahren vor, um die Nachkommaziffern zu erhalten:\n";
			TT+=" (1) Multipliziere die Zahl mit der Basis "+sz+"\n";
			TT+=" (2) Die Zahl vor dem Komma ist die nächste Ziffer des Ergebnisses\n";
			TT+=" (3) Schneide die Zahl vor dem Komma weg.\n"
			TT+=" (4) Wiederhole ab (1), bis der Rest 0 ist, sich ein Rest wiederholt\n     oder die gewünschte Genauigkeit erreicht ist.\n\n"
		}
		do{
			if(E)
			{
				TT+="    "+sz+" · "+String(kkk).replace(/\./,",")+" = "+String(Math.round(kkk*sz*d)/d).replace(/\./,",");
				TT+=((r/d<10)?" ":"")+"   --> Ziffer: "+Z[Math.floor(r/d)]+"\n";
				kkk=Math.round(((kkk*sz)%1)*d)/d;
			}
			for(j=0;j<rrr.length;j++)if(r==rrr[j])break;
			if(j<rrr.length-1)
			{
				if(E)TT+="\n   Der \"Rest\" "+String(rrr[j]/d).replace(/\./,",")+" trat im "+(j+1)+". Schritt bereits auf.\n   Ab dort wiederholen sich die Nachkommaziffern periodisch.\n";
				P=KK.substring(j,KK.length);
				if(P!=""){while(KK.length+P.length+GG.length+5<60)KK+=P;KK+="...";}
				break;
			}
			KK+=Z[Math.floor(r/d)];
			r=(r%d)*sz;
			rrr[rrr.length]=r;
			i++;
		}while((i<=54-GG.length)&&(r>0));//vorher statt 50 n
		if(r!=0)KK+="...";KK=KK.replace(/\.\.\.\.\.\./,"...");
		if(E)
		{
			TT+="\n    Resultat: 0,"+KK+"\n\n";
			if(GG!="0")TT+="Zusammen mit dem bereits ermittelten ganzzahligen Anteil ergibt sich somit:\n\n "+GG+","+KK+"\n\n";
		}
		return(KK!="0")?GG+","+KK:GG;
	}
	else
	{
		if(K.charAt(0)==".")K="0"+K;//alert(K+"\n"+Number(K)+"\n"+h+"\n"+h.length);
		return(h.length>1)?g+((Number(K)!=0)?","+K.substring(0,K.length):""):g;
	}
}

function genauteilen(a,b,n)
{
	var r=a,i,t="";
	for(i=0;i<n;i++){t+=String(Math.floor(r/b));r=(r%b)*10;if(r==0)return t;if(i==0)t+=".";}
	return t+"_";
}

//Umwandeln der Kommazahl a vom sq-System ins Dezimalsystem
function convert2(a,sq,n,erkl)
{
	TT="";E=erkl;
	var i,j,k,nk,aa,r,div;
	if((sq<2)||(sq>16))return "";
	aa=String(a).replace(/\.\.\./,"").replace(/,,,/,"").replace(/\./,",").toUpperCase().replace(/ /g,"");
	i=aa.length-1-(aa+",").indexOf(",");
	if(i<=0)return Get(a,10,sz);
	while((aa.charAt(aa.length-1)=="0")&&(i>0)){i--;aa=aa.substr(0,aa.length-1);}
	nk=(i<0)?0:i;
	div=Math.round(Math.pow(sq,nk));
	if(erkl)
	{
		TT="Die Kommazahl "+aa+" soll vom "+sq+"er-System ins Dezimalsystem umgewandelt werden.\n\n";
		TT+="Laß das Komma weg, merke Dir aber die Anzahl der Kommastellen: "+nk+".\n\n";
		TT+="Wandle nun "+aa.replace(/,/,"")+" um:\n";
	}
	r=Get(aa.replace(/,/,""),sq,10);
	if(erkl)
	{
		TT+=T.substring(T.indexOf("\n")+1,T.length);
		TT+="Nun dividiere zuletzt das Ergebnis durch die "+nk+". Potenz der Basis: "+sq+"^"+nk+" = "+div;
		TT+="\n("+nk+" war die Anzahl der Nachkommastellen):\n\n    "+r+" : "+div;
	}
	r=genauteilen(r,div,n);
	if(erkl)TT+=" = "+r.replace(/\./,",").replace(/_/,"...")+"\n\nFertig.";
	return r;
}
//Umwandeln der dezimalen Kommazahl a ins sz-System
function convert3(a,sz,n,erkl)
{
	TT="";E=erkl;
	var i,j,k,nk,aa,r,div;
	if((sz<2)||(sz>16))return "";
	aa=String(a).replace(/\.\.\./,"").replace(/,,,/,"").replace(/\./,",").toUpperCase().replace(/ /g,"");
	i=aa.length-1-(aa+",").indexOf(",");
	if(i<=0)return Get(a,10,sz);
	//while((aa.charAt(aa.length-1)=="0")&&(i>0)){i--;aa=aa.substr(0,aa.length-1);}
	nk=0;
	r=Number(aa.replace(/,/,"."));
	if(erkl)
	{
		TT="Die Dezimalzahl "+aa+" soll ins "+sz+"er-System umgewandelt werden.\n\n";
		TT+="Multipliziere sie sooft mit mit der Basis "+sz+", bis sie ganzzahlig ist oder eine maximale Zahlengröße erreicht ist.\n\n";
	}
	while(r!=Math.floor(r))
	r=Get(r,10,sz);
	if(erkl)
	{
		TT+=T.substring(T.indexOf("\n")+1,T.length);
		TT+="Nun dividiere zuletzt das Ergebnis durch die "+nk+". Potenz der Basis: "+sz+"^"+nk+" = "+div;
		TT+="\n("+nk+" war die Anzahl der Nachkommastellen):\n\n    "+r+" : "+div;
	}
	r=genauteilen(r,div,n);
	if(erkl)TT+=" = "+r.replace(/\./,",").replace(/_/,"...")+"\n\nFertig.";
	return r;
}

function testit()
{
convert3("123,125",2,50,true);
//alert(TT);
}