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


/**
 * Der Controller, der die Aktivitäten innerhalb unserer Webapplikation steuert.
 * Im Konstruktor werden die Eingabefelder des HTML Dokuments mit den notwendigen onblur-Events ausgestattet.
 */
function PrototypController(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;
}

/**
 * Implementation der benötigten EventHandler.
 */
PrototypController.prototype={
    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);
        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);
        message = document.getElementById("message_firstname");
        message.innerHTML = person.getFirstname();
    }
}

/**
 * Das Modell, welches eine Person verwaltet.
 */
function Person(){
    this.name = "";
    this.firstName = "";
}

Person.prototype={
    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 "";
    }   

}
