var check_array = new Array();

/**
 * checks if all required fields are filled.
 *
 * params: [iForm (form number), sCheck ("all", "one") aFields (required fields array)]
 */
function check_required ()
	{
	if ( check_required.arguments.length >= 2 )
		{
		iForm = check_required.arguments[0];
		sCheck = check_required.arguments[1]; 
		}
	else
		{
		iForm = 0;
		sCheck = "all";
		}
		
	if ( check_required.arguments.length >= 3 )
		{
		check_array = check_required.arguments[2];
		}

	if ( sCheck == "all" )
		{
		for( i = 0; i < check_array.length; i++ )
			{
			
			if( (document.forms[iForm].elements[check_array[i][0]].type == "text" && document.forms[iForm].elements[check_array[i][0]].value == "" ) || 
				(document.forms[iForm].elements[check_array[i][0]].type == "textarea" && document.forms[iForm].elements[check_array[i][0]].value == "" ) ||
			    (document.forms[iForm].elements[check_array[i][0]].type == "checkbox" && document.forms[iForm].elements[check_array[i][0]].checked != true ) )
				{
				alert( "Bitte geben Sie fuer \n\n"+check_array[i][1]+"\n\neinen gueltigen Wert ein." );
				document.forms[iForm].elements[check_array[i][0]].focus();
				return false;
				}
			if ( check_array[i][0] == 'FormData[eMail]' )
				{
				if ( !check_email( document.forms[iForm].elements[check_array[i][0]].value, check_array[i][1]) )
					{
					document.forms[iForm].elements[check_array[i][0]].focus();
					return false;
					}
				}	
			}			
		}
	else if ( sCheck == "one" )
		{
		
		//alert(check_array[i][0] + "one");
		
		sMesg = "Bitte geben Sie fuer \n\n";
		for ( i = 0; i < check_array.length; i++ )
			{
			sMesg += check_array[i][1];
			if ( i == check_array.length - 2 )
				sMesg += " oder";
			else if ( i != check_array.length - 1 )
				sMesg +=  ",";
			sMesg += "\n";
			if( document.forms[iForm].elements[check_array[i][0]].value != "" )
				{
				return true;
				}
			}
		alert( sMesg +"\neinen gueltigen Wert ein." );
		document.forms[iForm].elements[check_array[0][0]].focus();
		return false;
		}

	return true;
	}


/**
 * simple check if the given string is a correct email address.
 */
function check_email( sEMail, sName )
	{
	if ( check_email.arguments.length > 2 )
		{
		iForm = check_email.arguments[2];
		}
	else
		{
		iForm = 0;
		}

	if ( sEMail.length == 0 )
		return true;

	if ( sEMail.indexOf("@") == -1 ||
			sEMail.indexOf(".") == -1 ||
			sEMail.indexOf(">") > -1 ||
			sEMail.indexOf("<") > -1 ||
			sEMail.indexOf(" ") > -1 )
		{		

		alert("'" + sEMail + "' ist keine korrekte eMail-Adresse.");

		//document.forms[iForm].elements[sName].focus();

		return  false;
		}

   return true;
   }


/**
 * compares the number of checked check- and radioboxes with
 * the given num.
 */
function check_count (sHow, iNum)
	{
	if ( check_count.arguments.length > 2 )
		{
		iForm = check_count.arguments[2];
		}
	else
		{
		iForm = 0;
		}

	iCount = 0;
	for ( i = 0; i < document.forms[iForm].elements.length; i++ )
		{
		if ( document.forms[iForm].elements[i].type == "checkbox" || document.forms[iForm].elements[i].type == "radio" )
			{
			if ( document.forms[iForm].elements[i].checked )
				iCount++;
			}
		}

	if ( sHow == "exact" )
		{
		bRet = iCount == iNum;
		if ( !bRet ) sMesg = "Bitte " + ((iCount > iNum) ? "nur ": "") + iNum + " Element" + ((iNum > 1) ? "e" : "") + " whlen.";
		}
	else if ( sHow == "min" )
		{
		bRet = iCount >= iNum;
		if ( !bRet ) sMesg = "Sie mssen mindestens " + iNum + " Element" + ((iNum > 1) ? "e" : "") + " whlen.";
		}
	else if ( sHow == "max" )
		{
		bRet = iCount <= iNum;
		if ( !bRet )
			{
			if ( iNum == 0 )
				sMesg = "Sie drfen kein Element whlen.";
			else
				sMesg = "Sie drfen hchstens " + iNum + " Element" + (iNum > 1) ? "e" : "" + " whlen.";
			}
		}

	if ( !bRet ) alert (sMesg);
	
	return bRet;
	}
