function submitForm( param ) // params: formId {, fieldname, fieldValue }0..n
{
	var args = submitForm.arguments;
	var form = document.getElementById(args[0]);
	if( form != null )
	{
		for (i = 0; i < (args.length-1)/2; i++)
		{
			var input = document.createElement("input");
			input.name = args[i*2+1];
			input.value = args[i*2+2];
			input.type = "hidden";
			form.appendChild(input);
		}
		form.submit();
	}
	else
	{
		alert( "form does not exist: " + args[0] );
	}
}

function submitData( param ) // params: full path {, fieldname, fieldValue }0..n
{
	var args = submitData.arguments;
	var form = document.createElement("form");
	form.action = args[0];
	for (i = 0; i < (args.length-1)/2; i++)
	{
		var input = document.createElement("input");
		input.name = args[i*2+1];
		input.value = args[i*2+2];
		input.type = "hidden";
		form.appendChild(input);
	}
	document.getElementsByTagName("body")[0].appendChild(form);
	form.method = "post";
	form.submit();
}

function submitToPrint( param ) // params:  full path {, some form-field name, form-field value }0..n
{
	var args = submitToPrint.arguments;
	var form = document.createElement("form");
	form.action = args[0];
	for (i = 0; i < (args.length-1)/2; i++)
	{
		var input = document.createElement("input");
		input.name = args[i*2+1];
		input.value = args[i*2+2];
		input.type = "hidden";
		form.appendChild(input);
	}
	var printParam = form.action.indexOf("?") != -1 ? "&print=true" : "?print=true"; 
	form.action = form.action + printParam;
	document.getElementsByTagName("body")[0].appendChild(form);
	form.method = "post";
	var popup = window.open("about:blank", "printPreview", "width=800, height=900, left=100, top=50, toolbar=no, menubar=yes, scrollbars=yes, location=0, status=no" );
	form.target = "printPreview";
	form.submit();
}

/**
 * @param element to get an enclosing form node for
 * @return form node or null
 */
function getEnclosingForm( element )
{
	var myElement = element;
	do {
		if( myElement.submit != null )
		{
			return myElement;
		}
		myElement = myElement.parentNode;
	} while( myElement != null );
	return null;
}

/**
 * 
 * @param event
 * @return true, if the current event is the enter key pressedd
 */

function isEnterKeyEvent( event )
{
	if( !event )
	{
		event = window.event;
	}
	if ( event.which ) 
	{
		keyCode = event.which;
	} else if ( event.keyCode ) 
	{
		keyCode = event.keyCode;
	}
	if( keyCode == 13 )
	{
		return true;
	}
	return false
}

/**
 * usage: <input name="bla" onkeyup=" onEnterSubmit( event, this ) ">..</input>
 * submits the surrounding form if enter button pushed
 *  
 * @param event
 * @param inputField 
 */
function onEnterSubmit( event, inputField )
{
	if( isEnterKeyEvent( event ) )
	{
		inputField.form.submit();
	}
}

/**
 * usage: 
 * 		<input name="bla" onkeyup=" onEnterAjaxSubmit( event, this ) ">..</input>
 * or 	<input name="bla" onkeyup=" onEnterAjaxSubmit( event, this, 'myContainerId' ) ">..</input>
 * 
 * submits the surrounding form if enter button pushed using ajax
 *  
 * @param event
 * @param inputField 
 */
function onEnterAjaxSubmit( event, inputField, singleContainerId )
{
	if( isEnterKeyEvent( event ) )
	{
		ajaxSubmitForm( inputField.form, singleContainerId );		
	}
}

/**
 * usage: <input name="bla" onkeyup=" onEnterTabNext( event, this ) ">..</input>
 * puts the cursor to the next input element
 *  
 * @param event
 * @param inputField 
 */
function onEnterTabNext( event, inputField )
{
	if( isEnterKeyEvent( event ) )
	{
		var takeThis = false;
		for( var index in inputField.form.elements )
		{
			var element = inputField.form.elements[ index ];
			if( takeThis )
			{
				element.focus();
				element.select();
				return;
			}			
			if( element == inputField )
			{
				takeThis = true;
			}
		}
	}
}

/**
 * 
 * usage: <input name="bla" onkeyup=" onEnterTabNext( event, this, myNextField ) ">..</input>
 * 
 * puts the cursor to the specified input element
 * 
 * @param event
 * @param inputField
 * @param nextField
 */
function onEnterTabNextField( event, inputField, nextField )
{
	if( isEnterKeyEvent( event ) )
	{
		nextField.focus();
		nextField.select();
	}
}

/**
 * 
 * usage: <input name="bla" onkeyup=" onInputTabNextField( event, 'x', this, myNextField ) ">..</input>
 * 
 * puts the cursor to the specified input element
 * 
 * @param event
 * @param inputField
 * @param nextField
 */
function onInputTabNext( event, inputString, inputField )
{
	var value = inputField.value;
	if( value.length > 0 )
	{
		var char = value.substr( value.length - inputString.length );
		if( char == inputString )
		{
			var trunkValue = value.substr( 0, value.length - inputString.length );
			inputField.value = trunkValue;
			
			var takeThis = false;
			for( var index in inputField.form.elements )
			{
				var element = inputField.form.elements[ index ];
				if( takeThis )
				{
					element.focus();
					element.select();
					return;
				}			
				if( element == inputField )
				{
					takeThis = true;
				}
			}
		}
	}
}

/**
 * 
 * usage: <input name="bla" onkeyup=" onInputTabNextField( event, 'x', this, myNextField ) ">..</input>
 * 
 * puts the cursor to the specified input element
 * 
 * @param event
 * @param inputField
 * @param nextField
 */
function onInputTabNextField( event, inputString, inputField, nextField )
{
	var value = inputField.value;
	if( value.length > 0 )
	{
		var char = value.substr( value.length - inputString.length );
		if( char == inputString )
		{
			var trunkValue = value.substr( 0, value.length - inputString.length - 1 );
			inputField.value = trunkValue;
			nextField.focus();
			nextField.select();
		}
	}
}


function resetDropdown( field )
{
	if( field != null )
	{
		for (i = 0; i < field.length; i++)
		{
			if( field[i].defaultSelected == true )
			{
				field[i].selected = true;
			}
			else
			{
				field[i].selected = false;
			}
		}		
	}
}

function hide(obj_id){
	obj = document.getElementById(obj_id).style.visibility = 'hidden';
}

function unhide(obj_id){
	obj = document.getElementById(obj_id).style.visibility = 'visible';
}

