//formfields to be checked grouped by type
var array_text_fields = new Array();
var array_emails = new Array();
var array_checkboxes = new Array();
var array_radio = new Array();
var array_password = new Array();
var array_textareas = new Array();
var array_selects = new Array();
var highlight_field = true;
var highlight_image = false;


function set_hightlight_images(img_normal, img_highlight)
{
	highlight_image = true;
	img_ok.src = img_normal;
	img_error.src = img_highlight;
}

function cleanarrays()
{
	array_text_fields = new Array();
	array_emails = new Array();
	array_checkboxes = new Array();
	array_radio = new Array();
	array_password = new Array();
	array_textareas = new Array();
	array_selects = new Array();
}

function checkemail(string) {
	check = string.match(/\b(^(\S+@).+((\.de)|(\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);	
	
	if ((check == null)||(check == '')){
		return(false);
	} else {
		return(true);
	}
}

function field_highlight(ElementId)
{
	d = document.getElementById(ElementId);
	
	if (highlight_field == true) {
		 d.style.backgroundColor = "#ffaaaa";
	}
	if (highlight_image == true) {
		document.images['img_' + ElementId].src = img_error.src;
	}
}

function field_normal(ElementId)
{
//	alert(ElementId);
	d = document.getElementById(ElementId);	
	d.style.backgroundColor = "#ffffff";
	if (highlight_image == true) {
			document.images['img_' + ElementId].src = img_ok.src;
	}
}

function checkfields_dom(formname) {
	formvalid = true;
	
	//check textfields
	if (array_text_fields.length > 0) {
		for (i = 0; i < array_text_fields.length; i++) {
			if (document.forms[formname].elements[array_text_fields[i]].value == '') {				
				 field_highlight(array_text_fields[i]);
				 formvalid = false;
			} else {
				field_normal(array_text_fields[i]);				
			}
		}
	}
	//check textfields
	if (array_textareas.length > 0) {
		for (i = 0; i < array_textareas.length; i++) {
			if (document.forms[formname].elements[array_textareas[i]].value == '') {				
				 field_highlight(array_textareas[i]);				
				 formvalid = false;
			} else {
				field_normal(array_textareas[i]);
			}
		}
	}
	//check selects
	if (array_selects.length > 0) {
		for (i = 0; i < array_selects.length; i++) {
			if (document.forms[formname].elements[array_selects[i]].selectedIndex == -1) {				
				 field_highlight(array_selects[i]);
				 formvalid = false;
			} else {
				field_normal(array_selects[i]);
			}
		}
	}
	//check radios
	if (array_radio.length > 0) {
		for (i = 0; i < array_radio.length; i++) {
			radiolength = document.forms[formname].elements[array_radio[i]].length;
			is_checked = false;
			for (j = 0; j < radiolength; j++) {
				is_checked = document.forms[formname].elements[array_radio[i]][j].checked || is_checked;
			}
			if (!is_checked) {
				d = document.getElementById(array_radio[i] + '_' + (j+1));
				document.images['img_' + array_radio[i]].src = img_error.src;
				for (j = 0; j < radiolength; j++) {										
					d.style.borderStyle = "double";
					d.style.borderColor = "#ffaaaa";
				}
			} else {
				document.images['img_' + array_radio[i]].src = img_ok.src;
				for (j = 0; j < radiolength; j++) {
					d = document.getElementById(array_radio[i] + '_' + (j+1));
					d.style.borderStyle = "none";
					d.style.borderColor = "#ffffff";
				}
			}
		}
	}
	//check checkboxes
	if (array_checkboxes.length > 0) {
		for (i = 0; i < array_checkboxes.length; i++) {
			if (document.forms[formname].elements[array_checkboxes[i]].checked == false) {
				document.images['img_' + array_checkboxes[i]].src = img_error.src;
				d = document.getElementById(array_radio[i] + '_' + (j+1));
				d = document.getElementById(array_checkboxes[i]);
				d.style.borderStyle = "double";
				d.style.borderColor = "#ffaaaa";
				formvalid = false;
			} else {
				document.images['img_' + array_checkboxes[i]].src = img_ok.src;
				d = document.getElementById(array_checkboxes[i]);
				d.style.borderStyle = "none";
				d.style.borderColor = "#ffffff";
			}
		}
	}
	//check email-fields
	if (array_emails.length > 0) {
		for (i = 0; i < array_emails.length; i++) {			
			if (checkemail(document.forms[formname].elements[array_emails[i]].value) == false) {				
				field_highlight(array_emails[i]);
				formvalid = false;
			} else {				
				field_normal(array_emails[i]);
			}
		}
	}
	//check password-fields
	if (array_password.length > 0) {
		for (i = 0; i < array_password.length; i++) {
			if ((document.forms[formname].elements[array_password[i]].value == '')  || 
		(document.forms[formname].elements[array_password[i]].value != document.forms[formname].elements[array_password[i] + '2'].value)) {
				field_highlight(array_password[i]);
				field_highlight(array_password[i] + '2');
				formvalid = false;
			} else {
				field_normal(array_password[i]);
				field_normal(array_password[i] + '2');
			}
		}
	}
	
	if (formvalid == true) {
		return(true);
	} else {
		
		return(false);
	}
}

function checkfields_ns4(formname) {
	formvalid = true;
	
	//check textfields
	for (i = 0; i < array_text_fields.length; i++) {
		if (document.forms[formname].elements[array_text_fields[i]].value == '') {
			 document.forms[formname].elements[array_text_fields[i]].focus();
			
			 return(false);
		}
	}
	
	//check radios
	for (i = 0; i < array_radio.length; i++) {
		radiolength = document.forms[formname].elements[array_radio[i]].length;
		is_checked = false;
		for (j = 0; j < radiolength; j++) {
			is_checked = document.forms[formname].elements[array_radio[i]][j].checked || is_checked;
		}
		if (!is_checked) {
			document.forms[formname].elements[array_radio[i]].focus();
			
			return(false);
		}
	}
	
	//check checkboxes
	for (i = 0; i < array_checkboxes.length; i++) {
		if (document.forms[formname].elements[array_checkboxes[i]].checked == false) {
			document.forms[formname].elements[array_checkboxes[i]].focus();
			
			return(false);
		}
	}
	
	//check email-fields
	for (i = 0; i < array_emails.length; i++) {
		if (checkemail(document.forms[formname].elements[array_emails[i]].value) == false) {
			document.forms[formname].elements[array_emails[i]].focus();
		
			return(false);
		}
	}
	
	//check password-fields
	for (i = 0; i < array_password.length; i++) {
		if ((document.forms[formname].elements[array_password[i]].value == '')  || 
		(document.forms[formname].elements[array_password[i]].value != document.forms[formname].elements[array_password[i] + '_repeat'].value)) {
			document.forms[formname].elements[array_password[i]].focus();
			
			return(false);
		}
	}
	
	
	if (formvalid) {
		return(true);
	} else {		
		return(false);
	}
}

function checkfields(formname) {	
	if (document.layers && !this.dom) {
		
		return(checkfields_ns4(formname));
	} else {
		
		return(checkfields_dom(formname));
	}
}