/**
 * Javascript for contact form
 */
fields = new Array();
fields[1] = Array(
	'Feedback',
	'1',
	'.*',
	'textarea');
fields[2] = Array(
	'Name',
	'1',
	'.*',
	'text');
fields[3] = Array(
	'E-Mail',
	'0',
	'^[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$',
	'text');
var readBefore = false;
var borderBefore = "";

function checkAllFields() {
	var isOk = true;
	for (var field in fields) {
		if (!readBefore) {
			if (document.getElementsByName('contactFormField_' + field)[0]) {borderBefore = document.getElementsByName('contactFormField_' + field)[0].style.border;} else {borderBefore = '#000000';}
			readBefore = true;
		}

		var type = fields[field][3];
		if (type == 'text' || type == 'file' || type == 'password' || type == 'textarea') {
			value = document.getElementsByName('contactFormField_' + field)[0].value;
			if (value == "" && isRequiredNorm(fields[field][1], value)) {
				isOk = false;
				document.getElementsByName('contactFormField_' + field)[0].style.border = "red 1px solid";
			} else if (value != "" && !matchType(fields[field][2], value)) {
				isOk = false;
				document.getElementsByName('contactFormField_' + field)[0].style.border = "red 1px solid";
			} else {
				document.getElementsByName('contactFormField_' + field)[0].style.border = borderBefore;
			}
		} else if (type == 'checkbox') {
			if (!isRequiredCheckbox(fields[field][1], field)) {
				isOk = false;
			}
		} else if (type == 'checkboxGroup') {
			if (!isRequiredCheckBoxGroup(fields[field][1], field)) {
				isOk = false;
			}
		} else if (type == 'radio') {
			if (!isRequiredRadio(fields[field][1], field)) {
				isOk = false;
			}
		}
	}

	if (!isOk) {
		document.getElementById('contactFormError').style.display = "block";
    }
	return isOk;
}

function isRequiredNorm(required, value) {
	if (required == 1) {
		if (value == "") {
			return true;
		}
	}
	return false;
}

function matchType(pattern, value) {
	var reg = new RegExp(pattern);
	if (value.match(reg)) {
		return true;
	}
	return false;
}

function isRequiredCheckbox(required, field) {
	if (required == 1) {
		if (!document.getElementsByName('contactFormField_' + field)[0].checked) {
			document.getElementsByName('contactFormField_' + field)[0].style.border = "red 1px solid";
			return false;
		}
	}
	document.getElementsByName('contactFormField_' + field)[0].style.border = borderBefore;
	return true;
}

function isRequiredCheckBoxGroup(required, field) {
	if (required == true) {
		var boxes = document.getElementsByName('contactFormField_' + field + '[]');
		var checked = false;
		for (var i = 0; i < boxes.length; i++) {
 			if (boxes[i].checked) {
				checked = true;
			}
		}
		if (checked) {
			setListBorder('contactFormField_' + field + '[]', borderBefore);
			return true;
		} else {
			setListBorder('contactFormField_' + field + '[]', '1px red solid');
			return false;
		}
	} else {
		return true;
	}
}

function isRequiredRadio(required, field) {
	if (required == 1) {
		var buttons = document.getElementsByName('contactFormField_' + field);
		var checked = false;
		for (var i = 0; i < buttons.length; i++) {
			if (buttons[i].checked) {
				checked = true;
			}
		}
		if (checked) {
			setListBorder('contactFormField_' + field, borderBefore);
			return true;
		} else {
			setListBorder('contactFormField_' + field, '1px red solid');
			return false;
		}
	} else {
		return true;
	}
}

function setListBorder(field, borderColor) {
	var boxes = document.getElementsByName(field);
	for (var i = 0; i < boxes.length; i++) {
		boxes[i].style.border = borderColor;
	}
}
