// Script created:04.05.2006 10:00
// By: SAJ
// Script language: JScript
// Purpose:
// Support for Displaying Google Maps and RWIS Stations.
//
//Variables
var camID;
var haveCamera;
var map1;
var map2;
var zoomBar;
var mapBar;
var showGraph = false;
var baseicon;
var ahoursicon;
var bhoursicon;
var choursicon;
var lastweekicon;
var lastmonthicon;
var morelastmonth_icon;
var nofoiicon;
var marker;
var region_request;
var request;
var stnoverlay;
var rwis ;
var allTags;
var markersShown = new Array();
var markerTagStrings = new Array();
var rwisVisible;
var kmlToggleState = 1; //JZK 03.12.2008
var geoXml; //JZK 03.12.2008
var kmlParts = new Array();
var kmlTotal = kmlTotalFiles; //6
var appPath = "http://www.trafficweather.info/roadWeather";

//var base_URL="http://birice.vaisala.co.uk/rwmap/";
var base_URL="";
//var base_URL="http://localhost:8988/rwWeather-roadWeather-context-root/";
//var base_URL="http://saj2004:8080/roadWeather/";
//var base_URL="http://192.168.40.58/rwmap/";
var http_request = false;
var stn_http_request = false;
var stn_data_request = false;
var got_data=false;
var textDisplay;
var stationMetaData;
var siteViewable=false;
var clickedMarker;
var showCoords = false;
var myIconW;
var myIconHt;
var number_stations;
var map_moving = 0;
var minimap_moving = 0;
var xhair;
var tooltip;
var requestingData = false;
var dummy_zoom=false;
var world_view_extent;
var last_view;
var spoint1;
var spoint2;
var getdataTakes;
var drawmaptakes;
//var world_view_x2;
//var world_view_y1;
//var world_view_y2;
var viewed_areas;
var  clusterer;
var placeHolder;
var lat_min;
var lat_max;
var lon_min;
var lon_max;

//var event=[];
//var listen;


function FileExists(strURL)
{
    //oHttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();  
    oHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
    oHttp.open("HEAD", strURL, false);
    oHttp.send(null);
    return (oHttp.status==404) ? false : true;}



//***************************************

function TileToQuadKey ( x, y, zoom){
    var quad = "";
    for (var i = zoom; i > 0; i--){
        var mask = 1 << (i - 1);
        var cell = 0;
        if ((x & mask) != 0)
            cell++;
        if ((y & mask) != 0)
            cell += 2;
        quad += cell;
    }
    return quad;
}


function doRouteTiles()
{
//if (FileExists("http://localhost:8080/roadWeather_test4/tiles/organisations/"+customer_id+"/exists.txt"))
if (FileExists(appPath+"/tiles/organisations/"+customer_id+"/exist/exists.txt"))
{
//alert('a new approach!!!!');
document.getElementById("treatmentLayer").style.visibility = "visible";
var routeTiles = function (a,b) { 
return  appPath+"/tiles/organisations/"+customer_id+"/" + TileToQuadKey(a.x,a.y,b) + ".png"; 
//return  "http://localhost:8080/roadWeather_test3/tiles/organisations/"+customer_id+"/" + TileToQuadKey(a.x,a.y,b) + ".png"; 
};



if(navigator.userAgent.indexOf("MSIE") == -1) 
    routeTiles.isPng = function() {return true;};





var routeLayer = new GTileLayer(new GCopyrightCollection(''),12,19); 
 
 routeLayer.getTileUrl = routeTiles; 


 //routeLayer.getCopyright = function(a,b) {return "Irwin & Jarrett, BDCC, MCG, Bill Chadwick 2007";}; 
 routeLayer.isPng = function() {return true;};

 //var routeMap = new GMapType([routeLayer], G_SATELLITE_MAP.getProjection(), "routes",{errorMessage:"no routes here"}); 
 //routeMap.getTextColor = function() {return "#0000FF";}; 

 //map1.addMapType(routeMap);




var routeHybridLayer = new Array();
 routeHybridLayer[0] = G_NORMAL_MAP.getTileLayers()[0];
 routeHybridLayer[1] = new GTileLayer(new GCopyrightCollection('') , 1, 24);
 routeHybridLayer[1].getTileUrl = routeTiles;
 //routeHybridLayer[1].getCopyright = function(a,b) {return "Irwin & Jarrett, BDCC, MCG, Bill Chadwick 2007";};
 routeHybridLayer[1].getOpacity = function () {return 0.5;};//of the non transparent part route
 routeHybridLayer[1].isPng = function() {return true;};

 var routeSatMap = new GMapType(routeHybridLayer, G_NORMAL_MAP.getProjection(),googleButtonLabel,{errorMessage:""}); 
 routeSatMap.getTextColor = function() {return "#FFFFFF";};

 map1.addMapType(routeSatMap); 
}
}






//***************************************8

function clientArea(clientID){
if (clientID==null){
clientID=-999;
}
//Get Client extents from DB
area_http_request = new GXmlHttp.create(); 
area_http_request.open("GET","clientArea.jsp?client="+clientID,true); //JZK added "true"  21012009
area_http_request.onreadystatechange = getArea();
area_http_request.send(null);
}

function getArea(){
//Dummy does nothing with have been re-directed in the jsp
Alert ("Got Client Response");
}
function checkourBrowserIsOK()
{
   if (GBrowserIsCompatible())
   {
   return
   }
   else
   {
     notSupportedBrowser();
   
   }
}

function  notSupportedBrowser()
{
 setTimeout( "window.location.href = notSupported.jsp", 1000 );

}

function setupFullMap(lon1,lat1,lon2,lat2) {
 checkourBrowserIsOK();
 Icon = new GIcon();
 var spoint1 = new GLatLng();
 var spoint2 = new GLatLng();
 var minlon;
 var maxlon;
 var minlat;
 var maxlat;
 if (lon1==null) {
  lon1= -1;
  lon2=0;
 }
 if(lat1==null) {
   lat1=52;
   lat2=53;
 }
 if (lon2==null) {
  lon1= -1;
  lon2=0;
 }
 if(lat2==null) {
   lat1=52;
   lat2=53;
 }
 //Switch extents as rqeuired
 if (lon1<lon2) {
   maxlon=lon2;
   minlon=lon1;
   }
   else
  {
   maxlon=lon1;
   minlon=lon2;
  }
  if (lat1<lat2) {
   minlat=lat1;
   maxlat=lat2;
  }
   else
  {
   minlat=lat2;
   maxlat=lat1;
  }
 //array to store where we visit
  viewed_areas=new Array();
  world_view_extent= new GLatLngBounds(new GLatLng(0,0), new GLatLng(0.1,0.1));
  last_view=new GLatLngBounds(new GLatLng(0,0), new GLatLng(0.1,0.1));
  viewed_areas.push(world_view_extent); 
  //alert(world_view_extent);
  //world_view_x2=maxlon;
  //world_view_y1=minlat;
  //world_view_y2=maxlat;
// alert(minlon+','+maxlon+','+minlat+','+maxlat);
 map1 = new GMap2(document.getElementById("map"));
 map2=new GOverviewMapControl(new GSize(100,100));
 map1.addControl(map2);
 zoomBar =new GLargeMapControl();
 map1.addControl(zoomBar);
 mapBar = new GMapTypeControl();
 map1.addControl(mapBar);
 scalebar = new GScaleControl();
 map1.addControl(scalebar);
//
 tooltip = document.createElement("div");
 map1.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
 tooltip.style.visibility="hidden";
 placeHolder=document.createElement("div");
 map1.getPane(G_MAP_FLOAT_PANE).appendChild(placeHolder);
 openProgress();
 var dx=Math.abs((maxlon-minlon)/2);
 var dy=Math.abs((maxlat-minlat)/2);
// alert('dx '+dx);
 var xc= maxlon-dx;
 var yc=dy+minlat;
 //alert(yc+','+xc);
 var point = new GLatLng(yc,xc);
 //Now zoom our map window
 var pt1=new GLatLng(minlat,minlon); 
 var pt2=new GLatLng(maxlat,maxlon);
 var new_bounds=new GLatLngBounds(pt1,pt2);
 var required_Zoom=map1.getBoundsZoomLevel(new_bounds);
 dummy_zoom=false;
 mapRegion(point,required_Zoom);//9);
// current_center=map1.getCenter();
//  alert(current_center);
//Setup event Handlers
 rwis=new Array();
 viewed_areas=new Array();
 setupIcons(9);
 setupHandlers();
 

 

 if (clusterer == null) {
 clusterer = new Clusterer(map1);
 clusterer.SetIcon(baseicon);
 }
 drawRWISMap();
// rwisVisible=true;
}
function mapRegion(location,zfactor) {
 map1.setCenter(location,zfactor);
}


//JZK added 03.13.2008

function addKML()
{
  //alert('add kml to map');
  for (i=0;i<kmlTotal;i++)
  {
    map1.addOverlay(kmlParts[i]);
  }
  
}


function removeKML()
{
  //alert('remove kml from map');
  for (i=0;i<kmlTotal;i++)
  {
   map1.removeOverlay(kmlParts[i]);
  }
  //map1.clearOverlays();
}



function toggleMyKml() {
      if (kmlToggleState == 1) {
        //map1.removeOverlay(geoXml);
        removeKML();
        kmlToggleState = 0;
      } else {
        //map1.addOverlay(geoXml);
        addKML();
        kmlToggleState = 1;
      }
    }


/*
function toggleMyKml() {
      if (kmlToggleState == 1) {
        map1.removeOverlay(geoXml);
        kmlToggleState = 0;
      } else {
        map1.addOverlay(geoXml);
        kmlToggleState = 1;
      }
    }

*/

function setupHandlers() {
 //User Moves Main Map
 GEvent.addListener(map1, "moveend",doZoomHandle);
 //GEvent.addListener(map1, "zoom",drawMapExtent);
 //GEvent.addDomListener(document.getElementById("map"), "DOMContentLoaded", openProgress)
}



function haveWeSeenthis(new_area){
var seenIt=false;
//alert(viewed_areas.length);
 for(var i = 0; i < viewed_areas.length; i++) {
  if (viewed_areas[i].containsBounds(new_area)==true) {
   seenIt=true;
   break;
  }
 }
return seenIt;
}
function showProgress(){
 var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(200 , 200 )); 
 obj=document.getElementById("placeHolder");
 pos.apply(obj);
 obj.style.visibility="visible";
}

function openProgress(){

}
function pause(numberMillis) {
        var dialogScript = 
           'window.setTimeout(' +
           ' function () { window.close(); }, ' + numberMillis + ');';
        var result = 
// For IE5.
         window.showModalDialog(
           'javascript:document.writeln(' +
            '"<script>' + dialogScript + '<' + '/script>")');

/* For NN6, but it requires a trusted script.
         openDialog(
           'javascript:document.writeln(' +
            '"<script>' + dialogScript + '<' + '/script>"',
           'pauseDialog', 'modal=1,width=10,height=10');
 */
}
function hideProgress(){
  obj=document.getElementById("placeHolder");
  obj.style.visibility="hidden";
}

function drawRWISMap(){
 showProgress();
 stn_http_request = new GXmlHttp.create(); 
 stn_http_request.open("GET","test_rwis.jsp",true);
 stn_http_request.onreadystatechange = getStnContents;
 stn_http_request.send(null);
}
function doZoomHandle() {
dummy_zoom=true;
drawMapExtent;
}
function drawMapExtent(){
  if (dummy_zoom!=false) {
  alert('Draw Map Start');
  showProgress();
  var new_bounds = map1.getBounds();
  var current_center = map1.getCenter();
  var required_Zoom=map1.getBoundsZoomLevel(new_bounds);
  //This dummy zoom forces clusterer to recluster
  mapRegion(current_center,required_Zoom);
  hideProgress(); 
  dummy_zoom=false;
  alert('Draw Map End');
  }
 }


function Checkbar(x) {
  if (x==false) {
    map1.removeControl(mapBar);
   }
   else 
   {
    mapBar=new GMapTypeControl();
	map1.addControl(mapBar);
   } 
}

function showExtent(x)  {
 if (x==true) {
  var mapareas=map1.getBounds();
  alert(mapareas);
   } 
 } 
function Checkscale(x) {
 if (x==false) {
    map1.removeControl(scalebar);
   }
   else 
   {
    scalebar=new GScaleControl();
	map1.addControl(scalebar);
   } 
 }

function Checkgraph(x) {
  if (x==false) {
    showGraph=false;
   }
   else
   {
    showGraph=true;
   }
}

function Checkzoom(x) {
  if (x==false) {
    map1.removeControl(zoomBar);
   }
   else 
   {
    zoomBar=new GLargeMapControl();
	map1.addControl(zoomBar);
   }
}

function setupIcons(level) {
 baseicon = new GIcon();
 baseicon.image = "station25_2.png";
 baseicon.shadow = "mm_20_shadow.png";
 imagew=33;
 baseicon.iconSize = new GSize(imagew,imagew);
 baseicon.shadowSize = new GSize(imagew, imagew+5);
 baseicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 baseicon.infoWindowAnchor = new GPoint(2, 2);
 baseicon.infoShadowAnchor = new GPoint(2, 2);
 imagew=17;
 ahoursicon = new GIcon();
 //
 ahoursicon.image = "24_hours.png";
 //ahoursicon.shadow = "mm_20_shadow.png";
 ahoursicon.iconSize = new GSize(imagew,imagew);
 //ahoursicon.shadowSize = new GSize(imagew, imagew+5);
 ahoursicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 ahoursicon.infoWindowAnchor = new GPoint(2, 2);
 ahoursicon.infoShadowAnchor = new GPoint(2, 2);
 //
 bhoursicon = new GIcon();
 bhoursicon.image = "48_hours.png";
 //bhoursicon.shadow = "mm_20_shadow.png";
 bhoursicon.iconSize = new GSize(imagew,imagew);
 //bhoursicon.shadowSize = new GSize(imagew, imagew+5);
 bhoursicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 bhoursicon.infoWindowAnchor = new GPoint(2, 2);
 bhoursicon.infoShadowAnchor = new GPoint(2, 2);
//
 choursicon = new GIcon();
 choursicon.image = "72_hours.png";
 //choursicon.shadow = "mm_20_shadow.png";
 choursicon.iconSize = new GSize(imagew,imagew);
 //choursicon.shadowSize = new GSize(imagew, imagew+5);
 choursicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 choursicon.infoWindowAnchor = new GPoint(2, 2);
 choursicon.infoShadowAnchor = new GPoint(2, 2);
//
 lastweekicon = new GIcon();
 lastweekicon.image = "7_days.png";
 //lastweekicon.shadow = "mm_20_shadow.png";
 lastweekicon.iconSize = new GSize(imagew,imagew);
 //lastweekicon.shadowSize = new GSize(imagew, imagew+5);
 lastweekicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 lastweekicon.infoWindowAnchor = new GPoint(2, 2);
 lastweekicon.infoShadowAnchor = new GPoint(2, 2);
//
 lastmonthicon = new GIcon();
 lastmonthicon.image = "last_month.png";
 //lastmonthicon.shadow = "mm_20_shadow.png";
 lastmonthicon.iconSize = new GSize(imagew,imagew);
 //lastmonthicon.shadowSize = new GSize(imagew, imagew+5);
 lastmonthicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 lastmonthicon.infoWindowAnchor = new GPoint(2, 2);
 lastmonthicon.infoShadowAnchor = new GPoint(2, 2);
//
 morelastmonth_icon = new GIcon();
 morelastmonth_icon.image = "more_than_month.png";
 //morelastmonth_icon.shadow = "mm_20_shadow.png";
 morelastmonth_icon.iconSize = new GSize(imagew,imagew);
 //morelastmonth_icon.shadowSize = new GSize(imagew, imagew+5);
 morelastmonth_icon.iconAnchor = new GPoint(imagew /2, imagew/2);
 morelastmonth_icon.infoWindowAnchor = new GPoint(2, 2);
 morelastmonth_icon.infoShadowAnchor = new GPoint(2, 2);
// 
 nofoiicon = new GIcon();
 nofoiicon.image = "no_foi.png";
 //nofoiicon.shadow = "mm_20_shadow.png";
 nofoiicon.iconSize = new GSize(imagew,imagew);
 //nofoiicon.shadowSize = new GSize(imagew, imagew+5);
 nofoiicon.iconAnchor = new GPoint(imagew /2, imagew/2);
 nofoiicon.infoWindowAnchor = new GPoint(2, 2);
 nofoiicon.infoShadowAnchor = new GPoint(2, 2);
}
function needToadd(site){
 var matched=false;
 for(var i = 0; i < viewed_areas.length; i++) {
  //alert(viewed_areas[i]);
  if (viewed_areas[i].contains(site)==true){
   matched=true;
   break;
  }
 }
return matched;
}
function getStnContents() {
var i;

if (stn_http_request.readyState == 4) {
  if (stn_http_request.status == 200) {
  	  var stnxmlDoc = stn_http_request.responseXML;
      var markers = stnxmlDoc.documentElement.getElementsByTagName("marker");
        if (markers.length >0) {
           i = markers.length-1;
           do
           {
             var RWISpoint= new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lon")));
             var link1 = markers[i].getAttribute("stn_id");
             var display = markers[i].getAttribute("stn_name");	
             var display2 = markers[i].getAttribute("org_name"); 
             var lastobstime = markers[i].getAttribute("latest_data");
             var org_url = markers[i].getAttribute("url");
             var org_cam = markers[i].getAttribute("cam_enabled");
             if (org_cam == null) {
               org_cam="N";
             }
             if (org_url == null) {
              org_url="N/A";
             }
             var is_foi = markers[i].getAttribute("freedom");
             marker = createMarker(RWISpoint, display, link1, display2,org_url,lastobstime,is_foi,org_cam);
             var html="<b><font face='Tahoma' size='1'>"+display+"</b></font>";
             //var html="<b><font face='Tahoma' size='1'>"+display+"</b><p><b>lat : "+RWISpoint.lat()+"</b></p><b>lon : "+RWISpoint.lng()+"</b></font>";
             clusterer.AddMarker(marker, html)
             //rwis.push(link1);
           --i;
           }
           while(i>-1);
           hideProgress();
          }
          else
          {
           noService();  
          }
       
        }
        doRouteTiles();
      }
    }
function noService() {
var service_message="<p><b>"+document.getElementById("smsg").innerHTML+"</p></b>";
document.getElementById("info").innerHTML = service_message; 
hideProgress();
}
function iconType(times) {
var iconItem=1;
if (times>=2073600) { iconItem=6 }
if (times<2073600) {iconItem=5}
if (times<=604800) {iconItem=4}
if (times<=259200) {iconItem=3}
if (times<=172800) {iconItem=2}
if (times<=86400) { iconItem=1 }
return iconItem;
}
function createMarker(point, display,link1,display2,url,lasttime,active,camera) {  
  var keyimage; 
  if (active == "Y") {
  var iconIs = iconType(lasttime);
  switch (iconIs)
  {
  case 1:
   var icon= new GIcon(ahoursicon);
   keyimage = "24_hours.jpg";
   break;
  case 2:
   var icon= new GIcon(bhoursicon);
    keyimage = "48_hours.jpg";
   break; 
  case 3:
   var icon= new GIcon(choursicon);
    keyimage = "72_hours.jpg";
   break;
  case 4:
   var icon= new GIcon(lastweekicon);
    keyimage = "7_days.jpg";
   break;
  case 5:
   var icon= new GIcon(lastmonthicon);
    keyimage = "last_month.jpg";
   break;
  case 6:
   var icon= new GIcon(morelastmonth_icon);
   keyimage = "more_than_month.jpg";
   break;
  }
  }
  else
  {
  var icon= new GIcon(nofoiicon);
  keyimage = "no_foi.jpg";
  }

var marker=new GMarker(point, icon, false);
marker.tooltip = '<div class="tooltip"><font face="Tahoma" size="1">'+display+'</font></div>';
//marker.tooltip = '<div class="tooltip"><font face="Tahoma" size="1">'+display+"<b><p>lat : "+point.lat()+"</b></p>"+"<b>lon : "+point.lng()+"</b></font></div>";
 
//  ======  The new marker "mouseover" and "mouseout" listeners  ======
GEvent.addListener(marker,"mouseover", function() {
showTooltip(marker);
});        
GEvent.addListener(marker,"mouseout", function() {
tooltip.style.visibility="hidden"
}); 

//
GEvent.addListener(marker, "click", function(){
/*display station meta data
*/
//var html = '<img src="'+keyimage+'"><b>Station : '+ display + '</b>';
//var urltext;
//if (url!='N/A'){
//urltext = '<p><b>Organisation : <a href="http://'+ url +'" target="_blank">' + display2 + '</a></b></p>';
//}
//else
//{
//urltext = "<p><b>Organisation : "+display2+"</b></p>";
//}
//html=html+urltext;
//html=html+"<p></p>";
//textDisplay=html;
//if (active == "Y" )
//{
//clickedMarker=marker;
//getStnData(link1);
//}
//else
//{
//showStationMetaData();
//}
//var reqTxt="Dummy Get"+'\n'+display+'\n'+link1+'\n'+active+'\n'+url+'\n'+keyimage+'\n'+display2+'\n';
var reqTxt=base_URL+"getObsData.jsp?id="+link1+"&url="+url+"&org="+display2+"&name="+display+"&icon="+keyimage+"&active="+active+"&camera="+camera;
dummyGetData(reqTxt);
//dummyGetData(link1,url,display2,display,keyimage,active,camera);
//alert("Dummy Get"+'\n'+display+'\n'+link1+'\n'+active+'\n'+url+'\n'+keyimage+'\n'+display2);
});
return marker;
}

function setCameraAvail(camera) {
  var isat = camera.indexOf("&camera",1)+8;
  var l = camera.length;
  var rest_cam=camera.substring(isat,l);
//  alert("Camera = "+rest_cam);
  haveCamera=rest_cam;
//  alert("Camera = "+haveCamera);
  setCameraID(camera);

}

function setCameraID(camera) {
  var isat = camera.indexOf("id=",1)+1;
  var l = camera.indexOf("&url",1);
  var test_cam=camera.substring(isat,l);
  isat = test_cam.indexOf("&id",1)+3;
  l = test_cam.length;
  var rest_cam=test_cam.substring(isat,l);
//  alert("Cam ID = "+rest_cam);
  camID=rest_cam;
}

function dummyGetData(siteID){
//alert('This will request obs for '+siteID+' when released');
getStnData2(siteID);
}

function getStnData2 (id) {
        setCameraAvail(id);
        
        stn_data_request = false;
        getData=false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            stn_data_request = new XMLHttpRequest();
//            if (stn_data_request.overrideMimeType) {
//                stn_data_request.overrideMimeType('text/xml');
//            }
        } else if (window.ActiveXObject) { // IE
            try {
                stn_data_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    stn_data_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
        }

        if (!stn_data_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
       var queryStr=id; 
       stn_data_request.onreadystatechange = getStnObsHTML;
       stn_data_request.open('GET', queryStr, true);
       stn_data_request.send(null);
}

function getStnObsHTML() {
 if (stn_data_request.readyState == 4) {
 if (stn_data_request.status == 200) {
      //alert(stn_data_request.responseText);
       var txtToDisplay = stn_data_request.responseText;
       obj=document.getElementById("camera");
       obj.style.visibility="hidden";       
       document.getElementById("info").innerHTML = txtToDisplay; 
      // alert("Camera = "+haveCamera);
         if (haveCamera == "Y"){
           var curltext = '<p><img src='+base_URL+'"rwisImage.jsp?stnID='+ camID+'" width="160" height="120"></p>';
           document.getElementById("camera").innerHTML = curltext;
           obj.style.visibility="visible"; 
         }
        } 
        else 
        {
        alert('There was a problem with the request.');
     }
  }

}
function showStationMetaData(){
document.getElementById("info").innerHTML = textDisplay;
}
function getStnData(id) {
        stn_data_request = false;
        getData=false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            stn_data_request = new XMLHttpRequest();
            if (stn_data_request.overrideMimeType) {
                stn_data_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                stn_data_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    stn_data_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
        }

        if (!stn_data_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
       var queryStr=base_URL+"getObsData.jsp?id="+id 
       stn_data_request.onreadystatechange = getStnObs;
       stn_data_request.open('GET', queryStr, true);
       stn_data_request.send(null);

    }


function getStnObs() {
 if (stn_data_request.readyState == 4) {
 if (stn_data_request.status == 200) {
     var stnDoc = stn_data_request.responseXML;
    //  alert(stn_data_request.responseText);
      var xmlDoc = new REXML(stn_data_request.responseText);
      //alert(xmlDoc.XML);     
      //alert("The root element " + xmlDoc.rootElement.name + " has "+ xmlDoc.rootElement.childElements.length + " child elements.");
       var i=0;
       var k=0;
       var result_html="";
       for (var xmlIterator=new JSXMLIterator(xmlDoc.rootElement); xmlIterator.getNextNode();) {
       // xmleElem =xmlIterator.xmleElem;
        if(i==1) {
        var local =xmlIterator.xmleElem.attribute("localtime");
        result_html="<p><b>Time : "+local+"</b></p>"
        }
       if (i>1) {
       var obs_code = xmlIterator.xmleElem.attribute("code");
       var obs_name = xmlIterator.xmleElem.attribute("name");
       var obs_unit = xmlIterator.xmleElem.attribute("unit");
       var obs_number = xmlIterator.xmleElem.attribute("no");
       var obs_value= xmlIterator.xmleElem.text;
       if (obs_name!=""){
       result_html=result_html+"<p><b>"+obs_name+" ("+obs_number+") "+obs_value+ "  </b><b>"+obs_unit+"</b></p>";
       // Here we will add our sensor to the array in the session bean in case we have to draw a graph or 2
       //var graphable="Y";
       //if (obs_code=="ST") {graphable="N"}
       //if (obs_code=="WS") {graphable="N"}
       //var sensor_http_request = new GXmlHttp.create(); 
       //sensor_http_request.open("GET","addSensorData.jsp?stype="+obs_code+"&sname="+obs_name+"&sunit="+obs_unit+"&svalue="+obs_value+"&sgraph="+graphable);
       //sensor_http_request.send(null);
       }
       }
       i++;
       }
       textDisplay=textDisplay+result_html;
       document.getElementById("info").innerHTML = textDisplay; 
        } 
        else 
        {
                alert('There was a problem with the request.');
         }
  }

}
   
    function getObsByGraphic (id) {
        stn_data_request = false;
        getData=false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            stn_data_request = new XMLHttpRequest();
            if (stn_data_request.overrideMimeType) {
                stn_data_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                stn_data_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    stn_data_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
        }

        if (!stn_data_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
       stn_data_request.onreadystatechange = getStnGraph;
       stn_data_request.open('GET', id, true);
       stn_data_request.send(null);

    }
    
    function getStnGraph(){
      if (stn_data_request.readyState == 4) {
          if (stn_data_request.status == 200) {
   	       var stnDoc = stn_data_request.responseText;
          document.getElementById("info").innerHTML =stnDoc;
      }
    }
    }
      function showTooltip(marker) {
      	tooltip.innerHTML = marker.tooltip;
	      var point=map1.getCurrentMapType().getProjection().fromLatLngToPixel(map1.fromDivPixelToLatLng(new GPoint(0,0),true),map1.getZoom());
	      var offset=map1.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map1.getZoom());
	      var anchor=marker.getIcon().iconAnchor;
	      var width=marker.getIcon().iconSize.width;
	      var height=tooltip.clientHeight;
	      var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
        pos.apply(tooltip);
	      tooltip.style.visibility="visible";
      }
