/* flXHR plugin
**
** This plugin implements cross-domain XmlHttpRequests via an invisible
** Flash plugin.
**
** In order for this to work, the BOSH service *must* serve a
** crossdomain.xml file that allows the client access.
**
** flXHR.js should be loaded before this plugin.
*/

Strophe.addConnectionPlugin('flxhr', {
    init: function (conn) {
        // replace Strophe.Request._newXHR with new flXHR version
        // if flXHR is detected
        if (flensed && flensed.flXHR) {
            Strophe.Request.prototype._newXHR = function () {
                var xhr = new flensed.flXHR({
                    autoUpdatePlayer: true,
                    instancePooling: true,
                    noCacheHeader: false,
                    onerror: function () {
                        conn._changeConnectStatus(Strophe.Status.CONNFAIL,
                                                  "flXHR connection error");
                        conn._onDisconnectTimeout();
                    }});
                xhr.onreadystatechange = this.func.bind(null, this);

                return xhr;
            };
        } else {
            Strophe.error("flXHR plugin loaded, but flXHR not found." +
                          "  Falling back to native XHR implementation.");
        }
    }
});
