// JavaScript Document

function applyErrorStyle(element, style) {
	switch(style) {
		case 'label':
			element.style.color 					= 'FF0000';
			break;
		default:
			element.style.backgroundColor = 'FFEEEE';
			element.style.borderColor 		= 'FF0000';
	}
}

function applyErrorStylesInForm(formFields) {
	var i, j, label, labels;
	var form;
	var formField;
	
	if(formFields.length) {
		form = getFormWithFields(formFields);
		if(form) {
			for(i=0; i<formFields.length; i++) {
			
				formField = getFormField(form, formFields[i]);
				switch(formField.type) {
					case 'checkbox':
					case 'radio':
						// Get all labels for the checkboxes/radiobuttons with this name
						for(j=0; j<form.length; j++) {
							if(form[j].type == formField.type && form[j].name.toLowerCase() == formFields[i].toLowerCase()) {
								labels = document.getElementsByTagName('label');
								for(label=0; label<labels.length; label++) {
									if(labels[label].htmlFor == form[j].id) {
										// Apply error style to label
										applyErrorStyle(labels[label], 'label');
									}
								}							
							}
						}
						break;
					default:
						// Apply error style to formfield
						applyErrorStyle(formField, 'normal');
				}
				
				
			}
			getFormField(form, formFields[0]).focus();
		}
	}
}

function getFormField(form, fieldName) {
	var i;
	for(i=0; i<form.length; i++) {
		if(form[i].name.toLowerCase() == fieldName.toLowerCase()) return form[i];
	}
	return null;
}

function getFormWithFields(formFields) {
	var formNr, fieldNr, i, foundFields;
	for(formNr=0; formNr<document.forms.length; formNr++) {
		foundFields = 0;
		
		for(i=0; i<formFields.length; i++) {					
			for(fieldNr=0; fieldNr<document.forms[formNr].length; fieldNr++) {
				if(document.forms[formNr][fieldNr].name.toLowerCase() == formFields[i].toLowerCase()) {
					foundFields++;
					break;
				}
			}						
		}
		
		if(foundFields == formFields.length) return document.forms[formNr];
	}								
}	

