/*
-** $Id: pz2.js,v 1.38 2007-06-21 14:05:41 adam Exp $
+** $Id: pz2.js,v 1.45 2007-07-10 10:17:17 adam Exp $
** pz2.js - pazpar2's javascript client library.
*/
__myself.suppProtoVer = '1';
__myself.pz2String = paramArray.pazpar2path || "search.pz2";
__myself.stylesheet = paramArray.detailstylesheet || null;
-
+ __myself.useSessions = true;
+ if (paramArray.usesessions != undefined) {
+ __myself.useSessions = paramArray.usesessions;
+ }
+
//load stylesheet if required in async mode
if( __myself.stylesheet ) {
var request = new pzHttpRequest( __myself.stylesheet );
- request.get(
- [],
- function ( doc ) {
- __myself.xslDoc = doc;
- }
- );
+ request.get( {}, function ( doc ) { __myself.xslDoc = doc; } );
}
-
+
// at least one callback required
if ( !paramArray )
throw new Error("An array with parameters has to be suplied when instantiating a class");
init: function ( sessionId )
{
__myself.reset();
+
if ( sessionId != undefined ) {
__myself.initStatusOK = true;
__myself.sessionID = sessionId;
__myself.ping();
-
- } else {
+ } else if (__myself.useSessions) {
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- [ { "command": "init" } ],
+ { "command": "init" },
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
if ( data.getElementsByTagName("protocol")[0].childNodes[0].nodeValue != __myself.suppProtoVer )
setTimeout("__myself.init()", 1000);
}
);
- }
+ } else {
+ __myself.initStatusOK = true;
+ }
},
// no need to ping explicitly
ping: function ()
// session is not initialized code here
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- [ { "command": "ping", "session": __myself.sessionID } ],
+ { "command": "ping", "session": __myself.sessionID },
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
__myself.pingStatusOK = true;
else
throw new Error("You need to supply query to the search command");
- var searchParams = [{ "command": "search", "query": __myself.currQuery }];
- searchParams.push({"session":__myself.sessionID});
- if (filter !== undefined)
- searchParams.push({"filter": filter});
+ var searchParams = { "command": "search", "query": __myself.currQuery, "session": __myself.sessionID };
+
+ if (filter !== undefined)
+ searchParams["filter"] = filter;
+
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
searchParams,
clearTimeout(__myself.statTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- [ { "command": "stat", "session": __myself.sessionID } ],
+ { "command": "stat", "session": __myself.sessionID },
function(data) {
if ( data.getElementsByTagName("stat") ) {
var activeClients = Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue );
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
var context = this;
request.get(
- [ { "command": "show", "session": __myself.sessionID, "start": __myself.currentStart,
- "num": __myself.currentNum, "sort": __myself.currentSort, "block": 1 } ],
+ { "command": "show", "session": __myself.sessionID, "start": __myself.currentStart,
+ "num": __myself.currentNum, "sort": __myself.currentSort, "block": 1 },
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
// first parse the status data send along with records
}
);
},
- record: function(id)
+ record: function(id,offset)
{
- if( !__myself.searchStatusOK )
+ if( !__myself.searchStatusOK && __myself.useSessions)
return;
if( id !== undefined )
__myself.currRecID = id;
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
+
+ var recordParams = { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID };
+ if (offset !== undefined) {
+ recordParams["offset"] = offset;
+ }
+ __myself.currRecOffset = offset;
request.get(
- [ { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID } ],
+ recordParams,
function(data) {
var recordNode;
var record = new Array();
- if ( recordNode = data.getElementsByTagName("record")[0] ) {
+ record['xmlDoc'] = data;
+ if (__myself.currRecOffset !== undefined) {
+ record['offset'] = __myself.currRecOffset;
+ __myself.recordCallback(record);
+ } else if ( recordNode = data.getElementsByTagName("record")[0] ) {
// if stylesheet was fetched do not parse the response
if ( __myself.xslDoc ) {
record['recid'] = recordNode.getElementsByTagName("recid")[0].firstChild.nodeValue;
- record['xmlDoc'] = data;
record['xslDoc'] = __myself.xslDoc;
} else {
for ( i = 0; i < recordNode.childNodes.length; i++) {
clearTimeout(__myself.termTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- [ { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys } ],
+ { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys },
function(data) {
if ( data.getElementsByTagName("termlist") ) {
var activeClients = Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue );
clearTimeout(__myself.bytargetTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- [ { "command": "bytarget", "session": __myself.sessionID } ],
+ { "command": "bytarget", "session": __myself.sessionID },
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
var targetNodes = data.getElementsByTagName("target");
{
get: function ( params, callback )
{
- this._send( 'GET', params, null, callback );
+ this._send( 'GET', params, '', callback );
},
post: function ( params, data, callback )
this._send( 'POST', params, data, callback );
},
+ load: function ()
+ {
+ this.async = false;
+ this.request.open( 'GET', this.url, this.async );
+ this.request.send('');
+ if ( this.request.status == 200 )
+ return this.request.responseXML;
+ },
+
_send: function ( type, params, data, callback )
{
this.callback = callback;
var context = this;
+ this.async = true;
this.request.open( type, this._urlAppendParams(params), this.async );
- //this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
this.request.onreadystatechange = function () {
context._handleResponse();
}
var getUrl = this.url;
var sep = '?';
- for (var i = 0; i < params.length; i++) {
- var el = params[i];
- for (var key in el) {
- getUrl += sep + key + '=' + encodeURI(el[key]);
- sep = '&';
- }
- }
+ var el = params;
+ for (var key in el) {
+ if (el[key] != null) {
+ getUrl += sep + key + '=' + encodeURI(el[key]);
+ sep = '&';
+ }
+ }
return getUrl;
},