API Docs for: undefined
Show:

File: js/google-maps-frame.js

/**
 * @module gallery-google-maps-frame
 */
(function (Y, moduleName) {
    'use strict';

    var _Base = Y.Base,
        _Frame = Y.Frame;
        
    /**
     * @class GoogleMapsFrame
     * @constructor
     * @extends Base
     * @param {Object} config
     */
    Y.GoogleMapsFrame = _Base.create(moduleName, _Base, [], {
        initializer: function () {
            var me = this;
            
            /**
             * Fired when Google Maps Loader fails.
             * @event failure
             */
            me.publish('failure');
            
            /**
             * Fired when Google Maps Loader succeeds.
             * @event load
             * @fireOnce
             */
            me.publish('load', {
                fireOnce: true
            });
            
            /**
             * Fired when Google Maps Loader times out.
             * @event timeout
             */
            me.publish('timeout');

            var frame = new _Frame({
                content: '<div id="map"></div>',
                extracss: 'body, html, #map {height: 100%; width: 100%;}'
            });

            frame.on('ready', function () {
                var iY = frame.getInstance();

                iY.config.win.YUI = YUI;
                iY.use('gallery-google-maps-loader', 'node', function (iY) {
                    var googleMapsLoader = new iY.GoogleMapsLoader();

                    googleMapsLoader.on('failure', function () {
                        me.fire('failure');
                    });
                    
                    googleMapsLoader.on('success', function () {
                        me.google = iY.config.win.google;
                        me._set('loaded', true);
                        me.fire('load');
                    });
                    
                    googleMapsLoader.on('timeout', function () {
                        me.fire('timeout');
                    });
                    
                    googleMapsLoader.load(me.get('parameters'));

                    me._set('domNode', iY.Node.getDOMNode(iY.one('#map')));
                    me._set('frame', frame);
                });
            });

            frame.render(me.get('container'));
        }
    }, {
        ATTRS: {
            /**
             * A selector string or node object which will contain the iframe.
             * @attribute container
             * @initOnly
             * @type Node|String
             */
            container: {
                value: null,
                writeOnce: 'initOnly'
            },
            /**
             * Reference to an empty div created inside the iframe. (This is not
             * an instance of Node.)
             * @attribute domNode
             * @readOnly
             */
            domNode: {
                readOnly: true,
                value: null
            },
            /**
             * The Y.Frame instance that created the iframe.
             * @attribute frame
             * @readOnly
             */
            frame: {
                readOnly: true,
                value: null
            },
            /**
             * @attribute loaded
             * @default false
             * @readOnly
             * @type Boolean
             */
            loaded: {
                readOnly: true,
                value: false
            },
            /**
             * An optional parameters object passed to GoogleMapsLoader. (see
             * gallery-google-maps-loader for information)
             * @attribute parameters
             * @initOnly
             * @type Object
             */
            parameters: {
                value: null,
                writeOnce: 'initOnly'
            }
        }
    });
}(Y, arguments[1]));