var fields = new Array(100);
var messages = new Array(100);
var forms = new Array(100);
var types = new Array(100);
var reqs = new Array(100);
var count = 0;

function addfield(field, message, form, type, required) {
	fields[count] = field;
	messages[count] = message;
	forms[count] = form;
	types[count] = type;
	reqs[count] = required;
	count++;
}

function checkfields(form) {
	for (i=0;i<count;i++) {
		if (reqs[i] == 'true') {
			if (fields[i].value == '' && forms[i] == form) {
				alert(messages[i]);
				return false;
			}
		}
		if (types[i] == 'date') {
			if (!checkdate(fields[i].value)) {
				alert(messages[i]);
				return false;
			}
		}
		
		if (types[i] == 'integer') {
			if (!checkinteger(fields[i].value)) {
				alert(messages[i]);
				return false;
			}
		}
	}
	return true;
}

function checkdate(object_value)
{
	if (object_value.length == 0)
		return true;

	isplit = object_value.indexOf('/');

	if (isplit == -1 || isplit == object_value.length)
		return false;

	sMonth = object_value.substring(0, isplit);

	if (sMonth.length == 0)
		return false;

	isplit = object_value.indexOf('/', isplit + 1);

	if (isplit == -1 || (isplit + 1 ) == object_value.length)
		return false;

	sDay = object_value.substring((sMonth.length + 1), isplit);

	if (sDay.length == 0)
		return false;

	sYear = object_value.substring(isplit + 1);

	if (!checkinteger(sMonth))
		return false;
	else if (!checkrange(sMonth, 1, 12))
		return false;
	else if (!checkinteger(sYear))
		return false;
	else if (!checkrange(sYear, 0, 9999))
		return false;
	else if (!checkinteger(sDay))
		return false;
	else if (!checkday(sYear, sMonth, sDay))
		return false;
	else
		return true;
}

function checkday(checkYear, checkMonth, checkDay)
{
	maxDay = 31;

	if (checkMonth == 4 || checkMonth == 6 ||
		checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else if (checkMonth == 2)
	{
		if (checkYear % 4 > 0)
			maxDay =28;
		else if (checkYear % 100 == 0 && checkYear % 400 > 0)
			maxDay = 28;
		else
			maxDay = 29;
	}

	return checkrange(checkDay, 1, maxDay);
}


function checkinteger(object_value)
{
	if (object_value.length == 0)
		return true;

	var decimal_format = ".";
	var check_char = object_value.indexOf(decimal_format);

	if (check_char == -1)
		return checknumber(object_value);
	else
		return false;
}

function checkrange(object_value, min_value, max_value)
{
	if (object_value.length == 0)
		return true;

	if (!checknumber(object_value))
		return false;
	else
		return (numberrange((eval(object_value)), min_value, max_value));

	return true;
}

function numberrange(object_value, min_value, max_value)
{
	if (min_value != null)
	{
		if (object_value < min_value)
			return false;
	}

	if (max_value != null)
	{
		if (object_value > max_value)
			return false;
	}

	return true;
}

function checknumber(object_value)
{
	if (object_value.length == 0)
		return true;

	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	check_char = start_format.indexOf(object_value.charAt(0));

	if (check_char == 1)
		decimal = true;
	else if (check_char < 1)
		return false;

	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
		}
		else if (trailing_blank)
			return false;
		else
			digits = true;
	}	

	return true
}