// validate.js

function validate() {
	var fields = validate.arguments;
	var errors = '';
	var list_number = 1;
	for(i=0;i<fields.length;i+=2) {
		object = get(fields[i]);
		// INVALID/NO OBJECT
		if(object == null) { 
			errors += list_number + '. ' + fields[i] + ' does not exist or is not a valid object.\n';
			list_number++;
		} else {
			validation = fields[i+1];
			// REQUIRED
			if(validation.indexOf('Req') != -1) {
				if(object.value.length < 1) {
					errors += list_number + '. ' + object.title + ' is a required field.\n';
					list_number++;
				}
			} // EO.REQUIRED
			// isEmail
			if(validation.indexOf('isEmail') != -1) {
				if(!object.value.match(/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)) {
					errors += list_number + '. ' + object.title + ' must contain a valid email address.\n';
					list_number++;
				}
			} // EO.isEmail
			// isNum
			if(validation.indexOf('isNum') != -1) {
				if(isNaN(object.value)) {
					errors += list_number + '. ' + object.title + ' must contain a number (no spaces.)\n';
					list_number++;
				}
			} // EO.isNum
			// inRange
			if(validation.indexOf('inRange') != -1) {
				var start, end, values, range;
				start = validation.indexOf('inRange') + 8;
				end = validation.indexOf(')',start);
				values = validation.substring(start,end);
				range = values.split(',');
				if((parseFloat(object.value) < range[0]) || (parseFloat(object.value) > range[1])) {
					errors += list_number + '. ' + object.title + ' must be a number between ' + range[0] + ' and ' + range[1] + ' (no spaces.)\n';
					list_number++;
				}
			} // EO.inRange
		} // EO.INVALID/NO OBJECT
	}
	if(errors != '') {
		alert('Your form has the following errors:\n\n' + errors);
		return false;
	} else {
		return true;
	}
}

function get(element_id) {
	return document.getElementById(element_id);
}