function sf_validate(form)
{	
	var form 		= eval('window.document.'+form);
	var count 		= form.length;
	var errors		= 0;
	var err_txt 	= '';
	var blank_set 	= false;
	var email_set	= false;
	var date_set	= false;
	var default_bdr = 'solid 1px #AAAAAA';
	var error_bdr	= 'solid 1px #FF0000';
	
	for(i=0;i<count;i++)
	{
		var element			= form[i];
		var req				= required_fields.toString().indexOf(element.name);
		
		/* exclude any hidden, submit, or reset elements */
		if(req != -1 && element.type != 'hidden' && element.type != 'submit' && element.type != 'reset' && element.disabled == false)
		{
			var e_value 	= element.value;
			var e_name		= element.name;
			var e_atsym 	= e_value.indexOf('@');
			var e_lstat 	= e_value.lastIndexOf('@');
			var e_dot		= e_value.indexOf('.');
			var bad_chars 	= new Array(',',';',':','/','\\','&','#','!','$','%','*','<','>','?');
			
			/* check if empty or the address2 field */
			if(e_value == '')
			{
				// change border to red on error
				element.style.border = error_bdr;
				if(!blank_set)
				{
					errors++;
					err_txt += 'Please make sure all enabled fields are filled in correctly.\n';
					blank_set = true;
				}
				continue;
			}
			// reset border on error fix or no error
			else element.style.border = default_bdr;
			
			/* check email addresses */
			if(e_name.indexOf('email') != -1)
			{
				/* CHECK IF CORRECTLY FORMATTED ----------- */
				// if no @ symbol  -OR-  more than one @ symbol  -OR-  no dot 
				if(e_atsym == -1 || (e_atsym != e_lstat) || e_dot == -1)
				{
					element.style.border = error_bdr;
					if(!email_set)
					{
						errors++;
						err_txt += 'Please check email address\n';
						email_set = true;
					}
				}
				else element.style.border = default_bdr;
				/* --------------------------------------- */
				
				/* CHECK IF VALID STRING FOR EMAIL ADDRESS ---- */				
				if(!email_set) // if still no errors  AKA  email is formatted correctly  ... check for bad characters
				{
					for(c=0;c<=bad_chars.length;c++) 
					{
						// if bad character found
						if(e_value.indexOf(bad_chars[c]) != -1)
						{	
							// change border color to red		
							element.style.border = error_bdr;
							errors++;
							err_txt += 'You have entered an invalid email address format\n';
							email_set = true;
						}
						else element.style.border = default_bdr;
					}
				}
				/* --------------------------------------------- */
				continue;
			}
			
			/* CHECK DATES --------------- */
			if(e_name.indexOf('date') != -1)
			{
				// if date is not formatted correctly (mm/dd/yyyy or more than 10 chars)
				if(e_value.indexOf('/') != 2 || e_value.lastIndexOf('/') != 5 || e_value.length != 10)
				{
					// change border to red
					element.style.border = error_bdr;
					if(!date_set)
					{
						errors++;
						err_txt += 'Please format date: mm/dd/yyyy\n';
						date_set = true;
					}
				}
				
				// change border to default
				else element.style.border = default_bdr;
				continue;
			}
			/* --------------------------- */
		}
	}
	
	if(errors)
	{
		alert(err_txt);
		return false;
	}
	else return true;
}

function check_rem_count(){

	check_count = document.getElementById('rem_id_list').value.length;
	
	if(!check_count){
		alert('you must select at least one to remove');
		return false;
	}
	else return true;
}

function confirm_password(id)
{
	other_field 	= document.getElementById(id);
	conf_field 		= document.getElementById('confirm_'+id);
	if(other_field.value != conf_field.value) alert('Password Fields Do Not Match!');
}

function check_number_only(field_id)
{
	element 		= document.getElementById(field_id);
	valid_chars		= '0123456789.,/-+';
	
	for(i=0;i<element.value.length;i++)
	{
		ex_char = element.value.substring(i,i+1);
		if(valid_chars.indexOf(ex_char) == -1)
		{
			alert('Only Numbers Here');		
			element.value = '';
			element.style.border = 'solid 1px #F0F';
		}
		else element.style.border = '';
	}
}