function computeTxtareaChars(element) {
	var currentValue = element.value;
	var max = element.getAttribute('maxlength');
	var chars = max - currentValue.length;
	if (chars > 0) {
		var text = '(es bleiben ' + chars+ ' Zeichen)';
		var em = document.getElementById('area_' + element.name);
		jQuery(em).html('<em>' + text + '</em>');
	}
	else {
		var text = currentValue.substring(0, max - 1);
		element.value = text;
	}
}

function clearOptionalFields(formId) {
	var inputs = jQuery('#' + formId + " :text");
	for (i = 0; i < inputs.length; i++) {
		var input = inputs[i];
		var label = jQuery(input).prev().text();
		if (label && (label == jQuery(input).val())) {
			jQuery(input).val(null);
		}
	}
}

function validateElements(element1, element2, actionname) {
    var url = actionname + '.action';
    var params = Form.serialize($(actionname)) + '&struts.enableJSONValidation=true&struts.validateOnly=true&fieldnamesToCheck=' + element1.name + ',' + element2.name;
    new Ajax.Request(
       url, 
       {
           method: 'post', 
           parameters: params,
           onComplete: postValidation
       }
    );
 }

function validateElement(element, actionname) {
	//clear previous validation success
	clearMyValidationSuccess($(actionname), element.name);
	//clear previous validation errors
	clearMyValidationErrors($(actionname),element.name);
    var url = actionname + '.action';
    var params = Form.serialize($(actionname)) + '&struts.enableJSONValidation=true&struts.validateOnly=true&fieldnamesToCheck=' + element.name;
    new Ajax.Request(
       url, 
       {
           method: 'post', 
           parameters: params,
           onComplete: postValidation
       }
    );
 }
 
 function postValidationElement(request, actionname) {
    var form = $(actionname);
	var fieldnamesToCheck = request.request.parameters['fieldnamesToCheck'];
    //clear previous validation success
	clearMyValidationSuccess(form, fieldnamesToCheck);
	//clear previous validation errors
	clearMyValidationErrors(form,fieldnamesToCheck);
    //get errors from response
    var text = request.responseText;
    var errorsObject = StrutsUtils.getValidationErrors(text);
	
    //show errors, if any
    if(errorsObject && errorsObject.fieldErrors) {
        StrutsUtils.showValidationErrors(form, errorsObject);
    }
    else {
		// set class to checked		
		var separateFieldnames = fieldnamesToCheck.split(",");
		for (var currentFieldnameIndex = 0; currentFieldnameIndex < separateFieldnames.length; currentFieldnameIndex++) {
			var separateFieldname = separateFieldnames[currentFieldnameIndex];
			var elements = document.getElementsByName(separateFieldname);
			var div = elements[0].parentNode;
			var currentClass = div.getAttribute("class");
			if (currentClass == null) {
				currentClass = div.getAttribute("className");
			}
			
			// remove error class
			var errorIndex = currentClass.indexOf("error");
			if (errorIndex > -1) {
				var prefix = currentClass.substring(0, errorIndex);
				var suffix = currentClass.substring(errorIndex + 5, currentClass.length);
				currentClass = prefix + suffix;
			}
			
			// add checked class
			if (currentClass.indexOf("checked") == -1) {
				div.setAttribute("class", currentClass + " checked");
				div.setAttribute("className", currentClass + " checked"); /*IE7*/
				
				var span = getChildElement(div, 'icon-msg');
				if (span != null) {
					span.innerHTML = "";
				}
			}

			var parentsClass = div.parentNode.getAttribute("class");
			if (parentsClass == null) {
				parentsClass = div.parentNode.getAttribute("className");
			}
			if (parentsClass.indexOf("holder") > -1 || parentsClass.indexOf("hold") > -1 || parentsClass.indexOf("row2") > -1) {
				// iterate all children and set checked class to parent
				var allChecked = true;
				var errorFound = false;
				
				for (i = 0; i < div.parentNode.childNodes.length; i++) {
					var child = div.parentNode.childNodes[i];
					try {
						var clazz = child.getAttribute("class");
						if (clazz == null) {
							clazz = child.getAttribute("className");
						}
						if (clazz != null) {
							if (clazz.indexOf("checked") == -1 && clazz!="icon-msg") {
								allChecked = false;
							}
							if (clazz.indexOf("error") > -1) {
								errorFound = true;
							}
						}
					}
					catch (ex) {
						// do nothing
					}
				}
				if (errorFound && parentsClass.indexOf("error") == -1) {
					//div.parentNode.setAttribute("class", parentsClass + " error");
					//div.parentNode.setAttribute("className", parentsClass + " error"); /*IE7*/
				}
				else {
					// remove error class
					var errorIndex = parentsClass.indexOf("error");
					if (errorIndex > -1) {
						var prefix = parentsClass.substring(0, errorIndex);
						var suffix = parentsClass.substring(errorIndex + 5, parentsClass.length);
						parentsClass = prefix + suffix;
					}
					
					// add checked
					if (parentsClass.indexOf("checked") == -1 && ((currentClass.indexOf("radios") > -1) || (currentClass.indexOf("textarea") > -1) || (currentClass.indexOf("size07") > -1))) {
						div.parentNode.setAttribute("class", parentsClass + " checked");
						div.parentNode.setAttribute("className", parentsClass + " checked"); /*IE7*/					
						var span = getChildElement(div.parentNode, 'icon-msg');
						if (span != null) {
							span.innerHTML = "";
						}					
					}
				}
			}
		}
    }
}

function getChildElement(div, clazz) {
	var a = div.children;
	for (var t = 0; t < a.length; t++) {
		var elementClass = getCurrentClass(a[t]);
		if (elementClass != null && elementClass.indexOf(clazz) > -1) {
			return a[t];
		}
	}
	return null;
}

function clearMyValidationErrors(form, fieldname) {
	clearMyValidationResults(form, fieldname, "error");
	var fieldnames = fieldname.split(",");
	for (i = 0; i < fieldnames.length; i++) {
		var separateFieldname = fieldnames[i];
		var elements = document.getElementsByName(separateFieldname);
		var span = getChildElement(elements[0].parentNode, 'icon-msg');
		if (span == null) {
			span = getChildElement(elements[0].parentNode.parentNode, 'icon-msg');
		}
		if (span != null) {
			span.innerHTML = "";
		}
	}
}

function clearMyValidationSuccess(form, fieldname) {
	clearMyValidationResults(form, fieldname, "checked");
}
 
function clearMyValidationResults(form, fieldname, result) {
	var fieldnames = fieldname.split(",");
	for (i = 0; i < fieldnames.length; i++) {
		var separateFieldname = fieldnames[i];
		var elements = document.getElementsByName(separateFieldname);
		var parent = elements[0].parentNode;

		// element above
		var currentClass = parent.getAttribute("class");
		if (currentClass == null) {
			currentClass = parent.getAttribute("className");
		}
		if (currentClass != null && currentClass.indexOf(result) > -1) {
			currentClass = currentClass.replace(result, "");	
			parent.setAttribute("class", currentClass);
			parent.setAttribute("className", currentClass); /*IE7*/
		}
		// parent element
		currentClass = parent.parentNode.getAttribute("class");
		if (currentClass == null) {
			currentClass = parent.parentNode.getAttribute("className");
		}
		if (currentClass != null && currentClass.indexOf(result) > -1) {
			currentClass = currentClass.replace(result, "");
			parent.parentNode.setAttribute("class", currentClass);
			parent.parentNode.setAttribute("className", currentClass); /*IE7*/
		}
	}
}

function getCurrentClass(element) {
	var currentClass = element.getAttribute("className");
	if (currentClass == null){ 
		currentClass = element.getAttribute("class");
	}
	if (currentClass == null){ 
		currentClass = element.className;
	}
	return currentClass;
}
		
function toggleSubmit() {
	jQuery(".reset").toggle();
	jQuery(".btn-hold .submit-holder").toggle();
	jQuery(".btn-hold .submit-holder_dis").toggle();
}

function displayMsg(result) {
	jQuery.post('/Unternehmen/de/ausgeblendet/fehlermeldungen_seite.jsp', {'errorcode':result}, function(data) {
	jQuery('#lightbox-error-msg').html(data)});
	jQuery('#link-lightbox-10').click();
}

function noLetters(element) {
	alert(element.value);
}
