/**
 * @class Ext.ux.google.Map
 * @extend Ext.Container
 * @alternateClassName Ext.Map
 * @xtype map
 * @xtype google-map
 * @mixins Ext.mixin.Mashup
 * Wraps a Google Map in an Ext.Component using the
 * [Google Maps API](http://code.google.com/apis/maps/documentation/v3/introduction.html).
 *
 * This component will automatically include the google maps API script from:
 * `//maps.google.com/maps/api/js`
 *
 */
 
/**
 * @event maprender
 * Fired when Map initially rendered.
 * @param {Ext.ux.google.Map} this
 * @param {google.maps.Map} map The rendered google.map.Map instance
 */
 
/**
 * @event centerchange
 * Fired when map is panned around.
 * @param {Ext.ux.google.Map} this
 * @param {google.maps.Map} map The rendered google.map.Map instance
 * @param {google.maps.LatLng} center The current LatLng center of the map
 */
 
/**
 * @event typechange
 * Fired when display type of the map changes.
 * @param {Ext.ux.google.Map} this
 * @param {google.maps.Map} map The rendered google.map.Map instance
 * @param {Number} mapType The current display type of the map
 */
 
/**
 * @event zoomchange
 * Fired when map is zoomed.
 * @param {Ext.ux.google.Map} this
 * @param {google.maps.Map} map The rendered google.map.Map instance
 * @param {Number} zoomLevel The current zoom level of the map
 */
 
/**
 * @event markerclick
 * Fired when the marker icon was clicked.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markerdblclick
 * Fired when the marker icon was double clicked.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markerdrag
 * Repeatedly fired while the user drags the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markerdragend
 * Fired when the user stops dragging the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markerdragstart
 * Fired when the user starts dragging the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markermousedown
 * Fired for a mousedown on the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markermouseout
 * Fired when the mouse leaves the area of the marker icon.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markermouseover
 * Fired when the mouse enters the area of the marker icon.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markermouseup
 * Fired for a mouseup on the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @event markerrightclick
 * Fired for a rightclick on the marker.
 * @param {Ext.ux.google.Map} map This map instance
 * @param {Object} info Information about this event
 * @param {Number} info.index The index of the marker record
 * @param {Ext.data.Model} info.record The record associated to the marker
 * @param {google.maps.Marker} info.marker The [Google Map marker](https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker)
 * @param {google.maps.MouseEvent} info.event The [Google Map event](https://developers.google.com/maps/documentation/javascript/3.exp/reference#MouseEvent)
 */
 
/**
 * @cfg {Boolean/Ext.util.Geolocation} [useCurrentLocation=false]
 * Pass in true to center the map based on the geolocation coordinates or pass a
 * {@link Ext.util.Geolocation GeoLocation} config to have more control over your GeoLocation options
 * @accessor
 */
 
/**
 * @cfg {google.maps.Map} [map=null]
 * The wrapped map.
 * @accessor
 */
 
/**
 * @cfg {Ext.util.Geolocation} [geo=null]
 * Geolocation provider for the map.
 * @accessor
 */
 
/**
 * @cfg {Object} [mapOptions={}]
 * MapOptions as specified by the Google Documentation:
 * [http://code.google.com/apis/maps/documentation/v3/reference.html](http://code.google.com/apis/maps/documentation/v3/reference.html)
 * @accessor
 */
 
/**
 * @cfg {Object} [mapListeners=null]
 * Listeners for any Google Maps events specified by the Google Documentation:
 * [http://code.google.com/apis/maps/documentation/v3/reference.html](http://code.google.com/apis/maps/documentation/v3/reference.html)
 *
 * @accessor
 */
 
/**
 * @cfg {Ext.data.Store/Object/Ext.data.Model[]/Ext.ux.google.map.Marker} [markers=true]
 * Can be either a Store instance, a configuration object that will be turned into a
 * store, an array of model or a single model (in which case a store will be created).
 * The Store is used to populate the set of markers that will be rendered in the map.
 * Marker options are read through the {@link #markerTemplate} config.
 */
 
/**
 * @cfg {Object/Ext.util.ObjectTemplate} [markerTemplate]
 * This is a template used to produce marker options from the {@link #markers} records.
 * See {@link Ext.ux.google.map.Marker} for details.
 * @accessor
 */