/*
* Copyright 2005 Joe Walker
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Declare an object to which we can add real functions.
*/
if (dwr == null) var dwr = {};
if (dwr.engine == null) dwr.engine = {};
if (DWREngine == null) var DWREngine = dwr.engine;
/**
* Set an alternative error handler from the default alert box.
* @see http://getahead.ltd.uk/dwr/browser/engine/errors
*/
dwr.engine.setErrorHandler = function(handler) {
dwr.engine._errorHandler = handler;
};
/**
* Set an alternative warning handler from the default alert box.
* @see http://getahead.ltd.uk/dwr/browser/engine/errors
*/
dwr.engine.setWarningHandler = function(handler) {
dwr.engine._warningHandler = handler;
};
/**
* Setter for the text/html handler - what happens if a DWR request gets an HTML
* reply rather than the expected Javascript. Often due to login timeout
*/
dwr.engine.setTextHtmlHandler = function(handler) {
dwr.engine._textHtmlHandler = handler;
}
/**
* Set a default timeout value for all calls. 0 (the default) turns timeouts off.
* @see http://getahead.ltd.uk/dwr/browser/engine/errors
*/
dwr.engine.setTimeout = function(timeout) {
dwr.engine._timeout = timeout;
};
/**
* The Pre-Hook is called before any DWR remoting is done.
* @see http://getahead.ltd.uk/dwr/browser/engine/hooks
*/
dwr.engine.setPreHook = function(handler) {
dwr.engine._preHook = handler;
};
/**
* The Post-Hook is called after any DWR remoting is done.
* @see http://getahead.ltd.uk/dwr/browser/engine/hooks
*/
dwr.engine.setPostHook = function(handler) {
dwr.engine._postHook = handler;
};
/**
* Custom headers for all DWR calls
* @see http://getahead.ltd.uk/dwr/????
*/
dwr.engine.setHeaders = function(headers) {
dwr.engine._headers = headers;
};
/**
* Custom parameters for all DWR calls
* @see http://getahead.ltd.uk/dwr/????
*/
dwr.engine.setParameters = function(parameters) {
dwr.engine._parameters = parameters;
};
/** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */
dwr.engine.XMLHttpRequest = 1;
/** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */
dwr.engine.IFrame = 2;
/** XHR remoting type constant. See dwr.engine.setRpcType() */
dwr.engine.ScriptTag = 3;
/**
* Set the preferred remoting type.
* @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setRpcType = function(newType) {
if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) {
dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" });
return;
}
dwr.engine._rpcType = newType;
};
/**
* Which HTTP method do we use to send results? Must be one of "GET" or "POST".
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setHttpMethod = function(httpMethod) {
if (httpMethod != "GET" && httpMethod != "POST") {
dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" });
return;
}
dwr.engine._httpMethod = httpMethod;
};
/**
* Ensure that remote calls happen in the order in which they were sent? (Default: false)
* @see http://getahead.ltd.uk/dwr/browser/engine/ordering
*/
dwr.engine.setOrdered = function(ordered) {
dwr.engine._ordered = ordered;
};
/**
* Do we ask the XHR object to be asynchronous? (Default: true)
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setAsync = function(async) {
dwr.engine._async = async;
};
/**
* Does DWR poll the server for updates? (Default: false)
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setActiveReverseAjax = function(activeReverseAjax) {
dwr.engine._activeReverseAjax = activeReverseAjax;
if (dwr.engine._activeReverseAjax) dwr.engine._poll();
};
/**
* Does DWR us comet polling? (Default: true)
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setPollUsingComet = function(pollComet) {
dwr.engine._pollComet = pollComet;
};
/**
* Set the preferred polling type.
* @param newPollType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame
* @see http://getahead.ltd.uk/dwr/browser/engine/options
*/
dwr.engine.setPollType = function(newPollType) {
if (newPollType != dwr.engine.XMLHttpRequest && newPollType != dwr.engine.IFrame) {
dwr.engine._handleError(null, { name:"dwr.engine.invalidPollType", message:"PollType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame" });
return;
}
dwr.engine._pollType = newPollType;
};
/**
* The default message handler.
* @see http://getahead.ltd.uk/dwr/browser/engine/errors
*/
dwr.engine.defaultErrorHandler = function(message, ex) {
dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);
if (message == null || message == "") alert("A server error has occured. More information may be available in the console.");
// Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky
else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message);
else alert(message);
};
/**
* The default warning handler.
* @see http://getahead.ltd.uk/dwr/browser/engine/errors
*/
dwr.engine.defaultWarningHandler = function(message, ex) {
dwr.engine._debug(message);
};
/**
* For reduced latency you can group several remote calls together using a batch.
* @see http://getahead.ltd.uk/dwr/browser/engine/batch
*/
dwr.engine.beginBatch = function() {
if (dwr.engine._batch) {
dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" });
return;
}
dwr.engine._batch = dwr.engine._createBatch();
};
/**
* Finished grouping a set of remote calls together. Go and execute them all.
* @see http://getahead.ltd.uk/dwr/browser/engine/batch
*/
dwr.engine.endBatch = function(options) {
var batch = dwr.engine._batch;
if (batch == null) {
dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" });
return;
}
dwr.engine._batch = null;
if (batch.map.callCount == 0) return;
// The hooks need to be merged carefully to preserve ordering
if (options) dwr.engine._mergeBatch(batch, options);
// In ordered mode, we don't send unless the list of sent items is empty
if (dwr.engine._ordered && dwr.engine._batchesLength != 0) {
dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch;
}
else {
dwr.engine._sendData(batch);
}
};
/** @deprecated */
dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); };
dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); };
dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); };
//==============================================================================
// Only private stuff below here
//==============================================================================
/** The original page id sent from the server */
dwr.engine._origScriptSessionId = "8BA52BF0393F58F27F58B363D26BB7F0";
/** The session cookie name */
dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID
/** Is GET enabled for the benefit of Safari? */
dwr.engine._allowGetForSafariButMakeForgeryEas