vendor/assets/javascripts/easyXDM.Widgets.debug.js in easyxdm-rails-0.0.6 vs vendor/assets/javascripts/easyXDM.Widgets.debug.js in easyxdm-rails-0.0.7
- old
+ new
@@ -19,315 +19,315 @@
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-/*jslint browser: true, immed: true, passfail: true, undef: true, newcap: true*/
-/*global easyXDM, window */
-/**
- * easyXDM
- * http://easyxdm.net/
- * Copyright(c) 2009-2011, Øyvind Sean Kinsey, oyvind@kinsey.no.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-/**
- * @class easyXDM.WidgetManager
- * A class for managing widgets.<br/>
- * Handles initializing widgets, and does all of the message distribution.
- <pre><code>
- _widgetManager = new easyXDM.WidgetManager({
- local: "../hash.html",
- container: document.getElementById("defaultcontainer")
- },function(){
- _widgetManager.addWidget("http://provider.easyxdm.net/example/widget.html",{});
- });
- </code></pre>
- * Widgets can by dynamically added using the addWidget method
- <pre><code>
- _widgetManager.addWidget("http://provider.easyxdm.net/example/widget.html",{
- container document.getElementById("widgetcontainer")
- });
- </code></pre>
- * @constructor
- * @param {Object} config The WidgetManagers configuration
- * @namespace easyXDM
- */
-easyXDM.WidgetManager = function(config){
- var WidgetManager = this, _hashUrl = config.local, _channelNr = 0;
- var Events = {
- WidgetInitialized: "widgetinitialized",
- WidgetFailed: "widgetfailed"
- };
- var _widgets = {}, _subscribers = {};
- var _widgetSettings = {
- hosturl: location.href
- };
- easyXDM.apply(_widgetSettings, config.widgetSettings);
- var _container = config.container || document.body;
-
- /**
- * @private
- * Raises the specified event
- * @param {String} event The raised event
- * @param {Object} arg
- */
- function _raiseEvent(event, arg){
- if (config.listeners && config.listeners[event]) {
- config.listeners[event](WidgetManager, arg);
- }
- }
-
- /**
- * @private
- * Adds the widghet to the list of subscribers for the given topic
- * @param {String} url The widgets url
- * @param {String} topic The topic to subscribe to
- */
- function _subscribe(url, topic){
- if (!(topic in _subscribers)) {
- _subscribers[topic] = [];
- }
- _subscribers[topic].push(url);
- }
-
- /**
- * @private
- * Initialized the widget.<br/>
- * This is called after the widget has notified that it is ready.
- * @param {Object} widget The widget
- * @param {String} url The widgets url
- * @param {Object} widgetConfig The widgets configuration
- */
- function _initializeWidget(widget, url, widgetConfig){
- widget.initialize(_widgetSettings, function(response){
- if (response.isInitialized) {
- _widgets[url] = widget;
- var i = response.subscriptions.length;
- while (i--) {
- _subscribe(url, response.subscriptions[i]);
- }
- _raiseEvent(Events.WidgetInitialized, {
- url: url
- });
- }
- else {
- widget.destroy();
- _raiseEvent(Events.WidgetFailed, {
- url: url
- });
- }
- });
- }
-
- /**
- * @private
- * Publishes the data to the topics subscribers
- * @param {String} url The senders url
- * @param {String} topic The datas topic
- * @param {Object} data The data to publish
- */
- function _publish(url, topic, data){
- var subscribers = _subscribers[topic];
- if (subscribers) {
- var i = subscribers.length, widgetUrl;
- while (i--) {
- widgetUrl = subscribers[i];
- if (widgetUrl !== url) {
- _widgets[widgetUrl].send(url, topic, data);
- }
- }
- }
- }
-
- /**
- * @private
- * Sets up a new widget
- * @param {String} url The widgets url
- * @param {Object} widgetConfig The widgets configuration
- */
- function _setUpWidget(url, widgetConfig){
- var widget = new easyXDM.Rpc({
- channel: "widget" + _channelNr++,
- local: _hashUrl,
- remote: url,
- container: widgetConfig.container || _container,
- swf: config.swf,
- onReady: function(){
- _initializeWidget(widget, url, widgetConfig);
- }
- }, {
- local: {
- subscribe: {
- isVoid: true,
- method: function(topic){
- _subscribe(url, topic);
- }
- },
- publish: {
- isVoid: true,
- method: function(topic, data){
- _publish(url, topic, data);
- }
- }
- },
- remote: {
- initialize: {},
- send: {
- isVoid: true
- }
- }
- });
- }
-
- /**
- * Adds a widget to the collection
- * @param {String} url The url to load the widget from
- * @param {Object} widgetConfig The widgets url
- */
- this.addWidget = function(url, widgetConfig){
- if (url in _widgets) {
- throw new Error("A widget with this url has already been initialized");
- }
- _setUpWidget(url, widgetConfig);
- };
-
- /**
- * Removes the widget
- * @param {Object} url
- */
- this.removeWidget = function(url){
- if (url in _widgets) {
- for (var topic in _subscribers) {
- if (_subscribers.hasOwnProperty(topic)) {
- var subscribers = _subscribers[topic], i = subscribers.length;
- while (i--) {
- if (subscribers[i] === url) {
- subscribers.splice(i, 1);
- break;
- }
- }
- }
- }
- _widgets[url].destroy();
- delete _widgets[url];
- }
- };
-
- /**
- * Publish data to a topics subscribers
- * @param {String} topic The topic to publish to
- * @param {Object} data The data to publish
- */
- this.publish = function(topic, data){
- _publish("", topic, data);
- };
-
- /**
- * Broadcasts data to all the widgets
- * @param {Object} data The data to broadcast
- */
- this.broadcast = function(data){
- for (var url in _widgets) {
- if (_widgets.hasOwnPropert(url)) {
- _widgets[url].send({
- url: "",
- topic: "broadcast",
- data: data
- });
- }
- }
- };
-};
-
-/**
- * @class easyXDM.Widget
- * The base framework for creating widgets
- * @constructor
- * @param {Object} config The widgets configuration
- * @param {Function} onReady A method to run after the widget has been initialized.
- * @namespace easyXDM
- */
-easyXDM.Widget = function(config){
- var _widget = this;
- var _incomingMessageHandler;
- var _widgetHost = new easyXDM.Rpc({
- swf: config.swf
- }, {
- remote: {
- subscribe: {
- isVoid: true
- },
- publish: {
- isVoid: true
- }
- },
- local: {
- initialize: {
- method: function(settings){
- config.initialized(_widget, _widgetHost);
- return {
- isInitialized: true,
- subscriptions: config.subscriptions
- };
- }
- },
- send: {
- isVoid: true,
- method: function(url, topic, data){
- _incomingMessageHandler(url, topic, data);
- }
- }
- }
- });
-
- /**
- * @private
- * Destroy the interface on unload
- */
- window.onunload = function(){
- _widgetHost.destroy();
- };
-
- /**
- * Publish data to subscribers to a topic
- * @param {String} topic The topic to publish to
- * @param {Object} data The data to publish
- */
- this.publish = function(topic, data){
- _widgetHost.publish(topic, data);
- };
-
- /**
- * Subscribe to a topic
- * @param {String} topic The topic to subscribe to
- */
- this.subscribe = function(topic){
- _widgetHost.subscribe(topic);
- };
-
- /**
- * Register the method that will handle incoming messages
- * @param {Function} fn The handler
- */
- this.registerMessageHandler = function(fn){
- _incomingMessageHandler = fn;
- };
-
- config.initialize(this, _widgetHost);
-};
+/*jslint browser: true, immed: true, passfail: true, undef: true, newcap: true*/
+/*global easyXDM, window */
+/**
+ * easyXDM
+ * http://easyxdm.net/
+ * Copyright(c) 2009-2011, Øyvind Sean Kinsey, oyvind@kinsey.no.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+/**
+ * @class easyXDM.WidgetManager
+ * A class for managing widgets.<br/>
+ * Handles initializing widgets, and does all of the message distribution.
+ <pre><code>
+ _widgetManager = new easyXDM.WidgetManager({
+ local: "../hash.html",
+ container: document.getElementById("defaultcontainer")
+ },function(){
+ _widgetManager.addWidget("http://provider.easyxdm.net/example/widget.html",{});
+ });
+ </code></pre>
+ * Widgets can by dynamically added using the addWidget method
+ <pre><code>
+ _widgetManager.addWidget("http://provider.easyxdm.net/example/widget.html",{
+ container document.getElementById("widgetcontainer")
+ });
+ </code></pre>
+ * @constructor
+ * @param {Object} config The WidgetManagers configuration
+ * @namespace easyXDM
+ */
+easyXDM.WidgetManager = function(config){
+ var WidgetManager = this, _hashUrl = config.local, _channelNr = 0;
+ var Events = {
+ WidgetInitialized: "widgetinitialized",
+ WidgetFailed: "widgetfailed"
+ };
+ var _widgets = {}, _subscribers = {};
+ var _widgetSettings = {
+ hosturl: location.href
+ };
+ easyXDM.apply(_widgetSettings, config.widgetSettings);
+ var _container = config.container || document.body;
+
+ /**
+ * @private
+ * Raises the specified event
+ * @param {String} event The raised event
+ * @param {Object} arg
+ */
+ function _raiseEvent(event, arg){
+ if (config.listeners && config.listeners[event]) {
+ config.listeners[event](WidgetManager, arg);
+ }
+ }
+
+ /**
+ * @private
+ * Adds the widghet to the list of subscribers for the given topic
+ * @param {String} url The widgets url
+ * @param {String} topic The topic to subscribe to
+ */
+ function _subscribe(url, topic){
+ if (!(topic in _subscribers)) {
+ _subscribers[topic] = [];
+ }
+ _subscribers[topic].push(url);
+ }
+
+ /**
+ * @private
+ * Initialized the widget.<br/>
+ * This is called after the widget has notified that it is ready.
+ * @param {Object} widget The widget
+ * @param {String} url The widgets url
+ * @param {Object} widgetConfig The widgets configuration
+ */
+ function _initializeWidget(widget, url, widgetConfig){
+ widget.initialize(_widgetSettings, function(response){
+ if (response.isInitialized) {
+ _widgets[url] = widget;
+ var i = response.subscriptions.length;
+ while (i--) {
+ _subscribe(url, response.subscriptions[i]);
+ }
+ _raiseEvent(Events.WidgetInitialized, {
+ url: url
+ });
+ }
+ else {
+ widget.destroy();
+ _raiseEvent(Events.WidgetFailed, {
+ url: url
+ });
+ }
+ });
+ }
+
+ /**
+ * @private
+ * Publishes the data to the topics subscribers
+ * @param {String} url The senders url
+ * @param {String} topic The datas topic
+ * @param {Object} data The data to publish
+ */
+ function _publish(url, topic, data){
+ var subscribers = _subscribers[topic];
+ if (subscribers) {
+ var i = subscribers.length, widgetUrl;
+ while (i--) {
+ widgetUrl = subscribers[i];
+ if (widgetUrl !== url) {
+ _widgets[widgetUrl].send(url, topic, data);
+ }
+ }
+ }
+ }
+
+ /**
+ * @private
+ * Sets up a new widget
+ * @param {String} url The widgets url
+ * @param {Object} widgetConfig The widgets configuration
+ */
+ function _setUpWidget(url, widgetConfig){
+ var widget = new easyXDM.Rpc({
+ channel: "widget" + _channelNr++,
+ local: _hashUrl,
+ remote: url,
+ container: widgetConfig.container || _container,
+ swf: config.swf,
+ onReady: function(){
+ _initializeWidget(widget, url, widgetConfig);
+ }
+ }, {
+ local: {
+ subscribe: {
+ isVoid: true,
+ method: function(topic){
+ _subscribe(url, topic);
+ }
+ },
+ publish: {
+ isVoid: true,
+ method: function(topic, data){
+ _publish(url, topic, data);
+ }
+ }
+ },
+ remote: {
+ initialize: {},
+ send: {
+ isVoid: true
+ }
+ }
+ });
+ }
+
+ /**
+ * Adds a widget to the collection
+ * @param {String} url The url to load the widget from
+ * @param {Object} widgetConfig The widgets url
+ */
+ this.addWidget = function(url, widgetConfig){
+ if (url in _widgets) {
+ throw new Error("A widget with this url has already been initialized");
+ }
+ _setUpWidget(url, widgetConfig);
+ };
+
+ /**
+ * Removes the widget
+ * @param {Object} url
+ */
+ this.removeWidget = function(url){
+ if (url in _widgets) {
+ for (var topic in _subscribers) {
+ if (_subscribers.hasOwnProperty(topic)) {
+ var subscribers = _subscribers[topic], i = subscribers.length;
+ while (i--) {
+ if (subscribers[i] === url) {
+ subscribers.splice(i, 1);
+ break;
+ }
+ }
+ }
+ }
+ _widgets[url].destroy();
+ delete _widgets[url];
+ }
+ };
+
+ /**
+ * Publish data to a topics subscribers
+ * @param {String} topic The topic to publish to
+ * @param {Object} data The data to publish
+ */
+ this.publish = function(topic, data){
+ _publish("", topic, data);
+ };
+
+ /**
+ * Broadcasts data to all the widgets
+ * @param {Object} data The data to broadcast
+ */
+ this.broadcast = function(data){
+ for (var url in _widgets) {
+ if (_widgets.hasOwnPropert(url)) {
+ _widgets[url].send({
+ url: "",
+ topic: "broadcast",
+ data: data
+ });
+ }
+ }
+ };
+};
+
+/**
+ * @class easyXDM.Widget
+ * The base framework for creating widgets
+ * @constructor
+ * @param {Object} config The widgets configuration
+ * @param {Function} onReady A method to run after the widget has been initialized.
+ * @namespace easyXDM
+ */
+easyXDM.Widget = function(config){
+ var _widget = this;
+ var _incomingMessageHandler;
+ var _widgetHost = new easyXDM.Rpc({
+ swf: config.swf
+ }, {
+ remote: {
+ subscribe: {
+ isVoid: true
+ },
+ publish: {
+ isVoid: true
+ }
+ },
+ local: {
+ initialize: {
+ method: function(settings){
+ config.initialized(_widget, _widgetHost);
+ return {
+ isInitialized: true,
+ subscriptions: config.subscriptions
+ };
+ }
+ },
+ send: {
+ isVoid: true,
+ method: function(url, topic, data){
+ _incomingMessageHandler(url, topic, data);
+ }
+ }
+ }
+ });
+
+ /**
+ * @private
+ * Destroy the interface on unload
+ */
+ window.onunload = function(){
+ _widgetHost.destroy();
+ };
+
+ /**
+ * Publish data to subscribers to a topic
+ * @param {String} topic The topic to publish to
+ * @param {Object} data The data to publish
+ */
+ this.publish = function(topic, data){
+ _widgetHost.publish(topic, data);
+ };
+
+ /**
+ * Subscribe to a topic
+ * @param {String} topic The topic to subscribe to
+ */
+ this.subscribe = function(topic){
+ _widgetHost.subscribe(topic);
+ };
+
+ /**
+ * Register the method that will handle incoming messages
+ * @param {Function} fn The handler
+ */
+ this.registerMessageHandler = function(fn){
+ _incomingMessageHandler = fn;
+ };
+
+ config.initialize(this, _widgetHost);
+};