﻿
// Sets up inputs to be on-save-edit inputs, so change tiggers save option
function EditWatchSetup(containerElementId) {
    $(containerElementId).find('input').each(function () {
        EditWatchSetupInput(this, containerElementId);
    });
    $(containerElementId).find('select').each(function () {
        EditWatchSetupSelect(this, containerElementId);
    });
}

// for inputs
function EditWatchSetupInput(domObject, containerElementId) {
    if (fitsystems_debug)
        console.log("EditWatchSetupInput: id: " + domObject.id + " value: " + domObject.value);
    var parentForm = $(domObject).closest('form')[0];
    var parentFormId = '#'+parentForm.id;
    if (fitsystems_debug)
        console.log("EditWatchSetupInput: parentFormId: " + parentFormId);

    
    $(domObject).data('default', domObject.value)
                .addClass('ui-input')
                .focus(function () {
                    $(domObject).addClass('ui-focus');
                }).keyup(function (event) {
                    if ($(domObject).val() != $(domObject).data('default')) {
                        if (fitsystems_debug)
                            console.log("Change Made: " + parentFormId);
                        $(domObject).addClass('ui-edited');
                        $.data(domObject, 'edited', domObject.value != "");
                        HighlightInputContainer(parentFormId);
                    }
                    else {
                        $(domObject).removeClass('ui-edited');
                        RemoveUISuccessStatusClasses(domObject);
                        var inputContainerNeedsUpdating = InputContainerNeedsUpdating(parentFormId);
                        if (!inputContainerNeedsUpdating) {
                            CancelHighlightInputContainer(parentFormId);
                        }
                    }
                })
                .blur(function () {
                    $(domObject).removeClass('ui-focus');
                });
}

// for selects
function EditWatchSetupSelect(domObject, containerElementId) {
    if (fitsystems_debug)
        console.log("EditWatchSetupSelect: id: " + domObject.id + " value: " + domObject.value);
    var parentForm = $(domObject).closest('form')[0];
    var parentFormId = '#' + parentForm.id;
    if (fitsystems_debug)
        console.log("EditWatchSetupInput: parentFormId: " + parentFormId);
    
    $(domObject).data('default', domObject.value)
                .addClass('ui-input')
                .focus(function () {
                    $(domObject).addClass('ui-focus');
                }).change(function (event) {
                    if ($(domObject).val() != $(domObject).data('default')) {
                        if (fitsystems_debug)
                            console.log("Change Made: " + parentFormId);
                        $(domObject).addClass('ui-edited');
                        $.data(domObject, 'edited', domObject.value != "");
                        HighlightInputContainer(parentFormId);
                    }
                    else {
                        $(domObject).removeClass('ui-edited');
                        RemoveUISuccessStatusClasses(domObject);
                        var inputContainerNeedsUpdating = InputContainerNeedsUpdating(parentFormId);
                        if (!inputContainerNeedsUpdating) {
                            CancelHighlightInputContainer(parentFormId);
                        }
                    }
                })
                .blur(function () {
                    $(domObject).removeClass('ui-focus');
                });
            }
// Find whether all inputs/selects values in the input container equal their default values, and there for does not need updating
function InputContainerNeedsUpdating(parentFormId) {
    var inputContainerNeedsUpdating = false;
    $(parentFormId).find('input').each(function () {
        if ($(this).val() != $(this).data('default')) {
            inputContainerNeedsUpdating = true;
        }
    });
    $(parentFormId).find('select').each(function () {
        if ($(this).val() != $(this).data('default')) {
            inputContainerNeedsUpdating = true;
        }
    });
    if (fitsystems_debug)
        console.log('InputContainerNeedsUpdating: ' + inputContainerNeedsUpdating);
    return inputContainerNeedsUpdating;
}

// Highlights surrounding container of inputs to be updated on save
function HighlightInputContainer(parentFormId) {
    if (!$(parentFormId).hasClass('ui-tobesaved-highlighted')) {
        if (fitsystems_debug)
            console.log("Highlighting: " + parentFormId);
        $(parentFormId).addClass('ui-tobesaved-highlighted');
        $(parentFormId).find('.MiniIconPanel .Save').fadeIn();
    }
}

// Cancels the highlight on the inputs in the input container and resets their values
function CancelHighlightInputContainer(parentFormId) {
    $(parentFormId).removeClass('ui-tobesaved-highlighted');
    $(parentFormId).find('.MiniIconPanel .Save').fadeOut();
    $(parentFormId).find('input').each(function () {
        this.value = $(this).data('default');
        $(this).removeClass('ui-edited');
        RemoveUISuccessStatusClasses(this);
    });
    $(parentFormId).find('select').each(function () {
        this.value = $(this).data('default');
        $(this).removeClass('ui-edited');
        RemoveUISuccessStatusClasses(this);
    });
}



//// Looks for highlighted and saves inputs inside
//function SaveHighlightedInputContainers() {
//    $('.ui-tobesaved-highlighted').each(function () {
//        $(this).find('input.ui-edited').each(function () {
//            var inputId = $(this).attr('id');
//            EditFieldOf('#' + inputId);
//        });
//        $(this).find('select.ui-edited').each(function () {
//            var inputId = $(this).attr('id');
//            EditFieldOf('#' + inputId);
//        });
//    });
//}

//// Looks for a specific highlighted input container and saves inputs inside
//function SaveThisHighlightedInputContainer(containerElementId) {
//    $(containerElementId).each(function () {
//        $(this).find('input.ui-edited').each(function () {
//            var inputId = $(this).attr('id');
//            EditFieldOf('#' + inputId);
//        });
//        $(this).find('select.ui-edited').each(function () {
//            var inputId = $(this).attr('id');
//            EditFieldOf('#' + inputId);
//        });
//    });
//}

//// Looks for a specific input container and deletes it
//function DeleteThisInputContainer(containerElementId) {
//    if (fitsystems_debug)
//        console.log("DeleteThisInputContainer");
//    var split = containerElementId.toString().split('_');
//    var controller = split[0].toString().substring(1, split[0].length);
//    var id = split[1];
//    if (fitsystems_debug)
//        console.log("controller: " + controller + "id: " + id);
//    Delete(controller, id);
//}
