diff --git a/.gitignore b/.gitignore
index 688bfd748e077cb97e871124214acc354eac801c..01f91ee8afd8089164614770818bf8c749e40ca9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,26 @@
 /ChatService/nbproject/private/
 /ChatService/dist/
-/ChatService/build/
\ No newline at end of file
+/ChatService/build/
+/IdentService/nbproject/private/
+/IdentService/dist/
+/IdentService/build/
+/MarketPlaceService/nbproject/private/
+/MarketPlaceService/dist/
+/MarketPlaceService/build/
+/KAA-JSP/nbproject/private/
+/KAA-JSP/dist/
+/KAA-JSP/build/
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+#config file
+*.xml
+*.properties
\ No newline at end of file
diff --git a/ChatService/nbproject/project.properties b/ChatService/nbproject/project.properties
index 2f11d669f936992b33a10021baac1bfa9a2f2219..8935b2be2df1d8122b0949db06c744dcfd9cd822 100644
--- a/ChatService/nbproject/project.properties
+++ b/ChatService/nbproject/project.properties
@@ -34,7 +34,7 @@ j2ee.compile.on.save=true
 j2ee.copy.static.files.on.save=true
 j2ee.deploy.on.save=true
 j2ee.platform=1.7-web
-j2ee.platform.classpath=${j2ee.server.home}/modules/endorsed/jaxb-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/cdi-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.middleware}/mq/lib/jaxm-api.jar
+j2ee.platform.classpath=${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/cdi-api.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar:${j2ee.server.middleware}/mq/lib/jaxm-api.jar
 j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
 j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
 j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
diff --git a/IdentService/dist/IdentService.war b/IdentService/dist/IdentService.war
index 3f8440ad6c59a4b6ef74873792a554fe693495c8..aca869ce76fa8f717cca7de4c0ed2e95ef1201da 100644
Binary files a/IdentService/dist/IdentService.war and b/IdentService/dist/IdentService.war differ
diff --git a/IdentService/nbproject/private/private.properties b/IdentService/nbproject/private/private.properties
index 0f610372d1078b944a0531ab173b5f245cad22ab..f5d8512ef651056b1a9fbf14b6db98373bf8e011 100644
--- a/IdentService/nbproject/private/private.properties
+++ b/IdentService/nbproject/private/private.properties
@@ -4,4 +4,4 @@ j2ee.server.domain=C:/Users/Ali-pc/AppData/Roaming/NetBeans/8.0.2/config/GF_4.1/
 j2ee.server.home=C:/Program Files/glassfish-4.1/glassfish
 j2ee.server.instance=[C:\\Program Files\\glassfish-4.1\\glassfish;C:\\Program Files\\glassfish-4.1\\glassfish\\domains\\domain1]deployer:gfv3ee6:localhost:4848
 j2ee.server.middleware=C:/Program Files/glassfish-4.1
-user.properties.file=C:\\Users\\Ali-pc\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
+user.properties.file=C:\\Users\\Ali-pc\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
\ No newline at end of file
diff --git a/KAA-JSP/build/web/catalog.jsp b/KAA-JSP/build/web/catalog.jsp
index 7eff4290ce68368aa1f25c9e06c5df376d5c817e..fe8925356c481f048f6e255fa5fb31b6319b847e 100644
--- a/KAA-JSP/build/web/catalog.jsp
+++ b/KAA-JSP/build/web/catalog.jsp
@@ -311,7 +311,7 @@
                             out.print("<p>No product to be sold.</p>");
                     } else {
                         for (int i = 0; i < result.size(); i++) {
-                            out.print("<div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><p><b>" + result.get(i).getUsername() + "</b><br/>");
+                            out.print("<a href=\"\"><div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><p><b>" + result.get(i).getUsername() + "</a></b><br/>");
                             out.print("added this on " + result.get(i).getDate().getDate() + "</p></div>");
                             out.print("<hr/>");
                             out.print("<table>");
@@ -363,7 +363,7 @@
                             out.print("<p>Nothing matches your search.</p>");
                         } else {
                             for (int i = 0; i < result.size(); i++) {
-                                out.print("<div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><b>" + result.get(i).getUsername() + "</b></div><br/>");
+                                out.print("<a href=\"\"><div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><b>" + result.get(i).getUsername() + "</a></b></div><br/>");
                                 out.print("added this on " + result.get(i).getDate().getDate() + "</p></div>");
                                 out.print("<hr/>");
                                 out.print("<table>");
@@ -398,10 +398,18 @@
         %>
 
         <br>
-        {{user}}
-        {{receiver}}
-
-        <div ng-show="isReceiverSet()">Aku ng-show lho</div>
+        <div class="popup-box chat-popup" id="1" ng-show="isReceiverSet()" style="right: 0px; display: block;">
+            <div class="popup-head">
+                <div class="popup-head-left">{{receiver}}</div>
+                <div class="popup-head-right" ng-click="setReceiver('')"><a href="">&#10005;</a></div>
+                <div style="clear: both"></div>
+            </div>
+            <div class="popup-messages">Tes</div>
+            <div class="popup-input">
+                <input type="text" style="height: 100%" name="chat" class="auto-style1" hidefocus="hidefocus" />
+            </div>
+            
+        </div>
             
 <!--        <div ng-app="chatApp" ng-controller="chatController">
             <p>Name: <input type="text" ng-model="newmessage.user"></p>
diff --git a/KAA-JSP/build/web/css/style.css b/KAA-JSP/build/web/css/style.css
index e2e7f0bb330b90ab78d38eb143b7b0cc484aaa11..b9ac050343e238a609c528ef23c3a5a4f26856c4 100644
--- a/KAA-JSP/build/web/css/style.css
+++ b/KAA-JSP/build/web/css/style.css
@@ -1,3 +1,61 @@
+@media only screen and (max-width : 540px)         
+{   
+    .chat-popup
+    {
+        display: none !important;   
+    }    
+}
+
+.popup-box
+{
+    display: none;
+    position: fixed;
+    bottom: 0px;
+    right: 220px;
+    height: 285px;
+    background-color: rgb(237, 239, 244);
+    width: 300px;
+    border: 1px solid rgba(29, 49, 91, .3);
+}
+
+.popup-box .popup-head
+{
+    background-color: #6d84b4;
+    padding: 5px;
+    color: white;
+    font-weight: bold;
+    font-size: 14px;
+    clear: both;
+}
+
+.popup-box .popup-head .popup-head-left
+{
+    float: left;
+}
+
+.popup-box .popup-head .popup-head-right
+{
+    float: right;
+    opacity: 0.5;
+}
+
+.popup-box .popup-head .popup-head-right a
+{
+    text-decoration: none;
+    color: inherit;
+}
+
+.popup-box .popup-messages
+{
+    height: 78%;
+    overflow-y: scroll;
+}
+
+.popup-box .popup-input
+{
+    bottom: 0px;
+}
+
 body {
 	align: center;
 }
diff --git a/KAA-JSP/web/catalog.jsp b/KAA-JSP/web/catalog.jsp
index 7eff4290ce68368aa1f25c9e06c5df376d5c817e..fe8925356c481f048f6e255fa5fb31b6319b847e 100644
--- a/KAA-JSP/web/catalog.jsp
+++ b/KAA-JSP/web/catalog.jsp
@@ -311,7 +311,7 @@
                             out.print("<p>No product to be sold.</p>");
                     } else {
                         for (int i = 0; i < result.size(); i++) {
-                            out.print("<div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><p><b>" + result.get(i).getUsername() + "</b><br/>");
+                            out.print("<a href=\"\"><div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><p><b>" + result.get(i).getUsername() + "</a></b><br/>");
                             out.print("added this on " + result.get(i).getDate().getDate() + "</p></div>");
                             out.print("<hr/>");
                             out.print("<table>");
@@ -363,7 +363,7 @@
                             out.print("<p>Nothing matches your search.</p>");
                         } else {
                             for (int i = 0; i < result.size(); i++) {
-                                out.print("<div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><b>" + result.get(i).getUsername() + "</b></div><br/>");
+                                out.print("<a href=\"\"><div ng-click=\"setReceiver('"+result.get(i).getUsername()+"')\"><b>" + result.get(i).getUsername() + "</a></b></div><br/>");
                                 out.print("added this on " + result.get(i).getDate().getDate() + "</p></div>");
                                 out.print("<hr/>");
                                 out.print("<table>");
@@ -398,10 +398,18 @@
         %>
 
         <br>
-        {{user}}
-        {{receiver}}
-
-        <div ng-show="isReceiverSet()">Aku ng-show lho</div>
+        <div class="popup-box chat-popup" id="1" ng-show="isReceiverSet()" style="right: 0px; display: block;">
+            <div class="popup-head">
+                <div class="popup-head-left">{{receiver}}</div>
+                <div class="popup-head-right" ng-click="setReceiver('')"><a href="">&#10005;</a></div>
+                <div style="clear: both"></div>
+            </div>
+            <div class="popup-messages">Tes</div>
+            <div class="popup-input">
+                <input type="text" style="height: 100%" name="chat" class="auto-style1" hidefocus="hidefocus" />
+            </div>
+            
+        </div>
             
 <!--        <div ng-app="chatApp" ng-controller="chatController">
             <p>Name: <input type="text" ng-model="newmessage.user"></p>
diff --git a/KAA-JSP/web/css/style.css b/KAA-JSP/web/css/style.css
index e2e7f0bb330b90ab78d38eb143b7b0cc484aaa11..b9ac050343e238a609c528ef23c3a5a4f26856c4 100644
--- a/KAA-JSP/web/css/style.css
+++ b/KAA-JSP/web/css/style.css
@@ -1,3 +1,61 @@
+@media only screen and (max-width : 540px)         
+{   
+    .chat-popup
+    {
+        display: none !important;   
+    }    
+}
+
+.popup-box
+{
+    display: none;
+    position: fixed;
+    bottom: 0px;
+    right: 220px;
+    height: 285px;
+    background-color: rgb(237, 239, 244);
+    width: 300px;
+    border: 1px solid rgba(29, 49, 91, .3);
+}
+
+.popup-box .popup-head
+{
+    background-color: #6d84b4;
+    padding: 5px;
+    color: white;
+    font-weight: bold;
+    font-size: 14px;
+    clear: both;
+}
+
+.popup-box .popup-head .popup-head-left
+{
+    float: left;
+}
+
+.popup-box .popup-head .popup-head-right
+{
+    float: right;
+    opacity: 0.5;
+}
+
+.popup-box .popup-head .popup-head-right a
+{
+    text-decoration: none;
+    color: inherit;
+}
+
+.popup-box .popup-messages
+{
+    height: 78%;
+    overflow-y: scroll;
+}
+
+.popup-box .popup-input
+{
+    bottom: 0px;
+}
+
 body {
 	align: center;
 }
diff --git a/MarketPlaceService/dist/MarketPlaceService.war b/MarketPlaceService/dist/MarketPlaceService.war
index 560c3e09f19e3da13fe2a674090f0d3e28f1f875..eab95ace303cfd00707694ceea4941fdd43e01e8 100644
Binary files a/MarketPlaceService/dist/MarketPlaceService.war and b/MarketPlaceService/dist/MarketPlaceService.war differ
diff --git a/login.java b/login.java
deleted file mode 100644
index 028b71b1c0e71c73e191f1fe4daebf2318ef24d0..0000000000000000000000000000000000000000
--- a/login.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.IdentService;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.Date;
-import java.util.Calendar;
-import java.sql.Timestamp;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.json.simple.JSONObject;
-
-
-/**
- *
- * @author Ali-pc
- */
-public class login extends HttpServlet {
-    
-    RandomString tokenGenerator = new RandomString(5);
-    /**
-     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
-     * methods.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        response.setContentType("text/html;charset=UTF-8");
-        try (PrintWriter out = response.getWriter()) {
-            /* TODO output your page here. You may use following sample code. */
-            out.println("<!DOCTYPE html>");
-            out.println("<html>");
-            out.println("<head>");
-            out.println("<title>Servlet login</title>");            
-            out.println("</head>");
-            out.println("<body>");
-            out.println("<h1>Servlet login at " + request.getContextPath() + "</h1>");
-            out.println("</body>");
-            out.println("</html>");
-        }
-    }
-
-    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
-    /**
-     * Handles the HTTP <code>GET</code> method.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        response.setContentType("application/json");
-        response.setCharacterEncoding("utf-8");
-        JSONObject json = new JSONObject();
-        try {
-            Connection conn = DBAccount.getConnection();
-            if (conn != null){
-                Statement stmt = conn.createStatement();
-                String sql;
-                String username = request.getParameter("username");
-                String password = request.getParameter("password");
-                sql = "select * from account where (username=\""+username+"\" or email=\""
-                        +username+"\") and password=\""+password+"\"";
-                ResultSet rs = stmt.executeQuery(sql);
-                if (rs.next()){
-                   int user_id = rs.getInt("user_id");
-                   String generatedToken = generateToken(request);
-                   Calendar cal = Calendar.getInstance();
-                   int hours = cal.get(Calendar.HOUR_OF_DAY);
-                   int tanggal = cal.get(Calendar.DATE);
-                   if(hours != 23){
-                       cal.set(Calendar.HOUR_OF_DAY, hours+1);
-                   }
-                   else{
-                       cal.set(Calendar.DATE, tanggal+1);
-                       cal.set(Calendar.HOUR_OF_DAY, 0);
-                   }
-                   Date dt = cal.getTime();
-                   //token akan expire dalam 60 menit
-                   Timestamp ts = new Timestamp(dt.getTime());
-                   sql = "insert into token values (\""+ user_id+ "\",\""+generatedToken+"\",\""+ts+"\")";
-                   stmt.executeUpdate(sql);
-
-                   PrintWriter out = response.getWriter();
-                   
-                   json.put("status","OK");
-                   json.put("token",generatedToken);
-                   json.put("user_id",user_id);
-                   out.print(json.toString());
-                }
-                else{
-                    PrintWriter out = response.getWriter();
-                    json.put("status","FAILED");
-                    out.print(json.toString());
-                }
-            }
-            else{
-                try (PrintWriter out = response.getWriter()) {
-                    /* TODO output your page here. You may use following sample code. */
-                    out.println("<!DOCTYPE html>");
-                    out.println("<html>");
-                    out.println("<head>");
-                    out.println("<title>Servlet login</title>");            
-                    out.println("</head>");
-                    out.println("<body>");
-                    out.println("<h1>Connection NULL!!</h1>");
-                    out.println("</body>");
-                    out.println("</html>");
-                }
-            }
-        } catch (SQLException ex) {
-            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    /**
-     * Handles the HTTP <code>POST</code> method.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        //processRequest(request, response);
-        doGet(request,response);
-    }
-
-    /**
-     * Returns a short description of the servlet.
-     *
-     * @return a String containing servlet description
-     */
-    @Override
-    public String getServletInfo() {
-        return "Short description";
-    }// </editor-fold>
-    
-    private static final String[] HEADERS_TO_TRY = { 
-    "X-Forwarded-For",
-    "Proxy-Client-IP",
-    "WL-Proxy-Client-IP",
-    "HTTP_X_FORWARDED_FOR",
-    "HTTP_X_FORWARDED",
-    "HTTP_X_CLUSTER_CLIENT_IP",
-    "HTTP_CLIENT_IP",
-    "HTTP_FORWARDED_FOR",
-    "HTTP_FORWARDED",
-    "HTTP_VIA",
-    "REMOTE_ADDR" };
-    
-    public String generateToken(HttpServletRequest request){
-        String token;
-        String user_agent = request.getHeader("User-Agent");
-        String ip = getClientIpAddress(request);
-        token = tokenGenerator.nextString() + "#" + user_agent + '#' + ip;
-        return token;
-    }
-
-    public static String getClientIpAddress(HttpServletRequest request) {
-        for (String header : HEADERS_TO_TRY) {
-            String ip = request.getHeader(header);
-            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
-                return ip;
-            }
-        }
-        return request.getRemoteAddr();
-    }
-}