
function validator() {
	this.message = "";
}

function hasError() {
	if (this.message.length > 0)
		return true;
	else
		return false;
}

function insertError(message) {
	this.message = this.message + message;
}

function validateEmail(name, text, required) {
	var message = this.message;

	if (text == "" && required == true)
		message = message + "- " + name + " is required.<br>";
	else if (/^[^@ ]+@[^@ ]+\.[^@ \.]+$/.test(text) == false)
		message = message + "- " + name + " is not a valid email address.<br>";
		
	this.message = message;
}

function validateNumber(name, text, required) {
	var message = this.message;
	
	if (text == "" && required == true)
		message = message + "- " + name + " is required.<br>";
	else if (text == "" && required == false) 
		return;
	else if (/^\d+(.\d+)?$/.test(text) == false)
		message = message + "- " + name + " should be entered in numbers only: no decimals, punctuation or text.<br>";
	
	this.message = message;
}

function validateCurrency(name, text, required) {
	var message = this.message;
	
	if (text == "" && required == true)
		message = message + "- " + name + " is required.<br>";
	else if (text == "" && required == false) 
		return;
	else if (/^\d+(.\d\d?)?$/.test(text) == false)
		message = message + "- " + name + " is not a valid currency value.<br>";
	
	this.message = message;
}

function validateText(name, text, required, minchar, maxchar, type) {
	var message = this.message;

	if (text == "" && required == true) {
		message = message + "- " + name + " is required.<br>";
		this.message = message;
		return;
	}
		
	if (text == "" && required == false)
		return;
		
	else if (minchar != -1 && text.length < minchar)
		message = message + "- " + name + " is too short (min characters: " + minchar + ")<br>";
	else if (maxchar != -1 && text.length > maxchar)
		message = message + "- " + name + " is too long (max characters: " + maxchar + ")<br>";
	else if (type == "int") {
		if (/^[0-9]+$/.test(text) == false)
			message = message + "- " + name + "  should be entered in numbers only: no decimals, punctuation or text.<br>";
	}
	else if (type == "alpha") {
		if (/^[A-Za-z]+$/.test(text) == false)
			message = message + "- " + name + " should contain letters only.<br>";
	}
	else if (type == "alphanumeric") {
		if (/^[A-Za-z0-9_ ]+$/.test(text) == false)
			message = message + "- " + name + " should contain only letters or numbers.<br>";
	}
	
	this.message = message;
}

function getErrorMessage(message_heading) {
	if (this.hasError())
		return message_heading + this.message;
	else
		return "";
}

validator.prototype.validateNumber = validateNumber;
validator.prototype.validateText = validateText;
validator.prototype.validateEmail = validateEmail;
validator.prototype.validateCurrency = validateCurrency;
validator.prototype.hasError = hasError;
validator.prototype.getErrorMessage = getErrorMessage;
validator.prototype.insertError = insertError;
