var Groesse = new Array (
			 "e",
			 "m<sub>e</sub>",
			 "m<sub>p</sub>",
			 "c",
			 "h",
			 "R",
			 "g",
			 "k",
			 "M<sub>S</sub>"
			 );
var Wert = new Array (
		      1.60218,
		      0.511,
		      938.272,
		      2.99792458,
		      6.62608,
		      13.6057,
		      9.80665,
		      8.6174,
		      1.98892
		      );
var Einh = new Array (
		      "10<sup>-19</sup> C",
		      "MeV c<sup>-2</sup>",
		      "MeV c<sup>-2</sup>",
		      "10<sup>8</sup> m s<sup>-1</sup>",
		      "10<sup>-34</sup> Js",
		      "eV",
		      "m s<sup>-2</sup>",
		      "10<sup>-5</sup>eV K<sup>-1</sup>",
		      "10<sup>30</sup> kg"
		      );
var Besch = new Array (
		       "Ladungseinheit",
		       "Masse des Elektrons",
		       "Masse des Protons",
		       "Lichtgeschwindigkeit",
		       "Wirkungsquantum",
		       "Rydbergkonstante",
		       "Erdbeschleunigung",
		       "Boltzmannkonstante",
		       "Sonnenmasse"
		       );

var faktor = new Array (
			1,
			0.5,
			2,
			Math.SQRT1_2,
			Math.SQRT2,
			Math.PI
			);

var faktbez= new Array (
			"",
			"1/2 ",
			"2 ",
			"sqrt(1/2) ",
			"sqrt(2) ",
			"pi "
			);		


var Num=9;
var numfakt=6;
var ergnn;

function rado(val, groesse, wert, num, maxexp, expinc) {
    var i, i1, i2, i3, i4, e1, e2, e3, e4, ifakt, name, ber=0;
    var tval, tv1, tv2, tv3, tv4;
    var ergeb = new Array, erg=new Array;	
    var ergnum= 0;
    for (i1=0; i1<num-3; i1++) {
	for (e1=-maxexp; e1 <=maxexp; e1 +=expinc) {
	    tv1 = Math.pow(wert[i1], e1);
	    for (i2=i1+1; i2<num-2; i2 ++) {
		for (e2=-maxexp; e2 <=maxexp; e2 +=expinc) {
		    tv2 = tv1 * Math.pow(wert[i2], e2);
		    for (i3=i2+1; i3<num-1; i3 ++) {
			for (e3=-maxexp; e3 <=maxexp; e3 +=expinc) {
			    tv3 = tv2 * Math.pow(wert[i3], e3);
			    top.status = "Berechnet: " + ber + ", gefunden: " + ergnum;
			    for (i4=i3+1; i4<num; i4 ++) {
				for (e4=-maxexp; e4 <=maxexp; e4 +=expinc) {
				    tv4 = tv3 * Math.pow(wert[i4], e4);
				    for (ifakt=0; ifakt<numfakt; ifakt++) {
					ber++;
					tval = faktor[ifakt] * tv4;
					if (Math.abs(val/tval-1) < 1e-4){
					    ergeb[ergnum] =  faktbez[ifakt];
					    if (e1 != 0) { ergeb[ergnum] += " " + groesse[i1]; if (e1 != 1) { ergeb[ergnum] += "<sup>" + e1 + "</sup>";}}
					    if (e2 != 0) { ergeb[ergnum] += " " + groesse[i2]; if (e2 != 1) { ergeb[ergnum] += "<sup>" + e2 + "</sup>";}}
					    if (e3 != 0) { ergeb[ergnum] += " " + groesse[i3]; if (e3 != 1) { ergeb[ergnum] += "<sup>" + e3 + "</sup>";}}
					    if (e4 != 0) { ergeb[ergnum] += " " + groesse[i4]; if (e4 != 1) { ergeb[ergnum] += "<sup>" + e4 + "</sup>";}}
					    ergnum++;
					}
				    }
				}
			    }
			}
		    }
		}
	    }
	}
    }
    ergeb.sort();
    ergnn=0;
    for (i=0; i< ergnum; i++) {
	top.status = "i" + i + ergeb[i];
	if (ergeb[i] != ergeb[i+1]) {
	    erg[ergnn]=ergeb[i];
	    ergnn++;
	}
    }
    return (erg);
}

function irado(val) {
    var page, i;
    var ergebnis= new Array;
    page="<html><head><title>Radosophie</title><body>";
    if (val>0) {
	page += "<h2>Radosophische Betrachtung von " + val +"</h2>";
	ergebnis = rado(val, Groesse, Wert, Num, 3, 1);
	for (i=0; i < ergebnis.length; i++) {
	    top.status= "jj" + i + ergebnis[i];
	    page += val + "=" + ergebnis[i] + "<br>";
	}
    } else {
	page += "Geben Sie bitte einen positiven Wert an.";
    }
    return(page);
}

function radokonst() {
    var page, i;
    page = "<h2>Benutzte Konstanten</h2><table cellspacing=0 cellpadding=0>";
    for (i=0; i<Num; i++) {
	page += "<tr><td>" + Groesse[i] +"</td><td>=</td><td align=right>"
	    + Wert[i] + "</td><td align=left>&nbsp;" + Einh[i]
		+ "</td><td>&nbsp;" + Besch[i] + "</td></tr>";
    }
    page += "</table>";
    return(page);
}

function prado(vn1, v1, vn2, v2, vn3, v3, vn4, v4, vn5, v5, head) {
    var page, i, j;
    var vals = new Array (v1, v2, v3, v4, v5);
    var valnames = new Array (vn1, vn2, vn3, vn4, vn5);
    page ="";
    if (head != 0) {page="<html><head><title>Radosophie</title><body>";}
    page += "<h2>Eingegebene Werte</h2>";
    for (i=0; i<5; i++) {
	if (vals[i]<=0) {vals[i]=1;}
	page += valnames[i] + "=" + vals[i] + "<br>";
    }
    page += "<h2>Errechnete Konstanten</h2>";width="100%" 
    for (i=0; i< Num; i++) {
	var ergebnis = new Array;
        ergebnis  = rado(Wert[i], valnames, vals, 5, 2, .5);
	for (j=0; j < ergebnis.length; j++) {
	    page += Groesse[i] + "=" + ergebnis[j] + "<br>";
	}
    }
    return(page);
}


