function checkVereinsProfilForm(vereinUrl, lang, email) {

    var errorMessages = setErrorMessages(lang);
    var error = false;
    var fields = new Array('strasse', 'plz', 'ort', 'anzahl_reservierungen', 'reservierungen_seite');
    var numberFields = new Array('plz', 'anzahl_reservierungen', 'reservierungen_seite');
		var bzFields = new Array('buchbarer_zeitraum');
    
    error = validateFields(lang, fields, error);
    error = validateNumberFields(lang, numberFields, error);
		error = validateBuchbarerZeitraum(lang, bzFields, error);
    
    if (email) {
        var emailFields = new Array("email");
        error = validateEmail(lang, emailFields, error);
    } // if
    
    if (error) {
        return false;   
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/vereinsprofil_aendern",
            data: $("#vereinsProfilForm").serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#successMessage").html(e);
                $("#ajaxReservierungenLoader").hide();
            },
            error: function(e) {
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax
        return false;
    } // if-else

} // function

function validateBuchbarerZeitraum(lang, fields, error) {
	if (!error) {
		var error = false;
	} // if
	var regBZ = /^\d*[1-9]+(d|m|y|w)$/;
	if (fields.length > 0) {
		for(i=0; i<=fields.length-1; i++) {
			var val = jQuery.trim($("#"+fields[i]).val());
			if (!regBZ.test(val)) {
				error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					alert($("#"+fields[i]+"_errorMessage").val());
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val('Falsches Format');
				} // if-else
			} else {
				$("#"+fields[i]).removeClass('input_error');
			} // if-else			
		} // for
	} // if
	return error;

} // function

function deleteNewsItem(vereinUrl, objectId, lang) {

    $.ajax({
        type: "POST",
        url: url+"/"+vereinUrl+"/vereinsprofil/news_loeschen",
        data: "objectid="+objectId,
        beforeSend: function(e) {
            $("#ajaxReservierungenLoader").show();
        },
        success: function(e) {
            $("#successMessage").html(e);
            $("#ajaxReservierungenLoader").hide();
        },
        error: function(e) {
            $("#ajaxReservierungenLoader").hide();
        }
    }); // ajax
    return false;
    

} // function

function deleteVereinsLogo(vereinUrl, lang) {

    $.ajax({
        type: "POST",
        url: url+"/"+vereinUrl+"/vereinsprofil/logo_loeschen",
        data: "loeschen=true",
        beforeSend: function(e) {
            $("#ajaxReservierungenLoader").show();
        },
        success: function(e) {
            $("#trVereinLogo").html(e);
            $("#ajaxReservierungenLoader").hide();
        },
        error: function(e) {
            $("#ajaxReservierungenLoader").hide();
        }
    }); // ajax
    return false;
    
} // function

/**
* function updateVereinRessource
* purpose: usertype admin kann daten des vereins ändern
* template: tennis_det_ajax_ressource_editieren
**/
function updateVereinRessource(vereinUrl, lang) {
    
    var error = false;
    var fields = new Array("name");
    var fieldsHH = new Array("startzeitHH", "endzeitHH");
    var fieldsMM = new Array("startzeitMM", "endzeitMM");
    var errorMessages = new Array(" * Platzname", " * Startzeit - Stunde", " * Startzeit - Minute", " * Endzeit - Stunde", " * Endzeit - Minute");
    var errorMessagesHH = new Array(" * Startzeit - Stunde muss im Bereich zwischen 00 und 24 sein", " * Endzeit - Stunde muss im Bereich zwischen 00 und 24 sein");
    var errorMessagesMM = new Array(" * Startzeit - Minute muss 00 sein", " * Endzeit - Minute muss 00 sein");
    var errorMessagesText = "<ul class='errorList'>";
    
    for(i=0; i<=fields.length-1; i++) {
        if($("#"+fields[i]).val() == "") {
            error = true;
            $("#"+fields[i]).addClass('inputErrorBorder');
            errorMessagesText += "<li>"+errorMessages[i]+"</li>";
        } else {
            $("#"+fields[i]).removeClass('inputErrorBorder');
        }
    } //for 
    
    for(i=0; i<=fieldsHH.length-1; i++) {
        if($("#"+fieldsHH[i]).val() == "" || $("#"+fieldsHH[i]).val() > 24 || $("#"+fieldsHH[i]).val() <= 0 || isNaN($("#"+fieldsHH[i]).val())) {
            error = true;
            $("#"+fieldsHH[i]).addClass('inputErrorBorder');
            errorMessagesText += "<li>"+errorMessagesHH[i]+"</li>";
        } else {
            $("#"+fieldsHH[i]).removeClass('inputErrorBorder');
        }
    } //for
    
    for(i=0; i<=fieldsMM.length-1; i++) {
        if($("#"+fieldsMM[i]).val() == "" || $("#"+fieldsMM[i]).val() != 0 || isNaN($("#"+fieldsMM[i]).val())) {
            error = true;
            $("#"+fieldsMM[i]).addClass('inputErrorBorder');
            errorMessagesText += "<li>"+errorMessagesMM[i]+"</li>";
        } else {
            $("#"+fieldsMM[i]).removeClass('inputErrorBorder');
        }
    } //for
    
    // endzeit muss größer als startzeit sein
    if ($("#startzeitHH").val() >= $("#endzeitHH").val()) {
        error = true;
        errorMessagesText += "<li>* Endzeit - Stunde muss gr&ouml;&szlig;er als Startzeit - Stunde sein</li>";
    }
    
    if (error) {
        $("#platzErrorMessages").html(errorMessagesText).addClass('input_error');
        return false;
    } else {
        $("#platzErrorMessages").html('');
        $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/platz_aendern",
            data: $("#editResourceForm").serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#platzErrorMessages").html(e);
                $("#ajaxReservierungenLoader").hide();
                updateVereinsRessourcen(vereinUrl, $("#objectref").val(), lang);
            },
            error: function(e) {
                $("#platzErrorMessages").html('Fehler: Bitte versuchen Sie es sp&auml;ter nochmals.');  
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
        return false;
    } // if else
    
} // function

/**
* function updateVereinsRessourcen
* purpose: fetches the changes of the resources drop downs in the vereins profil
**/
function updateVereinsRessourcen(vereinUrl, vereinId, lang) {
    $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/plaetze",
            data: "change=true",
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#contentReiterPlaetze").html(e);
                $("#ajaxReservierungenLoader").hide();
            },
            error: function(e) {
                $("#platzErrorMessages").html('Fehler: Bitte versuchen Sie es sp&auml;ter nochmals.');  
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    
} // function

function editVereinsMitglied(vereinUrl, id, lang) {
    
    if ($("#"+id).val() == -1) {
        $("#platzResultDiv").html('<ul class="errorList"><li>Bitte w&auml;hlen Sie ein Mitglied aus, das Sie editieren m&ouml;chten</li></ul>');
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/get_mitglied",
            data: "id="+$("#"+id).val(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#mitgliederResultDiv").html(e);
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#mitgliederResultDiv").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!');
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    } // if-else
    
} // function

function editVereinNews(vereinUrl, id, lang) {
    
    if (id == 0) {
        var ajaxUrl = url+"/"+vereinUrl+"/vereinsprofil/news/neu";
        var ajaxId = 0;
    } else {
        var ajaxUrl = url+"/"+vereinUrl+"/vereinsprofil/news/"+$("#"+id).val();
        var ajaxId = $("#"+id).val();
    } // if-else
    if ($("#"+id).val() == -1) {
        $("#newsResultDiv").html('<ul class="errorList"><li>Fehler: Bitte w&auml;hlen Sie eine News aus, das Sie editieren m&ouml;chten</li></ul>');
    } else {
        $.ajax({
            type: "POST",
            url: ajaxUrl,
            data: "id="+ajaxId,
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#newsResultDiv").html(e);
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#newsResultDiv").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!');
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    } // if-else
    
} // function

function validateNews(vereinUrl, lang) {
    
    var error = false;
    var errorMessages = setErrorMessages(lang);
    var fields = new Array("title", "teaser", "text");
    error = validateFields(lang, fields, error);
    
    var dateFields = new Array("date_day", "date_month", "date_year");
    error = validateDateFields(lang, dateFields, error);
    
    if (error) {
        return false;
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/news/speichern",
            data: $("#editNewsForm").serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#successMessage").html(e);
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#successMessage").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!');
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    } // if-else
    
} // function

/**
* function updateMitglied
* zweck: mitgliedsdaten ändern
* template: tennis_det_ajax_mitglied_aendern
**/
function updateMitglied(vereinUrl, lang) {
    
    var error = false;
    var errorMessages = setErrorMessages(lang);
    var fields = new Array("anrede", "sname", "fname", "kategorie");
    
    error = validateFields(lang, fields, error);
    
    if (error) {
        return false;
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/mitglied_aendern",
            data: $('#editMigliedForm').serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#successMessageMitglied").html(e);   
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#successMessageMitglied").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!').addClass('input_error');
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    } // if-else
    return false;
    
} // function

function toggleAddMitglied(vereinUrl, lang) {
    
    $.ajax({
        type: "POST",
        url: url+"/"+vereinUrl+"/vereinsprofil/neues_mitglied",
        data: "id="+vereinUrl,
        beforeSend: function(e) {
            $("#ajaxReservierungenLoader").show();
        },
        success: function(e) {
            $("#mitgliederResultDiv").html(e);
            $("#ajaxReservierungenLoader").hide();
        }, // success
        error: function(e) {
            $("#mitgliederResultDiv").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!').addClass('input_error');
            $("#ajaxReservierungenLoader").hide();
        }
    }); // ajax 
    
    return false;
    
} // function


function toggleAddKategorie(vereinUrl, lang) {
    
    $.ajax({
        type: "POST",
        url: url+"/"+vereinUrl+"/vereinsprofil/neue_mitgliederkategorie",
        data: "id="+vereinUrl,
        beforeSend: function(e) {
            $("#ajaxReservierungenLoader").show();
        },
        success: function(e) {
            $("#kategorienResultDiv").html(e);
            $("#ajaxReservierungenLoader").hide();
        }, // success
        error: function(e) {
            $("#kategorienResultDiv").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!').addClass('input_error');
            $("#ajaxReservierungenLoader").hide();
        }
    }); // ajax 
    
    return false;
        
} // function


/**
* addMitglied -> fügt im vereinsprofil ein neues mitglied hinzu
* template => tennis_det_verein_add_mitglied
**/
function addNewMitglied(vereinsUrl, lang, email) {
    
    var error = false;
    var errorMessages = setErrorMessages(lang);
    var fields = new Array("add_anrede", "add_fname", "add_sname", "add_kategorie", "add_strasse", "add_ort", "add_plz");
    error = validateFields(lang, fields, error);
    
    var numberFields = new Array("add_plz");
    error = validateNumberFields(lang, numberFields, error);
    
    var dateFields = new Array("add_day", "add_month", "add_year");
    error = validateDateFields(lang, dateFields, error);
    
    if (email) {
        var emailFields = new Array("add_email");
        error = validateEmail(lang, emailFields, error);
    } // if
        
    if (error) {
        return false;
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinsUrl+"/vereinsprofil/neues_mitglied_speichern",
            data: $('#addMigliedForm').serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            }, // beforeSend
            success: function(e) {
                $("#successMessageMitglied").html(e);
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#successMessageMitglied").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!').addClass('input_error');
                $("#ajaxReservierungenLoader").hide();
            } // error
        }); // ajax 
    } // if-else
    return false;
    
} // function

function validateFields(lang, fields, error) {

    var errorMessages = setErrorMessages(lang);
    if (fields.length > 0) {
        for(i=0; i<=fields.length-1; i++) {
            var val = jQuery.trim($("#"+fields[i]).val());
            if (val == "" ||  val == -1 || val == errorMessages[0]) {
                error = true;
                $("#"+fields[i]).addClass('input_error').val(errorMessages[0]);
            } else {
                $("#"+fields[i]).removeClass('input_error');
            } // if-else
        } // for
    } // if
    return error;

} // function

function validateNumberFields(lang, numberFields, error) {
    
    var numberErrorMessage = setNumberErrorMessages(lang);
    
    if (numberFields.length > 0) {
        for(i=0; i<=numberFields.length-1; i++) {
            var val = jQuery.trim($("#"+numberFields[i]).val());
            if (isNaN(val) == true) {
                error = true;
                $("#"+numberFields[i]).addClass('input_error').val(numberErrorMessage);
            } else {
                $("#"+numberFields[i]).removeClass('input_error');
            } // if-else
        } // for
    } // if
    return error;
    
} // function

function validateDateFields(lang, dateFields, error) {
    // wichtig: neben den datums felder ein span wo die error message ausgegeben werden kann -> datumError
    // wichtig ist auch den zu überprüfenden felder die klassen day, month und year zu geben
    if (dateFields.length > 0) {
        for(i=0; i<=dateFields.length-1; i++) {
            var val = jQuery.trim($("#"+dateFields[i]).val());
            if (isNaN(val) || val == "" || val == "dd" || val == "mm" || val == "yyyy") {
                error = true;
                $("#"+dateFields[i]).addClass('inputErrorBorder');
                if ($("#"+dateFields[i]).hasClass('day')) {
                    $("#"+dateFields[i]).addClass('input_error').val('dd');
                } // if
                if ($("#"+dateFields[i]).hasClass('month')) {
                    $("#"+dateFields[i]).addClass('input_error').val('mm');
                } // if
                if ($("#"+dateFields[i]).hasClass('year')) {
                    $("#"+dateFields[i]).addClass('input_error').val('yyyy');
                } // if
            } else {
                // check für einen gültigen tag
                if ($("#"+dateFields[i]).hasClass('day')) {
                    if (val <= 0 || val > 31) { 
                        error = true;
                        var error2 = true;
                        $("#"+dateFields[i]).addClass('inputErrorBorder').val('dd');
                    } else {
                        $("#"+dateFields[i]).removeClass('inputErrorBorder input_error');
                    } // if-else
                } // if
                // check für ein gültiges monat
                if ($("#"+dateFields[i]).hasClass('month')) {
                    if (val <= 0 || val > 12) { 
                        error = true;
                        var error2 = true;
                        $("#"+dateFields[i]).addClass('inputErrorBorder').val('mm');
                    } else {
                        $("#"+dateFields[i]).removeClass('inputErrorBorder input_error');
                    } // if-else
                } // if
                // check für ein gültiges jahr
                if ($("#"+dateFields[i]).hasClass('year')) {
                    if (val.length != 4 || val < 1900) { 
                        error = true;
                        var error2 = true;
                        $("#"+dateFields[i]).addClass('inputErrorBorder').val('yyyy');
                    } else {
                        $("#"+dateFields[i]).removeClass('inputErrorBorder input_error');
                    } // if-else
                } // if
                if (!error2) {
                    $("#"+dateFields[i]).removeClass('inputErrorBorder');
                } // if
            } // if-else
        } // for
        
        if (error && error2) {
            $("#datumError").addClass('input_error').html('Bitte das Geburtsdatum eingeben');
            error = true
        } // if
    } // if
    return error;
    
} // function

function validateEmail(lang, emailFields, error) {
    
    var errorMessages = setErrorMessages(lang);
    for(i=0; i<=emailFields.length-1; i++) {
        var val = jQuery.trim($("#"+emailFields[i]).val());
        if(val == "" || val == errorMessages[1] || EMail(val) == false) {
            error = true;
            $("#"+emailFields[i]).addClass('input_error').val(errorMessages[1]);
        } else {
            $("#"+emailFields[i]).removeClass('input_error');   
        } // if-else    
    } // for
    return error;
    
} // function


/**
* function editMitgliederKategorie
* zweck: aendern der Mitgliederkategorie des jeweiligen Vereins
* template: tennis_l_select_mitgliedskategorien
**/
function editMitgliederKategorie(vereinsUrl, lang) {
    
    if ($("#mitgliederkategorien").val() == -1) {
        $("#contentBottom").html('Fehler: Bitte wählen Sie eine Mitgliederkategorie aus!').addClass('input_error');     
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinsUrl+"/vereinsprofil/mitgliederkategorie_editieren",
            data: "id="+$("#mitgliederkategorien").val(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#kategorienResultDiv").html(e);
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#kategorienResultDiv").html('Fehler: Bitte versuchen Sie es sp&auml;ter nocheinmal!').addClass('input_error');
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    } // if-else
    return false;
    
} // function

/**
* function updateMitgliederKategorie
* zweck: admin eines vereins kann die mitgliederkateogrien ändern
* template: tennis_det_mitgliederkategorie_aendern
**/
function updateMitgliederKategorie(vereinsUrl, lang) {
    
    var error = false;
    var errorTitle = false;
    var errorMessagesTitle = setErrorMessages(lang);
    var errorMessagesText = "";
    var fieldsTitle = new Array("name");    
    error = validateFields(lang, fieldsTitle, error);
    var fieldsHour = new Array();
    var fieldsMinute = new Array();
    for (var i=0; i<=6; i++) {
        fieldsHour.push("player_perm_von_"+i+"_Hour");
        fieldsHour.push("player_perm_bis_"+i+"_Hour");
        fieldsMinute.push("player_perm_von_"+i+"_Minutes");
        fieldsMinute.push("player_perm_bis_"+i+"_Minutes");
    } // for

    //var errorMessagesHour = new Array("* spielberechtigt von - Stunde", " * spielberechtigt bis - Stunde");
    //var errorMessageMinute = new Array(" * spielberechtigt von - Minuten",  " * spielberechtigt bis - Minuten");
    //var errorWeekdays = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    
    for(i=0; i<=fieldsHour.length-1; i++) {
        if($("#"+fieldsHour[i]).val() == "" || isNaN($("#"+fieldsHour[i]).val()) || $("#"+fieldsHour[i]).val() > 23 || $("#"+fieldsHour[i]).val() <= 0) {
            error = true;
            $("#"+fieldsHour[i]).addClass('inputErrorBorder');
            //errorMessagesText += errorWeekdays[i]+"<br />";
        } else {
            $("#"+fieldsHour[i]).removeClass('inputErrorBorder');
        } // if-else
    } //for 
    
    for(i=0; i<=fieldsMinute.length-1; i++) {
        if($("#"+fieldsMinute[i]).val() == "" || isNaN($("#"+fieldsMinute[i]).val()) || $("#"+fieldsMinute[i]).val() != 00) {
            error = true;
            $("#"+fieldsMinute[i]).addClass('inputErrorBorder');
            //errorMessagesText += errorWeekdays[i]+" "+"<br />";
        } else {
            $("#"+fieldsMinute[i]).removeClass('inputErrorBorder');
        } // if-else
    } //for 
    
    if (error) {
        $("#successMessageCategory").html("<ul class='errorList'><li>Fehler: Bitte kontrollieren Sie die orange umrandeten Felder </li></ul>"+errorMessagesText).addClass('input_error');
        return false;
    } else {
        $.ajax({
            type: "POST",
            url: url+"/"+vereinsUrl+"/vereinsprofil/mitgliederkategorie_aendern",
            data: $("#editMigliederKategorieForm").serialize(),
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#successMessageCategory").html(e);   
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#successMessageCategory").html(e);
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
        return false;
    } // if-else

} // function


function generateCSV(vereinUrl, lang) {
    
    $.ajax({
            type: "POST",
            url: url+"/"+vereinUrl+"/vereinsprofil/export_csv_mitglieder",
            data: "verein_url="+vereinUrl,
            beforeSend: function(e) {
                $("#ajaxReservierungenLoader").show();
            },
            success: function(e) {
                $("#successMessage").html(e);   
                $("#ajaxReservierungenLoader").hide();
            }, // success
            error: function(e) {
                $("#successMessage").html(e);
                $("#ajaxReservierungenLoader").hide();
            }
        }); // ajax 
    
} // function
