//  <!-- HISTORY (utils.js)	
//  V3.6.0.0 KT 20.11.06
// V3.6.0.1 KT 04.12.06 korrektur
// V3.6.3.1 KT 18.04.07 Neue Funktion ColorControl
// V3.6.4.0 KT 14.05.07
//  -->
<!-- OS-IGNORE -->

// Datei:       utils.js
// Inhalt:      Funktionen fuer die Oberflaechenprogrammierung mit JavaScript
// Copyright:   © APS delta (Schweiz) GmbH 2003
// History:
//     04.07.03 SR Erstellt mit der Funktion SetControlByValue
//     04.07.03 SR Erstellt mit der Funktion ReplaceStr
//     10.11.03 SR Erstellt mit der Funktion HTMLEncode
//     10.11.03 SR Erstellt mit der Funktion HTMLDecode
//     19.11.03 SR Erstellt mit der Funktion toUpper
//     07.01.04 SR Erstellt mit der Funktion print
//     07.01.04 SR Erstellt mit der Funktion info
//     20.01.04 SR Erstellt mit der Funktion doResetForm
//		 03.02.04 SR Erstellt mit der Funktion newWindow
//		 22.03.04 SR Erstellt mit der Funktion isArray
//		 17.05.04	SR Erstellt mit der Funktion GruppeOeffnen
//		 18.05.04	SR Erstellt mit der Funktion collapseAll
//     V3.1.1.5  KT 22.09.2004 htmlEncode korrigiert (Keysensitiv)
// ---------------------------------------------------
//    Funktion SetControlByValue
//    Eingesetzt zum Setzen der Werte von einem Control
//    z. B Combobox und Suchtextfeld, wie auf Seite Reparaturrueckmeldung.html
//   
//    Parameter:
//    cControl  - Steuerelement welches gesetzt werden soll
//    sValue    - Wert welcher gesetzt werden soll.
//    Return:  kein Rueckgabewert
// ------------------------------------------------
function SetControlByValue(cControl,sValue)
   {
        cControl.value=sValue;
   }  
// ---------------------------------------------------
//    Funktion ColorControl
//    Einfaerben des Hintergrundes eines Controls
//   
//    Parameter:
//    cControl     - Steuerelement
//    sColor      - Farbe als String
//    bDo         - Tu es oder nicht
//    Return:   die modifizierte Ausgabe als String
// ------------------------------------------------   
function ColorControl(cControl,sColor, bDo)
{
	if(bDo)
	{
		cControl.style.backgroundColor = sColor;
	}
	else
	{
	  cControl.style.removeAttribute("backgroundColor",false);
	}	
}   
// ---------------------------------------------------
//    Funktion ReplaceStr
//    Eingesetzt zum ersetzen von Strings und teil-Strings in Ausgaben
//    z.B. In alerts bei doppel s (ß) ersetzen mit 'ss'
//   
//    Parameter:
//    sOrig     - Die original-Ausgabe als String
//    sMod      - der zu ersetzende Wert als String
//    rMod      - der Wert mit dem ersetzt werden soll als String
//    Return:   die modifizierte Ausgabe als String
// ------------------------------------------------
function ReplaceStr(sOrig,sMod,rMod)
    {
         var re;
         re = new RegExp(sMod);
         sOrig = sOrig.replace(re,rMod);
         return sOrig;
    }

// ---------------------------------------------------
//    Funktion htmlEncode
//    Eingesetzt zum Codieren und Decodieren von HTML-Format zu string
//    z.B. "Zur&uuml;ck" wird als "zurück" geschrieben.
//   
//    Parameter:
//    sString     - Das zu decodierende string
//    Return:   die modifizierte Ausgabe der Übergabe
// ------------------------------------------------  
function htmlEncode(sString)
    {
        arrDecode = new Array();
        arrEncode = new Array();
       
        arrDecode[0] = /\&shy\;/g;
        arrEncode[0] = "-";
        //>
        arrDecode[1] = /\&gt\;/g;
        arrEncode[1] = ">";        
        //<
        arrDecode[2] = /\&lt\;/g;
        arrEncode[2] = "<";
        //&
        arrDecode[3] = /\&amp\;/g;
        arrEncode[3] = "&";       
        //ä
        arrDecode[4] = /\&auml\;/g;        
        arrEncode[4] = "ä";          
        //ö
        arrDecode[5] = /\&ouml\;/g;
        arrEncode[5] = "ö";        
        //ü
        arrDecode[6] = /\&uuml\;/g;
        arrEncode[6] = "ü";         
        //Ä
        arrDecode[7] = /\&Auml\;/g;
        arrEncode[7] = "Ä"; 
        //Ö
        arrDecode[8] = /\&Ouml\;/g;
        arrEncode[8] = "Ö";        
        //Ü
        arrDecode[9] = /\&Uuml\;/g;
        arrEncode[9] = "Ü";         
        //€
        arrDecode[10] = /\&euro\;/g;
        arrEncode[10] = "€";         
        //û
        arrDecode[11] = /\&ucirc\;/g;
        arrEncode[11] = "û";        
        //ß
        arrDecode[12] = /\&szlig\;/g;
        arrEncode[12] = "ß";         
        //à
        arrDecode[13] = /\&agrave\;/g;
        arrEncode[13] = "à";         
        //á
        arrDecode[14] = /\&aacute\;/g;
        arrEncode[14] = "á";        
        //â
        arrDecode[15] = /\&acirc\;/g;
        arrEncode[15] = "â";         
        //ã
        arrDecode[16] = /\&atilde\;/g;
        arrEncode[16] = "ã";         
        //ç
        arrDecode[17] = /\&ccedil\;/g;
        arrEncode[17] = "ç";        
        //è
        arrDecode[18] = /\&egrave\;/g;
        arrEncode[18] = "è";         
        //é
        arrDecode[19] = /\&eacute\;/g;
        arrEncode[19] = "é"; 
        //ê
        arrDecode[20] = /\&ecirc\;/g;
        arrEncode[20] = "ê";        
        //ë
        arrDecode[21] = /\&euml\;/g;
        arrEncode[21] = "ë";         
        //ì
        arrDecode[22] = /\&igrave\;/g;
        arrEncode[22] = "ì";         
        //í
        arrDecode[23] = /\&iacute\;/g;
        arrEncode[23] = "í";        
        //î
        arrDecode[24] = /\&icirc\;/g;
        arrEncode[24] = "î";         
        //ï
        arrDecode[25] = /\&iuml\;/g;
        arrEncode[25] = "ï";         
        //ñ
        arrDecode[26] = /\&ntilde\;/g;
        arrEncode[26] = "ñ";        
        //ò
        arrDecode[27] = /\&ograve\;/g;
        arrEncode[27] = "ò";         
        //ó
        arrDecode[28] = /\&oacute\;/g;
        arrEncode[28] = "ó";         
        //ô
        arrDecode[29] = /\&icirc\;/g;
        arrEncode[29] = "ô";        
        //õ
        arrDecode[30] = /\&otilde\;/g;
        arrEncode[30] = "õ";         
        //ù
        arrDecode[31] = /\&ugrave\;/g;
        arrEncode[31] = "ù";       
        //ú
        arrDecode[32] = /\&uacute\;/g;
        arrEncode[32] = "ú";    
        //Spezialfall Hochkommas //"
        arrDecode[32] = /\"/i;
        arrEncode[32] = "/\"";  
        
        for(var i = 0; i < arrDecode.length; i++){
            sString = sString.replace(arrDecode[i],arrEncode[i]);    
        }
        return sString;
    }
    
// ---------------------------------------------------
//    Funktion htmlDecode
//    Eingesetzt zum Codieren und Decodieren von HTML-Format zu string
//    z.B. "zurück" wird als "Zur&uuml;ck" geschrieben.
//   
//    Parameter:
//    sString     - Das zu codierende string
//    Return:   die modifizierte Ausgabe der Übergabe
// ------------------------------------------------  
function htmlDecode(sString,bBackWards)
    {
        arrDecode = new Array();
        arrEncode = new Array();
       
        arrDecode[0] = '&shy;';
        arrEncode[0] = "-";
        //>
        arrDecode[1] = '&gt;';
        arrEncode[1] = ">";        
        //<
        arrDecode[2] = '&lt;';
        arrEncode[2] = "<";
        //&
        //arrDecode[3] = '&amp;';
        //arrEncode[3] = "&";       
        //ä
        arrDecode[4] = '&auml;';       
        arrEncode[4] = "ä";          
        //ö
        arrDecode[5] = '&ouml;';
        arrEncode[5] = "ö";        
        //ü
        arrDecode[6] = '&uuml;';
        arrEncode[6] = "ü";         
        //Ä
        arrDecode[7] = '&Auml;';
        arrEncode[7] = "Ä"; 
        //Ö
        arrDecode[8] = '&Ouml;';
        arrEncode[8] = "Ö";        
        //Ü
        arrDecode[9] = '&Uuml;';
        arrEncode[9] = "Ü";         
        //€
        arrDecode[10] = '&euro;';
        arrEncode[10] = "€";         
        //û
        arrDecode[11] = '&ucirc;';
        arrEncode[11] = "û";        
        //ß
        arrDecode[12] = '&szlig;';
        arrEncode[12] = "ß";         
        //à
        arrDecode[13] = '&agrave;';
        arrEncode[13] = "à";         
        //á
        arrDecode[14] = '&aacute;';
        arrEncode[14] = "á";        
        //â
        arrDecode[15] = '&acirc;';
        arrEncode[15] = "â";         
        //ã
        arrDecode[16] = '&atilde;';
        arrEncode[16] = "ã";         
        //ç
        arrDecode[17] = '&ccedil;';
        arrEncode[17] = "ç";        
        //è
        arrDecode[18] = '&egrave;';
        arrEncode[18] = "è";         
        //é
        arrDecode[19] = '&eacute;';
        arrEncode[19] = "é"; 
        //ê
        arrDecode[20] = '&ecirc;';
        arrEncode[20] = "ê";        
        //ë
        arrDecode[21] = '&euml;';
        arrEncode[21] = "ë";         
        //ì
        arrDecode[22] = '&igrave;';
        arrEncode[22] = "ì";         
        //í
        arrDecode[23] = '&iacute;';
        arrEncode[23] = "í";        
        //î
        arrDecode[24] = '&icirc;';
        arrEncode[24] = "î";         
        //ï
        arrDecode[25] = '&iuml;';
        arrEncode[25] = "ï";         
        //ñ
        arrDecode[26] = '&ntilde;';
        arrEncode[26] = "ñ";        
        //ò
        arrDecode[27] = '&ograve;';
        arrEncode[27] = "ò";         
        //ó
        arrDecode[28] = '&oacute;';
        arrEncode[28] = "ó";         
        //ô
        arrDecode[29] = '&icirc;';
        arrEncode[29] = "ô";        
        //õ
        arrDecode[30] = '&otilde;';
        arrEncode[30] = "õ";         
        //ù
        arrDecode[31] = '&ugrave;';
        arrEncode[31] = "ù";       
        //ú
        arrDecode[32] = '&uacute;';
        arrEncode[32] = "ú";    
        
        if(bBackWards)
        {
        	for(var i = 0; i < arrEncode.length; i++){
	            sString = sString.replace(arrEncode[i],arrDecode[i]);    
	        }
        }
        else
        {
	        for(var i = 0; i < arrEncode.length; i++){
	            sString = sString.replace(arrDecode[i],arrEncode[i]);    
	        }
        }
        return sString;
    }
    
// ---------------------------------------------------
//    Funktion toUpper
//    Setzt den übergebenen String in grossshreibweise,
//    und setzt diesen.   
//   
//    Parameter:
//    obj:   als HTML-Element dessen value gesetzt werden soll.
// ------------------------------------------------  
function toUpper(obj)
    {
        obj.value = obj.value.toUpperCase();
    }
    
// ---------------------------------------------------
//    Funktion print
//    Schreibt den übergebenen String in eine Alert-Fenster.
//    Ausgabehilfe.   
//   
//    Parameter:
//    str:  asl String welcher ausgegeben werden soll.
// ------------------------------------------------  
function print(str)
    {
        alert(str);
    }
    
// ---------------------------------------------------
//    Funktion info
//    Mit info gibt man Text in die statuszeile ab. Kann zu Kontrollen dienen,
//    Hilfe oder zu Abfragen. Ist nicht modal!
//   
//    Parameter:
//    str:  als String welcher ausgegeben werden soll.
// ------------------------------------------------  
function info(str)
    {
        status = str;
    }

    
// ---------------------------------------------------
//    Funktion doResetForm
//    Gedacht zum allgemeinen zurücksetzen von input felder.
//   
//    Parameter:
//    obj_frm   - Das Form-objekt
//    strPrefix - ein zweistelliger Präfix welcher die inputs definiert Beispiel(name="i_eingabe") --> i_ = prefix
//    Return:  kein Rueckgabewert
// ------------------------------------------------
function doResetForm(obj_frm,strPrefix)
    {
        for(var i = 0; i < obj_frm.length; i++)
        {
            if(typeof obj_frm == "undefined")
            {
                //Nichts
            }
            else
            {
                if(obj_frm[i].name.substring(0,strPrefix.length) == strPrefix)
                {
                    obj_frm[i].value = "";
                }
            }
        }
    }
  
  // ---------------------------------------------------
	//    Funktion newWindow
	//    Erzeugt ein neues Fenster oder Zweitfenster (PopUp)
	//    mit den übergebenen Parametern
	//    Parameter:
	//    x       - Die X-Position des neuen Fensters
	//    y       - Die Y-Position des neuen Fensters
	//    w       - Die Weite des neuen Fensters
	//    h       - Die Höhe des neuen Fensters
	//    bRes    - Ob die Grösse des neuen Fensters veränderbar ist
	//    bScroll - Ob das neue Fenster scrollen kann
	//    bStat   - Ob das neue Fenster eine Statusleiste besitzt
	//    sFileName - Den verweis welches das neue Fenster anzeigen soll.
	//    Return:  kein Rueckgabewert
	// ------------------------------------------------
  function newWindow(x,y,w,h,bRes,bScroll,bStat, sFileName)
  {
  	//1.Parameter = x	-> int
  	//2.Parameter = y -> int
  	//3.Parameter = width -> int
  	//4.Parameter = height -> int
  	//5.Parameter = resizable -> boolean (true = yes; false = no; empty = no);
  	//6.Parameter = Scrollbars  -> boolean (true = yes; false = no; empty = no);
  	//7.Parameter = Status -> boolean (true = yes; false = no; empty = no);
  	//8.Parameter = Verweispfad -> string
  	
  	var strValues = "";
  	var blnMinValues = false;
  	if(x > -1 && y > -1 && w > -1 && h > -1)
  	{
  		 strValues = 'width=' + w + ',height=' + h + ',left=' + x + ',top=' + y;
  		 blnMinValues = true;
  	}
  	if(bRes && blnMinValues)
  	{
  		strValues += ',resizable=yes';
  	}
  	if(bScroll && blnMinValues)
  	{
  		strValues += ',scrollbars=yes';
  	}
  	if(bStat && blnMinValues)
  	{
  			strValues += ',status=yes';
  	}
  	try{
  		window.open(sFileName,"", strValues);
  	} catch(e)
  	{
  			window.open("datei.html","");
  	}

}

	// ---------------------------------------------------
	//    Funktion isArray
	//		Prüft ob das übergebene Objekt in einem Array gespeichert wurde.
	//		Häufiger gebrauch ob z.B. <input type='text' name='i_test' value=''>
	//		das objekt i_test in einem Array ist oder nicht, also mehrmals in 
	//		der selben HTML-Form auftaucht.
	//    Parameter:
	//		Keine
	//    Return:  ein boolscher Wert
	// ---------------------------------------------------

	function isArray(obj)
	{
		if(typeof obj[0].length != "undefined")
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	// ---------------------------------------------------
	//    Funktion GruppeOeffnen
	//		Öffnet und schliesst einzelne TBODY's in einer table. 
	//		Braucht zur identifizierung welche TBODY zu schliessen bzw. zu öffnen ist die is namen dessen.
	//		Der Gruppenkopf sollte als id (irgendwas mit 4 Buchstaben + identifier welcher die Ganze gruppe hindurch gleich ist)
	//		benannt werden und der zu verschwindende Teil sollte
	//		auch. Bilder die den Status (zu/offen) anzeigen sollen, werden als Parameter übergeben.
	//		Empfohlen wird als Bilder id einen Namen in der selber Zusammenstellung wie die anderen elemente der Gruppe.
	//		Diese werden im Script auf die jeweils andere Situation gewechstelt.
	//    Parameter:
	//		groupName			- Der name der Gruppe welche geschlossen bzw geöffnet werden soll.
	//		imgName				- Die id des Bildes im default-status.
	//    Return:  kein Rückgabewert
	// ---------------------------------------------------
	
	function GruppeOeffnen(groupName, imgName)
	{
		tmpPadName = imgName;
    //alert("groupName = " + groupName + ";imgName = " +imgName);
    
    recCount = 0;
    displayRec = 0;
    
    viewTable = document.getElementById("titl"+groupName).parentNode;
    tbodyTags = viewTable.getElementsByTagName("table");
    numElts = tbodyTags.length;
    len = groupName.length;
    img = document.getElementById(imgName);
    srcPath = img.src;
    index = srcPath.lastIndexOf("/");
    imgName = srcPath.slice(index+1);
    if (imgName =='plus.gif')
    {
      fOpen = true;
      displayStr = "";//style.display = displayStr;
      img.src = '/img/minus.gif';
    }
    else
    {
      fOpen = false;
      displayStr = "none";
      img.src = '/img/plus.gif';
    }
    
    //Rekursionstiefe
    if(groupName.indexOf("_") > 0)//Nur solche loopen
    {
    	tmpGroupName = groupName;
    	while(tmpGroupName.indexOf("_") > 0)
    	{
    		tmpGroupName = tmpGroupName.substring(0,tmpGroupName.lastIndexOf("_")-1);
    		recCount++;
    	}
    }
    
    //padding
    //if(recCount > 1)
    //{
		//	objToPad = document.getElementById(tmpPadName.replace(/img/, "pad"));
		//	objToPad.width = recCount * 50;
    //}
    
    //alert("GroupName = " + groupName + "; Rekursionstiefe = " + recCount);
    
    //Loop durch alle tables
    for(var i=0;i<numElts;i++)
  	{	
      var childObj = tbodyTags[i];
      
      
      var groupIdLength = parseInt(childObj.id.slice(4).length);
      groupNameLength = parseInt((childObj.id.slice(4).substr(0,len)).length)+1;
      
     
    	if ( (childObj.id !=null)	&& (childObj.id.length > len +4) && (groupName == childObj.id.slice(4).substr(0,len)) && (groupNameLength >= groupIdLength) )
      {	
      	childObj.style.display = displayStr;
      }
      else
      {
      	if((!(groupNameLength >= groupIdLength)) && !fOpen && (childObj.id !=null)	&& (childObj.id.length > len +4) && (groupName == childObj.id.slice(4).substr(0,len)))//übergeordnete Gruppe
      	{
      		//Zumachen der Obergruppe inklusive aller untergeordneten Gruppen
      		if ( (childObj.id !=null)	&& (childObj.id.length > len +4) && (groupName == childObj.id.slice(4).substr(0,len)))
      		{
      			childObj.style.display = displayStr;
      		}
      	}
      	//Aufmachen der Obergruppe inklusive aller untergeordneten Gruppen
      	if((!(groupNameLength >= groupIdLength)) && fOpen && (childObj.id !=null)	&& (childObj.id.length > len +4) && (groupName == childObj.id.slice(4).substr(0,len)))//übergeordnete Gruppe
      	{
      		
      		if ( (childObj.id !=null)	&& (childObj.id.length > len +4) && (groupName == childObj.id.slice(4).substr(0,len)))
      		{
      			first = childObj.id.substr(childObj.id.length -2,1);
      			second = childObj.id.substr(childObj.id.length -1);
      			
      			if(!(first == "_" && second == "_"))
      			{
      				childObj.style.display = displayStr;
      				imgName = "img_" + childObj.id.substr(4);
      				img = document.getElementById(imgName);
					    index = img.src.lastIndexOf("/");
					    imgName = img.src.slice(index+1);
      				if (imgName =='minus.gif')
					    {
					    	img.src = '/img/plus.gif';
					    }
      			}
      		}
      	}
      }
    }
    return false;
	}
	
	// ---------------------------------------------------
	//    Funktion collapseAll
	//		Diese Funktion steht im Zusammenhang mit der Funktion "GruppeOeffnen".
	// 		collapseAll wird im onLoad-Tag aufgerufen und schliesst standartmässig die Struktur.
	//		Bedingt dass die Tabelle welche die TBODY-Tgas umschliesst eine id besitzt welche
	//		"globalTable" heisst. Die Bilder werden entsprechend dem Status geändert.
	//    Parameter:
	//		Keine Parameter
	//    Return:  kein Rückgabewert
	// ---------------------------------------------------
	
	function collapseAll()
	{
	  objBodys = document.getElementsByTagName("table");
	  for(var i = 0; i < objBodys.length; i++)
	  {
	  	if((objBodys[i].id.substring(0,4) == "tbod") || (objBodys[i].id.substring(0,4) == "foot"))
	  	{
	  		imgSuffix =  objBodys[i].id.substring(4,objBodys[i].id.length-1);
	  		img = document.getElementById("img_" + imgSuffix);
	  		img.src = '/img/plus.gif';
	  		
	  		objBodys[i].style.display = "none";
	  		
	  	}
	  }//endfor
	}
  // ---------------------------------------------------
//    Funktion checkIfNum
//    Eingesetzt zur Kontrolle ob der eingegebene Wert, 
//    vollständig numerisch ist.   
//   
//    Parameter:
//    strEingabe:  - Der zu überprüfende Wert
//    Return:      ein boolscher Wert zur Weiterverarbeitung.
// ------------------------------------------------
function checkIfNum(strEingabe)
    {
        var nur_das ="0123456789.,";
        var bReturn = false;
        for (var i = 0; i < strEingabe.length; i++)
        {   
            if (nur_das.indexOf(strEingabe.charAt(i))<0 )
            {
                bReturn = false;
                break;
            }
            else
            {
                bReturn = true;
            }
        }
        if(!bReturn)
        {
            alert('Eingabe ist keine Zahl.');


        }
        return bReturn;
    }
    
// ---------------------------------------------------
//    Funktion checkIfCurrency
//    Eingesetzt zur Kontrolle ob der eingegebene Wert, 
//    dem Muster eines Preises entspricht.   
//   
//    Parameter:
//    strPreis:  - Der zu überprüfende Wert
//    Return:      ein boolscher Wert zur Weiterverarbeitung.
// ------------------------------------------------
function checkIfCurrency(strPreis)
    {
        var fehler = 'Währungsformattierung nicht korrekt!';
        var anzahlPunkte = 0;
        var bReturn = false;
        var nachKomma = "";
        var temp = strPreis;
        strPreis = ReplaceStr(strPreis,",",".");
        if(checkIfNum(strPreis))
        {
            if(strPreis.indexOf('.') > -1)
            {
                nachKomma = strPreis.substring(strPreis.indexOf('.')+1,strPreis.length);
            }
            while(temp.indexOf('.') > -1)
            {
                temp = temp.substring(temp.indexOf('.')+1,temp.length);
                anzahlPunkte++;
            }
            if(anzahlPunkte > 1){
                alert(fehler);
                bReturn = false;
            }
            else
            {
                bReturn = true;
            }
            if(nachKomma.length > 2)
            {
                alert(fehler);
                bReturn = false;
            }
            if(strPreis.indexOf('.') == 0)
            {
                strPreis = "0" + strPreis;
            }
            if(strPreis.indexOf('.') == strPreis.length-1)
            {
                strPreis = strPreis + "00";
            }
            if(nachKomma.length == 1)
            {
                strPreis = strPreis + "0";
            }
        }
        //Man kann auch den korrigierten Preis zurückgeben. 
        return bReturn;
    }
    // ---------------------------------------------------
//    Funktion checkWeight
//    Diese Funktion überprüft den übergebenen Parameter
//    ob dieser als Gewichtsangabe zulässig ist. Ein boolscher Wert
//    gibt an ob in Kilo oder in Gramm geprüft wird (Punkte und Nachkommaszellen).
//    Die Kiloprüfung ist auf drei Nachkommastellen genau.
//   
//    Parameter:
//    nWeight:  als Wert der zu überprüfen ist
//    bKilo:    als boolscher Wert ob Kilo erlaubt sind.
// ------------------------------------------------ 
function checkWeight(nWeight, isKilo)
    {
        var nur_das;
        var bReturn = false;
        var nachKomma = " ";
        var trennzeichen = -1;
        if(isKilo)
        {
            nur_das ="0123456789.,";
        }
        else
        {
            nur_das ="0123456789";    
        }
        for (var i = 0; i < nWeight.length; i++)
        {   
            if (nur_das.indexOf(nWeight.charAt(i))<0 )
            {
                bReturn = false;
                break;
            }
            else
            {
                bReturn = true;
            }
        }
        if(isKilo && bReturn)
        {
            if((nWeight.indexOf('.') > -1))
            {
                nachKomma = nWeight.substring(nWeight.indexOf('.')+1,nWeight.length);
                trennzeichen = nWeight.indexOf('.');
            } 
            if((nWeight.indexOf(',') > -1))
            {
                nachKomma = nWeight.substring(nWeight.indexOf(',')+1,nWeight.length);
                trennzeichen = nWeight.indexOf(',');
            }    
            if(nachKomma.length > 3 || nachKomma.length < 0 || nWeight.lastIndexOf('.') > trennzeichen || nWeight.lastIndexOf(',') > trennzeichen ||
                nWeight.lastIndexOf('.') == nWeight.length)
            {
                bReturn = false;  
            }
        }
        if(!bReturn)
        {
            alert('Gewichtsangabe überprüfen!');
        }
        return bReturn;
    }
    // ---------------------------------------------------
//    Funktion checkSpezZeichen
//    Kontrolliert dass beim übergebenen Objekt die definierten
//		Zeichen nicht vorkommen.
//    Parameter:
//    obj     - Das input-Objekt
//    outPut  - Die Fehlerausgabe (optional)
//    Return:  ob ein Spezialzeichen enthalten ist.
// ------------------------------------------------
function checkSpezZeichen(obj, outPut)
      {
      	strOfValues = "\"&<>Çç%&/()=?`~´¢|¬§°¦éà£è!{}[]ß";
      	bFound = false;
      	for(var i = 0; i < strOfValues.length; i++)
      	{
      		if(obj.value.indexOf(strOfValues.charAt(i)) > -1)

      		{
      			bFound = true;
      		}
      	}
      	if(bFound)

      	{
      		alert(outPut + "(" + strOfValues + ")");

      	}
      	return bFound;
      }
    
<!-- /OS-IGNORE -->
