function replaceIt(string,suchen,ersetzen)
		{
		ausgabe = "" + string;
		while (ausgabe.indexOf(suchen)>-1)
				{
				pos = ausgabe.indexOf(suchen);
				ausgabe = "" + (ausgabe.substring(0, pos) + ersetzen + ausgabe.substring((pos + suchen.length), ausgabe.length));
				}
		return ausgabe;
		}

function runden(rund)
		{
		var rund = Math.round(rund * 100) / 100;
		return rund;
		}
function runden_waehrung(rund)
		{
		var rund = Math.round(rund * 100000) / 100000;
		return rund;
		}

function to_us(wert)
		{
		var rund = replaceIt(wert,",",".");
		var rund = runden(parseFloat(rund));
		return rund;
		}
function to_waehrung(wert)
		{
		var rund = replaceIt(wert,",",".");
		var rund = runden_waehrung(parseFloat(rund));
		return rund;
		}

function to_ge(wert)
		{
		var rund = Math.round(wert * 100) / 100;
		var rund = replaceIt(rund,".",",");
		var rund = number_format(wert,2,",","")
		return rund;
		}

function number_format(number,laenge,sep,th_sep)
      {
      if (isNaN(number))
			{
			number = 0;
			}
      number = Math.round( number * Math.pow(10, laenge) ) / Math.pow(10, laenge);
      str_number = number+"";
      arr_int = str_number.split(".");
      if(!arr_int[0]) arr_int[0] = "0";
      if(!arr_int[1]) arr_int[1] = "";
      if(arr_int[1].length < laenge)
	{
      	nachkomma = arr_int[1];
      	for(i=arr_int[1].length+1; i <= laenge; i++)
		{
		nachkomma += "0";
		}
      	arr_int[1] = nachkomma;
      	}
      if(th_sep != "" && arr_int[0].length > 3)
	{
      	Begriff = arr_int[0];
      	arr_int[0] = "";
      	for(j = 3; j < Begriff.length ; j+=3)
		{
		Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
		arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
		}
	str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
	arr_int[0] = str_first + arr_int[0];
	}
      return arr_int[0]+sep+arr_int[1];
      }

function risiko_rechnen(form)
                // Funktion errechnet aus der Gesamtdepotgröße form.f_gesamtdepot die Variablen
                //  var_risiko
                //  var_posmin
                //  var_posmax
                // und schreibt diese in
                //  form.f_risiko.value
   		//  form.f_position_min.value
		//  form.f_position_max.value
                
                {
		var_gesamtdepot     = to_us(form.f_gesamtdepot.value);
		var_risiko          = var_gesamtdepot/100;
		var var_posmin      = var_gesamtdepot * .05;
		var var_posmax      = var_gesamtdepot * .1;

		form.f_risiko.value = to_ge(var_risiko);
   		form.f_position_min.value = to_ge(var_posmin);
		form.f_position_max.value = to_ge(var_posmax);

		calculate(form);
		}

function slipage_anpassen(form,sObj)
                {
                var_slippage      = to_us(form.f_slippage.value);

                with (sObj)
                switch(options[selectedIndex].value)
                      {
                      case "0,20"   : form.f_slippage.value = to_ge(0.2); break;
                      case "0,50"   : form.f_slippage.value = to_ge(0.5); break;
                      case "2,00"   : form.f_slippage.value = to_ge(2.0); break;
                      }
                }

function ratio_rechnen(form,sObj)
                // Funktion errechnet aus
                //  form.f_kaufkurs.value
                //  form.f_stoploss.value
                //  form.f_risiko.value
                //  form.f_kosten.value
                //  form.f_gesamtdepot.value
                //  form.f_slippage.value
                //  form.f_w_kursk.value
                
                {
                var_kaufkurs      = to_us(form.f_kaufkurs.value);
		var_stoploss      = to_us(form.f_stoploss.value);
		var_risiko        = to_us(form.f_risiko.value);
		var_kosten        = to_us(form.f_kosten.value);
		var_gesamtdepot   = to_us(form.f_gesamtdepot.value);
                var_kurs_fw       = to_waehrung(form.f_w_kursk.value);      //Kurs ISO/EUR
                var_slippage      = to_us(form.f_slippage.value);

                var_slippage      = var_slippage / 100;
                var var_posmin    = var_gesamtdepot * .05;
		var var_posmax    = var_gesamtdepot * .1;

		if ((form.f_risiko.value) == "")
                        // Maximales Risiko wurde noch nicht berechnet
                        {
			var_risiko  = var_gesamtdepot / 100;
			}

                if (document.rechner.option_order[0].checked == true)
                   // Order billigst
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }

                if (document.rechner.option_order[0].checked == true)
                   // Order Stop-Buy
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }
                if (document.rechner.option_order[2].checked == true)
                   // Order Limit ohne Slippage
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs);                        //in Währung
                   }

                var var_stoploss_slippage       = (var_stoploss * (1 - var_slippage)); //in Währung
                var var_papiere                 = Math.round  ((var_risiko - (2 * var_kosten / var_kurs_fw)) / ( (var_kaufkurs_slippage - var_stoploss_slippage) / var_kurs_fw ) );  // Kurs & Kosten in Währung gegen Risiko in Euro
                var var_kaufpreis               = (var_kaufkurs_slippage * var_papiere + var_kosten) / var_kurs_fw; // Kaufpreis in EURO
		var var_risiko_absolut          = var_kaufpreis -(((var_papiere * var_stoploss_slippage) - var_kosten)/ var_kurs_fw); // Risiko in EURO
                var var_risiko_prozent          = var_risiko_absolut / Math.abs(var_kaufpreis) * 100;  // Risiko absolut ist bereits EURO
                var var_breakeven               = ((var_kaufpreis * var_kurs_fw) + 1 * var_kosten) / var_papiere; // Break even in Währung
                var var_target_1                = ((var_kaufpreis * var_kurs_fw )+ (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                var var_kostenprozent           = (var_kosten / var_kurs_fw) / var_kaufpreis * 100;

                with (sObj)
                
                switch(options[selectedIndex].value)
                      {
                      case "1:1"   : var_target_1 = ((var_kaufpreis * var_kurs_fw )+ 1 * (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                                     form.f_target_1.value = to_ge(var_target_1); break;
                      case "1:1,5" : var_target_1 = ((var_kaufpreis * var_kurs_fw )+ 1.5 * (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                                     form.f_target_1.value = to_ge(var_target_1); break;
                      case "1:2"   : var_target_1 = ((var_kaufpreis * var_kurs_fw )+ 2 * (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                                     form.f_target_1.value = to_ge(var_target_1); break;
                      case "1:2,5" : var_target_1 = ((var_kaufpreis * var_kurs_fw )+ 2.5 * (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                                     form.f_target_1.value = to_ge(var_target_1); break;
                      case "1:3"   : var_target_1 = ((var_kaufpreis * var_kurs_fw )+ 3 * (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                                     form.f_target_1.value = to_ge(var_target_1); break;
                      }

                }

function isinsuchen(form,sObj)
                {
                with (sObj)
                     {
                     form.t_ISIN.value  = String(options[selectedIndex].text).substring(0,12);
                     form.t_aktie.value = String(options[selectedIndex].text).substring(13);
                     }
                }

function kaufpreis_rechnen(form)
		{
		var_gesamtpreis		        = to_us(form.f_position_absolut.value);
		var_kosten     		        = to_us(form.f_kosten.value);
		var_kaufkurs  		        = to_us(form.f_kaufkurs.value);
		var_stoploss			= to_us(form.f_stoploss.value);
		var_slippage                    = to_us(form.f_slippage.value);
                var_slippage                    = var_slippage / 100;
                var_kurs_fw                     = to_waehrung(form.f_w_kursk.value);      //Kurs ISO/EUR
                
                if (document.rechner.option_order[0].checked == true)
                   // billigst
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }

                if (document.rechner.option_order[1].checked == true)
                   // Stop-Buy
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }
                   
                if (document.rechner.option_order[1].checked == true)
                   // Limit
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs);                        //in Währung
                   }

		var var_stoploss_slippage       = (var_stoploss * (1 - var_slippage)); //in Währung

		var_kaufpreis			= var_gesamtpreis - (var_kosten / var_kurs_fw );  // in EURO
		var_papiere			= Math.floor(var_kaufpreis / (var_kaufkurs_slippage / var_kurs_fw));
		var_risiko			= (((var_stoploss_slippage - var_kaufkurs_slippage)) * var_papiere - 2 * var_kosten) /  var_kurs_fw; // in EURO

		form.f_papiere.value 		= to_ge(var_papiere);
		form.f_risiko.value  		= to_ge(-var_risiko);
		form.f_position_absolut.value	= to_ge(var_gesamtpreis);

		calculate(form);
		}

function anzahl_rechnen(form)
		{
		var_papiere    		= to_us(form.f_papiere_a.value);
		var_kosten     		= to_us(form.f_kosten.value);
		var_kaufkurs  		= to_us(form.f_kaufkurs.value);
		var_stoploss		= to_us(form.f_stoploss.value);
		var_slippage            = to_us(form.f_slippage.value);
                var_slippage            = var_slippage / 100;
                var_kurs_fw             = to_waehrung(form.f_w_kursk.value);      //Kurs ISO/EUR
                
                if (document.rechner.option_order[0].checked == true)
                   // biligst
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }

                if (document.rechner.option_order[1].checked == true)
                   // Stop-Buy
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }

                if (document.rechner.option_order[2].checked == true)
                   // Limit
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs);                        //in Währung
                   }

		var var_stoploss_slippage       = (var_stoploss * (1 - var_slippage)); //in Währung
                var var_kaufpreis               = (var_kaufkurs_slippage * var_papiere + var_kosten) / var_kurs_fw; // Kaufpreis in EURO
                var_risiko	                = (((var_stoploss_slippage - var_kaufkurs_slippage)) * var_papiere - 2 * var_kosten) / var_kurs_fw; // Risiko in EURO

		form.f_papiere.value 	        = to_ge(var_papiere);
		form.f_risiko.value  	        = to_ge(-var_risiko);
		form.f_papiere_a.value	        = to_ge(var_papiere);

		calculate(form);
		}


function calculate(form)
		{
		var_kaufkurs      = to_us(form.f_kaufkurs.value);     //Aktienkurs in Währung
		var_stoploss      = to_us(form.f_stoploss.value);     //Aktienkurs in Währung

                if (var_kaufkurs < var_stoploss)
                   {
                   var_stoploss = var_kaufkurs;
                   }

                var_risiko        = to_us(form.f_risiko.value);        //Riskierter Betrag in EURO
		var_kosten        = to_us(form.f_kosten.value);        //Kosten in Währung
		var_gesamtdepot   = to_us(form.f_gesamtdepot.value);   //Gesamtdepot in EURO
		
		var_kurs_fw       = to_waehrung(form.f_w_kursk.value); //Kurs ISO/EUR
                var_slippage      = to_us(form.f_slippage.value);      //Slippage in Prozent
                var_slippage      = var_slippage / 100;

                var var_posmin    = var_gesamtdepot * .05;
		var var_posmax    = var_gesamtdepot * .1;

                if (document.rechner.option_order[0].checked == true)
                   // billigst
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }

                if (document.rechner.option_order[1].checked == true)
                   // Stop-Buy
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs * (1 + var_slippage));   //in Währung
                   }
                   
                if (document.rechner.option_order[2].checked == true)
                   // Limit
                   {
                   var var_kaufkurs_slippage       = (var_kaufkurs);                        //in Währung
                   }


		if ((form.f_risiko.value) == "")
			{
			var_risiko  = var_gesamtdepot / 100;          //Risiko in Prozent falls nicht vorgegeben
			}

		var var_stoploss_slippage       = (var_stoploss * (1 - var_slippage)); //in Währung
                var var_papiere                 = Math.round  ((var_risiko - (2 * var_kosten / var_kurs_fw)) / ( (var_kaufkurs_slippage - var_stoploss_slippage) / var_kurs_fw ) );  // Kurs & Kosten in Währung gegen Risiko in Euro
                var var_kaufpreis               = (var_kaufkurs_slippage * var_papiere + var_kosten) / var_kurs_fw; // Kaufpreis in EURO
		var var_risiko_absolut          = var_kaufpreis -(((var_papiere * var_stoploss_slippage) - var_kosten)/ var_kurs_fw); // Risiko in EURO
                var var_risiko_prozent          = var_risiko_absolut / Math.abs(var_kaufpreis) * 100;  // Risiko absolut ist bereits EURO
                var var_breakeven               = ((var_kaufpreis * var_kurs_fw) + 1 * var_kosten) / var_papiere; // Break even in Währung
                var var_target_1                = ((var_kaufpreis * var_kurs_fw )+ (var_risiko_absolut * var_kurs_fw) + 1 * var_kosten) / var_papiere;
                var var_kostenprozent           = (var_kosten / var_kurs_fw) / var_kaufpreis * 100;

		form.f_papiere.value            = to_ge(var_papiere);
		form.f_papiere.value            = number_format(var_papiere,0,"","");
		form.f_kaufpreis.value          = to_ge(var_kaufpreis);
		form.f_risiko.value             = to_ge(var_risiko);
		form.f_kaufkurs.value           = to_ge(var_kaufkurs);
		form.f_kaufkurs_slippage.value  = to_ge(var_kaufkurs_slippage);
		form.f_stoploss_slippage.value  = to_ge(var_stoploss_slippage);
		form.f_kosten.value             = to_ge(var_kosten);
		form.f_kosten_prozent.value     = to_ge(var_kostenprozent);
		form.f_stoploss.value           = to_ge(var_stoploss);
		form.f_gesamtdepot.value        = to_ge(var_gesamtdepot);
		form.f_breakeven.value          = to_ge(var_breakeven);
                form.f_target_1.value           = to_ge(var_target_1);
                
   		form.f_position_min.value       = to_ge(var_posmin);
		form.f_position_max.value       = to_ge(var_posmax);
		form.f_risiko_1p.value          = to_ge(var_risiko_prozent);
		form.f_risiko_1a.value          = to_ge(var_risiko_absolut);
		
		form.f_gebuehren.value          = to_ge(to_us(form.f_kosten.value));

                if (document.rechner.option_order[0].checked == true)
                   // Order billigst
                   {
                   var Eintrag = "Ich kaufe billigst " + form.f_papiere.value + " ";
                   }

                if (document.rechner.option_order[1].checked == true)
                   // Order Stop-Buy-Limit
                   {
                   var Eintrag = "Ich ordere per Stop-Buy-Limit " + form.f_papiere.value + " ";
                   }

                if (document.rechner.option_order[2].checked == true)
                   //Order Limitiert
                   {
                   var Eintrag = "Ich ordere limitiert " + form.f_papiere.value + " ";
                   }

                if (form.t_aktie.value == "Name (optional)")
                   {
                   Eintrag += "Papiere";
                   }
                   else
                   {
                   Eintrag += form.t_aktie.value;
                   }

                if (form.t_ISIN.value == "(optional)")
                   {

                   }
                   else
                   {
                   Eintrag += " (ISIN " + form.t_ISIN.value + ")";
                   }
                   
                if (form.f_boersenplatz.value != "")
                   {
                   Eintrag += " über den Börsenplatz " + form.f_boersenplatz.value;
                   }

                Eintrag += ". Der Kaufauftrag ist gültig bis einschließlich " + form.f_gueltigkeit.value;

                if (document.rechner.option_order[0].checked == true)
                   {
                   Eintrag += ".\r\nAktuell notiert der Wert bei rund " + form.f_w_kennz.value + " " + form.f_kaufkurs.value + " und berücksichtigt man bei der Order ´billigst´ eine Slippage von " + var_slippage * 100 + "% ergibt sich ein theoretischer Kaufpreis von " + form.f_w_kennz.value + " " + form.f_kaufkurs_slippage.value + ".\r\n";
                   }

                if (document.rechner.option_order[1].checked == true)
                   // Stop-Buy
                   {
                   Eintrag += ".\r\nDas Stop-Buy-Limit für die Position liegt bei " + form.f_w_kennz.value + " " + form.f_kaufkurs.value + " und berücksichtigt man bei der Order eine Slippage von " + var_slippage * 100 + "% ergibt sich ein theoretischer Kaufpreis von " + form.f_w_kennz.value + " " + form.f_kaufkurs_slippage.value + ".\r\n";
                   }

                if (document.rechner.option_order[2].checked == true)
                   // Limit
                   {
                   Eintrag += ".\r\nDas Limit für die Position liegt bei " + form.f_w_kennz.value + " " + form.f_kaufkurs_slippage.value + ".\r\n";
                   }


                Eintrag += "Der Gegenwert der Position entspricht";

                if ((form.f_w_kennz.value) != "EUR")
                   {
                   Eintrag += " bei einem Kurs von " + form.f_w_kursk.value + " " + form.f_w_kennz.value + "/EUR ";
                   }
                Eintrag += " inkl. " + form.f_w_kennz.value + " " + form.f_kosten.value + " Gebühren (" + form.f_kosten_prozent.value + "% vom Kaufpreis) also rund EUR " + form.f_kaufpreis.value;
                Eintrag += ".\r\nDas erste Stop-Loss setze ich bei " + form.f_w_kennz.value + " " + form.f_stoploss.value + ". Berücksichtigt man beim Verkauf per Stop-Loss eine Slippage von " + var_slippage * 100 + "% ergibt sich ein theoretischer Ausführungskurs von " + form.f_w_kennz.value + " " + form.f_stoploss_slippage.value +".";
                Eintrag += " Damit begrenze ich, zumindest theoretisch, das Risiko auf EUR " + form.f_risiko_1a.value + " (rund " + form.f_risiko_1p.value  + "% der Position.) ";
                Eintrag += "\r\nUnter Berücksichtigung der Gebühren befindet sich die Position ab einem tatsächlichen Verkaufskurs von " + form.f_w_kennz.value + " " + form.f_breakeven.value + " im Gewinn. ";
                Eintrag += "\r\nFür ein Risiko/Chance-Profil von " + form.verhaeltnis.value + " muß der Kurs bis " + form.f_w_kennz.value + " " + form.f_target_1.value + " Potenzial bieten.";

                form.feld_ausgabe.value         = Eintrag;

		//form.f_position_absolut.value	= to_ge(var_kaufpreis);
		//form.f_papiere_a.value	= to_ge(var_papiere);

		}

function zielkurs_rechnen(form)
                // Funktion errechnet den Zielkurs für einen bestimmten Ertrag
                //  var_zk_papiere
                //  var_zk_kaufkurs
                //  var_zk_erfolg
                // und schreibt diese in
                //  form.f_risiko.value
   		//  form.f_position_min.value
		//  form.f_position_max.value

                {
                var_zk_papiere      = to_us(form.zk_papiere.value);
                var_zk_kaufkurs     = to_us(form.zk_kaufkurs.value);
                var_zk_erfolg       = to_us(form.zk_erfolg.value);
                var_kosten          = to_us(form.f_kosten.value);
                
                var_zk_erloes       = ((var_zk_kaufkurs * var_zk_papiere) + (2 * var_kosten) + var_zk_erfolg);
		var_zk_zielkurs     = ((var_zk_kaufkurs * var_zk_papiere) + (2 * var_kosten) + var_zk_erfolg) / var_zk_papiere;

		form.f_zk_zielkurs.value = to_ge(var_zk_zielkurs);
		calculate(form);
		}
