


// 
//
//     Mensurenberechnung für Holzpfeifen
//
//     Autor: Arndt Brünner
//
//	 Version: 17.10.2002
// 

var pitch=440, v=340, offen=1, Fuss=8, Frq;
var Laenge, Ton;
var klingender_Ton="", Flaeche=0;
var Standardvertiefung=1.27;
var BRN=0;

var BreiteGeg=0,TiefeGeg=0,AbweichungGeg=0,VertiefungGeg=0,TasteGeg=0, DurchmesserGeg=0, AufschnittsbreiteGeg=0, VerhaeltnisGeg=0;
var VBreite=0,VTiefe=0,VVertiefung=0,VAbweichung=0,VTaste=0,VDurchmesser=0,Ton=0,VAufschnittsbreite=0,VVerhaeltnis=0;
var bbBreite=0,bbTiefe=0,bbVertiefung=0,bbTaste=0,bbAbweichung=0,bbTonNummer=0,bbDurchmesser=0;
var AbweichungBer=0,TasteBer=0,TiefeBer=0,BreiteBer=0,VertiefungBer=0,DurchmesserBer=0;

function Berechne()
{
	pitch=document.f.Stimmton.value*1.0;
	v=document.f.Schallgeschwindigkeit.value*1.0;
	offen=(document.f.offen.selectedIndex==0);
	Fuss=GetFuss(document.f.Register.options[document.f.Register.selectedIndex].value,document.f.txtRegister.value);
	Test();
	MensurBerechnung();
	Clear();	
	if (VTaste !="") document.f.BTon.value=klingender_Ton;
	document.f.BTaste.value=VTaste;
	if (VTiefe>0) document.f.BTiefe.value=Runden(VTiefe,2);
	if (VBreite>0) document.f.BBreite.value=Runden(VBreite,2);
	if (VVertiefung>0) document.f.BVertiefung.value=Runden(VVertiefung,2);
	if ((VTaste !="")&&(Flaeche>0)) document.f.BAbweichung.value=Runden(VAbweichung,1);
	if (document.f.BAbweichung.value>0) document.f.BAbweichung.value="+"+document.f.BAbweichung.value;
	if (klingender_Ton !="") document.f.BFrequenz.value=Runden(Frq,2);
	if (DurchmesserGeg==0) VDurchmesser=1.12837916709*Math.sqrt(Flaeche);
	if ((VerhaeltnisGeg==0)&&(AufschnittsbreiteGeg==0)) VAufschnittsbreite=VBreite;
	if (Flaeche>0)
		{ if(VerhaeltnisGeg==0) VVerhaeltnis=VAufschnittsbreite/(VDurchmesser*Math.PI);
	        document.f.BDurchmesser.value=Runden(VDurchmesser,2);
		  if ((VerhaeltnisGeg==0)&&(AufschnittsbreiteGeg==1))VVerhaeltnis=VAufschnittsbreite/(VDurchmesser*Math.PI);
		  if ((VerhaeltnisGeg==1)&&(AufschnittsbreiteGeg==0))VAufschnittsbreite=VVerhaeltnis*VDurchmesser*Math.PI;
		  document.f.BPlattenbreite.value=Runden((VDurchmesser+Number(document.f.Materialstaerke.value))*Math.PI,2);
		  //if (VAufschnittsbreite !=0) document.f.BLabium.value=Runden(Math.asin(VAufschnittsbreite/VDurchmesser)*VDurchmesser,2);
		  if (BRN==1)
		  {
			VBreite=VAufschnittsbreite;
			VTiefe=Flaeche/VBreite;
			VVertiefung=VTiefe/VBreite;
	 		document.f.BTiefe.value=Runden(VTiefe,2);
		 	document.f.BBreite.value=Runden(VBreite,2);
	 		document.f.BVertiefung.value=Runden(VVertiefung,2);
		  }

		}

	if (klingender_Ton !="") {
		document.f.BLaenge.value=Runden(Laenge,2);
		if (offen){
			document.f.BLaengeRund.value=Runden(Laenge-VDurchmesser*5/3,2);
			document.f.BLaengeEckig.value=Runden(Laenge-VTiefe*2.0,2);
		}else{
			document.f.BLaengeRund.value="";
			document.f.BLaengeEckig.value="";
		}
		}
	if (VAufschnittsbreite>0) document.f.BAufschnittsbreite.value=Runden(VAufschnittsbreite,2);
	if ((VVerhaeltnis>0)&&(VVerhaeltnis<10000)&&(VVertiefung>0)) document.f.BVerhaeltnis.value=GetBruch(VVerhaeltnis,0.01,100);
	if ((document.f.BVerhaeltnis.value.indexOf("/")==-1)&&(document.f.BVerhaeltnis.value != "")) document.f.BVerhaeltnis.value="1/"+Runden(1/VVerhaeltnis,3);
	if (Math.abs(VBreite*VTiefe-Math.pow(VDurchmesser/2,2)*Math.PI)>.01) alert('Runde Pfeife und rechteckige Pfeife haben aufgrund der gegebenen Maße keinen flächengleichen Querschnitt.');
}

function Runden(t,i)
{
	var d=Math.pow(10,i);
	return String(Math.round(t*d)/d).replace(/\./g,",");
}


function MensurBerechnung()
{
if ((TasteBer ==0) && (((BreiteGeg+TiefeGeg)>0) && (VertiefungGeg==1) && (AbweichungGeg==1)))
	{alert("Für eine Berechnung sind zuviele Werte gegeben.");return;}
var F = Fuss;
if ((AbweichungGeg==0)&&(bbAbweichung==1)) bbAbweichung = 1;
if ((VertiefungGeg==0) && (bbVertiefung==1)) VertiefungBer = 1;
if ((Ton=="") && (bbTaste==1)) TasteBer = 1;
if ((BreiteGeg==0) && (bbBreite==1)) BreiteBer = 1;
if ((TiefeGeg==0) && (bbTiefe==1)) TiefeBer = 1;
if ((VBreite != 0) && (VTiefe != 0) && (VVertiefung != 0) && (Math.abs(VTiefe / VBreite - VVertiefung) >= 0.01))
{
    if (VertiefungGeg==1) alert("Vertiefung falsch! Wird neu berechnet");
    bbVertiefung = 1;
    VertiefungBer = 1;
    VVertiefung = VTiefe / VBreite;
}
if (((VertiefungBer * bbVertiefung)==1))
{ VVertiefung = VTiefe / VBreite; VertiefungBer = 1; }
if (TiefeBer * bbTiefe==1) 
{ VTiefe = VBreite * VVertiefung; TiefeBer = 1;}
if (BreiteBer * bbBreite==1) 
{ VBreite = VTiefe / VVertiefung; BreiteBer = 1;}
Flaeche=VTiefe*VBreite;
if (TasteBer==1)
{
  if ((AbweichungGeg==0) || (VTiefe*1.0==0) || (VBreite*1.0==0))
  { TastenNummer = ""; VTaste = "";}
  if ((AbweichungGeg==1) && (VTiefe*1.0>0) && (VBreite*1.0>0)) 
  { 
    var TonN = -(8 * Math.log(VTiefe * VBreite) - 12 * Math.log(F)) / Math.log(2) + 78.704 + VAbweichung;
        var tt = GetTonName(TonN);
//        if (TonN < 0)
//		tt = tt.substr(0,1).toUpperCase() + tt.substr(1, tt.length);
//	  else 
//		tt = tt.substr(0,1).toLowerCase() + tt.substr(1, tt.length);
//        if (tt.indexOf("s") == 2) 
//		tt = tt.substr(0,3);
//	  else 
//		tt = tt.substr(0, 1);
//	  var o = Math.floor(Math.abs(TonN) / 12);
//      if (o < 0) o++;
      VTaste = tt;//+ Math.abs(o);
        //TastenNummer.Text = Str(Int(TonN + 0.5))
        //if Wert(TastenNummer) = Int(TonN + 0.5) Then TastenNummer_Change
        TastenNummer = Math.floor(TonN + 0.5);
        var NMgenau = TastenNummer+((8 * Math.log(VTiefe * VBreite) - 12 * Math.log(F)) / Math.log(2) - 78.704);VAbweichung=NMgenau;AbweichungBer=1;
    //if (TasteBer==1) TonNummer.Enabled = 0
	
	Ton=TonBerechnung();//alert(VTaste+"  "+Ton);

   }
}

//alert(Ton);
if(TasteGeg==1)Fuss=8;

if ((VTiefe*1.0>0) && (VBreite*1.0>0) && (F*1.0>0) && (klingender_Ton !="")) 
{
   if (bbAbweichung==1)
	{
	if (AbweichungBer==0) VAbweichung = (Ton + (8 * Math.log(VTiefe*VBreite) - 12 * Math.log(8)) / Math.log(2) - 78.704);
    AbweichungBer = 1;
    }
}
if ((AbweichungGeg==1) && (VVertiefung*1.0 > 0) && (VTiefe*1.0 > 0)&& (klingender_Ton !="")) 
{
	var tb = Math.pow(2,(5 * VAbweichung - 5 * Ton + 393.521507) / 40 ) * Math.pow(Fuss, 1.5);
	Tiefe = Math.sqrt(tb * (VVertiefung*1.0));
	TiefeBer = 1;
}
if ((AbweichungGeg==1) && (VVertiefung*1.0 > 0) && (VBreite*1.0 ==0)&& (klingender_Ton !="")) 
{
	var tb = Math.pow(2 , ((5 * VAbweichung - 5 * Ton + 393.521507) / 40)) * Math.pow(Fuss ,1.5);
	VBreite = Math.sqrt(tb / VVertiefung);
}
if ((AbweichungGeg==1) && (VBreite*1.0>0) && (VTiefe*1.0==0)&& (klingender_Ton !=""))
{ 
	VTiefe = Math.pow(2, ((5 * VAbweichung - 5 * Ton + 393.521507) / 40)) * Math.pow(Fuss ,1.5)/ VBreite;
}
if ((AbweichungGeg==1) && (VTiefe*1.0 >0) && (VBreite*1.0==0)&& (klingender_Ton !=""))
	VBreite = Math.pow(2, ((5 * VAbweichung - 5 * Ton + 393.521507) / 40)) * Math.pow(Fuss, 1.5) / VTiefe;

//Marke1:

if ((VVertiefung*1.0 == 00) && (VTiefe*1.0 > 0) && (VBreite*1.0 >0))
VVertiefung = VTiefe / VBreite;


if ((VBreite*1.0 >0) && (VTiefe*1.0 > 0) && (AbweichungGeg==1) && (TasteBer==0))
{
	//Ton = TastenNummer;
	if (Math.abs(VAbweichung - (Ton + (8 * Math.log(VTiefe * VBreite) - 12 * Math.log(Fuss)) / Math.log(2) - 78.704)) >= 0.5) {
	alert("Der gegebene Wert für Abweichung NM paßt hier nicht. Löschen Sie gegebenenfalls überflüssige Maße!");
	VAbweichung="";
	return;}
}


//if (VBreite*1.0 > 0) VBreite = Format$(Wert(Breite), "##0.0#")
//if Tiefe <> "" Then Tiefe = Format$(Wert(Tiefe), "##0.0#")
//if AbwNM <> "" Then AbwNM = Format$(Wert(AbwNM), "##0.0#")
//if Vertiefung <> "" Then Vertiefung = Format$(Wert(Vertiefung), "##0.0#")

Flaeche=VTiefe*VBreite;


}

function GetFuss(r1,r2){
	var r="0";
	var f=0.0;
	if (r2 != "") r=r2; else r=r1;
	if (r.indexOf("'")>0) r=r.substr(0,r.length-1);
      if ((r==null)||(r==0)){alert('Die Registerangabe ist ungültig!');return;}
	var a=new Array(0) ;
	a=r.split(" ");
	var b= new Array;
	if (a.length==1)
		b=r.split("/");
	else
		b=a[1].split("/");
	if ((b[1]==null) || (b[1]==0)) return a[0];
	if (a[0].indexOf("/")>0)
		f=(1.0*b[0]/b[1]);
	else
		f=(a[0]*1.0)+(1.0*b[0]/b[1]);
	return f;
}

function TonBerechnung()
{
if ((pitch==null)||(pitch==0))pitch=440;
Laenge = 0;
var c;
var s=pitch;
if (offen) c = 0.5; else c = 0.25;
//alert(VTaste);
var t = GetTonNummer(VTaste);
//if (t==-999){ klingender_Ton="";Frq=0;Laenge=0;return -999;}
var odiff = Math.floor(t / 12-2) ;
var tdiff = t-34;
//alert("odiff: "+odiff+"\ntdiff: "+tdiff);
var Intervall = (tdiff + 1200 - 3) % 12
var rq = 1.5;
var mq = 1.49492696045105;
var rt = 1.25;
var f = s * Math.pow(2,(tdiff / 12));
Frq = f * 8 / Fuss;
var WellenLaenge = v / Frq;
Laenge = (10000 * WellenLaenge * c) / 10;
var TonNr = t + 12 * Math.log(8 / Fuss) / Math.log(2);
//alert(TonNr);
var tt = GetTonName(TonNr);
//if (TonNr < 0) 
//	tt = tt.charAt(0).toUpperCase() + tt.substring(1,tt.length-1); 
//else 
//	tt = tt.charAt(0).toLowerCase() + tt.substring(1,tt.length-1); 
//if (tt.indexOf("s") == 2) tt = tt.substring(0, 3); else tt = tt.substring(0, 1);
//o = Math.floor((TonNr) / 12);
//if (o < 0) o++ 
klingender_Ton = tt;// + Math.abs(o);

return TonNr;
}

function GetTonName(i)
{
	i=Math.floor(i+0.5);
	var t;
	switch(Math.abs(i*1.0+1200) %12)
	{
		case 0: t = "h";break;
		case 1: t = "c";break;
		case 2: t = "cis";break;
		case 3: t = "d";break;
		case 4: t = "dis";break;
		case 5: t = "e";break;
		case 6: t = "f";break;
		case 7: t = "fis";break;
		case 8: t = "g";break;
		case 9: t = "gis";break;
		case 10: t = "a";break;
		case 11: t = "b";break;
	}
	if (i < 13) t = t.charAt(0).toUpperCase()+t.substring(1,t.length);
	if (i>24) var o = Math.floor((i-1) / 12)-1;
	if ((i<25)&&(i>0)) o=0;
	if (i<1) o=Math.floor((12-i)/12);
//	alert("Tonname("+i+")="+t+o);
	return t+o;
}
function GetTonNummer(t)
{
	var i,d=1,l=1;
	if (t.length==0) {return -999;}
	else if (t.indexOf('cis')==0){i=2 ;l=3;}
	else if (t.indexOf('des')==0){i=2 ;l=3;}
	else if (t.indexOf('dis')==0){i=4 ;l=3;}
	else if (t.indexOf('es')==0){i=4 ;l=2;}
	else if (t.indexOf('fis')==0){i=7 ;l=3;}
	else if (t.indexOf('ges')==0){i=7 ;l=3;}
	else if (t.indexOf('gis')==0){i=9 ;l=3;}
	else if (t.indexOf('ais')==0){i=11 ;l=3;}
	else if (t.indexOf('as')==0){i=9 ;l=2;}
	else if (t.indexOf('c')==0){i=1 ;}
	else if (t.indexOf('d')==0){i=3 ;}
	else if (t.indexOf('e')==0){i=5 ;}
	else if (t.indexOf('f')==0){i=6 ;}
	else if (t.indexOf('g')==0){i=8 ;}
	else if (t.indexOf('a')==0){i=10 ;}
	else if (t.indexOf('h')==0){i=12 ;}
	else if (t.indexOf('b')==0){i=11 ;}
	else if (t.indexOf('Cis')==0){i=2 ;d=-1;l=3;}
	else if (t.indexOf('Des')==0){i=2 ;d=-1;l=3;}
	else if (t.indexOf('Dis')==0){i=4 ;d=-1;l=3;}
	else if (t.indexOf('Es')==0){i=4 ;d=-1;l=2;}
	else if (t.indexOf('Fis')==0){i=7 ;d=-1;l=3;}
	else if (t.indexOf('Ges')==0){i=7 ;d=-1;l=3;}
	else if (t.indexOf('Gis')==0){i=9 ;d=-1;l=3;}
	else if (t.indexOf('Ais')==0){i=11 ;d=-1;l=3;}
	else if (t.indexOf('As')==0){i=9 ;d=-1;l=2;}
	else if (t.indexOf('C')==0){i=1 ;d=-1;}
	else if (t.indexOf('D')==0){i=3 ;d=-1;}
	else if (t.indexOf('E')==0){i=5 ;d=-1;}
	else if (t.indexOf('F')==0){i=6 ;d=-1;}
	else if (t.indexOf('G')==0){i=8 ;d=-1;}
	else if (t.indexOf('A')==0){i=10 ;d=-1;}
	else if (t.indexOf('H')==0){i=12 ;d=-1;}
	else if (t.indexOf('B')==0){i=11 ;d=-1;}
	else {alert("Falsche Eingabe der Taste. Bitte Tonbuchstabe(n)+Oktave. Bsp.: C0, fis2, es3");return -999;}
	var o=t.substring(l,t.length);
	if (d==-1) return 12*o*d+i;
	return 12*o*d+i+12;
}

function Test()
{
BreiteGeg=0;TiefeGeg=0;AbweichungGeg=0;VertiefungGeg=0;TasteGeg=0;DurchmesserGeg=0;
bbBreite=0;bbTiefe=0;bbVertiefung=0;bbTaste=0;bbAbweichung=0;bbTonNummer=0;bbDurchmesser=0;
AbweichungBer=0;TasteBer=0;TiefeBer=0;BreiteBer=0;VertiefungBer=0;DurchmesserBer=0;
VTaste=document.f.Taste.value;
Ton=TonBerechnung();//alert(VTaste+"  "+Ton);
VBreite = document.f.Breite.value.replace(/,/g,".")*1.0;
VTiefe = document.f.Tiefe.value.replace(/,/g,".")*1.0;
VVertiefung = document.f.Vertiefung.value.replace(/,/g,".")*1.0;
VDurchmesser = document.f.Durchmesser.value.replace(/,/g,".")*1.0;
VAbweichung = document.f.Abweichung.value.replace(/,/g,".")*1.0;
VAufschnittsbreite=document.f.Aufschnittsbreite.value.replace(/,/g,".")*1.0;
VVerhaeltnis=document.f.Verhaeltnis.value.replace(/,/g,".")*1.0;
if (document.f.Verhaeltnis.value.indexOf("/")>0)
{
	if (document.f.Verhaeltnis.value.indexOf(" ")>0)
	{
		vh=document.f.Verhaeltnis.value.split(" ");
		VVerhaeltnis=GetFuss(vh[0],vh[1]);
	}
	else VVerhaeltnis=GetFuss(document.f.Verhaeltnis.value,"");
	
}
if (VTaste =="") TasteBer=1; else TasteBer=0;
if (Ton==-999) {TasteGeg="";TasteBer=1;Ton=0;klingender_Ton=""}
if (VBreite !=0) BreiteGeg=1; else BreiteGeg=0;
if (VDurchmesser !=0) DurchmesserGeg=1; else DurchmesserGeg=0;
if (VAufschnittsbreite !=0) AufschnittsbreiteGeg=1; else AufschnittsbreiteGeg=0;
if (VVerhaeltnis !=0) VerhaeltnisGeg=1; else VerhaeltnisGeg=0;
if (VTiefe !=0)  TiefeGeg=1; else TiefeGeg=0;
if (document.f.Abweichung.value !="") AbweichungGeg=1; else AbweichungGeg=0;
if (VVertiefung !=0) VertiefungGeg=1; else VertiefungGeg=0;
if (VTaste == "") bbAbweichung = 0; else TasteGeg=1;
if ((BreiteGeg * TiefeGeg)==1) bbVertiefung = 1; else bbVertiefung = 0;
if ((BreiteGeg * VertiefungGeg)==1) bbTiefe = 1; else bbTiefe = 0;
if ((VertiefungGeg * TiefeGeg)==1) bbBreite = 1; else bbBreite = 0;
if ((VerhaeltnisGeg+DurchmesserGeg+AufschnittsbreiteGeg==3)&&(Math.abs(VAufschnittsbreite-VDurchmesser*VVerhaeltnis*Math.PI)>.01))
	{alert('Gegebene Maße der runden Pfeife passen nicht zusammen.\nDie Labienbreite wird ignoriert.');AufschnittsbreiteGeg=0;}
if ((VDurchmesser<VAufschnittsbreite)&&(DurchmesserGeg==1)) {alert('Labium kann nicht breiter sein als Pfeife!\nLabiumbreite wird ignoriert.');AufschnittsbreiteGeg=0;}
//if ((VertiefungGeg==1)&&(VerhaeltnisGeg==0)) {VVerhaeltnis=1/(2+VVertiefung*2);VerhaeltnisGeg=1};
//if ((VertiefungGeg==0)&&(VerhaeltnisGeg==1)) {VVertiefung=1/(VVerhaeltnis*2)-1;VertiefungGeg=1};
if ((DurchmesserGeg==1)&&(AufschnittsbreiteGeg==1)&&(VerhaeltnisGeg==0))
	{VVerhaeltnis=VAufschnittsbreite/(VDurchmesser*Math.PI);VerhaeltnisGeg=1;
//	VVertiefung=1/(2*VVerhaeltnis)-1;VertiefungGeg=1;
	}
if ((DurchmesserGeg==1)&&(AufschnittsbreiteGeg==0)&&(VerhaeltnisGeg==1))
	{VAufschnittsbreite=VDurchmesser*VVerhaeltnis*Math.PI;AufschnittsbreiteGeg=1;}
if ((DurchmesserGeg==0)&&(AufschnittsbreiteGeg==1)&&(VerhaeltnisGeg==1))
	{VDurchmesser=VAufschnittsbreite/VVerhaeltnis/Math.PI;DurchmesserGeg=1;}
if ((BreiteGeg==0)&&(AufschnittsbreiteGeg==1)&&(VertiefungGeg==0)){VBreite=VAufschnittsbreite;BreiteGeg=1;}
if ((BreiteGeg==1)&&(AufschnittsbreiteGeg==0)&&(VerhaeltnisGeg==0)){VAufschnittsbreite=VBreite;AufschnittsbreiteGeg=1;}
if ((VertiefungGeg+BreiteGeg+TiefeGeg==0+AufschnittsbreiteGeg) && (VerhaeltnisGeg==1)) BRN=1; else BRN=0;
if ((TasteGeg==1)&&(AbweichungGeg==1)&&(BreiteGeg+TiefeGeg+VertiefungGeg+DurchmesserGeg==0)) 
	{VVertiefung=Standardvertiefung;VertiefungGeg=1;}
if ((DurchmesserGeg==1)&&(BreiteGeg+TiefeGeg+VertiefungGeg==0)) 
	{VVertiefung=Standardvertiefung;VertiefungGeg=1;}
//if ((AbweichungGeg==1)&&(BreiteGeg+TiefeGeg==1)&&(VertiefungGeg==0)) 
//	{VVertiefung=Standardvertiefung;VertiefungGeg=1;}
if (DurchmesserGeg==1){
if ((DurchmesserGeg*TiefeGeg*BreiteGeg==1)&&(Math.abs(VTiefe*VBreite - Math.pow(VDurchmesser/2,2)*Math.PI)>.1))
{alert("Rechtecksmaße und Durchmesser sind unverträglich. Durchmesser wird ignoriert");
DurchmesserGeg=0;}

	Flaeche=Math.pow(VDurchmesser/2 ,2)*Math.PI;
	if (BreiteGeg+TiefeGeg+VertiefungGeg==0)
		{VTiefe=Math.sqrt(Flaeche);VBreite=VTiefe;TiefeGeg=1;BreiteGeg=1;bbVertiefung=1;}
	if ((BreiteGeg+TiefeGeg>0)&&(VertiefungGeg==1))
		{DurchmesserGeg=0;}
	if ((BreiteGeg+TiefeGeg==0)&&(VertiefungGeg==1))
		{VBreite=Math.sqrt(Flaeche/VVertiefung);VTiefe=VBreite*VVertiefung;
		BreiteGeg=1;TiefeGeg=1;VertiefungGeg=0;bbVertiefung=1;}
	if ((BreiteGeg==1)&&(TiefeGeg==0)&&(VertiefungGeg==0))
	      {VTiefe=Flaeche/VBreite;TiefeGeg=1;bbVertiefung=1;}
	if ((BreiteGeg==0)&&(TiefeGeg==1)&&(VertiefungGeg==0))
	      {VBreite=Flaeche/VTiefe;BreiteGeg=1;bbVertiefung=1;}
}
var n = 0;
if ((BreiteGeg + bbBreite)>0) n++;
if ((TiefeGeg + bbTiefe)>0) n++;
if ((VertiefungGeg + bbVertiefung)>0) n++;
if (n == 3) bbAbweichung = 1; else {bbAbweichung = 0; AbweichungBer = 0;}
if (AbweichungGeg ==1 ) bbTaste = 1;
n = 0;
if ((BreiteGeg + bbBreite)>0) n++;
if ((TiefeGeg + bbTiefe)>0) n++;
if ((VertiefungGeg + bbVertiefung)>0) n++;
if (n == 1)
{
    if ((AbweichungGeg + bbAbweichung)>0)
    {
	    if (TiefeGeg==0) bbTiefe = 1;
	    if (BreiteGeg==0) bbBreite = 1;
	    if (VertiefungGeg==0) bbVertiefung= 1;
    }
    if (TasteBer==1)
    {
	   bbAbweichung = 0;
	   bbTonNummer = 0;
    }
}
}

function Clear()
{	document.f.BTiefe.value="";
	document.f.BBreite.value="";
	document.f.BVertiefung.value="";
	document.f.BAbweichung.value="";
	document.f.BTaste.value="";
	document.f.BTon.value="";
	document.f.BDurchmesser.value="";
	document.f.BVerhaeltnis.value="";
	document.f.BAufschnittsbreite.value="";
	document.f.BPlattenbreite.value="";
	document.f.BLaengeRund.value="";
	document.f.BLaengeEckig.value="";
	document.f.BFrequenz.value="";
	document.f.BLaenge.value="";
	//document.f.BLabium.value="";
}

function GetBruch(x,d,max)
{
	var y;
	for(var i=1;i<=max;i++)
	{
		y=x*i;
		if(Math.abs(y-Math.floor(y))<=d) return Math.floor(y)+"/"+i;
	}
	return Runden(x,4);
}

function KleinerRechner(t)
{
	if(t=="") return;
	if(t==null) return;
	var tt=t;
	t=t.replace(/,/g,".");
	t=t.replace(/\++/g," + ");
	t=t.replace(/\-+/g," - ");
	t=t.replace(/\*+/g," * ");
	t=t.replace(/\/+/g," / ");
	t=t.replace(/( \^ )+/g,"^");
	t=t.replace(/(atan)+/gi,"Math.at~an");
	t=t.replace(/(asin)+/gi,"Math.as~in");
	t=t.replace(/(acos)+/gi,"Math.ac~os");
	t=t.replace(/(sin)+/gi,"Math.sin");
	t=t.replace(/(cos)+/gi,"Math.cos");
	t=t.replace(/(tan)+/gi,"Math.tan");
	t=t.replace(/(sqr)+/gi,"Math.sqrt");
	t=t.replace(/(abs)+/gi,"Math.abs");
	t=t.replace(/(int)+/gi,"Math.floor");
	t=t.replace(/(log)+/gi,"log");
	t=t.replace(/(ln)+/gi,"Math.log");
	t=t.replace(/(exp)+/gi,"Math.°xp");
	t=t.replace(/(pi)+/gi,"Math.PI");
	t=t.replace(/(ggT)+/gi,"ggT");
	t=t.replace(/(kgV)+/gi,"kgV");
	t=t.replace(/(Cent)+/gi,"1200/Math.log(2)*Math.log");
	t=t.replace(/(SV\()+/gi,"2^(1/1200*");
	t=t.replace(/(e)+/gi,"Math.E");
	t=t.replace(/\°/g,"e");
	t=t.replace(/\~/g,"");
	var i=0,b=1;
	var ttt=t.split(" ");
	while(b==1)
	{
	b=0;
	var tttt=new String;
	for (i=0;i<ttt.length;i++)
	{
		tttt=ttt[i];
		if (tttt.indexOf("^")>-1)
		{
			tttt="Math.pow("+tttt.replace(/\^/,",")+")";
			b=1;
		}
		if ((tttt.indexOf("log")>-1)&&(tttt.indexOf("Math.log")==-1))
		{
			tttt=tttt.replace(/log/,"Math.log");
			tttt=tttt.replace(/\,/,")/Math.log(");
			b=1;
		}
		ttt[i]=tttt;
	}
	t=ttt.join("");
	}
	return (tt+" = "+ eval(t));
}

function ggT(a,b)
{
	var r=-1;
	while(r!=0)
	{r=a%b;a=b;b=r;}
	return a;
}

function kgV(a,b)
{return a*b/ggT(a,b);}

function Format(t,a,b)
{
	//alert(Number(t)+"\n"+(Number(t)==""));
	tt=new String(t);
	tt=tt.replace(/\,/g,".");
	if (Number(tt)=="") return ("                             ").substr(0,a+b+1);
	tt=String(Runden(Number(tt),b)).replace(/\./g,",");
	L1=(tt+",").indexOf(",");
	L2=tt.length;
	//alert('L1='+L1+'\nL2='+L2+'\na='+a+'\nb='+b);
	return ("                         ").substr(0,a-L1)+tt+(",00000000000").substr(0,b-(L2-L1-1));	
}
