diff --git a/src/game/lib/db_service.js b/src/game/lib/db_service.js
new file mode 100644
index 0000000..bf941ca
--- /dev/null
+++ b/src/game/lib/db_service.js
@@ -0,0 +1,74 @@
+function DBService() {
+ this.path = this.getPath();
+ this.directoryName = this.getDirectoryName(this.path);
+ this.webPath = this.getWebPath(this.directoryName);
+
+ this.maestroID = 0;
+ this.playerID = 0;
+ this.appName = "";
+ this.dateAndTime = null;
+}
+
+DBService.prototype.getPath = function() {
+ return window.location.pathname;
+}
+
+DBService.prototype.getDirectoryName = function(path) {
+ var pathAndFileNames = path.split("/");
+ return pathAndFileNames[pathAndFileNames.length - 2];
+}
+
+DBService.prototype.getWebPath = function(directoryName) {
+ if(directoryName === "test") // mouse_typing/test/
+ return "../src/web/";
+ else // mousetyping/src/web/client/
+ return "../";
+}
+
+
+DBService.prototype.setMaestroID = function(maestroID) {
+ this.maestroID = maestroID;
+}
+
+DBService.prototype.setPlayerID = function(playerID) {
+ this.playerID = playerID;
+}
+
+DBService.prototype.setAppName = function(appName) {
+ this.appName = appName;
+}
+
+DBService.prototype.setDateTime = function(date, time) {
+ this.dateAndTime = date + time;
+}
+
+DBService.prototype.resetDateTime = function() {
+ this.dateAndTime = null;
+}
+
+
+
+DBService.prototype.makeXhr = function(filepath, onreadystatechange) {
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", this.webPath + filepath, true);
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ xhr.onreadystatechange = onreadystatechange;
+ return xhr;
+}
+
+DBService.prototype.requestWritingPlayerList = function(onSucceededListener, onFailedListener) {
+ var xhr = this.makeXhr(
+ "php/writing/player_list.php",
+ (function() { // onreadystatechange
+ if(xhr.readyState == 4 && xhr.status == 200) {
+ var replyJSON = JSON.parse(xhr.responseText);
+
+ if(replyJSON != null)
+ onSucceededListener(replyJSON);
+ else
+ onFailedListener(replyJSON);
+ }
+ }).bind(this)
+ );
+ xhr.send("maestroID=" + this.maestroID + "&playerID=" + this.playerID);
+}
\ No newline at end of file
diff --git a/src/web/php/db/db_method_collection.php b/src/web/php/db/db_method_container.php
similarity index 83%
rename from src/web/php/db/db_method_collection.php
rename to src/web/php/db/db_method_container.php
index 0bd05e7..0d6ff9f 100644
--- a/src/web/php/db/db_method_collection.php
+++ b/src/web/php/db/db_method_container.php
@@ -1,5 +1,5 @@
getMysqli());
diff --git a/test/tdd.html b/test/tdd.html
index 9a0d8d4..83fdfe5 100644
--- a/test/tdd.html
+++ b/test/tdd.html
@@ -35,6 +35,7 @@
+