Oops. output of ccl_pquery not null-terminated. Added null.
[pazpar2-moved-to-github.git] / js / pz2.js
index ff5ca24..6d34ce0 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -1,5 +1,5 @@
 /*
-** $Id: pz2.js,v 1.5 2007-04-03 14:27:21 jakub Exp $
+** $Id: pz2.js,v 1.9 2007-04-18 04:07:48 quinn Exp $
 ** pz2.js - pazpar2's javascript client library.
 */
 
@@ -75,6 +75,7 @@ var pz2 = function(paramArray) {
     __myself.termTimer = null;
     __myself.showTime = paramArray.showtime || 1000;
     __myself.showTimer = null;
+    __myself.showFastCount = 4;
     __myself.bytargetTime = paramArray.bytargettime || 1000;
     __myself.bytargetTimer = null;
 
@@ -90,6 +91,7 @@ var pz2 = function(paramArray) {
     // error handling
     $(document).ajaxError( 
     function (request, settings, exception) {
+           alert("AjaxErr");
         if ( settings.responseXML && settings.responseXML.getElementsByTagName("error") )
             throw new Error( settings.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue);
     });
@@ -256,18 +258,33 @@ pz2.prototype = {
                     var hit = new Array();
                     for (i = 0; i < hits.length; i++) {
                         show.hits[i] = new Array();
+                       show.hits[i]['location'] = new Array();
                         for ( j = 0; j < hits[i].childNodes.length; j++) {
+                           var locCount = 0;
                             if ( hits[i].childNodes[j].nodeType == Node.ELEMENT_NODE ) {
-                                var nodeName = hits[i].childNodes[j].nodeName;
-                                var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
-                                show.hits[i][nodeName] = nodeText;
+                               if (hits[i].childNodes[j].nodeName == 'location') {
+                                   var locNode = hits[i].childNodes[j];
+                                   var id = locNode.getAttribute('id');
+                                   show.hits[i]['location'][id] = {
+                                       "id": locNode.getAttribute("id"),
+                                       "name": locNode.getAttribute("name")
+                                   };
+                               }
+                               else {
+                                   var nodeName = hits[i].childNodes[j].nodeName;
+                                   var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
+                                   show.hits[i][nodeName] = nodeText;
+                               }
                             }
                         }
                     }
                     __myself.showCallback(show);
                     __myself.showCounter++;
+                   var delay = __myself.showTime;
+                   if (__myself.showCounter > __myself.showFastCount)
+                           delay *= 2;
                     if (activeClients > 0)
-                        __myself.showTimer = setTimeout("__myself.show()", (__myself.showTime + __myself.showCounter*__myself.dumpFactor));
+                        __myself.showTimer = setTimeout("__myself.show()", delay);
                 }
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
@@ -308,7 +325,11 @@ pz2.prototype = {
                         for ( j = 0; j < locationNodes[i].childNodes.length; j++) {
                             if ( locationNodes[i].childNodes[j].nodeType == Node.ELEMENT_NODE ) {
                                 var nodeName = locationNodes[i].childNodes[j].nodeName;
-                                var nodeText = locationNodes[i].childNodes[j].firstChild.nodeValue;
+                                var nodeText;
+                               if (locationNodes[i].childNodes[j].firstChild)
+                                       nodeText = locationNodes[i].childNodes[j].firstChild.nodeValue;
+                               else
+                                       nodeText = '';
                                 record["location"][i][nodeName] = nodeText;                            
                             }
                         }