/**
*	for helper functions
*
*	@version	0.1
*	@author		Stephan Schmidt <stephan@metrix.de>
*/

	var	ucuoFieldNames	=	new	Array();
	var	ucuoFields		=	new	Object();

	var	ucuoFormErrors	=	new	Array();

	var	ucuoFormEmpty	=	true;

	var	firstError		=	true;
	
	function	validateFields()
	{
		ucuoFormErrors	=	new Array();
		firstError		=	true;
		
		var	returnvalue	=	true;
		for( var i=0; i < ucuoFieldNames.length; i++ )
		{
			if( !validate( ucuoFieldNames[i] ) )
			{
				returnvalue	=	false;
				if( firstError )
				{
					firstError	=	false;
					setFocus( ucuoFieldNames[i] );
				}
			}
		}

		if( ucuoFormErrors.length > 3 )
			returnvalue	=	true;

		if( returnvalue == false )
		{
			if( ucuoFormEmpty )
				alert( emptyFormMessage );
			else
			{
				var	alertText	=	'Bitte prüfen Sie Ihre Eingabe.\n\n';
				for( var i = 0; i < ucuoFormErrors.length; i++ )
					alertText	+=	ucuoFormErrors[i] + "\n";
				alert( alertText );
			}
		}
		
		return	returnvalue;
	}

	function	validate( fieldname )
	{
		var	validator	=	ucuoFields[fieldname];
		var	value		=	getValue( fieldname );

		if( value != "" )
			ucuoFormEmpty	=	false;
		
		if( validator.required )
		{
			if( value == "" )
			{
				if( validator.errorMsg == '' )
					var	msg	=	"Bitte füllen Sie das Feld '"+validator.title+"' aus.";	
				else
					var	msg	=	validator.errorMsg;

				ucuoFormErrors[ucuoFormErrors.length]	=	msg;
					
				return	false;
			}
		}

		return	true;
	}

	function	addField( name, type, title, required, minlength, maxlength, errorMsg )
	{
		ucuoFields[name]	=	new	ucuoField( type, title, required, minlength, maxlength, errorMsg );
	}
	
/**
*	object to store field definition
*
*
*/
	function	ucuoField( type, title, required, minlength, maxlength, errorMsg )
	{
		this.type		=	type;
		this.title		=	title;
		this.required	=	required;
		this.minlength	=	minlength;
		this.mixlength	=	maxlength;
		this.errorMsg	=	errorMsg;
	}
	
/**
*	get the value of a form element
*
*	@param	string	element		name of the element
*	@return	mixed	value
*/
	function	getValue( element )
	{
		var	el	=	document.forms["orderform"]['data['+element+']'];
		//	element does not exist
		if( typeof el == 'undefined'  )
			return	false;

		var	fieldtype	=	ucuoFields[element].type;
		var	value		=	'';

		switch( fieldtype )
		{
			case	"float":
			case	"double":
			case	"int":
			case	"blz":
			case	"plz":
			case	"name":
			case	"string":
			case	"firma":
			case	"email":
			case	"date":
			case	"profiseller":
			case	"0700":
			case	"vorwahl":
			case	"telnr":
				value	=	document.forms["orderform"]['data['+element+']'].value;
				break;
			case	"radio":
			case	"enum":
				if( typeof el.selectedIndex != 'undefined' )
				{
					value	=	el[el.selectedIndex].value;
				}
				else
				{
					for( var i = 0; i < el.length; i++ )
					{
						if( el[i].checked == true )
						{
							value	=	el[i].value;
							break;
						}
					}
				}
				break;
			case	"checkbox":
				break;
		}
		return	value;
	}

/**
*	select a radio button
*
*	@param	string	radio	name of the radio group
*	@param	string	value	value of the button to select
*/
	function	selectRadio( radio, value )
	{
		var	el	=	document.forms["orderform"]['data['+radio+']'];
		if( typeof el == 'undefined'  )
			return;
			
		for( var i = 0; i < el.length; i++ )
		{
			if( el[i].value == value )
				el[i].checked	=	true;
			else
				el[i].checked	=	false;
		}
	}

/**
*	select a checkbox
*
*	@param	string	checkbox	name of the checkbox
*	@param	string	value		value of the button to select
*/
	function	selectCheckbox( checkbox, value )
	{
		var	el	=	document.forms["orderform"]['data['+checkbox+']'];
		if( typeof el == 'undefined'  )
			return;
			
		if( value == "on" )
			el.checked	=	true;
		else
			el.checked	=	false;
	}

/**
*	set focus on a field
*
*	@param	string	field	fieldname
*/
	function	setFocus( field )
	{
		var	fieldtype	=	ucuoFields[field].type;
		
		switch( fieldtype )
		{
			case	"float":
			case	"double":
			case	"int":
			case	"blz":
			case	"plz":
			case	"name":
			case	"string":
			case	"firma":
			case	"email":
			case	"date":
			case	"profiseller":
			case	"0700":
			case	"vorwahl":
			case	"telnr":
				document.forms["orderform"]['data['+field+']'].focus();
				break;
			case	"radio":
			case	"enum":
				break;
			case	"checkbox":
				break;
		}
	}
	
