function getTillion(i)
{
var WW=new Array("M","B","Tr","Quadr","Quint","Sext","Sept","Okt","Non","Dez","Undez","Duodez","Tredez","Quadradez","Quintadez","Sextadez");
var WWW=new Array("","Un","Duo","Tre","Quattuor","Quin","Sex","Septen","Okto","Novem");
var WWWW=new Array("","Dez","Vigint","Trigint","Quadragint","Quinquagint","Sexagint","Septuagint","Oktogint","Nonagint");
var WWWWW=new Array("","Cent","Ducent","Trecent","Quadringent","Quingent","Sescent","Septingent","Octingent","Nongent");
var WWWWWW=new Array("","Millia","Domillia","Tremillia","Quattuormillia","Quinmillia","Sexmillia","Septenmillia","Oktomillia");
if(i==0)return "";
if(i<10)return WW[i-1];
var e=i%10,z=Math.floor(i/10)%10,h=Math.floor(i/100)%10,t=Math.floor(i/1000)%10,
zt=Math.floor(i/10000)%10,ht=Math.floor(i/100000)%10;
var a=WWW[e]+WWWW[z];if(i<100)return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
a=WWWWW[h]+a;
if(i<4000)a=WWWWWW[t]+a;
else a=WWWWW[ht]+WWW[t]+WWWW[zt]+"millia"+a;
var aa=a.charAt(a.length-1);
if((aa!="t")&&(aa!="z"))a+="t";
return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
}
function getZahlwort(x,tr)
{
x=String(x);
if(x=="pi")return getZahlwort("3,1415")+" ...";
if(x=="e")return getZahlwort("2,7182")+" ...";
if((x=="phi")||(x.indexOf("goldener Schnitt")==0))return getZahlwort("0,6180")+" ...";
if(x=="Phi")return getZahlwort("phi").replace(/null K/,"eins K");
if(x.indexOf("/")>-1)return getBruchZahlwort(x);
if(x=="0")return "null";
x=x.replace(/ /g,"").replace(/\./g,",");
xx=x.split(",");
if(x.replace(/\D/g,"")=="")return "";
var t="",v=(x.charAt(0)=="-")?"Minus ":"",i=0;
x=x.replace(/-/,"").replace(/ /g,"");
x=xx[0].replace(/\D/g,"");
if(x.length>999999*6)return "diese Zahl ist unheimlich groß, die ist mir zu unheimlich";
var ZZ=new Array("null","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun");
var ZZZ=new Array("zehn","elf","zwölf");
var ZZig=new Array("","zehn","zwanzig","dreißig","vierzig","fünfzig","sechzig","siebzig","achtzig","neunzig");
if((tr==null)||(tr==false)||(x<1000000))tr=(1==0);else tr=(1==1);
var trz=(tr)?" ":"";
if(x=="0,0")return"Nullkommanix";
while(x!="")
{
while(x.length<3)x="0"+x;
var y=x.substr(x.length-3,3);x=x.substr(0,x.length-3);
while(y.length<3)y="0"+y; var y1=parseInt(y.charAt(0)),y2=parseInt(y.charAt(1)),y3=parseInt(y.charAt(2));
var tt=ZZ[y1]+"hundert";
if(y2==1){if(y3<3)tt+=ZZZ[y3];else tt+=ZZ[y3].replace(/hs/,"h").replace(/en/,"")+"zehn";}
else tt+=ZZ[y3]+((y2>1)?"und"+ZZig[y2]:"");
tt=tt.replace(/nullhundert/,"").replace(/eins/g,"ein").replace(/nullund/g,"").replace(/null/g,"");
if((tt=="ein")&&(i==0))tt+="s";
if(i==0)t="_"+tt+t;
if((i==1)&&(tt!=""))t="_"+tt+"tausend"+t;
if((i>1)&&(tt=="ein")){t="_eine"+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarde":"illion")+trz+t;}
else if((i>1)&&(tt!=""))t="_"+tt+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarden":"illionen")+trz+t;
i++;
}
var T=t.split(" ");
for(i=0;i<T.length;i++)T[i]=T[i].charAt(0).toUpperCase()+T[i].substring(1,T[i].length).toLowerCase();
t=T.join(trz).replace(/_/g,"");
if(!tr)t=t.toLowerCase();
if(xx.length>1)
{
if(t=="")t="null";
x=xx[1].replace(/\D/g,"");
t+=" Komma";
for(i=0;i<x.length;i++)t+=" "+ZZ[parseInt(x.charAt(i))];
}
return v+t;
}
function getZehnerpotenz(n)
{
n=parseInt(String(n));
if(isNaN(n))return "";if(n==0)return"eins";if(n==1)return"zehn";if(n==2)return"hundert";
if(n==3)return"tausend";if(n==4)return"zehntausend";if(n==5)return"hunderttausend";
if(n==-1)return"ein Zehntel";if(n==-2)return"ein Hundertstel";
if(n==-3)return"ein Tausendstel";if(n==-4)return"ein Zehntausendstel";
if(n==-5)return"ein Hunderttausendstel";
if(n==100)return"zehn Sexdezilliarden - oder 'ein Googol'";
var v=(n<0);n=Math.abs(n);var m=n%6,p=m%3,q=m>2,n=(n-m)/6;
var t=(new Array("eine","zehn","hundert"))[p]+" "+getTillion(n)+"illi"+(q?"arde":"on");
if(!v)return (t+((p>0)?"en":"")).replace(/ee/,"e");
t=t.replace(/eine/,"").replace(/ /,"").toLowerCase();
return "ein "+(t.charAt(0).toUpperCase()+t.substr(1,t.length-1)+"stel").replace(/estel/,"stel");
}
function getBruchZahlwort(x)
{
var xx=x.split("/");if(xx.length==1)return getZahlwort(x);
if((xx[1]=="")||(String(x).replace(/\./,",").indexOf(",")>-1))return "";
var Z=getZahlwort(xx[0],true),N=getZahlwort(xx[1])+"tel";
if(N=="nulltel")return Z+" geteilt durch Null (nicht definiert!)";
if(Z=="eins")Z="ein";
N=N.replace(/ttel/,"tel").replace(/igtel/,"igstel").replace(/eine/,"");
N=N.replace(/dreitel/,"drittel").replace(/bentel/,"btel");
N=N.charAt(0).toUpperCase()+N.substr(1,N.length-1);
N=N.replace(/ionentel/,"ionstel").replace(/iardentel/,"iardstel");
N=N.replace(/iontel/,"ionstel").replace(/iardetel/,"iardstel");
if(N=="Zweitel")N=(Z=="ein")?"Halb":"Halbe";
if(N=="Einstel")N=(Z=="ein")?"Ganzes":"Ganze";
return Z+" "+N;
}