| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- 'use strict';
 
- var inherits = require('inherits')
 
-   , iframeUtils = require('../../utils/iframe')
 
-   , urlUtils = require('../../utils/url')
 
-   , EventEmitter = require('events').EventEmitter
 
-   , random = require('../../utils/random')
 
-   ;
 
- var debug = function() {};
 
- if (process.env.NODE_ENV !== 'production') {
 
-   debug = require('debug')('sockjs-client:receiver:htmlfile');
 
- }
 
- function HtmlfileReceiver(url) {
 
-   debug(url);
 
-   EventEmitter.call(this);
 
-   var self = this;
 
-   iframeUtils.polluteGlobalNamespace();
 
-   this.id = 'a' + random.string(6);
 
-   url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));
 
-   debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);
 
-   var constructFunc = HtmlfileReceiver.htmlfileEnabled ?
 
-       iframeUtils.createHtmlfile : iframeUtils.createIframe;
 
-   global[iframeUtils.WPrefix][this.id] = {
 
-     start: function() {
 
-       debug('start');
 
-       self.iframeObj.loaded();
 
-     }
 
-   , message: function(data) {
 
-       debug('message', data);
 
-       self.emit('message', data);
 
-     }
 
-   , stop: function() {
 
-       debug('stop');
 
-       self._cleanup();
 
-       self._close('network');
 
-     }
 
-   };
 
-   this.iframeObj = constructFunc(url, function() {
 
-     debug('callback');
 
-     self._cleanup();
 
-     self._close('permanent');
 
-   });
 
- }
 
- inherits(HtmlfileReceiver, EventEmitter);
 
- HtmlfileReceiver.prototype.abort = function() {
 
-   debug('abort');
 
-   this._cleanup();
 
-   this._close('user');
 
- };
 
- HtmlfileReceiver.prototype._cleanup = function() {
 
-   debug('_cleanup');
 
-   if (this.iframeObj) {
 
-     this.iframeObj.cleanup();
 
-     this.iframeObj = null;
 
-   }
 
-   delete global[iframeUtils.WPrefix][this.id];
 
- };
 
- HtmlfileReceiver.prototype._close = function(reason) {
 
-   debug('_close', reason);
 
-   this.emit('close', null, reason);
 
-   this.removeAllListeners();
 
- };
 
- HtmlfileReceiver.htmlfileEnabled = false;
 
- // obfuscate to avoid firewalls
 
- var axo = ['Active'].concat('Object').join('X');
 
- if (axo in global) {
 
-   try {
 
-     HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');
 
-   } catch (x) {
 
-     // intentionally empty
 
-   }
 
- }
 
- HtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;
 
- module.exports = HtmlfileReceiver;
 
 
  |