var pv_forms = new Array();
var pv_fields = new Array();
var pv_errormsgs = new Array();
var pv_validators = new Array();

function pv_addvalidatefield( form, field, errormsg, validator ) {
	pv_forms.push( form );
	pv_fields.push( field );
	pv_errormsgs.push( errormsg );
	pv_validators.push( validator );
}

function pv_addformfield( form, field, errormsg ) {
	pv_addvalidatefield( form, field, errormsg, pv_notnull );
}

function pv_addfield( field, errormsg ) {
	pv_addvalidatefield( null, field, errormsg, pv_notnull );
}

function pv_notnull( value ) {
	if( "" == value ) return false;
	else return true; 
}

function pv_validate( form ) {
	var errors = new Array();
	for( var i = 0; i < pv_fields.length; i++ ) {
		if( pv_forms[i] != null && pv_forms[i] != form.name )
			continue;
		var field = form.elements.namedItem( pv_fields[i] );
		if( null == field || !pv_validators[i]( field.value ) ) {
			errors.push( pv_errormsgs[i] );
		}
	}
	
	if( errors.length == 0 ) {
		return true;
	} else if( errors.length == 1 ) {
		alert( errors[0] );
		return false;
	} else {
		var compoundmsg = "There were a number of errors:\n";
		for( var i = 0; i < errors.length; i++ ) {
			compoundmsg += "\t- " + errors[i] + "\n";
		}
		alert( compoundmsg );
		return false;
	}
}