var breitenGrad,langenGrad,date;
var dataURL = "";
var blob,newday,longrider;
var xinner = $("#GeoLocSaveXCOOR");
var yinner = $("#GeoLocSaveYCOOR");


//##### für localsafe  array datenkonstrukt #################
var KalenderDatakonstrukt = [];
var ZeiterfassungDatakonstrukt = [];
var KlientDatakonstrukt = [];

//arrays zum zwischen speichern
var Kalenderzwischenspeicher = [];

var Klientzwischenspeicher = [];

var SetTimeoutTime = 10000;


var UpdatekalenderOid, Updatekalenderbetreff, Updatekalendernotice, UpdatekalenderstartZ, UpdatekalenderendZ, Updatekalenderday;

function BuildCollapsibleSet(jsonString) {
    try {
        if (jsonString.length === 0) {
            return;
        }

        var kollektion = $.parseJSON(jsonString);
        actuallyBuildCollapsibleSet(kollektion, null);
    } catch (exception) {
        console.log("Fehler(BuildCollapsibleSet): " + exception.message);
    }
}

function actuallyBuildCollapsibleSet(kollektion, checkedArray) {
    $("#kollabierbar1").empty();

    collapsibleHtml = "";
    
    $.each(kollektion, function (index) {
        buildGoalTreeItem(kollektion[index], checkedArray);
    });

    $("#kollabierbar1").append(collapsibleHtml);
}

var collapsibleHtml;
function buildGoalTreeItem(goalItem, checkedArray) {
	collapsibleHtml += '<input onclick="toggleOnclick(this);" type="button" class="toggle-btn" value="' + goalItem.Header + '" />';
	collapsibleHtml += '<div style="display: none;" class="kollabierbar">';

	try {
		$.each(goalItem.Children, function (index) {
			if (!goalItem.Children[index].IsLeaf) {
			    buildGoalTreeItem(goalItem.Children[index], checkedArray);
			} else {
				var goalOid = goalItem.Children[index].ValueListEntryOid;
				var goalHeader = goalItem.Children[index].Header;

                checkedString = checkedArray !== null && checkedArray[goalOid] != undefined ? "checked" : "";

                collapsibleHtml += '<div style="display: block;"><input type="checkbox" style="width: auto;" onclick="updateGoals(' + goalOid + ')" ' + checkedString + ' value="' + goalOid + '">' + goalHeader + '</div>';
            }
        });
    } catch (exception) {
        console.log("Fehler bei der Baumkonstruktion: " + exception.message);
    }

    collapsibleHtml += '</div>';
}

function loadGoalsOnSuccess(json) {
    if (json == "SessionTimeout") {
        window.location.href = redirectLink;
        return;
    }

    BuildCollapsibleSet(json);
}

function loadServiceCategoriesOnSuccess(json) {
    if (json == "SessionTimeout") {
        window.location.href = redirectLink;
        return;
    }

	var liste = $.parseJSON(json);
	$("#leistungen_select").empty();
	$("#leistungen_select").val("");
	$.each(liste, function(index, leistung) {
		 $("#leistungen_select").append('<option value="' + leistung.ServiceDescriptionOid + '">' + leistung.Name + '</option>');
	});

	if (liste[0] !== undefined) {
		$("#leistungen_select").val(liste[0].ServiceDescriptionOid);

        makeAjaxCall("GET", setServiceDescriptionUrl, null, { pServiceDescriptionOid: liste[0].ServiceDescriptionOid }, null);
    }
}

function showAjaxError(jqXHR, textStatus, errorThrown) {
    hideSanduhr();
    if (jqXHR.status == 0) {
        toggleErrorPopup("Es besteht zurzeit keine Internetverbindung." +
                        " Die Daten werden zwischen Gespeichert und beim nächsten Login an den Server gesendet. " + errorThrown,2);
        setTimeout(function () {
            showServiceRecords();
        }, SetTimeoutTime);
    }
    else
        toggleErrorPopup(jqXHR.status + " " + errorThrown);
}

function showErrorMsg(message) {
    toggleErrorPopup(message);
}

function resizeLabelColumns() {
    $("#tabLbl").css("width", $("#zieleLbl").css("width"));
}

zeitRegEx = /^(2[0-3]|[01]?[0-9])(:|,|\.|#|;)?([0-5][0-9])$/;


function calcDurationByStartEnd() {
    
    if ($("#enddatum_textbox").val() == $("#datum_textbox").val() || $("#enddatum_textbox").val() =="") {
        var shm = getDateObj(true);
        var ehm = getDateObj(false);

        var dur = 0;

        if (shm.getTime() < ehm.getTime()) {
            dur = parseInt(subtractDates(ehm, shm));
        }

        $("#duration_textbox").val(dur).trigger("change");
    }
    else {
        aktualDurationwithEndDate();
    }
}

function calcEndByStartDuration() {

    if ($("#enddatum_textbox").val() == $("#datum_textbox").val() || $("#enddatum_textbox").val() == "") {

        var shm2 = getDateObj(true);
        var dauer = parseInt($("#duration_textbox").val());
        if (isNaN(dauer)) return;
        var neu = addMinutes(shm2, dauer);

        var ende = (neu.getHours() < 10 ? "0" : "") + neu.getHours() + (neu.getMinutes() < 10 ? "0" : "") + neu.getMinutes();

        if (isNaN(ende)) return;
        $("#ende_textbox").val(ende).trigger("change");
    }
    else {
        aktualDurationwithEndDate();
    }
}

function calcStartByEndDuration() {
    var ehm2 = getDateObj(false);
    var dauer2 = parseInt($("#duration_textbox").val());
    if (isNaN(dauer2)) return;

    var neu2 = addMinutes(ehm2, dauer2 * -1);
    $("#start_textbox").val((neu2.getHours() < 10 ? "0" : "") + neu2.getHours() + (neu2.getMinutes() < 10 ? "0" : "") + neu2.getMinutes()).trigger("change");
}

function getDateObj(isFromStart) {
    var roh = $("#datum_textbox").val();
    var dd = parseInt(roh.slice(0, 2));
    var mm = parseInt(roh.slice(3, 5));
    var yyyy = parseInt(roh.slice(6, 10));

    var date = new Date();
    if (!isNaN(dd) && !isNaN(mm) && !isNaN(yyyy)) {
        date = new Date(yyyy, mm - 1, dd);
    }

    var hm = [0, 0];
    var ds = $("#ende_textbox").val();

    if (isFromStart) {
        ds = $("#start_textbox").val();
    }

    if (ds != "") {
        hm = stringToTime(ds);
    }

    date.setHours(hm[0]);
    date.setMinutes(hm[1]);

    return date;
}

function loadGoals(actionPath) {
    var selectedSC = $($("#scDropDown")).find(":selected").val();
    makeAjaxCall("GET", actionPath, loadGoalsOnSuccess, { pCostbearer2SupportConceptOid: selectedSC }, null);
}

function toggleMenu() {
    var menuDiv = $("#menu-div");
    $(menuDiv).fadeToggle("fast");
}

function loadServiceDescriptions() {
	var selectedCategory = $("#kategorien_select").find(":selected").val();

	makeAjaxCall("GET", loadServiceCategoriesUrl, loadServiceCategoriesOnSuccess, { pServiceCategoryOid: selectedCategory }, null);
}

function updateGoals(cbId) {
    makeAjaxCall("GET", updateGoalsUrl, null, { pGoalOid: cbId }, null);
}

function setServiceDescription() {
    var sdOid = $("#leistungen_select").find(":selected").val();
    makeAjaxCall("GET", setServiceDescriptionUrl, null, { pServiceDescriptionOid: sdOid }, null);
}

function selectServiceRecord(oid) {
    $("#versteckt").val("Speichern");
    $('html, body').animate({ scrollTop: 0 }, 'fast');

    $.ajax({
        type: "GET",
        url: setSelectedServiceRecordUrl,
        data: { recordOid: oid },
        success: function () {
            $.ajax({
                type: "GET",
                url: getSelectedRecordInformationUrl, 
                success: function (jsonServiceRecord) {
                    try {
                        if (jsonServiceRecord == "SessionTimeout") {
                            window.location.href = redirectLink;
                            return;
                        }

                        var record = $.parseJSON(jsonServiceRecord);

                        var goals = record.Goals; 
                        
                        var idArray = new Array();
                        var meinGoalsArray = new Array();

                        for (var i = 0; i < goals.length; i++) {
                            idArray[goals[i].ValueListEntryOid] = goals[i].ValueListEntryOid;
                        }

                        $.ajax({
                            type: "GET",
                            url: loadGoalsUrl,
                            data: { pCostbearer2SupportConceptOid: $($("#scDropDown")).find(":selected").val() },
                            success: function (goalsJson) {
                                if (goalsJson == "SessionTimeout") {
                                    window.location.href = redirectLink;
                                    return;
                                }

                                try {
                                    meinGoalsArray = goalsJson !== "" ? $.parseJSON(goalsJson) : "";
                                } catch (exception) {
                                    console.log("Fehler beim JSON Parsing von selectServiceRecord(" + oid + "): " + exception.message);
                                }

                                var s = record.Start[18] == "1" ? "" : record.Start.slice(11, 16);
                                var e = record.End[18] == "1" ? "" : record.End.slice(11, 16);
                                var jahr = record.Start.slice(0, 4);
                                var monat = record.Start.slice(5, 7);
                                var tag = record.Start.slice(8, 10);
                                var datum = tag + "." + monat + "." + jahr;
                            
                                var ENDjahr = record.End.slice(0, 4);
                                var ENDmonat = record.End.slice(5, 7);
                                var ENDtag = record.End.slice(8, 10);
                                var ENDdatum = ENDtag + "." + ENDmonat + "." + ENDjahr;

								$("#start_textbox").val(s);
								$("#ende_textbox").val(e);
								$("#datum_textbox").val(datum);
								$("#notiz_textbox").val(record.Notice);

								$("#enddatum_textbox").val(ENDdatum)
								$("#notiz_textbox1").val(record.Notice);
								$("#notiz_textbox2").val(record.Notice2);
								$("#notiz_textbox3").val(record.Notice3);
								$("#notiz_textbox4").val(record.Notice4);
								$("#notiz_textbox5").val(record.Notice5);

								$("#duration_textbox").val(record.RoundedDuration);
								$("#employeesDropDown").val(record.Employee.EmployeeOid);
                                
								serviceRecordEmployeeOid = record.Employee.EmployeeOid;

                                actuallyBuildCollapsibleSet(meinGoalsArray, idArray);

                                $("#anlegenEditierenBtn").val("Speichern");

                                $.ajax({
                                    type: "GET",
                                    url: loadServiceCategoriesUrl,
                                    success: function (result) {
                                        if (result == "SessionTimeout") {
                                            window.location.href = redirectLink;
                                            return;
                                        }

										$("#kategorien_select").val(record.ServiceDescription.Category.ServiceCategoryOid);

										var liste = $.parseJSON(result);
										$("#leistungen_select").empty();
										$("#leistungen_select").val("");
										$.each(liste, function (index, leistung) {
											$("#leistungen_select").append('<option value="' + leistung.ServiceDescriptionOid + '">' + leistung.Name + '</option>');
										});

										$("#leistungen_select").val(record.ServiceDescription.ServiceDescriptionOid);
										makeAjaxCall("GET", setServiceDescriptionUrl, null, { pServiceDescriptionOid: record.ServiceDescription.ServiceDescriptionOid }, null);

                                        toggleLabel("duration_textbox");
                                        toggleLabel("start_textbox");
                                        toggleLabel("ende_textbox");

                                        $("input").prop("disabled", false);
                                        $("#abbrechenBtn").prop("disabled", true);
                                        $("select").prop("disabled", false);
                                        toggleSelectClassesForElement("#kategorien_select", "#kategorien-select-container");
                                        toggleSelectClassesForElement("#leistungen_select", "#leistungen-select-container");
                                        toggleSelectClassesForElement("#recordLoader_select", "#record-loader-select-container");

                                        $("#abbrechenBtn").prop("disabled", false);

                                        hideSanduhr();
                                    },
                                    error: showErrorMsg,
                                    data: { pServiceCategoryOid: record.ServiceDescription.Category.ServiceCategoryOid }
                                });
                            },
                            error: showAjaxError,
                            complete: hideSanduhr
                        });

                    } catch (exception1) {
                        console.log("Fehler beim JSON Parsing von selectServiceRecord(" + oid + "): " + exception1.message);
                    }
                },
                error: showAjaxError
            });
        }
    });
}

function activateForm(actionPath) {
	$("input").prop("disabled", false);
	$("textarea").prop("disabled", false);
	$("#kategorien_select, #leistungen_select, #recordLoader_select").prop("disabled", false);
	toggleSelectClassesForElement("#kategorien_select", "#kategorien-select-container");
	toggleSelectClassesForElement("#leistungen_select", "#leistungen-select-container");
	toggleSelectClassesForElement("#recordLoader_select", "#record-loader-select-container");

	loadGoals(actionPath);

	$("#kategorien_select").val($("#kategorien_select option").eq(0).val());

    loadServiceDescriptions();
}

function resetRecordForm() {
    showSanduhr();

    $("#versteckt").val("Anlegen");
    $("#anlegenEditierenBtn").val("Anlegen");

    clearZED();

    $("#start_textbox").val("").trigger("change");
    $("#ende_textbox").val("").trigger("change");
    $("#notiz_textbox").val("").trigger("change");
    $("#duration_textbox").val("").trigger("change");

    $("#datum_textbox").val(getDateStringWithLeadingZeros(new Date()));

	$("#kategorien_select").val($("#kategorien_select option").eq(0).val());

    var selectedCategory = $("#kategorien_select").find(":selected").val();

    $.ajax({
        type: "GET",
        url: loadServiceCategoriesUrl,
        data: { pServiceCategoryOid: selectedCategory },
        success: function (json) {
            loadServiceCategoriesOnSuccess(json);

            $.ajax({
                type: "GET",
                url: setSelectedServiceRecordUrl,
                data: { recordOid: null },
                success: function () {
                    loadGoals(loadGoalsUrl);

                    hideSanduhr();
                },
                error: showAjaxError
            });
        }
    });
}

function toggleOnclick(element) {
    var collapsedDiv = $(element).next("div");
    var isHidden = "none" === $(collapsedDiv).css("display");
    var newIcon = "url('";
    newIcon += isHidden ? toggleIconUContentUrl : toggleIconDContentUrl;
    newIcon += "')";

    $(element).css("background-image", newIcon);
    $(collapsedDiv).fadeToggle("fast");
}

$(document).mouseup(function (e) {
    var menu = $("#menu-div");
    var menuBtn = $("#menu-btn");

    if (!menu.is(e.target) && !menuBtn.is(e.target) && menu.has(e.target).length === 0) {
        menu.fadeOut("fast");
    }
});

function saveCreateServicerecod() {
    showSanduhr();

	//if (validateTimeField("#start_textbox") && validateTimeField("#ende_textbox")) {
		validateServiceRecordBeforeSubmit();
	//} else {
//		hideSanduhr();
//	}
}

function validateTimeField(id) {
    var timeStr = $(id).val();
    var zeitStr = id == "#start_textbox" ? "Start" : "End";

    if (timeStr != "" && !zeitRegEx.test(timeStr)) {
        showZeiterfassungsError("Bitte geben Sie eine " + zeitStr + "xxx-Zeit in einem g&uuml;ltigen Format (HH:MM oder HHMM) an.");
        return false;
    } else {
        clearZED();
        return true;
    }
}

recordToDelete = 0;
function togglePopup(serviceRecordOid) {
    recordToDelete = serviceRecordOid;

    var isShowing = $(".modalWrapper").css("display") == "none";
    var displayValue = $(".modalWrapper").css("display") == "block" ? "none" : "block";

    toggleModalWrapper();
    $("#popupDiv").css("display", displayValue);

    if (isShowing) {
        var h = 0;
        var t = $("#popupTitle").outerHeight();
        var u = $("#popupText").outerHeight();
        var v = $("#popupBtnDiv").outerHeight();
        var w = $(".popupBtn").outerHeight();

        h += t + u + v + w + w;

        $("#popupDiv").css("height", h + "px");

        $("#popupDiv").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
        $("#popupDiv").css("margin-top", "0");
    } else {
        $("#popupDiv").css("margin-top", "auto");
    }
}

function toggleModalWrapper() {
    var displayValue = $(".modalWrapper").css("display") == "block" ? "none" : "block";

    $(".modalWrapper").css("display", displayValue);
    $(".modalWrapper").css("height", $(document).height());
}

$(function () {
    $('#deletionForm').submit(function () {
        $.ajax({
            type: "GET",
            url: setRecordForDeletionUrl,
            data: { serviceRecordOid: recordToDelete },
            success: function () {
                return true;
            },
            error: function () {
                showAjaxError();
                return false;
            }
        });
        return true;
    });
});

function toggleLabel(inputId) {
	var label = $('label[for="' + inputId + '"]');
	var topValue;

	if ($("#" + inputId).is(":focus")) {
		$(label).animate({ top: "-6px" }, 100);
		return;
	}
	
	topValue = "12px";

    if ($("#" + inputId).val()) {
        topValue = "-6px";
    }

    $(label).animate({ top: topValue }, 75);
}

function validateServiceRecordBeforeSubmit() {
    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition, showError);
        } else {
            console.log("Ortung wird von diesem Browser nicht unterstützt");
            showPosition(null);
        }
    }

    var dateStr = $("#datum_textbox").val();
    var startStr = $("#start_textbox").val();
    var endStr = $("#ende_textbox").val();

    var x = getDateObj(true);

    var y;

    if ($("#enddatum_textbox").val() != "")
        y = getEndDateObj();
    else
        y = getDateObj(false);


    var vonDatum = getDateTimeStringWithLeadingZeros(x);
    var bisDatum = getDateTimeStringWithLeadingZeros(y);

    var isValidRecord = true;

    makeAjaxCall("POST", checkRightsUrl, function(json) {
        if (json == "SessionTimeout") {
            window.location.href = redirectLink;
            return;
        }

        if (json == "StartGreaterEnd") {
            hideSanduhr();
            writeFatalErrorMessage("Die Startzeit darf nicht größer als die Endzeit sein!");
            return;
        }

        var meldungen = $.parseJSON(json);

        var results                    = meldungen.ValidationResults;
        var allowOverlappingFLS        = false;
        var allowMoreFLSThanApproved   = false;
        var bookAfterSettlementInvoice = false;

        $.each(meldungen.Rights, function(position) {
            var value = meldungen.Rights[position];
            var key = parseInt(position);
            switch (key) {
            case 0:
                allowOverlappingFLS = value;
                break;
            case 1:
                allowMoreFLSThanApproved = value;
                break;
            case 2:
                bookAfterSettlementInvoice = value;
                break;
            default:
                break;
            }
        });

        var exitLoop = false;
        for (var i = 0; i < results.length; i++) {
            if (exitLoop)
                break;
            switch (results[i].ResultType) {
            case 0:
                var msg1 = "An dem gewählten Datum '" + vonDatum + "' existiert bereits ein Eintrag (" + results[i].Message + " bei Klient/in " + results[i].CustomerName + "). Speichern nicht möglich.";
                if (allowOverlappingFLS == true) {
                    var r = confirm("An dem gewählten Datum '" + vonDatum + "' existiert bereits ein Eintrag (" + results[i].Message + " bei Klient/in " + results[i].CustomerName + "). Möchten Sie trotzdem speichern?");
                    isValidRecord = r;
                    exitLoop = !isValidRecord;
                } else {
                    writeFatalErrorMessage(msg1);
                    isValidRecord = false;
                    exitLoop = true;
                }
                break;
            case 1:
                var msg2 = "An dem gewählten Datum " + vonDatum + " existiert bereits ein Eintrag für den ausgewählten Mitarbeiter(" + results[i].EmployeeName + "). Speichern nicht möglich.";
                if (allowOverlappingFLS == true) {
                    var r2 = confirm("An dem gewählten Datum " + vonDatum + " existiert bereits ein Eintrag für den ausgewählten Mitarbeiter(" + results[i].EmployeeName + "). Möchten Sie trotzdem speichern?");
                    isValidRecord = r2;
                    exitLoop = !isValidRecord;
                } else {
                    writeFatalErrorMessage(msg2);
                    isValidRecord = false;
                    exitLoop = true;
                }
                break;
            case 2:
                writeFatalErrorMessage("Das gewählte Datum " + vonDatum.slice(0, 10) + " liegt außerhalb des Zeitraumes des gewählten Hilfeplans. Speichern nicht möglich.");

                isValidRecord = false;
                exitLoop = true;
                break;
            case 3:
                var msg3 = "Die für diesen Hilfeplan genehmigten FLS (" + results[i].ApprovedHours + ") werden mit diesem Eintrag überschritten. (" + results[i].HoursNew + ").";
                if (allowMoreFLSThanApproved == true) {
                    var r3 = confirm(msg3 + " Möchten Sie trotzdem speichern?");
                    isValidRecord = r3;
                    exitLoop = !isValidRecord;
                } else {
                    writeFatalErrorMessage(msg3);
                    isValidRecord = false;
                    exitLoop = true;
                }
                break;
            case 4:
                writeFatalErrorMessage("Sie können keine neuen Leistungen für den " + vonDatum + " dokumentieren, da bereits der " + meldungen.MaxDaysEditServiceRecordsAllowed + ". des nachfolgenden Monats überschritten ist.");
                isValidRecord = false;
                exitLoop = true;
                break;
            case 5:
                writeFatalErrorMessage("Beim Speichern ist ein Fehler aufgetreten. Speichern nicht möglich.");
                isValidRecord = false;
                exitLoop = true;
                break;
            case 6:
                var msg6 = "Es existiert bereits eine Spitzabrechnung. Um diesen Eintrag zu berücksichtigen, muss eventuell eine neue Spitzabrechnung erstellt werden. Das Speichern ist nicht möglich.";
                if (bookAfterSettlementInvoice == true) {
                    msg6 = "Sie können den Eintrag nicht bearbeiten, da bereits eine Spitzabrechnung für diesen Hilfeplan erstellt wurde. Speichern nicht möglich.";
                }
                writeFatalErrorMessage(msg6);
                isValidRecord = false;
                exitLoop = true;
                break;
            default:
                isValidRecord = false;
                exitLoop = true;
                break;
            }
        }
        $("#URLSave").val(dataURL);
        $("#TimeStampSave").val(newday);
        $("#GeoLocSaveXCOOR").val(langenGrad);
        $("#GeoLocSaveYCOOR").val(breitenGrad);


        if (isValidRecord) {
            $("#createSRForm").submit();
        } else {
            hideSanduhr();
        }
    }, 
    { von: vonDatum, bis: bisDatum, inEditMode: $("#anlegenEditierenBtn").val() == "Speichern", dateString: dateStr, startString: startStr, endString: endStr });
}
 
function ErfolgteSpx() {
    if (document.getElementById("Schalter").value =="True") {
 
        toggleSuccessPopup("Zeiterfassung wurde gespeichert." + "\n" + "Möchte Sie diese Unterschreiben lassen?");
        document.getElementById("Schalter").value = "False";
        var schalti = false;

        $.ajax({
           type: "GET",
              url: SaveSchalterUrl,
              data: { schalti: schalti }
        });
    }
}

function DatenVorladen(oid){
    $.ajax({
        type: "GET",
        url: getSelectedRecordInformationUrlWithOid,
        data: {oid:oid},
        success: function (jsonServiceRecord) {
            try{
                if (jsonServiceRecord == "SessionTimeout") {
                    window.location.href = redirectLink;
                    return;
                }

                var record = $.parseJSON(jsonServiceRecord);
                        
                var s = record.Start[18] == "1" ? "" : record.Start.slice(11, 16);
                var e = record.End[18] == "1" ? "" : record.End.slice(11, 16);
                var jahr = record.Start.slice(0, 4);
                var monat = record.Start.slice(5, 7);
                var tag = record.Start.slice(8, 10);
                var datum = tag + "." + monat + "." + jahr;
                var y = record.ServiceDescription.Name;
                var z = record.ServiceDescription.Category.Name;

                var zahl2 = $("#scDropDown").val();
                $("#UnterschriftHilfeplan").val("HilfePlan: " + $("#scDropDown option[value='" + zahl2 + "']").text());
                $("#UnterschriftEmployee").val("Mitarbeiter: " + record.Employee.FirstName + " " + record.Employee.LastName);
                $("#UnterschriftKategorie").val("Kategorie: " + z);
                $("#UnterschriftLeistung").val("Leistungen: " + y);
                $("#UnterschriftDatum").val("Datum / Uhrzeit: " + datum + " / " + s + " - " + e);

                $("#SaveRecordOID").val(oid);

                console.log("Lade Daten OID:" + document.getElementById("SaveRecordOID").value);
            }catch(exception){
        console.log("Internal Server Error");
        }
    }
    });
}

function writeFatalErrorMessage(msg,i) {
    toggleErrorPopup(msg,i);
}

function showZeiterfassungsError(msg) {
    $("#zeiterfassungsErrorTableRow").css("display", "table-row");
    $("#zeiterfassungsErrorTableCell").css("display", "table-cell");
    $("#zeiterfassungsErrorDisplay").html(msg + "<br />");
}

function clearZED() {
    $("#zeiterfassungsErrorTableRow").css("display", "none");
    $("#zeiterfassungsErrorDisplay").empty();
}

function toShortDateString(dateString, trennzeichen) {
    var geteilt = dateString.split(trennzeichen);
    var yyyy = "";
    var mm = geteilt[1];
    var dd = geteilt[0];

    for (var i = 0; i < 4 - geteilt[2].split(" ")[0].length; i++) {
        yyyy += "0";
    }

    yyyy += geteilt[2].split(" ")[0];

    return (dd < 10 ? "0" : "") + dd + "." + (mm < 10 ? "0" : "") + mm + "." + yyyy;
}

function showCustomers() {
	$("#customersDropDown").val($("#customersDropDown option").eq(0).val());

    preselectCustomer();

    $("#zeiterfassung").css("display", "none");
    $("#klienten").css("display", "block");
    $("#KalenderNavigation").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#map-canvas").css("width", $("#klientenTabelle").width());
    $("#map-canvas").css("height", "500px");
    $("#UnterschriftBereich").css("display", "none");

    $("#Statistics").css("display", "none");
    $("#SupportStatistik").css("display", "none");

	$("#colorRibbon").css("background-color", "#3b7799");
	toggleMenu();
}

function showKalender() {
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#zeiterfassung").css("display", "none");
    $("#KalenderNavigation").css("display", "block");
    $("#Kalender").css("display", "block");
    $("#klienten").css("display", "none");
    $("#colorRibbon").css("background-color", "#04b4d0");
    $("#UnterschriftBereich").css("display", "none");

    $("#Statistics").css("display", "none");
    $("#SupportStatistik").css("display", "none");

    toggleMenu();
    selectServiceKalender(0);
}

var ChartAnz;
var ArrayStatistika;
var StringProvided = "Geleistet diese Woche";
var StringProvidedTotal = "Gesamt";
var StringApproved = "Bewilligt pro Woche";
var StringApprovedTotal = "Gesamt";
var StringFree = "Frei pro Woche (Ø)";
var StringFreeTotal = "Gesamt";

function ShowStatistics() {
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#zeiterfassung").css("display", "none");
    $("#KalenderNavigation").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#klienten").css("display", "none");
    $("#colorRibbon").css("background-color", "#04b4d0");
    $("#UnterschriftBereich").css("display", "none");
    $("#Statistics").css("display","none");
    $("#SupportStatistik").css("display", "block"); 
    var zahl = $("#scDropDown").val();

    if (zahl >= 0) {
        $("#StatisticUberschrift").val("Hilfeplan Statistik: " + $("#scDropDown option[value='" + zahl + "']").text());
        LoadSupportConceptStatistics(zahl);
        
    } else {
        $("#StatisticUberschrift").val("Hilfeplan Statistik: Es wurde kein Hilfeplan ausgewählt");
        $("#Statistic1").val("Keine Datensätze gefunden   ");
        $("#Statistic2").val("Keine Datensätze gefunden ");
        $("#Statistic3").val("Keine Datensätze gefunden ");
        document.getElementById("Statistic1").onclick = "";
        document.getElementById("Statistic2").onclick = "";
        document.getElementById("Statistic3").onclick = "";
        StatisticDesign(100, 200);

        $("#LegendStatistic2").val(100);
        $("#LegendStatistic1").val(200);
    }
}


function StatisticDesign(wert1,wert2,string1,string2) {
    var data = [
   {
       value: wert1,
       color: "#F7464A",
       highlight: "#FF5A5E",
       label: string1
   },
   {
       value: wert2,
       color: "#00FF00",
       highlight: "#99FF00",
       label: string2
   }];
 
    var options = {
        scaleShowLabelBackdrop: true,

        scaleBackdropColor: "rgba(255,255,255,0.75)",

        scaleBeginAtZero: true,

        scaleBackdropPaddingY: 2,

        scaleBackdropPaddingX: 2,

        scaleShowLine: true,

        segmentShowStroke: true,

        segmentStrokeColor: "#fff",

        segmentStrokeWidth: 1,

        animationSteps: 150,

        animationEasing: "easeOutBounce",

        responsive: true,

        animateRotate: true,

        animateScale: true,

        legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"

    }

    var ctx = document.getElementById("myChart").getContext("2d");

    if (ChartAnz != null) {
        ChartAnz.destroy();
    }

    ChartAnz = new Chart(ctx).Doughnut(data, options);
}


function LoadSupportConceptStatistics(oid) {
    $.ajax({
        type: "GET",
        url: LoadStatisticsUrl,
        data: {oid:oid },
        success: function (jsonServiceRecord) {
            var KalenderRec = $.parseJSON(jsonServiceRecord);

            var Description = KalenderRec.Subject;

            var Provided = KalenderRec.MinutesProvidedThisWeek;
            var Approved = KalenderRec.MinutesApprovedPerWeek;
            var FreeWeek = KalenderRec.MinutesFreePerWeekAverage;

            var ProvidedTotal = KalenderRec.MinutesProvidedTotalRounded;
            var ApprovedTotal = KalenderRec.MinutesApprovedTotal;
            var FreeWeekTotal = ApprovedTotal - ProvidedTotal;

            Provided = (Provided / 60).toFixed(2);
            Approved = (Approved / 60).toFixed(2);
            FreeWeek = (FreeWeek / 60).toFixed(2);

            ProvidedTotal = (ProvidedTotal / 60).toFixed(2);
            ApprovedTotal = (ApprovedTotal / 60).toFixed(2);
            FreeWeekTotal = (FreeWeekTotal / 60).toFixed(2);


            ArrayStatistika = new Array();

            ArrayStatistika[0] = Provided;
            ArrayStatistika[1] = Approved;
            ArrayStatistika[2] = FreeWeek;

            ArrayStatistika[3] = ProvidedTotal;
            ArrayStatistika[4] = ApprovedTotal;
            ArrayStatistika[5] = FreeWeekTotal;

            var berechne = ArrayStatistika[3] - ArrayStatistika[0];

            if (berechne < 0)berechne = 0;
                    
            StatisticDesign(ArrayStatistika[0], berechne, StringProvided, StringProvidedTotal);

            $("#LegendStatistic2").val(ArrayStatistika[0] + "  /  " + StringProvided);
            $("#LegendStatistic1").val(ArrayStatistika[3] + "  /  " + StringProvidedTotal);


            LoadDataIntoTXTField(ArrayStatistika);
        } 
    });
}


function LoadDataIntoTXTField(ArrayStatistika) {
    if ($("#Statistic1").val() == "") {
        $("#Statistic1").val(StringProvided + ": " + ArrayStatistika[0] + " / Gesamt: " + ArrayStatistika[3]);
        $("#Statistic2").val(StringApproved + ": " + ArrayStatistika[1] + " / Gesamt: " + ArrayStatistika[4]);
        $("#Statistic3").val(StringFree + ": " + ArrayStatistika[2] + " / Gesamt: " + ArrayStatistika[5]);
    }
}

function StatisticÄnderung(value) {
    if (value == 1) {
        var berechne = ArrayStatistika[3] - ArrayStatistika[0];

        if (berechne < 0) berechne = 0;

        StatisticDesign(ArrayStatistika[0], berechne, StringProvided, StringProvidedTotal);

        $("#LegendStatistic2").val(ArrayStatistika[0] + "  /  " + StringProvided);
        $("#LegendStatistic1").val(ArrayStatistika[3] + "  /  " + StringProvidedTotal);
    }
    if (value == 2) {
        var berechne = ArrayStatistika[4] - ArrayStatistika[1];

        if (berechne < 0) berechne = 0;
       
        StatisticDesign(ArrayStatistika[1], berechne, StringApproved, StringApprovedTotal);

        $("#LegendStatistic2").val(ArrayStatistika[1] + "  /  " + StringApproved);
        $("#LegendStatistic1").val(ArrayStatistika[4] + "  /  " + StringApprovedTotal);
    }
    if (value == 3) {
        var berechne = ArrayStatistika[5] - ArrayStatistika[2];

        if (berechne < 0) berechne = 0;

        StatisticDesign(ArrayStatistika[2], berechne, StringFree, StringFreeTotal);

        $("#LegendStatistic2").val(ArrayStatistika[2] + "  /  " + StringFree);
        $("#LegendStatistic1").val(ArrayStatistika[5] + "  /  " + StringFreeTotal);
    }
}

function showUsAendern() {
    $("#TerminSpeichern").prop('disabled', false);
    $("#AenderePopupDivSchalter").val("true");

}

function showUsVerwerfen() {
    if ($("#AenderePopupDivSchalter").val() == 'true') {
        ÄndereTerminPoppup("Wollen sie wirklich abbrechen und ihre Änderungen verwerfen?");
        $("#AenderePopupDivSchalter").val("false");  
    } else {
        selectServiceKalender(4);
    }
}

function selectServiceKalender(i, array1) {
    
    $("#versteckt").val("Speichern");
    $('html, body').animate({ scrollTop: 0 }, 'fast');
    var newtoday;
    var datumStr = $("#KalenderDatum").val();
    var nextdatum;

    if (datumStr == "" || i == 0) {
        nextdatum = new Date();

        var ddi0 = nextdatum.getDate();
        var mmi0 = nextdatum.getMonth() + 1;
        var yyyyi0 = nextdatum.getFullYear();

        var ddStri0 = ddi0 < 10 ? "0" + ddi0 : ddi0;
        var mmStri0 = mmi0 < 10 ? "0" + mmi0 : mmi0;

        $("#KalenderDatum").val(yyyyi0 + "-" + mmStri0 + '-' + ddStri0);
        newtoday = ddStri0 + '.' + mmStri0 + '.' + yyyyi0;
        $("#KalenderDatumFormat").val(newtoday);

        LoadKalender(newtoday);
    }

    if (i == 1) {
        nextdatum = new Date(datumStr);
        nextdatum.setDate((nextdatum.getDate() + 1));
        var dd = nextdatum.getDate();
        var mm = nextdatum.getMonth() + 1;
        var yyyy = nextdatum.getFullYear();

        var ddStr = dd < 10 ? "0" + dd : dd;
        var mmStr = mm < 10 ? "0" + mm : mm;

        $("#KalenderDatum").val(yyyy + "-" + mmStr + '-' + ddStr);
        newtoday = ddStr + '.' + mmStr + '.' + yyyy;

        $("#KalenderDatumFormat").val(newtoday);
        LoadKalender(newtoday);
    }

    if (i == 2) {
        nextdatum = new Date(datumStr);
        nextdatum.setDate((nextdatum.getDate() - 1));

        var ddi2 = nextdatum.getDate();
        var mmi2 = nextdatum.getMonth() + 1;
        var yyyyi2 = nextdatum.getFullYear();

        var ddStri2 = ddi2 < 10 ? "0" + ddi2 : ddi2;
        var mmStri2 = mmi2 < 10 ? "0" + mmi2 : mmi2;

        $("#KalenderDatum").val(yyyyi2 + "-" + mmStri2 + '-' + ddStri2);
        newtoday = ddStri2 + '.' + mmStri2 + '.' + yyyyi2;
        $("#KalenderDatumFormat").val(newtoday);

        LoadKalender(newtoday);
    }
    if (i == 3) {
        var currTime = new Date();

        if (currTime.getMinutes() <= 30) {
            var k = 30 - currTime.getMinutes();
            currTime.setMinutes(currTime.getMinutes() + k);
        }

        if (currTime.getMinutes() > 30) {
            var j = 60 - currTime.getMinutes();
            currTime.setMinutes(currTime.getMinutes() + j);
        }

        var HHStr = currTime.getHours() < 10 ? "0" + currTime.getHours() : currTime.getHours();
        var MMStr = currTime.getMinutes() < 10 ? "0" + currTime.getMinutes() : currTime.getMinutes();
 
        $("#TerminHinzufügen").css("display", "block");
        $("#KalenderTable").css("display", "none");
        $("#KalenderNavigation").css("display", "none");
        $("#KalenderTableTask").css("display", "none");
        $("#TerminDatum").val($("#KalenderDatumFormat").val());
        $("#TerminStartZeit").val(HHStr + " : " + MMStr);
        $("#TerminEndZeit").val("");
        $("#TerminBetreff").val("");
        $("#TerminNotiz").val("");
        $("#TerminBetreffLabel").val("Betreff");

        $("#TerminDatum").prop('readonly', false);
        $("#TerminStartZeit").prop('readonly', false);
        $("#TerminEndZeit").prop('readonly', false);
        $("#TerminBetreff").prop('readonly', false);
        $("#TerminNotiz").prop('readonly', false);

        $("#TerminSpeichern").val("Speichern");
        $("#TerminSpeichern").css("width", "100");
        $("#TerminSpeichernAbbrechen").val("Abbrechen");
        $("#TerminSpeichern").css("display", "inline");
      
    }
    else {
        $("#TerminHinzufügen").css("display", "none");
        $("#KalenderTable").css("display", "block");
        $("#KalenderNavigation").css("display", "block");
        $("#KalenderTableTask").css("display", "block");
        $("#TerminSpeichern").prop('disabled', false);
    }

    if (i == 4) {
        $("#TerminHinzufügen").css("display", "none");
        $("#KalenderTable").css("display", "block");
        $("#KalenderNavigation").css("display", "block");
        $("#KalenderTableTask").css("display", "block");
        $("#TerminDatum").val("");
    }
    if (i == 5) {
        var NewTerminDatum     = $("#TerminDatum").val();
        var NewTerminStartZeit = $("#TerminStartZeit").val();
        var NewTerminEndZeit   = $("#TerminEndZeit").val();
        var NewTerminBetreff   = $("#TerminBetreff").val();
        var NewTerminNotiz     = $("#TerminNotiz").val();
        var Speicherabfrage = $("#TerminSpeichern");

        if (Speicherabfrage.val() == 'Speichern') {
            UeberschreibeKalender();
            selectServiceKalender(6);
        }

        if (NewTerminDatum == "" || NewTerminStartZeit == "" || NewTerminEndZeit == "" || NewTerminBetreff == "") {
            $("#TerminHinzufügen").css("display", "block");
            $("#KalenderTable").css("display", "none");
            $("#KalenderNavigation").css("display", "none");
            $("#KalenderTableTask").css("display", "none");
            writeFatalErrorMessage("Bitte geben Sie Uhrzeit und Betreff ein.");
        } else {
            if (Speicherabfrage.val() == 'Speichern') {

                Kalenderzwischenspeicher[0] = NewTerminDatum;
                Kalenderzwischenspeicher[1] = NewTerminStartZeit;
                Kalenderzwischenspeicher[2] = NewTerminEndZeit;
                Kalenderzwischenspeicher[3] = NewTerminBetreff;
                Kalenderzwischenspeicher[4] = NewTerminNotiz;

                SaveKalender(NewTerminDatum, NewTerminStartZeit, NewTerminEndZeit, NewTerminBetreff, NewTerminNotiz);
            }
        } 
    }
    
    if (i == 7) {
        
        var betreff = array1[0];
        var startZeit = array1[1];
        var endZeit   = array1[2];
        var notiz     = array1[3];
        var oidKale   = array1[4];

        console.log(array1);

        UpdatekalenderOid = oidKale;

        $("#TerminHinzufügen").css("display", "block");
        $("#KalenderTable").css("display", "none");
        $("#KalenderNavigation").css("display", "none");
        $("#KalenderTableTask").css("display", "none");
        $("#TerminDatum").val($("#KalenderDatumFormat").val());
        $("#TerminStartZeit").val(startZeit);
        $("#TerminEndZeit").val(endZeit);
        $("#TerminBetreff").val(betreff);
        $("#TerminNotiz").val(notiz);
    
        $("#TerminSpeichernAbbrechen").val("Schließen");
        $("#TerminSpeichern").val("Speichern");
        $("#TerminSpeichern").css("width","125");
        $("#TerminSpeichern").prop('disabled', true);
    }

    if (i == 6) {
        var dp = $("#KalenderDatumFormat").val();
        var dateParts = dp.split(".");
        var nextdatum2 = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

        var dd2 = nextdatum2.getDate();
        var mm2 = nextdatum2.getMonth() + 1;
        var yyyy2 = nextdatum2.getFullYear();

        var ddStr2 = dd2 < 10 ? "0" + dd2 : dd2;
        var mmStr2 = mm2 < 10 ? "0" + mm2 : mm2;

        $("#KalenderDatum").val(yyyy2 + "-" + mmStr2 + '-' + ddStr2);
        $("#KalenderDatumFormat").val(dp);
        LoadKalender(dp);
    }
}

Array2 = new Array();

function LoadKalender(newtoday) {
    $.ajax({
        type: "GET",
        url: getSelectedKalenderUrl,
        data: { newtoday: newtoday },
        success: function (json) {
            var KalenderRec = $.parseJSON(json);
            var html = "";

            $("#KalenderTable").empty();

            var i = 0;
            $.each(KalenderRec, function (index, Termin) {
                var Description = KalenderRec[index].Subject;
                var startD      = KalenderRec[index].StartDate;
                var endD        = KalenderRec[index].EndDate;
                var notizen     = KalenderRec[index].Description;
                var OidKale     = KalenderRec[index].SchedulerAppointmentOid;
                var minutes;
                var minutesend;
                var hours;
                var hoursend;
                var date        = new Date(startD);
                var dateend     = new Date(endD);
               
                Array1 = new Array();

                var farbe = "2B508B";

                if (date.getMinutes() < 10) {
                    minutes = "0" + date.getMinutes().toString();
                }
                else {
                    minutes = date.getMinutes().toString();
                }

                if (dateend.getMinutes() < 10) {
                    minutesend = "0" + dateend.getMinutes().toString();
                }
                else {
                    minutesend = dateend.getMinutes().toString();
                }

                if (date.getHours() < 10) {
                    hours = "0" + date.getUTCHours().toString();
                }
                else {
                    hours = date.getUTCHours().toString();
                }

                if (dateend.getHours() < 10) {
                    hoursend = "0" + dateend.getUTCHours().toString();
                }
                else {
                    hoursend = dateend.getUTCHours().toString();
                }

                Array1[0] = Description;
                Array1[1] = hours + ":" + minutes;
                Array1[2] = hoursend + ":" + minutesend;
                Array1[3] = notizen;
                Array1[4] = OidKale;

               
                Array2[i] = Array1;
               
                
                
                html +=
                    '<tr class="testklasse">' +
                        '<td class="kalender-td kalender-uhrzeit">' +
                            hours + ":" + minutes + ' - ' + hoursend.fontcolor(farbe) + ":" + minutesend.fontcolor(farbe) +
                        '</td>' +
                        '<td class="kalender-td" onclick="selectServiceKalender(7,Array2[' + i +'])">' +
                            Description +
                        '</td>' +
                    '</tr>';
                 i++;
            });
            $("#KalenderTable").append(html);
            LoadKalenderTask(newtoday);

          
        }
    });
}


function UeberschreibeKalender(){
    Updatekalenderbetreff = $("#TerminBetreff").val();
    Updatekalendernotice = $("#TerminNotiz").val();
    UpdatekalenderstartZ = $("#TerminStartZeit").val();
    UpdatekalenderendZ = $("#TerminEndZeit").val();
    Updatekalenderday = $("#KalenderDatumFormat").val();
  
    $.ajax({
        type: "POST",
        url: UpdateKalenderUrl,
        data: { oid: UpdatekalenderOid, betreff: Updatekalenderbetreff, notice: Updatekalendernotice, startZeit: UpdatekalenderstartZ, endZeit: UpdatekalenderendZ, day: Updatekalenderday }, success: function () {}
    });
}

function SaveKalender(Datum, StartZ, EndZ, Betreff, Notice) {
    $.ajax({
        type: "GET",
        url: setSelectedKalenderUrl,
        data: { day: Datum, startZeit: StartZ, endZeit: EndZ, betreff: Betreff, notice: Notice }, success: function () { LoadKalender(Datum); }, error: function () { /*saveOnlyKalender(); Save bei error Kalender daten */  }
    });
}

function LoadKalenderTask(newtoday) {
    $.ajax({
        type: "GET",
        url: getSelectedKalenderTaskUrl,
        data: { newtoday: newtoday },
        success: function (json) {
            var KalenderRec = $.parseJSON(json);
            var html = "";

            $("#KalenderTableTask").empty();

            var zahl = 0;
            $.each(KalenderRec, function (index, Termin) {
                var Description = KalenderRec[index].Title;
                var startD = KalenderRec[index].DueDate;

                var date = new Date(startD);

                if (zahl == 0) {
                    html += "<thead><tr><th style='width: 150px; border-bottom: solid 1px #D8D8D8;'>Aufgaben</th><th style='width: 80%; border-bottom: solid 1px #D8D8D8;'></th></tr></thead>";
                }

                var minutes;
                var houres;

                if (date.getMinutes() < 10) {
                    minutes = "";
                    minutes = "0" + date.getMinutes().toString();
                }
                else {
                    minutes = "";
                    minutes = date.getMinutes().toString();
                }

                if (date.getHours() < 10) {
                    houres = "";
                    houres = "0" + date.getUTCHours().toString();
                }
                else {
                    houres = "";
                    houres = date.getUTCHours().toString();
                }

                var farbe = "2B508B";
                html += '<tr><td  style="width: 150px; border-bottom: solid 1px #D8D8D8;">' + houres.fontcolor(farbe) + ":" + minutes.fontcolor(farbe) + ' </td><td style="width: 80%; border-bottom: solid 1px  #D8D8D8;">' + Description + '</td></tr>';
                zahl++;
            });
            $("#KalenderTableTask").append(html);
        }
    });
}

var canvas, ctx;
var mouseX, mouseY, mouseDown = 0;
var lastpositionx             = 0;
var lastpositiony             = 0;
var newpositionx              = 0;
var newpositiony              = 0;
var minuswert                 = -30;
var maxwert                   = 30;
var posix                     = 0;
var posiy                     = 0;

function loadUnterschriftFeldFunktion() {
    function drawDot(ctx, x, y, size) {
        r = 0; g = 0; b = 0; a = 255;

        ctx.fillStyle = "rgba(" + r + "," + g + "," + b + "," + (a / 255) + ")";

        if (lastpositionx != 0) {

            ctx.beginPath();
            ctx.arc(x, y, size, 1, Math.PI * 0.25, true);
            newpositionx = x;
            newpositiony = y;
            posix = newpositionx - lastpositionx;
            posiy = newpositiony - lastpositiony;

            if (posiy > minuswert && posix > minuswert && posiy < maxwert && posix < maxwert) {
                ctx.lineTo(lastpositionx + 2, lastpositiony + 2);
                ctx.lineWidth = 4;
                ctx.lineCap = "butt";
                ctx.lineJoin = "round";
                ctx.stroke();

                lastpositionx = x;
                lastpositiony = y;
            } else {
                lastpositionx = 0;
                lastpositiony = 0;
            }

            ctx.closePath();
            ctx.fill();

        } else {
            ctx.beginPath();
            ctx.arc(x, y, size, 1, Math.PI * 0.25, true);
            ctx.closePath();
            ctx.fill();

            lastpositionx = x;
            lastpositiony = y;
        }
    }

    function sketchpad_mouseDown() {
        mouseDown = 1;
        drawDot(ctx, mouseX, mouseY, 3);
    }

    function sketchpad_mouseUp() {
        mouseDown = 0;
    }

    function sketchpad_mouseMove(e) {
        getMousePos(e);

        if (mouseDown == 1) {
            drawDot(ctx, mouseX, mouseY, 3);
        }
    }

    function getMousePos(e) {
        if (!e) {
            var e = event;
        }

        if (e.offsetX) {
            mouseX = e.offsetX;
            mouseY = e.offsetY;
        }
        else if (e.layerX) {
            mouseX = e.layerX;
            mouseY = e.layerY;
        }
    }

    function sketchpad_touchStart() {
        getTouchPos();
        drawDot(ctx, touchX, touchY, 3);
        event.preventDefault();
    }

    function sketchpad_touchMove(e) {
        getTouchPos(e);
        drawDot(ctx, touchX, touchY, 3);
        event.preventDefault();
    }

    function getTouchPos(e) {
        if (!e) {
            var e = event;
        }

        if (e.touches) {
            if (e.touches.length == 1) { 
                var touch = e.touches[0]; 
                touchX = touch.pageX - touch.target.offsetLeft;
                touchY = touch.pageY - touch.target.offsetTop;
            }
        }
    }

    function init() {
        canvas = document.getElementById('sketchpad');

        if (canvas.getContext) {
            ctx = canvas.getContext('2d');
        }

        if (ctx) {
            canvas.addEventListener('mousedown', sketchpad_mouseDown, false);
            canvas.addEventListener('mousemove', sketchpad_mouseMove, false);
            window.addEventListener('mouseup', sketchpad_mouseUp, false);

            canvas.addEventListener('touchstart', sketchpad_touchStart, false);
            canvas.addEventListener('touchmove', sketchpad_touchMove, false);
        }
    }

    init();
}

function showUnterschrift(Uebergabe,zahl) {
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#zeiterfassung").css("display", "none");
    $("#KalenderNavigation").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#klienten").css("display", "none");
    $("#colorRibbon").css("background-color", "#04b4d0");
    $("#UnterschriftBereich").css("display", "block");

    $("#Statistics").css("display", "none");
    $("#SupportStatistik").css("display", "none");

    if (zahl == 1) {
        Uebergabe = document.getElementById("ServiceRecordOIDSave").value;
        toggleSuccessPopup("");
        loadUnterschriftFeldFunktion();
        LadeDatenVor(Uebergabe);
    } else {
        loadUnterschriftFeldFunktion();
        LadeDatenVor(Uebergabe);
    }
}

function backToZeiterfassung() {
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#zeiterfassung").css("display", "block");
    $("#KalenderNavigation").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#klienten").css("display", "none");
    $("#colorRibbon").css("background-color", "#c80000");
    $("#UnterschriftBereich").css("display", "none");

    $("#Statistics").css("display", "none");
    $("#SupportStatistik").css("display", "none");

    loescheUnterschrift(canvas, ctx);
}

function speichereUnterschrift() {
    date = "";
    date = new Date();

    dataURL = "";
    dataURL = canvas.toDataURL(); 

    blob = new Blob([dataURL], { type: "URL/String" });

    lastpositionx = 0;
    lastpositiony = 0;

    var dd = date.getDate();
    var mm = date.getMonth() + 1;
    var yyyy = date.getFullYear();
    var hh = date.getHours();
    var Min = date.getMinutes();
    var Sec = date.getSeconds();

    var ddStr = dd < 10 ? "0" + dd : dd;
    var mmStr = mm < 10 ? "0" + mm : mm;
    var hhStr = hh < 10 ? "0" + hh : hh;
    var MnStr = Min < 10 ? "0" + Min : Min;
    var ScStr = Sec < 10 ? "0" + Sec : Sec;

    newday = "";
    newday = ddStr + '.' + mmStr + '.' + yyyy + " " + hhStr + ":" + MnStr + ":" + ScStr;

    var ServRecord = $("#SaveRecordOID").value;

    //console.log(ServRecord + " das ist die Oid");

     function getLocation() {
         if (navigator.geolocation) {
             navigator.geolocation.getCurrentPosition(showPosition, showError);
         } else {
             x.innerHTML = "Geolocation is not supported by this browser.";
         }
     }

     function showPosition(position) {
        var breitenGrad = position.coords.latitude;
        var langenGrad = position.coords.longitude;
         
        longrider = "";
        longrider = langenGrad.toString();
        console.log(ServRecord);
        $.ajax({
             type: "POST",
             url: setSelectedUnterschriftUrl,
             data: { breitengrad: breitenGrad, langengrad: langenGrad, blob: dataURL, zeitstempel: newday, ServiceRecord: ServRecord },
             success: function () {
                 loescheUnterschrift(canvas, ctx);
                 backToZeiterfassung();
                 toggleSuccessPopup("Die Unterschrift wurde erfolgreich gespeichert.", 2);
             },
             error: function () {
                 toggleSuccessPopup("Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support", 3);
             }

         });
     }

     function showError(error) {
         var message = "Fehler";
         switch (error.code) {
             case error.PERMISSION_DENIED:
                 message = "Ortungsanfrage abgelehnt.";
                 break;
             case error.POSITION_UNAVAILABLE:
                 message = "Ortsangabe ist nicht verfügbar.";
                 break;
             case error.TIMEOUT:
                 message = "Timeout.";
                 break;
             case error.UNKNOWN_ERROR:
                 message = "Ein unbekannter Fehler ist aufgetreten.";
                 break;
         }

         //console.log(message);
         showPosition(null);
     }

     getLocation();
}

function loescheUnterschrift(canvas, ctx) {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    lastpositionx = 0;
    lastpositiony = 0;
}

function LadeDatenVor() {
    var zahl = $("#scDropDown").val();
    $("#UnterschriftHilfeplan").val("HilfePlan: " + $("#scDropDown option[value='" + zahl + "']").text());
    $("#UnterschriftEmployee").val("Mitarbeiter: " + $("#employeesDropDown option:selected").text());
    $("#UnterschriftKategorie").val("Kategorie: " + $("#kategorien_select option:selected").text());
    $("#UnterschriftLeistung").val("Leistungen: " + $("#leistungen_select option:selected").text());
    $("#UnterschriftDatum").val("Datum / Uhrzeit: " + $("#datum_textbox").val() + " / " + $("#start_textbox").val() + " - " + $("#ende_textbox").val());
}

function LadeDatenVor(UebergabeServiceRecord) {
    DatenVorladen(UebergabeServiceRecord);
}

function showServiceRecords() {
    location.reload();
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#klientenTabelle").css("display", "none");
    $("#zeiterfassung").css("display", "block");
    $("#KalenderNavigation").css("display", "none");
    $("#klienten").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#colorRibbon").css("background-color", "#c80000");
    $("#UnterschriftBereich").css("display", "none");

    $("#Statistics").css("display", "block");
    $("#SupportStatistik").css("display", "none");
    toggleMenu();
}

function goBackToZeiterfassung() {
    showSanduhr();
    $("#customersDropDown").val($("#customersDropDown option").eq(0).val());
    $("#klientenTabelle").css("display", "none");
    $("#zeiterfassung").css("display", "block");
    $("#KalenderNavigation").css("display", "none");
    $("#klienten").css("display", "none");
    $("#Kalender").css("display", "none");
    $("#colorRibbon").css("background-color", "#c80000");
    $("#UnterschriftBereich").css("display", "none");

    $("#Statistics").css("display", "block");
    $("#SupportStatistik").css("display", "none");  
}


function klientenLaden() {
    $("#map-canvas").fadeOut();
    showSanduhr();
    var oid = parseInt($("#customersDropDown").find(":selected").val());

	if (oid == -1) {
		$("#klientenTabelle").css("display", "none");
		$("#umfeldContainer").css("display", "none");
		hideSanduhr();
		return;
	}
	
	makeAjaxCall("GET", getSelectedCustomerUrl, function (json) {
		$("#klientenTabelle").css("display", "block");
		$("#umfeldContainer").css("display", "block");
		if (json == "SessionTimeout") {
			window.location.href = redirectLink;
			return;
		}
		vm.update($.parseJSON(json));
		$(".toggle-btn2").click(function () {
			toggleOnclick(this);
		});
		},
		{ customerOid: oid },
		hideSanduhr);
	
}

function KlientenVM() {
    this.vorname                      = ko.observable("");
    this.nachname                     = ko.observable("");
    this.geburtstag                   = ko.observable("");
    this.geschlecht                   = ko.observable("");
    this.adresszusatz                 = ko.observable("");
    this.strasse                      = ko.observable("");
    this.plz                          = ko.observable("");
    this.ort                          = ko.observable("");
    this.rechnungsadressename         = ko.observable("");
    this.rechnungsadressestrasse      = ko.observable("");
    this.rechnungsadressepostleitzahl = ko.observable("");
    this.rechnungsadresseort          = ko.observable("");
    this.email                        = ko.observable("");
    this.pureemail                    = ko.observable("");
    this.fax                          = ko.observable("");
    this.telefon                      = ko.observable("");
    this.handy                        = ko.observable("");
    this.umfeldpersonen               = ko.observableArray([]);
    this.Wohnheim                     = ko.observable("");

    this.update = function (data) {
        this.vorname(data.Vorname);
        this.nachname(data.Nachname);
        this.geburtstag(data.Geburtstag);
        this.geschlecht(data.Geschlecht);

        this.adresszusatz(data.Adresszusatz);
        this.strasse(data.Strasse);
        this.plz(data.Postleitzahl);
        this.ort(data.Ort);

        this.rechnungsadressename(data.RechnungsadresseName);
        this.rechnungsadressestrasse(data.RechnungsadresseStrasse);
        this.rechnungsadressepostleitzahl(data.RechnungsadressePostleitzahl);
        this.rechnungsadresseort(data.RechnungsadresseOrt);

        this.email("mailto:" + data.EMail);
        this.pureemail(data.EMail);
        this.fax(data.Fax);
        this.telefon(data.Telefon);
        this.handy(data.Handy);

        var mappedUmfeldpersonen = $.map(data.Umfeldpersonen, function (item) { return new UmfPers(item); });

        if (mappedUmfeldpersonen.length === 0) {
            $("#WohnheimContainer").css("display", "none");
        }

        this.umfeldpersonen(mappedUmfeldpersonen);

        calcPropFieldMinSizes();
        updateEigenschaftsfelder();
    }
}

function UmfPers(initdata) {
    var self = this;

    self.umfvorname  = ko.observable(initdata.Vorname);
    self.umfnachname = ko.observable(initdata.Nachname);
    self.umfstrnr    = ko.observable(initdata.StrNameNr);
    self.umfplzort   = ko.observable(initdata.PLZOrt);
    self.umftelnr    = ko.observable("tel:" + initdata.TelNr);
    self.nurtelnr    = ko.observable(initdata.TelNr);
    self.nurmobil    = ko.observable(initdata.Mobil);
    self.umfmobil    = ko.observable("tel:" + initdata.Mobil);
    self.umfemail    = ko.observable("mailto:" + initdata.EMail);
    self.nuremail    = ko.observable(initdata.EMail);
    self.umffax      = ko.observable(initdata.Fax);
    self.umfrolle    = ko.observable(initdata.Rolle);
    self.umftitel    = ko.observable(initdata.Titel);

    self.formattedName = ko.computed(function () {
        var titel = self.umftitel() ? self.umftitel() + " " : "";
        return titel + self.umfvorname() + " " + self.umfnachname();
    });

    self.update = function (updatedata) {
        self.umfvorname(updatedata.Vorname);
        self.umfnachname(updatedata.Nachname);
        self.umfstrnr(updatedata.StrNameNr);
        self.umfplzort(updatedata.PLZOrt);
        self.umfmobil("tel:" + updatedata.Mobil);
        self.nurmobil(updatedata.Mobil);
        self.umfemail("mailto:" + updatedata.EMail);
        self.nuremail(ko.observable(updatedata.EMail));
        self.umffax(updatedata.Fax);
        self.umfrolle(updatedata.Rolle);
        self.umftitel(updatedata.Titel);
        self.umftelnr("tel:" + updatedata.TelNr);
        self.nurtelnr(updatedata.TelNr);
    }
}



minSizes = undefined;
function calcPropFieldMinSizes() {
    var l = 0;
    var h = 0;
    var n = 0;

    $(".eigenschaftsdiv").each(
		function (i, e) {
		    var x = $(e).clone().css({ "height": "auto", "width": "auto" }).appendTo("body");

		    var tempL = x.outerWidth(true);
		    var tempH = x.outerHeight(true);

		    x.remove();

		    n++;

		    if (tempL > l) {
		        l = tempL;
		    }

		    if (tempH > h) {
		        h = tempH;
		    }
		}
	);

    minSizes = { minWidth: l, minHeight: h, divCount: n };
}

function updateEigenschaftsfelder() {
    var cw = $("#klientenTabelle").width();

    $("#map-canvas").css("width", cw - 16);
    $("#map-canvas").css("height", cw - 16);

    if (minSizes == undefined)
        return;

    var mitPadding = minSizes.minWidth;
    var maxAnzahl = parseInt(cw / mitPadding);

    if (maxAnzahl > minSizes.divCount)
        maxAnzahl = minSizes.divCount;

    var width = parseInt(cw / maxAnzahl) - 16;

    if (minSizes != undefined) {
        $(".eigenschaftsdiv").each(
			function (i2, e2) {
			    $(e2).css("width", width + "px");
			    $(e2).css("height", (minSizes.minHeight - 16) + "px");
			}
		);
    }
}

$(window).resize(function () {
    if ($("#klientenTabelle").css("display") == "block") {
        updateEigenschaftsfelder();
    }
});

function showSanduhr() {
	$(".modalWrapper").css("display", "block");
	$(".modalWrapper").css("height", $(document).height());
	$(".warte-animation").css("display", "inline-block");

}

function hideSanduhr() {
	if ($("#errorPopupDiv").css("display") == "none" && $("#popupDiv").css("display") == "none") {
		$(".modalWrapper").css("display", "none");
		$(".modalWrapper").css("height", "0");
	}

	if ($("#SuccessPopupDiv").css("display") == "none" && $("#popupDiv").css("display") == "none") {
	    $(".modalWrapper").css("display", "none");
	    $(".modalWrapper").css("height", "0");
	}

	if ($("#AendernPopupDiv").css("display") == "none" && $("#popupDiv").css("display") == "none") {
	    $(".modalWrapper").css("display", "none");
	    $(".modalWrapper").css("height", "0");
	}
	
	$(".warte-animation").css("display", "none");
}

function submitDeletionForm() {
    showSanduhr();
    $("#deletionForm").submit();
}

function toggleErrorPopup(errorMessage, i , zeit) {
    var isDisplayNone = $("#errorPopupDiv").css("display") == "none";
    var displayValue = isDisplayNone ? "block" : "none";

    $("#errorPopupDiv").css("display", displayValue);
    $(".modalWrapper").css("display", displayValue);
    $(".modalWrapper").css("height", $(document).height());

    if (isDisplayNone ) {
        $("#errorPopupText").text(errorMessage);

        if (i == 1) {
            $("#errorPopupTitle").text("Info");
            $("#errorPopupOkBtn").onclick = "toggleErrorPopup('')";
        } else if (i == 2) {
            $("#errorPopupTitle").text("Fehler");
            $("#errorPopupOkBtn").onclick = "toggleErrorPopup('')";

            DeletStorage(1);
            SaveOnly();  // Speichere Daten bei absturz
        }
        else {
            $("#errorPopupTitle").text("Fehler");
            $("#errorPopupOkBtn").onclick = "toggleErrorPopup('')";
        }
        
       
        var h = 0;
        var t = $("#errorPopupTitle").outerHeight();
        var u = $("#errorPopupText").outerHeight();
        var v = $("#errorPopupBtnDiv").outerHeight();
        var w = $("#errorPopupOkBtn").outerHeight();

        h += t + u + v + w + w;

      
        $("#errorPopupDiv").css("height", h + "px");

        $("#errorPopupDiv").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
        $("#errorPopupDiv").css("margin-top", "0");
    } else {
        $("#errorPopupDiv").css("margin-top", "auto");
    }
}

function toggleSuccessPopup(message, i) {
    var isDisplayNone = $("#SuccessPopupDiv").css("display") == "none";
    var displayValue = isDisplayNone ? "block" : "none";

    $("#SuccessPopupDiv").css("display", displayValue);
    $(".modalWrapper").css("display", displayValue);
    $(".modalWrapper").css("height", $(document).height());

    if (i == 2) 
        $(".SuccessPopupUSchrift").css("display", "none");
    else 
        $(".SuccessPopupUSchrift").css("display", "inline");

    if (i == 3) {
        $(".SuccessPopupUSchrift").css("display", "none");
        $("#SuccessPopupTitle").text("Fehler 404: Internal Server Error");
    }
        
    if (isDisplayNone) {
        $("#SuccessPopupText").text(message);

        var h = 0;
        var t = $("#SuccessPopupTitle").outerHeight();
        var u = $("#SuccessPopupText").outerHeight();
        var v = $("#SuccessPopupBtnDiv").outerHeight();
        var w = $(".SuccessPopupOkBtn").outerHeight();
        var x = $(".SuccessPopupUSchrift").outerHeight();

        h += t + u + v + w + x;

        $("#SuccessPopupDiv").css("height", h + "px");

        $("#SuccessPopupDiv").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
        $("#SuccessPopupDiv").css("margin-top", "0");
    } else {
        $("#SuccessPopupDiv").css("margin-top", "auto");
    }
}


function ÄndereTerminPoppup(message) {
    var isDisplayNone = $("#AendernPopupDiv").css("display") == "none";
    var displayValue = isDisplayNone ? "block" : "none";

    $("#AendernPopupDiv").css("display", displayValue);
    $(".modalWrapper").css("display", displayValue);
    $(".modalWrapper").css("height", $(document).height());

    if (isDisplayNone) {
        $("#AendernPopupText").text(message);

        var h = 0;
        var t = $("#AendernPopupTitle").outerHeight();
        var u = $("#AendernPopupText").outerHeight();
        var v = $("#AendernPopupBtnDiv").outerHeight();
        var w = $(".AendernPopupOkBtn").outerHeight();
        var x = $(".AendernPopupUSchrift").outerHeight();

        h += t + u + v + w + x;

        //höhe des Hintergrundes
        $("#AendernPopupDiv").css("height", h + "px");

        $("#AendernPopupDiv").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
        $("#AendernPopupDiv").css("margin-top", "0");
    } else {
        $("#AendernPopupDiv").css("margin-top", "auto");
    }
}

function confirmErrorPopup() {
    toggleErrorPopup("");
}

function clearRecords() {
    $("#serviceRecords").empty();
}

function preselectCustomer() {
    $.ajax({
        type: "GET",
        url: getSupportConceptCustomerUrl,
        success: function (json) {
            if (json === "NoSupportConceptSelected") {
                return;
            }

            var valueToSelect = $.parseJSON(json);

			$("#customersDropDown option").each(function () {
				if (this.value == valueToSelect === true) {
					$("#customersDropDown").val(valueToSelect);
					$("#customersDropDown").trigger('change');

                    return false;
                } else {
                    return true;
                }
            });
        }
    });
}

function mitarbeiterLaden() {
    var oid = parseInt($("#employeesDropDown").find(":selected").val());

    if (isNaN(oid)) {
        return;
    }

    serviceRecordEmployeeOid = oid;

    makeAjaxCall("GET", setServiceRecordEmployeeUrl, function () { }, { employeeOid: serviceRecordEmployeeOid }, null);
}


function SaveOnly() {
    if (navigator.onLine == true) {

        if (typeof (Storage) != "undefined") {
            
                DeletStorage(1);
          
                var zahl = $("#scDropDown").val();
                var hilfeplan = $("#scDropDown option[value='" + zahl + "']").text();
                var mitarbeiter = $("#employeesDropDown option:selected").text();
                var kategorie = $("#kategorien_select option:selected").text();
                var leistung = $("#leistungen_select option:selected").val();
                var duration = $("#duration_textbox").val();
                var notiz = $("#notiz_textbox").val();
                
                var notiz2, notiz3, notiz4, notiz5;


                if ($("#notiz_textbox1").val() != "") {
                    notiz = $("#notiz_textbox1").val();
                }

                if ($("#notiz_textbox2").val() != "") {
                    notiz2 = $("#notiz_textbox2").val();
                }

                if ($("#notiz_textbox3").val() != "") {
                    notiz3 = $("#notiz_textbox3").val();
                }

                if ($("#notiz_textbox4").val() != "") {
                    notiz4 = $("#notiz_textbox4").val();
                }

                if ($("#notiz_textbox5").val() != "") {
                    notiz5 = $("#notiz_textbox5").val();
                }


                ZeiterfassungDatakonstrukt.push(zahl, hilfeplan, mitarbeiter, kategorie,
                                                leistung, $("#datum_textbox").val(), $("#start_textbox").val(), $("#ende_textbox").val(),
                                                duration, notiz, zahl, notiz2, notiz3, notiz4, notiz5, $("#enddatum_textbox").val());

                localStorage.setItem("Zeitdaten", ZeiterfassungDatakonstrukt);
        }
    } else {
       
        if (typeof (Storage) != "undefined") {
          
            DeletStorage(1);

            var zahl = $("#scDropDown").val();
            var hilfeplan = $("#scDropDown option[value='" + zahl + "']").text();
            var mitarbeiter = $("#employeesDropDown option:selected").text();
            var kategorie = $("#kategorien_select option:selected").text();
            var leistung = $("#leistungen_select option:selected").text();
            var duration = $("#duration_textbox").val();
            var notiz = $("#notiz_textbox").val();

            var notiz2, notiz3, notiz4, notiz5;

            if ($("#notiz_textbox1").val() != "") {
                notiz = $("#notiz_textbox1").val();
            }

            if ($("#notiz_textbox2").val() != "") {
                notiz2 = $("#notiz_textbox2").val();
            }

            if ($("#notiz_textbox3").val() != "") {
                notiz3 = $("#notiz_textbox3").val();
            }

            if ($("#notiz_textbox4").val() != "") {
                notiz4 = $("#notiz_textbox4").val();
            }

            if ($("#notiz_textbox5").val() != "") {
                notiz5 = $("#notiz_textbox5").val();
            }



            ZeiterfassungDatakonstrukt.push(zahl, hilfeplan, mitarbeiter, kategorie,
                                            leistung, $("#datum_textbox").val(), $("#start_textbox").val(), $("#ende_textbox").val(),
                                            duration, notiz, zahl, notiz2, notiz3, notiz4, notiz5, $("#enddatum_textbox").val());

            localStorage.setItem("Zeitdaten", ZeiterfassungDatakonstrukt);
           
        }
        //else
        //    alert("Fehler: Der Browser unterstützt kein Local Storage");
    }
}


function DeletStorage(i) {
    if(i == 1)
        localStorage.removeItem("Zeitdaten");
    if(i == 2)
        localStorage.removeItem("Kalenderdaten");
}

function saveOnlyKalender() {
    if (navigator.onLine == true) {      

            DeletStorage(2);

            var TerminDatum = Kalenderzwischenspeicher[0];
            var TerminStratZeit = Kalenderzwischenspeicher[1];
            var TerminEndZeit = Kalenderzwischenspeicher[2];
            var TerminBetreff = Kalenderzwischenspeicher[3];
            var TerminNotiz = Kalenderzwischenspeicher[4];
            
            KalenderDatakonstrukt.push(TerminDatum, TerminStratZeit, TerminEndZeit, TerminBetreff, TerminNotiz);
            localStorage.setItem("Kalenderdaten", KalenderDatakonstrukt);
           
            location.reload();
    }
}


function saveKalenderAfterCrash(Datum, StartZ, EndZ, Betreff, Notice) {
        $.ajax({
            type: "GET",
            url: setSelectedKalenderUrl,
            data: { day: Datum, startZeit: StartZ, endZeit: EndZ, betreff: Betreff, notice: Notice }, success: function () { }, error: function () { }
        });
}


function saveZeiterfassungAfterCrash(datum,startd,endd,dauer,doku,leistung, oid, doku2,doku3,doku4,doku5,enddatum) {    
    var x = getDateObj(true);
    var y = getDateObj(false);
    
    var vonDatum = getDateTimeStringWithLeadingZeros(x);
    var bisDatum = getDateTimeStringWithLeadingZeros(y);

     if (oid == -2) {
         $.ajax({
             type: "GET",
             url: saveZeiterfassungAfterCrashUrl,
             data: { Datum: datum, StartD: startd, EndeD: endd, Dauer: dauer, Doku: doku, Leistungen: leistung, Doku2: doku2, Doku3: doku3, Doku4: doku4, Doku5: doku5, EndDatum: enddatum }, success: function () { }, error: function () { }
         });
     } else {
          $.ajax({
              type: "GET",
              url: CheckRightsAfterCrashUrl,
              data: { von: vonDatum, bis: bisDatum, inEditMode: false, dateString: datum, startString: startd, endString: endd, costbearerOId: oid, leistung:leistung},
              success: function (json) {
           
                  var x  = json;

                  if (x == "True") {
                    $.ajax({
                        type: "GET",
                        url: saveZeiterfassungAfterCrashUrl,
                        data: { Datum: datum, StartD: startd, EndeD: endd, Dauer: dauer, Doku: doku, Leistungen: leistung, Doku2: doku2, Doku3: doku3, Doku4: doku4, Doku5: doku5, EndDatum: enddatum }, success: function () { }, error: function () { writeFatalErrorMessage("Es konnte keine verbindung zum Server aufgebaut werden. Bitte überprüfen sie ihre Internet Verbindung."); /*$("#scDropDown option[value='" + oid + "']").attr('selected', true).trigger("change");*/ }
                    });
         
                  } else {
                      DeletStorage(1);

                      setTimeout(function () {
                          $("#scDropDown option[value='" + oid + "']").attr('selected', true).trigger("change");
                      }, 4500);

                  }
              }, error: function () {
                  DeletStorage(1);
                  writeFatalErrorMessage("Es konnte keine Verbindung zum Server aufgebaut werden. Bitte überprüfen Sie Ihre Internetverbindung.");
                 // $("#scDropDown option[value='" + oid + "']").attr('selected', true).trigger("change");
                  }
        });
     }
}


function LoadOnly(i, x) {
    var zeitdata = localStorage.getItem("Zeitdaten");
    var kalenderdata = localStorage.getItem("Kalenderdaten");

    if (zeitdata != null || kalenderdata != null) {
        if (zeitdata && i == 1) {
            var zeit = zeitdata.split(",");
            
            if (zeit[6] == "" && zeit[7] == "" && zeit[8] == "" && zeit[9] == "" && zeit[10] == "" && zeit[5] == "") {
                // es wurden keine daten gefunden
            } else {
                    writeFatalErrorMessage("Es ist ein nicht gespeicherter Eintrag vorhanden. Dieser wird nun an den Server gesendet.");
    
                    setTimeout(function(){                 
                        saveZeiterfassungAfterCrash(zeit[6], zeit[7], zeit[8], zeit[8], zeit[10], zeit[5], zeit[11], zeit[12], zeit[13], zeit[14], zeit[15], zeit[16]);
                        DeletStorage(1);
                        showServiceRecords();
                    }, SetTimeoutTime);
            }  
        }
            if (kalenderdata && x == 2) {
                var kalezeit = kalenderdata.split(",");

                if (kalezeit[0] == "" && kalezeit[1] == "" && kalezeit[2] == "" && kalezeit[3] == "" && kalezeit[4] == "") {
                    // es wurden keine daten gefunden
                } else {
                    writeFatalErrorMessage("Es ist ein nicht gespeicherter Kalender Eintrag vorhanden. Dieser wird nun an den Server gesendet.", 1);

                    setTimeout(function(){
                        saveKalenderAfterCrash(kalezeit[0], kalezeit[1], kalezeit[2], kalezeit[3], kalezeit[4]);
                        DeletStorage(2);
                        showServiceRecords();
                    }, SetTimeoutTime);
                }
            }
    } else {
            //Es soll nix passieren 
    }
}

 //fehlermeldungen 
function ErrorZeiterfassungAfterCrash() {
    var errorwert = 1;

    if (document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 1 || document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == null || document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 0) {  
        // Es soll nix passieren
        console.log("Bin in error zeiterfassung ");
    } else if (document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 2) {
       writeFatalErrorMessage("Es konnte keine Verbindung zum Server aufgebaut werden. Bitte überprüfen sie ihre Internet Verbindung.");
       document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value = 1;
       DeletStorage(1);
        setTimeout(function(){
           $.ajax({
                type: "GET",
                url: ErrorZeiterfassungAnzeigenUrl,
                data: { errorwert: errorwert }
           });
        }, SetTimeoutTime);
    } else if (document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 3) {
        writeFatalErrorMessage("Es konnte keine Verbindung zum Server aufgebaut werden. Bitte überprüfen Sie Ihre Internet Verbindung.");
       document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value = 1;
       DeletStorage(1);
        setTimeout(function(){
           $.ajax({
                type: "GET",
                url: ErrorZeiterfassungAnzeigenUrl,
                data: { errorwert: errorwert }
           });
        }, SetTimeoutTime);
    } else if (document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 4) {
        writeFatalErrorMessage("Das Datum liegt außerhalb des Zeitraumes des gewählten Hilfeplans. Der Eintrag kann nicht gespeichert werden.");
        document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value = 1;
        DeletStorage(1);
        setTimeout(function(){
            $.ajax({
                type: "GET",
                url: ErrorZeiterfassungAnzeigenUrl,
                data: { errorwert: errorwert }
            });
        }, SetTimeoutTime);
    } else if (document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value == 5) {
        writeFatalErrorMessage("Die eingegebene Uhrzeit ist ungültig. Der Eintrag kann nicht gespeichert werden.");
        document.getElementById("ErrorZeiterfassungAfterCrashSchalter").value = 1;
        DeletStorage(1);
        setTimeout(function(){
           $.ajax({
                type: "GET",
                url: ErrorZeiterfassungAnzeigenUrl,
                data: { errorwert: errorwert }
           });
        }, SetTimeoutTime);
    }
}

function aktualDurationwithEndDate() {

    if ($("#enddatum_textbox").val() != "") {

        if ($("#enddatum_textbox").val() != $("#datum_textbox").val()) {

            var a = getEndDateObj().getDate();

            var sum = a - getDateObj().getDate();

            var et = $("#ende_textbox").val();

            var st = $("#start_textbox").val();

            var duri = et - st;

            var rest = duri % 100;

            duri = duri - rest;

            duri = duri / 100 * 60; 
                
            var enddur = sum * 24 * 60 + duri + rest;
                  
            $("#duration_textbox").val(enddur).trigger("change");
        }
    }
}

function getEndDateObj() {
    var roh = $("#enddatum_textbox").val();

    var dd = parseInt(roh.slice(0, 2));
    var mm = parseInt(roh.slice(3, 5));
    var yyyy = parseInt(roh.slice(6, 10));
    var hm = [0, 0];

    var date = new Date();
    if (!isNaN(dd) && !isNaN(mm) && !isNaN(yyyy)) {
        date = new Date(yyyy, mm - 1, dd);
    }

    var ds = $("#ende_textbox").val();

    if (ds != "") {
        hm = stringToTime(ds);
    }

    date.setHours(hm[0]);
    date.setMinutes(hm[1]);

    return date;
}


function focusOnTab(x) {
    if (x == 1) {
        setTimeout(function () {
         document.getElementById("notiz_textbox1").focus();       
        }, 100);           
    }
    if (x == 2) {
        setTimeout(function () {
            document.getElementById("notiz_textbox2").focus();
        }, 100);
    }
    if (x == 3) {
        setTimeout(function () {
            document.getElementById("notiz_textbox3").focus();
        }, 100);      
    }
    if (x == 4) {
        setTimeout(function () {
            document.getElementById("notiz_textbox4").focus();
        }, 100);     
    }
    if (x == 5) {
        setTimeout(function () {
            document.getElementById("notiz_textbox5").focus();
        }, 100);    
    }
}
