	function CalculateRights(howmuch,selName,showfor) {
		var c = 0;
		var i = 1;
		while(i<=howmuch) {
			selObj = MM_findObj(selName+i);
			if (selObj.checked>0) {
				c = c+Math.pow(2,selObj.value);
			}
			i++;
		}
		
		selObj = MM_findObj(showfor);
		selObj.value=c;
	}
	
	function ResetSuchfeld(feld,initialValue)
	{
		if( !initialValue )
			initialValue = "Produktsuche";
		
		if (feld.value==initialValue) {
			feld.value='';
		}
	}
	
	function MM_jumpMenu(targ,selObj,restore){ //v3.0
		alert( 'MM_jumpMenu() aufgerufen :(' );
	
		eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"_<?php echo $rkat_id; ?>_changelang.htm'");
		if (restore)
			selObj.selectedIndex=0;
	}
	
	function openWindow(theURL,winName,features) { 
		window.open(theURL,winName,features);
	}
	
	function MM_findObj(n, d) { //v4.01
		var p,i,x;
		if(!d)
			d=document;
		if( (p=n.indexOf("?")) > 0 && parent.frames.length ) {
	    	d=parent.frames[n.substring(p+1)].document;
	    	n=n.substring(0,p);
		}

		if(!(x=d[n])&&d.all)
			x=d.all[n];
			
		for (i=0;!x&&i<d.forms.length;i++)
			x=d.forms[i][n];
			
		for(i=0;!x&&d.layers&&i<d.layers.length;i++)
			x=MM_findObj(n,d.layers[i].document);
			
		if(!x && d.getElementById)
			x=d.getElementById(n);
			
		return x;
	}
	
	function MM_jumpMenuGo(selName,targ,restore){ //v3.0
	  var selObj = MM_findObj(selName);
	   if (selObj) MM_jumpMenu(targ,selObj,restore);
	}
	
	function Checkthat(theQuestion) {
		 return(confirm(theQuestion));
	}
	
	function MarkThisRow(row,normalcolor) {
							
		if(row.style.backgroundColor==markcolor){
			row.style.backgroundColor=normalcolor;
		} else {
			row.style.backgroundColor=markcolor;
		}
								
	}
							
	function HoverThisRow(row,tcolor) {
		if( row.style.backgroundColor==markcolor) {
			row.style.backgroundColor=markcolor_mark;
		} else if(row.style.backgroundColor==markcolor_mark) {
			row.style.backgroundColor=markcolor;
		} else {
			row.style.backgroundColor=tcolor;
		}
	}
	
	function SetDisable(strDomID,boolDisabled) {
		var objDom;
		if( !( objDom=MM_findObj(strDomID) ) ) {
			alert("Element '"+strDomID+"' nicht bekannt");
			return false;
		}

		objDom.disabled = boolDisabled;

		return true;
	}

	function SetDisableFormElements(objDom,boolDisabled) {
		if( boolDisabled ) {
			return DisableFormElements(objDom);
		} else {
			return EnableFormElements(objDom);
		}
	}

	function DisableFormElements(objDom) {
		var arrTagNames = new Array('input','textarea','select');
		for( var a=0; a<arrTagNames.length; a++ ) {
			var arrElements = objDom.getElementsByTagName(arrTagNames[a]);
			if( arrElements.length ) {
				for( var b=0; b<arrElements.length; b++ ) {
					arrElements[b].disabled=true;
				}
			}
		}

		return true;
	}

	function EnableFormElements(objDom) {
		var arrTagNames = new Array('input','textarea','select');
		for( var a=0; a<arrTagNames.length; a++ ) {
			var arrElements = objDom.getElementsByTagName(arrTagNames[a]);
			if( arrElements.length ) {
				for( var b=0; b<arrElements.length; b++ ) {
					arrElements[b].disabled=false;
				}
			}
		}

		return true;
	}
	
	function openBrWindow(theURL,winName,features) {
		window.open(theURL,winName,features);
	}

	function AddClass(objElement,strClass) {
//		alert("AddClass '"+strClass+"' START: "+objElement.className);

		var strHasClass = objElement.className;
		
		var arrHasClass = strHasClass.split(" ");
		var intHasClassCnt = arrHasClass.length;
		var boolHasIt = false;
		if( intHasClassCnt ) {
			for( var i=0; i<intHasClassCnt; i++ ) {
				if( arrHasClass[i].toLowerCase() == strClass.toLowerCase() ) {
					boolHasIt = true;
				}
			}
		}
		if( !boolHasIt ) {
			objElement.className += " "+strClass;
		}
		
//		alert("AddClass '"+strClass+"' END: "+objElement.className);
		return true;
	}
	
	function HasClass(objElement,strClass) {
//		alert("AddClass '"+strClass+"' START: "+objElement.className);

		var strHasClass = objElement.className;
		
		var arrHasClass = strHasClass.split(" ");
		var intHasClassCnt = arrHasClass.length;
		var boolHasIt = false;
		if( intHasClassCnt ) {
			for( var i=0; i<intHasClassCnt; i++ ) {
				if( arrHasClass[i].toLowerCase() == strClass.toLowerCase() ) {
					boolHasIt = true;
				}
			}
		}

		return boolHasIt;
	}
	
	function RemoveClass(objElement,strClass) {
//		alert("RemoveClass '"+strClass+"' START: "+objElement.className);
		
		var strHasClass = objElement.className;
		
		var arrHasClass = strHasClass.split(" ");
		var intHasClassCnt = arrHasClass.length;
		if( intHasClassCnt ) {
			var arrNewClasses = new Array();
			for( var i=0; i<intHasClassCnt; i++ ) {
				if( arrHasClass[i].toLowerCase() != strClass.toLowerCase() ) {
					arrNewClasses[arrNewClasses.length] = arrHasClass[i];
				}
			}
			if( arrNewClasses.length )
				objElement.className = arrNewClasses.join(" ");
		}
		
//		alert("RemoveClass '"+strClass+"' END: "+objElement.className);
		return true;
	}

	function ReplaceClass( objDom, strAddClass, strRemoveClass, boolSearchInChilds) {
		if( boolSearchInChilds && !( objToReplace = GetFirstObjectWithClass(objDom,strRemoveClass) ) ) {
			alert("Kein Objekt mit der Klasse '"+strRemoveClass+"' gefunden");
			return false;
		} else if( !boolSearchInChilds ) {
			objToReplace = objDom;
		}
		
		AddClass(objToReplace,strAddClass);
		RemoveClass(objToReplace,strRemoveClass);
		
		return true;
	}
	
	function GetChildNode( objDom, strNodeName, boolSearchRecursive ) {
		if( objDom.hasChildNodes() ) {
			for(var i = 0; i < objDom.childNodes.length; i++) {
				objChild = objDom.childNodes[i];
				
				if( objChild.nodeName.toLowerCase() == strNodeName.toLowerCase() ) {
					return objChild;
				} else if( boolSearchRecursive ) {
					var objFoundInChild = GetChildNode( objChild, strNodeName, boolSearchRecursive );
					if( objFoundInChild ) {
						return objFoundInChild;
					}
				}
			}
		}
		
		return false;
	}

	function GetFirstObjectWithClass(objDom,strClassToFind) {
		if( HasClass(objDom,strClassToFind) ) {
			return objDom;
		}
		
		if( objDom.hasChildNodes() ) {
			arrChildNodes = objDom.childNodes;
			intLength = arrChildNodes.length;
			for(var i = 0; i < intLength; i++) {
				if( objFound = GetFirstObjectWithClass(arrChildNodes[i],strClassToFind) ) {
					return objFound;
				}
			}
		}
		
		return false;
		
	}
	
	function RandomString(intLength,boolCharSmall,boolCharBig,boolNumber,boolSymbols) {
		var keylist='';
		var temp='';
		
		if( boolCharSmall) keylist += 'abcdefghijkmnopqrstuvwxyz'; //bewusst ohne l (L)
		if( boolCharBig) keylist += 'ABCDEFGHJKLMNPQRSTUVWXYZ'; //ohne I (i), O (o)
		if( boolNumber) keylist += '23456789'; //ohne 1 (eins), 0 (null)
		if( boolSymbols) keylist += ',.-_:;#\'+*}][{!"§$%&/()=?<>|@';
		
		for (i=0;i<intLength;i++)
			temp += keylist.charAt(Math.floor(Math.random()*keylist.length));
		
		return temp;
	}
	
	function IsVisible( objDom ) {
		return (objDom.style.visibility!='hidden' && objDom.style.display!='none');
	}
	
	function MakeInVisible( objDom ) {
//		alert("MakeInVisible(): "+objDom.nodeName+" "+objDom.className);
		
		objDom.style.visibility = 'hidden';
		objDom.style.display = 'none';
		
		return true;		
	}
	
	function MakeVisible( objDom, strDisplayState ) {
//		alert("MakeVisible(): "+objDom.nodeName+" "+objDom.className);

		var strDefaultDisplayState = 'block';
		if( !strDisplayState )
			strDisplayState = strDefaultDisplayState;
		
		objDom.style.visibility = 'visible';
		if( objDom.style.display == 'none' ) {
			objDom.style.display = strDisplayState;
		}
		
		return true;
	}
	
	function MakeVisibleByArray( arrDomObjects, strDisplayState ) {
		if(arrDomObjects.length) {
			for(var i=0; i < arrDomObjects.length; i++ ) {
				MakeVisible(arrDomObjects[i],strDisplayState);
			}
		}
		
		return true;
	}
	
	function MakeInVisibleByArray( arrDomObjects, strDisplayState ) {
		if(arrDomObjects.length) {
			for(var i=0; i < arrDomObjects.length; i++ ) {
				MakeInVisible(arrDomObjects[i],strDisplayState);
			}
		}
		
		return true;
	}
	
	function FindChildElementsByDescriptionArray( arrDescriptions, objElement, boolSearchRecursive, arrReturn ) {
		if( typeof arrReturn != 'object' || !(arrReturn.length || arrReturn instanceof Array) ) {
//			alert("DRIN1 "+(typeof arrReturn) );
			var arrReturn = new Array();
		}
		
		//Globale Variable "arrDescriptions" siehe Listenpflege
		if( arrDescriptions && arrDescriptions.length
			&& objElement && objElement.childNodes && objElement.childNodes.length ) {
			
			for( var includeRunner=0; includeRunner < arrDescriptions.length; includeRunner++ ) {
				var objInclude = arrDescriptions[includeRunner];

				for( var childRunner=0; childRunner < objElement.childNodes.length; childRunner++ ) {
					var objChild = objElement.childNodes[childRunner];
					
					if( CheckElementFitsDescription( objInclude, objChild ) ) {
						arrReturn[arrReturn.length] = objChild;
//						alert("Bingo ["+includeRunner+"|"+childRunner+"]: "+objChild.nodeName+" "+objChild.className+": "+arrReturn.length+" | 0: "+arrReturn[0]+" | last: "+arrReturn[arrReturn.length-1]);
					} else if( boolSearchRecursive ) {
						FindChildElementsByDescriptionArray( arrDescriptions, objChild, boolSearchRecursive, arrReturn );
					}
					
					if( objInclude.intLimit && objInclude.intLimit > 0 && arrReturn.length >= objInclude.intLimit ) {
//						alert("LIMIT: "+objInclude.intLimit+" / COUNT: "+arrReturn.length);
						return arrReturn;
					}
				}
			}
		}
		
//		if( arrReturn.length ) {
//			alert("Return in FindChildElementsByDescriptionArray(): "+arrReturn.length+" ("+arrReturn+")");
//		}
		return arrReturn;
	}
	
	function CheckElementFitsDescription( objDescription, objElement ) {
//		alert("Untersuche Objekt ["+objElement.nodeName+"|"+objElement.className+"|"+objElement.getAttribute('id')+"] auf ["+objDescription.tag+"|"+objDescription.classname+"|"+objDescription.id+"]")
		
		if( objDescription.tag && objElement.nodeName.toLowerCase() != objDescription.tag.toLowerCase() ) {
			return false;
		}

		if( objDescription.classname && !HasClass(objElement,objDescription.classname) ) {
			return false;
		}
		
		if( objDescription.id && objElement.getAttribute('id') != objDescription.id ) {
			return false;
		}

//		alert("Gefundenes Objekt ["+objElement.nodeName+"|"+objElement.className+"|"+objElement.getAttribute('id')+"] für Suche nach ["+objDescription.tag+"|"+objDescription.classname+"|"+objDescription.id+"]")
		return true;	
	}
	
	function DEBUG_Out(mixVar,title) {
		alert(title+"\n\n"+DEBUG_Out_VarRunner(mixVar,""));
		return true;
	}
	
	function DEBUG_Out_VarRunner(mixVar,strIndent) {
		strOut="";
		if( typeof o == "function" ) {
			strOut += strIndent+"Function\n";
		} else if( mixVar.length || mixVar instanceof Array ) {
			strOut += strIndent+"Array {\n";
			for( var i=0; i<mixVar.length; i++ ) {
				strOut += strIndent+i+": "+DEBUG_Out_VarRunner(mixVar[i],strIndent+"    ")+"\n";
			}
			strOut += strIndent+"}\n";
		} else if( typeof mixVar == "object" ) {
			strOut += strIndent+"Object {\n";
			for( var property in mixVar ) {
				strOut += strIndent+"'"+property+"': "+DEBUG_Out_VarRunner(mixVar[property],strIndent+"    ")+"\n";
			}
			strOut += strIndent+"}\n";
		} else if( typeof mixVar == "number" ) {
			strOut += strIndent+mixVar+" (Number)\n";
		} else {
			strOut += strIndent+"'"+mixVar+"'"+" (String)\n";
		}
		
		return strOut;
	}
	
	function StrRepeat(strString,intCount) {
		strReturn="";
		for( var i=0; i<intCount; i++ ) {
			strReturn += strString;
		}
		
		return strReturn;
	}
	