<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs title="US Weather Radar" directory_title="US Weather Radar"
        height="215" 
  	title_url="http://gmapsgaier.blogspot.com/"
  	screenshot="http://gmapsflighttracker.com/ghp/gmaps-us-weather-radar.jpg"
	thumbnail="http://gmapsflighttracker.com/ghp/gmaps-us-weather-radar-thumb.jpg"
  	author="GMaps Gaier"
	author_affiliation="GMaps Gaier"
	author_link="http://gmapsgaier.blogspot.com/"
	author_aboutme="Dedicated to develop Google Maps and AJAX applications."
        render_inline="never"
  	author_email="GMapsGaier+GHPWR@gmail.com"
	singleton="false"
        description="US Weather Radar. Weather Forecast. Weatherstation cameras. Cloud overlay. Earthquake information. Traffic status. Support for GE Plugin.">
  <Require feature="dynamic-height"/>
  <Require feature="setprefs"/>
  <Require feature="minimessage"/>
  <Require feature="settitle"/>
  <Require feature="com.google.gadgets.analytics" /> 
  <Require feature="locked-domain" />
  <Require feature="views" /> 
<!--
  <Locale lang="en" country="us" />
  <Locale lang="ALL" country="ALL" /> 
-->
</ModulePrefs> 
<UserPref name="loc" display_name="Zip Code" datatype="string" />
<UserPref name="zoom" display_name="Zoom" default_value="Metro" datatype="enum">
  <EnumValue value="City" />
  <EnumValue value="Metro" />
  <EnumValue value="State" />
  <EnumValue value="Region" />
  <EnumValue value="Larger Area" />
  <EnumValue value="Nation" />
</UserPref>
<UserPref name="map_height" display_name="Height of Map" default_value="250" datatype="enum">
  <EnumValue value="150" />
  <EnumValue value="200" />
  <EnumValue value="250" />
  <EnumValue value="300" />
  <EnumValue value="350" />
  <EnumValue value="400" />
  <EnumValue value="450" />
  <EnumValue value="500" />
  <EnumValue value="550" />
  <EnumValue value="600" />
</UserPref>
<UserPref name="background" display_name="Background of Radar" default_value="Map" datatype="enum">
  <EnumValue value="Map" />
  <EnumValue value="Satellite" />
  <EnumValue value="Satellite_with_Roads" />
  <EnumValue value="Road_Overlay" />
</UserPref>

<UserPref name="show_station" display_name="Show Weather Station" default_value="true" datatype="bool" />

<UserPref name="show_weather_overv" display_name="Show Weather Forecast" default_value="true" datatype="bool" />

<UserPref name="show_radar_upd" display_name="Show Radar Update Time" default_value="false" datatype="bool" />

<UserPref name="font_scale" display_name="Percent scale for content of inserts (less than 100 gives smaller display)" default_value="100" datatype="string" />

<UserPref name="Flash_Open" datatype="hidden"/>

<!--
<UserPref name="winddir" display_name="Show Wind Direction and Speed" default_value="true" datatype="bool" />
-->
<UserPref name="opac" display_name="Opacity of Radar Overlay" default_value="0.7" datatype="enum">
  <EnumValue value="0.0" />
  <EnumValue value="0.1" />
  <EnumValue value="0.2" />
  <EnumValue value="0.3" />
  <EnumValue value="0.4" />
  <EnumValue value="0.5" />
  <EnumValue value="0.6" />
  <EnumValue value="0.7" />
  <EnumValue value="0.8" />
  <EnumValue value="0.9" />
  <EnumValue value="1.0" />
</UserPref>
<UserPref display_name="Do not change: DataStore" name="DS" datatype="hidden"/>
<!--
<UserPref display_name="Do not change: Name" name="XOverlay_NAME" datatype="hidden"/>
-->
<UserPref name="Selected_Map_Type" datatype="hidden"/>
<UserPref name="Min_Magnitude" display_name="Minimal Magnitude for Earthquakes to show" default_value="4.0" datatype="enum">
  <EnumValue value="1.0" />
  <EnumValue value="2.0" />
  <EnumValue value="3.0" />
  <EnumValue value="4.0" />
  <EnumValue value="5.0" />
  <EnumValue value="6.0" />
  <EnumValue value="7.0" />
</UserPref>
<UserPref name="traffic" display_name="Show Traffic Status" default_value="false" datatype="bool" />
<UserPref name="GEplugin" display_name="Google Earth plugin (beta)" default_value="false" datatype="bool" />
<UserPref name="KML_Overlay" display_name="Link to KML or GeoRSS XML Overlay" default_value="" datatype="string" />
<UserPref name="cloud_opac" display_name="Opacity of Cloud Overlay" default_value="0.4" datatype="enum">
  <EnumValue value="0.0" />
  <EnumValue value="0.1" />
  <EnumValue value="0.2" />
  <EnumValue value="0.3" />
  <EnumValue value="0.4" />
  <EnumValue value="0.5" />
  <EnumValue value="0.6" />
  <EnumValue value="0.7" />
  <EnumValue value="0.8" />
  <EnumValue value="0.9" />
  <EnumValue value="1.0" />
</UserPref>
<UserPref name="centeronzipcode" display_name="Center on ZIP Code" default_value="false" datatype="bool" />
<UserPref name="centerongeoloc" display_name="Center on GEO Location" default_value="false" datatype="bool" />
<UserPref name="mousewheelzooms" display_name="Mouse wheel zooms" default_value="true" datatype="bool" />

<UserPref name="zip_cached" datatype="hidden" />
<UserPref name="zip_cached_geocoord" datatype="hidden" />

<Content type="html" view="home,canvas" ><![CDATA[

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

<!--

 GMaps US Weather Radar Google Module Copyright 2006-2008 GMaps Gaier. 
 All Rights Reserved.

 GMapsGaier+GHPWR@gmail.com

 Not affiliated with Google.


Using data provided by NEXRAD and the Iowa State University Department
of Agronomy. More Information about NEXRAD is at 
http://www.wunderground.com/radar/help.asp.

We provide the information on an as is
basis. We provide no warranties, express or implied, related to the
accuracy, completeness, timeliness, useability, and/or merchantability
of the data and are not liable for any loss, damage, claim, liability,
expense, or penalty, or for any direct, indirect, special, secondary,
incidental, consequential, or exemplary damages or lost profit
deriving from the use or misuse of this information.  


SORRY, this code has been organically grown and there is no time to weed ...

-->

<style type="text/css">

@import url("http://www.google.com/uds/solutions/localsearch/../../css/gsearch.css");
@import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");

form.gsc-search-box, form.gsc-input, gsc-search-box {
  font-size:8px;
}

v\:* {
      behavior:url(#default#VML);
    }

body
{
    background-color: #ffffff; 
    color: black;
    font-family: verdana, arial, helvetica, sans-serif;
    font-size: 12px;
    padding: 0;
}
   
.tooltip {
  font-style: italic;
  font-size: 90%;
  /* position: absolute; */
  position: absolute; top: 5px; left: 5px;
  /* width: 50px; */
  display: block;
  z-index: 500;
  background-color: #FFFFFF;
  border: 1px solid silver; 
}

  a {
	color: #000;
  }
  a:visited {
	color: #000;
  }
  a:hover {
	color: #666;
  }

.ghp_message {
  font-size: 80%;
  position: absolute; top: 30px; left: 30px;
  display: none;
  z-index: 500;
  border: 1px solid silver; 
  padding: 3px;
  background-color: #ddd; 
}

.ghp_message_c {
  z-index:500;
  padding: 3px;
  display: block;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_flash_c {
  position: absolute; top: 66px; left: 1px;
  z-index:450;
  padding: 3px;
  display: none;
  opacity: 60%;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_bigflash_c {
  position: absolute; top: -1px; left: 3px;
  z-index: 480;
  padding: 3px; padding-top:0px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_bigflash_close_c {
  position: absolute; top: 40px; right: 15px;
  z-index: 797;
  padding: 3px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_weather_overv_c {
  position: absolute; top: 1px; left: 19px;
  text-align: left;
  z-index:450;
  padding: 0px;
  display: block;
  opacity: 60%;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_myview_c {
  position: absolute; top: 20px; right: 2px;
  z-index:450;
  padding: 3px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_radar_upd_c {
  position: absolute; right: 2px; bottom: 20px;
  font-style: italic;
  z-index:450;
  padding: 0px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
  
}

.ghp_cam_c {
  position: absolute; left: 40px; top: 22px;
  z-index:450;
  width: 205;
  padding: 3px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
  
}

.ghp_vidcast_c {
    position: absolute; left: -12px; top: -3px; height; 250px;
  z-index:450;
  padding: 1px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
}

.ghp_wmovie_c {
    position: absolute; left: 3px; top: -9px; height; 250px;
  z-index:450;
  padding: 5px;
  display: none;
  background-color: #fff; 
  border: 1px solid #aaa; 
}


.butt {
  margin-top: 3px;
  padding: 2px;
  background-color: #ddd; 
  border: 1px solid #aaa; 
  cursor: hand;
}

.w_button {
  font-size: 80%;
  position: absolute; top: 50%; left: 50%;
  z-index: 500;
  border: 1px solid silver; 
  padding: 2px;
  background-color: #fff; 
}

.ghp_zipq {
  position: absolute; left: 36px; top: 48px;
  font-size: 90%;
  font-style: italic;
  z-index:450;
  padding: 3px;
  display: none;
  background-color: #FAA550; 
  border: 1px solid #aaa; 
}

.ghp_picinfo_c {
  position: absolute; bottom: 20px; left: 3px;
  font-size: 85%;
  z-index:550;
  padding: 2px;
  display: none;
  background-color: #FFF; 
  border: 1px solid #aaa; 
}

a {
 color: #000;
  /* background-color: #fff; */
}



</style>



<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;hl=en&amp;region=US&amp;sensor=false&amp;key=ABQIAAAAZqe2u0f7L3ubnymlUZdiBBTElXdvcNZUfyeretiHmpviWKHesRS6rQyqbKbsB1JlflUEQBEYm9pJjg" type="text/javascript"> </script>

<script src="http://www.google.com/jsapi?sensor=false&amp;key=ABQIAAAAZqe2u0f7L3ubnymlUZdiBBTElXdvcNZUfyeretiHmpviWKHesRS6rQyqbKbsB1JlflUEQBEYm9pJjg"></script>

<script src="http://gmapsflighttracker.com/ghp/wms-v2-8-1.js" type="text/javascript"></script>

<script src="http://gmapsflighttracker.com/ghp/wz_tooltip-1.js" type="text/javascript"></script>

<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=ABQIAAAAZqe2u0f7L3ubnymlUZdiBBTElXdvcNZUfyeretiHmpviWKHesRS6rQyqbKbsB1JlflUEQBEYm9pJjg"
    type="text/javascript"></script>
<script src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js"
    type="text/javascript"></script>


<!--
<div id="FTMAP___MODULE_ID___map" style="width: 100%; height: 94%;"></div>
-->

<div id="FTMAP___MODULE_ID___ad1" style="float: right; display: none;">

<script type="text/javascript">
<!--
google_ad_client = "pub-1966838941746801";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
/* google_ad_type = "text"; */
google_ad_slot = "3625531817";
google_ui_features = "rc:1";
google_color_border = "000080";
google_color_bg = "FFFFFF";
google_color_link = "000000";
google_color_url = "000000";
google_color_text = "194AA6";
// -->
      </script>
      <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
    </div>

<div id="FTMAP___MODULE_ID___map" style="width: 100%; height: 200px; "></div>

      <font size="-2"><div id="BOTTOM___MODULE_ID___" style="display: inline; float: left; margin-bottom: 5px;"><!--<a id="ABUTT__MODULE_ID__" title="Show local weather forecast based on zip entered in the configuration section." href="javascript: FTMAP___MODULE_ID___handle.store_values();">Store Values</a>|--><a style="" title="Change location of weather forecast" href="javascript: FTMAP___MODULE_ID___handle.show_zip();">ZIP</a> | <a style="border: 0px solid #aaa; " title="Update Radar Information" href="javascript: FTMAP___MODULE_ID___handle.reloadit();">Update</a> | <a style="border: 0px solid #aaa; " title="Show nearest weather station cameras" href="javascript: FTMAP___MODULE_ID___handle.show_cam(1);">Cams</a> | <a style="border: 0px solid #aaa; " title="Show Video Forecast by Weatherbug" href="javascript: FTMAP___MODULE_ID___handle.show_vidcast();">Vidcast</a> | <!-- <a target="_new" href="http://gmapsgaier.blogspot.com/" onmouseover="javascript: FTMAP___MODULE_ID___handle.hide_goverlay();return true;"  onmouseout="javascript: FTMAP___MODULE_ID___handle.show_goverlay();return true;" >GMaps Gaier</a> --> <a style="background-color: ;" title="Wind forecast movie by meteoblue.com" href="javascript: FTMAP___MODULE_ID___handle.show_wmovie();">Wind Movie</a> <div id="FTMAP___MODULE_ID___3DD" style="display: inline;"> <!--| <a target="_new" style="background-color: orange;" title="Olympics @ Vancouver 2010 News, Maps and Pictures Gadget" href="http://www.google.com/ig/adde?synd=open&source=ggyp&moduleurl=ajaxgaier.com/iGoogle/olympia-news.xml">Olympics Gadget</a> <a target="_new" title="Gaiagi Driver - 3D Driving Simulator including street view and birds view (requires Google Earth plugin)" href="http://www.gaiagi.com/3d-driving-simulator/" style="background-color: white;">3D Driving Simulator</a> --> </div> | <span>Data:</span> <a target="_new" title="Iowa Environmental Mesonet, Iowa State University Department of Agronomy" onmouseover="FTMAP___MODULE_ID___handle.show_nexrad_info(1);" onmouseout="FTMAP___MODULE_ID___handle.show_nexrad_info(0);" href="http://mesonet.agron.iastate.edu/index.phtml">IEM</a>, <a target="_new" title="Weatherbug" href="http://www.weatherbug.com/?zcode=z5854">WB</a></div></div></font>

<div class="tooltip" id="TT__MODULE_ID__" style="display: none;"></div>
<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_message" id="GHP_MESSAGE__MODULE_ID__">
 <div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_message_c" id="GHP_C_MESSAGE__MODULE_ID__" ></div>
</div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_flash_c" id="GHP_C_FLASH__MODULE_ID__" >X</div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_bigflash_c" id="GHP_C_BIGFLASH__MODULE_ID__" >Loading ...</div>
<div class="ghp_bigflash_close_c" id="GHP_C_BIGFLASHCLOSE__MODULE_ID__" ><a href="javascript:FTMAP___MODULE_ID___handle.close_bigflash();">Close</a></div>

<div class="ghp_myview_c" id="GHP_C_MYVIEW__MODULE_ID__"><div id="GHP_MYVIEW_INFO__MODULE_ID__" title="Click to change the view" onClick="FTMAP___MODULE_ID___handle.myview_get_and_disp_data(1);" style="cursor: pointer; text-decoration: underline; font-size: 75%; font-style: normal;"></div><select style="font-size: 75%; display: none;" onchange="FTMAP___MODULE_ID___handle.pulldown_callback()" id="pres_list__MODULE_ID__"><option value="Loading...">Loading ...</option></select></div>

<div onmouseover="FTMAP___MODULE_ID___handle.minimize_flash(1);" onmouseout="FTMAP___MODULE_ID___handle.minimize_flash(2);"   onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)"  style="top: 1px; left:19px;" class="ghp_weather_overv_c" id="GHP_C_WEATHEROVERV__MODULE_ID__" ><div title="Click on map for local weather forecast." style="font-size: 70%;"><i>Click on map for local<br/>weather forecast.</i></div></div>

<div class="ghp_radar_upd_c" onmouseover="FTMAP___MODULE_ID___handle.show_nexrad_info(1);" onmouseout="FTMAP___MODULE_ID___handle.show_nexrad_info(0)" id="GHP_C_RADAR_UPD__MODULE_ID__" >X</div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_cam_c" id="GHP_C_CAM__MODULE_ID__" ></div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_vidcast_c" id="GHP_C_VIDCAST__MODULE_ID__" ></div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_wmovie_c" id="GHP_C_WMOVIE__MODULE_ID__" ></div>


<div onmouseover="FTMAP___MODULE_ID___handle.minimize_flash(1);" class="ghp_zipq" id="GHP_ZIPQ__MODULE_ID__" >Please enter a US ZIP or address for local weather information (e.g. 95014; <u>please be aware that the permanent configuration of the ZIP is done in the configuration section of the gadget</u>): <div style="margin-top: 5px; margin-bottom: 5px;">&nbsp;&nbsp;&nbsp;&nbsp;<input style="margin-bottom: -2px; margin-top: 0px;" id="zip_text__MODULE_ID__" type="text" onChange="FTMAP___MODULE_ID___handle.get_zip();"> <div style="display: inline; background-color: #fff; margin-bottom: 3px; padding: 3px; cursor: pointer; border: 1px solid #000;" onClick="FTMAP___MODULE_ID___handle.get_zip();"><b>OK</b></div></div></div>

<div onmousedown="FTMAP___MODULE_ID___handle.startDrag(event)" class="ghp_picinfo_c" id="GHP_C_PICINFO__MODULE_ID__" ></div>

<div style="display: none; position: absolute; right: 0px; top: 45px;" id="GHP_NEXRAD_INFO__MODULE_ID__" ><a target="_new" href="http://www.srh.noaa.gov/srh/jetstream/doppler/baserefl.htm#rainrate"><img style="border: 0px;" src="http://gmapsflighttracker.com/ghp/nexrad3.png" height="100%"></a></div>

<!--
<div class="w_button" id="WBUTT__MODULE_ID__"><a id="ABUTT__MODULE_ID__"title="Show local weather forecast" href="javascript: FTMAP___MODULE_ID___handle.get_weather_info();">W</a></div>
-->

<script type="text/javascript">
<!--

var FTMAP___MODULE_ID__offsetX,FTMAP___MODULE_ID__offsetY,FTMAP___MODULE_ID__draggingThing;

// f5f9f3 border weather station

// _IG_Analytics("UA-568933-4", "/GHP_WR");

// google.load("maps", "2.x");
// google.load("search", "1");

// debug
// google.loader.ClientLocation = null;

google.load("jquery", "1");

// google.load("earth", "1");
// window.google.earth.fetchKml(ge, "http://www.weatherbonk.com/weather/kml/weatherBonk_barbs.kml",     function(obj) { me.finishInit(obj); });
// google.earth.createInstance("map3d", initCB, failureCB);


function FTMAP___MODULE_ID__() {

  var g_loc;
  var g_zoom;
  var g_show_station;

  var ga_avail = 0;
  if (! ga_avail) {
      var ga = new _IG_GA("UA-568933-4", "/GHP_WR3");
      this.ga = ga;
      ga.reportPageview('/GHP_WR3');
  }

this.init = function (p_point) {

    // Reusing weathermap.xml logic

    FTMAP___MODULE_ID___handle.ga = ga;
    FTMAP___MODULE_ID___handle.ga_avail = ga_avail;

    var startLng = -98.701172;  // Center on USA by default
    var startLat = 38.34;
    var g_zoom = 17 - 14;
    // var prefs = new _IG_Prefs(__MODULE_ID__);
    // FTMAP___MODULE_ID___handle.prefs = g_prefs__MODULE_ID__;
    prefs = FTMAP___MODULE_ID___handle.prefs;
    g_loc = prefs.getString("loc");
    FTMAP___MODULE_ID___handle.g_loc = g_loc;
    FTMAP___MODULE_ID___handle.g_show_station = prefs.getBool("show_station");
    FTMAP___MODULE_ID___handle.g_show_weather_overv = prefs.getBool("show_weather_overv");
    if (!FTMAP___MODULE_ID___handle.g_show_weather_overv) {
	$('#GHP_C_WEATHEROVERV__MODULE_ID__').hide();
    }
    FTMAP___MODULE_ID___handle.g_radar_upd = prefs.getBool("show_radar_upd");

    //    FTMAP___MODULE_ID___handle.wmsupd=0;
    FTMAP___MODULE_ID___handle.wmsupd=Math.floor(Math.random()*1000000);

    // var loc = prefs.getString("loc");
    loc = g_loc;

    // alert ("x" + loc + "x" + startZoom);

    // alert("not ig " + loc + " " + zoom + " " + _args());

    var zoom="";
    if (_args()["synd"] && loc == "") {
	var platform = _args()["synd"];
	if (platform != "ig") { 
	    // get args differently
	    var amp=document.location.href.indexOf("&amp;")>=0?"amp;":"";
	    loc=_args()[amp+"up_loc"];
	    zoom=_args()[amp+"up_zoom"];
	    // font_size=_args()[amp+"up_fontsize"] != "" ? _args()[amp+"up_fontsize"]:"9";
	    // alert("not ig " + loc + " " + zoom + _args());
	}
    }

    if (zoom == "") {
	var zoomPref = prefs.getString("zoom");
    } else {
	var zoomPref = zoom;
    }
    startZoom = 17 - 14;
    if (zoomPref == "City")
      startZoom = 17 - 6;
    else if (zoomPref == "Metro")
      startZoom = 17 - 8;
    else if (zoomPref == "State")
      startZoom = 17 - 9;
    else if (zoomPref == "Region")
      startZoom = 17 - 11;
    else if (zoomPref == "Larger Area")
      startZoom = 17 - 12;
    else if (zoomPref == "Nation")
      startZoom = 17 - 14;

    //    if (loc == "") {
    //  startZoom = 17 - 14;
    // }     

    if (p_point) {
	// s_startLng = p_point.long() -0.3;  // kg
	s_startLng = p_point.lng();
	s_startLat = p_point.lat();
    }

    // alert("loc " + g_loc + "loc_long" + s_startLng + " " +  s_startLat );
    
    FTMAP___MODULE_ID___handle.geoip_point = null;
    
    g_zoom = startZoom;

    // alert(p_point);
    if (p_point) {
	startLng = s_startLng;
	startLat = s_startLat;
      // kg this.debug("Loaded position: " + startLng + "," + startLat + " for " + prefs.getString("loc"));

      FTMAP___MODULE_ID___handle.check_IP_loc=0;

    } else {

	//
	// eval IP based location if not set via location param
	//
	// if (geoip_latitude && g_loc == "") {
	if (0) {
	    FTMAP___MODULE_ID___handle.geoip_lat = geoip_latitude();
	    FTMAP___MODULE_ID___handle.geoip_long = geoip_longitude();
	    FTMAP___MODULE_ID___handle.geoip_city = geoip_city();
	    FTMAP___MODULE_ID___handle.geoip_country_code = geoip_country_code();
	    // alert(geoip_country_name() +  " " + geoip_latitude() + " " + geoip_longitude());
	}
	if (google.loader.ClientLocation) {
	    if (g_loc == "" && google.loader.ClientLocation.address.city != "")
	    {
		var cl = google.loader.ClientLocation;
		FTMAP___MODULE_ID___handle.geoip_lat = cl.latitude;
		FTMAP___MODULE_ID___handle.geoip_long = cl.longitude;
		FTMAP___MODULE_ID___handle.geoip_city = cl.address.city;
		FTMAP___MODULE_ID___handle.geoip_country_code = cl.address.country_code;
		startLng = cl.longitude;
		startLat = cl.latitude;
		// Debug
		if (0) {
		    FTMAP___MODULE_ID___handle.geoip_lat = "40.75";
		    FTMAP___MODULE_ID___handle.geoip_long = "-74";
		    FTMAP___MODULE_ID___handle.geoip_city = "New York";
		    FTMAP___MODULE_ID___handle.geoip_country_code = "US";
		}
		// alert(google.loader.ClientLocation.latitude  + " " + google.loader.ClientLocation.address.country_code);
		eval("var p = new GLatLng(" + FTMAP___MODULE_ID___handle.geoip_lat+","+FTMAP___MODULE_ID___handle.geoip_long+")");
		// alert ("var p = new GLatLng(" + FTMAP___MODULE_ID___handle.geoip_lat+","+FTMAP___MODULE_ID___handle.geoip_long+")" + "XXX " + p);
		FTMAP___MODULE_ID___handle.geoip_point = p;
		str = FTMAP___MODULE_ID___handle.geoip_city + " " + FTMAP___MODULE_ID___handle.geoip_country_code;
		// _IG_FetchContent("http://gmapsflighttracker.com/ghp/geo_IP.txt?zip=" + encodeURIComponent(str) ,    function(string) {
		//    return;
		//});

		// FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEOIP1", str);
	    }
	}
    }


    /////////////////////////////////////////////////////////////////////////
    //
    // main content 
    //

    map = new GMap2(document.getElementById("FTMAP___MODULE_ID___map"));
    FTMAP___MODULE_ID___handle.g_map = map;

    var proxy=0;
    if (navigator.userAgent) {
      var str = navigator.userAgent;
      if (str.match("gmapsg")) {
	  // proxy=1;
	  // var t = str.match("gmapsg");
	  // alert(t);
      }
    }
    /// kgkg 
    proxy=0; 

    //
    // Show KML Overlay
    //
    // var kml_2 = new GGeoXml("http://nigel.tao.googlepages.com/blackbirds.kml");
    // http://www.glooton.fr/hurricanes.kmz
    var kml_ovl = prefs.getString("KML_Overlay");
    if (kml_ovl && kml_ovl != "") {
	// alert(kml_ovl);
	var kml_2 = new GGeoXml(kml_ovl);
	FTMAP___MODULE_ID___handle.g_map.addOverlay(kml_2);
    }

    if (0) {
	// http://www.glooton.fr/hurricanes.kmz
	// alert(kml_ovl);
	// var kml_3 = new GGeoXml(kml_ovl);
	// var kml_3 = new GGeoXml("http://mw1.google.com/mw-weather/ike/hurricane_hunters/latest.kmz");
	// var kml_3 = new GGeoXml("http://mw1.google.com/mw-weather/ike/hurricane_hunters/2008IKE3009A.kmz");
	var kml_3 = new GGeoXml("http://www.webcams.travel/webcams.kml");
	// var kml_3 = new GGeoXml("http://www.glooton.fr/hurricanes.kmz");
	FTMAP___MODULE_ID___handle.g_map.addOverlay(kml_3);
    }



    //////////////////////////////////////////////////////////
    // apply background settings
    
    var backg = prefs.getString("background");
    switch (backg) {
    case "Map": 
      var layer3=[G_NORMAL_MAP.getTileLayers()[0]];
      break;
      
    case "Satellite": 
	// var layer3=[G_SATELLITE_MAP.getTileLayers()[0],G_HYBRID_MAP.getTileLayers()[1],tilenexrad];
	var layer3=[G_SATELLITE_MAP.getTileLayers()[0]];
	// var layer3=[G_SATELLITE_MAP.getTileLayers()[0], G_HYBRID_MAP.getTileLayers()[1]];
      break;

    case "Satellite_with_Roads": 
	// var layer3=[G_SATELLITE_MAP.getTileLayers()[0],G_HYBRID_MAP.getTileLayers()[1],tilenexrad];
	// var layer3=[G_SATELLITE_MAP.getTileLayers()[0]];
      var layer3=[G_SATELLITE_MAP.getTileLayers()[0], G_HYBRID_MAP.getTileLayers()[1]];
      break;
      
    case "Road_Overlay": 
      var layer3=[G_HYBRID_MAP.getTileLayers()[1]];
      break;
      
    default: 
      // var layer3=[G_NORMAL_MAP.getTileLayers()[0],tilenexrad, tilewinddir];
      var layer3=[G_NORMAL_MAP.getTileLayers()[0]];
      break;
      
    }
    // alert (backg + layer3);
    // var layer3_1=[G_NORMAL_MAP.getTileLayers()[0]];
    
    var custommap3 = new GMapType(layer3, G_SATELLITE_MAP.getProjection(), "Radar", G_SATELLITE_MAP);
    FTMAP___MODULE_ID___handle.custommap3 = custommap3;    
    map.addMapType(custommap3);

    
    //
    // if wind dir then add the layer
    //
    // if (prefs.getBool("winddir")) {
    if (1) {

	// SAT VIS
	
	var tile_satvis= new GTileLayer(new GCopyrightCollection(""),1,17);
	tile_satvis.myLayers='goes_conus_vis';
	tile_satvis.myLayers='nexrad_1hour_precip';
	tile_satvis.myFormat='image/png';
	tile_satvis.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_vis.cgi?&CODE='+FTMAP___MODULE_ID___handle.wmsupd;
	tile_satvis.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n1p.cgi?';
	FTMAP___MODULE_ID___handle.wmsupd++;
	tile_satvis.getTileUrl=CustomGetTileUrl;
	// FTMAP___MODULE_ID___handle.opac = prefs.getString("opac");
	FTMAP___MODULE_ID___handle.sat_visopac = 0.6;
	tile_satvis.getOpacity = function() {return FTMAP___MODULE_ID___handle.sat_visopac;}
	// tile_satvis.getOpacity = FTMAP___MODULE_ID___handle.getopac;
	tile_satvis.isPng = function() {return true;}

	var layer_vis=[G_NORMAL_MAP.getTileLayers()[0],tile_satvis];
	
	// var custommap_vis = new GMapType(layer_vis, G_SATELLITE_MAP.getProjection(), "Test", G_SATELLITE_MAP);
	// map.addMapType(custommap_vis);
	// FTMAP___MODULE_ID___handle.custommap_vis = custommap_vis;
	// FTMAP___MODULE_ID___handle.custommap_vis = 0;


	// SAT IR

	var tile_satir= new GTileLayer(new GCopyrightCollection("Data by IEM"),1,17);
	tile_satir.myLayers='goes_conus_ir';
	tile_satir.myFormat='image/png';
	// tile_satir.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?&CODE='+FTMAP___MODULE_ID___handle.wmsupd;
	tile_satir.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?';
	FTMAP___MODULE_ID___handle.wmsupd++;
	tile_satir.getTileUrl=CustomGetTileUrl;
	// FTMAP___MODULE_ID___handle.opac = prefs.getString("opac");
	FTMAP___MODULE_ID___handle.sat_iropac = prefs.getString("cloud_opac");
	// alert(FTMAP___MODULE_ID___handle.sat_iropac);
	tile_satir.getOpacity = function() {return FTMAP___MODULE_ID___handle.sat_iropac;}
	// tile_satir.getOpacity = FTMAP___MODULE_ID___handle.getopac;
	tile_satir.isPng = function() {return true;}

	var layer4=[G_NORMAL_MAP.getTileLayers()[0],tile_satir];
	
	var custommap_ir = new GMapType(layer4, G_SATELLITE_MAP.getProjection(), "IR Satellite", G_SATELLITE_MAP);
	map.addMapType(custommap_ir);
	FTMAP___MODULE_ID___handle.custommap_ir = custommap_ir;

	// 1h precip
	
// 	var tile_1hpre= new GTileLayer(new GCopyrightCollection(""),1,17);
// 	tile_1hpre.myLayers='nexrad_1hour_precip';
// 	tile_1hpre.myLayers='nexrad-ntp';
// 	tile_1hpre.myFormat='image/png';
// 	tile_1hpre.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n1p.cgi?';
// 	tile_1hpre.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/ntp.cgi?';
// 	FTMAP___MODULE_ID___handle.wmsupd++;
// 	tile_1hpre.getTileUrl=CustomGetTileUrl;
// 	FTMAP___MODULE_ID___handle.opac_1hpre = 1.0;
// 	tile_1hpre.getOpacity = function() {return FTMAP___MODULE_ID___handle.opac_1hpre;}
// 	tile_1hpre.isPng = function() {return true;}

// 	var layer_1hpre=[G_NORMAL_MAP.getTileLayers()[0],tile_1hpre];
	
// 	var custommap_1hpre = new GMapType(layer_1hpre, G_SATELLITE_MAP.getProjection(), "Storm Total Precip", G_SATELLITE_MAP);
// 	map.addMapType(custommap_1hpre);
// 	FTMAP___MODULE_ID___handle.custommap_1hpre = custommap_1hpre;

	// Storm Total Precip
	
	var tile_stormtotpre= new GTileLayer(new GCopyrightCollection("Data by IEM"),1,17);
	tile_stormtotpre.myLayers='nexrad-ntp';
	tile_stormtotpre.myFormat='image/png';
	tile_stormtotpre.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/ntp.cgi?';
	FTMAP___MODULE_ID___handle.wmsupd++;
	tile_stormtotpre.getTileUrl=CustomGetTileUrl;
	FTMAP___MODULE_ID___handle.opac_stormtotpre = 1.0;
	tile_stormtotpre.getOpacity = function() {return FTMAP___MODULE_ID___handle.opac_stormtotpre;}
	// tile_stormtotpre.getOpacity = FTMAP___MODULE_ID___handle.getopac;
	tile_stormtotpre.isPng = function() {return true;}
	var layer_stormtotpre=[G_NORMAL_MAP.getTileLayers()[0],tile_stormtotpre];
	// var custommap_stormtotpre = new GMapType(layer_stormtotpre, G_SATELLITE_MAP.getProjection(), "Storm Precip", G_SATELLITE_MAP);
	// map.addMapType(custommap_stormtotpre);
	// FTMAP___MODULE_ID___handle.custommap_stormtotpre = custommap_stormtotpre;

	// Warnings

	var tile_warn= new GTileLayer(new GCopyrightCollection(""),1,17);
	// tile_warn.myLayers='warnings_c';
	tile_warn.myLayers='XYXXP';
	tile_warn.myLayers='contour_high';
	tile_warn.myFormat='image/png';
	// tile_warn.myFormat='image/gif';
	// tile_warn.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?&CODE='+FTMAP___MODULE_ID___handle.wmsupd;
	// tile_warn.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/us/wwa.cgi?';
	tile_warn.myBaseURL='http://maps.customweather.com/image?';
	// tile_warn.myBaseURL='http://viz.globe.gov/viz-bin/wmt.cgi?';
	FTMAP___MODULE_ID___handle.wmsupd++;
	tile_warn.getTileUrl=CustomGetTileUrl;
	// FTMAP___MODULE_ID___handle.opac = prefs.getString("opac");
	//	FTMAP___MODULE_ID___handle.sat_iropac = 0.9;
	FTMAP___MODULE_ID___handle.sat_iropac = prefs.getString("opac");
	tile_warn.getOpacity = function() {return FTMAP___MODULE_ID___handle.sat_iropac;}
	// tile_warn.getOpacity = FTMAP___MODULE_ID___handle.getopac;
	tile_warn.isPng = function() {return true;}

	var layer4=[G_NORMAL_MAP.getTileLayers()[0],tile_warn];
	
//	var custommap_warn = new GMapType(layer4, G_SATELLITE_MAP.getProjection(), "Warnings", G_SATELLITE_MAP);
//	map.addMapType(custommap_warn);
//	FTMAP___MODULE_ID___handle.custommap_warn = custommap_warn;





      // layer3.push( tilewinddir );
      // var layer4=[G_SATELLITE_MAP.getTileLayers()[0], windspeed,tilewinddir];
      // var layer4=[G_SATELLITE_MAP.getTileLayers()[0], tilewinddir];

      // alert(kml_1.myLayers);

      // var layer4=[G_SATELLITE_MAP.getTileLayers()[0], kml_1.myLayers()[0]];

//      map.addOverlay(kml_1);

      // var layer4 = layer3;
      // layer4.pop();
      //layer4.push( tilewinddir )
      
      // var custommap4 = new GMapType(layer4, G_SATELLITE_MAP.getProjection(), "KML", G_SATELLITE_MAP);
    
      
      // delete sat map type for space
//      FTMAP___MODULE_ID___handle.remadd = 1;

      // map.removeMapType(map.getMapTypes()[1]);
      
//      map.addMapType(custommap4);

//      FTMAP___MODULE_ID___handle.remadd = 0;
      
    }
    
    //
    // custom map
    //
    //   if (1) {
    if (0) {
      
      //////////////////////////////////////////////////////////
      // get configuration
      var s_overlay_ID = prefs.getString("XOverlay_ID");
      // var s_overlay_NAME = prefs.getString("XOverlay_NAME");
      var arr_overlay = s_overlay_ID.split(";");
      s_overlay_ID = arr_overlay[0];
      s_overlay_NAME = arr_overlay[1];
      // alert ("stored overl " + s_overlay_NAME + s_overlay_ID);
      if (s_overlay_ID == "") {
	s_overlay_ID="1:10"; // wind + speed
	s_overlay_ID="6:6"; // marine
	s_overlay_ID="34:1"; // vis sat ! Web_Weather_Rasters
	s_overlay_ID="60:1"; // global ir  ! Web_Weather_Rasters ; proj bad
	s_overlay_ID="63:1"; // !!! cloud height ! Web_Weather_Rasters 
	s_overlay_ID=":31"; // TBD auto cloud height ! Web_Weather_Rasters 
	s_overlay_ID=":3"; // !!! auto ir sat ! Web_Weather_Rasters 
	s_overlay_ID=":7"; // !!! Automatic TWC RADAR ! Web_Weather_Rasters 
	s_overlay_ID=":8"; // ??? Automatic Highway Traffic ! Web_Weather_Rasters 
	s_overlay_ID=":9"; // ??? Automatic NEXRAD ! Web_Weather_Rasters 
	s_overlay_ID=":10"; // !!! Automatic Composite Temp and Clouds ! Web_Weather_Rasters 
	s_overlay_ID=":24"; // !! !!! Automatic Low Level Winds (CIMSS) ! Web_Weather_Rasters 
//	s_overlay_ID="columbo_accuw";
	s_overlay_NAME="IR SATELLITE";
      }
      FTMAP___MODULE_ID___handle.myview_id = s_overlay_ID;
      FTMAP___MODULE_ID___handle.myview = s_overlay_NAME;
      
      //////////////////////////////////////////////////////////
      // custom 1
      var customfg= new GTileLayer(new GCopyrightCollection(""),1,17);
      FTMAP___MODULE_ID___handle.customfg = customfg;
      
      customfg.myLayers=s_overlay_ID;
      customfg.myFormat='image/png';
      
      // fill myview info div
      el = _gel("GHP_MYVIEW_INFO__MODULE_ID__");
      el.innerHTML="Click to change overlay: " + s_overlay_NAME;
      
      if (! proxy) {
	customfg.myBaseURL='http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/AccuWeather_Maps.wms?';
//	customfg.myBaseURL='http://85.214.120.141/tilecache-2.01/tilecache.cgi?';

	// custom weather maps server
	// kg	customfg.myBaseURL='http://206.14.214.198/image?';

	customfg.getTileUrl=CustomGetTileUrl;
      } else {
	// customfg.myBaseURL='http://gmapsflighttracker.com/ghp/png-proxy.php?url=http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/AccuWeather_Maps.wms%3F';
	// customfg.myBaseURL='http://85.214.120.141/ghp/png-proxy.php?url=http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/AccuWeather_Maps.wms%3F';
	// customfg.myBaseURL='http://85.214.120.141/ghp/png-proxy.php?url=http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/Inforain_Maps.wms%3F';
	customfg.myBaseURL='http://85.214.120.141/ghp/png-proxy.php?url=http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/Web_Weather_Rasters.wms%3F';
	customfg.getTileUrl=CustomGetTileUrlENC;
      }
      
      // FTMAP___MODULE_ID___handle.opac = prefs.getString("opac");
      customfg.getOpacity = function() {return FTMAP___MODULE_ID___handle.opac;}
      // customfg.getOpacity = function() {return 0.2;}
      customfg.isPng = function() {return true;}
      
      
      // layer3.push( customfg );
      // var layer4=[G_NORMAL_MAP.getTileLayers()[0], customfg];
      var layer_col=[G_SATELLITE_MAP.getTileLayers()[0], customfg];
      // var layer_col = layer3;
      // layer_col.pop();
      //layer_col.push( customfg )
      
      var custommap_col = new GMapType(layer_col, G_SATELLITE_MAP.getProjection(), "MyView", G_SATELLITE_MAP);
      
      FTMAP___MODULE_ID___handle.custommap_col = custommap_col;
      
      // delete sat map type for space and add new type
      map.removeMapType(map.getMapTypes()[0]);
      map.addMapType(custommap_col);
    }

    /////////////////////////////// end wms radar support

    map.addControl(new GSmallZoomControl(),new  GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(1,1)));
    // map.addControl(new GLargeMapControl(),new  GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(1,1)));

    var mapTypesControl = new GHierarchicalMapTypeControl(true);
    // mapTypesControl.addRelationship(custommap3, custommap_vis, "Vis Sat");
    // mapTypesControl.addRelationship(custommap3, custommap_ir, "IR Clouds");
    mapTypesControl.addRelationship(custommap3, custommap_ir, "Clouds (IR)");
    // mapTypesControl.addRelationship(custommap3, custommap_1hpre, "1h Precip");

    // mapTypesControl.addRelationship(custommap3, custommap_stormtotpre, "Storm Precip");


    //
    // Show Google Earth plugin 
    //
    if (prefs.getBool("GEplugin")) {
        // google earth stuff
	var str = navigator.userAgent;
	// alert(str);
	// if (str.match("Firefox/2") && str.match("Windows")) {
	if (1) {
	    // right now it seems IE is killing the labels 
	    map.addMapType(G_SATELLITE_3D_MAP);
	    map.getEarthInstance(FTMAP___MODULE_ID___handle.getEarthInstanceCB);
	}
    }

    // mapTypesControl.addRelationship(custommap3, custommap_warn, "Test");

    // map.addControl(new GMapTypeControl(true),new  GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(1,1)));
    map.addControl(mapTypesControl,new  GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(1,1)));


    // alert("before setcenter " + startZoom + " X " + startLat);
    center = new GLatLng(startLat, startLng, true);
    map.setCenter(center, startZoom, G_SATELLITE_MAP);
    //  FTMAP___MODULE_ID___handle.center_lat = startLat;
    //  FTMAP___MODULE_ID___handle.center_lng = startLng;

    ////////////////////////////////////////////////
    // check if map selection is stored
    var i_map_t = prefs.getInt("Selected_Map_Type");
    // alert("map type " +  i_map_t);
    if (i_map_t) {
	var map_t = map.getMapTypes()[i_map_t];
	map.setMapType(map_t);
	if (map_t == FTMAP___MODULE_ID___handle.custommap4) {
	    FTMAP___MODULE_ID___handle.myview_get_and_disp_data(0);
	} else {
	    el = _gel("GHP_C_MYVIEW__MODULE_ID__");
	    el.style.display = "none";
	}
    } else {
      map.setMapType(custommap3);
    }

// for myview    map.removeMapType(map.getMapTypes()[2]);

    // change kg
    map.setMapType(custommap3);

    ////////////////// 
    // add nexrad layer
    FTMAP___MODULE_ID___handle.tilenexrad = FTMAP___MODULE_ID___handle.addNexrad(prefs);
    FTMAP___MODULE_ID___handle.NexradOverlay = new GTileLayerOverlay(FTMAP___MODULE_ID___handle.tilenexrad);
    map.addOverlay(FTMAP___MODULE_ID___handle.NexradOverlay);

    FTMAP___MODULE_ID___handle.RadarTimeout = setTimeout('FTMAP___MODULE_ID___handle.reloadit()', 1000*60*7);

    // map handling
    map.enableDoubleClickZoom();
    map.enableContinuousZoom();
    if (prefs.getBool("mousewheelzooms")) {
        map.enableScrollWheelZoom();
    }
    var xx = new GKeyboardHandler(map);


    //////////////////////////////////////////////////////////
    // apply height settings 
    var map_height = prefs.getString("map_height");
    FTMAP___MODULE_ID___handle.map_height = map_height;
    var map_id = _gel("FTMAP___MODULE_ID___map");
    // alert(map_id.style.height);
    map_id.style.height = map_height;
    // alert("post " + map_id.style.height);

    //
    // change content depending on map
    //
    GEvent.addListener(map, "maptypechanged", function() {
	var l_map = FTMAP___MODULE_ID___handle.g_map;
	var mapt = l_map.getCurrentMapType();
	// alert(mapt);

	// handle GE stuff
	if (mapt == G_SATELLITE_3D_MAP) {
	    // alert(" reco earth " + mapt);
	    var map_id = _gel("FTMAP___MODULE_ID___map");
	    // alert(map_id.style.height);

	    // show controls
	    if (0 && FTMAP___MODULE_ID___handle.map_height < 400) {
		// map_id.style.height = 0 + FTMAP___MODULE_ID___handle.map_height+ 250;
		height = 0 + Number(FTMAP___MODULE_ID___handle.map_height) + 250;
		// alert(height);
		map_id.style.height = height + "px";
		// adjust dynamic height
		//
		// _IG_AdjustIFrameHeight();
		FTMAP___MODULE_ID___handle.adjust_height();

	    }

	    // http://wdssii.nssl.noaa.gov/geotiff_new/index.html
	    var kml_3 = new GGeoXml("http://www.weatherbonk.com/weather/kml/weatherBonk_barbs.kml");
	    FTMAP___MODULE_ID___handle.kml_3 = kml_3;
	    FTMAP___MODULE_ID___handle.g_map.addOverlay(kml_3);

	    // http://wdssii.nssl.noaa.gov/geotiff_new/nws_warnings.kmz
	    // http://wdssii.nssl.noaa.gov/geotiff_new/colormaps.kmz
	    // http://wdssii.nssl.noaa.gov/realtime/METAR.kmz
	    // http://wdssii.nssl.noaa.gov/geotiff_new/spcStormLogs.kmz
	    
	    // 	    var kml_4 = new GGeoXml("http://wdssii.nssl.noaa.gov/geotiff_new/satellite_loop.kmz");
	    var kml_4 = new GGeoXml("http://wdssii.nssl.noaa.gov/geotiff_new/conus_full.kmz");
	    FTMAP___MODULE_ID___handle.kml_4 = kml_4;
	    FTMAP___MODULE_ID___handle.g_map.addOverlay(kml_4);

	    

	    if (! FTMAP___MODULE_ID___handle.g_minimsg_id ) {
	    // if (1 || ! FTMAP___MODULE_ID___handle.g_minimsg_id ) {
		//
		// display mini message
		//
		var msg = new _IG_MiniMessage(__MODULE_ID__, _gel("BOTTOM___MODULE_ID___"));
		// var msg = new _IG_MiniMessage(__MODULE_ID__);
		var n_msg = msg.createDismissibleMessage("<b><i>Experimental</i> Google Earth Plugin enabled including<br/>buildings layer so please zoom in to e.g. San Francisco; <br/>some features yet do not work properly ...</b>", FTMAP___MODULE_ID___handle.minimsg_callback);
		n_msg.style.fontSize = "100%";
		n_msg.style.backgroundColor = "#EDD052";
		FTMAP___MODULE_ID___handle.g_minimsg_id = 1;

		// _IG_AdjustIFrameHeight();
		FTMAP___MODULE_ID___handle.adjust_height();

	    } 
	} else {
	    if (FTMAP___MODULE_ID___handle.kml_3) {
		FTMAP___MODULE_ID___handle.g_map.removeOverlay(FTMAP___MODULE_ID___handle.kml_3);
		FTMAP___MODULE_ID___handle.kml_3 = null;
		FTMAP___MODULE_ID___handle.g_map.removeOverlay(FTMAP___MODULE_ID___handle.kml_4);
		FTMAP___MODULE_ID___handle.kml_4 = null;
	    }
	}
	
	if (mapt == FTMAP___MODULE_ID___handle.custommap4) {
	    FTMAP___MODULE_ID___handle.myview_get_and_disp_data(0);
            FTMAP___MODULE_ID___handle.NexradOverlay.hide();
	} else {
	    if (mapt == FTMAP___MODULE_ID___handle.custommap_stormtotpre) {
		// alert("hide nexrad ov");
		FTMAP___MODULE_ID___handle.NexradOverlay.hide();
	    } else {
		if (mapt == G_SATELLITE_3D_MAP || mapt == FTMAP___MODULE_ID___handle.custommap3 || mapt == FTMAP___MODULE_ID___handle.custommap_ir || mapt == FTMAP___MODULE_ID___handle.custommap_vis || mapt == FTMAP___MODULE_ID___handle.custommap_warn) {
	      //	if (mapt == FTMAP___MODULE_ID___handle.custommap3) {
		    // alert("map 3");
		    FTMAP___MODULE_ID___handle.NexradOverlay.show();
		} else {
		    el = _gel("GHP_C_MYVIEW__MODULE_ID__");
		    el.style.display = "none";
		    // alert("hide nexrad ov");
		    FTMAP___MODULE_ID___handle.NexradOverlay.hide();
		}
	    }
        }

	if (! FTMAP___MODULE_ID___handle.remadd || FTMAP___MODULE_ID___handle.remadd != 1) {
	    ///////////////////////
	    // save map selection
	    var arr_map_types = l_map.getMapTypes();
	    for (var i=0; i < arr_map_types.length; i++){
		if (arr_map_types[i] == mapt) {
		    FTMAP___MODULE_ID___handle.prefs.set("Selected_Map_Type", i );
		}
	    }
	}
    });

    //
    // hide radar depending on map
    //
    GEvent.addListener(map, "zoomend", function() {
	// alert("zoom");

	var l_map = FTMAP___MODULE_ID___handle.g_map;
	var mapt = l_map.getCurrentMapType();
	// alert(mapt);
	if (mapt == FTMAP___MODULE_ID___handle.custommap4) {
	    FTMAP___MODULE_ID___handle.myview_get_and_disp_data(0);
            FTMAP___MODULE_ID___handle.NexradOverlay.hide();
	} else {
	  // also change in reloadit
	  if (mapt == FTMAP___MODULE_ID___handle.custommap3 || mapt == FTMAP___MODULE_ID___handle.custommap_ir || mapt == FTMAP___MODULE_ID___handle.custommap_vis || mapt == FTMAP___MODULE_ID___handle.custommap_warn) {
            FTMAP___MODULE_ID___handle.NexradOverlay.show();
	  } else {
	    el = _gel("GHP_C_MYVIEW__MODULE_ID__");
	    el.style.display = "none";
            FTMAP___MODULE_ID___handle.NexradOverlay.hide();
	  }
        }
	
    });

    //
    // register unload handler
    //
    GEvent.addListener(map, "unload", function() {
	// alert("wow - unload");
	GUnload();
    });

    //
    // click weather
    //
    GEvent.addListener(map, "click", function(ov, point) {
	if (point) {
	    FTMAP___MODULE_ID___handle.weather4point(point);
	}
    });
    
    // let the map know about the resize
    FTMAP___MODULE_ID___handle.g_map.checkResize();

    //
    // retrieve stored values
    //
    var ds = prefs.getString("DS");
    if (ds != "") {
       var strings = new Array();
       //   zoom value
       //   location
       //   position of weather overview info
       strings = prefs.getString("DS").split(";");
       eval("var p = new GLatLng" + strings[1]);
       // alert(p);
       // alert(strings);
       // set center based on stored value

       if (! (prefs.getBool("centeronzipcode") || prefs.getBool("centerongeoloc")) ) {
	   // alert("center on store " + prefs.getBool("centeronzipcode"));
	   map.setCenter(p, parseInt(strings[0]) );
	   center = p;
       }
       // FTMAP___MODULE_ID___handle.center_par = strings[1];
       var id1 = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
       id1.style.left = strings[2]; 
       id1.style.top = strings[3]; 
       var id1 = _gel('GHP_C_FLASH__MODULE_ID__');
       if (parseInt(strings[4].replace(/px/, "")) < 25) {
	   id1.style.left = "1px";
	   // alert("1 " + parseInt(strings[4].replace(/px/, "")));
       } else {
	   id1.style.left = strings[4]; 
	   // alert("2 " + strings[4]);
       }
       id1.style.top = strings[5]; 
       FTMAP___MODULE_ID___handle.g_minimsg_id = strings[6];
       FTMAP___MODULE_ID___handle.g_stat_id = strings[7];
    }

    FTMAP___MODULE_ID___handle.font_scale = prefs.getString("font_scale");

    var l_minimsg_id = 1;
//    if (! FTMAP___MODULE_ID___handle.g_minimsg_id || FTMAP___MODULE_ID___handle.g_minimsg_id < l_minimsg_id) {
	//
	// display mini message
	//
//	var msg = new _IG_MiniMessage(__MODULE_ID__, _gel("BOTTOM___MODULE_ID___"));
	// var msg = new _IG_MiniMessage(__MODULE_ID__);
//        var n_msg = msg.createDismissibleMessage("<b>News: Hovering over weather icons shows weather details. Position of map and zoom are stored now. You can also drag the inserts (weather overview, weather station) to another location.</b>", FTMAP___MODULE_ID___handle.minimsg_callback);
//	n_msg.style.fontSize = "100%";
//	n_msg.style.backgroundColor = "#EDD052";
//	FTMAP___MODULE_ID___handle.g_minimsg_id = l_minimsg_id - 1;
//    }

    // display time of radar refresh
    if (FTMAP___MODULE_ID___handle.g_radar_upd) {
	//
	// show date of refresh
	// 
	var d = new Date();
	// alert(str);
	id = _gel("GHP_C_RADAR_UPD__MODULE_ID__");
	// date.toLocaleString
	h = d.getHours(); 
	m = d.getMinutes();
	s = d.getSeconds();
	s_time = ((h < 10) ? ('0' + h) : h)  +':'+ ((m < 10) ? ('0' + m) : m)  +':'+ ((s < 10) ? ('0' + s) : s);
	id.innerHTML = 'Radar from ' + s_time ;
	id.style.display = "block";
	id.style.fontSize = Math.round(FTMAP___MODULE_ID___handle.font_scale * 8 / 100);
	id.title = "Last radar update was at " + s_time ;
    }

    if ( (g_loc != "" || FTMAP___MODULE_ID___handle.geoip_point ) && FTMAP___MODULE_ID___handle.g_show_weather_overv) {
	// show start location
	var icon = new GIcon();
	icon.image = "http://gmapsflighttracker.com/ghp/mm_20_green.png";
	icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);
	if (FTMAP___MODULE_ID___handle.geoip_point) {
	    point = FTMAP___MODULE_ID___handle.geoip_point;
	    l_loc = "IP2GEO Location (" + FTMAP___MODULE_ID___handle.geoip_city + ")";
	} else {
	    var point = new GLatLng(startLat, startLng);
	    l_loc = "ZIP " + g_loc;
	}
	var marker = new GMarker(point, icon);
	map.addOverlay(marker);
	GEvent.addListener(marker, "click", function() {
	    alert("Geo Location for " + l_loc);
	});
    }

    //
    // handle different views
    //
    if (gadgets.views.getCurrentView()) {
	v = gadgets.views.getCurrentView().getName();
	// alert("init " + v);
	FTMAP___MODULE_ID___handle.ghp_view = v;
	if (v == "canvas") {
	    vp = gadgets.window.getViewportDimensions();
	    w = vp.width;
	    // w = $("#FTMAP___MODULE_ID___map").width();
	    w2 = w - 129;
	    // alert ("canv " + w + " " + w2);
	    $("#FTMAP___MODULE_ID___map").width(w2);
	    $("#FTMAP___MODULE_ID___map").height(600);
	    $("#FTMAP___MODULE_ID___map").css("border", "1px outset #8085AD");
	    $("#FTMAP___MODULE_ID___ad1").css("display", "inline");

	    $("#GHP_NEXRAD_INFO__MODULE_ID__").css("right", "129px");
	    $("#GHP_C_RADAR_UPD__MODULE_ID__").css("right", "131px");
	    
	    if (0) {
		// http://www.glooton.fr/hurricanes.kmz
		var kml_3 = new GGeoXml("http://www.webcams.travel/webcams.kml");
		FTMAP___MODULE_ID___handle.g_map.addOverlay(kml_3);
	    }

	    //
	    // Ads Manager
	    //
	    // channel : "MapAds", 
    
	    options = {
		maxAdsOnMap : 4,
		minZoomLevel: 6
	    };	
	    var manager = new GAdsManager(FTMAP___MODULE_ID___handle.g_map,'ca-pub-1966838941746801', options);
	    // var manager = new GAdsManager(FTMAP___MODULE_ID___handle.g_map,'ca-pub-1966838941746801');
	    // Opt in
	    manager.enable(); 

	    // event tracking
	    if (FTMAP___MODULE_ID___handle.ga_avail) {
		FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "CANVAS", g_loc);
	    }
	}
    }

    // display weather overview
    FTMAP___MODULE_ID___handle.get_weather_info(1);

    // get cams
    FTMAP___MODULE_ID___handle.cam_open = 0;
    FTMAP___MODULE_ID___handle.cam_nr = 0;
    FTMAP___MODULE_ID___handle.get_cams();


    //
    // Show traffic overlay
    //
    if (prefs.getBool("traffic")) {
	var traff_overl = new GTrafficOverlay();
	FTMAP___MODULE_ID___handle.g_map.addOverlay(traff_overl);
// 	_IG_FetchContent("http://gmapsflighttracker.com/ghp/traff.txt?zip=" + g_loc ,    function(string) {
// 	    return;
// 	});
	if (FTMAP___MODULE_ID___handle.ga_avail) {
	    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "TRAFF", g_loc);
	}
    }


    //
    // show markers of earthquakes
    //
    var eqs_min_mag = prefs.getInt("Min_Magnitude");
    if (!eqs_min_mag) {
	FTMAP___MODULE_ID___handle.eqs_min_mag = 4.0;
    } else {
	FTMAP___MODULE_ID___handle.eqs_min_mag = eqs_min_mag;
    }
    FTMAP___MODULE_ID___handle.eq_click_zoomed = 0;
    FTMAP___MODULE_ID___handle.disp_eqs();


    //
    // img overlay
    //
    // http://www.weather.gov/forecasts/graphical/sectors/conus.php?element=PoP12
    // http://www.weather.gov/forecasts/graphical/sectors/
    // http://www.hpc.ncep.noaa.gov/noaa/noaa.gif
    // http://www.hpc.ncep.noaa.gov/sfc/satsfcnps.gif
    // http://www.orbit.nesdis.noaa.gov/smcd/opdb/aviation/loops/realtime/gifs/conus_vis/21.jpg
    // http://www.orbit.nesdis.noaa.gov/smcd/opdb/aviation/realtime/CONVIS.GIF
    // http://www.orbit.nesdis.noaa.gov/smcd/opdb/aviation/realtime/CONWV.GIF
    // var pointSW = new GLatLng(20.108054,-126.914062);
    // var pointNE = new GLatLng(52.675599,-62.777344);
    //     // http://maps.google.com/?ie=UTF8&ll=52.375599,-56.777344&spn=27.634772,55.898438&z=4&om=1
    //     // http://maps.google.com/?ie=UTF8&ll=19.808054,-126.914062&spn=41.516804,55.898438&z=4&om=1
    
    //    var groundOverlay = new GGroundOverlay(	   "http://www.weather.gov/forecasts/graphical/images/conus/ApparentT2_conus.png",  		   new GLatLngBounds(pointSW, pointNE));
    //    var groundOverlay = new GGroundOverlay("http://www.hpc.ncep.noaa.gov/noaa/noaa.gif",  		   new GLatLngBounds(pointSW, pointNE));
    //    var groundOverlay = new GGroundOverlay("http://www.orbit.nesdis.noaa.gov/smcd/opdb/aviation/realtime/CONVIS.GIF",  		   new GLatLngBounds(pointSW, pointNE));
    // var groundOverlay = new GGroundOverlay("http://www.orbit.nesdis.noaa.gov/smcd/opdb/aviation/realtime/CONWV.GIF",  		   new GLatLngBounds(pointSW, pointNE));
    
    //      FTMAP___MODULE_ID___handle.g_map.addOverlay(groundOverlay);
    // FTMAP___MODULE_ID___handle.groundOverlay = groundOverlay;
    
    
    //
    // add local search
    //
    //     FTMAP___MODULE_ID___handle.g_map.addControl(new google.maps.LocalSearch());


    // http://www.google.com/uds/solutions/localsearch/adsense_gmlocalsearch.html
    // http://www.google.com/uds/solutions/localsearch/reference.html
    //    map.addControl(new google.maps.LocalSearch(  {resultList : google.maps.LocalSearch.RESULT_LIST_SUPPRESS}    ));
    // linkTarget : GSearch.LINK_TARGET_SELF  .. GSearch.LINK_TARGET_BLANK

    //
    // handle additional info
    //
    w = $("#FTMAP___MODULE_ID___map").width();
    if (w > 400) {
	$("#FTMAP___MODULE_ID___3DD").css("display", "inline");
    }

    //
    // Adjust dynamic height
    //
    FTMAP___MODULE_ID___handle.adjust_height();

//     var nav_str = navigator.userAgent.toLowerCase();
//     // alert(nav_str);
//     if (nav_str.match("chrome") || nav_str.match("safari") ) {
// 	// chrome does not like it ?!
//     	// _IG_AdjustIFrameHeight();
// 	h = parseInt(FTMAP___MODULE_ID___handle.map_height) + 13;
// 	// alert(h);
// 	gadgets.window.adjustHeight(h);
//     } else {
// 	_IG_AdjustIFrameHeight();
//     }

    // 
    //    FTMAP___MODULE_ID___handle.show_geopics();

    //
    // radar button also shows radar color mapping
    //
    // $('#amtc_0_option_3').attr("onmouseover", 'FTMAP___MODULE_ID___handle.show_nexrad_info(1);');
    // $('#amtc_0_option_3').attr("onmouseout", 'FTMAP___MODULE_ID___handle.show_nexrad_info(0);');

    //
    // show info based on IP 2 GEO
    //
    
    if (FTMAP___MODULE_ID___handle.geoip_point) {
       if (prefs.getBool("centerongeoloc")) {
	   // map.setCenter(FTMAP___MODULE_ID___handle.geoip_point, parseInt(strings[0]) );
	   // alert ("centerongeoloc " + startZoom);
	   map.setCenter(FTMAP___MODULE_ID___handle.geoip_point);
	   center = FTMAP___MODULE_ID___handle.geoip_point;
       }
    	// if (FTMAP___MODULE_ID___handle.geoip_country_code != "USaswell") {
	//    map.setCenter(FTMAP___MODULE_ID___handle.geoip_point, parseInt(strings[0]) );
	// }
	FTMAP___MODULE_ID___handle.weather4point(FTMAP___MODULE_ID___handle.geoip_point);

    }
   
    FTMAP___MODULE_ID___handle.show_flash_info();

    // recenter after map size changed
    map.setCenter(center);

    // end init

}

this.weather4point = function (point) {

    FTMAP___MODULE_ID___handle.clickpoint = point;
    
    g_woverv_id  = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
    g_woverv_id.innerHTML = '<div style="font-size: 70%; font-style: italic;">Waiting for forecast ...</div>';
    
    // http://<apicode>.api.wxbug.net/getStationsXML.aspx?ACode=<apicode>&lat=<latitude>&long=<longitude>&unittype= 
    xml_file_mod = 'http://A4343369442.api.wxbug.net/getStationsXML.aspx?acode=A4343369442&lat='+point.lat()+'&long='+point.lng();
    // xml_file_mod = 'http://A4343369442.api.wxbug.net/getCamerasXML.aspx?acode=A4343369442&lat='+point.lat()+'&long='+point.lng();
    // alert(point + " " + xml_file_mod);
    // Get stations based on GEO Loc
    _IG_FetchXmlContent(xml_file_mod, 
			function(responseXML) {
	// alert(responseXML);
	xmlDoc = responseXML;
	var itemList = xmlDoc.getElementsByTagName("station")	 ;
	if (itemList.length<1) {
	    itemList = xmlDoc.getElementsByTagName("aws:station")	 ;
	}
	stat_id = itemList.item(0).getAttribute("id");
	stat_name = itemList.item(0).getAttribute("name");
	stat_country = "";
	stat_country = itemList.item(0).getAttribute("country");
	
	var stat_ids = new Array();
	var stat_names = new Array();
	var stat_cities = new Array();
	var stat_lat = new Array();
	var stat_lng = new Array();
	var stat_zip = new Array();
	var markers = new Array();
	
	i = 0;
	// get the station list
	for (var i = 0; i < itemList.length ; i++) { 
	    // For each <aws:forecast> node, get child nodes.
	    stat_ids[i] = itemList.item(i).getAttribute("id");
	    stat_names[i] = itemList.item(i).getAttribute("name");
	    stat_cities[i] = itemList.item(i).getAttribute("city");
	    stat_lat[i] = itemList.item(i).getAttribute("latitude");
	    stat_lng[i] = itemList.item(i).getAttribute("longitude");
	    stat_zip[i] = itemList.item(i).getAttribute("zipcode");
	}
	
	g_stat_id = stat_ids[0];
	if (stat_zip[0]) {
	    g_loc = stat_zip[0];
	}
	
	// alert(g_loc + " " + g_stat_id + " "+  stat_cities[0]);
	
	FTMAP___MODULE_ID___handle.g_loc = g_loc;
	name = stat_names[0];
	FTMAP___MODULE_ID___handle.g_stat_idx = 0;
	FTMAP___MODULE_ID___handle.g_stat_country = stat_country;
	
	FTMAP___MODULE_ID___handle.stat_ids = stat_ids;
	FTMAP___MODULE_ID___handle.stat_names = stat_names;
	FTMAP___MODULE_ID___handle.stat_cities = stat_cities;
	FTMAP___MODULE_ID___handle.stat_lat = stat_lat;
	FTMAP___MODULE_ID___handle.stat_lng = stat_lng;
	FTMAP___MODULE_ID___handle.stat_zip = stat_zip;
	FTMAP___MODULE_ID___handle.markers = markers;
	
	// alert (stat_names[i] + " " +  stat_cities[i]);
	
	// map stuff
	g_map = FTMAP___MODULE_ID___handle.g_map;
	
	if (FTMAP___MODULE_ID___handle.weather_station_marker) {
	    // alert ("del old marker ");
	    g_map.removeOverlay(FTMAP___MODULE_ID___handle.weather_station_marker);
	}   

	if (FTMAP___MODULE_ID___handle.g_show_weather_overv) {
	
	    var icon = new GIcon();
	    icon.image = "http://gmapsflighttracker.com/ghp/mm_20_blue.png";
	    icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
	    icon.iconSize = new GSize(12, 20);
	    icon.shadowSize = new GSize(22, 20);
	    icon.iconAnchor = new GPoint(6, 20);
	    icon.infoWindowAnchor = new GPoint(5, 1);
	    
	    i = FTMAP___MODULE_ID___handle.g_stat_idx;
	    var point = new GLatLng(FTMAP___MODULE_ID___handle.stat_lat[i], FTMAP___MODULE_ID___handle.stat_lng[i]);
	    var marker = new GMarker(point, icon);
	    FTMAP___MODULE_ID___handle.weather_station_marker = marker;
	    FTMAP___MODULE_ID___handle.g_map.addOverlay(marker);
	    GEvent.addListener(marker, "click", function() {
		str = "Geo Location for Weather Station " + g_stat_id + " (" + FTMAP___MODULE_ID___handle.stat_names[i] + ") in " + FTMAP___MODULE_ID___handle.stat_cities[i];

		if (FTMAP___MODULE_ID___handle.click_address) {
		    str += "\n\nLocation of the click was \"" + FTMAP___MODULE_ID___handle.click_address + "\" at\n(Lat,Long): "+point+ "";
		}
		// if (FTMAP___MODULE_ID___handle.place_address) {
		//	str += " (" + FTMAP___MODULE_ID___handle.place_address + ") in " + FTMAP___MODULE_ID___handle.stat_cities[i];
		//}
		alert(str);
	    });
	}

	// FTMAP___MODULE_ID___handle.g_map.panTo(point);
	FTMAP___MODULE_ID___handle.g_small_flash_open = 1;

	FTMAP___MODULE_ID___handle.fill_flash(g_stat_id,  g_loc, name);
	
	// hide question div and show flash
	// _gel("GHP_ZIPQ__MODULE_ID__").style.display = "none";
	// FTMAP___MODULE_ID___handle.minimize_flash(2);
	
	// display weather overview
	FTMAP___MODULE_ID___handle.WeatherXml = null;
	//           FTMAP___MODULE_ID___handle.g_stat_id = null;
	FTMAP___MODULE_ID___handle.get_weather_info(1);
	//           FTMAP___MODULE_ID___handle.show_flash_info();
	
	// get cams
	FTMAP___MODULE_ID___handle.cam_open = 0;
	FTMAP___MODULE_ID___handle.cam_nr = 0;
	FTMAP___MODULE_ID___handle.get_cams();
	
	//_IG_FetchContent("http://gmapsflighttracker.com/ghp/clickweather.txt?loc=" + g_loc + " " + name + " " + FTMAP___MODULE_ID___handle.stat_cities[i] ,    function(string) {
	//return;
	// });
	
	
    });
    
    //
    // retrieve the click location
    // 
    if (! click_geocoder) {
	var click_geocoder = new GClientGeocoder();
    }
    click_geocoder.getLocations(point, function(addresses) {
	if(addresses.Status.code != 200) {
	    // alert("reverse geocoder failed to find an address for " + latlng.toUrlValue());
	    // no data
	} else { 
	    var result = addresses.Placemark[0];
	    // alert ("we got " + point + " " + result.address);
	    FTMAP___MODULE_ID___handle.click_address = result.address;
	}
    });

}

this.check_ip_loc = function () {
    
    // US IP loc
    if (FTMAP___MODULE_ID___handle.check_IP_loc) {
	// alert(geoip_city() + " " + geoip_country_name() + " " + geoip_country_code());
	if (geoip_city && geoip_country_code() == "US") {
	    // alert(geoip_city() + " " + geoip_country_name() + " " + geoip_country_code());
	    str=geoip_city()+ "," + geoip_region();
	    
// 	    _IG_FetchContent("http://gmapsflighttracker.com/ghp/geo_IP.txt?zip=" + encodeURIComponent(str) ,    function(string) {
// 		return;
// 	    });
	    if (FTMAP___MODULE_ID___handle.ga_avail) {
		FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEOIP2", str);
	    }
	} else {
	    // setTimeout('FTMAP___MODULE_ID___handle.check_ip_loc()', 1000*10);
	}

	// alert(document.body.innerHTML);
// 	pos=document.body.innerHTML.search(/geoip_country_code/);
// 	if (pos > 0) {
// 	    pos2=document.body.innerHTML.substr(pos+300).search(/geoip_country_code/);
// 	    if (pos2 > 0) {
// 		str=document.body.innerHTML.substr(pos+300+pos2);
// 		alert(pos + " " + pos2 + " " + str) ;
// 	    }
// 	}

    }
}

// recenter after map height change
// this.recenter = function () {
//     if (FTMAP___MODULE_ID___handle.center_par) {
// 	FTMAP___MODULE_ID___handle.g_map.checkResize();
// 	// alert (FTMAP___MODULE_ID___handle.center_par);
// 	eval("var p = new GLatLng" + FTMAP___MODULE_ID___handle.center_par);
// 	// alert(p);
// 	// FTMAP___MODULE_ID___handle.g_map.setCenter(p);
// 	FTMAP___MODULE_ID___handle.g_map.panTo(p);
// 	// console.log("paned to " +p);
//     }
// }

// helpers
this.hide_goverlay = function (click) {
    if (FTMAP___MODULE_ID___handle.groundOverlay) FTMAP___MODULE_ID___handle.groundOverlay.hide();
}

this.show_goverlay = function (click) {
    if (FTMAP___MODULE_ID___handle.groundOverlay) FTMAP___MODULE_ID___handle.groundOverlay.show();
}


this.adjust_height = function () {
    //
    // Adjust dynamic height
    //
    var nav_str = navigator.userAgent.toLowerCase();
    // alert(nav_str);
    if (nav_str.match("chrome") || nav_str.match("safari") ) {
	// chrome does not like it ?!
    	// _IG_AdjustIFrameHeight();
	h = parseInt(FTMAP___MODULE_ID___handle.map_height) + 13;
	// alert(h);
	gadgets.window.adjustHeight(h);
    } else {
	// _IG_AdjustIFrameHeight();
	gadgets.window.adjustHeight();
    }
}

this.myview_get_and_disp_data = function (click) {

    // show div
    el = _gel("GHP_C_MYVIEW__MODULE_ID__");
    el.style.display = "block";
    el = _gel("GHP_MYVIEW_INFO__MODULE_ID__");
    el.style.display = "block";

    if( ! click) return;

    if (FTMAP___MODULE_ID___handle.myview_list) {
	FTMAP___MODULE_ID___handle.fill_pulldown();
	return;
    }

    var xml_file ='http://gmapsflighttracker.com/ghp/wms-info/LIST';
    var sep = (-1 < xml_file.indexOf("?")) ? "&" : "?"	;
    xml_file_mod = xml_file + sep + "__=" + encodeURIComponent((new Date()).getTime());

    // get data
     _IG_FetchContent(xml_file_mod, 
          function(responseText) {

	 // alert(responseText);

	 // save data
	 FTMAP___MODULE_ID___handle.myview_list = responseText;

	 // fill pulldown with data
         FTMAP___MODULE_ID___handle.fill_pulldown();

     })

}

// fill pulldown with data
this.fill_pulldown = function () {

    var responseText = FTMAP___MODULE_ID___handle.myview_list;
    
    // create select and fill 
    eli = _gel("GHP_MYVIEW_INFO__MODULE_ID__");
    eli.innerHTML = "Please select your view below:";
    
    el = _gel("pres_list__MODULE_ID__");
    el.style.display = "block";
    
    fl_arr = responseText.split("\n");
    var options = "";
    if (el) {
	for (var i=0; i<fl_arr.length; i++){
	    // if (i < 3) alert(fl_arr[i]);
	    el.options[i] = new Option (fl_arr[i],fl_arr[i]);
	}
	el.style.display = "block";
    }

}

// get selection and implement view
this.pulldown_callback = function (select) {
    
    var el = _gel('pres_list__MODULE_ID__');
    if (el) {
	var view = el.options[el.options.selectedIndex].value;
    }
    // alert ("pulldown_callback" + el + "  " + view);
    disp_view = view.replace(/ \(.*/, "");
    view = view.replace(/.*\(/, "");
    view = view.replace(/\).*/, "");
		    
    // alert(view);

    ///////////////////////////////////////////
    // delete pulldown for IE
    el = _gel("pres_list__MODULE_ID__");
    el.style.display = "none";
    for (var i=el.options.length; i >= 0; --i){
	el.remove(i);
    }

    eli = _gel("GHP_MYVIEW_INFO__MODULE_ID__");
    eli.innerHTML = disp_view;

    ///////////////////////////////////////////
    // refresh map

    var customfg = FTMAP___MODULE_ID___handle.customfg;
    customfg.myLayers=view;

    map = FTMAP___MODULE_ID___handle.g_map;
    map.removeMapType(map.getMapTypes()[3]);
    map.addMapType(FTMAP___MODULE_ID___handle.custommap4);
    map.setMapType(map.getMapTypes()[3]);

    ///////////////////////////////////////////
    // log configuration
    if (0) {
    
	var str = encodeURIComponent(view + "__" + disp_view);
	var xml_file ='http://gmapsflighttracker.com/ghp/wms-info/EMTPY_LIST?'+str;
	xml_file_mod = xml_file;
	
	// get data
	_IG_FetchContent(xml_file_mod, 
			 function(responseText) {
	    
	    // alert(responseText);
	    
	    // do nothing
	    
	})
    }    // log

    ///////////////////////////////////////////
    // save configuration
    // s_view = view;
    // var s_disp_view = encodeURIComponent(disp_view);
    // alert("before store " + s_view + " " + s_disp_view);

    // prefs.set("zones", zones.join(";");
    // and do
    // var zones = prefs.getString("zones").split(";")
    // when you want to get it out again 

    s_view = view + ";" +  disp_view;
    FTMAP___MODULE_ID___handle.prefs.set("XOverlay_ID", s_view);
    // FTMAP___MODULE_ID___handle.prefs.set("XOverlay_NAME", s_disp_view);

    FTMAP___MODULE_ID___handle.myview_id = view;
    FTMAP___MODULE_ID___handle.myview = disp_view;


    // End INIT

}

this.addNexrad = function (prefs) {

    /////////////////////////////// 
    // add wms radar support 
    
    var tilenexrad= new GTileLayer(new GCopyrightCollection(""),1,17);
    tilenexrad.myLayers='nexrad-n0r';
    // tilenexrad.myLayers='goes_conus_vis';
    tilenexrad.myFormat='image/png';
    tilenexrad.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?&CODE='+FTMAP___MODULE_ID___handle.wmsupd;
    // tilenexrad.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_vis.cgi?&CODE='+FTMAP___MODULE_ID___handle.wmsupd;
    FTMAP___MODULE_ID___handle.wmsupd++;
    if (0) {
	// old
	tilenexrad.getTileUrl=CustomGetTileUrl;
    } else {
	// new based on suggestion 
	tilenexrad.getTileUrl = function(tile,zoom) {
  return "http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0r-900913/"
  + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime();
	};
    }
    // tilenexrad.myBaseURL='http://gmapsflighttracker.com/ghp/png-proxy.php?url=http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi%3F';
    FTMAP___MODULE_ID___handle.opac = prefs.getString("opac");
    // FTMAP___MODULE_ID___handle.opac = 0.6;
    tilenexrad.getOpacity = function() {return FTMAP___MODULE_ID___handle.opac;}
    // tilenexrad.getOpacity = FTMAP___MODULE_ID___handle.getopac;
    tilenexrad.isPng = function() {return true;}
   
    return (tilenexrad);

}

this.reloadit = function () {
  map = FTMAP___MODULE_ID___handle.g_map;
  // alert ("xxxx " + map);

  if (FTMAP___MODULE_ID___handle.RadarTimeout != null) {
    clearTimeout(FTMAP___MODULE_ID___handle.RadarTimeout);
  }

  if (map) {
    if (FTMAP___MODULE_ID___handle.NexradOverlay != null) {
      // alert("remove" + FTMAP___MODULE_ID___handle.NexradOverlay);
        map.removeOverlay(FTMAP___MODULE_ID___handle.NexradOverlay);
    }
    FTMAP___MODULE_ID___handle.NexradOverlay = null;
    FTMAP___MODULE_ID___handle.tilenexrad = null;

    FTMAP___MODULE_ID___handle.tilenexrad = FTMAP___MODULE_ID___handle.addNexrad(FTMAP___MODULE_ID___handle.prefs);
    FTMAP___MODULE_ID___handle.NexradOverlay = new GTileLayerOverlay(FTMAP___MODULE_ID___handle.tilenexrad);
    map.addOverlay(FTMAP___MODULE_ID___handle.NexradOverlay);

    // display time of radar refresh
    if (FTMAP___MODULE_ID___handle.g_radar_upd) {
	//
	// show date of refresh
	// 
	var d = new Date();
	// alert(str);
	id = _gel("GHP_C_RADAR_UPD__MODULE_ID__");
	id.innerHTML = 'Radar from ' + d.getHours() +':'+ d.getMinutes() +':'+ d.getSeconds();
	id.style.display = "block";
	id.style.fontSize = Math.round(FTMAP___MODULE_ID___handle.font_scale * 8 / 100);
	id.title = "Last Radar update was at " + d.getHours() +':'+ d.getMinutes() +':'+ d.getSeconds() ;
    }

    var mapt = map.getCurrentMapType();
    if (mapt == FTMAP___MODULE_ID___handle.custommap3 || mapt == FTMAP___MODULE_ID___handle.custommap_ir || mapt == FTMAP___MODULE_ID___handle.custommap_vis || mapt == FTMAP___MODULE_ID___handle.custommap_warn) {
      FTMAP___MODULE_ID___handle.NexradOverlay.show();
    } else {
      FTMAP___MODULE_ID___handle.NexradOverlay.hide();
    }

    FTMAP___MODULE_ID___handle.RadarTimeout = setTimeout('FTMAP___MODULE_ID___handle.reloadit()', 1000*60*7);

    // store values
    FTMAP___MODULE_ID___handle.store_values();

  }

}


var g_mod_id = "__MODULE_ID__";

this.show_news = function (news_str) {

  var el = _gel('news__MODULE_ID__');
  if (news_str.search("eval") > 0) {
    // alert (string);
    eval(news_str);
  } else {
    if (el) {
      el.innerHTML = news_str;
    }
  }

}

this.get_and_show_news = function () {

    var xml_file = 'http://gmapsflighttracker.com/ghp/precip-news.php';
    var sep = (-1 < xml_file.indexOf("?")) ? "&" : "?"	;
    xml_file_mod = xml_file + sep + 'v=1.2';
    // xml_file_mod = xml_file;

    // get data
    _IG_FetchContent(xml_file_mod, 
         function(string) {
		       if (string != "") 
			 FTMAP___MODULE_ID___handle.show_news(string);
 		     })
}

this.close_ghp_message = function () {
  if (g_msg_id) {
    g_msg_id.style.display = "none";
  }
  g_ghp_message_open = 0;

  if (FTMAP___MODULE_ID___handle.g_flash_shown) {
      var flash_w  = _gel('GHP_C_FLASH__MODULE_ID__');
      flash_w.style.display = "block";
  }

}

///////////////////////////////////
// callback when closing the minimessage
//
this.minimsg_callback = function () {
    FTMAP___MODULE_ID___handle.g_minimsg_id++;
    FTMAP___MODULE_ID___handle.store_values();
    // alert( FTMAP___MODULE_ID___handle.g_minimsg_id);
    //_IG_AdjustIFrameHeight();
    FTMAP___MODULE_ID___handle.adjust_height();
}

///////////////////////////////////
// store settings
//   zoom value
//   location
//   position of weather overview info
//   position of flash weather info
//   nr of last minimessage

this.store_values = function () {
   var l_map = FTMAP___MODULE_ID___handle.g_map;
   var strings = new Array();
   strings[0] = l_map.getZoom() 
   strings[1] = l_map.getCenter(); 

   // pos of weather overview
   var id1 = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
   strings[2] = id1.style.left 
   strings[3] = id1.style.top;

   // pos of flash
   var id1 = _gel('GHP_C_FLASH__MODULE_ID__');
   strings[4] = id1.style.left 
   strings[5] = id1.style.top;
   // alert (strings);

   // last minimsg
   strings[6] = FTMAP___MODULE_ID___handle.g_minimsg_id;

   // selected stat id
   strings[7] = FTMAP___MODULE_ID___handle.g_stat_id;

   // alert(string);
   FTMAP___MODULE_ID___handle.prefs.set("DS", strings.join(";"));
}

this.show_big_flash = function () {
    var flash_w  = _gel('GHP_C_FLASH__MODULE_ID__');
    flash_w.style.display = "none";

    var flash_w  = _gel('GHP_C_BIGFLASH__MODULE_ID__');
    flash_w.style.display = "block";
    // var flash_w  = _gel('GHP_C_BIGFLASHCLOSE__MODULE_ID__');
    // flash_w.style.display = "block";
}

this.close_bigflash = function () {
    var flash_w  = _gel('GHP_C_BIGFLASH__MODULE_ID__');
    flash_w.style.display = "none";
    var flash_w  = _gel('GHP_C_BIGFLASHCLOSE__MODULE_ID__');
    flash_w.style.display = "none";

    var flash_w  = _gel('GHP_C_FLASH__MODULE_ID__');
    flash_w.style.display = "block";
}


var g_ghp_message_open = 0;
var g_msg_id = 0;
var g_stat_id = "";
var g_flash_shown = 0;

//for forecast
var title= new Array(3) ;
var shortTitle= new Array(3);
var image= new Array(3);
var toolTip= new Array(3);
var highlo= new Array(3);
var timeOfForecast;

// from http://ext.weatherbug.com/livegadget/GetXMLCommand/getcommand.aspx
// var forecastUrl;
// var _flashLoc ="<OBJECT classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,79,0' WIDTH='90' HEIGHT='90' ID='WxSticker_90x90' ALIGN='middle'><PARAM NAME='movie' VALUE='http://ext.weatherbug.com/LiveGadget/Images/WxSticker_90x901.swf'><PARAM NAME='FlashVars' VALUE='&x=x&ISAPIWX=http://isapi60.weatherbug.com/WxDataIsapi/WxDataIsapi.cgi&StationID=" ;
// var _flashLoc2 = "&StationId=";
// var _flashLoc3 = "&Units=0&interval=30&bgColor=0xF5F9F3&x=x&'><PARAM NAME='quality' VALUE=high><PARAM NAME='bgcolor' VALUE=#FFFFFF><EMBED src='http://ext.weatherbug.com/LiveGadget/Images/WxSticker_90x901.swf' FlashVars='&x=x&ISAPIWX=http://isapi60.weatherbug.com/WxDataIsapi/WxDataIsapi.cgi&StationID=";
// var _flashLoc4 = "&StationId=";
// var _flashLoc5 = "&Units=0&interval=30&bgColor=0xF5F9F3&x=x&' quality='high' bgcolor='#FFFFFF' NAME='WxSticker_90x90' ALIGN='middle' WIDTH='90' HEIGHT='90' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'></EMBED></OBJECT>";


var forecastUrl;
var _flashLoc ="<OBJECT classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,79,0' WIDTH='90' HEIGHT='90' ID='WxSticker_90x90' ALIGN='middle'><PARAM NAME='movie' VALUE='http://ext.weatherbug.com/LiveGadget/Images/WxSticker_90x901.swf'><PARAM NAME='FlashVars' VALUE='&x=x&ISAPIWX=http://weather.weatherbug.com/data/obsdatasvc.aspx?stat=" ;
var _flashLoc2 = "&StationId=";
var _flashLoc3 = "&units=0&interval=30&bgColor=0xF5F9F3&x=x&'><PARAM NAME='quality' VALUE=high><PARAM NAME='bgcolor' VALUE=#FFFFFF><EMBED src='http://ext.weatherbug.com/LiveGadget/Images/WxSticker_90x901.swf' FlashVars='&x=x&ISAPIWX=http://weather.weatherbug.com/data/obsdatasvc.aspx?stat=";
var _flashLoc4 = "&StationId=";
var _flashLoc5 = "&Units=0&interval=30&bgColor=0xF5F9F3&x=x&' quality='high' bgcolor='#FFFFFF' NAME='WxSticker_90x90' ALIGN='middle' WIDTH='90' HEIGHT='90' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'></EMBED></OBJECT>";


//
// show flash weather station info
//
// mode = 1: show only first station

this.show_flash_info = function () {

    if (g_loc == "") {
       return;
    }
    // alert (g_loc);

    if (! FTMAP___MODULE_ID___handle.g_show_station) {
	return;
    }
    // alert("flash ..." + FTMAP___MODULE_ID___handle.g_show_station);

    g_loc = FTMAP___MODULE_ID___handle.g_loc;
    l_stat_id = FTMAP___MODULE_ID___handle.g_stat_id;
    if (FTMAP___MODULE_ID___handle.stat_ids) {
	// alert ("reuse ...");
	if (l_stat_id) {
	    name = FTMAP___MODULE_ID___handle.stat_names[FTMAP___MODULE_ID___handle.g_stat_idx];
	    FTMAP___MODULE_ID___handle.fill_flash(l_stat_id,  g_loc, name);
	} else {
	    FTMAP___MODULE_ID___handle.fill_flash(FTMAP___MODULE_ID___handle.stat_ids[0],  g_loc, FTMAP___MODULE_ID___handle.stat_names[0]);
	}
    }

    // alert("after checks");

    FTMAP___MODULE_ID___handle.g_flash_shown = 1;
    FTMAP___MODULE_ID___handle.g_small_flash_open = 1;

    var xml_file ='http://A4343369442.api.wxbug.net/getStations.aspx?acode=A4343369442&zipcode='+ g_loc;
    // var sep = (-1 < xml_file.indexOf("?")) ? "&" : "?"	;
    // xml_file_mod = xml_file + sep + "__=" + encodeURIComponent((new Date()).getTime());
    xml_file_mod = xml_file;

    // get data
     _IG_FetchXmlContent(xml_file_mod, 
          function(responseXML) {

	 var xmlDoc = responseXML;
	 //    alert(xmlDoc);
	 
	 // check xml parsing
	 //     _IG_FetchXmlContent(xml_file_mod, 
	 //     s_xml = responseXML;
	 // alert (s_xml.getElementsByTagName("station"));
	 // s_xml = s_xml.replace(/aws:/g, "aws");
	 // alert (s_xml);
	 //     var items = s_xml.getElementsByTagName("station");
	 //     alert (items.length + items[0].getAttribute("name"));
	 
	 var itemList = xmlDoc.getElementsByTagName("station")	 ;
	 if (itemList.length<1) {
	     itemList = xmlDoc.getElementsByTagName("aws:station")	 ;
	 }
	 var stat_ids = new Array();
	 var stat_names = new Array();
	 var stat_cities = new Array();
	 var stat_lat = new Array();
	 var stat_lng = new Array();
	 var stat_zip = new Array();
	 var markers = new Array();

	 // map stuff
	 g_map = FTMAP___MODULE_ID___handle.g_map;
	 var icon = new GIcon();
	 icon.image = "http://gmapsflighttracker.com/ghp/mm_20_blue.png";
	 icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
	 icon.iconSize = new GSize(12, 20);
	 icon.shadowSize = new GSize(22, 20);
	 icon.iconAnchor = new GPoint(6, 20);
	 icon.infoWindowAnchor = new GPoint(5, 1);

	 g_stat_id = "-1"; var name = "";
	 if (FTMAP___MODULE_ID___handle.g_stat_id != "") {
	     g_stat_id = FTMAP___MODULE_ID___handle.g_stat_id;
	 }
	 // get the station list
	 for (var i = 0; i < itemList.length ; i++) { 
	     // For each <aws:forecast> node, get child nodes.
	     stat_ids[i] = itemList.item(i).getAttribute("id");
	     stat_names[i] = itemList.item(i).getAttribute("name");
	     if (stat_ids[i] == g_stat_id) {
		 name = stat_names[i];
		 FTMAP___MODULE_ID___handle.g_stat_idx = i;
	     }
	     stat_cities[i] = itemList.item(i).getAttribute("city");
	     stat_lat[i] = itemList.item(i).getAttribute("latitude");
	     stat_lng[i] = itemList.item(i).getAttribute("longitude");
	     stat_zip[i] = itemList.item(i).getAttribute("zipcode");
	     if (i < 2) {
		 // alert (cam_ids + " " + name);
	     }
	     // show marker for station
// 	     var point = new GLatLng(stat_lat[i], stat_lng[i]);
// 	     var stat = stat_names[i];
// 	     var stat_id = stat_ids[i];
// 	     var html = 'Click to select new<br/>Weatherstation:<br/>' + stat + '<br/>Zip: ' + itemList.item(i).getAttribute("zipcode");
// 	     FTMAP___MODULE_ID___handle.createStationMarker(g_map, point, icon, stat, html, stat_id);

	 }
	 if (name == "") {
	     g_stat_id = stat_ids[0];
	     name = stat_names[0];
	     FTMAP___MODULE_ID___handle.g_stat_idx = 0;
	 }

	 FTMAP___MODULE_ID___handle.stat_ids = stat_ids;
	 FTMAP___MODULE_ID___handle.stat_names = stat_names;
	 FTMAP___MODULE_ID___handle.stat_cities = stat_cities;
	 FTMAP___MODULE_ID___handle.stat_lat = stat_lat;
	 FTMAP___MODULE_ID___handle.stat_lng = stat_lng;
	 FTMAP___MODULE_ID___handle.stat_zip = stat_zip;
	 FTMAP___MODULE_ID___handle.markers = markers;

	 // create a marker to show the station location
	 i = FTMAP___MODULE_ID___handle.g_stat_idx;
	 var point = new GLatLng(FTMAP___MODULE_ID___handle.stat_lat[i], FTMAP___MODULE_ID___handle.stat_lng[i]);
	 var marker = new GMarker(point, icon);
	 FTMAP___MODULE_ID___handle.weather_station_marker = marker;
	 FTMAP___MODULE_ID___handle.g_map.addOverlay(marker);
	 GEvent.addListener(marker, "click", function() {
	     str = "Geo Location for Weather Station " + g_stat_id + " (" + FTMAP___MODULE_ID___handle.stat_names[i] + ") in " + FTMAP___MODULE_ID___handle.stat_cities[i];
	     if (FTMAP___MODULE_ID___handle.place_address) {
		 str += " (" + FTMAP___MODULE_ID___handle.place_address + ") in "  + FTMAP___MODULE_ID___handle.stat_cities[i];
	     }
	     alert(str);
	 });

	 // FTMAP___MODULE_ID___handle.g_map.panTo(point);

	 FTMAP___MODULE_ID___handle.fill_flash(g_stat_id,  g_loc, name);

  		     })

}


//
// begin: show flash info
//
this.fill_flash = function (g_stat_id,  g_loc, name) {

    if (!FTMAP___MODULE_ID___handle.g_show_station) return;

    var stationid = g_stat_id;
    var zipcode = g_loc;
    // alert("xx " + name);
    if (name.length > 20) {
	name_disp = name.substr(0,15) + ".";
    } else {
	name_disp = name;
    }
    // html_flash  = '<img id="GHP_OPCLOSE__MODULE_ID__" title="Minimize weather station" src="http://gmuswr.googlecode.com/svn/trunk/menu-closed.gif" onClick="javascript: FTMAP___MODULE_ID___handle.minimize_flash();"><div id="GHP_C_SMALLFLASH__MODULE_ID__" align="center"  style="display: inline; margin-left: 1px;  margin-top: 0px; font-size: 8px;"><a title="Show large weather info from ' + name + '" href="javascript:FTMAP___MODULE_ID___handle.show_big_flash();">' + name_disp + '</a> <a style="margin-left: 1px;" title="Display weatherstations on the map. Select a new weatherstation by clicking on the weatherstation icon." href="javascript:FTMAP___MODULE_ID___handle.show_all_wstations();"><i>(Chg)</i></a></div><div id="GHP_C_SMALLFLASH2__MODULE_ID__">';
    html_flash  = '<img id="GHP_OPCLOSE__MODULE_ID__" title="Minimize weather station" src="http://gmuswr.googlecode.com/svn/trunk/menu-closed.gif" onClick="javascript: FTMAP___MODULE_ID___handle.minimize_flash();"><div id="GHP_C_SMALLFLASH__MODULE_ID__" align="center"  style="display: inline; margin-left: 1px;  margin-top: 0px; font-size: 8px; background-color: white;">' + name_disp + ' <a style="margin-left: 1px;" title="Display weatherstations on the map. Select a new weatherstation by clicking on the weatherstation icon." href="javascript:FTMAP___MODULE_ID___handle.show_all_wstations();"><i>(Chg)</i></a></div><div id="GHP_C_SMALLFLASH2__MODULE_ID__">';
    // html_flash += _flashLoc+stationid+"&zip="+zipcode+_flashLoc3+stationid+"&zip="+zipcode+_flashLoc5;
    t = new Date().getTime();
    html_flash += '<iframe scrolling="no" src="http://weather.weatherbug.com/desktop-weather/web-widgets/getSticker.html?ZCode=Z5854&Size=125x125&StationID='+stationid+'&units=0&Version=2&t='+t+'" width="108" height="70" frameborder="0" style="margin-top: -3px;"></iframe>';
    html_flash += '</div><div id="GHP_C_SMALLFLASHFOOT__MODULE_ID__" align="right" style="z-index: 480; margin-top: -1px; font-size: 7px;">(Source: <a href="http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ g_loc +'" target="_new">WeatherBug</a>)</div>';
    
    var flash_w  = _gel('GHP_C_FLASH__MODULE_ID__');
    flash_w.style.display = "block";
    flash_w.innerHTML = html_flash;
    
    // BIG FLASH
    
    var flash_w  = _gel('GHP_C_BIGFLASH__MODULE_ID__');
    flash_w.style.display = "none";
    flash_w.innerHTML = '<div style="display: inline; margin-left: 100px; float: left;"><a style="font-size: 9px; background-color: orange;" href="javascript:FTMAP___MODULE_ID___handle.close_bigflash();">Close</a></div><div id="GHP_C_BIGFLASH_C__MODULE_ID__"><embed width="250" height="200" flashvars="x=x&ISAPI=http://weather.weatherbug.com/data/obsdatasvc.aspx?stat=' + g_stat_id + '&units=0&interval=30 wmode="transparent" quality="high" bgcolor="transparent" name="WindVane" id="WindVane" src="http://weather.weatherbug.com/images/Common/WindVane.swf" type="application/x-shockwave-flash"/></div>';
    
    //
    // end: show flash info
    //
    
    // minimize flash
    var prefs = FTMAP___MODULE_ID___handle.prefs;
    var open = prefs.getInt ("Flash_Open");
    // kg alert (open);
    // 2 == explicitly closed
    if (open == 2) {
	FTMAP___MODULE_ID___handle.minimize_flash();
    }
    
}

//
// show tooltip info
//

this.showTooltip = function (marker, e) {
    tooltip = _gel("TT__MODULE_ID__");
    tooltip.innerHTML = marker.tooltip;
    // map = FTMAP___MODULE_ID___handle.g_map;
    // var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
    // var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
    // var sw = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(map.getBounds().getSouthWest(), map.getZoom()));
    var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
    // alert(point + offset + map.getBounds().getSouthWest + sw);
    // var anchor=marker.getIcon().iconAnchor;
    // var width=marker.getIcon().iconSize.width;
    // var height=tooltip.clientHeight;
    // var height = 50;
    // var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
    // var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x, offset.y - point.y -anchor.y - height)); 
    // alert(pos);
    // pos.apply(tooltip);
    tooltip.style.visibility="visible";
    tooltip.style.display="block";
    tooltip.style.left="1px";
    tooltip.style.top="76px";
    // offset = null;
}

//
// create a station marker and prepare the tooltip info
//

this.createStationMarker = function (g_map, point, icon, name, html, stat_id) {

    var marker = new GMarker(point, icon);
    g_map.addOverlay(marker);
    GEvent.addListener(marker, "click", function() {
	// alert(name);
	FTMAP___MODULE_ID___handle.fill_flash(stat_id,  FTMAP___MODULE_ID___handle.g_loc, name);
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	FTMAP___MODULE_ID___handle.g_stat_id = stat_id;
	tooltip.style.display="none";
	for (var i = 0; i < FTMAP___MODULE_ID___handle.stat_ids.length ; i++) { 
	    g_map.removeOverlay(FTMAP___MODULE_ID___handle.markers[i]);
	    if (FTMAP___MODULE_ID___handle.stat_ids[i] == stat_id) {
		FTMAP___MODULE_ID___handle.g_stat_idx = i;
		// alert(i);
	    }
	}
	if (FTMAP___MODULE_ID___handle.weather_station_marker) {
	    g_map.removeOverlay(FTMAP___MODULE_ID___handle.weather_station_marker);
	}
	i = FTMAP___MODULE_ID___handle.g_stat_idx;
	var point = new GLatLng(FTMAP___MODULE_ID___handle.stat_lat[i], FTMAP___MODULE_ID___handle.stat_lng[i]);
	var icon = new GIcon();
	icon.image = "http://gmapsflighttracker.com/ghp/mm_20_blue.png";
	icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
	    alert("Geo Location for Weather Station " + stat_id + " (" + FTMAP___MODULE_ID___handle.stat_names[i] + ")");
	});
	FTMAP___MODULE_ID___handle.weather_station_marker = marker;
	FTMAP___MODULE_ID___handle.g_map.addOverlay(marker);

    });
    marker.tooltip = '<div class="tooltip">'+name+'</div>';
    marker.tooltip = html;
    GEvent.addListener(marker,"mouseover", function(e) {
	FTMAP___MODULE_ID___handle.showTooltip(marker, e);
	// FTMAP___MODULE_ID___handle.minimize_flash(1);
    });        
    GEvent.addListener(marker,"mouseout", function() {
	tooltip.style.visibility="hidden";
	tooltip.innerHTML = "";
	// FTMAP___MODULE_ID___handle.minimize_flash(2);
	// tooltip.style.display="none";
    });        
    return marker;
}


//
// show all weather stations
//

this.show_all_wstations = function () {

    // hide flash
    FTMAP___MODULE_ID___handle.minimize_flash(1);
    
    // map stuff
    g_map = FTMAP___MODULE_ID___handle.g_map;
    var icon = new GIcon();
    icon.image = "http://gmapsflighttracker.com/ghp/mm_20_red.png";
    icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
    icon.iconSize = new GSize(12, 20);
    icon.shadowSize = new GSize(22, 20);
    icon.iconAnchor = new GPoint(6, 20);
    icon.infoWindowAnchor = new GPoint(5, 1);
    
    for (var i = 0; i < FTMAP___MODULE_ID___handle.stat_ids.length ; i++) { 
	// show marker for station
	var point = new GLatLng(FTMAP___MODULE_ID___handle.stat_lat[i], FTMAP___MODULE_ID___handle.stat_lng[i]);
	var stat = FTMAP___MODULE_ID___handle.stat_names[i];
	var stat_id = FTMAP___MODULE_ID___handle.stat_ids[i];
	var pic = "";
	if (FTMAP___MODULE_ID___handle.cam_ids_assoc && FTMAP___MODULE_ID___handle.cam_ids_assoc[stat_id]) {
	    // alert(stat_id);
	    pic = '<br/>Cam: <img style="vertical-align: text-top;" src="http://wwc.instacam.com/instacamimg/'+stat_id+'/'+stat_id+'_s.jpg" width="50" border="1">';
	}
	var city = FTMAP___MODULE_ID___handle.stat_cities[i];
	var zip = FTMAP___MODULE_ID___handle.stat_zip[i];
	var html = 'Click to select new<br/>Weatherstation:<br/>' + stat + '<br/>City: '+city+'<br/>Zip: ' + zip + pic;
	FTMAP___MODULE_ID___handle.markers[i] = FTMAP___MODULE_ID___handle.createStationMarker(g_map, point, icon, stat, html, stat_id);
    }
    g_map.panTo(new GLatLng(FTMAP___MODULE_ID___handle.stat_lat[0], FTMAP___MODULE_ID___handle.stat_lng[0]));

}

// 1 = onmouse over
// 2 = onmouse out

this.minimize_flash = function (force) {

  var id1  = _gel('GHP_C_SMALLFLASH__MODULE_ID__');
  var id2  = _gel('GHP_C_SMALLFLASH2__MODULE_ID__');
  var id3  = _gel('GHP_C_SMALLFLASHFOOT__MODULE_ID__');
  var idopclose  = _gel('GHP_OPCLOSE__MODULE_ID__');

//    alert ("out");

  if (force == 1 || force == 2) { 
    var id1 = _gel('GHP_C_FLASH__MODULE_ID__');
    if (force == 1 && FTMAP___MODULE_ID___handle.g_small_flash_open == 1) {
	//      alert ("ret " + id1.style.left + " " +  force );
	if (id1.style.left != "-500px") {
	    FTMAP___MODULE_ID___handle.flash_old_left = id1.style.left;
	}
	id1.style.left = "-500px";
	return
    }
    if (force == 2 && FTMAP___MODULE_ID___handle.g_small_flash_open == 1) {
      //    alert ("ret " + id1.style.left + " " +  force );
      id1.style.left = FTMAP___MODULE_ID___handle.flash_old_left;
      return
    }
    return
  }

  if (FTMAP___MODULE_ID___handle.g_small_flash_open) {
      id1.style.display = "none";
      id2.style.display = "none";
      id3.style.display = "none";
      if (force != 1) {
        // idopclose.src = "http://gmapsflighttracker.com/ghp/menu-opened.gif";
        idopclose.src = "http://gmuswr.googlecode.com/svn/trunk/menu-opened.gif";
        idopclose.title= "Show weather station";
        FTMAP___MODULE_ID___handle.g_small_flash_open = 0;
        FTMAP___MODULE_ID___handle.prefs.set("Flash_Open", 2);
      }
  } else {
      id1.style.display = "inline";
      id2.style.display = "block";
      id3.style.display = "block";
      idopclose.title= "Minimize weather station";
      // idopclose.src = "http://gmapsflighttracker.com/ghp/menu-closed.gif";
      idopclose.src = "http://gmuswr.googlecode.com/svn/trunk/menu-closed.gif";
      FTMAP___MODULE_ID___handle.g_small_flash_open = 1;
      FTMAP___MODULE_ID___handle.prefs.set("Flash_Open", 1);
  }

}


//////////////////////////////////////
// get weather data and display it
//////////////////////////////////////

this.get_weather_info = function (day_id) {

  var stat_id;

  // alert (g_loc + " " + FTMAP___MODULE_ID___handle.geoip_point);

  g_loc = FTMAP___MODULE_ID___handle.g_loc;
  if (g_loc != "" || FTMAP___MODULE_ID___handle.geoip_point) {
    // alert (g_loc);

    if (g_ghp_message_open == 15) {
      g_msg_id  = _gel('GHP_MESSAGE__MODULE_ID__');
      g_msg_id.style.display = "none";
      g_ghp_message_open = 0;
      return;
    }

//    if (FTMAP___MODULE_ID___handle.g_flash_shown) {
//	var flash_w  = _gel('GHP_C_FLASH__MODULE_ID__');
//	flash_w.style.display = "none";
//    }

    if (FTMAP___MODULE_ID___handle.WeatherXml != null) {
	var d = new Date().getTime() - FTMAP___MODULE_ID___handle.WeatherXml_Date;
	// alert("reload " + FTMAP___MODULE_ID___handle.WeatherXml + d);
	if (d < 1000*60*120) {
	    FTMAP___MODULE_ID___handle.show_weather_info(FTMAP___MODULE_ID___handle.WeatherXml, day_id);
	    return;
	}
    }

    // let the user know we are trying to get the data
    g_woverv_id  = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
    g_woverv_id.innerHTML = '<div style="font-size: 70%; font-style: italic;">Waiting for forecast ...</div>';

    // init the tooltip func
    tt_Init();

    // alert("country " + FTMAP___MODULE_ID___handle.g_stat_country + " " + FTMAP___MODULE_ID___handle.clickpoint);
    if (FTMAP___MODULE_ID___handle.g_stat_country && FTMAP___MODULE_ID___handle.g_stat_country != "" && FTMAP___MODULE_ID___handle.g_stat_country != "USA") {
	FTMAP___MODULE_ID___handle.geoip_point = FTMAP___MODULE_ID___handle.clickpoint;
	FTMAP___MODULE_ID___handle.geoip_lat = FTMAP___MODULE_ID___handle.geoip_point.lat();
	FTMAP___MODULE_ID___handle.geoip_long = FTMAP___MODULE_ID___handle.geoip_point.lng();
	// alert("set geoip point to clickpoint " + FTMAP___MODULE_ID___handle.geoip_long);
    }

    if (FTMAP___MODULE_ID___handle.geoip_point && FTMAP___MODULE_ID___handle.g_stat_country != "USA") {
	var xml_file ='http://a4343369442.api.wxbug.net/getForecastRSS.aspx?ACode=A4343369442&lat='+ FTMAP___MODULE_ID___handle.geoip_lat +'&long='+ FTMAP___MODULE_ID___handle.geoip_long +'&UnitType=1';
    } else {
	var xml_file ='http://A4343369442.api.wxbug.net/getFullForecast.aspx?acode=A4343369442&zipcode='+ g_loc;
    }
    // alert (xml_file);
    // var sep = (-1 < xml_file.indexOf("?")) ? "&" : "?"	;
    // xml_file_mod = xml_file + sep + "__=" + encodeURIComponent((new Date()).getTime());
    xml_file_mod = xml_file;

    // get data
    _IG_FetchXmlContent(xml_file_mod, 
         function(responseXML) {

	    var xmlDoc = responseXML;

	    // alert("y " + responseXML + " XXX " );

	    // handle timeout
	    // if (xmlDoc == "" || xmlDoc.indexOf("Timeout") > 0) {
	    if (! responseXML) {
	      setTimeout('FTMAP___MODULE_ID___handle.get_weather_info(1)', 1000*60*1);
	      return;
	    }

	    FTMAP___MODULE_ID___handle.WeatherXml = responseXML;
	    FTMAP___MODULE_ID___handle.WeatherXml_Date = new Date().getTime();

	    setTimeout('FTMAP___MODULE_ID___handle.get_weather_info(1)', 1000*60*122);

	    FTMAP___MODULE_ID___handle.show_weather_info(xmlDoc, day_id);

 		     })

  } else {
      
      return;
      
      // do not complain if no zip is set
      g_msg_id  = _gel('GHP_MESSAGE__MODULE_ID__');
      var msg_id_c  = _gel('GHP_C_MESSAGE__MODULE_ID__');
      g_msg_id.style.display = "block";
      g_ghp_message_open = 1;
      var html = 'Please configure a ZIP in the configuration section of the module. <br/> <a style="border: 0px solid #aaa; margin-left: 120px;" href="javascript: FTMAP___MODULE_ID___handle.close_ghp_message();">Close</a>';
      msg_id_c.innerHTML = html;
    
    }

}

//////////////////////////////////////////////////////////////////
// extract data out of the xml and display all data

this.show_weather_info = function (xmlDoc, day_id) {
    
    var html;
    if (!xmlDoc) return	 
    if (!FTMAP___MODULE_ID___handle.g_show_weather_overv) return	 
    
    vp = gadgets.window.getViewportDimensions();
    g_w = vp.width;
    // alert(g_w);
    h_space = g_w - 145 - 25;
    icon_width = Math.round(Math.max(17, h_space / 4 - 5));
    icon_width = Math.min(42, icon_width);
    //  alert(icon_width);
    
    var city 
    try{
	city = xmlDoc.getElementsByTagName("city").item(0).firstChild.nodeValue;
    } catch(Error) {
	city = xmlDoc.getElementsByTagName("aws:city").item(0).firstChild.nodeValue;
    }
    
    // if (prefs.getBool("centerongeoloc")) {
    if (FTMAP___MODULE_ID___handle.geoip_point) {
	_IG_SetTitle("US Radar; Weather for " + city.substr(0,18) ); 
    } else {
	_IG_SetTitle("US Weather Radar for " + city.substr(0,20) ); 
    }
    // _IG_SetTitle("US Weather Radar for " + city ); 
    
    //alert('city: '+city);
    
    var state;
    try{
	state = xmlDoc.getElementsByTagName("state").item(0).firstChild.nodeValue	 ;
    }catch(Error)
    {
	try {state = xmlDoc.getElementsByTagName("aws:state").item(0).firstChild.nodeValue	 ;
	} catch(Error) {};
    }
    //alert('state: '+state);
    
    var zip;
    try{
	zip	 = xmlDoc.getElementsByTagName("zip").item(0).firstChild.nodeValue	 ;	
    }catch(Error)
    {
	try {zip	 = xmlDoc.getElementsByTagName("aws:zip").item(0).firstChild.nodeValue	 ;	
	} catch(Error) {};
    }	 
    //alert('zip: '+zip);
    
    var zone;
    try{ 
	zone = xmlDoc.getElementsByTagName("zone").item(0).firstChild.nodeValue	 ;
    }catch(Error)
    {
	try {
	    zone = xmlDoc.getElementsByTagName("aws:zone").item(0).firstChild.nodeValue	 ;
	} catch(Error) {};
    }
    //alert('zone: '+zone);
    
    var itemList = xmlDoc.getElementsByTagName("forecast")	 ;
    if (itemList.length<1) {
	itemList = xmlDoc.getElementsByTagName("aws:forecast")	 ;
    }
    // alert(itemList);
    var tmphtml = '<table border="0" cellspacing="1" cellpadding="0" style="align: center;  width:25px; margin-top: 1px; margin-left: 1px;"><tr>';	
    var top = 1;
    
    var forecast_temp_html ='<table border="0" cellspacing="0" cellpadding="0" style="align: center;  width:25px"  ><tr>';
    var forecast_icon_html =' </tr><tr>';
    for (var i = 0; i < Math.min(8, itemList.length) ; i++) { 
	// For each <aws:forecast> node, get child nodes.
	var nodeList = itemList.item(i).childNodes;
	
	// Loop through child nodes. Extract data from the text nodes that are
	// the children of the associated 
	for (var j = 0; j < nodeList.length ; j++) {
	    var node = nodeList.item(j);
	    if (node.nodeName == "aws:title") {
		var title = node.firstChild.nodeValue;
		// alert('title: '+title);
	    }
	    if (node.nodeName == "aws:description") {
		var description = node.firstChild.nodeValue; 
		// alert('description: '+description );
	    }
	    if (node.nodeName == "aws:high") {
		var high = node.firstChild.nodeValue; 
		// alert('high: '+high );
	    }
	    if (node.nodeName == "aws:low") {
		var low = node.firstChild.nodeValue; 
		// alert('low: '+low );
	    }
	    
	    if (node.nodeName == "aws:short-title") {
		var short_title = node.firstChild.nodeValue ; 
		// alert('short_title: '+short_title);
	    }
	    if (node.nodeName == "aws:prediction") {
		var prediction = node.firstChild.nodeValue; 
		if (i < 2 )  { 
		    // alert('prediction: '+ prediction);
		}
	    }
	    if (node.nodeName == "aws:short-prediction") {
		var short_prediction = node.firstChild.nodeValue; 
		// alert('short_prediction: '+ short_prediction);
	    }
	    if (node.nodeName == "aws:image") {
		var icon = node.firstChild.nodeValue; 
		//alert('icon: '+icon );
	    }
	    
	}
	if (!short_prediction) {
	    short_prediction = short_title;
	}
	
	// wrapper div and up to title
	// fc_1 = '<div align="left" border="0" width="" style="font-size: 50%;" onmouseover="return escape(\' '+description+': '+short_title+'<br/>'+prediction+' \')"><div align="top" >' + title + '</div>';
         // fc_1 = '<div align="top" border="0" width="" style="font-size: 50%;" onmouseover="return escape(\' '+description+': '+short_title+'<br/>'+prediction+' \')">';
	 // img='<img style=\\"margin-left: 20px;\\" src=\\"' + icon + '\\">'; 
	img="";
	fs = Math.round(FTMAP___MODULE_ID___handle.font_scale * 50 / 100);
	// fc_1 = '<div align="top" onClick="FTMAP___MODULE_ID___handle.show_zip();" border="0" width="" style="font-size: ' + fs + '%;" onmouseover="return escape(\'<b>Forecast for '+city+':<br/>'+description+' '+short_title+'</b><hr/>'+prediction+'<br/><font size=-5><i><div align=right>(Source: <a href=http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ g_loc +' target=_new>WeatherBug</a>)</div></i></font> \')">';
	// 20.2.10 fc_1 = '<div align="top" border="0" width="" style="font-size: ' + fs + '%;" onmouseover="return escape(\'<b>'+description+' '+short_title+ '<br/>in '+city+'</b><hr/>'+prediction+'<br/><font size=-5><i><div align=right>(Source: <a href=http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ g_loc +' target=_new>WeatherBug</a>)</div></i></font> \')">';
	fc_1 = '<div align="top" border="0" width="" style="font-size: ' + fs + '%;" onmouseover="return escape(\'<b>'+title+' '+short_prediction+ '<br/>in '+city+'</b><hr/>'+prediction+'<br/><font size=-5><i><div align=right>(Source: <a href=http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ g_loc +' target=_new>WeatherBug</a>)</div></i></font> \')">';
	fc_1=fc_1.replace(new RegExp( "\\n", "g" ), " ");
	// alert(fc_1);
	//   html_flash += '</div><div id="GHP_C_SMALLFLASHFOOT__MODULE_ID__" align="right" style="z-index: 480; margin-top: -1px; font-size: 7px;">(Source: <a href="http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ g_loc +'" target="_new">WeatherBug</a>)</div>';
	
	// first icon
	
	wimg_size= Math.round(FTMAP___MODULE_ID___handle.font_scale * 20 / 100) ;
	// alert("check " + FTMAP___MODULE_ID___handle.ghp_view);
	if (FTMAP___MODULE_ID___handle.ghp_view == "canvas") {
	    // alert("canv 1");
	    wimg_size=Math.max(wimg_size, icon_width);
	    var id1 = _gel('GHP_C_FLASH__MODULE_ID__');
	    // shift down flash
	    h = wimg_size*2 + 30;
	    // alert(h);
	    id1.style.top = h+"px"; 
	}
	
	fc_2 = '<img align="top" src="'+icon+'" alt="'+short_title+'" width="' + wimg_size + '" height="'+wimg_size+'" />';
	// first low/high
	fc_3 = '<div align="top" ><nobr>' + low + '/' + high + '</nobr></div>';
	// end wrapper div
	fc_4 = '</div>';
	if (top == 1) {
  	    tmphtml += '<td border="0">' + fc_1 + fc_2 + fc_3 + fc_4 ;
	    top = 0;
	} else {
  	    tmphtml += fc_1 + fc_2 + fc_3 + fc_4 + '</td>';
	    top = 1;
	}
	
    } // end of loop through elements of forecast
    
    // var tmphtml = forecast_temp_html+forecast_icon_html+'</tr></table>';
	tmphtml += '</tr></table>';
    
    
    g_woverv_id  = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
    g_woverv_id.innerHTML = tmphtml;
    
    // create TTs
    tt_Init();
    
    // alert(l_html);
    
}

//////////////////////////////////////////////////////////////////
// show nexrad info

this.show_nexrad_info = function (stat) {
    if (stat) {
	// show
	// alert("show");
	h = Math.round(FTMAP___MODULE_ID___handle.map_height * .75);
	$("#GHP_NEXRAD_INFO__MODULE_ID__").css("height", h +"px");
	_gel("GHP_NEXRAD_INFO__MODULE_ID__").style.display = "block";
    } else {
	// hide
	_gel("GHP_NEXRAD_INFO__MODULE_ID__").style.display = "none";
    }

}
//////////////////////////////////////
// get cam overview
//////////////////////////////////////
// commercial code A4343369442

this.get_cams = function () {

  var stat_id;

  if (g_loc != "") {
    // alert (g_loc);


      // http://A1111111111.api.wxbug.net/getCamerasXML.aspx?ACode=A11111111111&zipCode=64732
    var xml_file ='http://A4343369442.api.wxbug.net/getCamerasXML.aspx?acode=A4343369442&zipcode='+ g_loc;
    // var sep = (-1 < xml_file.indexOf("?")) ? "&" : "?"	;
    // xml_file_mod = xml_file + sep + "__=" + encodeURIComponent((new Date()).getTime());
    xml_file_mod = xml_file;

    // get data
    _IG_FetchXmlContent(xml_file_mod, 
         function(responseXML) {

	// alert("y " + responseXML + " XXX " );

	var xmlDoc = responseXML;
	// handle timeout
	// if (xmlDoc == "" || xmlDoc.indexOf("Timeout") > 0) {
	if (! responseXML) {
	    // setTimeout('FTMAP___MODULE_ID___handle.get_weather_info(1)', 1000*60*1);
	    // g_woverv_id  = _gel('GHP_C_WEATHEROVERV__MODULE_ID__');
	    // g_woverv_id.innerHTML = '<div style="font-size: 70%; font-style: italic;">Loading ...</div>';
	    return;
	}

	var itemList = xmlDoc.getElementsByTagName("camera")	 ;
	if (itemList.length<1) {
	    itemList = xmlDoc.getElementsByTagName("aws:camera")	 ;
	}
	var cam_ids = new Array();
	var cam_cities = new Array();
	var cam_names = new Array();
	var cam_dist = new Array();
	var cam_ids_assoc = new Array();

	for (var i = 0; i < itemList.length ; i++) { 
	    // For each <aws:forecast> node, get child nodes.
	    cam_ids[i] = itemList.item(i).getAttribute("id");
	    cam_names[i] = itemList.item(i).getAttribute("name");
	    cam_cities[i] = itemList.item(i).getAttribute("city");
	    cam_dist[i] = itemList.item(i).getAttribute("distance");
	    if (i < 2) {
		// alert (cam_ids + " " + name);
	    }
	    cam_ids_assoc[cam_ids[i]] = 1;
	    // http://wwc.instacam.com/instacamimg/EAGLE/EAGLE_s.jpg
	    // showcam.asp?id=EAGLE&size=L
	}

	FTMAP___MODULE_ID___handle.cam_ids = cam_ids;
	FTMAP___MODULE_ID___handle.cam_dist = cam_dist;
	FTMAP___MODULE_ID___handle.cam_names = cam_names;
	FTMAP___MODULE_ID___handle.cam_cities = cam_cities;
	FTMAP___MODULE_ID___handle.cam_ids_assoc = cam_ids_assoc;
	
	// FTMAP___MODULE_ID___handle.show_cam(1);

    })
	}
}

///////////////////////////////////
// show cams
//
// -10: close cam


this.show_cam = function (cam_nr) {
    var id = _gel("GHP_C_CAM__MODULE_ID__");

    if (cam_nr == -10 || !FTMAP___MODULE_ID___handle.cam_ids[0]) {
	FTMAP___MODULE_ID___handle.cam_open = 0;
	id.style.display = "none";
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	id.innerHTML = "";
	return;
    } else {
	FTMAP___MODULE_ID___handle.cam_open = 1;
	id.style.display = "block";
	FTMAP___MODULE_ID___handle.minimize_flash(1);
	//_IG_FetchContent("http://gmapsflighttracker.com/ghp/wcam.txt?zip=" + g_loc + "&cam_nr=" + FTMAP___MODULE_ID___handle.cam_nr,    function(string) {
	//    return;
	//	}
	//		 );
	if (FTMAP___MODULE_ID___handle.ga_avail) {
	    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "WCAM", g_loc);
	}
    }

    l_cam_nr = FTMAP___MODULE_ID___handle.cam_nr;
    if (!FTMAP___MODULE_ID___handle.cam_ids[l_cam_nr]) {
	FTMAP___MODULE_ID___handle.cam_nr--;
	return;
    }
   
    str1 = 'Camera at '+ FTMAP___MODULE_ID___handle.cam_names[l_cam_nr]+ ' in ' + FTMAP___MODULE_ID___handle.cam_cities[l_cam_nr]+' (Distance: '+ FTMAP___MODULE_ID___handle.cam_dist[l_cam_nr]+' mi)';
    strback = '<a style="margin-bottom: 40px;" href="javascript: FTMAP___MODULE_ID___handle.show_cam(-1);">&lt;&lt;</a>';
    strfw = '<a href="javascript: FTMAP___MODULE_ID___handle.show_cam(1);">&gt;&gt;</a>';
    strclose = '<a style="background-color: orange;" href="javascript: FTMAP___MODULE_ID___handle.show_cam(-10);">[Close]</a>';
    id.innerHTML = '<div><font size="-2">' + str1 + '</font></div><center>'+strback+'<a border="0" title="Show large picture of '+ str1 +'" href="http://wwc.instacam.com/showcam.asp?id='+FTMAP___MODULE_ID___handle.cam_ids[l_cam_nr] +'&size=L" target="_new"><img border="1" src="http://wwc.instacam.com/instacamimg/' + FTMAP___MODULE_ID___handle.cam_ids[l_cam_nr] + '/' + FTMAP___MODULE_ID___handle.cam_ids[l_cam_nr] + '_s.jpg" width="160" height="120"></a>'+strfw+'</center><div id="GHP_C_CAMFOOT__MODULE_ID__" align="right" style="z-index: 480; margin-top: 1px; font-size: 10px;">'+strclose+'&nbsp;&nbsp;&nbsp;<i><font size=-2>(Source:<a href="http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ FTMAP___MODULE_ID___handle.g_loc +'" target="_new">WeatherBug</a></font></i>)</div>';

    FTMAP___MODULE_ID___handle.cam_nr += cam_nr;
    if (FTMAP___MODULE_ID___handle.cam_nr < 0) {
	FTMAP___MODULE_ID___handle.cam_nr = 0;
    }

}

this.show_vidcast = function (cam_nr) {
    var id = _gel("GHP_C_VIDCAST__MODULE_ID__");

    if (cam_nr == -10) {
	FTMAP___MODULE_ID___handle.vidcast_open = 0;
	id.style.display = "none";
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	id.innerHTML = "";
	
	var id1 = _gel("BOTTOM___MODULE_ID___");
	id1.style.paddingBottom = "0px";
	// adjust dynamic height
	//
	//_IG_AdjustIFrameHeight();
	FTMAP___MODULE_ID___handle.adjust_height();
	return;
    }

    FTMAP___MODULE_ID___handle.vidcast_open = 1;
    id.style.display = "block";
    FTMAP___MODULE_ID___handle.minimize_flash(1);

    strclose = '<a style="background-color: orange;" href="javascript: FTMAP___MODULE_ID___handle.show_vidcast(-10);">[Close]</a>';

    str_header = '<div id="GHP_C_VIDCASTFOOT__MODULE_ID__" align="right" style="z-index: 480; margin-right: 25px; margin-top: 1px; font-size: 10px;">'+strclose+'&nbsp;&nbsp;&nbsp;<i><font size=-2>(Source:<a href="http://web.live.weatherbug.com/Forecast/Page/Forecast.aspx?zcode=z5854&zip='+ FTMAP___MODULE_ID___handle.g_loc +'" target="_new">WeatherBug</a></font></i>)</div>';

    str_main = '<div style="margin-top:1px;"><embed id="FLV_PlayList" width="320" height="290" flashvars="x=x&playListXML=http://community-weather.weatherbug.com/community/ContentMonitorService/VideoPlayListServiceVC.aspx?clipUrl=FSS_WMP.swf%3F&zipcode='+ FTMAP___MODULE_ID___handle.g_loc +'&orderData=1|2|7|4|5|8&soundData=snd_A_1.mp3|snd_B_1.mp3|snd_G_1.mp3|snd_D_1.mp3|snd_E_1.mp3|snd_H_1.mp3&bgSound=StimulationOne.mp3&feedbackURL=&contentDomain=http://community-content.weatherbug.com/UserContent/&ThemeID=7&uid=1&zcode=z5854&rep=0&lvl=0&clipType=wvpvc&clipId=-1&callJS=true" salign="lt" scale="Showall" quality="high" bgcolor="#FFFFFF" name="FLV_PlayList" src="http://community-content.weatherbug.com/UserContent/FLV_PlayList.swf" type="application/x-shockwave-flash"/></div>';

    id.innerHTML = str_header + str_main;

    var id1 = _gel("BOTTOM___MODULE_ID___");
    id1.style.paddingBottom = "42px";
    // id.style.height = "100px";
    // id.innerHTML = "&nbsp; XXX";
    //
    // adjust dynamic height
    //
    _IG_AdjustIFrameHeight();

//     _IG_FetchContent("http://gmapsflighttracker.com/ghp/vidcast.txt?zip=" + FTMAP___MODULE_ID___handle.g_loc,    function(string) {
// 	    return
// 		}
// 			 )
    if (FTMAP___MODULE_ID___handle.ga_avail) {
	FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "VIDCAST", FTMAP___MODULE_ID___handle.g_loc);
    }

    // adjust height so the vidcast can be seen
    //map_id = FTMAP___MODULE_ID___handle.g_map;
    //h = map_id.style.height;
    // h = document.height;
    // alert("before adj " + h + id.innerHTML);
    // if (parseInt(h) < 250) {
    // FTMAP___MODULE_ID___handle.vidcast_old_height = h;
    // document.height = 350 + "px";
    // _IG_AdjustIFrameHeight();
    // }
}

// show wind movie
this.show_wmovie = function (idx) {
    var id = _gel("GHP_C_WMOVIE__MODULE_ID__");

    if (idx == -10) {
	FTMAP___MODULE_ID___handle.wmovie_open = 0;
	id.style.display = "none";
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	id.innerHTML = "";
	
	var id1 = _gel("BOTTOM___MODULE_ID___");
	id1.style.paddingBottom = "0px";
	// adjust dynamic height
	//
	//_IG_AdjustIFrameHeight();
	FTMAP___MODULE_ID___handle.adjust_height();
	return;
    }

    FTMAP___MODULE_ID___handle.wmovie_open = 1;
    id.style.display = "block";
    FTMAP___MODULE_ID___handle.minimize_flash(1);

    strclose = '<a style="background-color: orange;" href="javascript: FTMAP___MODULE_ID___handle.show_wmovie(-10);">[Close]</a>';

    str_header = '<div id="GHP_C_WMOVIEFOOT__MODULE_ID__" align="center" style="z-index: 480; margin-right: 12px; margin-top: 1px; font-size: 11px; white-space:nowrap;">6-day wind flow forecast from <a href="http://meteoblue.com/" target="_new">meteoblue</a>.<br/>Click on the movie to stop and play.<center>'+strclose+'</center></div>';
 
    // str_main = '<div style="margin-top:1px;"><object width="300" height="234" type="application/x-shockwave-flash" data="http://www.meteoblue.com/uploads/movies/flvplayer.swf"><param name="bgcolor" value="#FFFFFF"/><param name="flashvars" value="file=http://pages.unibas.ch/geo/mcr/3d/meteo/movies/america_hih.flv&showdigits=true&autostart=true&showfsbutton=true&repeat=true"/></object></div>';
    str_main = '<div style="margin-top:1px;"><embed width="300" height="234" type="application/x-shockwave-flash" src="http://www.meteoblue.com/uploads/movies/flvplayer.swf" bgcolor="#FFFFFF" majorversion="7" build="0" flashvars="file=http://pages.unibas.ch/geo/mcr/3d/meteo/movies/america_hih.flv&showdigits=true&autostart=true&showfsbutton=true&repeat=true"/></div>';

    id.innerHTML = str_header + str_main;

    var id1 = _gel("BOTTOM___MODULE_ID___");
    id1.style.paddingBottom = "60px";
    // id.style.height = "100px";
    // id.innerHTML = "&nbsp; XXX";
    //
    // adjust dynamic height
    //
    _IG_AdjustIFrameHeight();

//     _IG_FetchContent("http://gmapsflighttracker.com/ghp/wmovie.txt?zip=" + FTMAP___MODULE_ID___handle.g_loc,    function(string) {
// 	    return
// 		}
// 		     );
    if (FTMAP___MODULE_ID___handle.ga_avail) {
	FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "WMOVIE", FTMAP___MODULE_ID___handle.g_loc);
    }

}


this.unloadfunc = function () {
    // alert("unload");
}

// document.onUnload = "FTMAP___MODULE_ID___handle.unload();";
// window.document.onLoad = alert("load xxx");
// window.document.onUnload = alert("unload xxx");
// alert( window.document.onUnload);



/////////////////////////////////// 
// display list of earthquakes
//
this.disp_eqs = function () {

    // get the data

    // var kml_2 = new GGeoXml("http://earthquake.usgs.gov/eqcenter/catalogs/eqs7day-age.kmz");
    // map.addOverlay(kml_2);


    // http://earthquake.usgs.gov/eqcenter/catalogs/eqs1day-M1.txt
    _IG_FetchContent("http://earthquake.usgs.gov/eqcenter/catalogs/eqs1day-M1.txt?xx=" + encodeURIComponent((new Date()).getTime()) ,    function(string) {
         if (string != "") {
	     // alert(string);
	    arr = string.split("\n");

	    var icon = new GIcon();
	    icon.image = "http://gmapsflighttracker.com/ghp/mm_20_orange.png";
	    icon.shadow = "http://gmapsflighttracker.com/ghp/mm_20_shadow.png";
	    icon.iconSize = new GSize(12, 20);
	    icon.shadowSize = new GSize(22, 20);
	    icon.iconAnchor = new GPoint(6, 20);
	    icon.infoWindowAnchor = new GPoint(5, 1);
	    // map = FTMAP___MODULE_ID___handle.g_map;
	    // alert(map);

	    if (arr.length > 3) {
		// alert(arr.length);
		for (var row=0; row < arr.length-1; row++){
		    line = arr[row].split(",");
		    offset=0;
		    if (line[offset + 7] < FTMAP___MODULE_ID___handle.eqs_min_mag || line[4] == "Lat") {
			continue;
		    }
		    point = new GLatLng(parseFloat(line[offset + 5]),parseFloat(line[offset + 6]));
		    // html = '<div style="white-space:nowrap;">' + arr[row] + '</div>';
		    // time = line[offset + 3] + line[offset + 4];
		    html = 'Earthquake from last 24 hours:<br/>';
		    html += 'Magnitude: ' + line[offset + 7] + '<br/>';
		    html += 'Depth: ' + line[offset + 8] + ' km<br/>';
		    html += '<span style="font-size: 80%">Date: ' + line[offset + 3] + line[offset + 4] + '</span><br/>';
		    html += 'Id: ' + line[offset + 1] + '<br/>';
		    // html = arr[row];
		    // alert(point + arr[row] + " " + row);
		    if (row < 3) {
			// alert (line[offset + 5] + " " + line[offset + 6] + " " + row + html);
		    }
		    
		    // name = "Date: " + time + '<br/>' + "Magn:" +  line[7] + "; Depth:" + line[8];

		    FTMAP___MODULE_ID___handle.createEQMarker(FTMAP___MODULE_ID___handle.g_map, point, icon, html);

		}
	    }
	 }
    }
		     )

    // check back every 30 min
    setTimeout('FTMAP___MODULE_ID___handle.disp_eqs()', 1000*60*30);

}

this.createEQMarker = function (g_map, point, icon, html) {

    var marker = new GMarker(point, icon);
    g_map.addOverlay(marker);
    GEvent.addListener(marker, "click", function() {
	// alert(name);
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	tooltip.style.display="none";
    });
    // marker.tooltip = '<div class="tooltip">'+name+'</div>';
    marker.tooltip = html;
    GEvent.addListener(marker,"mouseover", function() {
	FTMAP___MODULE_ID___handle.showTooltip(marker);
	FTMAP___MODULE_ID___handle.minimize_flash(1);
    });        
    GEvent.addListener(marker,"mouseout", function() {
	tooltip.style.visibility="hidden";
	tooltip.innerHTML = "";
	FTMAP___MODULE_ID___handle.minimize_flash(2);
	// tooltip.style.display="none";
    });        
    GEvent.addListener(marker,"click", function() {
	if (FTMAP___MODULE_ID___handle.eq_click_zoomed) {
	    FTMAP___MODULE_ID___handle.g_map.returnToSavedPosition();
	    FTMAP___MODULE_ID___handle.eq_click_zoomed = 0;
	} else {
	    FTMAP___MODULE_ID___handle.g_map.savePosition();
	    FTMAP___MODULE_ID___handle.g_map.setCenter(point, 14);
	    FTMAP___MODULE_ID___handle.eq_click_zoomed = 1;
	}
    });        
    // alert(marker + point + html);
    return marker;
}

////////////////////////
// show the location question
this.show_zip = function () {
    _gel("GHP_ZIPQ__MODULE_ID__").style.display = "block";
    _gel("zip_text__MODULE_ID__").focus();
    FTMAP___MODULE_ID___handle.minimize_flash(1);
}

////////////////////////
// get the location; convert to ZIP; show new info 
this.get_zip = function () {

    // create select and fill 
    eli = _gel("zip_text__MODULE_ID__");
    loc = eli.value;

    if (loc == "") {
	FTMAP___MODULE_ID___handle.show_zip_field();
    } else {
	
	FTMAP___MODULE_ID___handle.show_loc(loc);
    }

}

////////////////////////
// get the location; convert to ZIP; show new info 
this.show_loc= function (loc) {

    http://<apicode>.api.wxbug.net/getLocationsXML.aspx?ACode=<apicode>&SearchString=<cityname> 

    // geoloc
    var geocoder = new GClientGeocoder();
    // geocoder.setBaseCountryCode("US");
    geocoder.getLocations(
			  loc,
			  function(response) {
	if (!response || response.Status.code != 200) {
	    
	    url = encodeURIComponent(location.href);
	    _IG_FetchContent("http://gmapsflighttracker.com/ghp/geocodeerror.txt?zip=" + g_loc + "error = " + response.Status.code + "url=" + url ,    function(string) {
		return;
	    });
	    // alert("Sorry, we were unable to geocode that address; Response: " + response.Status.code + "; To debug the problem please let us know the web location (URL) you are using this gadget at. Feedback can be given at gmapsgaier.blogspot.com. If this problem persists please enter a plain ZIP (e.g. 94015) into the ZIP field.");
	    // alert("getting for " + loc);
	    _IG_FetchContent("http://rpc.geocoder.us/service/csv?zip=" + loc ,    function(string) {
		if (string != "") {
		    // alert(string);
		    arr = string.split(",");
		    if (arr.length > 3) {
			startLng = 1.0*arr[1];
			startLat = 1.0*arr[0];
			point = new GLatLng(startLat,startLng);
			
			// center map and store address info
			FTMAP___MODULE_ID___handle.g_map.setCenter(point);
			FTMAP___MODULE_ID___handle.g_loc = loc;
			FTMAP___MODULE_ID___handle.place_address = arr[2] + " " + arr[3];
			
			// delete former marker
			if (FTMAP___MODULE_ID___handle.weather_station_marker) {
			    g_map.removeOverlay(FTMAP___MODULE_ID___handle.weather_station_marker);
			}   


			// hide question div and show flash
			_gel("GHP_ZIPQ__MODULE_ID__").style.display = "none";
			FTMAP___MODULE_ID___handle.minimize_flash(2);
			
			// display weather overview
			FTMAP___MODULE_ID___handle.WeatherXml = null;
			FTMAP___MODULE_ID___handle.g_stat_id = null;
			FTMAP___MODULE_ID___handle.get_weather_info(1);
			FTMAP___MODULE_ID___handle.show_flash_info();
			
			// get cams
			FTMAP___MODULE_ID___handle.cam_open = 0;
			FTMAP___MODULE_ID___handle.cam_nr = 0;
			FTMAP___MODULE_ID___handle.get_cams();
			
// 			_IG_FetchContent("http://gmapsflighttracker.com/ghp/otherzip.txt?zip=" + loc ,    function(string) {
// 			    return;
// 			});
			if (FTMAP___MODULE_ID___handle.ga_avail) {
			    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "OTHER_ZIP", loc);
			}
		    }
		}
	    });
	} else {
	    
	    place = response.Placemark[0];
	    point = new GLatLng(place.Point.coordinates[1],
				place.Point.coordinates[0]);
	    // place.AddressDetails.Accuracy >= 5 : OK
	    // http://www.google.com/apis/maps/documentation/reference.html#GGeoAddressAccuracy
	    // new arr1 = place.address.split(",");
	    // arr1 = arr[1].split(" ");
	    // loc = arr1[1];
	    // alert( " " + place.address + " " + point);
	    // if (place.AddressDetails.Country.AdministrativeArea && place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea && place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode && place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber) {
	    if (1) {
		// alert(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber + " " + place.address + " " + point);
		// marker = new GMarker(point);
		// FTMAP___MODULE_ID___handle.g_map.addOverlay(marker);
		// marker.openInfoWindowHtml(place.address + '<br>' + 
		//			  '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
		
		// center map and store address info
		FTMAP___MODULE_ID___handle.g_map.setCenter(point);
		FTMAP___MODULE_ID___handle.g_loc = loc;
		FTMAP___MODULE_ID___handle.place_address = place.address;
		
		// hide question div and show flash
		_gel("GHP_ZIPQ__MODULE_ID__").style.display = "none";
		FTMAP___MODULE_ID___handle.minimize_flash(2);
		
		// display weather overview
		FTMAP___MODULE_ID___handle.WeatherXml = null;
		FTMAP___MODULE_ID___handle.g_stat_id = null;
		FTMAP___MODULE_ID___handle.get_weather_info(1);
		FTMAP___MODULE_ID___handle.show_flash_info();
		
		// get cams
		FTMAP___MODULE_ID___handle.cam_open = 0;
		FTMAP___MODULE_ID___handle.cam_nr = 0;
		FTMAP___MODULE_ID___handle.get_cams();
		
// 		_IG_FetchContent("http://gmapsflighttracker.com/ghp/otherzip.txt?zip=" + loc ,    function(string) {
// 		    return;
// 		});
		if (FTMAP___MODULE_ID___handle.ga_avail) {
		    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "OTHER_ZIP", loc);
		}
	    } else {
		alert("Could not match \"" + loc + "\" to a ZIP code. Please change your location (got \"" + place.address + "\" but no ZIP).");
	    }
	}
    });

}


////////////////////////
// show geoloc'ed pictures in bounds
this.show_geopics = function () {

    // get map
    map = FTMAP___MODULE_ID___handle.g_map;

    // use bounds for photos
    bds = map.getBounds();
    sw_lat = bds.getSouthWest().lat();
    sw_lng = bds.getSouthWest().lng();
    ne_lat = bds.getNorthEast().lat();
    ne_lng = bds.getNorthEast().lng();

    // get pics
    url = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx="+sw_lng+"&miny="+sw_lat+"&maxx="+ne_lng+"&maxy="+ne_lat;
    _IG_FetchContent(url, 
		     function(data) {
			 
	var js_obj = eval('(' + data + ')');
	// alert(js_obj.count);
	if (js_obj.photos && js_obj.photos.length > 0) {
	    // alert(js_obj.photos.length);
	    // el = document.getElementById("outp");
	    // str="<img src="+js_obj.photos[0].photo_file_url+">";
	    // el.innerHTML +=  str;

	    FTMAP___MODULE_ID___handle.panoramio_json = js_obj;
	    
	    for (var i = 0; i < js_obj.photos.length; i++) {

		var mipic = new GIcon();
		mipic.image = js_obj.photos[i].photo_file_url;
		mipic.iconSize = new GSize(20, 20);
		mipic.iconAnchor = new GPoint(10, 10);
		// mipic.shadowSize = new GSize(22, 20);
		// mipic.infoWindowAnchor = new GPoint(5, 1);
		// mipic.shadow = ;
		
		var marker = new GMarker(new GLatLng(parseFloat(js_obj.photos[i].latitude), parseFloat(js_obj.photos[i].longitude)),mipic);
		map.addOverlay(marker);
		// m1 = marker;
		// g_markerlist.push(marker);	
		
		FTMAP___MODULE_ID___handle.show_lpic(marker, i);

	    }
	    
	}
 		     });

}

////////////////////////
// save geo cache
this.save_geo_cache = function (address, point, nr) {
    FTMAP___MODULE_ID___handle.prefs.set('zip_cached', address)
    var str = point.lat() + "," + point.lng();
    FTMAP___MODULE_ID___handle.prefs.set('zip_cached_geocoord', str)
    // alert("cache setting " + address + " " + point + " " + nr + " " +str);
    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEO Code "+nr+" ok", address);
}

////////////////////////
// get GE instance
this.getEarthInstanceCB = function (obj) {
  FTMAP___MODULE_ID___handle.ge_obj = obj;

  //  alert(obj);
  obj.getLayerRoot().enableLayerById(obj.LAYER_BUILDINGS, true);
  obj.getLayerRoot().enableLayerById(obj.LAYER_TERRAIN, true);

  options = obj.getOptions();
  options.setStatusBarVisibility(true);
  // options.setScaleLegendVisibility(true);
}

////////////////////////
// show enlarged marker
this.show_lpic = function (marker, i) {

    GEvent.addListener(marker,"mouseover", function() {
	pic = marker.getIcon().image;
	p = marker.getPoint();
	// map.removeOverlay(marker);
	
	// show large pic
	var mipic = new GIcon();
	mipic.image = pic;
	mipic.iconSize = new GSize(200, 200);
	mipic.iconAnchor = new GPoint(100, 81);
	var m2 = new GMarker(p,mipic);
	map.addOverlay(m2);
	m3 = m2;

	// display info
	el = _gel("GHP_C_PICINFO__MODULE_ID__")
	el.style.display = "block";
	obj = FTMAP___MODULE_ID___handle.panoramio_json.photos[i];
	// str = "Photo from Panoramio.";
	str = "<a target=\"_blank\" href=\"" + obj.photo_url + "\">Panoramio: " + obj.photo_title + "</a> from <a target=\"_blank\" href=\"" + obj.owner_url + "\">" + obj.owner_name + "</a>";
	
	el.innerHTML = str;

	// minimize flash
	FTMAP___MODULE_ID___handle.minimize_flash(1);

	// mouseout: remove large pic
	GEvent.addListener(m2,"mouseout", function() {
	    pic = m3.getIcon().image;
	    p = m3.getPoint();
	    map.removeOverlay(m2);
	    FTMAP___MODULE_ID___handle.minimize_flash(2);

	});

	// click: center and zoom
	GEvent.addListener(m2,"click", function() {

	    // store
	    FTMAP___MODULE_ID___handle.saved_pos = map.savePosition();
	    FTMAP___MODULE_ID___handle.saved_mapt = map.getCurrentMapType();

	    // center on pic and set sat map
	    p = m3.getPoint();
	    map.setCenter(p, 15);
	    map.setMapType(G_SATELLITE_MAP);

	});
	
    });        
}


//////////////////////////////////////////////////////////////////
// drag support
//////////////////////////////////////////////////////////////////

/// <tr onmousedown="startDrag(event)">

this.getDragParent = function (el) {
	var oldEl=el;
	while (el) {
		el=el.parentNode;
		if (el.id=="maptable" || el.nodeName.toUpperCase()=='BODY') {
			return oldEl;
		}
		oldEl=el;
	}
}

this.startDrag = function (e) {
	FTMAP___MODULE_ID__draggingThing=FTMAP___MODULE_ID___handle.getDragParent(e.srcElement || e.target); 
	FTMAP___MODULE_ID__offsetX=e.clientX-FTMAP___MODULE_ID__draggingThing.offsetLeft;
	FTMAP___MODULE_ID__offsetY=e.clientY-FTMAP___MODULE_ID__draggingThing.offsetTop;
	document.body.onmousemove=FTMAP___MODULE_ID___handle.moveDrag;
	document.body.onmouseup=FTMAP___MODULE_ID___handle.endDrag;
	document.onselectstart=FTMAP___MODULE_ID___handle.nullFunc;
}

this.nullFunc = function (e) {
	return false;
}
this.moveDrag = function (e) {
	e=e || event;
	// alert(FTMAP___MODULE_ID__draggingThing + " " + FTMAP___MODULE_ID__offsetY);
	if (FTMAP___MODULE_ID__draggingThing) {
	  FTMAP___MODULE_ID__draggingThing.style.top=(e.clientY-FTMAP___MODULE_ID__offsetY)+'px';
	  FTMAP___MODULE_ID__draggingThing.style.left=(e.clientX-FTMAP___MODULE_ID__offsetX)+'px';
	  return true;
	} else {
	  // alert("empty " + FTMAP___MODULE_ID__draggingThing);
	}
}
this.endDrag = function (e) {
	FTMAP___MODULE_ID__draggingThing=null;
	document.body.onmousemove=null;
	document.body.onmouseend=null;
	document.onselectstart=null;
}

//////////////////////////////////////////////////////////////////
// end drag support
//////////////////////////////////////////////////////////////////



  // **************** END OF MAIN  ************************
}



var FTMAP___MODULE_ID___handle;
var FTMAP___MODULE_ID___timeout_id;

_IG_RegisterOnloadHandler(function() {

var g_prefs__MODULE_ID__ = new _IG_Prefs(__MODULE_ID__);
var geocoder = new GClientGeocoder();
// var geocoder=new google.maps.Geocoder();

FTMAP___MODULE_ID___handle = new FTMAP___MODULE_ID__();
FTMAP___MODULE_ID___handle.prefs = g_prefs__MODULE_ID__;

// geocoder.getLocations(g_prefs__MODULE_ID__.getString('loc'), function(point) 

var address=g_prefs__MODULE_ID__.getString('loc');

// g_prefs__MODULE_ID__.set('zip_cached', "")
// g_prefs__MODULE_ID__.set('zip_cached_geocoord', "")

// if(geocoder){
//     geocoder.geocode({'address':address},
// 		     function(results,status){
// 			 if(status==google.maps.GeocoderStatus.OK){
// 			     point = results[0].geometry.location;
// 			     alert("new " + address + " " + point);
// 			 }
// 		     });
//}

// q='http://maps.google.com/maps/geo?q='+address+'&output=json&oe=utf8&sensor=false&key=ABQIAAAAZqe2u0f7L3ubnymlUZdiBBSsTL4WIgxhMZ0ZK_kHjwHeQuOD4xQbWe473BbT0ws59NugOloHld5ZBQ&callback=?';

if (address != "") {
    //
    // check for cached ZIP info
    //
    point=null;
    cached_zip = g_prefs__MODULE_ID__.getString('zip_cached');
    // s_point = g_prefs__MODULE_ID__.getString('zip_cached_geocoord');
    // alert("cache " + address + " " + " " + cached_zip);
    if (address == cached_zip) {
	s_point = g_prefs__MODULE_ID__.getString('zip_cached_geocoord');
	// alert("cache " + address + " " + s_point);
	if (s_point != "") {
	    // alert("cache 2 " + address + " " + s_point);
	    arr = s_point.split(",");
	    if (arr.length > 1) {
		startLat = 1.0*arr[0];
		startLng = 1.0*arr[1];
		point = new GLatLng(startLat,startLng);
	    }
	}
    }
    if (point) {
	FTMAP___MODULE_ID___handle.init(point);
	// FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "Cached ok", address);
    } else {         // no cached zip
	// get geo info for ZIP as not cached

	geocoder.getLatLng(address, function(point)     {
	// alert(point.Status.code + " "+ point.Point + " " + g_prefs__MODULE_ID__.getString('loc'));
	// alert(point + " " + address);
	if (point) {
	    FTMAP___MODULE_ID___handle.init(point);
	    FTMAP___MODULE_ID___handle.save_geo_cache(address, point, "1");
	} else {

	    // alert("geo 2 " + point + " " + address);

	    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEO Code 1 error", address);

	    // retrieve via geocoder.us
	    _IG_FetchContent("http://rpc.geocoder.us/service/csv?zip=" + address , 
			     function(string) {
		point=null;
		// alert(string);
		if (string != "") {
		    // alert(string);
		    arr = string.split(",");
		    if (arr.length > 3) {
			startLng = 1.0*arr[1];
			startLat = 1.0*arr[0];
			point = new GLatLng(startLat,startLng);
			// alert("geo 2 res " + point + " " + startLat);
		    }
		}
		// test
		// point=null;

		if (! point) {
		    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEO Code 2 error", address);

	    	    // retrieve via yahoo geocoder
		    q = 'http://where.yahooapis.com/v1/places.q('+address+')?format=geojson&appid=wBIm60zV34H8E0.cQY_MESoQ4BRKaZje_obS6Hh.e0qLSUbVhk8yhPeQQkA-&lang=en-us&callback=?';
		    $.getJSON(q, function(data, textStatus){
			arr = data.places.place[0].coordinates;
			// alert("geo 3 " + arr + " " + arr[0]);
			if (arr.length > 1) {
			    startLng = 1.0*arr[0];
			    startLat = 1.0*arr[1];
			    point = new GLatLng(startLat,startLng);
			    // alert(point);
			}
			if (point) {
			    // alert("geo 3 " + data + " " + data.places.place[0].coordinates  );
			    FTMAP___MODULE_ID___handle.init(point);
			    FTMAP___MODULE_ID___handle.save_geo_cache(address, point, "3");
			} else {
			    FTMAP___MODULE_ID___handle.init(null);
			    FTMAP___MODULE_ID___handle.ga.reportEvent("GWR", "GEO Code 3 error", address);
			}

		    });


		} else {
		    FTMAP___MODULE_ID___handle.init(point);
		    FTMAP___MODULE_ID___handle.save_geo_cache(address, point, "2");
		}
	    });
	}
    });
    }        // no cached zip

} else {
    // address empty
    FTMAP___MODULE_ID___handle.init(null);

}


  // FTMAP___MODULE_ID___handle.show_flash_info();
  // FTMAP___MODULE_ID___handle.get_and_show_news();
  // FTMAP___MODULE_ID___handle.get_weather_info(1);

});

// -->
</script>


]]>

</Content>
</Module>

