function calc(cform,cformular,cresult)
{
	//alert("cform"+cform)
	//alert("cformular"+cformular)
	//alert("cresult"+cresult)
	
	formitems=0
	while (typeof(document.forms[cform][formitems]) != "undefined" && formitems<500) 
			 formitems++; 
	try
	{ 
	res= " "+ document.forms[cform][cformular].value +" "
	for (j=0; j < formitems-1; j++)
		{
		//alert("res: "+res);
	    //alert("formname: "+document.forms[cform][j].name)
		//alert("formtype: "+document.forms[cform][j].type)
		if ((document.forms[cform][j].name).length>0)
			{
			myvals="0"
			switch (document.forms[cform][j].type)
				{
				case "text":
						myvals=document.forms[cform][j].value
						break;
				case "radio":
						//kann Gruppe von Formularelementen sein (haben alle den selben Namen)
						//wenn das erste Element <> checked ist, wird in der Formel ersetzt
						// => nachfolgendes Element wird in der Formel nicht mehr berücksichtigt.
						
						//if (document.forms[cform][j].checked) 
						//		myvals=document.forms[cform][j].value
						//		else
						//		myvals="-"
						myvals=get_radio_value(cform, formitems , document.forms[cform][j].name);
						break;
				case "select-one":
						myvals=document.forms[cform][j].value
						break;
				case "select-multiple":
						myvals=document.forms[cform][j].value
						break;
				case "checkbox":
						if (document.forms[cform][j].checked)
							{myvals=document.forms[cform][j].value;
							}
							else
							{
							myvals="-";
							}
						break;
				}
			if (myvals != "-")
				{
					var valarray = myvals.split("|");
					if (valarray.length==1)
						  res = xreplace(res,document.forms[cform][j].name + "[1]",valarray[0]);
						  //res = xreplace(res,document.forms[cform][j].name + "[1]",valarray[0]);
					else
						for (k = 0;k < valarray.length; k++)
						  {
						  	myTestVal = valarray[0]; myTestVal = myTestVal.replace(",",".");
						  	if (isNaN(myTestVal*1) == false)
								{
									res=xreplace(res,document.forms[cform][j].name + "["+(k+1)+"]",valarray[k]);
								}
							else
								{
									res=xreplace(res,document.forms[cform][j].name + "["+k+"]",valarray[k]);
								}
							//alert("zwischenresname "+document.forms[cform][j].name)
							//alert("zwischenres"+res)
						  }
				}
				else
					{
					for (k = 0; k < 10; k++)
					  {
					  res = xreplace(res,document.forms[cform][j].name + "["+k+"]",0);

					  }
					//alert("BeforResUnten"+document.forms[cform][j].name)
					//alert("ResUnten"+res);
					}
			}
		}
	while (res.indexOf("IF(")>0)
		{
		res=ifparse(res, res.indexOf("IF("))
		}
	res=xreplace(res,",",".");
	//alert("RES:"+res)
	var myR = new String(eval(res));
	myR = xreplace(myR,".",",");
	document.forms[cform][cresult].value = myR
	//alert(myR);
	}
	catch(e)
		{
		alert("Es ist ein großer Fehler aufgetreten!");
		}
}

// ****** parsing if statements ****'


function ifparse(res,ifpos)
{
	var aktstr=new Array();
	
	aktstrpos=0;
	
	aktstr[0]=""; 
	aktstr[1]=""; 
	aktstr[2]="";
	klammer=1;
	pre="";
	post="";
	
	pre=res.substring(0,ifpos);
	i=ifpos+3;
	while (klammer>0 && i<res.length)
	{
		switch (res.substring(i,i+1))
		{
			case ";": if (klammer==1)  
							aktstrpos=aktstrpos+1
						else
							aktstr[aktstrpos]=aktstr[aktstrpos]+res.substring(i,i+1);
						break;
					 
			case "(": klammer=klammer+1;
					  if (klammer>0)  aktstr[aktstrpos]=aktstr[aktstrpos]+res.substring(i,i+1);
					  break;
			case ")": klammer=klammer-1
					  if (klammer>0) aktstr[aktstrpos]=aktstr[aktstrpos]+res.substring(i,i+1);
					  break;
			default: aktstr[aktstrpos]=aktstr[aktstrpos]+res.substring(i,i+1);
					  break;
		}
		i=i+1
	}
	if (i<res.length) post=res.substring(i) ;
	
	if (eval(aktstr[0])==true)  
		return(pre+aktstr[1]+post)
	else
		return(pre+aktstr[2]+post)
	
}

// ****** debugging purpose	;=))) *******
function e(x)
{
	document.write("<br>Value :" + x + "<br>");
}

function xreplace(sstring, search,repl)
{
if (repl=="")repl="0"

//alert("Instring: "+sstring.indexOf(search)+" ...Search: "+search+" .....REPL:"+repl)
	while (sstring.indexOf(search)>=0)
		{
		sstring=sstring.replace(search,repl)
		}
		
	return(sstring)
}


function get_radio_value(cform, formitems , radioname)
{
var j;
var val;
//alert(cform  + " " + formitems + " " +radioname);
val="-";
for (j=0; j < formitems-1; j++)
		if ((document.forms[cform][j].name)==radioname)
			switch (document.forms[cform][j].type)
				{
				case "radio":
						if (document.forms[cform][j].checked)
								val=document.forms[cform][j].value
						break;
				}
	return(val);
}


function DataFormat(DFobj,cPrefix,cSuffix,cDecimal)
{
cResult = DFobj.value
var erg;
var newNum;

erg="";
i=0;
potenz=1;

cResult= xreplace(cResult,",",".");
cNum= new Number(cResult);
for (i=0;i<cDecimal;i++) potenz=potenz*10;	
cNum*=potenz;
cNum=Math.round(cNum);
cResult=cNum+"";
if (cResult.substr(0,cResult.length-cDecimal)!=0) {newNum=cResult.substr(0,cResult.length-cDecimal)}
else {newNum="0"};
if (cDecimal>0)
{
	if(cResult.substr(cResult.length-cDecimal,cDecimal)!=0)
	{
		newNum=newNum+","+cResult.substr(cResult.length-cDecimal,cDecimal);
	}
	else 
	{
		newNum=newNum+","; for (i=0;i<cDecimal;i++) newNum=newNum+"0";
	}
}
DFobj.value=cPrefix+newNum+cSuffix;
}


function printForm(FmObj)
{
	var lAction; var lTarget; var lFormAC;
	var PrForm = window.open('','PrForm','width=650, height=500, left=50, top=50, resizable=yes, scrollbars=yes');
	lTarget=FmObj.target; FmObj.target='PrForm'; 
	lAction = FmObj.action; FmObj.action = lAction+'&TBN=print';
	lFormAC=FmObj.elements('FormAC').value; FmObj.elements('FormAC').value='PRINT';
	FmObj.submit();
	FmObj.target=lTarget; 
	FmObj.action = lAction;
	FmObj.elements('FormAC').value=lFormAC;
	PrForm.focus();
}
