
// required fields error
function errorForm(target, button, msg)
{
	if( !msg )
	{
		msg = 'Tietoja';
	}
	tt("<b>Puutteelliset tiedot</b><br /><br /><span style=\"color: red\">"+msg+" puuttuu!</span>", target);
	target.style.border = "1px solid #ff0000";
	target.focus();
	button.disabled = false;
	return (false);
}

// check form
function checkForm(form, button)
{
	var elem = form.elements;
	var formatted = "";
	if( !button )
	{
		button = form.submit;
	}
	button.disabled = true;
	var params = "";
	for(var i=0; i<elem.length; i++)
	{ 
		// check required fields
		check = elem[i].title.substr(0, 8).toLowerCase();
		if(check == "required")
		{
			msg = elem[i].title.substr(10, elem[i].title.length);
			if( elem[i].name )
			{
				switch(elem[i].type)
				{
					/* default: alert(elem[i].type); break; */
					case "select-one": if(!elem[i].options[elem[i].selectedIndex].value) { return errorForm(elem[i], button, msg); } break;
					case "select-multiple":
						var selectelems = elem[i].options;
						var checked = false;
						for(var c=0; c<selectelems.length; c++)
						{
							if( selectelems[c].selected )
							{
								checked = true;
							}
						}
						if( !checked )
						{
							return errorForm(elem[i], button, msg);
						}
	/*					if(!elem[i].options[elem[i].selectedIndex].value != '')
						{
							return errorForm(elem[i], button, msg);
						}*/
					break;
					case "text": if(!elem[i].value) { return errorForm(elem[i], button, msg); } break;
					case "file": if(!elem[i].value) { return errorForm(elem[i], button, msg); } break;
					case "password": if(!elem[i].value) { return errorForm(elem[i], button, msg); } break;
					case "textarea": if(!elem[i].value) { return errorForm(elem[i], button, msg); } break;
					case "radio": 
					case "checkbox":
						if(!elem[i].checked)
						{
							var checkboxes = form[ elem[i].name ];
							var checked = false;
							for(var c=0; c<checkboxes.length; c++)
							{
								if( checkboxes[c].checked )
								{
									checked = true;
								}
							}
							if( !checked )
							{
								return errorForm(elem[i], button, msg);
							}
						}
					break;
				}
			}
		}
		
		// setup params for ajaxCall data
		if( params != "" )
		{
			params += "&";
		}
		if( elem[i].name )
		{
			switch( elem[i].type )
			{
				case 'select-multiple':
					var selectelems = elem[i].options;
					for(var c=0; c<selectelems.length; c++)
					{
						if( selectelems[c].selected )
						{
							params += elem[i].name+"["+selectelems[c].value+"]=1";
						}
						else
						{
							params += elem[i].name+"["+selectelems[c].value+"]=0";
						}
						if( c != selectelems.lenght-1 )
						{
							params += "&";
						}
					}
				break;
				case "radio":
				case "checkbox":
					// single
					if( elem[i].value == 'on' || !elem[i].value )
					{
						if( elem[i].checked )
						{
							params += elem[i].name+"=1";
						}
						else
						{
							params += elem[i].name+"=0";
						}
					}
					// multi
					else
					{
						if( elem[i].checked )
						{
							params += elem[i].name+"["+elem[i].value+"]=1";
						}
						else
						{
							params += elem[i].name+"["+elem[i].value+"]=0";
						}
					}
				break;
				case "password":
					if( elem[i].value )
					{
						if(form.name == 'login')
						{
							params += elem[i].name+"="+hex_md5(elem[i].value);
						}
						else
						{
							params += elem[i].name+"="+elem[i].value.replace(/%/g,"%25").replace(/&/g,"%26").replace(/\+/g, "%2B");
						}
					}
					else
					{
						params += elem[i].name+"=";
					}
				break;
				default:
					if( elem[i].value )
					{
						params += elem[i].name+"="+elem[i].value.replace(/%/g,"%25").replace(/&/g,"%26").replace(/\+/g, "%2B");
					}
					else
					{
						params += elem[i].name+"=";
					}
				break;
			}
		}
		
		// if no error, colorize border to green
		if(elem[i].className != "none" && elem[i].type != "reset" && elem[i].type != "button")
		{
			elem[i].style.border = '1px solid #00ff00';
		}
	}
	// support for fileuploads
	if( form.enctype == 'multipart/form-data' )
	{
		return true;
	}
	else
	{
		ajaxpost(form.action, params);
		button.disabled = false;
		return false;
	}
}

// search functions
function searchOnFocus(e, ghost)
{
	if( e.value == null || e.value == "" || e.value == ghost )
	{
		e.className = "";
		e.value = "";
	}
	return false;
}

function searchOnBlur(e, classname, ghost)
{
	if( e.value == null || e.value == "" )
	{
		e.className = classname;
		e.value = ghost;
	}
	return false;
}

function getsearch(url, val, ghost)
{
	if( val != ghost && val != null && val != "" )
	{
		gotourl( url + escape(val) );
	}
	else
	{
		var finput = document.getElementById("search_input");
		var fsubmit = document.getElementById("submit");
		errorForm(finput, fsubmit, ghost);
	}
	return false;
}

