var user_conjunctive_string_delimiter = "&&";
var js_conjunctive_string_delimiter = "&&";

var user_disjunctive_string_delimiter = "||";
var js_disjunctive_string_delimiter = "||";

function trim(inputString) {
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	// trim code is from: http://www.breakingpar.com/bkp/home.nsf/Doc!OpenNavigator&U=87256B14007C5C6A87256AFB0013C722
	if (typeof inputString != "string") { 
		return inputString; 
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ") { // Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ") { // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
	
	return retValue; // Return the trimmed string back to the user
}

function remove_parentheses(inputString) {
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	// trim code is from: http://www.breakingpar.com/bkp/home.nsf/Doc!OpenNavigator&U=87256B14007C5C6A87256AFB0013C722
	if (typeof inputString != "string") { 
		return inputString; 
	}

	var retValue = inputString;
	retValue = trim(retValue);

	var ch = retValue.substring(0, 1);
	while ((ch == "(") || (ch == ")")){ // Check for open paren at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}

//	alert('substring: ' + retValue.substring(0,1));
	
	retValue = trim(retValue);
	
	ch = retValue.substring(retValue.length-1, retValue.length);
	while ((ch == "(") || (ch == ")")) { // Check for close paren at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}

	
	retValue = trim(retValue);
		
	return retValue; // Return the trimmed string back to the user
}

function quote_value(inputString) {
	// Need to quote string when it is evaluated or the single quotes will be interpreted as the end
	// of the eval
	if (typeof inputString != "string") { 
		return inputString; 
	}
	var retValue = inputString;
	
	var input_string_array = retValue.split("\\");
	retValue = input_string_array.join("\\\\");
	
	var input_string_array = retValue.split("'");
	
	retValue = input_string_array.join("\\'");
	
	return retValue;
}

function get_type (form_name, element_name){
	if (! document.forms[form_name].elements[element_name]){
		alert('Cannot find: ' + form_name + ' ' + element_name);
	}
	
	var type = document.forms[form_name].elements[element_name].type;
	if (! type ){
		// could be of type 'radio'...
		// Cannot address a radio 'input' by element_name directly
		// (js wouldn't know which element to address)
		type = document.forms[form_name].elements[element_name][0].type;
	}
	
	return type;
}

function get_value (form_name, element_name) {
	var type = get_type(form_name, element_name);
	var value = "";
	if (	(type == 'password') || (type == 'text') || (type == 'textarea') || 
		(type == 'select-one') ||
		(type == 'radio') ||
		(type == 'checkbox')
		){
		if ((type == 'password') || (type == 'text')){
			value = document.forms[form_name].elements[element_name].value;
		}
		if (type == 'textarea') {
			value = document.forms[form_name].elements[element_name].value;
			if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4) && (navigator.platform.indexOf("Mac") != -1)){
//				alert(navigator.appName + " " + parseInt(navigator.appVersion) + " " + navigator.platform);
				var return_array = new Array("\r\n", "\n", "\r");
				for (var i = 0; i < return_array.length; i++){
					if (value.lastIndexOf(return_array[i]) == (value.length - 1)){
						// The last character is a return, so:
						// Remove that last character
						value = value.substr(0, (value.length - 2));
					}
				}
				
				if (value != ''){
					for (var i = 0; i < return_array.length; i++){
						if (value.indexOf(return_array[i]) != -1){
							var value_array = value.split(return_array[i]);
/*
							for (var j = 0; j < value_array.length; j++){
								alert(value_array[j]);
							}
*/
							value = value_array.join(" ");
						}
					}
				}
			}
		}
		if (type == 'select-one'){
			value = document.forms[form_name].elements[element_name].options[document.forms[form_name].elements[element_name].selectedIndex].value;
		}
		if ((type == 'radio') || (type == 'checkbox')){
			var length = document.forms[form_name].elements[element_name].length;
			if (length){
				for (i = 0; i < length; i++){
					if (document.forms[form_name].elements[element_name][i].checked){
						value = document.forms[form_name].elements[element_name][i].value;
						break;
					}
				}
			}
	
			else {

				if (document.forms[form_name].elements[element_name].checked){
					value = document.forms[form_name].elements[element_name].value;
				}
			}
		}
	}
	else {
		alert('Cannot handle type: ' + type + ' from ' + element_name);
	}
	return value;
}

function get_value_for_eval (form_name, element_name){
	var value = get_value(form_name, element_name);
	value = quote_value(value);
//	alert("'" + value + "'");
	return "'" + value + "'";
}

function get_default_value (form_name, element_name) {
	var type = get_type(form_name, element_name);
	var value = "";
	if (	(type == 'password') || (type == 'text') || (type == 'textarea') || 
		(type == 'select-one') ||
		(type == 'radio') ||
		(type == 'checkbox')){
		if ((type == 'password') || (type == 'text') || (type == 'textarea')){
			value = document.forms[form_name].elements[element_name].defaultValue;
		}
		if (type == 'select-one'){
			for (var i = 0; i < document.forms[form_name].elements[element_name].length; i++){
				if (document.forms[form_name].elements[element_name].options[i].defaultSelected){
					value = document.forms[form_name].elements[element_name].options[i].value;
					break;
				}
			}
		}
		if ((type == 'radio') || (type == 'checkbox')){
			for (var i = 0; i < document.forms[form_name].elements[element_name].length; i++){
				if (document.forms[form_name].elements[element_name][i].defaultChecked){
					value = document.forms[form_name].elements[element_name][i].value;
					break;
				}
			}
		}
	}
	else {
		alert('Cannot handle type: ' + type + ' from ' + element_name);
	}
	return value;
}

function get_default_value_for_eval (form_name, element_name){
	var default_value = get_default_value(form_name, element_name);
	return "'" + default_value + "'";
}



