// Formular Test (MUFC 2006)
// Alle Abtestungen geben bei NULL true zurueck
function ValidateEmail(field) {
	if (field.value != ""){
		return(/^([a-zA-Z0-9_\-\&\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i.test(field.value));
	} else { return(true);}
}

function ValidateDigits(field) {
	field.value = field.value.replace(/\s/g, "");
	return(/^\d*$/i.test(field.value));
}

function ValidateIntegers(field) {
	return(/^[-+]?\d*$/i.test(field.value));
}

function ValidateDecimal(field) {
	return(/^[-+]?[\d+(\.\d{1,2})?]*$/i.test(field.value));
}

function ValidatePhone(field) {
	if (field.value != ""){
		field.value = field.value.replace(/[\(\)\.\'\-,]/g, " ");
		return(/^[+]?\d+[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?$/i.test(field.value));
	} else { return(true);}
}

function ValidateCurrency(field) {
	return(/^[-+]?[\d+(\.\d{0,2})?]*$/i.test(field.value));
}

function ValidateRadio(field,fieldCount) {
	var isOK = false;
	for (i=0;i<fieldCount;i++){
		if (field[i].checked==true){
			isOK = true;
		}
	}
	return(isOK);
}

/**
 * @author KOES
 * @copyright insyma AG
 * @projectDescription insyma JS functionality to show dependent fields only on selectAuswahl
 * @version 1.0 
 * 
 */

var insymaShowHideForm = {
	config:{
		selectClass: "insymaShowHideForm",
		showFieldsClass: "showIt",
		formClass: "insymaShowHide",
		hideClass: "hide"
	},
	init:function() {
		var selectConfig = insymaShowHideForm.config;
		var selectContainer = insymaUtil.elmByClass("select", selectConfig.selectClass);
		var findHeadline = insymaUtil.elmByClass("h4", selectConfig.formClass)[0];
		var findList = insymaUtil.elmByClass("ul", selectConfig.formClass)[0];
		if (selectContainer.length > 0) {
			if (insymaUtil.cssjs("check", findHeadline, selectConfig.formClass)){
				findHeadline.style.display = "none";
			}
			if (insymaUtil.cssjs("check", findList, selectConfig.formClass)){
				findList.style.display = "none";
			}
			for (var y = 0; y < selectContainer.length; y++) {
				if (insymaUtil.cssjs("check", selectContainer[y].options[selectContainer[y].selectedIndex], selectConfig.showFieldsClass)){	
					if (insymaUtil.cssjs("check", findHeadline, selectConfig.formClass)){
						if (findHeadline.style.display == "none"){
							findHeadline.style.display = "block";
						}
					}
					if (insymaUtil.cssjs("check", findList, selectConfig.formClass)){
						if (findList.style.display == "none"){
							findList.style.display = "block";
						}
					}
				}
				selectContainer[y].onchange = function(){insymaShowHideForm.onSelectShowHide(this.options[this.selectedIndex]); return false;};
			}
		}
	},
	onSelectShowHide:function(selected){
		var selectConfig = insymaShowHideForm.config;
		var findHeadline = insymaUtil.elmByClass("h4", selectConfig.formClass)[0];
		var findList = insymaUtil.elmByClass("ul", selectConfig.formClass)[0];
		if (insymaUtil.cssjs("check", selected, selectConfig.showFieldsClass)){	
			if (insymaUtil.cssjs("check", findHeadline, selectConfig.formClass)){
				if (findHeadline.style.display == "none"){
					findHeadline.style.display = "block";
				}
			}
			if (insymaUtil.cssjs("check", findList, selectConfig.formClass)){
				if (findList.style.display == "none"){
					findList.style.display = "block";
				}
			}
		} else {
			if (insymaUtil.cssjs("check", findHeadline, selectConfig.formClass)){
				if (findHeadline.style.display == "block"){
					findHeadline.style.display = "none";
				}
			}
			if (insymaUtil.cssjs("check", findList, selectConfig.formClass)){
				if (findList.style.display == "block"){
					findList.style.display = "none";
				}
			}
		}
	}
};
insymaUtil.addEvent(window,'load',insymaShowHideForm.init,false);


/**
 * @author MURA
 * @copyright insyma AG
 * @projectDescription insyma JavaScript Library FormValidation Module
 * @version 1.0 
 * 
 */
var insymaFormValidation = {
	config:{
		// Alle Klassennamen für LI-Tags
		validationClasses: [
			"validate", 		// für normale Validierung
			"validateRadio", 	// für Radiobuttons
			"validateMail", 	// für E-Mail-Feld
			"validateDecimal", 	// für Dezimalzahlen
			"validatePhone", 	// für Telefonnummer
			"validateCurrency",	// für Währung
			"validateDigits", 	// für positive Ganzzahlen
			"validateIntegers",	// für positive und negative Ganzzahlen
			"validateThemen"	// für Themenliste
		],
		// Alle Validierungstexte
		validationTexts: [
			"Bitte füllen Sie das Feld [label] aus!",					// für normale Validierung
			"Bitte wählen Sie eines der Felder [label] aus!",			// für Radiobuttons
			"Bitte geben Sie eine korrekte E-Mail an!",					// für E-Mail-Feld
			"Das Feld [label] darf nur aus Dezimalzahlen bestehen!",	// für Dezimalzahlen
			"Bitte geben Sie eine korrekte Nummer an!",					// für Telefonnummer
			"Bitte geben Sie eine korrekte Währung an!",				// für Währung
			"Das Feld [label] darf nur aus positiven Zahlen bestehen!",	// für positive Ganzzahlen
			"Das Feld [label] darf nur aus Zahlen bestehen!",			// für positive und negative Ganzzahlen
			"Bitte wählen Sie eine Option aus!"							// für Themenliste
		],
		
		formValidationClass: "insymaFormValidation",
		validationTag: "strong",
		validationTagClass: "validation",
		validationTagSelClass: "validation select",
		validationFalseClass: "notvalid",
		
		ThanksUrlVar: "thanks",
		ThanksContainerId: "thanks",
		hideClass: "hide"
	},
	init:function() {
		var formConfig = insymaFormValidation.config;
		var formContainer = insymaUtil.elmByClass("div", formConfig.formValidationClass);
		//var forms = insymaUtil.elmByClass("form", formConfig.formValidationClass);
		for (var i = 0; i < formContainer.length; i++) {
			var conForm = formContainer[i].getElementsByTagName("form")[0];
			//forms[i].onsubmit = function() {
			if (typeof(conForm) != 'undefined' && conForm != null) {
				conForm.onsubmit = function(){
					var valElms = this.getElementsByTagName("li");
					var valid = true;
					for (var x = 0; x < valElms.length; x++) {
						var valFields = valElms[x].getElementsByTagName("input");
						var valSelects = valElms[x].getElementsByTagName("select");
						var valLabel = valElms[x].getElementsByTagName("label")[0];
						var valTags = valElms[x].getElementsByTagName(formConfig.validationTag);
						for (var z = 0; z < valTags.length; z++) {
							if (insymaUtil.cssjs("check", valTags[z], formConfig.validationTagClass)) {
								valElms[x].removeChild(valTags[z]);
							}
						}
						insymaUtil.cssjs("remove", valElms[x], formConfig.validationFalseClass);
						if (valFields.length == 0) {
							if (valSelects.length != 0) {
								if (insymaUtil.cssjs("check", valElms[x], formConfig.validationClasses[8])) {
									if (!insymaFormValidation.validateThemen(valSelects[0].options[valSelects[0].selectedIndex])) {
										var valText = formConfig.validationTexts[8];
										insymaUtil.createElm(formConfig.validationTag, {
											className: formConfig.validationTagSelClass
										}, valText, valElms[x]);
										insymaUtil.cssjs("add", valElms[x], formConfig.validationFalseClass);
										valid = false;
									}
								}
							} else {
								continue;
							}
						}
						else 
							if (valFields.length > 1 && insymaUtil.cssjs("check", valElms[x], formConfig.validationClasses[1])) {
								if (!insymaFormValidation.validateRadio(valFields, valFields.length)) {
									var valText = formConfig.validationTexts[1].replace("[label]", insymaUtil.getText(valLabel));
									insymaUtil.createElm(formConfig.validationTag, {
										className: formConfig.validationTagClass
									}, valText, valElms[x]);
									insymaUtil.cssjs("add", valElms[x], formConfig.validationFalseClass);
									valid = false;
								}
							}
							else {
								var valField = valFields[0];
								for (var y = 0; y < formConfig.validationClasses.length; y++) {
									if (insymaUtil.cssjs("check", valElms[x], formConfig.validationClasses[y])) {
										if (valField.value == "") {
											var valText = formConfig.validationTexts[0].replace("[label]", insymaUtil.getText(valLabel));
											insymaUtil.createElm(formConfig.validationTag, {
												className: formConfig.validationTagClass
											}, valText, valElms[x]);
											insymaUtil.cssjs("add", valElms[x], formConfig.validationFalseClass);
											valid = false;
											break;
										}
										else {
											var fieldValid = true;
											switch (y) {
												case 2:
													fieldValid = insymaFormValidation.validateEmail(valField);
													break;
												case 3:
													fieldValid = insymaFormValidation.validateDecimal(valField);
													break;
												case 4:
													fieldValid = insymaFormValidation.validatePhone(valField);
													break;
												case 5:
													fieldValid = insymaFormValidation.validateCurrency(valField);
													break;
												case 6:
													fieldValid = insymaFormValidation.validateDigits(valField);
													break;
												case 7:
													fieldValid = insymaFormValidation.validateIntegers(valField);
													break;
											}
											if (!fieldValid) {
												var valText = formConfig.validationTexts[y].replace("[label]", insymaUtil.getText(valLabel));
												insymaUtil.createElm(formConfig.validationTag, {
													className: formConfig.validationTagClass
												}, valText, valElms[x]);
												insymaUtil.cssjs("add", valElms[x], formConfig.validationFalseClass);
												valid = false;
											}
											break;
										}
									}
								}
							}
					}
					return valid;
				}
			}
		}
		if (insymaUtil.getQuerystring(insymaFormValidation.config.ThanksUrlVar) != false) {
			var thankMessage = document.getElementById(insymaFormValidation.config.ThanksContainerId)
			try {
				insymaUtil.cssjs("remove", thankMessage, insymaFormValidation.config.hideClass);				
			} catch(e){	
			}
		}
	},
	validateEmail:function(field) {
		if (field.value != ""){
			return(/^([a-zA-Z0-9_\-\&\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i.test(field.value));
		} else { 
			return true;
		}
	},
	validateDigits:function(field) {
		field.value = field.value.replace(/\s/g, "");
		return(/^\d*$/i.test(field.value));
	},

	validateIntegers:function(field) {
		return(/^[-+]?\d*$/i.test(field.value));
	},

	validateDecimal:function(field) {
		return(/^[-+]?[\d+(\.\d{1,2})?]*$/i.test(field.value));
	},

	validatePhone:function(field) {
		if (field.value != ""){
			field.value = field.value.replace(/[\(\)\.\'\-,]/g, " ");
			return(/^[+]?\d+[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?[\d+]?[\s]?$/i.test(field.value));
		} else { return(true);}
	},

	validateCurrency:function(field) {
		return(/^[-+]?[\d+(\.\d{0,2})?]*$/i.test(field.value));
	},

	validateRadio:function(field,fieldCount) {
		var isOK = false;
		for (i=0;i<fieldCount;i++){
			if (field[i].checked==true){
				isOK = true;
				break;
			}
		}
		return isOK;
	},
	
	
	validateThemen:function(selectedField) {
		var isOK = true;
		if (insymaUtil.cssjs("check",selectedField,"notvalid")) {
			isOK = false;
		}
		return isOK;
	}
};
insymaUtil.addEvent(window,'load',insymaFormValidation.init,false);
