/*
Form validating function. Validation reporting modes:
0 - go through all required elements and show up a list of them
1 - shoot with the first empty element
*/
function validate(form, required, mode){
	if(!form)
		return false;
	if(!mode)
		mode = 1;
	if(required){
		var l = required.length;
		var i = 0, el, str = '', err, errcount = 0, regex_err = false, field_name;
		for(; i < l; i++){
			regex_err = false;
			el = form[required[i][0]];
			if(!el)
				continue;
			err = (el.type && (el.type == 'checkbox' || el.type == 'radio') && !el.checked) || ((el.type && (el.type == 'text' || el.type == 'password') || el.tagName == 'TEXTAREA' || el.tagName == 'SELECT') && el.value == '');
			//See if there is regexp specified
			if(!err && required[i][2] && !required[i][2].test(el.value))
				err = regex_err = true;
			if(err){
				field_name = (required[i][1] ? required[i][1] : required[i][0]);
				if(mode == 0){
					if(regex_err)
						alert(field_name + ' is entered in wrong format');
					else
						alert(field_name + ' is required');
					return false;
				}
				if(mode == 1){
					if(regex_err)
						str += '- ' + field_name + ' is entered in wrong format\n';
					else
						str += '- ' + field_name + ' is required\n';
					errcount++;
				}
			}
		}
		if(str != ''){
			str = 'The following error' + (errcount != 1 ? 's' : '') + ' occured:\n\n' + str;
			alert(str);
			return false;
		}
	}
	return true;
}