function is_form_empty(the_form) {
	// By default assume non empty
	var at_least_one_value = false;
	var has_value = false;
	for (var i=0; i < the_form.elements.length; i++) {
		if (the_form.elements[i].tagName) {
			var name_value = ie_intercept_action(the_form, i);
		}
		else {
			var name_value = netscape_intercept_action(the_form, i);
		}
		if (name_value && name_value[0].substr(0, 11)=="field_desc_") {
			// If there are search fields on the page then assume empty
			at_least_one_value = true;
			var parts = name_value[1].split(";");
			has_value = false;
			switch (parts[0]) {
				case "double_range":
					var double_range_start = eval("the_form."+parts[1]+"_start.value");
					var double_range_end = eval("the_form."+parts[1]+"_end.value");
					has_value = ((double_range_start || double_range_end) ? true : false);
					break;
				case "time_range":
					var time_range_start = eval("the_form."+parts[1]+"_start.value");
					time_range_start = ((time_range_start.length>2) ? true : false);
					var time_range_end = eval("the_form."+parts[1]+"_end.value");
					time_range_end = ((time_range_end.length>2) ? true : false);
					has_value = ((time_range_start || time_range_end) ? true : false);
					break;
				case "date_range":
					var date_range_start = eval("the_form."+parts[1]+"_start.value");
					var date_range_start_val = ((date_range_start.length>2 && date_range_start!="0000-00-00") ? true : false);
					var date_range_end = eval("the_form."+parts[1]+"_end.value");
					var date_range_end_val = ((date_range_end.length>2 && date_range_end!="0000-00-00") ? true : false);
					has_value = ((date_range_start_val || date_range_end_val) ? true : false);
					break;
				case "nullbox":
					has_value = ((eval("the_form."+parts[1]).checked) ? true : false);
					break;
				case "yes_no":
					var radio = eval("the_form."+parts[1]);
					for (var k=0; k<radio.length; k++) {
						has_value = ((radio[k].checked) ? true : false);
						if (has_value) {
							break;
						}
					}
					break;
				case "phone":
					save_phone_component(document.search, parts[1]);
					var phone = eval("the_form."+parts[1]);
					if (phone.value=="--") {
						phone.value="";
					}
					// no break!!!
				default:
					if (typeof(eval("the_form."+parts[1]))!="undefined") {
						has_value = ((eval("the_form."+parts[1]+".value")) ? true : false);
					}
					break;
			}
			if (has_value) {
				// Know we know it is not empty
				at_least_one_value = false;
				break;
			}
		}
	}
	return at_least_one_value;
}
function get_form_data(the_form, ignore_buttons) {
	var form_data = new Array();
	for (var i=0; i < the_form.elements.length; i++) {
		if (the_form.elements[i].tagName) {
			var name_value = ie_intercept_action(the_form, i, ignore_buttons);
		}
		else {
			var name_value = netscape_intercept_action(the_form, i, ignore_buttons);
		}
		if (name_value[0]) {
			form_data[name_value[0]] = name_value[1];
		}
	}
	return form_data;
}

function intercept(the_form, function_name) {
	var url = the_form.action;
	if (!url) {
		return false;
	}
	if(!url.match(/\?/)) {
		url=url+"?";
	}
	else {
		url=url+"&";
	}
	var amp = "";
	/*for (var i=0; i < the_form.elements.length; i++) {
		if (the_form.elements[i].tagName) {
			var name_value = ie_intercept_action(the_form, i);
		}
		else {
			var name_value = netscape_intercept_action(the_form, i);
		}
alert(the_name);
		the_name = name_value[0];
		the_value = name_value[1];
		if (the_name) {
			url+=amp+the_name+"="+escape(the_value);
			amp="&";
		}
	}*/
	intercept_data = get_form_data(the_form);
	for (var the_name in intercept_data) {
		url+=amp+the_name+"="+escape(intercept_data[the_name]);
		amp="&";
	}
	eval(function_name+"(\""+url+"\");");
	return false;
}

function ie_intercept_action(the_form, i, ignore_buttons) {
	if(ignore_buttons==null)	{
		ignore_buttons = false;
	}
	
	var the_name = false;
	switch (the_form.elements[i].tagName) {
		case "INPUT":
			switch (the_form.elements[i].type) {
				case "text" : case "submit" : case "button" : case "hidden" : case "password" :
					if(the_form.elements[i].name && (!ignore_buttons || (ignore_buttons && the_form.elements[i].type!="submit" && the_form.elements[i].type!="button"))) {
						the_name = the_form.elements[i].name;
						the_value = the_form.elements[i].value;
					}
				break;
				case "radio" : case "checkbox" :
					if (the_form.elements[i].checked) {
						the_name = the_form.elements[i].name;
						the_value = the_form.elements[i].value;
					}
				break;
			}
			break;
		case "SELECT":
			var last_selected;
			for (var j=0; j < the_form.elements[i].length; j++) {
				if (the_form.elements[i].options[j].selected) {
					last_selected = the_form.elements[i].options[j];
				}
			}
			if(last_selected && the_form.elements[i].name) {
				the_name = the_form.elements[i].name;
				the_value = last_selected.value;
			}
			break;
		case "TEXTAREA":
			the_name = the_form.elements[i].name;
			the_value = the_form.elements[i].value;
			break;
		case "FIELDSET":
			break;
		default:
			alert("INTERCEPT: There is an IE form element named "+the_form.elements[i].tagName+" on the page that I don't know how to handle");
			the_name = false;
			the_value = false;
			break;
	}
	var return_val = false;
	if (the_name) {
		return_val = new Array(the_name, the_value);
	}
	return return_val;
}

function netscape_intercept_action(the_form, i, ignore_buttons) {
		if(ignore_buttons==null)	{
			ignore_buttons = false;
		}
		
		var the_name = false;
		var the_value = false;
		switch (the_form.elements[i].type) {
			case "text" : case "submit" : case "button" : case "hidden" :
				if(the_form.elements[i].name && (!ignore_buttons || (ignore_buttons && the_form.elements[i].type!="submit" && the_form.elements[i].type!="button"))) {
					the_name = the_form.elements[i].name;
					the_value = the_form.elements[i].value;
				}
			break;
			case "radio" : case "checkbox" :
				if (the_form.elements[i].checked) {
					the_name = the_form.elements[i].name;
					the_value = the_form.elements[i].value;
				}
			break;
			case "select-one" : case "select-multiple" :
				var last_selected;
				for (var j=0; j < the_form.elements[i].length; j++) {
					if (the_form.elements[i].options[j].selected) {
						last_selected = the_form.elements[i].options[j];
					}
				}
				if(last_selected && the_form.elements[i].name) {
					the_name = the_form.elements[i].name;
					the_value = last_selected.value;
				}
			break;
		case "textarea":
			the_name = the_form.elements[i].name;
			the_value = the_form.elements[i].value;
			break;
		default:
			alert("INTERCEPT: There is a NS form element named "+the_form.elements[i].tagName+" on the page that I don't know how to handle");
			the_name = false;
			the_value = false;
			break;
	}
	var return_val = new Array(the_name, the_value);
	return return_val;
}