var HABITATMAP_URL = "http://habitatmap.org";

if (!window.HMWidgetInstance) {

  function hmGoogleScriptLoaded() {
    HMWidgetInstance.scriptLoaded('googleMapsAsync');
  }

  var HMWidgetInstance = {
    
    maps: [],
    _waitingMaps: [],
    
    addMap: function(mapData) {
      var divId = this.maps.length;
      this.maps[divId] = mapData;
      this._createMapDiv(divId, mapData.width, mapData.height);
      if (this._allScriptsLoaded()) {
        HMWidget.loadMap(divId);
      } else {
        this._waitingMaps.push(divId);
      }
    },

    insertScripts: function(googleKey) {
      if (this._scriptsInserted) return;
      this._scriptsInserted = true;
      
      var head = document.getElementsByTagName('head')[0];
      var googleUrl = 'http://maps.google.com/maps?file=api&v=2.184&key='
        + googleKey + "&async=2&callback=hmGoogleScriptLoaded";
      this._insertScript(head, 'googleMaps', googleUrl);
      this._insertScript(head, 'widgetBundle', HABITATMAP_URL + '/javascripts/widget_bundle_packaged.js');
    },

    _insertScript: function(head, scriptId, url) {
      var scriptElement = document.createElement("script");
      scriptElement.setAttribute("type", "text/javascript");
      scriptElement.onload = function() { HMWidgetInstance.scriptLoaded(scriptId) };
      scriptElement.onreadystatechange = function() {
        if (this.readyState == "complete" || this.readyState == "loaded") {
          HMWidgetInstance.scriptLoaded(scriptId);
        }
      };
      scriptElement.src = url;
      head.appendChild(scriptElement);
    },

    scriptLoaded: function(scriptId) {
      if (this["_" + scriptId + "Loaded"]) return;
      this["_" + scriptId + "Loaded"] = true;
      if (scriptId == "widgetBundle") {
        HMWidget.initializeEnvironment();
      } else if (scriptId == "googleMapsAsync") {
        if (this._widgetBundleLoaded) {
          GMarkerExtensions.hmInstallExtensions();
          HMPolygonExtensions.hmInstallExtensions();
          HMMarkerClusterer.loadClusterMarker();
        }
      }
      if (this._allScriptsLoaded()) {
        HMUtils.observe(window, "unload", function() { GUnload() });
        this._processWaitingMaps();
      }
    },
    
    _allScriptsLoaded: function() {
      return this._googleMapsLoaded && this._googleMapsAsyncLoaded && this._widgetBundleLoaded;
    },
        
    _createMapDiv: function(id, width, height) {
      document.writeln("<div class='habitatmap_widget' id='habitatmap_widget_" + id
        + "' style='width: " + width + "px; height: " + height + "px;'>Loading...</div>");
    },

    _processWaitingMaps: function() {
      for (var i = 0; i < this._waitingMaps.length; i++) {
        HMWidget.loadMap(this._waitingMaps[i]);
      }
    }
  };
}


(function() {
  // putting this inside a function to prevent googleKey and IE from polluting the global namespace
  var googleKey = "ABQIAAAAluyj6vRmyyyLg0ghU7pSIxR50xG04QjWTP-P3PyOY8HFIbRjABRDlGarCv_LwbzX1g0t1G6ql_I3Ng";
  var IE = !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1);

  if (IE) {
    window.attachEvent('onload', function() { HMWidgetInstance.insertScripts(googleKey) });
  } else {
    HMWidgetInstance.insertScripts(googleKey);
  }
})();

HMWidgetInstance.addMap({
  width: 632,
  height: 454,
  lat: 40.7240715078435,
  lng: -73.9366579055786,
  zoom: 15,
  markers: [{"name":"Acme Architectural Products - 72 Anthony","assigned_map_ids":[123],"lng":-73.9355581999,"id":286,"lat":40.7235755175},{"name":"Acme Architectural Products - 95 Lombardy","assigned_map_ids":[123],"lng":-73.937022686,"id":131,"lat":40.7229900815},{"name":"Klink Cosmo Cleaners","assigned_map_ids":[123],"lng":-73.9369475842,"id":287,"lat":40.7202091903},{"name":"soap manufacturer and lacquer storage","assigned_map_ids":[123],"lng":-73.9339059591,"id":288,"lat":40.7236690242},{"name":"Spic and Span Cleaners \u0026 Dyers and Norman Cleaners \u0026 Dyers","assigned_map_ids":[123],"lng":-73.9422315359,"id":285,"lat":40.7275514673}],
  layers: [{"opacity":100,"name":"NYSDEC Study Area","map_id":123,"weight":5,"fill_opacity":80,"id":1,"fill_color":"#00a0c6","color":"#047391","polies":[{"encoded_levels":"PEEFGFFDEHEDEFCDCHP","encoded_points":"{tpwFpmgbMhGiBrAdHrKiDlBpMoTdH`ChMcZlCTbDsMdA{As^nFyVaEsIlAkLr@}DfB{BzDaDvFyA`Kvm@","type":"Polyline"}],"user_id":1,"display_on_index":true},{"opacity":1,"name":"PCE/TCE in Soil Gas \u0026 Groundwater","map_id":123,"weight":1,"fill_opacity":60,"id":28,"fill_color":"#00ff00","color":"#00ff00","polies":[{"encoded_levels":"PEEFEBA?EAACAFBCEA?CBAHAB?C@ADA?B?@E?C@?G?ACAC?BAFA@@AC@@AF@BAAB?P","encoded_points":"ebpwFjpgbMyFhBsAeHeGjBoD_Tq@|@u@b@_@FO?KYHoAMqAa@gAq@k@q@Ac@\\QvCy@k@_A[e@Ig@GYHQX?h@XpATb@d@t@b@l@bAt@xAr@Wn@GdAEpB@tBDjBJnAh@`Bj@xAz@|@x@l@t@b@t@Ft@?r@Oz@|@tBvA~@Zr@PdBXn@Gr@[`@k@t@u@~BoCt@k@`@I`@?~@QNQ@WESSOe@AeAk@]m@{@iB","type":"Polygon"},{"encoded_levels":"P@ADA?FA@C??ACAGACAEB@D@BFB@DABP","encoded_points":"ktqwFtvhbMIw@?eARqDZu@d@c@d@]r@MpBNv@Af@MbA]t@OtBQpBDf@RVz@AjAMbAc@v@u@l@gBj@gBZe@|@qA`DaBhBi@PgAQo@Wg@i@i@sAQqA","type":"Polygon"}],"user_id":56,"display_on_index":true}],
  mapIds: [123],
  colorIds: [0],
  mapType: "map",
  nopol: false,
  nogrp: false
});
