/*
	Form manager functions
	======================
*/

var onSubmitFunctions = new Array();

// Clear the form
function clear_form(_form)
{
	for(i = 0; i <_form.elements.length; i++)
	{
		element = _form.elements[i];
		switch(element.type)
		{
			case "text": case "password": case "textarea":
			{
				element.value = "";
				break;
			}

			case "radio":
			{
				if(!element.defaultChecked)
					element.checked = false;
				break;
			}

			case "select-one":
			{
				element.options[1].selected = true;
				break;
			}

			case "select-multiple":
			{
				for(x=0; x<element.options.length; x++)
					element.options[x].selected = false;
				break;
			}

			case "checkbox":
			{
				element.checked = false;
				break;
			}

			default :
			{
				break;
			}
		}
	}
}

// Set the Select field
function set_select(id, value)
{
	s = document.getElementById(id);
	cn = s.childNodes;

	for(i = 0; i < cn.length; i++)
	{
		if(cn[i].value == value)
		{
			cn[i].selected = true;
			break;
		}
	}
}

// Registers an onsubmit function for form
function register_OnSubmit(_func, _form)
{
	onSubmitFunctions[_func.name] = new Array();
	
	if(_form != undefined && _form != null)
		onSubmitFunctions[_func.name]["form"] = _form;
	else
		onSubmitFunctions[_func.name]["form"] = null;

	onSubmitFunctions[_func.name]["function"] = _func;
}

// Removes such an event
function unregister_OnSubmit( _func)
{
	delete onSubmitFunctions[_func.name];
}



// Submit a form
function submit_form(_url, _form, _func, _question)
{
	if(_question != undefined && _question != null)
	{
		ans = confirm(_question);

		if(!ans)
			return;
	}

	_currentform = document.getElementById(_form);
	_currentform.setAttribute("method", "post");
	_currentform.setAttribute("action", _url);

	var formName = document.createElement("input");
	formName.setAttribute("type", "hidden");
	formName.setAttribute("name", "form_name");
	formName.setAttribute("value", _form);
	_currentform.appendChild(formName);

	var submitFunc = document.createElement("input");
	submitFunc.setAttribute("type", "hidden");
	submitFunc.setAttribute("name", "form_function");
	submitFunc.setAttribute("value", _func);
	_currentform.appendChild(submitFunc);

	var ret = true;
	for(var func in onSubmitFunctions)
	{
		listof = "all,any,collect,detect,findAll,grep,include,inGroupsOf,inject,invoke,max,min,partition,pluck,reject,sortBy,toArray,zip,size,inspect,find,select,member,entries,_reverse,_each,clear,first,last,compact,flatten,without,reduce,uniq,intersect,clone,toJSON,each,eachSlice,contains,getLast,indexOf";
		if(listof.indexOf(func) == -1 && (onSubmitFunctions[func]["form"] == null || onSubmitFunctions[func]["form"] == _currentform.name))
		{
			if(onSubmitFunctions[func]["function"] != null)
				ret = ret && onSubmitFunctions[func]["function"]();
		}
	}

	if(ret)
		_currentform.submit();
}

// Create a new confirmation image
function generate_new_confirm_image(_instance, _src)
{
	img = document.getElementById(_instance);

	_src = _src + "&random=" + Math.random() + "#";
	img.src = _src;
}

