/**
 * Erstellt im HTML-Dokument die nötigen Eventhandler und initialisiert den Controller dieser Webappliaktion.
 */
function onload(){
    var controller = new PrototypController();
    controller.init(this.document);
}

function PrototypController(){}
/**
 * Implementation der benötigten EventHandler.
 */
PrototypController.prototype={
    document : null,
    person   : null,
    init : function(document){
        this.document = document;
        this.person = new Person();
        var inputName = document.getElementById("name");
        inputName.onblur = this.onBlurHandlerName;
        inputName.value = this.person.getName();
        // Beim Event wird das betroffene HTML-Element übergeben. Dieses HTML Element muss eine Referenz auf 
        // unseren Controller erhalten. Ansonsten können wir keine Verknüpfung zwischen der Oberfläche und dem Modell erreichen.
        inputName.controller = this;

        var inputFirstName = document.getElementById("firstname");
        inputFirstName.onblur = this.onBlurHandlerFirstName;
        inputFirstName.value = this.person.getFirstname();
        inputFirstName.controller = this;
    },
    onBlurHandlerName:function(){
        // Von der Referenz auf den Controller das Dokument und das Personenobjekt laden.
        var document = this.controller.document;
        var person = this.controller.person;
        var value = (this.value) ? this.value : "Kein Name";
        person.setName(value);
        var message = document.getElementById("message_name");
        message.innerHTML = person.getName();
    },
    onBlurHandlerFirstName:function(){
        var value = (this.value) ? this.value : "Kein Name";
        var document = this.controller.document;
        var person = this.controller.person;
        person.setFirstname(value);
        var message = document.getElementById("message_firstname");
        message.innerHTML = person.getFirstname();
    }
}

/**
 * Das Modell, welches eine Person verwaltet.
 */
function Person(){
    
}

Person.prototype={
    name         : "Kein Name",
    firstName    : "Kein Vorname",
    setName      : function(name){
        this.name = name;
    },

    getName      : function(){
        if(this.name != ""){
            return this.name+"_vomModel";
        }
        return "";
    },

    setFirstname : function(firstName){
        this.firstName = firstName;
    },

    getFirstname : function(){
        if(this.firstName != ""){
            return this.firstName+"_vomModel";
        }
        return "";
    }
}
