Removing mk related classes.
[pazpar2-moved-to-github.git] / js / pz2.js
index 5850c59..cb19e78 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -1,5 +1,5 @@
 /*
-** $Id: pz2.js,v 1.54 2007-09-10 13:18:53 jakub Exp $
+** $Id: pz2.js,v 1.60 2007-10-02 10:33:18 jakub Exp $
 ** pz2.js - pazpar2's javascript client library.
 */
 
@@ -121,6 +121,20 @@ var pz2 = function ( paramArray )
 
 pz2.prototype = 
 {
+    //error handler for async error throws
+   throwError: function (errMsg, errCode)
+   {
+        var err = new Error(errMsg);
+        if (errCode) err.code = errCode;
+                
+        if (__myself.errorHandler) {
+            __myself.errorHandler(err);
+        }
+        else {
+            throw err;
+        }
+   },
+
     // stop activity by clearing tiemouts 
    stop: function ()
    {
@@ -171,7 +185,8 @@ pz2.prototype =
                     else
                         // if it gets here the http return code was 200 (pz2 errors are 417)
                         // but the response was invalid, it should never occur
-                        setTimeout("__myself.init()", 1000);
+                        // setTimeout("__myself.init()", 1000);
+                        __myself.throwError('Init failed. Malformed WS resonse.', 110);
                 }
             );
         // when through proxy no need to init
@@ -198,7 +213,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    setTimeout("__myself.ping()", 1000);
+                    // setTimeout("__myself.ping()", 1000);
+                    __myself.throwError('Ping failed. Malformed WS resonse.', 111);
             }
         );
     },
@@ -254,7 +270,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    setTimeout("__myself.search(__myself.currQuery)", 500);
+                    // setTimeout("__myself.search(__myself.currQuery)", 500);
+                    __myself.throwError('Search failed. Malformed WS resonse.', 112);
             }
         );
     },
@@ -295,7 +312,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    __myself.statTimer = setTimeout("__myself.stat()", __myself.statTime / 4);
+                    //__myself.statTimer = setTimeout("__myself.stat()", __myself.statTime / 4);
+                    __myself.throwError('Stat failed. Malformed WS resonse.', 113);
             }
         );
     },
@@ -372,7 +390,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    __myself.showTimer = setTimeout("__myself.show()", __myself.showTime / 4);
+                    // __myself.showTimer = setTimeout("__myself.show()", __myself.showTime / 4);
+                    __myself.throwError('Show failed. Malformed WS resonse.', 114);
             }
         );
     },
@@ -465,7 +484,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    setTimeout("__myself.record(__myself.currRecID)", 500);
+                    // setTimeout("__myself.record(__myself.currRecID)", 500);
+                    __myself.throwError('Record failed. Malformed WS resonse.', 115);
             }
         );
     },
@@ -519,7 +539,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    __myself.termTimer = setTimeout("__myself.termlist()", __myself.termTime / 4); 
+                    // __myself.termTimer = setTimeout("__myself.termlist()", __myself.termTime / 4); 
+                    __myself.throwError('Termlist failed. Malformed WS resonse.', 116);
             }
         );
 
@@ -564,7 +585,8 @@ pz2.prototype =
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
                     // but the response was invalid, it should never occur
-                    __myself.bytargetTimer = setTimeout("__myself.bytarget()", __myself.bytargetTime / 4);
+                    // __myself.bytargetTimer = setTimeout("__myself.bytarget()", __myself.bytargetTime / 4);
+                    __myself.throwError('Bytarget failed. Malformed WS resonse.', 117);
             }
         );
     },
@@ -655,7 +677,7 @@ pzHttpRequest.prototype =
         var el = params;
         for (var key in el) {
             if (el[key] != null) {
-                getUrl += sep + key + '=' + encodeURI(el[key]);
+                getUrl += sep + key + '=' + encodeURIComponent(el[key]);
                 sep = '&';
             }
         }
@@ -669,11 +691,13 @@ pzHttpRequest.prototype =
             if ( this.request.responseXML 
                 && this.request.responseXML.documentElement.nodeName == 'error'
                 && this.request.responseXML.getElementsByTagName("error").length ) {
-                var errAddInfo = this.request.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue;
+                var errAddInfo = '';
+                if ( this.request.responseXML.getElementsByTagName("error")[0].childNodes.length )
+                    errAddInfo = ': ' + this.request.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue;
                 var errMsg = this.request.responseXML.getElementsByTagName("error")[0].getAttribute("msg");
                 var errCode = this.request.responseXML.getElementsByTagName("error")[0].getAttribute("code");
             
-                var err = new Error(errMsg + ': ' + errAddInfo);
+                var err = new Error(errMsg + errAddInfo);
                 err.code = errCode;
            
                 if (this.errorHandler) {
@@ -749,6 +773,19 @@ DOMDoc.parseXmlFromString = function ( xmlString )
     return doc;
 }
 
+DOMDoc.transformToDoc = function (xmlDoc, xslDoc)
+{
+    if ( window.XSLTProcessor ) {
+        var proc = new XSLTProcessor();
+        proc.importStylesheet( xslDoc );
+        return proc.transformToDocument(xmlDoc);
+    } else if ( window.ActiveXObject ) {
+        return document.parseXmlFromString(xmlDoc.transformNode(xslDoc));
+    } else {
+        alert( 'Unable to perform XSLT transformation in this browser' );
+    }
+}
 // DOMElement
 
 Element_removeFromDoc = function (DOM_Element)
@@ -811,151 +848,4 @@ Element_getTextContent = function (DOM_Element)
     }
 }
 
-/*
-*********************************************************************************
-** QUERY CLASS ******************************************************************
-*********************************************************************************
-*/
-var pzQuery = function()
-{
-    this.simpleQuery = '';
-    this.singleFilter = null;
-    this.advTerms = new Array();
-    this.filterHash = new Array();
-    this.numTerms = 0;
-    this.filterNums = 0;
-};
-pzQuery.prototype = {
-    reset: function()
-    {
-        this.simpleQuery = '';
-        this.advTerms = new Array();
-        this.simpleFilter = null;
-        this.numTerms = 0;
-    },
-    clearSimpleQuery: function()
-    {
-        this.simpleQuery = '';
-    },
-    addTerm: function(field, value)
-    {
-        var term = {"field": field, "value": value};
-        this.advTerms[this.numTerms] = term;
-        this.numTerms++;
-    },
-    getTermValueByIdx: function(index)
-    {
-        return this.advTerms[index].value;
-    },
-    getTermFieldByIdx: function(index)
-    {
-        return this.advTerms[index].field;
-    },
-    /* semicolon separated list of terms for given field*/
-    getTermsByField: function(field)
-    {
-        var terms = '';
-        for(var i = 0; i < this.advTerms.length; i++)
-        {
-            if( this.advTerms[i].field == field )
-                terms = terms + this.queryHas[i].value + ';';
-        }
-        return terms;
-    },
-    addTermsFromList: function(inputString, field)
-    {
-        var inputArr = inputString.split(';');
-        for(var i=0; i < inputArr.length; i++)
-        {
-            if(inputArr[i].length < 3) continue;
-            this.advTerms[this.numTerms] = {"field": field, "value": inputArr[i] };
-            this.numTerms++;
-        }
-    },
-    removeTermByIdx: function(index)
-    {
-        this.advTerms.splice(index, 1);
-        this.numTerms--;
-    },
-    toCCL: function()
-    {   
-        var ccl = '';
-        if( this.simpleQuery != '')
-            ccl = this.simpleQuery;
-        for(var i = 0; i < this.advTerms.length; i++)
-        {
-            if (ccl != '') ccl = ccl + ' and ';
-            ccl = ccl + this.advTerms[i].field+'="'+this.advTerms[i].value+'"';
-        }
-        return ccl;
-    },
-    addFilter: function(name, value)
-    {
-        var filter = {"name": name, "id": value };
-        this.filterHash[this.filterHash.length] = filter;
-        this.filterNums++
-        return  this.filterHash.length - 1;
-    },
-    setFilter: function(name, value)
-    {
-        this.filterHash = new Array();
-        this.filterNums = 0;
-        this.addFilter(name, value);
-    },
-    getFilter: function(index)
-    {
-        return this.filterHash[index].id;
-    },
-    getFilterName: function(index)
-    {
-        return this.filterHash[index].name;
-    },
-    removeFilter: function(index)
-    {
-        delete this.filterHash[index];
-        this.filterNums--;
-    },
-    clearFilter: function()
-    {
-        this.filterHash = new Array();
-        this.filterNums = 0;
-    },
-    getFilterString: function()
-    {
-        //temporary
-        if( this.singleFilter != null ) {
-            return 'pz:id='+this.singleFilter.id;
-        } 
-        else if( this.filterNums <= 0 ) {
-            return undefined;
-        }
-
-        var filter = 'pz:id=';
-        for(var i = 0; i < this.filterHash.length; i++)
-        {
-            if (this.filterHash[i] == undefined) continue;
-            if (filter > 'pz:id=') filter = filter + '|';            
-            filter += this.filterHash[i].id; 
-        }
-        return filter;
-    },
-    totalLength: function()
-    {
-        var simpleLength = this.simpleQuery != '' ? 1 : 0;
-        return this.advTerms.length + simpleLength;
-    },
-    clearSingleFilter: function()
-    {
-        this.singleFilter = null;
-    },
-    setSingleFilter: function(name, value)
-    {
-        this.singleFilter = {"name": name, "id": value };
-    },
-    getSingleFilterName: function()
-    {
-        return this.singleFilter.name;
-    }
-}
-
 }