function validateFormOnSubmit(theForm) {
	// clear form errors
	validateFormClearErrors(theForm);
	
	// validate
	var reason = "";

	reason += validateName(theForm.k_name);
	reason += validateAdresse(theForm.k_adresse);
	reason += validateZip(theForm.k_zip);
	reason += validateCity(theForm.k_city);
	reason += validateTelefon(theForm.k_telefon);
	reason += validateEmail(theForm.k_email);
	      
	if (reason != "") {
		alert($ORDBOG.translate('ERROR_SOME_FIELDS_ARE_ERRORNEOUS')+":\n\n" + reason);
    	return false;
  	}

	return true;
}

function validateFormCompetitionChampignonOnSubmit(theForm) {
	// clear form errors
	validateFormClearErrors(theForm);
	
	// validate
	var recipe_submitted = validateRequireMinimum([theForm.k_recipe_image, theForm.k_recipe_text, theForm.k_recipe_file]);
	
	var reason = "";
	if (!recipe_submitted)
	{
		reason += $ORDBOG.translate('ERROR_SUBMIT_COMPETITION_RECIPE')+".\n";
		$('#champignon_recipe_group').removeClass('form_error').addClass('form_error');
	} else if (theForm.k_recipe_text.value==$ORDBOG.translate('YOUR_RECIPE') && theForm.k_recipe_file.value=='') {
		reason += $ORDBOG.translate('ERROR_SUBMIT_COMPETITION_RECIPE')+".\n";
		$('#champignon_recipe_group').removeClass('form_error').addClass('form_error');
	}

	reason += validateName(theForm.k_name);
	reason += validateAdresse(theForm.k_adresse);
	reason += validateZip(theForm.k_zip);
	reason += validateCity(theForm.k_city);
	reason += validateTelefon(theForm.k_telefon);
	reason += validateEmail(theForm.k_email);
	      
	if (reason != "") {
		alert($ORDBOG.translate('ERROR_SOME_FIELDS_ARE_ERRORNEOUS')+":\n\n" + reason);
    	return false;
  } else if ($(theForm.k_recipe_text).val().toLowerCase()==$ORDBOG.translate('YOUR_RECIPE').toLowerCase()) {
  	// remove YOUR_RECIPE for submit
	$(theForm.k_recipe_text).val('');
  }

	return true;
}

function validateFormCompetitionMajsOnSubmit(theForm) {
	// clear form errors
	validateFormClearErrors(theForm);
	
	// validate
	var recipe_submitted = validateRequireMinimum([theForm.k_recipe_image, theForm.k_recipe_text]);
	
	var reason = "";
	if (!recipe_submitted)
	{
		reason += $ORDBOG.translate('ERROR_SUBMIT_COMPETITION_RECIPE')+".\n";
		$('#majs_recipe_group').removeClass('form_error').addClass('form_error');
	} else if (theForm.k_recipe_text.value==$ORDBOG.translate('YOUR_RECIPE') && theForm.k_recipe_file.value=='') {
		reason += $ORDBOG.translate('ERROR_SUBMIT_COMPETITION_RECIPE')+".\n";
		$('#majs_recipe_group').removeClass('form_error').addClass('form_error');
	}

	reason += validateName(theForm.k_name);
	reason += validateAdresse(theForm.k_adresse);
	reason += validateZip(theForm.k_zip);
	reason += validateCity(theForm.k_city);
	reason += validateTelefon(theForm.k_telefon);
	reason += validateEmail(theForm.k_email);
	      
	if (reason != "") {
		alert($ORDBOG.translate('ERROR_SOME_FIELDS_ARE_ERRORNEOUS')+":\n\n" + reason);
    	return false;
  } else if ($(theForm.k_recipe_text).val().toLowerCase()==$ORDBOG.translate('YOUR_RECIPE').toLowerCase()) {
  	// remove YOUR_RECIPE for submit
	$(theForm.k_recipe_text).val('');
  }

	return true;
}



function validateFormClearErrors(theForm)
{
	$(theForm).find("input,textarea,div").removeClass('form_error');
}

function trim(s) {
  return s.replace(/^\s+|\s+$/, '');
} 

function validateSvar(fld) {
    var error = "";
 
    if (!fld.checked) { 
        error = $ORDBOG.translate('ERROR_ANSWER_COMPETITION_QUESTION')+".\n"
    } 
    return error;  
}

function validateName(fld) {
    var error = "";
 
    if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_NAME_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    } 
    return error;  
}

function validateEmail(fld) {
    var error = "";
	var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
 
    if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_EMAIL_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    } else if (!emailFilter.test(tfld)) {              
        error = $ORDBOG.translate('ERROR_EMAIL_ENTER_VALID')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
	} else if (fld.value.match(illegalChars)) {
        error = $ORDBOG.translate('ERROR_EMAIL_CONTAINS_ILLEGAL_CHARS')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    } 
    return error;
}

function validateAdresse(fld) {
    var error = "";
 
    if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_ADDRESS_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    }
    return error;
}

function validateZip(fld) {
    var error = "";
 	var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   	if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_ZIP_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error'); 
    } else if (isNaN(parseInt(stripped))) {
        error = $ORDBOG.translate('ERROR_ZIP_CONTAINS_ILLEGAL_CHARS')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    }
    return error;
}

function validateCity(fld) {
    var error = "";
 
    if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_CITY_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    } 
    return error;
}

function validateTelefon(fld) {
    var error = "";
 	var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   	if (fld.value == "") {
        error = $ORDBOG.translate('ERROR_PHONE_REQUIRED')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    } else if (isNaN(parseInt(stripped))) {
        error = $ORDBOG.translate('ERROR_PHONE_CONTAINS_ILLEGAL_CHARS')+".\n";
        $(fld).removeClass('form_error').addClass('form_error');
    }
    return error;
}

function validateRequireMinimum(arr, min)
{
	var nb_valid = 0;
	var i = 0;
	var l = arr.length;

	min = typeof(min)!="undefined" ? min:1;
	min = arr.length>=min ? min:arr.length;
	
	while (i<l && nb_valid<min)
	{
		switch(arr[i].type.toLowerCase())
		{
			case 'text':
			case 'password':
			case 'textarea':
			case 'file':
				nb_valid += $(arr[i]).val()!='' ? 1:0;
			break;
		}
		
		// increment to next form field
		i++;
	}
	
	return nb_valid>=min;
}

