Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/aphlict/Aphlict.js
| Show All 19 Lines | |||||
| * - `close` The client disconnected from the server. | * - `close` The client disconnected from the server. | ||||
| * - `error` There was an error. | * - `error` There was an error. | ||||
| * - `receive` Received a message from the server. | * - `receive` Received a message from the server. | ||||
| * | * | ||||
| * You do not have to handle any of them in any specific way. | * You do not have to handle any of them in any specific way. | ||||
| */ | */ | ||||
| JX.install('Aphlict', { | JX.install('Aphlict', { | ||||
| construct : function(id, server, port, subscriptions) { | construct: function(id, server, port, subscriptions) { | ||||
| if (__DEV__) { | if (__DEV__) { | ||||
| if (JX.Aphlict._instance) { | if (JX.Aphlict._instance) { | ||||
| JX.$E('Aphlict object is sort of a singleton..!'); | JX.$E('Aphlict object is a singleton!'); | ||||
| } | } | ||||
| } | } | ||||
| JX.Aphlict._instance = this; | this._id = id; | ||||
| this._server = server; | this._server = server; | ||||
| this._port = port; | this._port = port; | ||||
| this._subscriptions = subscriptions; | this._subscriptions = subscriptions; | ||||
| // Flash puts its "objects" into global scope in an inconsistent way, | JX.Aphlict._instance = this; | ||||
| // because it was written in like 1816 when globals were awesome and IE4 | |||||
| // didn't support other scopes since global scope is the best anyway. | |||||
| var container = document[id] || window[id]; | |||||
| this._flashContainer = container; | |||||
| }, | }, | ||||
| members : { | members: { | ||||
| _id: null, | |||||
| _server : null, | _server: null, | ||||
| _port : null, | _port: null, | ||||
| _subscriptions : null, | _subscriptions: null, | ||||
| start : function() { | |||||
| start: function(node, uri) { | |||||
| // NOTE: This is grotesque, but seems to work everywhere. | |||||
| node.innerHTML = | |||||
| '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">' + | |||||
| '<param name="movie" value="' + uri + '" />' + | |||||
| '<param name="allowScriptAccess" value="always" />' + | |||||
| '<param name="wmode" value="opaque" />' + | |||||
| '<embed src="' + uri + '" wmode="opaque"' + | |||||
| 'width="0" height="0" id="' + this._id + '">' + | |||||
| '</embed>' + | |||||
| '</object>'; | |||||
| }, | |||||
| _didStartFlash: function() { | |||||
| var id = this._id; | |||||
| // Flash puts its "objects" into global scope in an inconsistent way, | |||||
| // because it was written in like 1816 when globals were awesome and IE4 | |||||
| // didn't support other scopes since global scope is the best anyway. | |||||
| var container = document[id] || window[id]; | |||||
| this._flashContainer = container; | |||||
| this._flashContainer.connect( | this._flashContainer.connect( | ||||
| this._server, | this._server, | ||||
| this._port, | this._port, | ||||
| this._subscriptions); | this._subscriptions); | ||||
| } | } | ||||
| }, | }, | ||||
| properties : { | properties: { | ||||
| handler : null | handler: null | ||||
| }, | }, | ||||
| statics : { | statics: { | ||||
| _instance : null, | _instance: null, | ||||
| getInstance: function() { | |||||
| var self = JX.Aphlict; | |||||
| if (!self._instance) { | |||||
| return null; | |||||
| } | |||||
| return self._instance; | |||||
| }, | |||||
| didReceiveEvent : function(type, message) { | didReceiveEvent: function(type, message) { | ||||
| if (!JX.Aphlict._instance) { | var client = JX.Aphlict.getInstance(); | ||||
| if (!client) { | |||||
| return; | return; | ||||
| } | } | ||||
| var handler = JX.Aphlict._instance.getHandler(); | if (type == 'status') { | ||||
| switch (message.type) { | |||||
| case 'ready': | |||||
| client._didStartFlash(); | |||||
| break; | |||||
| } | |||||
| } | |||||
| var handler = client.getHandler(); | |||||
| if (handler) { | if (handler) { | ||||
| handler(type, message); | handler(type, message); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| }); | }); | ||||