function calendarUpdateValue(field)
{
	var calendar_value = "";
	var field_year = $(field + "_year_id");
	var field_month = $(field + "_month_id");
	var field_day = $(field + "_day_id");
	
	if (field_year.value != "" && field_month.value != "" && field_day.value != "")
	{
		calendar_value = field_year.value + "-" + field_month.value + "-" + field_day.value;
	}
	
	$calendar_field = $(field + "_id");
	$calendar_field.value = calendar_value;
}

function fieldShowDescription(field, related)
{
	var _field;
	_field = $(related + "_id");
	if (_field == null)
	{
		_field = field;
	}
	
	var description_object = null;
	while (description_object == null)
	{
		_field = _field.nextSibling;
		if (_field == null)
		{
			break;
		}
		else if (_field.nodeType == 1 && _field.className.indexOf("description") >= 0 && _field.innerHTML != "")
		{
			description_object = _field;
			break;
		}
		if (_field.nextSibling == null) break;
	}
	
	if (description_object == null) return ;
	
	if (description_object.className.indexOf("right") >= 0)
	{
		description_object.style.marginLeft = (field.offsetWidth + 20) + "px";
		description_object.style.marginTop = "-" + (field.offsetHeight + 15) + "px";
		description_object.className = "description";
	}
	else if (description_object.className.indexOf("left") >= 0)
	{
		description_object.style.marginLeft = (-240) + "px";
		description_object.style.marginTop = "-" + (field.offsetHeight + 15) + "px";
		description_object.className = "description";
	}
	
	description_object.style.visibility = "visible";
}

function fieldHideDescription(field, related)
{
	var _field;
	_field = $(related + "_id");
	if (_field == null)
	{
		_field = field;
	}

	var description_object = null;
	while (description_object == null)
	{
		_field = _field.nextSibling;
		if (_field == null)
		{
			break;
		}
		else if (_field.nodeType == 1 && _field.className.indexOf("description") >= 0 && _field.innerHTML != "")
		{
			description_object = _field;
			break;
		}
	}
	if (description_object == null) return ;
	description_object.style.visibility = "hidden";
}

function clearErrors(form)
{
	var f = $(form);
	var tags = f.getElementsByTagName("SPAN");
	var elements = [];
	for (var i = 0; i < tags.length; i++)
	{
		if(tags[i].className.indexOf(" ") >= 0)
		{
			var classes = tags[i].className.split(" ");
			for (var j = 0; j < classes.length; j++)
			{
				if (classes[j] == "error") elements.push(tags[i]);
			}
		}
		else if (tags[i].className == "error") elements.push(tags[i]);
	}
	for (i = 0; i < elements.length; i++)
	{
		elements[i].innerHTML = "&nbsp;";
	}
}

function submitFormNoAjax(form)
{
	var f = $(form);
	f.onsubmit = function() { };
	f.submit();
}

function submitFormAjax(form)
{
	if ($("button_" + form) != undefined) $("button_" + form).style.visibility = "hidden";
	if ($("loader_" + form) != undefined) $("loader_" + form).style.visibility = "visible";
	
	var f = $(form);
	
	if (this["ajaxFormBefore_" + form] != undefined)
	{
		this["ajaxFormBefore_" + form](form);
	}
	new Ajax.Request(
		f.action,
		{
			method: "post",
			parameters: $(f).serialize(true),
			onSuccess: function(transport)
			{
				//alert(transport.responseText);
				if ($("button_" + form) != undefined) $("button_" + form).style.visibility = "visible";
				if ($("loader_" + form) != undefined) $("loader_" + form).style.visibility = "hidden";
				var json = transport.responseText.evalJSON();
				if (json == false)
				{
					errorMessage("Could not complete the request");
				}
				else
				{
					if (json.status == "error")
					{
						for (var i in json)
						{
							if (i != "status" && i != "message")
							{
								if (json.message == undefined) json.message = json[i];
							}
						}
						if (json.message != undefined) errorMessage(json.message);
						if (json.focus_field != undefined)
						{
							var ff = $(json.focus_field + "_id");
							if (ff != undefined)
							{
								ff.focus();
							}
						}
					} else
					{
						if (json.message != undefined) successMessage(json.message);
						clearErrors(form);
					}
					if (this["ajaxFormAfter_" + form] != undefined)
					{
						this["ajaxFormAfter_" + form](form, json);
					}
				}
			},
			onFailure: function()
			{
				errorMessage("Could not complete the request");
			}
		}
	);
}