function textfieldValidate(objectName, errorName, validationType, obligatory, validation) {
	object = document.getElementById(objectName);
	objectError = document.getElementById(errorName);

	if (object.value == "") {
		if (obligatory) {
			objectError.style.display = "block";
		} else {
			objectError.style.display = "none";
			return true;
		}
	} else {
		if (valueValidate(validationType, object.value)) {
			objectError.style.display = "none";
			return true;
		} else {
			objectError.style.display = "block";
		}
	}

	if (validation) {
		object.focus();
	}

	return false;
}

function valueValidate(validationType, value) {

	switch (validationType) {
		case "number": {
			return isNumber(value);
		} case "positiveWithZero": {
			return isPositiveWithZero(value);
		} case "positiveWithoutZero": {
			return isPositiveWithoutZero(value);
		} case "decimal": {
			return isDecimal(value);
		} case "decimalPositiveWithZero": {
			return isDecimalPositiveWithZero(value);
		} case "decimalPositiveWithoutZero": {
			return isDecimalPositiveWithoutZero(value);
		} case "mail": {
			return isMail(value);
		}  case "password": {
			return isPassword(value);
		} default: {
			return true;
		}
	}
}

function isPassword(text) {

	if (text.length < 6) {
		return false;
	} else {
		for (i = 0; i < text.length; i++) {
			character = text.charAt(i);
			if(character < "0" || (character > "9" && character < "A") || (character > "Z" && character < "a") || character > "z") {
				return false;
			}
		}
	}

	return true;
}

function isNumber(number) {

	var character = number.charAt(0);
	if((character < "0" || character > "9") && character != "-") {
		return false;
	}

	for (i = 1; i < number.length; i++) {
		character = number.charAt(i);
		if(character < "0" || character > "9") {
			return false;
		}
	}

	return true;
}

function isPositiveWithZero(number) {

	for (i = 0; i < number.length; i++) {
		character = number.charAt(i);
		if(character < "0" || character > "9") {
			return false;
		}
	}

	return true;
}

function isPositiveWithoutZero(number) {

	for (i = 0; i < number.length; i++) {
		character = number.charAt(i);
		if(character < "0" || character > "9") {
			return false;
		}
	}

	number = parseInt(number, 10);
	if (number == 0) {
		return false;
	}

	return true;
}

function isDecimal(number) {

	character = number.charAt(0);
	if((character < "0" || character > "9") && character != "-") {
		return false;
	}

	var point = false;
	for (i = 1; i < number.length; i++) {
		character = number.charAt(i);
		if((character < "0" || character > "9")) {
			if (character == "." && point == false) {
				point = true;
			} else {
				return false;
			}
		}
	}

	return true;
}

function isDecimalPositiveWithZero(number) {

	point = false;
	for (i = 0; i < number.length; i++) {
		character = number.charAt(i);
		if(character < "0" || character > "9") {
			if (character == "." && point == false) {
				point = true;
			} else {
				return false;
			}
		}
	}

	return true;
}

function isDecimalPositiveWithoutZero(number) {

	point = false;
	for (i = 0; i < number.length; i++) {
		character = number.charAt(i);
		if(character < "0" || character > "9") {
			if (character == "." && point == false) {
				point = true;
			} else {
				return false;
			}
		}
	}

	number = parseFloat(number);
	if (number == 0) {
		return false;
	}

	return true;
}

function isMail(mail) {
	if (mail.indexOf(" ") != -1) {
		return false;
	}

	mailSplit = mail.split("@");
	if (mailSplit.length != 2 || mailSplit[0] == "" || mailSplit[1] == "") {
		return false;
	}

	mailSplit = mailSplit[1].split(".");
	if (mailSplit.length > 1) {
		for (i = 0; i < mailSplit.length; i++) {
			if (mailSplit[i] == "") {
				return false;
			}
		}
	} else {
		return false;
	}

	return true;
}

function textareaValidate(objectName, errorName, obligatory, validation) {
	object = document.getElementById(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory && object.value == "") {
		objectError.style.display = "block";

		if (validation) {
			object.focus();
		}

		return false;
	} else {
		objectError.style.display = "none";
		return true;
	}
}

function comboboxValidate(objectName, errorName, obligatory, titleValue, validation) {
	object = document.getElementById(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory && object.value == titleValue) {
		objectError.style.display = "block";

		if (validation) {
			object.focus();
		}

		return false;
	} else {
		objectError.style.display = "none";
		return true;
	}
}

function multipleListValidate(objectName, errorName, obligatory, validation) {
	objectAll = document.getElementById(objectName + "All");
	object = document.getElementById(objectName + "[]");
	objectError = document.getElementById(errorName);

	if (obligatory && object.options.length == 0) {
		objectError.style.display = "block";

		if (validation) {
			object.focus();
		}

		return false;
	} else {
		for (i = 0; i < object.options.length; i++) {
			object.options[i].selected = true;
		}
		
		objectError.style.display = "none";
		return true;
	}
}

function checkboxValidate(objectName, errorName, obligatory, validation) {
	object = document.getElementById(objectName);
	objectArr = document.getElementsByName(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory) {
		for (var i = 0; i < objectArr.length; i++) {
			if (objectArr[i].checked == true) {
				objectError.style.display = "none";
				return true;
			}
		}
	} else {
		objectError.style.display = "none";
		return true;
	}

	objectError.style.display = "block";

	if (validation) {
		object.focus();
	}

	return false;
}

function radiobuttonValidate(objectName, errorName, obligatory, validation) {
	object = document.getElementById(objectName);
	objectArr = document.getElementsByName(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory) {
		for (var i = 0; i < objectArr.length; i++) {
			if (objectArr[i].checked == true) {
				objectError.style.display = "none";
				return true;
			}
		}
	} else {
		objectError.style.display = "none";
		return true;
	}

	objectError.style.display = "block";

	if (validation) {
		object.focus();
	}

	return false;
}

function calendarValidate(objectName, errorName, obligatory, validation) {
	object = document.getElementById(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory && object.value == "") {
		objectError.style.display = "block";

		if (validation) {
			object.focus();
		}

		return false;
	} else {
		objectError.style.display = "none";
		return true;
	}
}

function filefieldValidate(objectName, errorName, obligatory, validation) {
	object = document.getElementById(objectName);
	objectError = document.getElementById(errorName);

	if (obligatory && object.value == "") {
		objectError.style.display = "block";

		if (validation) {
			object.focus();
		}

		return false;
	} else {
		objectError.style.display = "none";
		return true;
	}
}
