function open_admin(){
   var page = sys.createPage("Admin");
   admin_menu(page, "User", admin_usermain);
   admin_menu(page, "Error", admin_errormain);
   admin_usermain.apply(page, []);
}

function admin_menu(page, str, onclick){
   page.user.append(str);
   page.user.get(str).container.getElementsByClassName("nick")[0].onclick = function(){
      onclick.apply(page, []);
   };
}

function admin_usermain(){
   var self = this;
   requestAdmin("/userlist", function(data){
      if(getCommand(data) == "userlist"){
         emptyAdmin(self);
         var table = document.createElement("table");
         table.className = "userlist";
         var tr = document.createElement("tr");
         var td = document.createElement("th");
         td.innerHTML = "id";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Username";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Nick";
         tr.appendChild(td);
         table.appendChild(tr);
         var parts = data.message.substr(10).split(" ");
         for(var i=0;i<parts.length;i++){
            var data = parts[i].split(",");
            tr = document.createElement("tr");
            for(var j=0;j<data.length;j++){
               td = document.createElement("td");
               td.innerHTML = data[j];
               tr.appendChild(td);
            }
            table.appendChild(tr);
         }
         
         self.context.appendChild(table);
      }
   });
}

function admin_errormain(){
   var self = this;
   requestAdmin("/errorlist", function(data){
      if(getCommand(data) == "errorlist"){
         emptyAdmin(self);
         var table = document.createElement("table");
         table.className = "userlist";
         var tr = document.createElement("tr");
         var td = document.createElement("th");
         td.innerHTML = "id";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Error number";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Error message";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "File";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Line";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Seen";
         tr.appendChild(td);
         td = document.createElement("th");
         td.innerHTML = "Time";
         tr.appendChild(td);
         table.appendChild(tr);
         var info = JSON.parse(window.atob(data.message.substr(11)));
         for(var i=0;i<info.length;i++){
            tr = document.createElement("tr");
            for(var key in info[i]){
               td = document.createElement("td");
               td.innerHTML = key == "seen" ? (info[i][key] == 2 ? "No" : "Yes") : info[i][key];
               tr.appendChild(td);
            }
            table.appendChild(tr);
         }
         self.context.appendChild(table);
      }
   });
}

function emptyAdmin(page){
   page.context.innerHTML = "";
}

function requestAdmin(msg, callback, channel){
   stopUpdate();//no need to the system to request news
  var ajax = new XMLHttpRequest();
  ajax.open("POST", "?_ajax=true&isPost=true&noMessage=true"+(typeof channel !== "undefined" ? "&channel="+encodeURIComponent(channel) : ""), true);
  ajax.onreadystatechange = function(){
   if(this.readyState == 4){
    if(this.status != 200){
      sys.getPage("console").line("", "Ajax", "", "[color=red]"+encodeURI(this.responseText)+"[/color]");
      setUpdate();
      return;
    }
    try{
       var json = JSON.parse(this.responseText).message;
      for(var i=0;i<json.length;i++){
         callback(json[i]);
      }
    }catch(e){
      if(e.responseText == "login"){
        location.reload();
        return;
      }else{
        sys.getPage("console").line("","","AjaxError", "[color=red]There happend a error: "+this.responseText+"[/color]");
        setUpdate();
        return;
      }
    }
    setUpdate();
   }
  };
  ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  ajax.send("message="+encodeURIComponent(msg));
}

@@ -473,32 +473,47 @@
 data)%7B%0A      if(
+CowChatCommand.
 getCommand(data)
@@ -1518,33 +1518,75 @@
 d(table);%0A      
-%7D
+   return true;%0A      %7D%0A      return false;
 %0A   %7D);%0A%7D%0A%0Afunct
@@ -1683,16 +1683,31 @@
      if(
+CowChatCommand.
 getComma
@@ -3167,25 +3167,67 @@
 ble);%0A      
-%7D
+   return true;%0A      %7D%0A      return false;
 %0A   %7D);%0A%7D%0A%0Af
@@ -3929,16 +3929,20 @@
         
+if(!
 callback
@@ -3950,17 +3950,69 @@
 json%5Bi%5D)
-;
+)%7B%0A            handleResponsPart(json%5Bi%5D);%0A         %7D
 %0A      %7D

Update admin.js