Dialog
function Dialog() {
    var self = this;
    self.container = document.createElement('div');
    self.dialog = new InfoBox({
        content: self.container,
        maxWidth: 280,
        pixelOffset: new google.maps.Size(-16, -308),
        zIndex: null,
        boxClass: 'dialog',
        boxStyle: {
            width: '280px'
        },
        closeBoxURL: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTYgMTYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDE2IDE2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwb2x5Z29uIHBvaW50cz0iMTYsMS45IDE0LjEsMCA4LDYuMSAxLjksMCAwLDEuOSA2LjEsOCAwLDE0LjEgMS45LDE2IDgsOS45IDE0LjEsMTYgMTYsMTQuMSA5LjksOCAiLz4NCjwvc3ZnPg0K',
        closeBoxMargin: '5px',
        infoBoxClearance: new google.maps.Size(10, 10),
        isHidden: false,
        pane: 'floatPane',
        enableEventPropagation: false
    });
    // Event that closes the Dialog with a click on the map
    google.maps.event.addListener(gmap, 'click', function () {
        self.close();
    });
    // Event that closes the Dialog on ESC key
    google.maps.event.addDomListener(document, 'keyup', function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code === 27) {
            self.close();
        }
    });
    event.subscribe([
        EVENT_STORAGE_STATE_CHANGE,
        EVENT_STORAGE_FOCUS,
        EVENT_STORAGE_HIGHLIGHT
    ], function () {
        self.close();
    });
}
Dialog.prototype = {
| Option name | Type | Description | 
|---|---|---|
| content | string | |
| anchor | 
Open Dialog with content and position
open: function (content, anchor) {
    var self = this;
    self.container.innerHTML = content;
    self.dialog.setContent(self.container);
    setTimeout(function () {
        self.dialog.open(gmap, anchor);
        setTimeout(function () {
            self.animateWobble();
        }, 99)
    }, 99);
},
Closes Dialog
close: function () {
    if (this.dialog.getVisible()) {
        this.dialog.close();
    }
},
Animate Marker with Wobble animation
animateWobble: function () {
    dynamics.animate(this.container.parentNode, {
        rotateZ: Math.random() * 30 - 15
    }, {
        type: dynamics.bounce,
        duration: 1800
    })
}
    };
    return Dialog;
})();