diff --git a/.DS_Store b/.DS_Store
index 108f1b0aa889a7f79532bcaa4e02348aafc56d41..905bd5d18298f266f406249c0fee9466d22736f6 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Lab_3/.DS_Store b/Lab_3/.DS_Store
index 38e64d943bd45b70ad540b986a392aaf8d1e02b2..200df3d9191948bed14cf2a33a4cf3cc955d6a02 100644
Binary files a/Lab_3/.DS_Store and b/Lab_3/.DS_Store differ
diff --git a/Lab_3/Twidder/__pycache__/database_helper.cpython-38.pyc b/Lab_3/Twidder/__pycache__/database_helper.cpython-38.pyc
index 7e4a18eb4153651973e42af292cfa4aab521d882..4a88982239d44f30fb97268db74a884248526f91 100644
Binary files a/Lab_3/Twidder/__pycache__/database_helper.cpython-38.pyc and b/Lab_3/Twidder/__pycache__/database_helper.cpython-38.pyc differ
diff --git a/Lab_3/Twidder/database.db b/Lab_3/Twidder/database.db
index 6632cf3724c98df77710b31b50d2632646ef5f85..b77a861fe582d500b26c331020471bf2bd5e073a 100644
Binary files a/Lab_3/Twidder/database.db and b/Lab_3/Twidder/database.db differ
diff --git a/Lab_3/Twidder/server.py b/Lab_3/Twidder/server.py
index e85ba16005b693611dace5af2a98006a4b60807c..ddebbc0545c1d9cbd153a87cd23044b80b455a4d 100644
--- a/Lab_3/Twidder/server.py
+++ b/Lab_3/Twidder/server.py
@@ -1,3 +1,4 @@
+
 """Server"""
 from flask import Flask, jsonify, request, make_response
 from gevent.pywsgi import WSGIServer
@@ -5,10 +6,10 @@ import uuid
 import database_helper
 import json
 from flask_sock import Sock
+import threading
+
 from gevent import monkey
 monkey.patch_all()
-
-
 #Remember:
 #PUT for updating data, POST for adding new data
 #save token on client and server (lab 3)
@@ -17,28 +18,22 @@ monkey.patch_all()
 # python3 server.py
 # http://127.0.0.1:5000/myServer
 # sqlite3 database.db ".read schema.sql"
-
 #Questions:
 #Why does localhost in URL not work?
 
-
-
 app = Flask(__name__, static_url_path = '/static')#in case flask does not recognize folder
 sock = Sock(app)
-
 app.debug = True
 session = {'token': ("email", "wsObj")}
-
+lock = threading.Lock()
 
 
 @app.route('/')
 def root():
     return app.send_static_file('client.html')
-
 @app.route('/myServer')
 def myServer():
     return app.send_static_file('client.html')
-
 def token_has_error(token):
     """All token standard error checks"""
     if token is None:
@@ -51,7 +46,6 @@ def token_has_error(token):
         #"User not signed in or invalid access token"  
         return True, 401
     return False, 0
-
 def input_has_error(input):
     """All standard input error checks"""
     try:
@@ -64,15 +58,12 @@ def input_has_error(input):
         return True, 400, ""
     return False, 0, str
 
-
 @sock.route('/myServer/api')
 def echo(socket):
     while True:
-
         # Making sure we have a valid socket
         if not socket:
             return
-
         # Making sure message format is OK and store email & token in string
         data = socket.receive()
         try:
@@ -85,39 +76,28 @@ def echo(socket):
             return
 
         # sign out if I am logged in somewhere else
-
-        print("Before loop")
-        print("/n")
         print(session)
-        print("/n")
-
-        for token in list(session.keys()):
-            if session[token][0] == myEmail and token != myToken and session[token][1] != "":
-                print("Inside first if")
-                #if session[token][1] != "":
-                print("Inside second if")
-                session[token][1].send(json.dumps({"action" : "signOut"}))
-                print(token[1])
-                session[token][1].close()
-                print("You got kicked out")
-                session.pop(token)
         
-        print("After loop")
-        print("/n")
-        print(session)
-        print("/n")
-
-        # Put socket in global dict so server knows my connection is open
-        session[myToken] = (myEmail, socket)
-
-        print("After insertion into dict")
-        print("/n")
-        print(session)
-        print("/n")
-
-        socket.send(json.dumps({"action" : "signIn"}))
+        lock.acquire() 
+        if myToken in session:
+            for token in list(session.keys()):
+                if session[token][0] == myEmail and token != myToken:
+                    if session[token][1] != "":
+                        session[token][1].send(json.dumps({"action" : "signOut"}))
+                        session[token][1].close()
+                    print("You got kicked out")
+                    session.pop(token)
+
+            print(session)
+
+            # Put socket in global dict so server knows my connection is open
+            session[myToken] = (myEmail, socket)
+            socket.send(json.dumps({"action" : "signIn"}))
+        else:
+            socket.send(json.dumps({"action" : "signOut"}))
+            socket.close()
+        lock.release()
     
-
 @app.route("/myServer/sign_in", methods=['POST'])
 def sign_in():
     """Sign in user"""
@@ -127,24 +107,22 @@ def sign_in():
     if tmp[0]:
         return jsonify({}), tmp[1]
     email = tmp[2]
-
     # Validate Password
     tmp = input_has_error('password')
     if tmp[0]:
         return jsonify({}), tmp[1] 
     password = tmp[2]    
-
     # Do the user have an account?
     rows = database_helper.find_user(email)
     if rows is None or rows == []:
         return jsonify({}), 404  #"No user found by your email" 
-
     if password != rows[1]:
-        return jsonify({}), 401 #"Incorrect password")    x      
-
+        return jsonify({}), 401 #"Incorrect password")          
     # Generate a random token 
     token = str(uuid.uuid4())
+    lock.acquire()
     session[token] = (email, "")
+    lock.release()
     
     # return the token in the Authorization header
     response = make_response(jsonify({})) #"Server inserted user data into database"   
@@ -152,17 +130,14 @@ def sign_in():
     response.headers["Authorization"] = token
     return response, 204
 
-
 @app.route("/myServer/sign_up", methods=['POST'])
 def sign_up():
     """Sign up a user"""
-
     tmp = input_has_error('email')
     if tmp[0]:
-        print(tmp[1])
+   #     print(tmp[1])
         return jsonify({}), tmp[1]
     email = tmp[2]
-
     # Checking that the user does not already exist
     if database_helper.find_user(email) is not None:
         return jsonify({}), 409   #"Error: User already exists"     
@@ -193,14 +168,12 @@ def sign_up():
     if tmp[0]:
         return jsonify({}), tmp[1]
     country = tmp[2]
-
     # Attempts to insert the user data to the database
     if database_helper.create_user(email, password, firstname, familyname, gender, city, country):
         return jsonify({}), 204 #"Server inserted user data into database"
     else:
         return jsonify({}), 500 #"General Error: Server failed to insert user data into database" 
 
-
 @app.route("/myServer/sign_out", methods=['POST'])
 def sign_out():
     """Sign out user"""
@@ -212,108 +185,92 @@ def sign_out():
         return jsonify({}), tmp[1]
     
     # Close my socket
-    print(session)
+    lock.acquire()
     try:
         session[token][1].close()
     except:
         pass # samma sak som ingenting
-    print(session)
-
-    # set user to not logged in
-    session.pop(token)
+    try:
+        session.pop(token)
+    except:
+        pass
+    lock.release()
 
     return jsonify({}), 204 # "Successfully signed out")
 
-
 @app.route("/myServer/change_password", methods=['PUT'])
 def change_password():
     """Change password for the current user"""
     token = request.headers["Authorization"]
-
     # Validate Token 
     tmp = token_has_error(token)
     if tmp[0]:
-        print("validate token")
+        #print("validate token")
         return jsonify({}), tmp[1]
-
     # Validate Old Password
     tmp = input_has_error('old_password')
     if tmp[0]:
-        print("validate old password")
+        #print("validate old password")
         return jsonify({}), tmp[1]
     old_password = tmp[2]
-
     # Validate New Password
     tmp = input_has_error('new_password')
     if tmp[0]:
-        print("validate new password")
+        #print("validate new password")
         return jsonify({}), tmp[1]
     new_password = tmp[2]
-
     # Extracting theemail of the current user
     email = session[token][0]
-
     # Validation of the old password and attemption to change it to the new one
     if old_password == database_helper.find_user(email)[1]: #checks if old_password is correct
         status = database_helper.update_user(new_password, email)
         if status: 
-            print("Password changed")
+           # print("Password changed")
             return jsonify({}), 204  # "Password has been changed!"  
         else:
             return jsonify({}), 500 # "Password has not been changed"
     else:
         return jsonify({}), 400 # "Old password is incorrect"
 
-
 @app.route("/myServer/getDataByToken", methods=['GET'])
 def get_user_data_by_token():
     """Verify current user through token and attemp to return the data of the user"""
     token = request.headers["Authorization"]
-
     # Validate token
     if token not in session:
         return jsonify({}), 401  # "User not signed in or invalid access token"
-
     # Extracting the email of the current user
     email = session[token][0]
     return get_user_data_by_email(email)
 
-
 @app.route("/myServer/getDataByEmail/<email>", methods=['GET'])
 def get_user_data_by_email(email):
     """Get user data by email"""
     token = request.headers["Authorization"]
-
     # Validate Token 
     tmp =  token_has_error(token)
     if tmp[0]:
         return jsonify({}), tmp[1]
-
     # Validate email
     if email is None:
         return True, 400   
     if len(email) > 50:   
         return True, 400
-
     # Attempting to find the data of the current user in the database
     data = database_helper.find_user(email)
     if data is None or data == []:
         return jsonify({}), 404 #"No user found by your destination email"
-
     formated_data = {"email": data[0], "firstname": data[2], "familyname": data[3], "gender": data[4], "city": data[5], "country": data[6]}
     return jsonify({"data" : formated_data}), 200 # "Data successfully sent to you!"
 
-
 @app.route("/myServer/getUserMessageByToken", methods=['GET'])
 def get_user_messages_by_token():
     """Get user's message wall thought the token of the user"""
     token = request.headers["Authorization"]
-
     # Validate Token 
     tmp = token_has_error(token)
     if tmp[0]:
         return jsonify({}), tmp[1]
-
     # Extracting the email of the current user 
     email = session[token][0]
     return get_user_messages_by_email(email)
@@ -322,7 +279,6 @@ def get_user_messages_by_token():
 def get_user_messages_by_email(req_email):
     """Get user's message wall thought the email of the user"""
     token = request.headers["Authorization"]
-
     # Validate Token 
     tmp = token_has_error(token)
     if tmp[0]:
@@ -333,36 +289,29 @@ def get_user_messages_by_email(req_email):
         return True, 400   
     if len(req_email) > 50:   
         return True, 400
-
     # Find requested user in the data base
     rows = database_helper.find_user(req_email) 
-
     # Error check
     if rows is None or rows == []:     
         return jsonify({}), 404 #"No user found by your destination email"
-
     # Insert post-info into array
     rows = database_helper.get_post(req_email)
     result = []
     for row in rows:
          result.append({"email": row[0], "person_who_posted": row[1], "message": row[2]})
-
     # Notify user if the wall is empty or not, and if not, return the all messages
     if result == []:
         return jsonify({}), 204 #"user's wall had no messages to collect"
     return jsonify({"data" : result}), 200 # User posts has been displayed"
 
-
 @app.route("/myServer/post", methods=['POST'])
 def post_message():
     """Post a message on sombody's wall"""
-
     # Find out sender's email
     token = request.headers["Authorization"] 
     tmp = token_has_error(token)
     if tmp[0]:
         return jsonify({}), tmp[1]
-
     # Extracting the email of the current user
     my_email = session[token][0]
     
@@ -371,24 +320,20 @@ def post_message():
     if tmp[0]:
         return jsonify({}), tmp[1]
     destination_email = tmp[2]
-
     # Finding out if the user exist, who we wanna write a message to
     rows = database_helper.find_user(destination_email) 
     if rows is None or rows == []:
         return jsonify({}), 404 #"No user found by your destination email"
-
     # Verify message that we want to post
     tmp = input_has_error('message')
     if tmp[0]:
         return jsonify({}), tmp[1]
     message = tmp[2]
-
     # Calling and error checking function
     if not database_helper.create_post(my_email, destination_email, message):
         return jsonify({}), 500 #"Server failed to post message to database"
     return jsonify({}), 204 #"Succeeded to post message")
-
-
+    
 if __name__ == '__main__':
     # app.run(port=5000, debug=True)
     app.debug = True
diff --git a/Lab_3/Twidder/static/client.html b/Lab_3/Twidder/static/client.html
index 0fde432f2a7b4aeaeb3f70f5bf28d91ca966d418..96e8db5c229501e7218cf38f0ca2fe71453937b2 100644
--- a/Lab_3/Twidder/static/client.html
+++ b/Lab_3/Twidder/static/client.html
@@ -91,10 +91,10 @@
                 </table>
                 <form id="homeInputTextArea" class="inputTextArea" onsubmit="return updateWall('home')">
                     <label for="PostMessage">Post a message on your wall:</label> <br>
-                    <textarea id="homeTextarea" name="textarea" rows="6" cols="50"></textarea>                    
+                    <textarea id="homeTextarea" name="textarea" rows="6" cols="50" ondrop="dropHome(event)" ondragover="allowDrop(event)"></textarea>                    
                     <button class="textAreaButton" type="submit" value="Submit">Submit</button>
                 </form>
-                <div id="homePostedMessagesDiv" class="PostedMessagesDiv"></div>
+                <div id="homePostedMessagesDiv" class="PostedMessagesDiv" draggable="true" ondragstart="drag(event)"></div>
                 <form id="homeReloadForm" class="reloadForm" onsubmit="return reloadWall('home')">
                     <input id="homeReloadButton" class="reloadButton" type="submit" value="Reload">
                 </form>
@@ -133,11 +133,11 @@
 
                 <form id="browseInputTextArea" class="inputTextArea" onsubmit="return updateWall('browse')">
                     <label for="PostMessage">Post a message on your wall:</label> <br>
-                    <textarea id="browseTextarea" name="textarea" rows="6" cols="50"></textarea>                    
+                    <textarea id="browseTextarea" name="textarea" rows="6" cols="50" ondrop="dropBrowse(event)" ondragover="allowDrop(event)"></textarea>                    
                     <button class="textAreaButton" type="submit" value="Submit">Submit</button>
                 </form>
 
-                <div id="browsePostedMessagesDiv" class="PostedMessagesDiv"></div>
+                <div id="browsePostedMessagesDiv" class="PostedMessagesDiv" draggable="true" ondragstart="drag(event)"></div>
                 <form id="browseReloadForm" class="reloadForm" onsubmit="return reloadWall('browse')">
                     <input id="browseReloadButton" class="reloadButton" type="submit" value="Reload">
                 </form>
@@ -171,7 +171,9 @@
     </head>
 
     <body>
-        <div id="windowDiv"></div>
+        <div id="windowDiv">
+
+        </div>
     </body>
     
 </html>
diff --git a/Lab_3/Twidder/static/client.js b/Lab_3/Twidder/static/client.js
index 95fc651fc1894aa66dc4c94f5a2e395920672fc0..b866973e0fd8e36ccd99903e9a8457ab37efe0b3 100644
--- a/Lab_3/Twidder/static/client.js
+++ b/Lab_3/Twidder/static/client.js
@@ -1,3 +1,4 @@
+
 // Global variables
 var minPassLength = 2;
 var windowDiv;
@@ -6,96 +7,114 @@ var profileDiv;
 var url = 'http://' + document.domain + ':5000/myServer/';
 var curr_page = "";
 var socket;
-
 // source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate"
 
+function allowDrop(event) {
+    event.preventDefault();
+}
+function drag(event) {
+    event.dataTransfer.setData("text/plain", event.target.innerHTML);
+}
+function dropHome(event) {
+    event.preventDefault();
+    let data = event.dataTransfer.getData("text/plain");
+    // Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
+    let newStr = data.replace(/<br>/g, "\n");
+    // newStr = tmp.replace(/   /g, '');
+    document.getElementById("homeTextarea").innerHTML = newStr;
+}
+function dropBrowse(event) {
+    event.preventDefault();
+    let data = event.dataTransfer.getData("text/plain");
+    // Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
+    let newStr = data.replace(/<br>/g, "\n");
+    // newStr = tmp.replace(/   /g, '');
+    document.getElementById("browseTextarea").innerHTML = newStr;
+}
 
-function connectWithSocket() {
+// Socket
+function connectWithSocket(mode) {
     let token = localStorage.getItem("currentUser");
-            
     // Changes the view to profile view and loads user info
     displayView();
-    setUserDetails("home");
+    setUserDetails("home")
 
     // Establish web socket
     socket = new WebSocket('ws://' + document.domain + ':5000/myServer/api');
-
     socket.onopen = function (event) {
         let myEmail = localStorage.getItem("homeEmail");
-
+        if (mode == 0) {//Once sign_in is called
+            console.log("Inside connectWithSocket mode 0")
+            this.send(JSON.stringify({ token: token, email: myEmail, mode: mode }));
+        }
+        else {//Once sign_out is called
+            console.log("Inside connectWithSocket mode 1")
+            this.send(JSON.stringify({ token: token, email: myEmail, mode: mode }));
+        }
         // Todo - ändra så att token skickas i header istället
-        this.send(JSON.stringify({token: token, email: myEmail}));
         console.log("Nu har jag skickat");
     }
-
     socket.onmessage = function (event) {
         let response = JSON.parse(event.data);
-
-        console.log("Nu fick jag svar"); 
+        console.log("Nu fick jag svar");
         switch (response["action"]) {
             case "signOut":
-
-                // If old socket open, close it.
-                //socket.close();
-                console.log(response);
-
                 // Reset token in the localStorage
                 localStorage.setItem("currentUser", "");
                 localStorage.setItem("homeEmail", "");
                 localStorage.setItem("browseEmail", "");
-
                 // Changes the view to welcome view
                 displayView();
                 document.getElementById("error").innerHTML = "Signed Out, you signed in elsewhere";
                 break;
-            case "signIn":
+            case "signIn":;
+                
+                // This
+                displayView();
+                setUserDetails("home")
                 console.log(response);
                 console.log("ja är signed in");
                 break;
-        } 
+        }
     }
 }
-
-
 // - - - - - Init Request Objects - - - - - //
-
 // Sign In Request Object
 var signInRequest = new XMLHttpRequest();
-signInRequest.onreadystatechange = function() {
+signInRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         let errorMessage = document.getElementById("error");
         if (this.status == 204) {
-            let token = this.getResponseHeader("Authorization")
+            let token = this.getResponseHeader("Authorization");
             localStorage.setItem("currentUser", token);
-            connectWithSocket();
+            console.log("Inside SignInRequest")
+            connectWithSocket(0);
         }
         else if (this.status == 400) {
-            errorMessage.innerHTML = "Error 400: Incorrect format"; 
+            errorMessage.innerHTML = "Error 400: Incorrect format";
         }
         else if (this.status == 404) {
-            errorMessage.innerHTML = "Error 404: No user with that email exists"; 
+            errorMessage.innerHTML = "Error 404: No user with that email exists";
         }
         else if (this.status == 401) {
-            errorMessage.innerHTML = "Error 401: Incorrect password"; 
+            errorMessage.innerHTML = "Error 401: Incorrect password";
         }
         else {
-            errorMessage.innerHTML = "Unknown error"; 
-        } 
+            errorMessage.innerHTML = "Unknown error";
+        }
     }
 };
-
 // Sign Out Request Object
 var signOutRequest = new XMLHttpRequest();
-signOutRequest.onreadystatechange = function() {
+signOutRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
+        // Reset token in the localStorage
+        localStorage.setItem("currentUser", "");
+        localStorage.setItem("homeEmail", "");
+        localStorage.setItem("browseEmail", "");
+        console.log("Inside signOutRequest")
         if (this.status == 204) {
-
-            // Reset token in the localStorage
-            localStorage.setItem("currentUser", "");
-            localStorage.setItem("homeEmail", "");
-            localStorage.setItem("browseEmail", "");
-
+            connectWithSocket(1);
             // Changes the view to welcome view
             displayView();
         }
@@ -106,15 +125,13 @@ signOutRequest.onreadystatechange = function() {
         else {
             console.log("Unknown error");
             displayView();
-        } 
+        }
     }
 };
-
 // Sign Up Request Object
 var signUpRequest = new XMLHttpRequest();
 signUpRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         let errorMessage = document.getElementById("error");
         if (this.status == 204) {
             errorMessage.innerHTML = "You have signed up";
@@ -127,18 +144,16 @@ signUpRequest.onreadystatechange = function () {
         }
         else if (this.status == 500) {
             errorMessage.innerHTML = "Error 500: Error at server side";
-            }
+        }
         else {
             errorMessage.innerHTML = "Unknown error";
         }
     }
 };
-
 // Change Password Request Object
 var ChangePassRequest = new XMLHttpRequest();
 ChangePassRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         let errorMessage = document.getElementById("match_error");
         if (this.status == 204) {
             errorMessage.innerHTML = "Password has been changed!";
@@ -147,26 +162,23 @@ ChangePassRequest.onreadystatechange = function () {
             errorMessage.innerHTML = "Error 400: Old password is incorrect or Old/New password has wrong format"
         }
         else if (this.status == 401) {
-            errorMessage.innerHTML = "Error 401: You are not logged in"
+            errorMessage.innerHTML = "Error 401: You are not logged in";
         }
         else if (this.status == 500) {
             errorMessage.innerHTML = "Error 500: Error at server side";
         }
         else {
-            errorMessage.innerHTML = "Unknown error"
+            errorMessage.innerHTML = "Unknown error";
         }
         errorMessage.style.display = "block";
     }
 };
-
 // Get user data by token Request Object
 var dataByTokenRequest = new XMLHttpRequest();
-dataByTokenRequest.onreadystatechange = function() {
+dataByTokenRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
         if (this.status == 200) {
-            
             let userDataArray = JSON.parse(this.responseText);
-
             // Putting the user data we retrieved from server to the corresponding html table
             let userTable = document.getElementById("homeUserInfo");
             userTable.rows[0].cells[1].innerHTML = userDataArray["data"].email;
@@ -175,7 +187,6 @@ dataByTokenRequest.onreadystatechange = function() {
             userTable.rows[3].cells[1].innerHTML = userDataArray["data"].gender;
             userTable.rows[4].cells[1].innerHTML = userDataArray["data"].city;
             userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country;
-
             localStorage.setItem("homeEmail", userDataArray["data"].email);
             reloadWall("home");
         }
@@ -193,17 +204,13 @@ dataByTokenRequest.onreadystatechange = function() {
         }
     }
 };
-
 // Get user data by email Request Object
 var dataByEmailRequest = new XMLHttpRequest();
-dataByEmailRequest.onreadystatechange = function() {
+dataByEmailRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         let errorMessage = document.getElementById("searchMessage");
         if (this.status == 200) {
-           
             let userDataArray = JSON.parse(this.responseText);
-
             // Putting the user data we retrieved from server to the corresponding html table
             let userTable = document.getElementById("browseUserInfo");
             userTable.rows[0].cells[1].innerHTML = userDataArray["data"].email;
@@ -212,38 +219,33 @@ dataByEmailRequest.onreadystatechange = function() {
             userTable.rows[3].cells[1].innerHTML = userDataArray["data"].gender;
             userTable.rows[4].cells[1].innerHTML = userDataArray["data"].city;
             userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country;
-
             localStorage.setItem("browseEmail", userDataArray["data"].email);
             errorMessage.iinnerHTML = ""
             reloadWall("browse");
         }
         else {
             if (this.status == 401) {
-                errorMessage.innerHTML = "Error 401: You are not loged in"; 
+                errorMessage.innerHTML = "Error 401: You are not loged in";
             }
             else if (this.status == 400) {
-                errorMessage.innerHTML = "Error 400: Incorrect format"; 
+                errorMessage.innerHTML = "Error 400: Incorrect format";
             }
             else if (this.status == 404) {
-                errorMessage.innerHTML = "Error 404: No user with that email exists"; 
+                errorMessage.innerHTML = "Error 404: No user with that email exists";
             }
             else {
-                errorMessage.innerHTML = "Unknown error"; 
-            } 
+                errorMessage.innerHTML = "Unknown error";
+            }
             localStorage.setItem("browseEmail", "");
         }
     }
 };
-
 // Get Messages By Token Request Object
 var messagesByTokenRequest = new XMLHttpRequest();
-messagesByTokenRequest.onreadystatechange = function() {
+messagesByTokenRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         if (this.status == 200) {
-           
             let currentWall = JSON.parse(this.responseText);
-
             // Formating the text before putting to wall
             let complete = "";
             for (let i = 0; i < currentWall.data.length; i++) {
@@ -265,26 +267,21 @@ messagesByTokenRequest.onreadystatechange = function() {
         }
         else {
             console.log("Unknown error");
-        } 
+        }
     }
 };
-
 // Get Messages By Email Request Object
 var messagesByEmailRequest = new XMLHttpRequest();
-messagesByEmailRequest.onreadystatechange = function() {
+messagesByEmailRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         if (this.status == 200) {
-           
             let currentWall = JSON.parse(this.responseText);
-
             // Fromating the text before putting to wall
             let complete = "";
             for (let i = 0; i < currentWall.data.length; i++) {
                 complete += currentWall.data[i].person_who_posted + ':   ' + currentWall.data[i].message + "</br>";
             }
             document.getElementById('browsePostedMessagesDiv').innerHTML = complete;
-
         }
         else if (this.status == 204) {
             console.log("Success, but no messages to receive");
@@ -300,17 +297,15 @@ messagesByEmailRequest.onreadystatechange = function() {
         }
         else {
             console.log("Unknown error");
-        } 
+        }
     }
 };
-
 // Post Message Request Object
 var postMessageRequest = new XMLHttpRequest();
 postMessageRequest.onreadystatechange = function () {
     if (this.readyState == 4) {
-
         let errorMessage = document.getElementById('searchMessage');
-        if (this.status == 204) {   
+        if (this.status == 204) {
             console.log('Message posted!')
             errorMessage.innerHTML = "";
             if (curr_page != null && curr_page != "")
@@ -333,28 +328,20 @@ postMessageRequest.onreadystatechange = function () {
         }
     }
 };
-
-
 // - - - - - Init functions - - - - - //
-
 // Function for displaying the right view
-displayView = function(){
+displayView = function () {
     if (localStorage.getItem("currentUser") == "")
         windowDiv.innerHTML = welcomeDiv.innerHTML;
     else
         windowDiv.innerHTML = profileDiv.innerHTML;
 };
-
-
 // - - - - - The function when page loads - - - - - //
-
 window.onload = function () {
-
     // Delete when done - används för att hoppa tillbaka till rtt view under utveckling
     // localStorage.setItem("currentUser", "");
     // localStorage.setItem("homeEmail", "");
     // localStorage.setItem("browseEmail", "");
-
     // All key/value pairs stored in out localStorage
     // If first time? check this:
     if (localStorage.getItem("homeEmail") == null)
@@ -363,56 +350,46 @@ window.onload = function () {
         localStorage.setItem("browseEmail", "");
     if (localStorage.getItem("currentUser") == null)
         localStorage.setItem("currentUser", "");
-    
     // Initialize div objects (global variables)
     welcomeDiv = document.getElementById("welcomeview");
     profileDiv = document.getElementById("profileview");
     windowDiv = document.getElementById("windowDiv");
-    
     if (localStorage.getItem("currentUser") != "") {//if logged in
-        connectWithSocket();
+        connectWithSocket(0);
     }
     else {
         // Set correct view depending on if someone is signed in or not
         displayView();
     }
 };
-
-
 // Function for setting user details, either for yourself or for some other user
 function setUserDetails(who) {
-
     // "who" could be either home or browse, this way know which info we are displaying and where
     let token = localStorage.getItem("currentUser");
-    if (token != null && token != "" ){
+    if (token != null && token != "") {
         let userTable = document.getElementById(who + "UserInfo");
         let email = localStorage.getItem(who + "Email");
-
         // Display my own info
         if (who == 'home') {
             // Send request to server about receiving the info
             dataByTokenRequest.open("GET", url + "getDataByToken", true);
             dataByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-            dataByTokenRequest.setRequestHeader("Authorization", token)
+            dataByTokenRequest.setRequestHeader("Authorization", token);
             dataByTokenRequest.send();
         }
-
         // Display the info about the searched user
         else if (who == 'browse' && email != null && email != "") {
             // Send request to server about receiving the info
             dataByEmailRequest.open("GET", url + "getDataByEmail/" + email, true);
             dataByEmailRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-            dataByEmailRequest.setRequestHeader("Authorization", token)
+            dataByEmailRequest.setRequestHeader("Authorization", token);
             dataByEmailRequest.send();
         }
     }
     return false;
 }
-
 // - - - - - Sign Up/In/Out - - - - - //
-
 function sign_up() {
-
     let form = document.getElementById("signup_form");
     let errorMess = document.getElementById("signUpError");
     let user = {
@@ -425,15 +402,12 @@ function sign_up() {
         password: form[6].value,
         repeat_password: form[7].value
     };
-
-
     // Error checks
     if (user.password.length < minPassLength)
         errorMess.innerHTML = "Password's length is too short";
     else if (user.password != user.repeat_password)
         errorMess.innerHTML = "Passwords does not match";
     else {
-
         // Sending sign_ou request to "server"
         signUpRequest.open("POST", url + "sign_up", true);
         signUpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
@@ -441,44 +415,34 @@ function sign_up() {
     }
     return false;
 }
-
 function sign_in() {
     let form = document.getElementById("sign_in_form");
     let email = form[0].value;
     let password = form[1].value;
     let errorMess = document.getElementById("error");
-  
     // Error checks
     if (password.length < minPassLength)
         errorMess.innerHTML = "Password's length is too short";
     else {
-
         // Sending sign_in request to "server"
         signInRequest.open("POST", url + "sign_in", true);
         signInRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-        signInRequest.send(JSON.stringify({email: email,password: password}));
+        signInRequest.send(JSON.stringify({ email: email, password: password }));
     }
     return false;
 }
-
-function sign_out(){
+function sign_out() {
     let token = localStorage.getItem("currentUser");
-
     // Sending sign_out request to "server"
     signOutRequest.open("POST", url + "sign_out", true);
     signOutRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-    signOutRequest.setRequestHeader("Authorization", token)
+    signOutRequest.setRequestHeader("Authorization", token);
     signOutRequest.send();
-
     return false;
 }
 
-
-
 // - - - - - Changing tabs - - - - - //
-
 function showPage(ourEvent, name) {
-
     // - - Fixing the tabs - - //
     // Unselect all
     let tabcontent = document.getElementById("tabDiv");
@@ -488,8 +452,6 @@ function showPage(ourEvent, name) {
     // Select only the one we want
     let div = ourEvent.target;
     div.style.backgroundColor = "lightgreen";
-
-
     // - - Fixing the content - - //
     // Unselect all
     let allPages = document.getElementsByClassName("tabcontent");
@@ -499,22 +461,17 @@ function showPage(ourEvent, name) {
     // Select only the one we want
     let selected_tab = document.getElementById(name);
     selected_tab.style.display = "block";
-
     return false;
 }
 
-
-
 // - - - - - Changing Password - - - - - //
-
 //Function for changing password
-function change_password(ourEvent){
+function change_password(ourEvent) {
     let old_pass = document.getElementById("old_password").value;
     let new_pass = document.getElementById("new_password").value;
     let confirm_pass = document.getElementById("confirm_pass").value;
     let token = localStorage.getItem("currentUser");
     let error_text = document.getElementById("match_error");
-
     // New password have to be entered twice, otherwise throw error
     if (new_pass.length < minPassLength) {
         error_text.innerHTML = "New password too short";
@@ -525,82 +482,68 @@ function change_password(ourEvent){
     else {
         ChangePassRequest.open("PUT", url + "change_password", true);
         ChangePassRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-        ChangePassRequest.setRequestHeader("Authorization", token)
-        ChangePassRequest.send(JSON.stringify({old_password:old_pass, new_password:new_pass}));
+        ChangePassRequest.setRequestHeader("Authorization", token);
+        ChangePassRequest.send(JSON.stringify({ old_password: old_pass, new_password: new_pass }));
     }
     return false;
 }
-
 // - - - - - Changing the wall - - - - - //
-
 // Submit text button
-function updateWall(who){
+function updateWall(who) {
     // "who" could be either home or browse, this way know which wall to write on 
     let messageToWall = document.getElementById(who + 'Textarea').value;
     let errorMessage = document.getElementById('searchMessage');
     let token = localStorage.getItem("currentUser");
     let email = localStorage.getItem(who + "Email");
     curr_page = who;
-
     if (email != null && email != "" && token != null && token != "") {
-
         // Send user's message to the server
         postMessageRequest.open("POST", url + "post", true);
         postMessageRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-        postMessageRequest.setRequestHeader("Authorization", token)
+        postMessageRequest.setRequestHeader("Authorization", token);
         postMessageRequest.send(JSON.stringify({ email: email, message: messageToWall }));
-
         errorMessage.innerHTML = "";
     }
-    else{
+    else {
         errorMessage.innerHTML = "No user selected to write to";
     }
-
     // Clear the text area the user just wrote in
     document.getElementById(who + 'Textarea').value = "";
     return false;
 }
-
 // Reload button
 function reloadWall(who) {
     // "who" could be either home or browse, this way know which wall to load to 
     let token = localStorage.getItem("currentUser");
     let email = localStorage.getItem(who + "Email");
-
     // If wanting messages from my own wall
     if (who == 'home') {
         // Send request to server about receiving the info
         messagesByTokenRequest.open("GET", url + "getUserMessageByToken", true);
         messagesByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-        messagesByTokenRequest.setRequestHeader("Authorization", token)
+        messagesByTokenRequest.setRequestHeader("Authorization", token);
         messagesByTokenRequest.send();
     }
-
     // If wanting messages from another's wall
     else if (who == 'browse' && email != null && email != "") {
         // Send request to server about receiving the info
         messagesByEmailRequest.open("GET", url + "getMessagesByEmail/" + email, true);
         messagesByEmailRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
-        messagesByEmailRequest.setRequestHeader("Authorization", token)
+        messagesByEmailRequest.setRequestHeader("Authorization", token);
         messagesByEmailRequest.send();
-    }    
-
+    }
     return false;
 }
-
 // Changing another's wall
-function searchAnotherUser(event){
+function searchAnotherUser(event) {
     let token = localStorage.getItem("currentUser");
-
     // Reseting the error messages
     document.getElementById('searchMessage').innerHTML = "";
-
-    if(token != "") {
-
+    if (token != "") {
         // Store the searched email in localStorage so that it can be reached in "setUserDetails()"
         let email = event.target["searchInput"].value;
         localStorage.setItem("browseEmail", email);
         setUserDetails("browse");
     }
     return false;
-}
\ No newline at end of file
+}