// this is the Javascript that makes the AURN map
// global variables
var nbopensites;
var nbclosedsites;
var loadkml=0;
var loadregions=0;
var datepoll;
var datepollchk=0;
var contentpollevel;
var contentpollevel_1;
var contentpollevel_2;
var GoogleEarthDir = "http://www.bv-aurnsiteinfo.co.uk/google-earth/";
var GoogleMapsDir = "http://www.bv-aurnsiteinfo.co.uk/googlemaps/";
var ImageExt = ".png";
var Kmzext = ".kmz";
var ImageUrl = "";
var initmapcenter = new GLatLng(55.750, -4.6500);
var alternmapcenter = new GLatLng(55.850, -6.8555);
var markers=[];
var gmarkers=[];
var gmarkerstype=[];
var maxpol = 16; // Total number of pollutants covered by AURN - including pollutants from other networks

var gmarkerslevel = new Array(5);
for (i=0; i <=4; i++) {
   gmarkerslevel[i] = new Array();
}
var LevelRange = new Array(5);
LevelRange[0] = "No Data";
LevelRange[1] = "Low";
LevelRange[2] = "Moderate";
LevelRange[3] = "High";
LevelRange[4] = "Very High";
//var geoXml;
var exml;
var mymap;
var prevdetailwin=-1;
var previnternalId=0;
var bounds = new GLatLngBounds();
var RegionOverlay=[];
var RegionOverlayHover=[];
var RegionOverlayZoom=[];
var RegionNames= ["Central Scotland","East Midlands","Eastern","Greater London","Highlands","North East","North East Scotland","North Wales","North West and Merseyside","Northern Ireland","Scottish Borders","South East","South Wales","South West","West Midlands","Yorkshire and Humberside", "Highlands", "Highlands"];

var GELink_html;
var GELinkControl;

var WelcomeWindow_html;
var WelcomeWindowControl;

var ToggleWelcome_html;
var ToggleWelcomeControl;

var HelpWindow_html;
var HelpWindowControl;

var ToggleHelp_html;
var ToggleHelpControl;

var LoadMessageControl;

var ZoomAndPanControl;

var clickedPixel;
var contextmenu;
var markertemp;

var showclosed=0;
var countclosed=0;

var menustatus = 1;

var currentarea;
var namearea;

var ii=0;
var kk=0;
var timeOut1=1;

var KmlName=[];

var histo = new Array(4);
histo[0] = 0;
histo[1] = 3;
histo[2] = "Central Scotland";
histo[3] = "TypeArea1";
for (i=0; i <=15; i++) {
   KmlName[i] = GoogleMapsDir + RegionNames[i] + Kmzext;
}


var ImgOverlayName = new Array(18);
for (i=0; i <=17; i++) {
   ImgOverlayName[i] = new Array(9);
   if(i == 4) {
      // we do nothing
   } else if (i == 16) {
      ImgOverlayName[i][0] = GoogleMapsDir + RegionNames[i] + "Part1" + ImageExt;
      ImgOverlayName[i][5] = GoogleMapsDir + RegionNames[i] + "ZoomPart1" + ImageExt;
      ImgOverlayName[i][8] = GoogleMapsDir + RegionNames[i] + "HoverPart1" + ImageExt;
   } else if (i == 17) {
      ImgOverlayName[i][0] = GoogleMapsDir + RegionNames[i] + "Part2" + ImageExt;
      ImgOverlayName[i][5] = GoogleMapsDir + RegionNames[i] + "ZoomPart2" + ImageExt;
      ImgOverlayName[i][8] = GoogleMapsDir + RegionNames[i] + "HoverPart2" + ImageExt;
   } else {
      ImgOverlayName[i][0] = GoogleMapsDir + RegionNames[i] + ImageExt;
      ImgOverlayName[i][5] = GoogleMapsDir + RegionNames[i] + "Zoom" + ImageExt;
      ImgOverlayName[i][8] = GoogleMapsDir + RegionNames[i] + "Hover" + ImageExt;
   }
}

ImgOverlayName[0][1] = 54.9976;
ImgOverlayName[0][2] = -5.0589;
ImgOverlayName[0][3] = 56.453;
ImgOverlayName[0][4] = -2.3641;
ImgOverlayName[0][6] = (ImgOverlayName[0][1] + ImgOverlayName[0][3]) / 2;
ImgOverlayName[0][7] = (ImgOverlayName[0][2] + ImgOverlayName[0][4]) / 2;

ImgOverlayName[1][1] = 51.9725;
ImgOverlayName[1][2] = -2.0533;
ImgOverlayName[1][3] = 53.6152;
ImgOverlayName[1][4] = 0.3636;
ImgOverlayName[1][6] = (ImgOverlayName[1][1] + ImgOverlayName[1][3]) / 2;
ImgOverlayName[1][7] = (ImgOverlayName[1][2] + ImgOverlayName[1][4]) / 2;

ImgOverlayName[2][1] = 51.4523;
ImgOverlayName[2][2] = -0.7528;
ImgOverlayName[2][3] = 52.9891;
ImgOverlayName[2][4] = 1.7647;
ImgOverlayName[2][6] = (ImgOverlayName[2][1] + ImgOverlayName[2][3]) / 2;
ImgOverlayName[2][7] = (ImgOverlayName[2][2] + ImgOverlayName[2][4]) / 2;

ImgOverlayName[3][1] = 51.2695;
ImgOverlayName[3][2] = -0.5009;
ImgOverlayName[3][3] = 51.6821;
ImgOverlayName[3][4] = 0.282;
ImgOverlayName[3][6] = (ImgOverlayName[3][1] + ImgOverlayName[3][3]) / 2;
ImgOverlayName[3][7] = (ImgOverlayName[3][2] + ImgOverlayName[3][4]) / 2;

ImgOverlayName[4][1] = 55.2877;
ImgOverlayName[4][2] = -7.5599;
ImgOverlayName[4][3] = 60.8462;
ImgOverlayName[4][4] = -0.7592;
ImgOverlayName[4][6] = (ImgOverlayName[4][1] + ImgOverlayName[4][3]) / 2;
ImgOverlayName[4][7] = (ImgOverlayName[4][2] + ImgOverlayName[4][4]) / 2;

ImgOverlayName[5][1] = 54.4422;
ImgOverlayName[5][2] = -2.6942;
ImgOverlayName[5][3] = 55.8107;
ImgOverlayName[5][4] = -0.7913;
ImgOverlayName[5][6] = (ImgOverlayName[5][1] + ImgOverlayName[5][3]) / 2;
ImgOverlayName[5][7] = (ImgOverlayName[5][2] + ImgOverlayName[5][4]) / 2;

ImgOverlayName[6][1] = 55.9578;
ImgOverlayName[6][2] = -4.8527;
ImgOverlayName[6][3] = 57.7248;
ImgOverlayName[6][4] = -1.766;
ImgOverlayName[6][6] = (ImgOverlayName[6][1] + ImgOverlayName[6][3]) / 2;
ImgOverlayName[6][7] = (ImgOverlayName[6][2] + ImgOverlayName[6][4]) / 2;

ImgOverlayName[7][1] = 52.3628;
ImgOverlayName[7][2] = -4.7672;
ImgOverlayName[7][3] = 53.4324;
ImgOverlayName[7][4] = -2.7153;
ImgOverlayName[7][6] = (ImgOverlayName[7][1] + ImgOverlayName[7][3]) / 2;
ImgOverlayName[7][7] = (ImgOverlayName[7][2] + ImgOverlayName[7][4]) / 2;

ImgOverlayName[8][1] = 52.945;
ImgOverlayName[8][2] = -4.7876;
ImgOverlayName[8][3] = 55.1836;
ImgOverlayName[8][4] = -1.9124;
ImgOverlayName[8][6] = (ImgOverlayName[8][1] + ImgOverlayName[8][3]) / 2;
ImgOverlayName[8][7] = (ImgOverlayName[8][2] + ImgOverlayName[8][4]) / 2;

ImgOverlayName[9][1] = 54.0228;
ImgOverlayName[9][2] = -8.1763;
ImgOverlayName[9][3] = 55.2519;
ImgOverlayName[9][4] = -5.4318;
ImgOverlayName[9][6] = (ImgOverlayName[9][1] + ImgOverlayName[9][3]) / 2;
ImgOverlayName[9][7] = (ImgOverlayName[9][2] + ImgOverlayName[9][4]) / 2;

ImgOverlayName[10][1] = 54.6328;
ImgOverlayName[10][2] = -5.1865;
ImgOverlayName[10][3] = 55.9463;
ImgOverlayName[10][4] = -2.0317;
ImgOverlayName[10][6] = (ImgOverlayName[10][1] + ImgOverlayName[10][3]) / 2;
ImgOverlayName[10][7] = (ImgOverlayName[10][2] + ImgOverlayName[10][4]) / 2;

ImgOverlayName[11][1] = 50.5729;
ImgOverlayName[11][2] = -1.9586;
ImgOverlayName[11][3] = 52.1921;
ImgOverlayName[11][4] = 1.4488;
ImgOverlayName[11][6] = (ImgOverlayName[11][1] + ImgOverlayName[11][3]) / 2;
ImgOverlayName[11][7] = (ImgOverlayName[11][2] + ImgOverlayName[11][4]) / 2;

ImgOverlayName[12][1] = 51.3803;
ImgOverlayName[12][2] = -5.316;
ImgOverlayName[12][3] = 52.5578;
ImgOverlayName[12][4] = -2.6498;
ImgOverlayName[12][6] = (ImgOverlayName[12][1] + ImgOverlayName[12][3]) / 2;
ImgOverlayName[12][7] = (ImgOverlayName[12][2] + ImgOverlayName[12][4]) / 2;

ImgOverlayName[13][1] = 49.9577;
ImgOverlayName[13][2] = -5.7083;
ImgOverlayName[13][3] = 52.1139;
ImgOverlayName[13][4] = -1.4912;
ImgOverlayName[13][6] = (ImgOverlayName[13][1] + ImgOverlayName[13][3]) / 2;
ImgOverlayName[13][7] = (ImgOverlayName[13][2] + ImgOverlayName[13][4]) / 2;

ImgOverlayName[14][1] = 51.8229;
ImgOverlayName[14][2] = -3.2385;
ImgOverlayName[14][3] = 53.2192;
ImgOverlayName[14][4] = -1.1813;
ImgOverlayName[14][6] = (ImgOverlayName[14][1] + ImgOverlayName[14][3]) / 2;
ImgOverlayName[14][7] = (ImgOverlayName[14][2] + ImgOverlayName[14][4]) / 2;

ImgOverlayName[15][1] = 53.3048;
ImgOverlayName[15][2] = -2.5642;
ImgOverlayName[15][3] = 54.5562;
ImgOverlayName[15][4] = 0.149;
ImgOverlayName[15][6] = (ImgOverlayName[15][1] + ImgOverlayName[15][3]) / 2;
ImgOverlayName[15][7] = (ImgOverlayName[15][2] + ImgOverlayName[15][4]) / 2;

ImgOverlayName[16][1] = 55.2877;
ImgOverlayName[16][2] = -7.5599;
ImgOverlayName[16][3] = 57.6307;
ImgOverlayName[16][4] = -3.3847;
ImgOverlayName[16][6] = (ImgOverlayName[4][1] + ImgOverlayName[4][3]) / 2;
ImgOverlayName[16][7] = (ImgOverlayName[4][2] + ImgOverlayName[4][4]) / 2;

ImgOverlayName[17][1] = 57.6307;
ImgOverlayName[17][2] = -7.5599;
ImgOverlayName[17][3] = 60.8464;
ImgOverlayName[17][4] = -0.7589;
ImgOverlayName[17][6] = (ImgOverlayName[4][1] + ImgOverlayName[4][3]) / 2;
ImgOverlayName[17][7] = (ImgOverlayName[4][2] + ImgOverlayName[4][4]) / 2;

// set image list
var imgsitetype = new Array(37);
imgsitetype[0]= "KerbsideGM";
imgsitetype[1]= "RoadsideGM";
imgsitetype[2]= "UrbcentreGM";
imgsitetype[3]= "UrbanbackgroundGM";
imgsitetype[4]= "SuburbanGM";
imgsitetype[5]= "IndustrialGM";
imgsitetype[6]= "RuralGM";
imgsitetype[7]= "RuralRemoteGM";
imgsitetype[8]= "AirportGM";
imgsitetype[9]= "KerbsideGMclosed";
imgsitetype[10]= "RoadsideGMclosed";
imgsitetype[11]= "UrbcentreGMclosed";
imgsitetype[12]= "UrbanbackgroundGMclosed";
imgsitetype[13]= "SuburbanGMclosed";
imgsitetype[14]= "IndustrialGMclosed";
imgsitetype[15]= "RuralGMclosed";
imgsitetype[16]= "RuralRemoteGMclosed";
imgsitetype[17]= "AirportGMclosed";
imgsitetype[18]= "NOxGM";
imgsitetype[19]= "PM10GM";
imgsitetype[20]= "PM25GM";
imgsitetype[21]= "SO2GM";
imgsitetype[22]= "COGM";
imgsitetype[23]= "O3GM";
imgsitetype[24]= "HCGM";
imgsitetype[25]= "NOxGMclosed";
imgsitetype[26]= "PM10GMclosed";
imgsitetype[27]= "PM25GMclosed";
imgsitetype[28]= "SO2GMclosed";
imgsitetype[29]= "COGMclosed";
imgsitetype[30]= "O3GMclosed";
imgsitetype[31]= "HCGMclosed";
imgsitetype[32]= "current_nodata_small";
imgsitetype[33]= "current_low_small";
imgsitetype[34]= "current_moderate_small";
imgsitetype[35]= "current_high_small";
imgsitetype[36]= "current_veryhigh_small";

// preload images
var imageObj = new Array();
for (counter in imgsitetype) {
   imageObj[counter] = new Image();
   imageObj[counter].src= GoogleMapsDir + imgsitetype[counter] + ".png";
}

var PollArray=[];
PollArray[0] = "NO2";
PollArray[1] = "PM10";
PollArray[2] = "PM25";
PollArray[3] = "SO2";
PollArray[4] = "CO";
PollArray[5] = "O3";
PollArray[6] = "HC";
var sidebarcontent = "";
var sidebarcontent2 = "";
var regionlist = "";
var regionlist2 = "";
var listcurrent = "";
var listall = "";

// Create marker icon
var baseIcon = new GIcon();
baseIcon.image = GoogleMapsDir + "RoadsideGM.png";
baseIcon.shadow = GoogleMapsDir + "shadow-Roadside_smallGM.png";
baseIcon.iconSize = new GSize(20, 20);
baseIcon.shadowSize = new GSize(20, 13);
baseIcon.iconAnchor = new GPoint(6, 20);
baseIcon.infoWindowAnchor = new GPoint(5, 1);
baseIcon.transparent = GoogleMapsDir + "RoadsideTransparent_small.png";

var icons=[];


function DefineIcon(icontypestation, status) {
   var icontype;
   if ((typeof(icontypestation)=="undefined") || (icontypestation==null)) {
      icontype = "red";
   } else {
      if(icontypestation=="Kerbside") {
      icontype = "KerbsideGM";
      }
      if(icontypestation=="Roadside") {
	  icontype = "RoadsideGM";
      }
      if(icontypestation=="Urban Centre") {
      icontype = "UrbcentreGM";
      }
      if(icontypestation=="Urban Background") {
	  icontype = "UrbanbackgroundGM";
      }
      if(icontypestation=="Suburban") {
	  icontype = "SuburbanGM";
      }
      if(icontypestation=="Urban Industrial") {
	  icontype = "IndustrialGM";
      }
      if(icontypestation=="Rural") {
	  icontype = "RuralGM";
      }
      if(icontypestation=="Rural - Remote") {
	  icontype = "RuralRemoteGM";
      }
      if(icontypestation=="Airport") {
	  icontype = "AirportGM";
      }
   }
   if(status=="Closed") {
      icontype = icontype + "closed";
   }

   if (!icons[icontype]) {
      var icon = new GIcon(baseIcon);
      icon.image = GoogleMapsDir + icontype +".png";
      icons[icontype]=icon;
   }
   return icons[icontype];
}
function ShowPollOtherNetworks() {
   if (document.getElementById('othernetworks').checked) {
      document.getElementById('PolOtherNetworks').style.display = 'block';
      
      if(WelcomeWindowControl.isVisible) {
         WelcomeWindowControl.setVisible(false);
         document.getElementById('ToggleWelcome').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButtonLarge1.png)';
      }
      if(HelpWindowControl.isVisible) {
         HelpWindowControl.setVisible(false);
         document.getElementById('ToggleHelp').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButton1.png)';
      }      
      
      OtherNetWindowControl.setVisible(true);      
   } else {
      document.getElementById('PolOtherNetworks').style.display = 'none';   
      if(OtherNetWindowControl.isVisible) {
         OtherNetWindowControl.setVisible(false);
      }
   }
}
function AllMarkersVisibility(nb, typeview, allvar, maxtype){
   var stationtemp;
   var vartemp="closedsites"+nb;
   if (!(nb==4) && (document.getElementById(vartemp).checked)) {
      showclosed=1;
   } else {
      showclosed=0;
   }
   if (document.getElementById(allvar).checked) { // show the marker and select all checkboxes - (only if not Typepoll)
// WE MAKE SURE ALL MARKERS ARE SHOWN - (FOR CLOSED STATIONS DEPENDING ON OPTION CHECKED OR NOT)
      for (var i=0;i<gmarkerstype.length;i++) {
         if(gmarkerstype[i].isHidden()) {
            if(showclosed==0) {
               if(gmarkerstype[i].status=="Closed") {
                  continue;
               }
            }
            gmarkerstype[i].show();
         } else { // Marker is shown
            if(showclosed==0) { // then we have to hide closed stations
               if(gmarkerstype[i].status=="Closed") {
                  gmarkerstype[i].hide();
               }
            }
         }
      }
      
      if(loadregions == 1) { // if regions have been loaded
         if(typeview=="TypeArea") { // we show all region polygons
            for (i=0;i<=17;i++) {
               if(i == 4) {
                  // We do nothing
               } else if(i == 3) { // London Area - Allow display region at closer zoom
                     if((RegionOverlayZoom[i].isHidden()) && (mymap.getZoom()<=10)) {
                        RegionOverlayZoom[i].show();
                     }
               } else {
                     if((RegionOverlayZoom[i].isHidden()) && (mymap.getZoom()<=8)) {
                        RegionOverlayZoom[i].show();
                     }
               }
            }
         } else { // we hide all region polygons
            for (i=0;i<=17;i++) {
               if(i == 4) {
                  // We do nothing
               } else {
                  if(!(RegionOverlayZoom[i].isHidden())) {
                     RegionOverlayZoom[i].hide();
                  }
               }
            }
         } 
      }
      
      
      if(typeview=="TypePol") {
      // enable checkbox "Include other networks"
         document.getElementById('othernetworks').disabled=false;
         document.getElementById('ChkbxOther').style.color="#000000";         
      // We make sure all icons are changed before showing markers
         var tempvar;
         for (var i=0;i<gmarkerstype.length;i++) {
            tempvar = gmarkerstype[i].iconmainpollutant;
            gmarkerstype[i].setImage(tempvar);
            gmarkerstype[i].oldImagePath = tempvar;
         }
      } else {
         for (var i=1;i<=maxtype;i++) {
	        stationtemp=typeview+i;
	        document.getElementById(stationtemp).checked=true;
         }
         if(typeview=="CurLev"){ // Display current pollution levels - we also change all icons
            for (var i=0;i<gmarkerstype.length;i++) {
               if(gmarkerstype[i].status=="Active") { // Closed sites not relevant here
                  tempvar = gmarkerstype[i].iconcurlevel;
                  gmarkerstype[i].setImage(tempvar);
                  gmarkerstype[i].oldImagePath = tempvar;
               }
            }
         } else { // view by typestation or geo area
            if((menustatus == "2") || (menustatus == "4")) {
               for (var i=0;i<gmarkerstype.length;i++) {
                  gmarkerstype[i].setImage(gmarkerstype[i].icontypestation);
                  gmarkerstype[i].oldImagePath = gmarkerstype[i].icontypestation;
               }
               if(typeview=="TypeArea") {
                  menustatus = 3;
               }
            }
         }
      }
   } else { // hide the markers and unselect all checkboxes - (only if not Typepoll)
      for (var i=1;i<=maxtype;i++) {
	     stationtemp=typeview + i;
	     document.getElementById(stationtemp).checked=false;
      }
      if(typeview=="TypePol") {
      } else {
         for (var j=0;j<gmarkerstype.length;j++) {
            gmarkerstype[j].hide();
         }
      }
      if (loadregions == 1) { // if regions have been loaded
         if(typeview=="TypeArea") {
            for (i=0;i<=17;i++) {
               if(i == 4) {
                  // We do nothing
               } else {
                  if(!(RegionOverlayZoom[i].isHidden())) {
                     RegionOverlayZoom[i].hide();
                  }
               }
            }
         }
      }
   }
} // end of function AllMarkersVisibility

function MarkersVisibility(number, category, namevar, typenamevar){
   histo[0] = number;
   histo[1] = category;
   histo[2] = namevar;
   histo[3] = typenamevar;
   showclosed=0;
   var vartemp="closedsites"+category;
   if(!(category==4)) {
      if (document.getElementById(vartemp).checked) {
         showclosed=1;
      }
   }
   if (document.getElementById(typenamevar).checked==false) { // hide the markers from selected category
      if (category==1)  { // display = station type
         document.getElementById('alltypes').checked=false;
         for (var i=0;i<gmarkerstype.length;i++) {
         	if (gmarkerstype[i].typestation==namevar)  {
               gmarkerstype[i].hide();
         	}
         }
      }
      if (category==2)  { // display = pollutant measured
         document.getElementById('allpollutants').checked=false;
         document.getElementById('othernetworks').disabled=true; // disable checkbox "othernetworks"
         document.getElementById('ChkbxOther').style.color="#CAC8BB";
      }
      if (category==3)  { // display = geographical area
         document.getElementById('allareas').checked=false;
         for (var i=0;i<gmarkerstype.length;i++) {
         	if (gmarkerstype[i].area==namevar)  {
               gmarkerstype[i].hide();
         	}
         }
         if(loadregions == 1) { // if regions have been loaded
            if (number == 4) {
               if(!(RegionOverlayZoom[16].isHidden())) {
                  RegionOverlayZoom[16].hide();
               }
               if(!(RegionOverlayZoom[17].isHidden())) {
                  RegionOverlayZoom[17].hide();
               }
            } else {
               if(!(RegionOverlayZoom[number].isHidden())) {
                  RegionOverlayZoom[number].hide();
               }
            }
         }
      }
      if (category==4)  { // display = current poll level
         document.getElementById('alllevels').checked=false;
         if(document.getElementById('singlesite').checked==true) {
            gmarkerstype[number].hide();
         } else {
            for(nn=0;nn<gmarkerslevel[number-1].length;nn++) {
               if(!(gmarkerslevel[number-1][nn].isHidden())) {
                  gmarkerslevel[number-1][nn].hide();
               }
            }
         }
      }
   } else { // show the marker again
      if (category==1)  { // display = station type
         for (var i=0;i<gmarkerstype.length;i++) {
         	if (gmarkerstype[i].typestation==namevar)  {
               if(showclosed==0) {
                  if(gmarkerstype[i].status=="Closed") {
                     if(!(gmarkerstype[i].isHidden())) {
                        gmarkerstype[i].hide();
                     }
                     continue;
                  }
               }
               gmarkerstype[i].show();
         	}
         }
      }
      if (category==2)  { // display = pollutants measured
         document.getElementById('othernetworks').disabled=true; // disable checkbox "othernetworks"
         document.getElementById('ChkbxOther').style.color="#CAC8BB";
         // WE MAKE SURE ALL MARKERS ARE SHOWN - EXCEPT CLOSED ONES IF OPTION NOT SELECTED
         for (var i=0;i<gmarkerstype.length;i++) {
            if(gmarkerstype[i].isHidden()) {
               if(showclosed==0) {
                  if(gmarkerstype[i].status=="Closed") {
                     continue;
                  }
               }
               gmarkerstype[i].show();
            } else { // Marker is shown
               if(showclosed==0) { // then we have to hide closed stations
                  if(gmarkerstype[i].status=="Closed") {
                     gmarkerstype[i].hide();
                  }
               }
            }
         }
         var nametemp = namevar + "GM";
         for (var i=0;i<gmarkerstype.length;i++) {
            ImageUrl = "";
            if(gmarkerstype[i].Poll0==namevar || gmarkerstype[i].Poll1==namevar || gmarkerstype[i].Poll2==namevar || gmarkerstype[i].Poll3==namevar || gmarkerstype[i].Poll4==namevar || gmarkerstype[i].Poll5==namevar || gmarkerstype[i].Poll6==namevar || gmarkerstype[i].Poll7==namevar || gmarkerstype[i].Poll8==namevar || gmarkerstype[i].Poll9==namevar || gmarkerstype[i].Poll10==namevar || gmarkerstype[i].Poll11==namevar || gmarkerstype[i].Poll12==namevar || gmarkerstype[i].Poll13==namevar || gmarkerstype[i].Poll14==namevar || gmarkerstype[i].Poll15==namevar) {
               if(gmarkerstype[i].status == "Closed") {
                  nametemp = namevar + "GMclosed";
               }
               ImageUrl = GoogleMapsDir + nametemp + ".png";
               gmarkerstype[i].setImage(ImageUrl);
               gmarkerstype[i].oldImagePath = ImageUrl;
            } else { // We hide the marker
               gmarkerstype[i].hide();
            }
         }
      }
      if (category==3)  {  // display = geographical area
         for (var i=0;i<gmarkerstype.length;i++) {
         	if (gmarkerstype[i].area==namevar)  {
               if(showclosed==0) {
                  if(gmarkerstype[i].status=="Closed") {
                     if(!(gmarkerstype[i].isHidden())) {
                        gmarkerstype[i].hide();
                     }
                     continue;
                  }
               }
               gmarkerstype[i].show();
         	}
         }
         if(loadregions == 1) { // if regions have been loaded         
            if (number == 4) {
               for(j=16;j<=17;j++) {
                  if((RegionOverlayZoom[j].isHidden()) && (mymap.getZoom()<=8)) {
                     RegionOverlayZoom[j].show();
                  }
               }
            } else if(number == 3) { // London area - Allow region to display at closer zoom
               if((RegionOverlayZoom[number].isHidden()) && (mymap.getZoom()<=10)) {
                  RegionOverlayZoom[number].show();
               }
            } else {
               if((RegionOverlayZoom[number].isHidden()) && (mymap.getZoom()<=8)) {
                  RegionOverlayZoom[number].show();
               }
            }
         }
      }
      if (category==4)  { // display = current poll level
         if(document.getElementById('singlesite').checked==true) {
            gmarkerstype[number].show();
         } else {
            for(nn=0;nn<gmarkerslevel[number-1].length;nn++) {
               if(gmarkerslevel[number-1][nn].isHidden()) {
                  gmarkerslevel[number-1][nn].show();
               }
            }
         }
      }
   }
}

function zoominarea(namevar1, currentarea, zoomlevel) {
   namearea = namevar1;
   if (currentarea==-1) {
      if (showclosed==1) {
         document.getElementById("closedsites3").checked = true;
      } else {
         document.getElementById("activesites3").checked = true;
      }
      var checkbx="";
      if(document.getElementById("allareas").checked==false) {
         document.getElementById("allareas").checked=true;
      }
      for (var h=1;h<=16;h++) {
         checkbx = "TypeArea"+h;
         if(document.getElementById(checkbx).checked==false) {
            document.getElementById(checkbx).checked=true;
         }
      }
      for (var i=0;i<gmarkerstype.length;i++) {
         if(gmarkerstype[i].detailOpen) {
            PdMarkerClose(i+10);
         }
         prevdetailwin=-1;
         if(gmarkerstype[i].isHidden()) {
               if(!(showclosed==1)) {
                  if(gmarkerstype[i].status=="Closed") {
                     continue;
                  }
               }
         	   gmarkerstype[i].show();
         }
      }
      mymap.setCenter(initmapcenter, zoomlevel);
      document.getElementById("Legend3").style.display = 'block';
      document.getElementById("Legend3sub").style.display = 'none';
      document.getElementById("Legend3sub").innerHTML = "";
      
      if(loadregions == 1) { // if regions have been loaded      
         for (i=0;i<=17;i++) {
            if (i == 4) {
               // We do nothing
            } else {
               if(RegionOverlayZoom[i].isHidden()) {
                  RegionOverlayZoom[i].show();
               }
            }
         }
      }      
      
      
   } else {
      if (document.getElementById("closedsites3").checked) {
         showclosed=1;
      } else {
         showclosed=0;
      }
      var temp = "All Stations";
      var count=0;
      countclosed=0;
      for (i=0;i<gmarkerstype.length;i++) {
	     if (gmarkerstype[i].area==namearea) {
            if(gmarkerstype[i].status=="Closed") {
               countclosed++;
            } else {
               count++;
            }
         }
      }
      for (i=0;i<=15;i++) {
         var tempname='TypeArea' + (i+1);
         if(!(i==currentarea) && (document.getElementById(tempname).checked==true)) {
            document.getElementById(tempname).checked=false;
         }
         if((i==currentarea) && (document.getElementById(tempname).checked==false)) {
            document.getElementById(tempname).checked=true;
         }
      }
      sidebarcontent = "";
      regionlist = "";
      regionlist2 = "";
      sidebarcontent += "<br \/>";
      sidebarcontent += '   <div id="activeclosed4" style="background-color:#ADD8E6; vertical-align:middle; padding:5px;">';
//      sidebarcontent += '   <div id="activeclosed4" style="color:white; background-image: url(http://www.bv-aurnsiteinfo.co.uk/Images/mainnav/nav_on.gif); vertical-align:middle; padding:5px;">';      
      sidebarcontent += '      <table cellpadding="0" cellspacing="0">';
      sidebarcontent += '<tr><td>&nbsp;&nbsp;<\/td><td><input type="radio" name="openclosed4" id="activesites4" onclick="ShowActive(3, \'TypeArea\', \'allareas\', 16);"><b> Show active stations only<\/b><\/td><\/tr>';
      sidebarcontent += '<tr><td>&nbsp;&nbsp;<\/td><td><input type="radio" name="openclosed4" id="closedsites4" onclick="ShowActiveClosed(3, \'TypeArea\', \'allareas\', 16);"><b> Show active and closed stations<\/b><\/td><\/tr>';

      sidebarcontent += '	   <\/table><\/div><br \/>';
      sidebarcontent += '<a href="#" onclick="zoominarea('+ "'" + temp + "'" +',-1,6);return false;"><b> Back To All Stations<\/b><\/a><br \/>';
      sidebarcontent += "<br \/>";
      regionlist += '<div id="regionlist"><b> ' + count + ' active stations in ' + namearea + ' <\/b>';
      regionlist2 += regionlist;
      regionlist += '<table cellpadding="0" cellspacing="2"><br \/>';
      regionlist2 += '<table cellpadding="0" cellspacing="2"><br \/>';

      document.getElementById("Legend3sub").innerHTML = "";
      // Hide all regions but relevant one
      for (i=0;i<=15;i++) {
         if(i==4) {
            if(i==currentarea) {
               for(j=16;j<=17;j++) {
                  if(RegionOverlayZoom[j].isHidden()) {
                     RegionOverlayZoom[j].show();
                  }
               }
            } else {
               for(j=16;j<=17;j++) {
                  if(!(RegionOverlayZoom[j].isHidden())) {
                     RegionOverlayZoom[j].hide();
                  }
               }
            }

         } else { // i not 4
            if(i==currentarea) {
               if(RegionOverlayZoom[i].isHidden()) {
                   RegionOverlayZoom[i].show();
               }
            } else {
               if(!(RegionOverlayZoom[i].isHidden())) {
                     RegionOverlayZoom[i].hide();
               }
            }
         }
      }
      for (var i=0;i<gmarkerstype.length;i++) {
         if(gmarkerstype[i].detailOpen) {
            PdMarkerClose(i+10);
         }
         prevdetailwin=-1;
         if (!(gmarkerstype[i].area==namearea))  {
            if(!(gmarkerstype[i].isHidden())) {
               gmarkerstype[i].hide();
            }
         } else {
         	if(gmarkerstype[i].isHidden()) {
               if(!(showclosed==1)) {
                  if(gmarkerstype[i].status=="Closed") {
                     continue;
                  }
               }
         	   gmarkerstype[i].show();
         	}
         }
      }
      mymap.setCenter(new GLatLng(ImgOverlayName[currentarea][6], ImgOverlayName[currentarea][7]), zoomlevel);
      count = 0;
      countall = 0;
      listcurrent="";
      listall="";
      var switch1=0;
      for (i=0;i<gmarkerstype.length;i++) {
         if (gmarkerstype[i].area==namearea) {
            countall++;
            if((switch1==0) && (gmarkerstype[i].status=="Closed")) {
               listall += '<tr><td><\/td><\/tr><tr><td><\/td><\/tr><tr><td><\/td><\/tr><tr><td><b> ' + countclosed + ' closed stations in ' + namearea + '<\/b><\/td><\/tr><tr><td><\/td><\/tr>';
               switch1=1;
            }
            listall += '<tr><td><a href="#" onclick="clickstation(' + i + ',' + countall + '); return false;" onMouseOver="showstationtooltip(' + i + ',' + countall + ');return false;" onMouseOut="hidestationtooltip(' + i + ',' + countall + '); return false;">' + gmarkerstype[i].name + '<\/a><\/td><\/tr>';
            if(gmarkerstype[i].status=="Closed") {
               continue;
            }
            count++;
            listcurrent += '<tr><td><a href="#" onclick="clickstation(' + i + ',' + count + '); return false;" onMouseOver="showstationtooltip(' + i + ',' + count + ');return false;" onMouseOut="hidestationtooltip(' + i + ',' + count + '); return false;">' + gmarkerstype[i].name + '<\/a><\/td><\/tr>';
         }
      }
      if(count==countall) { // there are no closed stations in this area
         listall += '<tr><td><\/td><\/tr><tr><td><\/td><\/tr><tr><td><\/td><\/tr><tr><td><b>There are no closed stations in ' + namearea + '<\/b><\/td><\/tr><tr><td><\/td><\/tr>';
      }
      regionlist += listcurrent;
      regionlist += "<\/table><\/div>";
      regionlist2 += listall;
      regionlist2 += "<\/table><\/div>";

      if(showclosed==1) {
         sidebarcontent += regionlist2;
      } else {
         sidebarcontent += regionlist;
      }
      document.getElementById("Legend3sub").innerHTML = sidebarcontent;
      document.getElementById("Legend3").style.display = 'none';
      document.getElementById("Legend3sub").style.display = 'block';
      if(showclosed==1) {
         document.getElementById("closedsites4").checked = true;
      } else {
         document.getElementById("activesites4").checked = true;
      }

   }
}




// This function picks up the click and opens the corresponding info window
function clickstation(i, rank) {
   gmarkerstype[i].showTooltip();
   gmarkerstype[i].hideTooltip();
   if(!(prevdetailwin==-1) && !(prevdetailwin==i)) {
      PdMarkerClose(prevdetailwin+10);
      prevdetailwin=-1;
   }
   gmarkerstype[i].showDetailWin();
}

function showstationtooltip(i, rank) {
   gmarkerstype[i].showTooltip();
   gmarkerstype[i].setImage(gmarkerstype[i].hoverImage);
   var region = document.getElementById("Legend3sub").style.display;
   if(region == 'block') {
      var xtemp = document.getElementById("Legend3sub").getElementsByTagName("a")[rank];
      xtemp.style.background ="#990000";
      xtemp.style.color ="white";
   }

}
function hidestationtooltip(i, rank) {
   gmarkerstype[i].hideTooltip();
   gmarkerstype[i].restoreImage();
   var region = document.getElementById("Legend3sub").style.display;
   if(region == 'block') {
      var xtemp = document.getElementById("Legend3sub").getElementsByTagName("a")[rank];
      xtemp.style.background ="white";
      xtemp.style.color ="blue";
   }
}
function mouseoverlink(menu,id) {
   var internalId;
   if(menu==1) {
      internalId = "Type"+id;
   } else if (menu==3) {
      internalId = "Area"+id;
      if(mymap.getZoom()<=8) {   
         if(loadregions == 1) { // if regions have been loaded
            if(id == 5) { // Highlands
               for(j=16;j<=17;j++) {
                  if(!(RegionOverlayZoom[j].isHidden())) {
                     RegionOverlayZoom[j].hide();
                  }
                  RegionOverlayHover[j].show();
               }
            } else {
               if(!(RegionOverlayZoom[id-1].isHidden())) {
                  RegionOverlayZoom[id-1].hide();
               }
               RegionOverlayHover[id-1].show();
            }
         }  
      }
   }
   var regionelement = document.getElementById(internalId).getElementsByTagName("a")[0];
   regionelement.style.background ="#990000";
   regionelement.style.color ="white";

}
function mouseoutlink(menu, id) {
   var internalId;
   if(menu==1) {
      internalId = "Type"+id;
   } else if (menu==3) {
      internalId = "Area"+id;
      if(id == 5) { // Highlands
         for(j=16;j<=17;j++) {
            if(!(RegionOverlayHover[j].isHidden())) {
               RegionOverlayHover[j].hide();
            }
         }
      } else {
         if(!(RegionOverlayHover[id-1].isHidden())) {
            RegionOverlayHover[id-1].hide();
         }
      }
      var temp = "TypeArea" + id;
      if(mymap.getZoom()<=8) {
         if (document.getElementById(temp).checked==true) {
            if(id == 5) { // Highlands
               for(j=16;j<=17;j++) {
                  if(RegionOverlayZoom[j].isHidden()) {
                     RegionOverlayZoom[j].show();
                  }
               }
            } else {
               if(RegionOverlayZoom[id-1].isHidden()) {
                  RegionOverlayZoom[id-1].show();
               }
            }
         }
      }
   }
   var regionelement = document.getElementById(internalId).getElementsByTagName("a")[0];
   regionelement.style.background ="white";
   regionelement.style.color ="blue";
}

GMap2.prototype.centerAndZoomOnBounds = function(bounds) {
   var center_lat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2.0;
   var center_lng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2.0;
   var center = new GLatLng(center_lat,center_lng);
   mymap.setCenter(center, mymap.getBoundsZoomLevel(bounds));
}

// A function to create the marker and set up the event window
function createMarker(Idsite, lat, lng, typestation, area, status, pollutant, html, name) {
        var point = new GLatLng(lat, lng);
        var icon;
        var mainpollutant;
        bounds.extend(point);
        for (k = 0; k < maxpol; k++) {  // maxpol defined as global variable
           if(!(pollutant[k]=="")) {
              mainpollutant = pollutant[k] + "GM";
              if(status=="Closed") {
                 mainpollutant = mainpollutant + "closed";
              }
              break;
           }
        }
        icon = DefineIcon(typestation, status);
        var marker = new PdMarker(point, icon);
        marker.idstation = Idsite;
        marker.name = name;
        marker.typestation = typestation;
        marker.icontypestation = icon.image;
        marker.iconmainpollutant = GoogleMapsDir + mainpollutant + ".png";
        marker.area = area;
        marker.status = status;
        marker.currenticon = marker.icontypestation; // Could be used to keep track of icon change for each marker (site type, pollutant)
        marker.Poll0 = pollutant[0];
        marker.Poll1 = pollutant[1];
        marker.Poll2 = pollutant[2];
        marker.Poll3 = pollutant[3];
        marker.Poll4 = pollutant[4];
        marker.Poll5 = pollutant[5];
        marker.Poll6 = pollutant[6];
        marker.Poll7 = pollutant[7];
        marker.Poll8 = pollutant[8];
        marker.Poll9 = pollutant[9];
        marker.Poll10 = pollutant[10];
        marker.Poll11 = pollutant[11];
        marker.Poll12 = pollutant[12];
        marker.Poll13 = pollutant[13];
        marker.Poll14 = pollutant[14];
        marker.Poll15 = pollutant[15];
        marker.count = "0";
	marker.setTooltip(name);
	marker.setOpacity(100);
	marker.html1=html; // html2 for real time data
	marker.html2="Data not available";
	marker.lasthourlevel="1"; // Default = 1 = No Data (Possible other values: 2=Low -> 5=Very High)
	marker.iconcurlevel=imageObj[32].src;
	marker.curlevel="";
	marker.setDetailWinHTML(html); // html2 for real time data
	marker.setHoverImage(GoogleMapsDir + "Highlight.png");
        return marker;
      }

function makeMap() {
    displaydate();
    if (GBrowserIsCompatible()) {
      // create the map
      mymap = new GMap2(document.getElementById("map"));
      mymap.addMapType(G_PHYSICAL_MAP);
      //mymap.addMapType(G_SATELLITE_3D_MAP);
      mymap.addControl(new GScaleControl());

      ZoomAndPanControl = new GLargeMapControl3D();
      mymap.addControl(ZoomAndPanControl);

      // Create a Hierercical map type control
      var hierarchy = new GHierarchicalMapTypeControl();

      // make Google Satellite Hybrid be the satellite default
      hierarchy.addRelationship(G_SATELLITE_MAP, G_HYBRID_MAP, "Show Labels", true);

      // add that control to the map
      mymap.addControl(hierarchy);
      mymap.setCenter(initmapcenter,6);

      mymap.setMapType(G_PHYSICAL_MAP);

      G_PHYSICAL_MAP.getMinimumResolution = function () { return 6 };
      G_NORMAL_MAP.getMinimumResolution = function () { return 6 };
      G_SATELLITE_MAP.getMinimumResolution = function () { return 6 };
      G_HYBRID_MAP.getMinimumResolution = function () { return 6 };

      G_PHYSICAL_MAP.getMaximumResolution = function () { return 15 };
      G_NORMAL_MAP.getMaximumResolution = function () { return 17 };
      G_SATELLITE_MAP.getMaximumResolution = function () { return 20 };
      G_HYBRID_MAP.getMaximumResolution = function () { return 20 };

      // Add AURN GoogleEarth webpage link
	  GELink_html='<div class="htmlControl htmlButton"><a href="http://www.bv-aurnsiteinfo.co.uk/default.asp?pageref=143" target="_blank"><img alt="Google Earth link" src="' + GoogleMapsDir + 'GELinksmall.png" width="115" height="50"><\/a><\/div>';
	  GELinkControl = new HtmlControl(GELink_html, { visible:true, selectable:true });
	  mymap.addControl(GELinkControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(85, 7)));

      // Add Welcome Window
      WelcomeWindow_html = document.getElementById("welcome_div").innerHTML;
      WelcomeWindow_html = '<div class="htmlControl htmlControl2" id="WelcomeWin" title="Click for AURN website information" style="width:550px; height:480px;">' + WelcomeWindow_html + '<\/div>';
	  WelcomeWindowControl = new HtmlControl(WelcomeWindow_html);
	  mymap.addControl(WelcomeWindowControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 60)));
	  WelcomeWindowControl.setVisible(false);
	  GEvent.addDomListener(document.getElementById('WelcomeWin'), 'click', function() {
	     WelcomeWindowControl.setVisible(!WelcomeWindowControl.isVisible);
	  	 var imagebkgd = (WelcomeWindowControl.isVisible)?'/googlemaps/BckgImgGmapControlButtonLarge2.png':'/googlemaps/BckgImgGmapControlButtonLarge1.png';
	  	 document.getElementById('ToggleWelcome').style.backgroundImage ='url(' + imagebkgd + ')';
	  });


	  //Add Button to toggle Welcome Window
	  ToggleWelcome_html = '<div class="htmlControl htmlButton" id="ToggleWelcome" style="width:95px; height:19px; background-image: url(/googlemaps/BckgImgGmapControlButtonLarge2.png)"><\/div>';
	  ToggleWelcomeControl = new HtmlControl(ToggleWelcome_html);
	  mymap.addControl(ToggleWelcomeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(288, 7)));
	  GEvent.addDomListener(document.getElementById('ToggleWelcome'), 'click', function() {
	    if(HelpWindowControl.isVisible) {
           HelpWindowControl.setVisible(false);
           document.getElementById('ToggleHelp').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButton1.png)';
	    }
	    if(OtherNetWindowControl.isVisible) {
	       OtherNetWindowControl.setVisible(false);
	    }
	    if(CurPolLevWindowControl.isVisible) {
	       CurPolLevWindowControl.setVisible(false);
	    }
		WelcomeWindowControl.setVisible(!WelcomeWindowControl.isVisible);
		var imagebkgd = (WelcomeWindowControl.isVisible)?'/googlemaps/BckgImgGmapControlButtonLarge2.png':'/googlemaps/BckgImgGmapControlButtonLarge1.png';
		document.getElementById('ToggleWelcome').style.backgroundImage ='url(' + imagebkgd + ')';
	  });


      // Add Help Window
	  HelpWindow_html = document.getElementById("help_div").innerHTML;
	  HelpWindow_html = '<div class="htmlControl htmlControl2" id="HelpWin" title="Click to open Help window" style="width:550px; height:575px;">' + HelpWindow_html + '<\/div>';
	  HelpWindowControl = new HtmlControl(HelpWindow_html);
	  mymap.addControl(HelpWindowControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 60)));
	  HelpWindowControl.setVisible(!HelpWindowControl.isVisible);
	  GEvent.addDomListener(document.getElementById('HelpWin'), 'click', function() {
	    if(WelcomeWindowControl.isVisible) {
           WelcomeWindowControl.setVisible(false);
	    }
		HelpWindowControl.setVisible(!HelpWindowControl.isVisible);
		var imagebkgd = (HelpWindowControl.isVisible)?'/googlemaps/BckgImgGmapControlButton2.png':'/googlemaps/BckgImgGmapControlButton1.png';
		document.getElementById('ToggleHelp').style.backgroundImage ='url(' + imagebkgd + ')';
	  });


	  //Add Button to toggle Help Window
	  ToggleHelp_html = '<div class="htmlControl htmlButton" id="ToggleHelp" style="width:69px; height:19px; background-image: url(/googlemaps/BckgImgGmapControlButton1.png)"><\/div>';
	  ToggleHelpControl = new HtmlControl(ToggleHelp_html);
	  mymap.addControl(ToggleHelpControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(219, 7)));

	  GEvent.addDomListener(document.getElementById('ToggleHelp'), 'click', function() {
	    if(WelcomeWindowControl.isVisible) {
           WelcomeWindowControl.setVisible(false);
           document.getElementById('ToggleWelcome').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButtonLarge1.png)';
	    }
	    if(OtherNetWindowControl.isVisible) {
	       OtherNetWindowControl.setVisible(false);
	    }
	    if(CurPolLevWindowControl.isVisible) {
	       CurPolLevWindowControl.setVisible(false);
	    }
		HelpWindowControl.setVisible(!HelpWindowControl.isVisible);
		var imagebkgd = (HelpWindowControl.isVisible)?'/googlemaps/BckgImgGmapControlButton2.png':'/googlemaps/BckgImgGmapControlButton1.png';
		document.getElementById('ToggleHelp').style.backgroundImage ='url(' + imagebkgd + ')';
	  });



      // Add "Other Networks" Info Window
	  OtherNetWindow_html = document.getElementById("othernetwork_div").innerHTML;
	  OtherNetWindow_html = '<div class="htmlControl htmlControl2" id="OtherNetworkWin" style="width:550px; height:275px;">' + OtherNetWindow_html + '<\/div>';
	  OtherNetWindowControl = new HtmlControl(OtherNetWindow_html);
	  mymap.addControl(OtherNetWindowControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 60)));
	  OtherNetWindowControl.setVisible(!OtherNetWindowControl.isVisible);
	  GEvent.addDomListener(document.getElementById('OtherNetworkWin'), 'click', function() {
	    if(WelcomeWindowControl.isVisible) {
               WelcomeWindowControl.setVisible(false);
	    }
	    if(HelpWindowControl.isVisible) {
               HelpWindowControl.setVisible(false);
            }
	    OtherNetWindowControl.setVisible(!OtherNetWindowControl.isVisible);
	  });

      // Add "Current Pollution Level - Real Time" Info Window
	  CurPolLevWindow_html = document.getElementById("currentpollevel_div").innerHTML;
	  CurPolLevWindow_html = '<div class="htmlControl htmlControl2" id="CurPolLevWin" style="width:550px; height:335px;">' + CurPolLevWindow_html + '<\/div>';
	  CurPolLevWindowControl = new HtmlControl(CurPolLevWindow_html);
	  mymap.addControl(CurPolLevWindowControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 60)));
	  CurPolLevWindowControl.setVisible(!CurPolLevWindowControl.isVisible);
	  GEvent.addDomListener(document.getElementById('CurPolLevWin'), 'click', function() {
	    if(WelcomeWindowControl.isVisible) {
               WelcomeWindowControl.setVisible(false);
	    }
	    if(HelpWindowControl.isVisible) {
               HelpWindowControl.setVisible(false);
            }
	    CurPolLevWindowControl.setVisible(!CurPolLevWindowControl.isVisible);
	  });

      // Add Loading Message
	  var LoadMessage_html='<div id="loading" style="height:50px; width:140px; display: block;"><b>Loading Map<br />Please Wait</b><br /><span id="loadingMessage"></span></div>';
	  LoadMessageControl = new HtmlControl(LoadMessage_html, { visible:true, selectable:true });
	  mymap.addControl(LoadMessageControl, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(300, 200)));



      GEvent.addListener(mymap,"zoomend", function(oldLevel, newLevel) {
       if((document.getElementById("Legend3").style.display=='block') || (document.getElementById("Legend3sub").style.display=='block')) {
         if(newLevel>8) {
            for(i=0;i<=17;i++) {
               if(i == 4) {
               // We do nothing
               } else if (i == 3) { // London Area - Allow closer zoom
                 if(!(RegionOverlayZoom[i].isHidden()) && (newLevel>10)) {
                    RegionOverlayZoom[i].hide();
                 }
               } else {
                 if(!(RegionOverlayZoom[i].isHidden())) {
                    RegionOverlayZoom[i].hide();
                 }
              }
            }
         }
         if(oldLevel>10 && newLevel<=10) {
           if(RegionOverlayZoom[3].isHidden() && document.getElementById('TypeArea4').checked==true) {
              RegionOverlayZoom[3].show();
           }
         }
         if(oldLevel>8 && newLevel<=8) {
           for(i=0;i<=15;i++) {
              if(i==3) {
                 // Nothing
              } else if(i==4) {
                 if (document.getElementById('TypeArea5').checked==true) { // traiter le cas Highlands (i=16 ou 17 + variable = TypeArea5)
                    for(j=16;j<=17;j++) {
                       if(RegionOverlayZoom[j].isHidden()) {
                          RegionOverlayZoom[j].show();
                       }
                    }
                 }
              } else {
                 var temp = 'TypeArea' + (i+1);
                 if(RegionOverlayZoom[i].isHidden() && document.getElementById(temp).checked==true) {
                    RegionOverlayZoom[i].show();
                 }
              }
           }
         }
       }
      });
      mymap.enableContinuousZoom();
//      mymap.enableScrollWheelZoom();
      var center = mymap.getCenter();
	  GEvent.addListener(mymap,"click", function() {
	     if(WelcomeWindowControl.isVisible) {
	        WelcomeWindowControl.setVisible(false);
	  	    var imagebkgd = (WelcomeWindowControl.isVisible)?'/googlemaps/BckgImgGmapControlButtonLarge2.png':'/googlemaps/BckgImgGmapControlButtonLarge1.png';
	  	    document.getElementById('ToggleWelcome').style.backgroundImage ='url(' + imagebkgd + ')';
         }
         if(contextmenu.style.visibility == "visible") {
            contextmenu.style.visibility="hidden";
         }
      });

//    Add a move listener to restrict the bounds range
	  GEvent.addListener(mymap, "move", function() { checkBounds(); });
//    The allowed region which the whole map must be within
	  var allowedBounds = new GLatLngBounds(new GLatLng(49.85,-10.5), new GLatLng(60.85,2));
//    If the map position is out of range, move it back
	  function checkBounds() {
//       Perform the check and return if OK
	     if (allowedBounds.contains(mymap.getCenter())) {
	        return;
	     }
//       It`s not OK, so find the nearest allowed point and move there
	     var C = mymap.getCenter();
	     var X = C.lng();
	     var Y = C.lat();
	     var AmaxX = allowedBounds.getNorthEast().lng();
	     var AmaxY = allowedBounds.getNorthEast().lat();
	     var AminX = allowedBounds.getSouthWest().lng();
	     var AminY = allowedBounds.getSouthWest().lat();
	     if (X < AminX) {X = AminX;}
	     if (X > AmaxX) {X = AmaxX;}
	     if (Y < AminY) {Y = AminY;}
	     if (Y > AmaxY) {Y = AmaxY;}
	     mymap.setCenter(new GLatLng(Y,X));
	  }

	  readMap();


      // === create the context menu div ===
	  contextmenu = document.createElement("div");
	  contextmenu.style.visibility="hidden";
	  contextmenu.style.background="#ffffff";

	  var htmltemp = '<div class="context">';
      htmltemp += '<a class="contextlink" href="javascript:zoomIn()">&nbsp;&nbsp;Zoom in (detailed view)&nbsp;&nbsp;<\/a><br \/>';
      htmltemp += '<a class="contextlink" href="javascript:zoomOut()">&nbsp;&nbsp;Zoom out (UK view)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/a>';
      htmltemp += '<\/div>';
	  contextmenu.innerHTML = htmltemp;
	  mymap.getContainer().appendChild(contextmenu);


      // === listen for singlerightclick ===
      GEvent.addListener(mymap,"singlerightclick",function(pixel,tile, overlay) {
         if (overlay) {
            if (overlay instanceof GMarker) {
            	// store the "pixel" info in case we need it later
        		// adjust the context menu location if near an egde
        		// create a GControlPosition
        		// apply it to the context menu, and make the context menu visible
        		markertemp = overlay;
        	    var coordpix = mymap.fromLatLngToContainerPixel(markertemp.getLatLng());


        		if(markertemp.detailOpen)
        		{
        		   PdMarkerClose(markertemp.internalId);
        		}
        		clickedPixel = pixel;
        		var x=coordpix.x + 19;
        		var y=coordpix.y;
        		if (x > mymap.getSize().width - 120) { x = mymap.getSize().width - 120 }
        		if (y > mymap.getSize().height - 100) { y = mymap.getSize().height - 100 }
        		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));
        		pos.apply(contextmenu);
        		contextmenu.style.visibility = "visible";
        	}
		}
      });
    } else { // Enf of if browser compatible
       map.innerHTML = '<p>Sorry, your browser does not support the Google Maps API.</p>';
    }

}; // End of function makeMap

function readMap() {
   // Read the Stations data from xml file
   var request = GXmlHttp.create();
   var filename = GoogleMapsDir + "AURN_Monitoring_Stations.xml";

   var markertype;
   request.open("GET", filename, true);
   request.onreadystatechange = function() {
     if (request.readyState == 4) {
       if (request.status == 200) {
          var xmlDoc = request.responseXML;
	      if (xmlDoc.documentElement) {
             // obtain the array of markers and loop through it
             nbopensites = parseInt(xmlDoc.documentElement.getAttribute("open"));
             nbclosedsites = parseInt(xmlDoc.documentElement.getAttribute("closed"));
             markers = xmlDoc.documentElement.getElementsByTagName("marker");
             document.getElementById('nb_stations').innerHTML = 'Site information for all <b>' + nbopensites + ' </b> active monitoring stations on the AURN Network are displayed on this site. Additionally site information on a further <b>' + nbclosedsites + '</b> historically closed stations are also included.';
             WelcomeWindowControl.setVisible(true);
             window.setTimeout(startmap,timeOut1);
          } else {
             alert("invalid xml file:"+filename);
          }
       } else {
       alert("file not found:"+filename);
       }
     }
   }
   request.send(null);
//   mapregions();
};

function mapregions() {
   if(kk <= 17) {
      if(!(kk == 4)) {
         RegionOverlayZoom[kk] = new GGroundOverlay(ImgOverlayName[kk][5], new GLatLngBounds(new GLatLng(ImgOverlayName[kk][1],ImgOverlayName[kk][2]),new GLatLng(ImgOverlayName[kk][3],ImgOverlayName[kk][4])));
         RegionOverlayHover[kk] = new GGroundOverlay(ImgOverlayName[kk][8], new GLatLngBounds(new GLatLng(ImgOverlayName[kk][1],ImgOverlayName[kk][2]),new GLatLng(ImgOverlayName[kk][3],ImgOverlayName[kk][4])));
         mymap.addOverlay(RegionOverlayZoom[kk]);
         mymap.addOverlay(RegionOverlayHover[kk]);
         RegionOverlayHover[kk].hide();
      }

      if(kk >1) {
         var temp = kk-1;
         document.getElementById('loadingMessage').innerHTML = 'Loading Region...<br><b>' + temp + ' of 16</b><br>';   
      }
      kk++;
      window.setTimeout(mapregions,1);
   } else {
      loadregions = 1;
      LoadMessageControl.setVisible(false);
   }
};


function startmap() {
   if ( ii < markers.length ) {
      var keep=Math.min(ii + 5, markers.length);
      while (ii < keep) {
         // obtain the attribues of each marker
         var Idsite = markers[ii].getAttribute("statId");
         var typestation = markers[ii].getAttribute("type");
         var area = markers[ii].getAttribute("Area");
         var status = markers[ii].getAttribute("Status");
         var pollutant=[];
         pollutant[0] = markers[ii].getAttribute("NOx");
         pollutant[1] = markers[ii].getAttribute("PM10");
         pollutant[2] = markers[ii].getAttribute("PM25");
         pollutant[3] = markers[ii].getAttribute("SO2");
         pollutant[4] = markers[ii].getAttribute("CO");
         pollutant[5] = markers[ii].getAttribute("O3");
         pollutant[6] = markers[ii].getAttribute("HC");
         pollutant[7] = markers[ii].getAttribute("NonAutoHC");
         pollutant[8] = markers[ii].getAttribute("Metals");
         pollutant[9] = markers[ii].getAttribute("BS");
         pollutant[10] = markers[ii].getAttribute("SMPS");
         pollutant[11] = markers[ii].getAttribute("CPC");
         pollutant[12] = markers[ii].getAttribute("Nitrates");
         pollutant[13] = markers[ii].getAttribute("OCandEC");
         pollutant[14] = markers[ii].getAttribute("Anions");
         pollutant[15] = markers[ii].getAttribute("PAH");

         
         var lat = parseFloat(markers[ii].getAttribute("lat"));
         var lng = parseFloat(markers[ii].getAttribute("lng"));
         var html = markers[ii].getAttribute("htmlGMAP");
         var label = markers[ii].getAttribute("label");
         // create the marker
         markertype = createMarker(Idsite, lat, lng, typestation, area, status, pollutant, html, label);
         gmarkerstype.push(markertype);
         mymap.addOverlay(markertype);
         if(markertype.status=="Closed") {
            markertype.hide();
         }
         ii++;
      }
      document.getElementById('loadingMessage').innerHTML = 'Loading AURN Station...<br><b>' + ii + ' of ' + markers.length + '</b><br>';
      window.setTimeout(startmap,timeOut1);
   } else { // Close Waiting pop-up message and show right-panel Legend
         LoadMessageControl.setVisible(false);
         document.getElementById('formlegend').style.display='block';
         document.getElementById('Legend1').style.display='block';

   }
};

function loadNRTData() {
      document.getElementById('loadingMessage').innerHTML = 'Loading Current Air Quality Levels...<br><br>';
      LoadMessageControl.setVisible(true);
      exml = new GeoXml("exml", mymap, "http://www.bv-aurnsiteinfo.co.uk/google-earth/hourly/Current_AURN_Stations_Monitoring_Data.kml?test=123", {sidebarid:"Legend4", allfoldersopen:"false", messagestyle:"white"});
      exml.parse();
      displaylegend();
};

function displaylegend() {
    if ( loadkml == 0) {
       window.setTimeout(displaylegend,1000);
    } else {
      contentpollevel="";
      contentpollevel += '<br />';
      contentpollevel += '<div id="level4" style="background-color:#ADD8E6; vertical-align:middle;padding: 5px;">';
      contentpollevel += '<table cellpadding="0" cellspacing="0">';
      contentpollevel += '<tr><td>&nbsp;&nbsp;</td><td><input type="radio" name="groupall" id="groupedsite" onclick="ShowGroup(2);" checked><b> Group by Air Quality Level</b></td></tr>';
      contentpollevel += '<tr><td>&nbsp;&nbsp;</td><td><input type="radio" name="groupall" id="singlesite" onclick="ShowGroup(1);"><b> Show stations individually</b></td></tr>';
      contentpollevel += '</table>';
      contentpollevel += '</div>';
      contentpollevel += '<br />';
      contentpollevel += '<input type="checkbox" name="alllevels" id="alllevels" onclick="AllMarkersVisibility(4, \'CurLev\',\'alllevels\',' + (nbopensites + 5) + ');" checked="checked"><b> All Sites</b>';
      contentpollevel += '<br />';
      contentpollevel += '<br />';
      contentpollevel += '<hr>';
      contentpollevel_1 = '<div id="listsites1" style="display: none; overflow:auto; height:400px;"><table cellpadding="0" cellspacing="0">';
      var counter=0;
      for(var a=0;a<gmarkerstype.length;a++) {
         if(gmarkerstype[a].status=="Active") {
            counter++;
            var idtemp="CurLev" + counter;
            var levelrank = parseInt(gmarkerstype[a].lasthourlevel) + 31;
            var level = imgsitetype[levelrank];
            level=level.replace("current_","");
            level=level.replace("_small","");
            var srcicon=imageObj[levelrank].src;
            gmarkerstype[a].iconcurlevel = srcicon;
            gmarkerstype[a].curlevel = level;
            for(var b=0;b<=4;b++) {
               if(gmarkerstype[a].lasthourlevel==(b+1)) {
                  gmarkerslevel[b].push(gmarkerstype[a]);
               }
            }
            contentpollevel_1 += '<tr><td><img src="' + srcicon + '" width="20" height="20" title="' + level + '" alt="Actual Level Icon" /></td><td><div class=\'typestationclass\' id= \'Type1\'><input type="checkbox" name="' + idtemp +'" id="' + idtemp +'" onclick="MarkersVisibility(' + a + ', 4,\'' + level + '\',\'' + idtemp + '\');" checked="checked" /><a href="#" onclick="clickstation(' + a + ',0); return false;" onMouseOver="showstationtooltip(' + a + ',0);return false;" onMouseOut="hidestationtooltip(' + a + ',0); return false;">' + gmarkerstype[a].name + '<\/a><br /></div></td></tr>';
         }
      }
      contentpollevel_1 += '</table></div>';
      contentpollevel += contentpollevel_1;

      contentpollevel_2 = '<div id="listsites2"><table cellpadding="0" cellspacing="0">';

      for(var c=1;c<=5;c++) {
         var temp0 = nbopensites + c; // we continue list for checkbox IDs
         var idtemp="CurLev" + temp0;
         var temp1=c+31;
         var level = imgsitetype[temp1];
         level=level.replace("current_","");
         level=level.replace("_small","");
         contentpollevel_2 += '<tr><td><img src="' + imageObj[temp1].src + '" width="20" height="20" title="' + level + '" alt="Actual Level Icon" /></td><td><div class=\'typestationclass\' id= \'Type1\'><input type="checkbox" name="' + idtemp +'" id="' + idtemp +'" onclick="MarkersVisibility(' + c + ', 4,\'' + level + '\',\'' + idtemp + '\');" checked="checked" />' + LevelRange[c-1] + ' (' + gmarkerslevel[c-1].length + ' sites)<br /></div></td></tr>';
      }
      contentpollevel_2 += '</table></div>';
      contentpollevel += contentpollevel_2;     
      document.getElementById("Legend4").innerHTML = contentpollevel;
      // to make sure Legend4 display is updated
      document.getElementById("Legend4").style.display = 'none';
      document.getElementById("Legend4").style.display = 'block';     
      LoadMessageControl.setVisible(false);
      loadkml = 2;  // flag to make sure displaylegend has run successfully
   }
};

// === functions to create the context menu options ===
function zoomIn() {
   // perform the requested operation
   var currentmap = mymap.getCurrentMapType();
   var zoominmax = (currentmap.getMaximumResolution()) - 2;
   mymap.setCenter(markertemp.getLatLng(), zoominmax);
   // hide the context menu now that it has been used
   contextmenu.style.visibility="hidden";
};

function zoomOut() {
   if((document.getElementById("Legend3").style.display == 'block') || (document.getElementById("Legend3sub").style.display == 'block'))
   {
      document.getElementById("allareas").checked=true;
      AllMarkersVisibility(3, 'TypeArea','allareas',16);
      if(document.getElementById("Legend3sub").style.display == 'block')
      {
         document.getElementById("Legend3sub").style.display = 'none';
         document.getElementById("Legend3").style.display = 'block';
		 document.getElementById("Legend3sub").innerHTML = "";
      }
   }
   // perform the requested operation
   mymap.setCenter(initmapcenter, 6);
   // hide the context menu now that it has been used
   contextmenu.style.visibility="hidden";
};





function ShowActive(nb, typeview, id, list) {
   showclosed=0;
   if(document.getElementById("Legend3sub").style.display == 'block') {
      document.getElementById("regionlist").style.display = 'none';
      document.getElementById("regionlist").innerHTML = regionlist;
      document.getElementById("regionlist").style.display = 'block';
      for(var a=0;a<gmarkerstype.length;a++) {
         if(gmarkerstype[a].area == namearea) {
            if(gmarkerstype[a].status=="Closed") {
               gmarkerstype[a].hide();
            }
         }
      }
   } else {
      if(document.getElementById(id).checked==true) {
         AllMarkersVisibility(nb, typeview, id, list);
      } else {
         if(!(nb == 2)) {
            for (var j=1;j<=list;j++) {
               var checkbx = typeview + j;
               if(document.getElementById(checkbx).checked==true) {
                  var tmpname1 = document.getElementById(checkbx).getAttribute("name");
                  if(nb == 3) { // geo area
                     MarkersVisibility(j-1, nb, tmpname1, checkbx);
                  } else {
                     MarkersVisibility('0', nb, tmpname1, checkbx);                  
                  }
               }
            }
         } else {
            if(document.getElementById(histo[3]).checked==true) {
               MarkersVisibility(histo[0], histo[1], histo[2], histo[3]);
            }
         }
      }
   }
};

function ShowActiveClosed(nb, typeview, id, list) {  //for show by type, parameters = 1, 'Typestat','alltypes',9
   showclosed=1;
   if(document.getElementById("Legend3sub").style.display == 'block') {
      document.getElementById("regionlist").style.display = 'none';
      document.getElementById("regionlist").innerHTML = regionlist2;
      document.getElementById("regionlist").style.display = 'block';
      for(var a=0;a<gmarkerstype.length;a++) {
         if(gmarkerstype[a].area == namearea) {
            if(gmarkerstype[a].status=="Closed") {
               gmarkerstype[a].show();
            }
         }
      }
   } else {
      if(document.getElementById(id).checked==true) {
         AllMarkersVisibility(nb, typeview, id, list);
      } else {
         if(!(nb == 2)) {
            for (var j=1;j<=list;j++) {
               var checkbx = typeview + j;
               if(document.getElementById(checkbx).checked==true) {
                  var tmpname2 = document.getElementById(checkbx).getAttribute("name");
                  if(nb == 3) { // geo area
                     MarkersVisibility(j-1, nb, tmpname2, checkbx);
                  } else {
                     MarkersVisibility('0', nb, tmpname2, checkbx);                  
                  }                  
               }
            } 
         } else {
            if(document.getElementById(histo[3]).checked==true) {
               MarkersVisibility(histo[0], histo[1], histo[2], histo[3]);
            }
         }
      }
   }
};

function ShowGroup(a) {
   if(a==1) {
      document.getElementById("listsites2").style.display = 'none';
      document.getElementById("listsites1").style.display = 'block';
   } else if(a==2) {
      document.getElementById("listsites1").style.display = 'none';
      document.getElementById("listsites2").style.display = 'block';
   }
};

function displaydate() {
   var months=new Array(13);
   months[1]="January";
   months[2]="February";
   months[3]="March";
   months[4]="April";
   months[5]="May";
   months[6]="June";
   months[7]="July";
   months[8]="August";
   months[9]="September";
   months[10]="October";
   months[11]="November";
   months[12]="December";
   var time=new Date();
   var lmonth=months[time.getMonth() + 1];
   var date=time.getDate();
   var year=time.getYear();
   if (year < 2000) {
      year = year + 1900;
   }
document.getElementById("date").innerHTML = lmonth + " " + date + ", " + year;
};

function ShowMenu(num, menu, max) {
// menu = 'Legend' max=4 (max options du menu) num=selected value, menu=div name, max=number of divs
                document.getElementById("PolOtherNetworks").style.display = 'none';
                document.getElementById("Legend3sub").style.display = 'none';
// We make sure all temp windows are hidden - or if current pollution level chosen - relevant help window is shown                
	        if(OtherNetWindowControl.isVisible) {
	           OtherNetWindowControl.setVisible(false);
	        }
	        if (num == 4) {
	           if(WelcomeWindowControl.isVisible) {
                      WelcomeWindowControl.setVisible(false);
                      document.getElementById('ToggleWelcome').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButtonLarge1.png)';
	           }	        
	           if(HelpWindowControl.isVisible) {
                      HelpWindowControl.setVisible(false);
                      document.getElementById('ToggleHelp').style.backgroundImage ='url(/googlemaps/BckgImgGmapControlButton1.png)';
	           }	        
	           if(!CurPolLevWindowControl.isVisible) {
	              CurPolLevWindowControl.setVisible(true);
	           }
	        } else {
	           if(CurPolLevWindowControl.isVisible) {
	              CurPolLevWindowControl.setVisible(false);
	           }	        
	        }
                var menu_div = menu;
                var active;
                var closed ;
                var zoomtemp = mymap.getZoom();
                for(i = 1; i <= max; i++){
                   menu_div = menu + i;
                   active = "activesites" + i;
                   closed = "closedsites" + i;
                   if(!(i == num)) {  //if not, then hide
                   
                      if(i == 4) {
                      }
                   
                      if(document.getElementById(menu_div).style.display == 'block') {
                         document.getElementById(menu_div).style.display = 'none';
                      }
                   } else { // then show
                      if(!(i == 4)) {
                         for (var n=0;n<gmarkerstype.length;n++) {
                            gmarkerstype[n].setDetailWinHTML(gmarkerstype[n].html1);
                         }
                         if(showclosed == 1) {
                            document.getElementById(closed).checked=true;
                         } else {
                            document.getElementById(active).checked=true;
                         }
                      }
                      if(i == 3) { // show geo area menu and map sites
                         if(loadregions == 0) {
                            document.getElementById('loadingMessage').innerHTML = '';
                            LoadMessageControl.setVisible(true);
                            mapregions();
                         }
                         displaymarkersregions();
                      } else {
                         if(loadregions == 1) { // if regions are loaded
                            var tempvar;
                            for(j=1;j<=16;j++) {
                               tempvar = "TypeArea" + j;
                               if(document.getElementById(tempvar).checked==true) {  // if region displayed then hide
                                  document.getElementById(tempvar).checked=false;
                               }
                            }
                         }
                         switch(i)
                         {
                         case 1:
                            document.getElementById("alltypes").checked=true;
                            AllMarkersVisibility(1, 'Typestat','alltypes', 9);
                            break;
                         case 2:                       
                            document.getElementById("allpollutants").checked=true;
                            AllMarkersVisibility(2, 'TypePol','allpollutants',16);
                            break;
                         case 4:
                            if(loadkml == 0) {
                               loadNRTData();
                            }
                            ShowNRTData();
                         }
                      }
                      if(document.getElementById(menu_div).style.display == 'none') {
                         document.getElementById(menu_div).style.display = 'block';
                      }                      
                      
                      
                   }
                }  // end for
                 // menustatus = To keep track of menu option selected - to change icons if required
                if((num == 3) && (!(loadregions == 1))) { // first time geo area is selected, issue as function displayregion not finished while changing menustatus so here we do nothing
                } else {
                   menustatus = num; // in all other cases, we update menustatus
                }
};

function ShowNRTData() {
   if (!(loadkml == 2)) {
      window.setTimeout(ShowNRTData,1000);
   } else {
      document.getElementById("alllevels").checked=true;
      AllMarkersVisibility(4,'CurLev','alllevels',nbopensites+5);
      for (var n=0;n<gmarkerstype.length;n++) {
         gmarkerstype[n].setDetailWinHTML(gmarkerstype[n].html2);
      }
   }
};


function displaymarkersregions() {
   if (!(loadregions == 1)) {
      window.setTimeout(displaymarkersregions,1000);
   } else {
      document.getElementById("allareas").checked=true;
      AllMarkersVisibility(3,'TypeArea','allareas',16);
   }
};