////////////////////////////////////////////////////////////////////////////////
function validate (form_id) {
	var tags = Array("input", "textarea", "select");
	if (form_id.match(/_edit/)) {
		validate_inputs(form_id, tags, false);
		validate_inputs(form_id, tags, true);
	}else{
		validate_inputs(form_id, tags, true);
	}
}
////////////////////////////////////////////////////////////////////////////////
function validate_inputs (form_id, tags, onblur) {
	var form = $(form_id);
	if (form.getElementsByTagName) {
		var tags_length = tags.length;
		for (var y=0;y<tags_length;y++) {
			var inputs = form.getElementsByTagName(tags[y]);
			var inputs_length = inputs.length;
			for (var x=0;x<inputs_length;x++) {
				if (inputs[x].id && inputs[x].className) {
					if (onblur == true) {
						validate_input(form_id, inputs[x].id, true);
					}else{
						validate_input(form_id, inputs[x].id, false);
					}
				}
			}
		}
	}
} 
////////////////////////////////////////////////////////////////////////////////
function validate_input (form_id, id, onblur) {
	var input = $(id);
	if (!input) {debug("dkjskjdfksdf");return false;}
	if (onblur == true) {
		//reset_loaded(form_id);
		input.onblur = function() { 
			//reset_input_error(this.id);
			debug("validating input onblur :: "+id);
			var val_classes = parse_classes(this.className);
			for (var x=0;x<val_classes.length;x++) {
				validation_request(
					base_url+"validate/validate/", 
					"id="+this.id+"&data="+this.value+"&validate="+val_classes[x]+"", 
					this.id+"_error", 
					form_id
				);
			}
		}
	}else{
		debug("validating input straight :: "+id);
		var val_classes = parse_classes(input.className);
		for (var x=0;x<val_classes.length;x++) {
			validation_request(
				base_url+"validate/validate/", 
				"id="+input.id+"&data="+input.value+"&validate="+val_classes[x]+"", 
				input.id+"_error", 
				form_id
			);
		}
	}
}
////////////////////////////////////////////////////////////////////////////////
function debug (data) {
	return "";
	$("errors").innerHTML = data+"<br />"+$("errors").innerHTML;
}
////////////////////////////////////////////////////////////////////////////////
function parse_classes (classes) {
	var parsed = classes.split(/\s/);
	var out = Array();
	var tmp = 0;
	for (var x=0;x<parsed.length;x++) {
		if (parsed[x].match(/validate_/)) {
			out[tmp] = parsed[x];
			tmp++;
	}	}
	return out;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////