function make_editable(fieldName, cleartext) {
//	var array = document.getElementsByName(fieldName);
	var field = document.getElementById(fieldName);

	if (field  != null) {
		field.style.visibility ='visible';
		field.removeAttribute('disabled');
		field.removeAttribute('readOnly');
		if ((cleartext == true) && (field.value == "[Click here to enter new comment.]") )
			field.value = "";
		field.className = remove_string(field.className, "readonly");
	} else {
		//alert(fieldName + " is null");
	}
}

function show_processing(fieldId) {
	var field = document.getElementById(fieldId);

	if (field  != null) {
		field.innerHTML= "<img src=\"../images/loading.gif\" />Processing...";
	}
}

function make_readonly(fieldName, hidden, disabled, readonly) {
	var field = document.getElementById(fieldName);

	if (field  != null) {
		if (hidden == true)
			field.style.visibility ='hidden';
		if (disabled == true)
			field.setAttribute('disabled', 'disabled');
		if (readonly == true) {
			field.setAttribute('readonly', 'readonly');
			field.readOnly=true;
			field.className += " readonly";
		}
	}
}

//For radio buttons
function set_radio_editable(formName, fieldName, en) {
	//find form
	var form = get_form(formName);
	if (form == null) alert (formName + " is null");
	for (var i=0; i<form.elements.length; i++) {
		var field = form.elements[i];
		if ( (field.name == fieldName) || (field.id== fieldName) ) { 
			if (en == true) {
				field.style.visibility ='visible';
				field.removeAttribute('disabled');
				field.removeAttribute('readonly');
			} else {
				if (field.checked != true) //don't disable selected item
					field.setAttribute('disabled', 'disabled');
				field.setAttribute('readonly', 'readonly');
				field.readOnly=true;
			}
		}
	}
}

function make_viewable(buttonName) {
//	var field = document.getElementsByName(buttonName)[0];
	var field = document.getElementById(buttonName);
	field.removeAttribute('disabled');
	field.style.visibility ='visible';
	//field.focus(); //take this out for IE
}

function show_selected(fieldName) {
//	var field = document.getElementsByName(fieldName)[0];
	var field = document.getElementById(fieldName);
	field.className+=' selected';
	//alert(field.className);
}

function set_innerHTML_by_id(id, val) {
	var field = document.getElementById(id);
	field.innerHTML = val;
}
function set_focus(fieldName) {
//	var field = document.getElementsByName(fieldName)[0];
	var field = document.getElementById(fieldName);
	field.focus();
}

function remove_string(searchstr, toremove){
	var i = searchstr.indexOf(toremove);
	var result = searchstr;
	if (i > -1) {
		result = searchstr.substring(0,i); 
		result += searchstr.substring(i+toremove.length-1, searchstr.length-1);
	}
	return result;
}

function remove_class(fieldName, toremove) {
//	var field = document.getElementsByName(fieldName)[0];
	var field = document.getElementById(fieldName);
	if (field == null)
		alert(fieldName);
	return field.className= remove_string(field.className, toremove);
}

function validate_date(fieldName) {
	return false;
}

function displayErr(fieldNode, validator) {
	var field = document.getElementById(fieldNode & '_ERROR');
	if (validator == null) {
		//no error
		field.style.visibility ='hidden';		
	} else {
		alert("hey");
		field.style.visibility ='visible';	
	}
}

function filterDecimal(fieldid) {
	//usage <input type="text" onBlur="filterDecimal(this.id);" onKeyUp="filterDecimal(this.id);">
	var regx = "[^\\d\\.]";//match any non-decimal or dots
	var field = document.getElementById(fieldid);
	field.value = field.value.replace(regx, ""); //clear anything matching the pattern
}

function returnTrue() {
	//dummy function to capture callbacks
	return true;
}

function IsDate(date) {
	var str = prepare_date_string(date);
	//alert(date + "\r\n" + str);
	var dt;
	var isDate = true; //assume tbDate.Text is a date
	dt = Date.parse(str);
	if (isNaN(dt)) { isDate = false;  }
	return isDate;
}

function prepare_date_string(date) {
	//remove items I don't want
	var regx = new RegExp("[^0-9a-zA-Z\\s]", "g");
	var str =date.toString();
	str = str.replace(regx, " "); 
	return( str ); //strip out unwanteds, and replace with space ' '
}

function test() {
	alert(tmt.validator.patterns.displaydate.toString());
}

function 	get_form(formName) {
	var size = document.forms.length;
	for (var i=0;i<size;i++) {
		var form = document.forms[i];
		if (form.name == formName)
			return form;
	}
	return null;
}

function set_checkbox(cbox, valstr, invert) {
	   var i =0;
	   if (!invert) invert = 0;
	   var val = parseInt(valstr);
	   $("input[name='"+cbox+"']").each(function() {
		   if (i ==invert) {  
			   if (val)
				   $(this).attr("checked", "checked");
			   else
				   $(this).removeAttr("checked");
		   }
		   else  {
			   if (!val)
				   $(this).attr("checked", "checked");
			   else
				   $(this).removeAttr("checked");
		   }
		   i++;
	   } );
}

function decode(str) {
	//replaces encoded html information from JSON to be displayed properly in webpage
	$("#hidden_ajax").html(str);
	return $("#hidden_ajax").text(); //html(str).text();
}

//********* Time Functions ********\\
function validate_time(inp, altField) {
	//Requires date.js (contained in jquery_ui_datepicker.js)
	//displays visual time in inp field and time for db insert in altField
	var tmp = Date.parse(inp.value);
	altField.value =format_time(tmp, false );
	inp.value= format_time(tmp, true );
}
// Display = true for visual, display = false for db string
function format_time(the_date, display) {
	if (the_date == null) {
		the_date = new Date();
		the_date.setHours(0,0,0,0);
	}
	var a_p = "";
	var curr_hour = the_date.getHours();
	if (curr_hour < 12)  { a_p = "AM";  }
		else { a_p = "PM";  }
	if (curr_hour == 0) { curr_hour = 12;  }
	if (curr_hour > 12) { curr_hour = curr_hour - 12;  }
	var curr_min = the_date.getMinutes();
	curr_min = curr_min + "";
	if (curr_min.length == 1) { curr_min = "0" + curr_min;  }
	if (display)
		return (curr_hour + ":" + curr_min + " " + a_p);
	else
		return (the_date.getHours()+":"+curr_min+":"+"00");
}

function copy_date(field_src, field_dst) {
	//take date from one field, send to other for db insert
	var the_date = Date.parse(field_src.value);
	if (the_date != null)
		field_dst.value = the_date.toString('yyyy-MM-dd');
	else
		field_dst.value = "";
}

function handle_feature_list(feature_arr, prefix) {
	size = feature_arr.length;
	if (size >0) {
		//if second argument not passed, set it
		if (handle_feature_list.arguments.length == 1) prefix = '';
		for (i=0; i< size;i++) {
			name = prefix+feature_arr[i].id;
			set_checkbox(name, 1);
		}
	}
}

function prepare_new_note(field, defaultstr, buttonname) {
	field.className = "";
	if (field.innerHTML == defaultstr) //clear it if default
		field.innerHTML = "";
	field.removeAttribute('readOnly');
	$("#"+buttonname).show();
}

/*
 * Function used to retrieve display info from ajax pages and indicate if server did not respond
 * returns true if data was returned
 */
function display_error_helper(data, msg_field, err_field) {
	   msg = "";
	   err = "";
	   action = true;
	   if (data != undefined) {
		   if (data.message != undefined)
			   msg = data.message;
		   if (data.error != undefined)
			   err = data.error;
	   } else {
		   err = "No response from server.";
		   action = false;
	   }

	   $("#"+msg_field).html(msg);
	   $("#"+err_field).html(err );
	   return action;
}