//	create_navigation_catalog
function getElement(f,eleName){
	argv = getElement.arguments;
	args = getElement.arguments.length;
	(args > 2) ? pos = argv[2] : pos = 0;
	
	r = 0;
	for(var i=0;i<f.elements.length;i++){
		if(f.elements[i].name.indexOf(eleName) >= 0){
			if(r == pos){
				return f.elements[i];
			}
			r++;
		}
	}
	return false;
}
//	create_navigation_catalog
function setElementValue(f,eleName,val){
	argv = setElementValue.arguments;
	args = setElementValue.arguments.length;
	(args > 3) ? pos = argv[3] : pos = 0;
	(args > 4) ? isStr = argv[4] : isStr = 0;
	ele = getElement(f,eleName,pos);
	if(!ele || ele == null) return false;
	valOri = val;
	if(!isStr || isStr == "0" || isStr == 0) val = f.elements[val];
	if(!val || val == null || isStr){
		ele.value = valOri;
		return true;
	}
	
	
	if(val.type == "checkbox"){
		if(val.checked) ele.value = val.value;
		else ele.value = 0;
	}else if(val[0].type == "radio"){
		for(var ii=0;ii<val.length;ii++){
			if(val[ii].checked){
				ele.value = val[ii].value;
			}
		}
	}else{
		ele.value = val.value;
	}
}
//	navigation_catalog
function setNodeStatus(node,status){
	nodeA = nodeHF.value.split(",");
	if(node < 0 || node > nodeA.length - 1) return false;
	nodeA[node] = status;
	nodeStr = "";
	for(var i=0;i<nodeA.length;i++){
		if(nodeStr.length < 1) nodeStr = nodeA[i];
		else nodeStr+= ","+nodeA[i];
	}
	nodeHF.value = nodeStr;
	return true;
}
//	create_navigation_catalog
function getElements(f,eleName){
	argv = getElements.arguments;
	args = getElements.arguments.length;
	
	r = 0; a = new Array();
	for(var i=0;i<f.elements.length;i++){
		if(f.elements[i].name.indexOf(eleName) >= 0){
			a[r] = f.elements[i];
			r++;
		}
	}
	return a;
}

function setFormlistValue(list,value){
	if(list.type != "select-one" && list.type != "select-multiple") return false;
	for(var i=0;i<list.options.length;i++){
		if(list.options[i].value == value){
			list.options[i].selected = true;
			return true;
		}
	}
	return false;
}


function getRadioValue(rb){
	if(rb.type == "radio"){
		if(rb.checked) return rb.value;
	}else{
		for(var i=0;i<rb.length;i++){
			if(rb[i].checked) return rb[i].value;
		}
	}
	return false;
}
function checkRadioValue(rb,value){
	if(rb.type == "radio"){
		rb.checked = true;
	}else{
		for(var i=0;i<rb.length;i++){
			if(rb[i].value == value) rb[i].checked = true;
		}
	}
}
function isRadioValueChecked(rb){
	if(rb.type == "radio"){
		if(rb.checked) return true;
	}else{
		for(var i=0;i<rb.length;i++){
			if(rb[i].checked) return true;
		}
	}
	return false;
}

function getFormlistValues(fl){
	if(list.type != "select-one" && list.type != "select-multiple") return false;
	str = "";
	for(var i=0;i<list.options.length;i++){
		if(list.options[i].selected){
			if(str.length < 1) str = list.options[i].value;
			else str+= ","+list.options[i].value;
		}
	}
	return str;
}

function toggleCheckbox(cb){
	if(cb.type != "checkbox") return false;
	if(cb.checked) cb.checked = false;
	else cb.checked = true;
}

function getValueArray(f,eleName){
	argv = getValueArray.arguments;
	args = getValueArray.arguments.length;
	(args > 2) ? onlyTrueValues = argv[2] : onlyTrueValues = false;

	eleArray = getElements(f,eleName);
	var valArray = new Array();
	ii = 0;
	for(var i=0;i<eleArray.length;i++){
		if(onlyTrueValues && (eleArray[i].value == 0 || eleArray[i].value == "0" || eleArray[i].value.length < 1)){
		}else{
			valArray[ii] = eleArray[i].value;
			ii++;
		}
	}
	return valArray;
}

function implode(del,a){
	if(del.length < 1) del = ",";
	if(a.length < 1) return false;
	str = "";
	for(var i=0;i<a.length;i++){
		if(str.length < 1) str = a[i]; else str+= del+""+a[i];
	}
	return str;
}
// source: http://droeppez.de/download/js-tut/js-tut/tutorial/position.html
function getElementPosition(element){
  var elem=element,tagname="",x=0,y=0;
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */
    if (tagname=="BODY") elem=0;
   	if (typeof(elem)=="object"){
      if (typeof(elem.offsetParent)=="object") elem=elem.offsetParent;
		}
  }
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function getBooleanValue(value){
		if(value.length < 1 || value == 0 || value == "0") return false;
		else return true;
}

function strReplace(str,findStr,replaceStr){
  var str = str.split(findStr);
  str = str.join(replaceStr);
  return str;
}

function setBgColor(obj,status,color){
	var argc = this.setBgColor.arguments.length;
	var argv = this.setBgColor.arguments;
	
	var blockColor = (argc > 3) ? argv[3].toUpperCase() : "";
	var doIt = (argc > 4) ? getBooleanValue(argv[4]) : false;
	
	var prop = new Property("backgroundColor","string");
	if(DOM || MS){
		curColor = rgbToHex(eval("obj.style.backgroundColor"));
	}else if(NS){
		curColor = rgbToHex(eval("obj.backgroundColor"));
	}
	//if(status == 1) alert("color="+curColor+"\nname="+obj.id);
	//if(status == 0) alert(curColor+" != "+blockColor);
	if((status == 0 || status == 1) && (curColor != blockColor || doIt)){
		prop.setValue(obj,color);
	}else if(status == 2){
		if(curColor == color) prop.setValue(obj,blockColor);
		else prop.setValue(obj,color);
	}
}

function rgbToHex(value){
    if(value.indexOf("rgb") >= 0){
        var rgbStr = value.slice(value.indexOf('(') + 1,value.indexOf(')'));
        var rgbValues = rgbStr.split(",");
        value = "#";
        var hexChars = "0123456789ABCDEF";
        for (var i = 0; i < 3; i++)
        {
            var v = rgbValues[i].valueOf();
            value += hexChars.charAt(v/16) + hexChars.charAt(v%16);
        }
    }
	return value.toUpperCase();
}

function addFormlistOptions(eleId,from,to){
	var argc = this.addFormlistOptions.arguments.length;
	var argv = this.addFormlistOptions.arguments;
	
	var defValue = (argc > 3) ? argv[3] : null;

	var ele = document.getElementById(eleId);
	var selectedIndex = -1;
	
	if(typeof(from) == "number" && typeof(to) == "number"){
		if(from > to){
			var temp = from;
			from = to; 
			to = temp;
		}
		var ii = 0;
		for(var i=from;i<=to;i++){
			var newEle = document.createElement("option");
			var attr = document.createAttribute("value");
			attr.nodeValue = i;
			newEle.setAttributeNode(attr);
			if(i == defValue){
				var attr = document.createAttribute("selected");
				newEle.setAttributeNode(attr);
				selectedIndex = ii;
			}
			newEle.appendChild(document.createTextNode(i));
			ele.appendChild(newEle);
			ii++;
		}
		if(document.forms[0]){
			var obj = eval("document.forms[0]."+eleId);
			if(obj) obj.selectedIndex = selectedIndex;
		}
	}
	if(typeof(from) == "string" && typeof(to) == "string"){
		from = from.split(",");
		if(to.length < 1) to = from; else to = to.split(",");
	}
	if(typeof(from) == "object" && typeof(to) == "object"){
		if(to.length < from.length){
			for(var i=to.length;i<from.length;i++) to[i] = from[i];
		}
		for(var i=0;i<from.length;i++){
			var newEle = document.createElement("option");
			var attr = document.createAttribute("value");
			attr.nodeValue = from[i];
			newEle.setAttributeNode(attr);
			if(from[i] == defValue){
				var attr = document.createAttribute("selected");
				newEle.setAttributeNode(attr);
				selectedIndex = i;
			}
			newEle.appendChild(document.createTextNode(to[i]));
			ele.appendChild(newEle);
		}
		if(document.forms[0]){
			var obj = eval("document.forms[0]."+eleId);
			if(obj) obj.selectedIndex = selectedIndex;
		}
	}
}

function removeElementFrom(fromEleId,eleId){
	var argc = this.removeElementFrom.arguments.length;
	var argv = this.removeElementFrom.arguments;
	
	var placeHolder = (argc > 2) ? argv[2] : "";

	if(typeof(fromEleId) == "string") var fromEle = document.getElementById(fromEleId);
	else var fromEle = fromEleId;
	if(typeof(eleId) == "string") var ele = document.getElementById(eleId);
	else var ele = eleId;
	var removedEle = fromEle.removeChild(ele);
	
	if(placeHolder.length > 0){
		var dummy = document.createElement(placeHolder);
		var attr = document.createAttribute("id");
		attr.nodeValue = ele.getAttribute("id");
		dummy.setAttributeNode(attr);
		fromEle.appendChild(dummy);
	}
	
	return removedEle;
}

function setClass(eleId,status,className){
	var argc = this.setClass.arguments.length;
	var argv = this.setClass.arguments;
	
	var blockClass = (argc > 3) ? argv[3] : "";

	if(className.length < 1) return false;
	if(typeof(eleId) == "string") var ele = getElem("id",eleId,null);
	else if(typeof(eleId) == "object") var ele = eleId;
	else return false;
	if(typeof(ele) == "object"){
		//alert(ele.className+" != "+blockClass);
		if(status == 0 || status == 1){
			if(ele.className != blockClass) ele.className = className;
		}
		if(status == 2){
			if(ele.className == className) ele.className = blockClass;
			else ele.className = className;
		}
	}
}
function trim(str){
	str = str.replace(new RegExp("^[ ]+","g"),"");
	str = str.replace(new RegExp("[ ]+$","g"),"");
	return str;
}

function strip_tags(str){
	str = str.replace(new RegExp("</[a-zA-Z0-9]+>","g"),"");
	str = str.replace(new RegExp("<.*>","g"),"");
	return str;
}

function checkFormElements(f){	//	eles = string
	var argc = this.checkFormElements.arguments.length;
	var argv = this.checkFormElements.arguments;
	
	if(typeof(f) == "number" || typeof(f) == "string") f = document.forms[f];
	if(typeof(f) != "object") return false;
	var eles = (argc > 1) ? argv[1] : f.required.value;
	var eleParamDel = (argc > 2) ? argv[2] : "::";
	if(typeof(eles) != "string") return true;
	if(eles.length < 1) return true;
	eles = eles.split(",");
	str = "";
	flag = true;
	focusEle = "";
	for(var i=0;i<eles.length;i++){
		eleP = eles[i].split(eleParamDel);
		if(eleP.length < 1) continue;
		if(eleP.length < 2) eleP[1] = "string";
		if(eleP[1].length < 1) eleP[1] = "string";
		if(eleP.length < 3) eleP[2] = 1; else eleP[2] = parseInt(eleP[2]);
		if(isNaN(eleP[2])) eleP[2] = 1;
		ele = f[eleP[0]];
		if(typeof(ele) != "object") continue;
		eleName = eleP[0].replace(new RegExp("__","g")," ").replace(new RegExp("_","g"),"");
		if(eleP[1] == "string"){
			if(ele.value.length < eleP[2]){
				flag = false;
				if(eleP[2] == 1) str+="Bitte geben Sie einen gültigen Wert für "+eleName+" ein!\n";
				else  str+="Bitte geben Sie einen Wert mit mind. "+eleP[2]+" Zeichen für "+eleName+" ein!\n";
				if(typeof(focusEle) != "object") focusEle = ele;
			}
		}else if(eleP[1] == "email"){
			if(!checkEmail(ele) || ele.value.length < eleP[2]){
				flag = false;
				str+="Bitte geben Sie eine gültige E-Mailadresse für "+eleName+" ein!\n";
				if(typeof(focusEle) != "object") focusEle = ele;
			}
		}
	}
	if(!flag) alert(str);
	if(typeof(focusEle) == "object") focusEle.focus();
	return flag;
}


