var debugDIV = null;
var map = null, mgr = null, ddMkr = null, hoOpt = 0, hoDDOpt = 0, hoDDOptParent = 0, baseIcon = null, baseIcon2 = null, pcMkr = null, pcMgr = null;
var gdir = null, lastReg = null, ukNorth = null, ukSouth = null, usaData = null, hoObj = null;
var continentArray = new Array();
var mapDir = null, mapDirOK = true;
var largeZoomControls, smallZoomControls, currZoomControls, nextZoomControl;
var dirStartAddr, dirEndAddr, localSearch

var printStart, printEnd;

var agt = navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));

largeZoomControls = null;
smallZoomControls = null;
currZoomControls = null;
nextZoomControl = null;

//-----------------------------------------------------------------------------

var EMRpopUpWin = null, PRINTpopUpWin = null;
function openPopup(theWin,thePage,winOptions)
{
   if( theWin == null || theWin.closed )
   {
      if ( !winOptions ) winOptions = "status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=1,scrollbars=1,width=400,height=300"
      theWin = window.open(thePage,theWin,winOptions);
   }

   if( theWin.open )
   {
      if ( theWin.location.pathname != "/"+thePage )
      {
         theWin.location.href = thePage;
      }
      theWin.focus();
   }
}


//-----------------------------------------------------------------------------
//
// Load main map.
//
//-----------------------------------------------------------------------------
function load(theScript,depotId)
{

   var i, hoFound = false;
   
   postFileUrl = theScript;
   httprequest_init();
 
   if (GBrowserIsCompatible())
   {
      map = new GMap2(document.getElementById("googlemap"));
      if ( map )
      {
         //currZoomControls = new GLargeMapControl();
         currZoomControls = new GSmallMapControl();
         map.addControl(currZoomControls);
         //map.addControl(new GMapTypeControl());         
         map.setCenter(new GLatLng(0,0),2);
         map.enableScrollWheelZoom();
         map.addControl(new GScaleControl());  

         GEvent.addListener(map, "zoomend", mapZoom);
         
         GEvent.addDomListener(map.getContainer(), "DOMMouseScroll", wheelevent);
         if ( (map.getContainer()).addEventListener ) (map.getContainer()).addEventListener('DOMMouseScroll', wheelevent, false);         
         else if ( (map.getContainer()).attachEvent ) (map.getContainer()).attachEvent('onmousewheel', wheelevent)
         
         baseIcon = new GIcon();
         baseIcon.shadow = "/images/mm_20_shadow.png";
         baseIcon.iconSize = new GSize(12, 20);
         baseIcon.shadowSize = new GSize(22, 20);
         //baseIcon.iconAnchor = new GPoint(9, 34);
         baseIcon.iconAnchor = new GPoint(6, 20);
         baseIcon.infoWindowAnchor = new GPoint(9, 2);
         baseIcon.infoShadowAnchor = new GPoint(18, 25);
         
         baseIcon2 = new GIcon();
         baseIcon2.shadow = "/images/shadow50.png"
         baseIcon2.iconSize = new GSize(20, 34);
         baseIcon2.shadowSize = new GSize(37, 34);
         //baseIcon2.iconAnchor = new GPoint(9, 34);
         baseIcon2.iconAnchor = new GPoint(6, 34);

         mgr = new GMarkerManager(map);
         window.setTimeout(setupMarkers,0);
      }
   }
   else
   {
      alert("Browser is not compatible with Google Maps.");
   }
   
   if ( depots )
   {
      var found;
      for ( i in depots )
      {
         j = 0;
         while ( j < depots[i].type.length && !found )
         {
            if ( depots[i].type[j].name == "Head Office" ) found = true;
            j++;
         }
         if ( found )
         {
            hoObj = depots[i];
            hoObj.id = i;
            
            if ( document.getElementById("printhoaddr") )
            {
               var printDepot = getPrintHoDetails(hoObj);
               document.getElementById("printhoaddr").innerHTML = printDepot;
            }

            hoOpt = i.toString();
            hoDDOpt = "-"+depots[i].ddregion
            hoDDOptParent = "-" + regDepots["-"+depots[i].ddregion].ddregion;
            break;
         }
      }
   }

   if ( depotId > 0 ) showPsDepot(depotId);
   else if ( depotId < 0 )
   {
      ddShowDepots(depotId);
	  posn = new GLatLng(regDepots[depotId].latshift-1.5,regDepots[depotId].lonshift);
	  map.setCenter(posn, regDepots[depotId].ddmaxzoom-1);
   }
}

//-----------------------------------------------------------------------------
//
// Load small map.
//
//-----------------------------------------------------------------------------
function loadSmall(theScript)
{
   if (GBrowserIsCompatible())
   {
      var mapsmall = new GMap2(document.getElementById("googlemapsmall"));
      if ( mapsmall )
      {
         mapsmall.setCenter(new GLatLng(15,0),0);
         mapsmall.disableDragging();
         GEvent.addListener(mapsmall,"click", function () { document.location.href=theScript; } );
         GEvent.addListener(mapsmall,"mouseover", function () { if ( document.getElementById("mapinstr") )
               {
                  //document.getElementById("mapinstr").innerHTML = "Click map for EMR worldwide locations";
                  mapsmall.getContainer().style.cursor = "pointer";
               }
            }
         );
         //GEvent.addListener(mapsmall,"mouseout", function () { if ( document.getElementById("mapinstr") ) document.getElementById("mapinstr").innerHTML = "&nbsp;"; } );
      }
   }
}

//-----------------------------------------------------------------------------
//
// Load directions map.
//
//-----------------------------------------------------------------------------
function loadDirections(startAddr,startLat,startLon,endAddr,endLat,endLon)
{
   if ( document.getElementById("debugdiv") ) debugDIV = document.getElementById("debugdiv");
   var start, end, destDepot, retArray;
   //retArray = parseQS();
   //start = {"addr":startAddr,"lat":startLat,"lon":startLon};
   dirStartAddr = {"addr":startAddr,"lat":startLat,"lon":startLon};
   dirEndAddr = {"addr":endAddr,"lat":endLat,"lon":endLon};
   
   end = {"addr":endAddr,"lat":endLat,"lon":endLon};
   if ( depots ) if ( depots[endAddr] ) destDepot = depots[endAddr];
   //destDepot = retArray[2];

   document.getElementById("headertitle").innerHTML = "Directions from " + (dirStartAddr.addr).toUpperCase() + ( destDepot ? " to " + destDepot.name : "");
   
   if (GBrowserIsCompatible())
   {
      var mapDir = new GMap2(document.getElementById("googledirectionmap"));
      
      if ( mapDir )
      {
         mapDir.addControl(new GLargeMapControl());
         //mapDir.addControl(new GMapTypeControl());
         mapDir.setCenter(new GLatLng(destDepot.lat,destDepot.lon),destDepot.zoom);
         mapDir.enableScrollWheelZoom();
         mapDir.addControl(new GScaleControl());

         GEvent.addDomListener(mapDir.getContainer(), "DOMMouseScroll", wheelevent);
         //mapDir.DOMMouseScroll = wheelevent;
         
         GEvent.addListener(mapDir, "zoomend", mapZoom);
         GEvent.addDomListener(mapDir.getContainer(), "DOMMouseScroll", wheelevent);
         if ( (mapDir.getContainer()).addEventListener ) (mapDir.getContainer()).addEventListener('DOMMouseScroll', wheelevent, false);         
         else if ( (mapDir.getContainer()).attachEvent ) (mapDir.getContainer()).attachEvent('onmousewheel', wheelevent)
                  
         gdir = new GDirections(mapDir, document.getElementById("googledirectionpanel"));         
         GEvent.addListener(gdir, "error", function () { onGDirectionsError(gdir.getStatus()); });
         GEvent.addListener(gdir, "addoverlay", function () { onGDirectionsLoad(start,end,destDepot); });         
      }
      
      localSearch = new GlocalSearch();

      usePointFromPostcode(startAddr, amendStartAddrPoints)      
   }
   
}

//-----------------------------------------------------------------------------
//
// Load markers.
//
//-----------------------------------------------------------------------------
var theDepot, mapPos
function loadDepotPos(startAddr,startLat,startLon,endAddr,endLat,endLon)
{
   var start,end,retArray, centrePt;
   if ( document.getElementById("debugdiv") ) debugDIV = document.getElementById("debugdiv");
   
   //retArray = parseQS();
   //start = retArray[0];
   //end = retArray[1];
   //theDepot = retArray[2];
   //retArray = parseQS();
   start = {"addr":startAddr,"lat":startLat,"lon":startLon};
   end = {"addr":endAddr,"lat":endLat,"lon":endLon};
   if ( depots ) if ( depots[endAddr] ) theDepot = depots[endAddr];
   
   if ( debugDIV ) debugDIV.innerHTML = theDepot.name + "<br />";
   if ( theDepot ) document.getElementById("headertitle").innerHTML = theDepot.name;
   
   if ( GBrowserIsCompatible() )
   {
      mapPos = new GMap2(document.getElementById("googledirectionmap"));
      if ( mapPos )
      {
         centrePt = new GLatLng(theDepot.lat,theDepot.lon);
         mapPos.addControl(new GSmallZoomControl());
         mapPos.addControl(new GScaleControl());
         mapPos.setCenter(centrePt,theDepot.zoom);
         mapPos.enableScrollWheelZoom();
         mapPos.disableDragging();

         GEvent.addDomListener(mapPos.getContainer(), "DOMMouseScroll", wheelevent);
         
         GEvent.addListener(mapPos, "zoomend", function(){mapPos.setCenter(centrePt)});         
         GEvent.addDomListener(mapPos.getContainer(), "DOMMouseScroll", wheelevent);
         if ( (mapPos.getContainer()).addEventListener ) (mapPos.getContainer()).addEventListener('DOMMouseScroll', wheelevent, false);         
         else if ( (mapPos.getContainer()).attachEvent ) (mapPos.getContainer()).attachEvent('onmousewheel', wheelevent)

         var depotDetails = getPrintDetails(theDepot);
         if ( document.getElementById("depotdetails") ) document.getElementById("depotdetails").innerHTML = depotDetails[0];
         if ( document.getElementById("depotfacilities") )
         {
            document.getElementById("depotfacilities").innerHTML = "";
         }
         window.setTimeout(setupDepotMarker, 0);
      }
   }
}

function setupDepotMarker()
{
   var dMgr = new GMarkerManager(mapPos);
   
   var icon = new GIcon();
   icon.iconSize = new GSize(12, 20);
   icon.shadow = "/images/mm_20_shadow.png";
   icon.shadowSize = new GSize(22, 20);
   icon.image = "/images/mm_20_blue.png";   
   icon.iconAnchor = new GPoint(6, 20);
   var centrePt = new GLatLng(theDepot.lat,theDepot.lon);
   var dMkr = new GMarker(centrePt,{title:theDepot.name,icon:icon});
   dMgr.addMarker(dMkr,0,17);
   dMgr.refresh();
}

function mapZoom(oldZ,newZ)
{
   if ( newZ < 5 ) map.closeInfoWindow();   
   //if ( newZ < 3 ) modifyZoomControls("World");
   //else modifyZoomControls("");
}

function setupMarkers()
{
   var i,j
   
   if ( map ) 
   {      
      var markers = [], posn;
      j = 0
      for ( i in gmDepots.places )
      {         
         if ( gmDepots.places[i].ddshow == 1 && gmDepots.places[i].gmshow == 1 )
         {
            posn = new GLatLng(gmDepots.places[i].lat, gmDepots.places[i].lon);
         
            var icon = new GIcon(baseIcon);
            icon.image = "/images/mm_20_blue.png";
           
            markers.push(new GMarker(posn, {title:gmDepots.places[i].name, icon:icon}));         
            addDepotMarkerClick(markers[j],gmDepots.places[i]);
         
            GEvent.addListener(markers[j], "mouseover", function() {
               this.setImage("/images/mm_20_green.png");
            });

            GEvent.addListener(markers[j], "mouseout", function() {
               this.setImage("/images/mm_20_blue.png");
            });
            j++;
         }
      }
      mgr.addMarkers(markers,5);      
      
      var markers = [], mkr, posn, title = "";
     
      for ( i in regDepots )      
      {      
         if ( regDepots[i].gmshow == 1 )
         {
            if ( regDepots[i].name == "UK (North)" )
            {
               ukNorth = regDepots[i];
               ukNorth.id = i;
            }
            else if ( regDepots[i].name == "UK (South)" )
            {
               ukSouth = regDepots[i];
               ukSouth.id = i;
            }
            else if ( regDepots[i].name == "USA" )
            {
               usaData = regDepots[i];
               usaData.id = i;
            }

            posn = new GLatLng(regDepots[i].lat, regDepots[i].lon);
            
            var icon = new GIcon(baseIcon2);
            icon.image = "/images/markerg.png";
            
            mkr = new GMarker(posn,{title:regDepots[i].name, icon:icon});
            eval(regDepots[i].gmfn + "(mkr,i,regDepots[i]);");
            mgr.addMarker(mkr,regDepots[i].minzoom,regDepots[i].maxzoom);
         }         
      }
      mgr.refresh();
   }
}


function addRegionClick(marker,id,data)
{
   GEvent.addListener(marker, "click", function() {
      ddShowDepots(id);
   });
}


function addCountryClick(marker,id,data)
{
   var i, msg
   GEvent.addListener(marker, "click", function() {    
      ddShowDepots("-"+data.ddregion,id);     
   });
}

//----- Stop page scrolling if wheel over map ----
function wheelevent(e)
{
   if (!e) e = window.event;
   if (e.preventDefault) e.preventDefault();
   e.returnValue = false;
}

function panToContinent(continent)
{
   if ( map )
   {
      map.closeInfoWindow();
      map.setCenter(continentArray[continent][0]);
      map.setZoom(continentArray[continent][1]);
   }
   return false;
}

function ddShowMarker(theOpt,removePcMkr)
{
   if ( !removePcMkr )
   {   
      clearPcSearch();
      clearZcSearch();
   }
   //var optValue = theOpt.value, msg = "", i, j, depotDetail = "", depotType = "", infoWin, ddRegion;
   var optValue, msg = "", i, j, depotDetail = "", depotType = "", infoWin, ddRegion;
   
   if ( typeof(theOpt) == "string" )
   {
      optValue = theOpt;

      i = 0;
      found = false;
      while ( i < document.getElementById("depotList").options.length && !found )
      {
         if ( document.getElementById("depotList").options[i].value == optValue )
         {
            found = true;
            document.getElementById("depotList").options.selectedIndex = i;
         }
         i++;
      }
   }
   else optValue = theOpt.value;
//alert(optValue)
   if ( map && optValue != 0 )
   {
      //map.closeInfoWindow();
      // Alternative get class GInfoWindow
      infoWin = map.getInfoWindow();
      infoWin.hide();
      if ( optValue > 0 )
      {  
         // site/office    
         posn = new GLatLng(depots[optValue].lat+0.0008,depots[optValue].lon);
         var posn2 = new GLatLng(depots[optValue].lat+0.00045,depots[optValue].lon+0.0001);
         map.setCenter(posn, depots[optValue].zoom);                     
         map.openInfoWindowTabsHtml(posn2,createInfoTabs(depots[optValue]));
         
         ddRegion = "-" + depots[optValue].ddregion;
         if ( document.getElementById("mappagetitle") ) document.getElementById("mappagetitle").innerHTML = regDepots[ddRegion].pgtitle;
         selectListOption("countryList",ddRegion);
         showRegionalContact(ddRegion);
      }
      else if ( optValue < 0 )
      {
         // region/location         
         if ( regDepots[optValue].ddmaxzoom == 15 || (regDepots[optValue].ddmaxzoom == 10 && regDepots[optValue].name == "China") )
         {
            posn = new GLatLng(regDepots[optValue].latshift+0.0008,regDepots[optValue].lonshift);
            var posn2 = new GLatLng(regDepots[optValue].latshift+0.00045,regDepots[optValue].lonshift+0.0001);       
            var childID = getSingleChild(Math.abs(optValue));            
            if ( childID > 0 )
            {
               map.openInfoWindowTabsHtml(posn2,createInfoTabs(depots[childID]));
            }            
         }
         else
         {
            posn = new GLatLng(regDepots[optValue].latshift,regDepots[optValue].lonshift);
         }
         map.setCenter(posn, regDepots[optValue].ddmaxzoom);
         
         if ( document.getElementById("mappagetitle") ) document.getElementById("mappagetitle").innerHTML = regDepots[optValue].pgtitle;
         selectListOption("countryList",optValue);
         showRegionalContact(optValue);
      }
   }   
   return false;
}

function selectListOption(selectList,listValue)
{   
   if ( document.getElementById(selectList) )
   {
      var i = 0, found = false;
      while ( i < document.getElementById(selectList).options.length && !found )
      {
         if ( document.getElementById(selectList).options[i].value == listValue )
         {
            document.getElementById(selectList).options.selectedIndex = i;
            found = true;
         }
         i++;
      }      
   }
}

function ddShowDepotsOnClick(theOpt)
{     
   if ( theOpt.value != 0 ) ddShowDepots(theOpt.value);
}

function ddShowDepots(theOpt,theSubOpt,removePcMkr)
{
   if ( !removePcMkr )
   {
      clearPcSearch();
      clearZcSearch();
   }
   
   var optValue, posn, zoomLevel, i = 0, found = false, parentRegion;
   
   if ( typeof(theOpt) == "string" || typeof(theOpt) == "number" )
   {
      optValue = theOpt;
      while ( i < document.getElementById("countryList").options.length && !found )
      {
         if ( document.getElementById("countryList").options[i].value == optValue )
         {
            document.getElementById("countryList").options.selectedIndex = i;
            found = true;
         }
         i++;
      }
   }
   else optValue = theOpt.value;
   
   lastReg = optValue;
   
   if ( map && optValue < 0 )
   {   
      var infoWin = map.getInfoWindow();
      infoWin.hide();

      if ( regDepots[optValue] )
      {
         //modifyZoomControls(regDepots[optValue].name);
         
         posn = new GLatLng(regDepots[optValue].latshift,regDepots[optValue].lonshift);
         map.setCenter(posn, regDepots[optValue].ddmaxzoom);
         
         if ( document.getElementById("mappagetitle") ) document.getElementById("mappagetitle").innerHTML = regDepots[optValue].pgtitle;
         
      }
      
      parentRegion = "-" + regDepots[optValue].ddregion;
   
      
      var param;
      if ( regDepots[parentRegion].name != "World" )
      {
         param = {"pageaction":"dl","region":Math.abs(parentRegion)};
      }
      else
      {
         param = {"pageaction":"dl","region":Math.abs(optValue)};
      }     
      //alert(param.pageaction+"\n"+param.region+"\n"+postFileUrl+"\n"+createDepotList);
      sendRequest("html",param,postFileUrl,createDepotList);


      if ( regDepots[parentRegion].name != "World" && !theSubOpt ) theSubOpt = optValue;
      
      if ( theSubOpt )
      {
         if ( regDepots[theSubOpt].ddmaxzoom == 15 || (regDepots[theSubOpt].ddmaxzoom == 10 && regDepots[theSubOpt].name == "China") )
         {
            posn = new GLatLng(regDepots[theSubOpt].latshift+0.0008,regDepots[theSubOpt].lonshift);
            var posn2 = new GLatLng(regDepots[theSubOpt].latshift+0.00045,regDepots[theSubOpt].lonshift+0.0001);       
            var childID = getSingleChild(Math.abs(theSubOpt));            
            if ( childID > 0 )
            {
               map.openInfoWindowTabsHtml(posn2,createInfoTabs(depots[childID]));
            }
         }
         else
         {
            posn = new GLatLng(regDepots[theSubOpt].latshift,regDepots[theSubOpt].lonshift);
         }
         map.setCenter(posn, regDepots[theSubOpt].ddmaxzoom);
         
         if ( document.getElementById("depotList") )
         {
            i = 0;
            found = false;
            while ( i < document.getElementById("depotList").options.length && !found )
            {
               if ( document.getElementById("depotList").options[i].value == theSubOpt )
               {
                  document.getElementById("depotList").options.selectedIndex = i;
                  found = true;
               }
               i++;
            }
         }
         selectListOption("countryList",theSubOpt);
         showRegionalContact(theSubOpt);
      }
      else
      {
         showRegionalContact(optValue);
      }
   }
   else
   {
      if ( document.getElementById("depotList") ) clearOptions(document.getElementById("depotList"),1);
   }      
}

// Return the first child for given parent region.
function getSingleChild(regID)
{
   var i, childID = 0;
   for ( i in gmDepots.places )
   {
      if ( gmDepots.places[i].ddregion == regID )
      {
         childID = gmDepots.places[i].id;
         break;
      }
   }
   return childID;
}

function createDepotList(response)
{
   var i, j, k, ddOpts = new Array(), msg = ""
   if ( map && response != "" && document.getElementById("depotList") )
   {
      var data = eval("("+response+")");
      
      clearOptions(document.getElementById("depotList"),1);
      if ( data.regions )
      {
        k = 1;
        for ( i in data.regions )
        {
           document.getElementById("depotList").options[k] = new Option(data.regions[i].regionname,"-"+data.regions[i].regionid);
           k++;
           for ( j in data.regions[i].depots )
           {
              document.getElementById("depotList").options[k] = new Option(".."+data.regions[i].depots[j].depotname,data.regions[i].depots[j].depotid);
              k++;
           }     
        } 
      }
      else
      {
         clearOptions(document.getElementById("depotList"),1);
      }
   }
}

function clearOptions(theObj,start)
{
   var i;
   theObj.length = start;
}

function locateHO()
{
   ddShowDepots(hoDDOptParent,hoDDOpt);
   ddShowMarker(hoOpt);
   return false;
}

function addDepotMarkerClick(marker,details)
{
   GEvent.addListener(marker, "click", function() {
      depotMarkerOnClick(marker,details);
   });
}

function addRegionMarkerClick(marker,theFn)
{
   eval("GEvent.addListener(marker, \"click\", function() { " + theFn + "; if ( document.getElementById(\"mapinfo\") ) document.getElementById(\"mapinfo\").innerHTML = \"" + marker.rolloutText + "\";});");
}

function addDepotRegionMarkerClick(marker,details)
{
   GEvent.addListener(marker, "click", function() {
      depotRegionMarkerOnClick(marker,details);
   });
}

function regionMarkerMouseover(marker,details)
{
   GEvent.addListener(marker, "mouseover", function() {
      marker.openInfoWindowHtml("<div style=\"width:10px;height:25px;font-size:70%;\">"+details.name+"</div>")
      if ( document.getElementById("mapinfo") )
      {
         document.getElementById("mapinfo").innerHTML = details.name + "<br />Indicate more depots";
      }
   });
}

function regionMarkerMouseout(marker,details)
{
   GEvent.addListener(marker, "mouseout", function() {
      var infoWin = map.getInfoWindow();
      alert(infoWin + "\nThis would close the info window");
   });
}

function depotMarkerOnClick(marker,details)
{
   var i, found;
   if( map )
   {      
      var posn = new GLatLng(details.lat+0.0008,details.lon);
      var posn2 = new GLatLng(details.lat+0.00045,details.lon+0.0001);
      
      if ( map.getZoom() != details.zoom ) map.setZoom(details.zoom);
      if ( map.getCenter() != posn ) map.setCenter(posn);

      var infoWin = map.getInfoWindow();      

      map.openInfoWindowTabsHtml(posn2,createInfoTabs(details));

      selectListOption("countryList","-"+details.ddregion);
      selectListOption("depotList",details.id);
      showRegionalContact("-"+details.ddregion);
      posn = null;
      posn2 = null;
   }
}

function depotRegionMarkerOnClick(marker,details)
{
   if ( map )
   {
      var posn = new GLatLng(details.lat,details.lon);
      map.setCenter(posn);
      map.setZoom(15);
      map.openInfoWindowTabsHtml(posn,createInfoTabs(depots[details.id]));
   }
}

function createInfoTabs(details)
{
   var infoTabs, depotDetail, printDepot;
   
   depotDetail = getScreenDetails(details);   
   
   if ( depotDetail[0] ) infoTabs = [new GInfoWindowTab("Address",depotDetail[1]),new GInfoWindowTab("Facilities",depotDetail[2])];      
   else infoTabs = [new GInfoWindowTab("Address",depotDetail[1])];
   
   //if ( depotDetail[0] ) infoTabs = [new GInfoWindowTab("Address",depotDetail[1])];
   //else infoTabs = [new GInfoWindowTab("Address",depotDetail[1]),new GInfoWindowTab("Facilities",depotDetail[2])];      
      
   printDepot = getPrintDetails(details);
   if ( document.getElementById("printdepotaddr") ) document.getElementById("printdepotaddr").innerHTML = printDepot[0];
   //if ( document.getElementById("printdepottype") ) document.getElementById("printdepottype").innerHTML = printDepot[1];   
   if ( document.getElementById("printdepottype") ) document.getElementById("printdepottype").innerHTML = "";
   
   return infoTabs;
}

function getScreenDetails(details,forDest)
{
   var depotType = "", depotDetail = "", isHO = false, imgType = "", hasType = false;
   
   depotType += "<div style=\"width:220px;height:130px;\"><ul style=\"border:0;margin:0px 0px 0px ";
   if ( is_ie ) depotType += "0px;"
   else depotType += "-5px;"   
   depotType += ";padding:0px;\">";
   
   //if ( is_ie ) depotType += "<div style=\"width:220px;height:130px;\"><ul style=\"border:0px;margin:0px 0px 0px 17px;padding:0px;\">"
   //else depotType += "<div style=\"width:220px;height:130px;\">"   
   
   printDepotType = "<ul style=\"border:0px;margin:0px 0px 0px 15px;padding:0px;\">";
   for ( i = 0; i < (details.type).length; i++ )
   {
      if ( details.type[i].name == "Head Office" ) isHO = true;
      else if ( details.type[i].name != "TBC" )
      {
         
         //depotType += "<li style=\"list-style-image:url('/images/8x8_" + (details.type[i].icon).substr(1) + ".gif');\"><span style=\"font-size:60%;color:#003366;background-color:#ffffff;\">" + details.type[i].name + "</span>";
         depotType += "<li style=\"list-style:none;border:0;margin:0;paddng:0;\"><img src=\"images/trans_white_8x8.gif\" style=\"width:8px;height:8px;border:0;margin:0;padding:0;background-color:" + details.type[i].icon + "\" /><span style=\"font-size:60%;color:#003366;background-color:#ffffff;padding-left:3px;\">" + details.type[i].name + "</span>";
         depotType += "</li>";
         
         //depotType += "<div style=\"font-size:60%;clear:both;border:1px solid #ff0000;margin:0;padding:0;width:95%;float:left;\" /><img src=\"images/trans_white_8x8.gif\" style=\"float:left;border:1px solid #0000ff;margin:0;padding:0;width:8px;height:8px;background-color:" + details.type[i].icon + "\" /><div style=\"border:1px solid #00ff00;margin:0;padding:0;width:91%;float:right;\">" + details.type[i].name + "</div></div>";
         
         printDepotType += "<li><span>" + details.type[i].name + "</span></li>"
         hasType = true;
         //depotType += "&nbsp;<img src=\"images/8x8_" + (details.type[i].icon).substr(1) + ".gif\" style=\"width:8px;height:8px;border:0px;\" alt=\"" + details.type[i].name + "\" title=\"" + details.type[i].name + "\"/>"
         //imgType += "<img src=\"images/dot_8x8_2.gif\" style=\"width:8px;height:8px;border:0px;background-color:" + details.type[i].icon + ";\" alt=\"" + details.type[i].name + "\" title=\"" + details.type[i].name + "\"/>&nbsp;"
      }
   }
   printDepotType += "</ul>";
   //depotType += "</ul></div>"
   depotType += "</div>"

   depotDetail += "<div style=\"width:220px;height:130px;\">";
   //depotDetail += "<div style=\"font-size:60%;font-weight:bold;clear:both;width:90%;text-align:left;\" />" + imgType + "</div>"
   depotDetail += "<div style=\"font-size:60%;font-weight:bold;clear:both;\" />" + details.name + (isHO?" (Head Office)":"") + "</div>"   
   if ( details.address != "" )depotDetail += "<div style=\"font-size:60%;padding:0;border:0;margin:0;\">" + details.address + "</div>"
   if ( details.postcode != "" )depotDetail += "<div style=\"font-size:60%;padding:0;border:0;margin:0;\">" + details.postcode + "</div>"
   if ( details.tel != "" ) depotDetail += "<div style=\"font-size:60%;padding:3% 0% 0% 0%;border:0;margin:0;clear:both;\">Tel: " + details.tel + "</div>"
   if ( details.fax != "" ) depotDetail += "<div style=\"font-size:60%;clear:both;padding:0;border:0;margin:0;\">Fax: " + details.fax + "</div>"
   if ( details.email != "" ) depotDetail += "<div style=\"font-size:60%;padding:3% 0% 0% 0%;border:0;margin:0;clear:both;\">Email: <a href=\"mailto:" + details.email + "?subject=Information about " + details.name + "\">" + details.email + "</a></div>"
   if( !forDest )
   {
      depotDetail += "<div style=\"font-size:60%;padding:3% 0% 0% 0%;border:0;margin:0;clear:both;\"><a href=\"javascript:window.print();\"><img src=\"/images/printicon.gif\" width=\"16\" height=\"16\" border=\"0\" align=\"absmiddle\"/>Print details</a>";
      if ( details.pdfmap && details.pdfmap != "" ) depotDetail += "&nbsp;|&nbsp;<a href=\"http://" + location.host + "/" + details.pdfmap +"\" target=\"pdfmap\">Download map</a>"
      depotDetail += "</div>";
   }
   depotDetail += "</div>";
   
   return new Array(hasType,depotDetail,depotType)
}

function getPrintDetails(details)
{
   var printDepotDetail = "", printDepotType = "", isHO = false;
      
   printDepotType += "<span>Facilities</span><br />"
   printDepotType += "<ul style=\"border:0px;margin:0px 0px 0px 15px;padding:0px;\">";
   
   for ( i = 0; i < (details.type).length; i++ )
   {
      printDepotType += "<li><span>" + details.type[i].name + "</span></li>"
      if ( details.type[i].name == "Head Office" ) isHO = true;     
   }
   printDepotType += "</ul>";

   if ( isHO ) printDepotType = "";

   printDepotDetail += "<div style=\"font-weight:bold;clear:both;\">" + details.name + (isHO?" (Head Office)":"") + "</div>"   
   if ( details.address != "" )printDepotDetail += "<div style=\"padding:0;border:0;margin:0;\">" + details.address + "</div>"
   if ( details.postcode != "" )printDepotDetail += "<div style=\"padding:0;border:0;margin:0;\">" + details.postcode + "</div>"
   if ( details.tel != "" ) printDepotDetail += "<div style=\"padding:3% 0% 0% 0%;border:0;margin:0;clear:both;\">Tel: " + details.tel + "</div>"
   if ( details.fax != "" ) printDepotDetail += "<div style=\"clear:both;padding:0;border:0;margin:0;\">Fax: " + details.fax + "</div>"
   if ( details.email != "" ) printDepotDetail += "<div style=\"padding:3% 0% 0% 0%;border:0;margin:0;clear:both;\">Email: " + details.email + "</div>"

   return new Array(printDepotDetail,printDepotType)
}

function getPrintHoDetails(details)
{
   var printDepotDetail = "";
      
   if ( details.address != "" )printDepotDetail += "<div style=\"padding:0;border:0;margin:0;\">" + details.address + "</div>"
   if ( details.postcode != "" )printDepotDetail += "<div style=\"padding:0;border:0;margin:0;\">" + details.postcode + "</div>"
   if ( details.tel != "" ) printDepotDetail += "<div style=\"padding:1% 0% 0% 0%;border:0;margin:0;clear:both;\">Tel: " + details.tel + "</div>"
   if ( details.fax != "" ) printDepotDetail += "<div style=\"clear:both;padding:0;border:0;margin:0;\">Fax: " + details.fax + "</div>"
   if ( details.email != "" ) printDepotDetail += "<div style=\"padding:1% 0% 0% 0%;border:0;margin:0;clear:both;\">Email: " + details.email + "</div>"  

   return printDepotDetail
}

function clearPcSearch(fromForm)
{
   if ( document.getElementById("postcodeerror") )
   {
      document.getElementById("postcodeerror").style.display = "none";
      document.getElementById("postcodeerror").cells[0].innerHTML = "";
   }

   if ( document.getElementById(("postcodereturn")) )
   {
      divNode = document.getElementById("postcodereturn");
      if ( divNode.hasChildNodes() )
      {
         for ( i = 0; i < divNode.childNodes.length; i++ ) divNode.removeChild(divNode.childNodes[i]);
      }
      divNode.style.display = "none";
   }
   
   if ( !fromForm ) document.psForm.spc.value = "";
   
   if ( pcMkr )
   {
      pcMkr.hide();
   }
   
   if ( document.getElementById("directions") ) document.getElementById("directions").innerHTML = "";
   return false;
}

function doPcSearch(theForm)
{
   var divNode, i;
   clearPcSearch(true);
   clearZcSearch();
   var param = {"pageaction":theForm.pageaction.value,"spc":theForm.spc.value};
   sendRequest("html",param,postFileUrl,showPcSearch);

   return false;
}

function clearZcSearch(fromForm)
{
   if ( document.getElementById("postcodeerror") )
   {
      document.getElementById("zipcodeerror").style.display = "none";
      document.getElementById("zipcodeerror").cells[0].innerHTML = "";
   }

   if ( document.getElementById(("postcodereturn")) )
   {
      divNode = document.getElementById("postcodereturn");
      if ( divNode.hasChildNodes() )
      {
         for ( i = 0; i < divNode.childNodes.length; i++ ) divNode.removeChild(divNode.childNodes[i]);
      }
      divNode.style.display = "none";
   }
   
   if ( !fromForm ) document.zsForm.szc.value = "";
   
   if ( pcMkr )
   {
      pcMkr.hide();
   }
   
   if ( document.getElementById("directions") ) document.getElementById("directions").innerHTML = "";
   return false;
}

function doZcSearch(theForm)
{
   var divNode, i;
   clearPcSearch();
   clearZcSearch(true);
   var param = {"pageaction":theForm.pageaction.value,"spc":theForm.szc.value};   
   sendRequest("html",param,postFileUrl,showZcSearch);

   return false;
}
function getDirections(pc,pclat,pclon,depotid,depotlat,depotlon,locale)
{
   //var myPage = "depot_direction.html?startaddr=" + encodeURI(pc) + "&start=" + encodeURI(pclat+","+pclon) + "&endaddr=" + depotid + "&end=" + encodeURI(depotlat+","+depotlon);
   //var myPage = "depot_direction.asp?startaddr=" + encodeURI(pc) + "&start=" + encodeURI(pclat+","+pclon) + "&endaddr=" + depotid + "&end=" + encodeURI(depotlat+","+depotlon);
      
   var myPage = "depot_direction.asp?startaddr=" + encodeURI(pc) + "&endaddr=" + depotid + "&locale=" + locale
   openPopup(EMRpopUpWin,myPage,"status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=1,scrollbars=1,width=830,height=620");
}

//function setDirections(fromAddress, toAddress, pcode, depotname)
function setDirections(start,end)
{  
   //var dirStr = "from: " + start.addr + " to: " + end.lat + "," + end.lon;
   var dirStr = "from: " + start.lat + "," + start.lon + " to: " + end.lat + "," + end.lon;
   //alert(dirStr);
   gdir.load(dirStr,{"locale":"en"});   
   printStart = start;
   printEnd = end;
}

function onGDirectionsLoad(start,end,destDepot)
{  
   var depotDetails, printDetails, trNodes, theRoute, i, myHTML;
   if ( debugDIV ) debugDIV.innerHTML = "Directions loaded";   
   
   depotDetails = getScreenDetails(destDepot,true);
   printDetails = getPrintDetails(destDepot);
   
   if ( document.getElementById("depotdetails") ) document.getElementById("depotdetails").innerHTML = depotDetails[1];
   if ( document.getElementById("depotfacilities") )
   {
      document.getElementById("depotfacilities").innerHTML = "";
      //if ( depotDetails[0] ) document.getElementById("depotfacilities").innerHTML = "";
      //else document.getElementById("depotfacilities").innerHTML = "<span style=\"font-size:60%;\">Facilities</span><br />" + depotDetails[2];
   }
   
   if ( document.getElementById("googledirectionpanel") )
   {
      trNodes = (document.getElementById("googledirectionpanel")).getElementsByTagName("TR");      
      trNodes[trNodes.length-2].cells[1].innerHTML = destDepot.name;
      if ( document.getElementById("fromtofromaddr") ) document.getElementById("fromtofromaddr").innerHTML = trNodes[0].cells[1].innerHTML;
      if ( document.getElementById("fromtotoaddr") ) document.getElementById("fromtotoaddr").innerHTML = printDetails[0];
      if ( document.getElementById("estimatetimedist") ) document.getElementById("estimatetimedist").innerHTML = "Estimated " + gdir.getSummaryHtml();
      if ( document.getElementById("printdirections") )
      {
         theRoute = gdir.getRoute(0);
         
         myHTML = "<table><tbody>";
         for ( i = 0; i < theRoute.getNumSteps(); i++ )
         {
            myHTML += "<tr><td>" + theRoute.getStep(i).getDescriptionHtml() + "</td><td>" + theRoute.getStep(i).getDistance().html + "</td><td>" + theRoute.getStep(i).getDuration().html + "</td></tr>"
         }
         myHTML += "<tr><td>TOTAL</td><td>" + gdir.getDistance().html + "</td><td>" + gdir.getDuration().html + "</td></tr>"
         
         if ( document.getElementById("disclaimfoot") ) myHTML += "<tr><td colspan=\"3\" style=\"border:0;font-size:70%;\">" + document.getElementById("disclaimfoot").innerHTML + "</td></tr>"
         myHTML += "<tr><td colspan=\"3\" style=\"border:0;font-size:70%;\">" + gdir.getCopyrightsHtml(); + "</td></tr>"
         myHTML += "</tbody></table>";
         document.getElementById("printdirections").innerHTML = myHTML;                  
      }
   }
}

function onGDirectionsError(statusObj)
{
   var errMsg = "Sorry, unable to retrieve directions from Google Maps.<br /><br />";
   
   switch ( statusObj.code )
   {
      case G_GEO_BAD_REQUEST:
         errMsg += "Directions could not be parsed.";
         break;
      case G_GEO_SERVER_ERROR:
         errMsg += "Directions could not be processed.";
         break;
      case G_GEO_MISSING_QUERY:
         errMsg += "No directions sent.";
         break;
      case G_GEO_MISSING_ADDRESS:
         errMsg += "No directions sent.";
         break;
      case G_GEO_UNKNOWN_ADDRESS:
         errMsg += "Geograhical location cannot be found for address.";
         break;
      case G_GEO_UNAVAILABLE_ADDRESS:
         errMsg += "Address or route for directions are unavailable due to legal or contractual reasons.";
         break;
      case G_GEO_UNKNOWN_DIRECTIONS:
         errMsg += "Directions cannot be produced.";
         break;
      case G_GEO_BAD_KEY:
         errMsg += "The directions are not available.";
         break;
      case G_GEO_TOO_MANY_QUERIES:
         errMsg += "The directions are unavailable.";
         break;
      default:
         errMsg += "<br />An unspecified error has occurred.";
   }
      
   if ( document.getElementById("googledirectionpanel") )
   {
      document.getElementById("googledirectionpanel").innerHTML = "<br /><br /><div style=\"color:#aa0000;font-size:120%;\">" + errMsg + "</div>";
   }   
   else
   {
      alert(errMsg);
   }
   mapDirOK = false;
}


function showPsDepot(depotid)
{
   var ddRegion, ddParentRegion;
   if ( depots && regDepots )
   {
      ddRegion = "-" + depots[depotid].ddregion;
      ddParentRegion = "-" + regDepots["-"+depots[depotid].ddregion].ddregion;
      ddShowDepots(ddParentRegion,ddRegion,true);
      ddShowMarker(depotid.toString(),true);
      //map.setZoom(map.getZoom()-5); // Modify zoom level on map.
   }
   return false;
}

function showPcSearch(response)
{
   var pcGeo, pcDirections, firstDepot;
   var myPgtitle = null, myRegion = null, myDepot = null;
   if ( response != "" )
   {
      if ( document.getElementById("psForm") )
      {
         var formNode = document.getElementById("psForm");
         var aNode, tblNode, thNode, tbNode, trNode, tdNode, i;
         
         var optionsData = eval('('+response+')');
         if ( optionsData.data )
         {
            if ( document.getElementById("postcodereturn") )
            {
               tblNode = document.createElement("table");
               tblNode.className = "sideaddressbox";
               tblNode.setAttribute("border","0")
               tblNode.setAttribute("cellpadding","0")
               tblNode.setAttribute("cellspacing","1")
               thNode = document.createElement("thead");
               tbNode = document.createElement("tbody");
               
               tblNode.appendChild(thNode);
               tblNode.appendChild(tbNode);
               
               trNode = document.createElement("tr");
               trNode.setAttribute("height","14");
               
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","110");
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               //tdNode.style.textAlign = "left";
               tdNode.innerHTML = "Site/office";
               trNode.appendChild(tdNode);
               
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","40");               
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               //tdNode.style.textAlign = "right";
               //tdNode.innerHTML = "Distance (m)*";
               tdNode.innerHTML = "m*";               
               trNode.appendChild(tdNode);
                       
               /*
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","6%");
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               tdNode.style.textAlign = "left";
               //tdNode.innerHTML = "Distance (km)*";
               tdNode.innerHTML = "km*";
               trNode.appendChild(tdNode);
               */
               tdNode = document.createElement("th");
               tdNode.className = "sideaddressbox";
               tdNode.setAttribute("width","14");
               tdNode.style.backgroundColor = "#ffffff";
               tdNode.innerHTML = "&nbsp;";
               trNode.appendChild(tdNode);               
               
               thNode.appendChild(trNode);
               
               for ( i = 0; i < optionsData.data.length; i++ )
               {
                  if ( i == 0 )
                  {                  
                     pcGeo = {"lat":optionsData.data[i].pclat,"lon":optionsData.data[i].pclon};
                     firstDepot = depots[optionsData.data[i].id];
                  }
                  trNode = document.createElement("tr");
                  trNode.setAttribute("height","14");

                  tdNode = document.createElement("td");
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","110");
                  tdNode.style.backgroundColor = "#ffffff";
                  aNode = "<a class=\"sideaddressboxlinks\" href=\"#\" onclick=\"return showPsDepot(" + optionsData.data[i].id + ");\">" + optionsData.data[i].name + "</a>"
                  tdNode.innerHTML = aNode;
                  trNode.appendChild(tdNode);
                  
                  tdNode = document.createElement("td");
                  //tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","40");
                  tdNode.setAttribute("align","right")                 
                  //tdNode.setAttribute("style","background-color:#ffffff;")
                  tdNode.style.backgroundColor = "#ffffff";
                  tdNode.innerHTML = (optionsData.data[i].radiusm).toFixed(2);                  
                  trNode.appendChild(tdNode);               
                  
                  /*
                  tdNode = document.createElement("td");
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","6%");
                  tdNode.setAttribute("align","right")
                  tdNode.style.backgroundColor = "#ffffff";
                  tdNode.innerHTML = optionsData.data[i].radiuskm;
                  trNode.appendChild(tdNode);
                  */
                                    
                  /*
                  //pcDirections = "http://maps.google.co.uk/maps?f=d&hl=en&saddr=WA57NS&daddr=53.4477+-3.0051&ll=" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "&ie=UTF8&z=14&om=1"                  
                  */
                  tdNode = document.createElement("td");
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"setDirections('" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "','" + depots[optionsData.data[i].id].lat + "," + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\">D</a>";
                  
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"setDirections('" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "','" + depots[optionsData.data[i].id].lat + "," + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\"><img src=\"/images/" + ((i%2)?"atoz_trans.gif":"car_trans.gif") + "\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"getDirections('" + optionsData.data[i].pcode + "','" + optionsData.data[i].pclat + "','" + optionsData.data[i].pclon + "','" + optionsData.data[i].id + "','" + depots[optionsData.data[i].id].lat + "','" + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\"><img src=\"/images/" + ((i%2)?"atoz_trans.gif":"car_trans.gif") + "\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  if ( depots ) aNode = "<a href=\"#\" onclick=\"getDirections('" + optionsData.data[i].pcode + "','" + optionsData.data[i].pclat + "','" + optionsData.data[i].pclon + "','" + optionsData.data[i].id + "','" + depots[optionsData.data[i].id].lat + "','" + depots[optionsData.data[i].id].lon + "',''); return false;\"><img src=\"/images/car_trans.gif\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  else aNode = "N";
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","14");
                  tdNode.setAttribute("align","center");
                  tdNode.style.backgroundColor = "#ffffff";
                  tdNode.innerHTML = aNode;
                  trNode.appendChild(tdNode);
                  
                  tbNode.appendChild(trNode);
               }
               trNode = document.createElement("tr");               
               tdNode = document.createElement("td");
               tdNode.colSpan = 4;
               tdNode.className = "sideaddressbox";
               tdNode.innerHTML = "* Please note, this is a point to point distance.";
               trNode.appendChild(tdNode);               
               tbNode.appendChild(trNode);

               trNode = document.createElement("tr");               
               tdNode = document.createElement("td");
               tdNode.colSpan = 4;
               tdNode.className = "sideaddressbox";
               tdNode.innerHTML = "<a class=\"sideaddressboxlinks\" href=\"#\" onclick=\"return clearPcSearch()\" alt=\"Clear search\" title=\"Clear search\">Clear search</a>";
               trNode.appendChild(tdNode);               
               tbNode.appendChild(trNode);
               
               document.getElementById("postcodereturn").style.display = "block";
               document.getElementById("postcodereturn").appendChild(tblNode);
               
               if ( firstDepot )
               {
                  myRegion = -firstDepot.ddregion;
                  myPgtitle = regDepots[myRegion].pgtitle;                  
                  myDepot = myRegion;

                  if ( document.getElementById("mappagetitle") && myPgtitle != "" ) document.getElementById("mappagetitle").innerHTML = myPgtitle;                              
                  ddShowDepots(myRegion,myDepot,true);
               }
               
               /*
               if ( ukNorth.lat >= pcGeo.lat )
               {
                  myPgtitle = ukNorth.pgtitle;
                  myRegion = ukNorth.id
                  myDepot = ukNorth.id;
                  //myDepot = Math.abs(ukNorth.id);
               }
               else
               {
                  myPgtitle = ukSouth.pgtitle;
                  myRegion = ukSouth.id;
                  myDepot = ukSouth.id;
                  //myDepot = Math.abs(ukSouth.id);
               }
               if ( document.getElementById("mappagetitle") && myPgtitle != "" ) document.getElementById("mappagetitle").innerHTML = myPgtitle;                              
               ddShowDepots(myRegion,myDepot,true);
               */
               
               if ( map )
               {
                  posn = new GLatLng(optionsData.data[0].pclat, optionsData.data[0].pclon);
                  
                  var icon = new GIcon(baseIcon);
                  icon.image = "/images/mm_20_red.png";
                  
                  if ( !pcMkr )
                  {
                     pcMkr = new GMarker(posn,{title:"Your postcode",icon:icon});
                     pcMkr.show();
                     map.addOverlay(pcMkr);
                  }
                  else
                  {
                     pcMkr.show();
                     pcMkr.setPoint(posn);
                  }                
                  map.setCenter(posn,7);
               }
            }
         }
         else if ( optionsData.error )
         {
            if ( document.getElementById("postcodeerror") )
            {
               document.getElementById("postcodeerror").style.display = (is_ie?"inline":"table-row");
               document.getElementById("postcodeerror").cells[0].innerHTML = optionsData.error;
            }
         }
         else
         {
            if ( document.getElementById("postcodeerror") )
            {
               document.getElementById("postcodeerror").style.display = (is_ie?"inline":"table-row");
               document.getElementById("postcodeerror").cells[0].innerHTML = "<span class=\"errormessagefont\">An unexpected error has occurred.</span>";
            }
         }
      }
   }
}

function showZcSearch(response)
{
   var pcGeo, pcDirections,firstDepot;
   var myPgtitle = null, myRegion = null, myDepot = null, radM, pos;
   if ( response != "" )
   {
      if ( document.getElementById("zsForm") )
      {
         var formNode = document.getElementById("zsForm");
         var aNode, tblNode, thNode, tbNode, trNode, tdNode, i;
         
         var optionsData = eval('('+response+')');
         if ( optionsData.data )
         {
            if ( document.getElementById("postcodereturn") )
            {
               tblNode = document.createElement("table");
               tblNode.className = "sideaddressbox";
               tblNode.setAttribute("border","0")
               tblNode.setAttribute("cellpadding","0");
               tblNode.setAttribute("cellspacing","1");
               thNode = document.createElement("thead");
               tbNode = document.createElement("tbody");
               
               tblNode.appendChild(thNode);
               tblNode.appendChild(tbNode);
               
               trNode = document.createElement("tr");
               trNode.setAttribute("height","14");
               
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","110");
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               //tdNode.style.textAlign = "left";
               tdNode.innerHTML = "Site/office";
               trNode.appendChild(tdNode);
               
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","40");
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               //tdNode.style.textAlign = "right";
               //tdNode.innerHTML = "Distance (m)*";
               tdNode.innerHTML = "m*";
               trNode.appendChild(tdNode);
                       
               /*
               tdNode = document.createElement("th");
               tdNode.setAttribute("width","6%");
               tdNode.className = "sideaddressbox";
               tdNode.style.backgroundColor = "#ffffff";
               tdNode.style.textAlign = "left";
               //tdNode.innerHTML = "Distance (km)*";
               tdNode.innerHTML = "km*";
               trNode.appendChild(tdNode);
               */
               tdNode = document.createElement("th");
               tdNode.className = "sideaddressbox";
               tdNode.setAttribute("width","14");
               tdNode.style.backgroundColor = "#ffffff";
               tdNode.innerHTML = "&nbsp;";
               trNode.appendChild(tdNode);               
               
               thNode.appendChild(trNode);
               
               for ( i = 0; i < optionsData.data.length; i++ )
               {
                  if ( i == 0 )
                  {                  
                     pcGeo = {"lat":optionsData.data[i].pclat,"lon":optionsData.data[i].pclon};
                     firstDepot = depots[optionsData.data[i].id];
                  }
                  trNode = document.createElement("tr");
                  trNode.setAttribute("height","14");

                  tdNode = document.createElement("td");
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","110");
                  tdNode.style.backgroundColor = "#ffffff";
                  aNode = "<a class=\"sideaddressboxlinks\" href=\"#\" onclick=\"return showPsDepot(" + optionsData.data[i].id + ");\">" + optionsData.data[i].name + "</a>"
                  tdNode.innerHTML = aNode;
                  trNode.appendChild(tdNode);
                  
                  tdNode = document.createElement("td");
                  //tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","40");
                  tdNode.setAttribute("align","right");
                  //tdNode.setAttribute("style","background-color:#ffffff;");
                  tdNode.style.backgroundColor = "#ffffff";
                  radM = parseFloat(optionsData.data[i].radiusm).toFixed(2);                  
                  pos = radM.indexOf(".");
                  if ( pos > 0 && (pos-3) > 0 ) radM = radM.substr(0,pos-3)+","+radM.substr(pos-3);
                  tdNode.innerHTML = radM;
                  trNode.appendChild(tdNode);               
                  
                  /*
                  tdNode = document.createElement("td");
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","6%");
                  tdNode.setAttribute("align","right")
                  tdNode.style.backgroundColor = "#ffffff";
                  tdNode.innerHTML = optionsData.data[i].radiuskm;
                  trNode.appendChild(tdNode);
                  */
                                    
                  /*
                  //pcDirections = "http://maps.google.co.uk/maps?f=d&hl=en&saddr=WA57NS&daddr=53.4477+-3.0051&ll=" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "&ie=UTF8&z=14&om=1"                  
                  */
                  tdNode = document.createElement("td");
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"setDirections('" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "','" + depots[optionsData.data[i].id].lat + "," + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\">D</a>";
                  
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"setDirections('" + optionsData.data[i].pclat + "," + optionsData.data[i].pclon + "','" + depots[optionsData.data[i].id].lat + "," + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\"><img src=\"/images/" + ((i%2)?"atoz_trans.gif":"car_trans.gif") + "\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  //if ( depots ) aNode = "<a href=\"#\" onclick=\"getDirections('" + optionsData.data[i].pcode + "','" + optionsData.data[i].pclat + "','" + optionsData.data[i].pclon + "','" + optionsData.data[i].id + "','" + depots[optionsData.data[i].id].lat + "','" + depots[optionsData.data[i].id].lon + "','" + optionsData.data[i].pcode + "','" + depots[optionsData.data[i].id].name + "'); return false;\"><img src=\"/images/" + ((i%2)?"atoz_trans.gif":"car_trans.gif") + "\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  if ( depots ) aNode = "<a href=\"#\" onclick=\"getDirections('" + optionsData.data[i].pcode + "','" + optionsData.data[i].pclat + "','" + optionsData.data[i].pclon + "','" + optionsData.data[i].id + "','" + depots[optionsData.data[i].id].lat + "','" + depots[optionsData.data[i].id].lon + "',''); return false;\"><img src=\"/images/car_trans.gif\" width=\"12\" height=\"12\" title=\"Get directions (opens in a new window).\" alt=\"Get directions (opens in a new window).\"/></a>";
                  else aNode = "N";
                  
                  tdNode.className = "sideaddressbox";
                  tdNode.setAttribute("width","14");
                  tdNode.setAttribute("align","center");
                  tdNode.style.backgroundColor = "#ffffff";
                  tdNode.innerHTML = aNode;
                  trNode.appendChild(tdNode);
                  
                  tbNode.appendChild(trNode);
               }
               trNode = document.createElement("tr");               
               tdNode = document.createElement("td");
               tdNode.colSpan = 4;
               tdNode.className = "sideaddressbox";
               tdNode.innerHTML = "* Please note, this is a point to point distance.";
               trNode.appendChild(tdNode);               
               tbNode.appendChild(trNode);

               trNode = document.createElement("tr");               
               tdNode = document.createElement("td");
               tdNode.colSpan = 4;
               tdNode.className = "sideaddressbox";
               tdNode.innerHTML = "<a class=\"sideaddressboxlinks\" href=\"#\" onclick=\"return clearZcSearch()\" alt=\"Clear search\" title=\"Clear search\">Clear search</a>";
               trNode.appendChild(tdNode);               
               tbNode.appendChild(trNode);
               
               document.getElementById("postcodereturn").style.display = "block";
               document.getElementById("postcodereturn").appendChild(tblNode);
               
               if ( firstDepot )
               {
                  myRegion = -firstDepot.ddregion;
                  myPgtitle = regDepots[myRegion].pgtitle;                  
                  myDepot = myRegion;
                  
                  if ( document.getElementById("mappagetitle") && myPgtitle != "" ) document.getElementById("mappagetitle").innerHTML = myPgtitle;                                                
                  ddShowDepots(myRegion,myDepot,true);
               }

               if ( map )
               {
                  posn = new GLatLng(optionsData.data[0].pclat, optionsData.data[0].pclon);
                  
                  var icon = new GIcon(baseIcon);
                  icon.image = "/images/mm_20_red.png";
                  
                  if ( !pcMkr )
                  {
                     pcMkr = new GMarker(posn,{title:"Your zipcode",icon:icon});
                     pcMkr.show();
                     map.addOverlay(pcMkr);
                  }
                  else
                  {
                     pcMkr.show();
                     pcMkr.setPoint(posn);
                  }                
                  map.setCenter(posn,7);
               }
            }
         }
         else if ( optionsData.error )
         {
            if ( document.getElementById("zipcodeerror") )
            {
               document.getElementById("zipcodeerror").style.display = (is_ie?"inline":"table-row");
               document.getElementById("zipcodeerror").cells[0].innerHTML = optionsData.error;
            }
         }
         else
         {
            if ( document.getElementById("zipcodeerror") )
            {
               document.getElementById("zipcodeerror").style.display = (is_ie?"inline":"table-row");
               document.getElementById("zipcodeerror").cells[0].innerHTML = "<span class=\"errormessagefont\">An unexpected error has occurred.</span>";
            }
         }
      }
   }
}

function showRegionalContact(regionid)
{
   if ( regAddr && depots )
   {
      var depotid = regAddr[regionid].addr;
      if ( depots[depotid] )
      {
         var officeDetails = ""
         if ( regAddr[regionid].locate != "" ) officeDetails += "<a href=\"" + regAddr[regionid].locate + "\" class=\"sideaddressboxlinks\">Locate</a><br />";
         if ( depots[depotid].address != "" ) officeDetails += depots[depotid].address;
         if ( depots[depotid].postcode != "" ) officeDetails += " " + depots[depotid].postcode;
         officeDetails += "<br /><br />";
         if ( depots[depotid].tel != "" ) officeDetails += "Tel: " + (depots[depotid].telint == "" ? depots[depotid].tel : depots[depotid].telint) + "<br />";
         if ( depots[depotid].fax != "" ) officeDetails += "Fax: " + (depots[depotid].faxint == "" ? depots[depotid].fax : depots[depotid].faxint) + "<br />";
         if ( depots[depotid].email != "" ) officeDetails += "Email: <a href=\"mailto:" + depots[depotid].email + "\" class=\"sideaddressboxlinks\">" + depots[depotid].email + "</a><br />";
                  
         if ( document.getElementById("addrtitle") ) document.getElementById("addrtitle").innerHTML = "&nbsp;&nbsp;" + regAddr[regionid].addrtitle;
         if ( document.getElementById("hoaddrdetails") ) document.getElementById("hoaddrdetails").innerHTML = officeDetails;
      }
   }
}

function showRegionalContact2(regionid)
{
   var msg = "", i;
   if ( regAddr )
   {
      if ( regAddr[regionid].addr.length > 0 )
      {
         deleteTblRows("regaddr",0);
         addTblRows("regaddr",0,regAddr[regionid].addr);
         if ( is_ie ) document.getElementById("regaddcontainer").style.display = "block";
         else document.getElementById("regaddcontainer").style.display = "table";
      }
      else if ( regAddr[regionid].addr.length == 0 && document.getElementById("regaddr").rows.length > 1 )
      {
         deleteTblRows("regaddr",0);
         document.getElementById("regaddcontainer").style.display = "none";
      }
   }
}

function addTblRows(nodeid,rowid,data)
{
   var i, tblNode, tblRow, tblCell, start;
   if ( document.getElementById(nodeid) )
   {
      tblNode = document.getElementById(nodeid);
      start = tblNode.rows.length;
      for ( i = 0; i < data.length; i++ )
      {
         tblRow = tblNode.insertRow(start+i);
         tblCell = tblRow.insertCell(0);
         tblCell.innerHTML = "<span class=\"sideaddressbox\">" + data[i].name + "<br />" + "Tel: " + data[i].tel + ((data[i].fax=="")?"":"<br />Fax: " + data[i].fax) + "</span>";
      }
   }
}

function deleteTblRows(nodeid,rowid)
{
   var i, tblNode;
   if ( document.getElementById(nodeid) )
   {
      tblNode = document.getElementById(nodeid);
      while ( tblNode.rows.length > rowid)
      {
         tblNode.deleteRow(rowid);
      }
   }
}


function printDirections()
{
   if ( mapDirOK ) window.print();
   else alert("There are no directions to print.")
   return false;
}

function parseQS()
{
   var qs = decodeURI(document.location.search), start = {"addr":"","lat":"","lon":""}, end = {"addr":"","lat":"","lon":""}, pos = -1, temp = "", tempArray = new Array(), destDepot = null;
   
   if ( qs != "" )
   {
      if ( qs.indexOf("?") > -1 ) qs = qs.substring(1)
      if ( qs.indexOf("startaddr=") > -1 )
      {
         if ( (pos = qs.indexOf("&")) < 0 ) pos = qs.length;
         start.addr = qs.substring(10,pos);
         qs = qs.substring(pos+1);
      }

      if ( qs.indexOf("start=") > -1 )
      {
         if ( (pos = qs.indexOf("&")) < 0 ) pos = qs.length;
         temp = qs.substring(6,pos);
         tempArray = temp.split(",");
         start.lat = tempArray[0];
         start.lon = tempArray[1];
         qs = qs.substring(pos+1);         
      }

      if ( qs.indexOf("endaddr=") > -1 )
      {
         if ( (pos = qs.indexOf("&")) < 0 ) pos = qs.length;
         end.addr = qs.substring(8,pos);
         qs = qs.substring(pos+1);         
      }
   }
   
   if ( qs.indexOf("end=") > -1 )
   {
      if ( (pos = qs.indexOf("&")) < 0 ) pos = qs.length;
      temp = qs.substring(4,pos);
      tempArray = temp.split(",");
      end.lat = tempArray[0];
      end.lon = tempArray[1];
      qs = qs.substring(pos+1);
   }
   
   if ( depots ) if ( depots[end.addr] ) destDepot = depots[end.addr];
   
   return new Array(start,end,destDepot);
}

function modifyZoomControls(countryName)
{   
   if ( currZoomControls != null )
   {
      if ( countryName == "World" ) nextZoomControls = new GSmallMapControl();
      else nextZoomControls = new GLargeMapControl();

      if ( nextZoomControls != currZoomControls )
      {
         map.removeControl(currZoomControls);
         map.addControl(nextZoomControls);
         currZoomControls = nextZoomControls;
         nextZoomControls = null;
      }
   }
}

function usePointFromPostcode(postcode, amendStartAddrPoints)
{
   localSearch.setSearchCompleteCallback(null,
      function()
      {
         if (localSearch.results[0])
         {
            var resultLat = localSearch.results[0].lat;
            var resultLng = localSearch.results[0].lng;
            var point = new GLatLng(resultLat,resultLng);            
            amendStartAddrPoints(resultLat,resultLng);
         }
         else
         {
            alert("Postcode not found!");
         }
      }
   );
    
   localSearch.execute(postcode + ", UK");
}

function amendStartAddrPoints(pointLat,pointLng)
{   
   dirStartAddr.lat = pointLat;
   dirStartAddr.lon = pointLng;
   setDirections(dirStartAddr,dirEndAddr);
}