# Converts postMessage events to page-level events, handling all JSON
# parsing in the process.
@addEventListener 'message', (e) =>
  if e.origin == @location.origin
    if e.data instanceof String
      try
        payload = JSON.parse( e.data )
      catch e
        payload = {}
    else
      payload = e.data || {}

    if type = payload.event
      delete payload.event

      ce = new CustomEvent type,
        detail :
          data          : payload,
          source        : e.source,
          originalEvent : e

      @dispatchEvent ce
, false