// ---------- Form Functions.

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------ String Functions.

function form_stringTrim(val) {
	
	var left = 0;
	var right = val.length -1;
	
	while(left < val.length && val[left] == " ") {
		left++;
	}
	while(right > left && val[right] == " ") {
		right-=1;
	}
	
	return val.substring(left, right+1);
	
}

function form_stringToNumber(val) {
	
	var val = form_stringTrim(val);
	var val_arr = val.split("");
	var temp = "";
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < val_arr.length; i++) {
		
		for (a = 0; a < bad_character_arr.length; a++) {
			
			if (val_arr[i].toLowerCase().indexOf(bad_character_arr[a]) > -1) {
				bad_character_found = true;
				break;
			} else {
				bad_character_found = false;	
			}
			
		}
		
		if (bad_character_found == false) {
			temp = temp + '' + val_arr[i];
		}
		
	}
	
	return val = parseFloat(temp);
	
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Check Format Functions.

function form_checkFormat_null(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "<>/?;:'\"[{]}\\|`~!@#$%^&*()_=+";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_text(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "1234567890,<>/?;:'\"[{]}\\|`~!@#$%^&*()_=+";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_number(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_name(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "1234567890,<>/?;:'\"[{]}\\|`~!@#$%^&*()_=+";
	var bad_character_arr = bad_character_list.split("");
	
	var space_character_found = false;
	var space_character = " ";
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (val.toLowerCase().indexOf(space_character) > 0) {
		space_character_found = true;
	}
	
	if (space_character_found == true && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_email(obj) {
	
	var val = form_stringTrim(obj.value);
	var val_arr = val.split("");
	
	var at = "@";
	var dot = ".";
	
	var at_pos = val.indexOf(at);
	
	var dot_pos_first = val.indexOf(dot);
	var dot_pos_last = -1;
	
	var bad_character_found = false;
	var bad_character_list = "<>/?;:'\"[{]}\\|`~!#$%^&*()=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	var format_error = false;
	
	var count = 0;
	var position = 0;
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	for (i = 0; i < val_arr.length; i++) {
		
		if (val_arr[i] == at) {
			count = count + 1;
			if (count > 1) {
				format_error = true;
				break;
			}
		}
		
	}
	
	for (i = 0; i < val_arr.length; i++) {
		
		if (val_arr[i] == dot) {
			
			if ((i-1) == position && i > 1 || i == (at_pos-1) || i == (at_pos+1)) {
				format_error = true;
			}
			position = i;
			
		}
		
	}
	
	dot_pos_last = position;
	
	if (at_pos >= 1 && dot_pos_first >= 1 && (dot_pos_last - at_pos) >= 2 && (val.length - dot_pos_last) >= 3 && bad_character_found == false && format_error == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_phone(obj) {
	
	var val = form_stringTrim(obj.value);
	var val_arr = val.split("");
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*_=+";
	var bad_character_arr = bad_character_list.split("");
	
	var ok_character_list = "()- ";
	var ok_character_arr = ok_character_list.split("");
	
	var min_len = 10;
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	for (i = 0; i < ok_character_arr.length; i++) {
		
		for (a = 0; a < val_arr.length; a++) {
			
			if (val_arr[a] == ok_character_arr[i]) {
				min_len = min_len + 1;
			}
			
		}
		
	}
	
	if (val_arr.length >= min_len && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_address(obj) {
	
	var val = form_stringTrim(obj.value);
	var val_arr = val.split("");
	
	var bad_character_found = false;
	var bad_character_list = "<>/?;:'\"[{]}\\|`~!@#$%^&*()_=+";
	var bad_character_arr = bad_character_list.split("");
	
	var space_character_count = 0;
	var space_character = " ";
	
	var count = 0;
	var position = 0;
	
	var bad_string_found = false;
	var bad_string_list = "PO Box,P.O. Box,P.O Box,P0,B0x";
	var bad_string_arr = bad_string_list.split(",");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	for (i = 0; i < val_arr.length; i++) {
		
		if (val_arr[i] == space_character) {
			
			if ((i-1) != position) {
				count = count + 1;
			}
			position = i;
			
		}
		
	}
	
	space_character_count = count;
	
	for (i = 0; i < bad_string_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_string_arr[i].toLowerCase()) > -1) {
			bad_string_found = true;
			break;
		}
		
	}
	
	if (space_character_count >= 2 && bad_character_found == false && bad_string_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_state(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "1234567890,<.>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (val.length >= 2 && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_zip(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*()_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (val.length >= 5 && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_money(obj) {
	
	var val = form_stringTrim(obj.value);
	var val_arr = val.split("");
	
	var min_amt = 1;
	var min_met = false;
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz<>/?;:'\"[{]}\\|`~!@#%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	var required_character_found = false;
	var required_character_list = "123456789";
	var required_character_arr = required_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	for (i = 0; i < required_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(required_character_arr[i]) > -1) {
			required_character_found = true;
			break;
		}
		
	}
	
	if (required_character_found == true) {
		
		var amt = "";
		
		for (i = 0; i < val_arr.length; i++) {
				if (val_arr[i] != "$" && val_arr[i] != ",") {
						amt = amt + val_arr[i];
				}
		}
		
		if (parseFloat(amt) >= min_amt) {
			min_met = true;
		}
		
	}
	
	if (required_character_found == true && min_met == true && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_ccNum(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (val.length >= 15 && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

function form_checkFormat_ccExp(obj, obj2) {
	
	var val = form_stringTrim(obj.value);
	var val2 = form_stringTrim(obj2.value);
	
	var bad_character_found = false;
	var bad_character_obj = false;
	var bad_character_obj2 = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			var bad_character_obj = true;
			break;
		}
		
	}
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val2.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			var bad_character_obj2 = true;
			break;
		}
		
	}
	
	if (val.length == 2 && val2.length == 2 && bad_character_found == false) {
		
		return [true, 0]
		
	} else {
		
		if (val.length < 2 || bad_character_obj == true) {
			
			return [false, obj]
			
		} else {
			
			return [false, obj2]
			
		}
		
	}

}

function form_checkFormat_ccCsc(obj) {
	
	var val = form_stringTrim(obj.value);
	
	var bad_character_found = false;
	var bad_character_list = "abcdefghijklmnopqrstuvwxyz,<.>/?;:'\"[{]}\\|`~!@#$%^&*()-_=+ ";
	var bad_character_arr = bad_character_list.split("");
	
	for (i = 0; i < bad_character_arr.length; i++) {
		
		if (val.toLowerCase().indexOf(bad_character_arr[i]) > -1) {
			bad_character_found = true;
			break;
		}
		
	}
	
	if (val.length >= 3 && bad_character_found == false) {
		
		return true;
		
	} else {
		
		return false;
		
	}

}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Error Clear Functions.

function form_errorClear_null(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_null(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_text(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_text(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_number(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_number(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_name(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_name(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_email(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_email(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_phone(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_phone(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_address(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_address(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_state(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_state(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_zip(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_zip(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_money(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_money(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_split(obj, comparison, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_money(obj) == true && form_stringToNumber(val) < comparison.value) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_ccNum(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_ccNum(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_ccExp(obj, obj2, error) {
	
	var val = form_stringTrim(obj.value);
	var val2 = form_stringTrim(obj2.value);
	
	var chk = [];
	
	if (val != "" && val2 != "" && document.getElementById(error).style.visibility == "visible") {
		
		chk = form_checkFormat_ccExp(obj, obj2);
		
		if (chk[0] == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_csc(obj, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (form_checkFormat_ccCsc(obj) == true) {
		
			document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_select(obj, error) {
	
	if (obj.selectedIndex != 0 && document.getElementById(error).style.visibility == "visible") {
		
		document.getElementById(error).style.visibility = 'hidden';
		
	}
	
}

function form_errorClear_match(obj, comparison, error) {
	
	var val = form_stringTrim(obj.value);
	
	if (val != "" && document.getElementById(error).style.visibility == "visible") {
		
		if (val == form_stringTrim(document.getElementById(comparison).value)) {
		
		document.getElementById(error).style.visibility = 'hidden';
		
		}
		
	}
	
}

function form_errorClear_simple(error) {
	
	if (document.getElementById(error).style.visibility == "visible") {
		document.getElementById(error).style.visibility = 'hidden';
	}
	
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Set Value Functions.

function form_setValue_same(source, target, error) {
	
	document.getElementById(target).value = document.getElementById(source).value;
	
	if (document.getElementById(target).value != "" && document.getElementById(error).style.visibility == "visible") {
		document.getElementById(error).style.visibility = 'hidden';
	}
	
}