return;
                }
 
-               if ($subop == "removeFromLabel") {
-
-                       $ids = explode(",", db_escape_string($_REQUEST["ids"]));
-                       $label_id = db_escape_string($_REQUEST["lid"]);
-
-                       $label = db_escape_string(label_find_caption($link, $label_id, 
-                               $_SESSION["uid"]));
-
-                       print "<rpc-reply>";
-                       print "<info-for-headlines>";
-
-                       if ($label) {
-
-                               foreach ($ids as $id) {
-                                       label_remove_article($link, $id, $label, $_SESSION["uid"]);
-
-                                       print "<entry id=\"$id\"><![CDATA[";
-
-                                       $labels = get_article_labels($link, $id, $_SESSION["uid"]);
-                                       print format_article_labels($labels, $id);
-
-                                       print "]]></entry>";
-
-                               }
-                       }
-
-                       print "</info-for-headlines>";
-
-                       print "<message>UPDATE_COUNTERS</message>";
-                       print "</rpc-reply>";
-
-                       return;
-               }
+               if ($subop == "assignToLabel" || $subop == "removeFromLabel") {
+                       header("Content-Type: text/plain");
 
-               if ($subop == "assignToLabel") {
+                       $reply = array();
 
                        $ids = split(",", db_escape_string($_REQUEST["ids"]));
                        $label_id = db_escape_string($_REQUEST["lid"]);
                        $label = db_escape_string(label_find_caption($link, $label_id, 
                                $_SESSION["uid"]));
 
-                       print "<rpc-reply>";                    
-
-                       print "<info-for-headlines>";
+                       $reply["info-for-headlines"] = array();
 
                        if ($label) {
 
                                foreach ($ids as $id) {
-                                       label_add_article($link, $id, $label, $_SESSION["uid"]);
 
-                                       print "<entry id=\"$id\"><![CDATA[";
+                                       if ($subop == "assignToLabel")
+                                               label_add_article($link, $id, $label, $_SESSION["uid"]);
+                                       else
+                                               label_remove_article($link, $id, $label, $_SESSION["uid"]);
 
                                        $labels = get_article_labels($link, $id, $_SESSION["uid"]);
-                                       print format_article_labels($labels, $id);
-
-                                       print "]]></entry>";
+                                 
+                                       array_push($reply["info-for-headlines"],
+                                         array("id" => $id, "labels" => format_article_labels($labels, $id)));
 
                                }
                        }
 
-                       print "</info-for-headlines>";
+                       $reply["message"] = "UPDATE_COUNTERS";
 
-                       print "<message>UPDATE_COUNTERS</message>";
-                       print "</rpc-reply>";
+                       print json_encode($reply);
 
                        return;
                }
 
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function(transport) { 
+                                       handle_rpc_json(transport);
                                        show_labels_in_headlines(transport);
-                                       handle_rpc_reply(transport);
                                } });
 
 //             }
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function(transport) { 
+                                       handle_rpc_json(transport);
                                        show_labels_in_headlines(transport);
-                                       handle_rpc_reply(transport);
                                } });
 
 //             }
 
 function show_labels_in_headlines(transport) {
        try {
-               if (transport.responseXML) {
-                       var info = transport.responseXML.getElementsByTagName("info-for-headlines")[0];
-
-                       var elems = info.getElementsByTagName("entry");
-
-                       for (var l = 0; l < elems.length; l++) {
-                               var e_id = elems[l].getAttribute("id");
-
-                               if (e_id) {
+               var data = JSON.parse(transport.responseText);
 
-                                       var ctr = $("HLLCTR-" + e_id);
-
-                                       if (ctr) {
-                                               ctr.innerHTML = elems[l].firstChild.nodeValue;
-                                       }
-                               }
-
-                       }
+               if (data) {
+                       data['info-for-headlines'].each(function(elem) {
+                               var ctr = $("HLLCTR-" + elem.id);
 
+                               if (ctr) ctr.innerHTML = elem.labels;
+                       });
                }
        } catch (e) {
                exception_error("show_labels_in_headlines", e);
-
        }
 }