var lastResponse;
var dodebug=false;
var printxml=false;
var pageInitialized = false;
var doOmniture = true;
var chatPageName = '2AC Network Coverage Tool 20';
var chattealeafSessionId = getCookie('TLTSID') != undefined ? getCookie('TLTSID') : '';
var showPowersourceInCompare = false; //Default changed to false with PJ4443

var dataservlet="/action/WebCoverageDataServlet9";
var activeTab = "sprintPane";
var selectedDrawer = "voice";
var selectedTab = "sprint";
var drawerLabel='Voice Coverage';
var tabLabel='Sprint Devices';
var lastMapURL;

var zooming = false;
var currentLevel=0;
var changinglayers = false;
var addrVisible = false;
var addressForm;
var bShowPinpoint = false;
var selectCand = false;
var geocodedAddr = false;
var PinpointFlag = false;
var pinpointState = "min";
var dismissed3GPopup = false;
var dismissed4GPopup = false;
var dismissed4GNationalPopup = false;

var showShopBtn = true;
var zoomSlider=false;
var zoomclick=false;
var zoomSliderPos=0;
var zoomSliderMin=0;
var zoomSliderMax= 270; //290;
var zoomLevels = [3300, 1000, 500, 250, 100, 50, 25, 10, 5, 3, 1, .5];
var shoponlinediv = "shoponlinebtn";
var shoponlineanchor = "shoponlineanchor";
var blockpopup=false;
var dragmap=false;
var doAntiAlias='T';
var staticMapFile="";
var useBusyTimer=false;
//var checkDelayms=3500;
var checkDelayms = [300, 3500, 3500, 3500, 3500, 3500, 3000, 2000, 2000, 2000, 1500, 1500];
var checkBusyId=null;
var candXML;

var defaultX = -95.9;
var defaultY = 37.1;

//Values used for currently displayed map
var geoCenterX = defaultX;
var geoCenterY = defaultY;
var centerX = geoCenterX;
var centerY = geoCenterY;
var scale = 3300;
var imgPath = "";
var maptop = 55.0105;
var mapleft = -125.84137;
var mapright = -65.95863;
var mapbottom = 19.18943;
var imgWidth = 420;
var imgHeight = 315;
var degPerPixY=0.11371788309060666
var degPerPixX=0.14257794909431942

//Coverage variables parsed from xml
var coverageLevelCDMA = "";
var coverageLevelIDEN = "";
var showCovLevelDiscl = "N";
var covCDMA = "N";
var covIDEN = "N";
var covEVDO = "N";
var cov4G = "N";

var addressCount = 0;
var currentLocation = 0;
var currentCity="";
var currentState="";
var currentZip="";

//variables used by coverage highlight code
var haveCovData = false;
var covvoicesprint = [ "","","" ];
var covvoicenextel = [ "","","" ];
var covdatasprint = [ "","","" ];
var covdatawimax = [ "","","" ];
var covdatanextel = [ "","","" ];
var covwalkietalkiesprint = [ "","","" ];
var covwalkietalkienextel = [ "","","" ];

//Data stored for geocoded locations
var mapCenterX = [ defaultX, defaultX, defaultX ];
var mapCenterY = [ defaultY, defaultY, defaultY ];
var mapScale = [ 3300, 3300, 3300 ];


function clearLocationData()
{
	haveCovData = false;
	covvoicesprint = [ "","","" ];
	covvoicenextel = [ "","","" ];
	covdatasprint = [ "","","" ];
	covdatawimax = [ "","","" ];
	covdatanextel = [ "","","" ];
	covwalkietalkiesprint = [ "","","" ];
	covwalkietalkienextel = [ "","","" ];

	mapCenterX = [ defaultX, defaultX, defaultX ];
	mapCenterY = [ defaultY, defaultY, defaultY ];
	mapScale = [ 3300, 3300, 3300 ];

	coverageLevelCDMA = "";
	coverageLevelIDEN = "";
	showCovLevelDiscl = "N";
	covCDMA = "N";
	covIDEN = "N";
	covEVDO = "N";
	cov4G = "N";

}

function imgClickHandler(img,evt)
{
  if (window.event)
    alert(window.event.offsetX + ':' + window.event.offsetY);
  else if (evt.target) {
    var coords = {x: 0, y: 0 };
    var el = evt.target;
    do {
      coords.x += el.offsetLeft;
      coords.y += el.offsetTop;
    }
    while ((el = el.offsetParent));
    var offsetX = evt.clientX - coords.x;
    var offsetY = evt.clientY - coords.y;
    alert(offsetX + ':' + offsetY);
  }
}

<!--From dynamicdrive.com-->
function getposOffset(what, offsettype)
{
	if (what == null) return null;
	var totaloffset=(offsettype=="left") ? what.offsetLeft : what.offsetTop;
	var parentEl=what.offsetParent;
	while (parentEl!=null)
	{
		totaloffset=(offsettype=="left") ? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl=parentEl.offsetParent;
	}
	return totaloffset;
}

function getMouseOffset(event)
{
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body

	var dsocleft=document.all? iebody.scrollLeft : pageXOffset
	var dsoctop=document.all? iebody.scrollTop : pageYOffset
	return dsoctop + event.clientY;
}

function getMouseOffsetX(event)
{
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body

	var dsocleft=document.all? iebody.scrollLeft : pageXOffset
	var dsoctop=document.all? iebody.scrollTop : pageYOffset
	return dsocleft + event.clientX;
}


function ScrollToElementOld(theElement)
{

  var selectedPosX = 0;
  var selectedPosY = 0;
              
  while(theElement != null){
    selectedPosX += theElement.offsetLeft;
    selectedPosY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
 window.scrollTo(selectedPosX,selectedPosY);

}

function ScrollToElement(elementId)
{
	if (document.getElementById(elementId) == null) 
		return;
	
	var objoffset = getposOffset(document.getElementById(elementId),"top") ;
	if (objoffset == null) return;
	var objoffsetx = getposOffset(document.getElementById(elementId),"left") ;
	if (objoffsetx == null) return;
	log("Scrolling to offset: " + objoffsetx + "," + objoffset);
	window.scrollTo(objoffsetx,objoffset);

}


function doDragZoombar(obj,event)
{
	var objoffset = getposOffset(document.getElementById("slicer_pic"),"top") ;
	if (objoffset == null) return;
	var mouseOffset = getMouseOffset(event);
   if (dodebug)
   {
	  document.getElementById("frmImpact2").txtStatus.value=(mouseOffset - objoffset);
   }
	if ((zoomSlider == true || zoomclick == true) && (mouseOffset - objoffset) > zoomSliderMin && (mouseOffset - objoffset) <= zoomSliderMax) //event.clientY > 204 && event.clientY < 300 &&
	{
	   zoomSliderPos = mouseOffset - (objoffset +15);
	   document.getElementById("slicer_slider").style.top = zoomSliderPos + "px";
	}
}
//Move to common.js
function doDragMap(obj,event)
{
	var mapobj = document.getElementById("mapimg");
	if (document.getElementById("mapimg") == null)
	{
		return;
	}
	if (scale == zoomLevels[0])
	{
		if (mapobj.style.cursor != "default")
			mapobj.style.cursor="default";
		return;
	}
	else
	{
		if (mapobj.style.cursor != "pointer")
			mapobj.style.cursor="pointer"; //move
	}
	var objoffset = getposOffset(document.getElementById("mapcontainer"),"top") ;
	if (objoffset == null) return;
	var objoffsetx = getposOffset(document.getElementById("mapcontainer"),"left") ;
	if (objoffsetx == null) return;
	var mouseOffset = getMouseOffset(event);
	var mouseOffsetx = getMouseOffsetX(event);
   if (dodebug)
   {
	  document.getElementById("frmImpact2").txtStatus.value=dragmap + ":" + (mouseOffset - objoffset) + "," + (mouseOffsetx - objoffsetx);
	  //log((mouseOffset - objoffset) + "," + (mouseOffsetx - objoffsetx));
   }

	if (dragmap == true)
	{
			hidePinpoint();
			hideMapOptions();
	}

	if (dragmap == true && (mouseOffset - objoffset) > 0 && (mouseOffset - objoffset) <= imgHeight && (mouseOffsetx - objoffsetx) > 0 && (mouseOffsetx - objoffsetx) <= imgWidth)
	{
		newmapy = (mouseOffset - objoffset) - startmapy;
		newmapx = (mouseOffsetx - objoffsetx) - startmapx;
		document.getElementById("mapimg").style.top = newmapy + "px";
		document.getElementById("mapimg").style.left = newmapx + "px";
	}

}

function dropMap()
{
	if (dodebug)
		document.getElementById("frmImpact2").txtStatus.value="Moved map " + (newmapx) + " left/right and " + ( newmapy) + " up/down.";
	log("Moved map " + (newmapx) + " left/right and " + ( newmapy) + " up/down.");
	if (Math.abs(newmapx) > 0 || Math.abs(newmapy) > 0)
		doRecenter(newmapx,newmapy);
	else
		log("minor change, not reloading map.");
}

function dblclickmap(obj,event)
{
 	var objoffset = getposOffset(document.getElementById("mapcontainer"),"top") ;
	if (objoffset == null) return;
	var objoffsetx = getposOffset(document.getElementById("mapcontainer"),"left") ;
	if (objoffsetx == null) return;
	var mouseOffset = getMouseOffset(event);
	var mouseOffsetx = getMouseOffsetX(event);

	dragmap = true;
	startmapy = mouseOffset - objoffset;
	startmapx = mouseOffsetx - objoffsetx;
	
	doRecenter(startmapx,startmapy);

}

function clickmap(obj,event)
{
 if(event.preventDefault)
 {
  event.preventDefault();
 }
 	var objoffset = getposOffset(document.getElementById("mapcontainer"),"top") ;
	if (objoffset == null) return;
	var objoffsetx = getposOffset(document.getElementById("mapcontainer"),"left") ;
	if (objoffsetx == null) return;
	var mouseOffset = getMouseOffset(event);
	var mouseOffsetx = getMouseOffsetX(event);

	dragmap = true;
	startmapy = mouseOffset - objoffset;
	startmapx = mouseOffsetx - objoffsetx;
	newmapx = 0; //Set initial value
	newmapy = 0; //Set initial value
   if (dodebug)
   {
	  document.getElementById("frmImpact2").txtStatus.value="Clickstart:" + (mouseOffset - objoffset) + "," + (mouseOffsetx - objoffsetx);
	  log("Clickstart: startmapx: " + startmapx + ", startmapy: " + startmapy + ", old values of newmapx:" + newmapx + ", newmapy:" + newmapy);
   }
}


function setZoomSlider()
{
	 log("setZoomSlider: zoomSliderPos=" + zoomSliderPos);
    if (zoomclick)
    	return;
    var base=4;
    var incr=24; //26; //292 / 11;
    var zoomstr = "zoom positions: ";
    for (var i=0; i<12; i++)
    	zoomstr += (base + incr * i) + " ";
	//alert(zoomstr);
	if (zoomSliderPos < base + incr * 0)
		setZoom(0);
	else if (zoomSliderPos < base + incr * 1)
		setZoom(1);
	else if (zoomSliderPos < base + incr * 2)
		setZoom(2);
	else if (zoomSliderPos < base + incr * 3)
		setZoom(3);
	else if (zoomSliderPos < base + incr * 4)
		setZoom(4);
	else if (zoomSliderPos < base + incr * 5)
		setZoom(5);
	else if (zoomSliderPos < base + incr * 6)
		setZoom(6);
	else if (zoomSliderPos < base + incr * 7)
		setZoom(7);
	else if (zoomSliderPos < base + incr * 8)
		setZoom(8);
	else if (zoomSliderPos < base + incr * 9)
		setZoom(9);
	else if (zoomSliderPos < base + incr * 10)
		setZoom(10);
	else if (zoomSliderPos >= base + incr * 10)
		setZoom(11);
	document.getElementById("slicer_slider").focus();
}

function syncZoomSlider(zoomlevel)
{
    var base=-12; //offset up by half of slider height
    var incr= 24; //26; //294 / 11;
	zoomSliderPos = base + (incr * zoomlevel);
	document.getElementById("slicer_slider").style.top = zoomSliderPos + "px";
}

function doMapIt(form)
{
	//checkFields();
	//if (document.getElementById("mapit").enabled == true)
	{
		zooming=false;changinglayers=false;geocodeAddress(form);
	}
}

function checkFields()
{
		var formOK = false;

		if (document.getElementById("frmImpact2").fulladdress1.value != "")
		{
			s_prop32 = "TODO:Get this after response comes back";
			formOK = true;
		}

		log("checkFields returning " + formOK);
		return formOK;
}

//For AJAX stuff
function geocodeAddress(oldform)
{
	clearLocationData();
	clearError();

  // Obtain an XMLHttpRequest instance
  var req = newXMLHttpRequest();

  // Set the handler function to receive callback notifications
  // from the request object
  var handlerFunction = getReadyStateHandler(req, readGeocodeResponse);
  req.onreadystatechange = handlerFunction;

  // Open an HTTP POST connection to the data servlet.
  // Third parameter specifies request is asynchronous.
  req.open("POST", dataservlet, true);

  // Specify that the body of the request contains form data
  req.setRequestHeader("Content-Type",
                       "application/x-www-form-urlencoded");

  var form = document.getElementById('frmImpact2');

  var urlString = "covType=" + activeTab
  		+ "&width=" + imgWidth
  		+ "&height=" + imgHeight;
  if (form.fulladdress1.value != "")
  {
  	urlString += "&fulladdress1=" + escape(form.fulladdress1.value);
  }
  /*
  if (form.fulladdress2.value != "")
  {
  	urlString += "&fulladdress2=" + escape(form.fulladdress2.value);
  }
  if (form.fulladdress3.value != "")
  {
  	urlString += "&fulladdress3=" + escape(form.fulladdress3.value);
  }
  */

  req.send(urlString);
  if (dodebug)
  {
    document.getElementById("mapsearchresults").value=urlString;
    log("geocodeAddress:" + dataservlet + "?" + urlString);
  }

  //MCW commented so busy div doesn't show until we are reading the image... may just have to live with it.
  toggleBusy(true);
  reStoreAddrForm();
  geocodedAddr=false; //Initialize to false in case an error occurs.
  //document.getElementById("comparepinpoint").style.display='none';
  hideLayer("comparepinpoint");
  hidePinpoint();
  hideMapOptions();
  pinpointState = "min";

  showScale();

}


function showInsetMap(insetLoc)
{
	if (insetLoc == "AK")
	{
		centerX = -149.89260864257812;
		centerY = 61.2948112487793;
		document.getElementById("frmImpact2").fulladdress1.value="AK";
		s_prop32 = "AK";
		currentLevel=1;
		scale = 1000;
		recenterMap(centerX, centerY);
	}
	else if (insetLoc == "HI")
	{
		centerX = -156.6522674560547;
		centerY = 20.835241317749023;
		document.getElementById("frmImpact2").fulladdress1.value="HI";
		s_prop32 = "HI";
		currentLevel=2;
		scale = 500;
		recenterMap(centerX, centerY);
	}
	else if (insetLoc == "PR")
	{
		centerX = -66.08016967773438;
		centerY = 18.420085906982422;
		document.getElementById("frmImpact2").fulladdress1.value="PR";
		s_prop32 = "PR";
		currentLevel=3;
		scale = 250;
		recenterMap(centerX, centerY);
	}
	
	hideSearchResults();
}

function showScale()
{
	var currentZoom = -1;
	var strmapScale = "";

	if (document.getElementById("compareScale1") == null)
	{
		log('compareScale1 not loaded yet, is null');
	}

	for (i=0;i<12;i++)
	{
		strmapScale = "mapScale" + i;
		document.getElementById(strmapScale).style.display='none';
		if (zoomLevels[i] == scale)
		{
			document.getElementById(strmapScale).style.display='';
		   var scaleimg = document.getElementById("scaleImg"+i).src;
		   if (i<9)
		   {
			  if (document.getElementById("compareScale1"))
			  {
				  document.getElementById("compareScale1").src = scaleimg;
				  document.getElementById("compareScale2").src = scaleimg;
				  if (showPowersourceInCompare)
				     document.getElementById("compareScale3").src = scaleimg;
			  }
			  else
			  	  log("Unable to locate compareScaleX");
		    }
		    else
		    {
			  if (document.getElementById("compareScale1"))
			  {
				  document.getElementById("compareScale1").src = scaleimg;
				  document.getElementById("compareScale2").src = scaleimg;
				  if (showPowersourceInCompare)
				     document.getElementById("compareScale3").src = scaleimg;
			  }
			  else
			  	  log("Unable to locate compareScaleX");
		    }
		}
	}
}

/*
 * Returns a new XMLHttpRequest object, or false if this browser
 * doesn't support it
 */
function newXMLHttpRequest() {

  var xmlreq = false;

  if (window.XMLHttpRequest) {

    // Create XMLHttpRequest object in non-Microsoft browsers
    xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {

    // Create XMLHttpRequest via MS ActiveX
    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e1) {

      // Failed to create required ActiveXObject

      try {
        // Try version supported by older versions
        // of Internet Explorer

        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

        // Unable to create an XMLHttpRequest with ActiveX
      }
    }
  }

  return xmlreq;
}

/*
 * Returns a function that waits for the specified XMLHttpRequest
 * to complete, then passes its XML response
 * to the given handler function.
 * req - The XMLHttpRequest whose state is changing
 * responseXmlHandler - Function to pass the XML response to
 */
function getReadyStateHandler(req, responseXmlHandler) {

  // Return an anonymous function that listens to the
  // XMLHttpRequest instance
  return function () {

    // If the request's status is "complete"
    if (req.readyState == 4) {

      // Check that a successful server response was received
      if (req.status == 200) {

        // Pass the XML payload of the response to the
        // handler function
		  if (dodebug)
		  {
           document.getElementById("frmImpact2").txtXml.value=req.responseText;
           if (printxml)
           {
           	  log(req.responseText);
           }
        }
        //document.getElementById("printform").xmlstring.value=req.responseText;
        responseXmlHandler(req.responseXML);

      } else {

        // An HTTP problem has occurred
        //alert("HTTP error: " + req.status);
        //TODO: translate
        showError(errorOccurred);
        toggleBusy(false);
		  if (dodebug)
		  {
           document.getElementById("frmImpact2").txtXml.value=req.responseText;
           log(req.responseText);
        }
      }
    }
  }
}


function getTagValue(node)
{
   var res = "";
	if (node != null)
	{
		res = node.nodeValue;
	}
	if (res == null)
		res = "";
	return res;
}

function readGeocodeResponse(responseDoc)
{

	if (dodebug)
	{
	 log("Processing geocode response....");
	}

	document.getElementById("mapanaddress").scrollTop=getposOffset(document.getElementById("mapanaddress"),"top");
	lastResponse = responseDoc;

	// Get the root element from the document

	var respBody = responseDoc.getElementsByTagName("impactwebds")[0];

	//---------
	// Logic:
	//  Check for overal error message
	//  Loop through all locations in the response.  If any are in error or have multiple candidates, ignore coverage and coordinates
	//  First priority is errors: if there are any errors, highlight input fields that are in error and display error message
	//  Second priority is close matches: if there are any close matches, pass the xml to a separate function to populate the
	//     close match popup and present it.  (or if it's not too ugly just do it here)
	//  If no errors are found, collect all values and populate the searchResults div and display it.
	//---------

	var hasError = false;
	var multipleCandidates = false;
	var geocodeError = false;

	if (respBody != null)
	{
		var locsNode = respBody.getElementsByTagName("Locations")[0];
		var locationNode = locsNode.getElementsByTagName("location");
		var locNum = 0;
		while (locationNode != null && locNum < locationNode.length) //locNum is just to prevent an infinite loop if something goes wrong
		{
			var geocoderesult = locationNode[locNum].getElementsByTagName("geocodeResult")[0].firstChild.nodeValue;
			if (geocoderesult == 'match not found')
			{
				if (geocodeError == false)
				{
					//Set focus to first address in error
					//This causes a javascript error when showCompare is true because the field is still hidden at this point.
					try
					{
						document.getElementById("fulladdress"+(locNum+1)).focus();
					}
					catch (err)
					{
					  //alert("exception setting focus to address field!: " + err.description);
					}
				}
				geocodeError = true;
				document.getElementById("fulladdress"+(locNum+1)).style.backgroundColor="pink";

			}
			if (locationNode[locNum].getElementsByTagName("candidateAddress").length > 1)
			{
				multipleCandidates = true;
			}

			//locNum = parseInt(locNum) + 1;
			locNum += 1;
			//locationNode = locsNode.getElementsByTagName("location")[locNum];
		}
	}

	if (hasError == false && multipleCandidates == false && geocodeError == false)
	{
		setupSearchResults(respBody);
	}

	if (geocodeError)
	{
		//force coverage view project.  display error message.
		if (invokeCompare)
		{
			invokeCompare = false;
			document.getElementById("checking").style.display='none';
			document.getElementById("compareGeocodeError").style.display='';
		}
		toggleBusy(false);
		showError(errUnableToFind);
	}
	else if (multipleCandidates)
	{
		setupCandidatePopup(respBody);
	}
	respBody=null;
	
	return;
 
}

function setupSearchResults(respBody, isRecenter)
{
	var locationNode;
 	var locsNode = respBody.getElementsByTagName("Locations")[0];
 	var locationNodes = locsNode.getElementsByTagName("location");
 	var locNum = 0;
 	addressCount = locationNodes.length;
 	currentLocation=0;
 	
 	imgPath = respBody.getElementsByTagName("map_imagefilepath")[0].firstChild.nodeValue;

	/*
	if (addressCount == 1)
	{
		hideLayer("optionalLocs");
		hideLayer("optionalLoc1");
		hideLayer("optionalLoc1cov");
		hideLayer("optionalLoc2");
		hideLayer("optionalLoc2cov");
	}
	else if (addressCount == 2)
	{
		showLayer("optionalLocs");
		showLayer("optionalLoc1");
		showLayer("optionalLoc1cov");
		hideLayer("optionalLoc2");
		hideLayer("optionalLoc2cov");
	}
	else if (addressCount == 3)
	{
		showLayer("optionalLocs");
		showLayer("optionalLoc1");
		showLayer("optionalLoc1cov");
		showLayer("optionalLoc2");
		showLayer("optionalLoc2cov");
	}
	*/
	
	while (locationNodes != null && locNum < locationNodes.length) //locNum is just to prevent an infinite loop if something goes wrong
	{
		locationNode = locationNodes[locNum];
		var candidateAddr = locationNode.getElementsByTagName("candidateAddress")[0];
		if (isRecenter)
		{
			candidateAddr = locationNode;
		}
		else
		{
			geocodedAddr=true; //added here instead of below, because showSearchResults needs to know before logic below.
			dismissed3GPopup = false;
			dismissed4GPopup = false;
		}
		var dispAddr = getCandidateDisplayAddr(candidateAddr, true);
		//document.getElementById("location"+locNum).innerHTML = dispAddr;

		mapCenterX[locNum] = locationNode.getElementsByTagName("geocodeCenterX")[0].firstChild.nodeValue;
		mapCenterY[locNum] = locationNode.getElementsByTagName("geocodeCenterY")[0].firstChild.nodeValue;
		mapScale[locNum] = locationNode.getElementsByTagName("scale")[0].firstChild.nodeValue;
		var dataEl = locationNode.getElementsByTagName("data")[0];
		if (dataEl != null)
		{
			var bestCoverage = dataEl.getElementsByTagName("bestCoverage")[0];
			if (bestCoverage != null)
			{
				if (bestCoverage.getElementsByTagName("voicesprint")[0].firstChild != null)
				{
					haveCovData = true;
				}
				covvoicesprint[locNum] = getTagValue(bestCoverage.getElementsByTagName("voicesprint")[0].firstChild);
				covvoicenextel[locNum] = getTagValue(bestCoverage.getElementsByTagName("voicenextel")[0].firstChild);
				covdatasprint[locNum] = getTagValue(bestCoverage.getElementsByTagName("datasprint")[0].firstChild);
				covdatanextel[locNum] = getTagValue(bestCoverage.getElementsByTagName("datanextel")[0].firstChild);
				covdatawimax[locNum] = getTagValue(bestCoverage.getElementsByTagName("datawimax")[0].firstChild);
				covwalkietalkiesprint[locNum] = getTagValue(bestCoverage.getElementsByTagName("walkietalkiesprint")[0].firstChild);
				covwalkietalkienextel[locNum] = getTagValue(bestCoverage.getElementsByTagName("walkietalkienextel")[0].firstChild);
			}
		}
		
		//begin copy
		if (locNum == 0)
		{
			geoCenterX = locationNode.getElementsByTagName("geocodeCenterX")[0].firstChild.nodeValue;
			geoCenterY = locationNode.getElementsByTagName("geocodeCenterY")[0].firstChild.nodeValue;
			centerX = locationNode.getElementsByTagName("centerX")[0].firstChild.nodeValue;
			centerY = locationNode.getElementsByTagName("centerY")[0].firstChild.nodeValue;
			maptop = locationNode.getElementsByTagName("top")[0].firstChild.nodeValue;
			mapleft = locationNode.getElementsByTagName("left")[0].firstChild.nodeValue;
			mapright = locationNode.getElementsByTagName("right")[0].firstChild.nodeValue;
			mapbottom = locationNode.getElementsByTagName("bottom")[0].firstChild.nodeValue;
			scale = locationNode.getElementsByTagName("scale")[0].firstChild.nodeValue;

			var dataEl = respBody.getElementsByTagName("data")[0];
			if (dataEl != null)
			{
				coverageLevelCDMA = getTagValue(dataEl.getElementsByTagName("coverageQualityCDMA")[0].firstChild);
				coverageLevelIDEN = getTagValue(dataEl.getElementsByTagName("coverageQualityIDEN")[0].firstChild);
				//showCovLevelDiscl = getTagValue(dataEl.getElementsByTagName("showSignalStrengthDisclaimer")[0].firstChild);
				covCDMA = getTagValue(dataEl.getElementsByTagName("CDMA")[0].firstChild);
				covIDEN = getTagValue(dataEl.getElementsByTagName("iDEN")[0].firstChild);
				covEVDO = getTagValue(dataEl.getElementsByTagName("EVDO")[0].firstChild);
				cov4G = getTagValue(dataEl.getElementsByTagName("Sprint4G")[0].firstChild);
			}

			document.getElementById("covaddr").innerHTML=dispAddr;
			document.getElementById("mapaddress").value=dispAddr;
			if (document.getElementById("covaddr1"))
				document.getElementById("covaddr1").innerHTML=dispAddr;
			currentCity=getTagValue(candidateAddr.getElementsByTagName("city")[0].firstChild)
			currentState=getTagValue(candidateAddr.getElementsByTagName("state")[0].firstChild);
			currentZip=getTagValue(candidateAddr.getElementsByTagName("zip")[0].firstChild);

		}
		//end copy

		locNum += 1;
	}

	/*
	for (locNum=0; locNum<addressCount; locNum++)
	{
		getCoverageLevelDiv(locNum);
	}
	*/

	showSearchResults();

	showLayer("comparepinpoint");
	setPageHeight();

	if (isRecenter)
	{
		//
		log("Nothing");
	}
	else
	{
		bShowPinpoint = true;
		addRecentSearch();
		resetResultLocations();
		if (invokeCompare)
		{
			log("calling doCompare in setupSearchResults");
			doCompare();
		}
		else
		{
			checkBubbleStatus();
		}
		
		getMapImage();
		//Temporarily commented out during development
		log("calling omniture in setupSearchResults.");
		makeOmnitureCall('mapit');
	}
}

/*
This function needs to be called after performing a search (address or lat/long), and when changing maps (tab/network toggle)
*/
function checkBubbleStatus()
{

	//TODO: Need to write function for this, only show when relevant (data tabs)
	if (selectedTab == 'wimax' || (selectedDrawer == 'data' && selectedTab == 'sprint'))
	{
		msg = "";
		pmode = "";
		if (scale == zoomLevels[0])
		{
			return;
		}
		else
		{
			if (bShowPinpoint == false || geocodedAddr == false)
				return;
				
			if ( (selectedTab == 'wimax' && dismissed4GPopup == true) || (selectedTab == 'sprint' && dismissed3GPopup == true) )
			{
				//User has dismissed the popup, do not display again.
				return;
			}
				
			if (selectedTab == 'wimax' && cov4G == 'Y')
			{
				msg = msg4gtab4gavail; //"4G is available at this location only on some devices! Check the 4G device list to make sure your device is 4G capable.";
				dismissed4GPopup = false;
			}
			/*
			else if (selectedTab == 'wimax' && cov4G == 'N' && covEVDO == 'Y')
			{
				msg = msg4gtab3gonly; //"Sorry, 4G is not available in that location. But 3G data coverage is available! Check out the 3G map for more info.";
				pmode = "large";
				dismissed4GPopup = false;
			}
			else if (selectedTab == 'wimax' && cov4G == 'N' && covEVDO == 'N')
			{
				msg = msg4gtabno3gor4g; //"Sorry, 4G is not available in that location.";
				dismissed4GPopup = false;
			}
			else if (selectedTab == 'sprint' && cov4G == 'Y' && covEVDO == 'Y')
			{
				msg = msg3gtab3gand4gavail; //"4G is also available at this location, but only on some devices! Check the 4G map for more info.";
				dismissed3GPopup = false;
			}
			else if (selectedTab == 'sprint' && cov4G == 'Y' && covEVDO == 'N')
			{
				msg = msg3gtab4gonly; //"Sorry, Sprint 3G data coverage is not available in that location.<br/><br/>But 4G data coverage is available! Check out the 4G map for more info.";
				pmode = "large";
				dismissed3GPopup = false;
			}
			else if (selectedTab == 'sprint' && cov4G == 'N' && covEVDO == 'N' && covdatasprint[currentLocation] == 'No Coverage')
			{
				msg = msg3gtabnocoverage; //"Sorry, Sprint 3G data coverage is not available in that location.";
				dismissed3GPopup = false;
			}
			*/
			
		}
		
		if (msg != "")
		{
			//bShowPinpoint = true;
			//dismissedPinpoint = false;
			showBubble(msg, pmode);
		}
	}
	else
	{
		//bShowPinpoint = false;
	}
}

function resetResultLocations()
{
	for (ii=0; ii<addressCount; ii++)
	{
		if (ii==currentLocation)
		{
			showLayer("shown"+ii);
			hideLayer("show"+ii);
		}
		else
		{
			showLayer("show"+ii);
			hideLayer("shown"+ii);
		}
	}
}

function showLocation(locNum)
{
	currentLocation = locNum;
	for (ii=0; ii<addressCount; ii++)
	{
		if (ii==locNum)
		{
			showLayer("shown"+ii);
			hideLayer("show"+ii);
			document.getElementById("mapaddress").value=document.getElementById("location"+locNum).innerHTML; //print form
			if (document.getElementById("covaddr1"))
				document.getElementById("covaddr1").innerHTML=document.getElementById("location"+locNum).innerHTML; //compare div
		}
		else
		{
			showLayer("show"+ii);
			hideLayer("shown"+ii);
		}
	}
	geoCenterX = mapCenterX[locNum];
	geoCenterY = mapCenterY[locNum];
	centerX = mapCenterX[locNum];
	centerY = mapCenterY[locNum];
	scale = mapScale[locNum];
	recenterMap(centerX,centerY);
}

function setupCandidatePopup(respBody)
{
	log("Called setupCandidatePopup()");

	toggleBusy(false);
	document.getElementById("candidateOverlayBack").style.left=0;
	document.getElementById("candidateOverlayBack").style.top=0;
	showLayer("candidateOverlayBack");
	showLayer("closeMatchPopup");
		
	candXML = respBody; //Storing dom for selecting candidate later?

	var locationNode;
 	var locsNode = respBody.getElementsByTagName("Locations")[0];
 	var locationNodes = locsNode.getElementsByTagName("location");
 	//var locNum = 0;
 	addressCount = locationNodes.length;

	for (locNum=0; locNum<3; locNum++)
	{
		//hide this row.
		hideLayer('loc'+locNum+'tr');
		hideLayer('loc'+locNum+'entered');
		for (candNum=0; candNum<3; candNum++)
		{
			document.getElementById('loc'+locNum+'cand'+candNum).checked = false;
		}
	}
	
	for (locNum=0; locNum < locationNodes.length; locNum++)
	{
		locationNode = locationNodes[locNum];
		if (locationNode.getElementsByTagName("candidateAddress").length > 1)
		{
			showLayer('loc'+locNum+'tr');
			showLayer('loc'+locNum+'entered');
			
			document.getElementById('loc'+locNum+'address').innerHTML=document.getElementById("fulladdress"+(locNum+1)).value;
			
			//Multiple candidates returned
			document.getElementById('loc'+locNum+'cand0td').style.display='none';
			document.getElementById('loc'+locNum+'cand1td').style.display='none';
			document.getElementById('loc'+locNum+'cand2td').style.display='none';

			//Check for candidate #2 (index 1) -- if so, present choices to user.
			var candidateAddr = locationNode.getElementsByTagName("candidateAddress")[0];

			var candNum=0;
			while (candidateAddr != null && candNum < 3)
			{
				var addrid = 'loc'+locNum+'cand'+candNum+'addr';
				var dispadr=getCandidateDisplayAddr(candidateAddr);
				document.getElementById(addrid).innerHTML=dispadr;
				document.getElementById('loc'+locNum+'cand'+candNum+'map').src=candidateAddr.getElementsByTagName("thumnailPath")[0].firstChild.nodeValue;
				document.getElementById('loc'+locNum+'cand'+candNum+'td').style.display="";
				//alert(candNum);

				candNum = parseInt(candNum) + 1;
				candidateAddr = locationNode.getElementsByTagName("candidateAddress")[candNum];
			}
		}
	}
}

function processSelectedCandidates()
{
	//Process the candidate selection modal form
	//If an optional address does not have a selected candidate, remove it and shift the next address up if present

	var respBody = candXML; //Storing dom for selecting candidate later?

	var locationNode;
 	var locsNode = respBody.getElementsByTagName("Locations")[0];
 	var locationNodes = locsNode.getElementsByTagName("location");
 	//var locNum = 0;
 	//addressCount = locationNodes.length;

	for (locNum=0; locNum < locationNodes.length; locNum++)
	{
		locationNode = locationNodes[locNum];
		if (locationNode.getElementsByTagName("candidateAddress").length > 1)
		{
			showLayer('loc'+locNum+'tr');
			showLayer('loc'+locNum+'entered');

			var candSelected = false;			
			var candidateAddr = locationNode.getElementsByTagName("candidateAddress")[0];
			var candNum=0;
			while (candidateAddr != null && candNum < 3)
			{
				var addrid = 'loc'+locNum+'cand'+candNum+'addr';
				var dispadr=getCandidateDisplayAddr(candidateAddr, true);
				
				//document.getElementById('loc'+locNum+'cand'+candNum+'map').src=candidateAddr.getElementsByTagName("thumnailPath")[0].firstChild.nodeValue;
				//document.getElementById('loc'+locNum+'cand'+candNum+'td').style.display="";
				//alert(candNum);
				if (document.getElementById('loc'+locNum+'cand'+candNum).checked)
				{
					candSelected=true;
					log('Selected candidate ' + candNum + ' for location ' + locNum + ':' + dispadr);
					document.getElementById('fulladdress'+(locNum+1)).value=dispadr;
				}
				//alert(document.getElementById('loc2cand0').checked)

				candNum = parseInt(candNum) + 1;
				candidateAddr = locationNode.getElementsByTagName("candidateAddress")[candNum];
			}
			
			if (candSelected == false)
			{
				document.getElementById('fulladdress'+(locNum+1)).value="";
				log("No candidate was selected for location " + locNum);
			}
		}
		else
		{
			log("No candidates for location " + locNum);
			var candidateAddr = locationNode.getElementsByTagName("candidateAddress")[0];
			var dispadr=getCandidateDisplayAddr(candidateAddr, true);
			document.getElementById('fulladdress'+(locNum+1)).value=dispadr;
		}
	}

	if (checkFields()) 
		geocodeAddress(this.form); 
}

function getCandidateDisplayAddr(candidateAddr, oneLine)
{
	if (!oneLine)
		oneLine = false;
		
	if (candidateAddr != null)
	{
		var street = getTagValue(candidateAddr.getElementsByTagName("street")[0].firstChild);
	 	var street2 = getTagValue(candidateAddr.getElementsByTagName("street2")[0].firstChild);
	 	if (street2 != null && street2 != "")
			street += " & " + street2;

		var addrStr = "";
		if (street != null && street != "")
		{
			addrStr += street;
			if (oneLine == false)
				addrStr += "<br/>";
			else
				addrStr += ", ";
		}

		if (getTagValue(candidateAddr.getElementsByTagName("city")[0].firstChild) != null)
		{
			addrStr += getTagValue(candidateAddr.getElementsByTagName("city")[0].firstChild);
		}

		if (getTagValue(candidateAddr.getElementsByTagName("state")[0].firstChild) != null)
		{
			if (addrStr != "")
				addrStr += ", ";
			addrStr += getTagValue(candidateAddr.getElementsByTagName("state")[0].firstChild);
		}

		if (getTagValue(candidateAddr.getElementsByTagName("zip")[0].firstChild) != null)
		{
			if (addrStr != "")
				addrStr += " ";
			addrStr += getTagValue(candidateAddr.getElementsByTagName("zip")[0].firstChild);
		}

		return addrStr;

	}
	else
		return "";
}

function readRecenterResponse(responseDoc)
{

  if (dodebug)
  {
	 log("Processing response....");
  }


 // Get the root element from the document

 var respBody = responseDoc.getElementsByTagName("impactwebds")[0];

 if (respBody != null)
 {

	if (respBody.getElementsByTagName("error")[0].firstChild != null)
	{
		var errormsg = respBody.getElementsByTagName("error")[0].firstChild.nodeValue;
	  if (dodebug)
	  {
		 log("Error message returned from servlet:" + errormsg);
	  }
		return;
	}

	var locationNode = respBody.getElementsByTagName("location")[0];
	if (selectCand == true)
	{
	   //Grab geocode center for selected candidate so pinpoint will show.
	   //alert("updating geocode center: " + geoCenterX + "," + geoCenterY );
		selectCand = false;
		geoCenterX = locationNode.getElementsByTagName("geocodeCenterX")[0].firstChild.nodeValue;
		geoCenterY = locationNode.getElementsByTagName("geocodeCenterY")[0].firstChild.nodeValue;
	}
	if (hasLatLong == true)
	{
		//Set geocodedAddr to true so pinpoint shows on the map.
		//Reset hasLatLong so we don't overwrite location every time we recenter the map.
		geocodedAddr=true;
		hasLatLong = false;
		//document.getElementById("location0").innerHTML = getCandidateDisplayAddr(locationNode);
		document.getElementById("covaddr").innerHTML = getCandidateDisplayAddr(locationNode);
		if (document.getElementById("covaddr1"))
			document.getElementById("covaddr1").innerHTML = getCandidateDisplayAddr(locationNode);
		addressCount=1;
		//test
		setupSearchResults(respBody, true);
		//end test
	}
	var mapaction = getTagValue(locationNode.getElementsByTagName("mapAction")[0].firstChild);
	centerX = locationNode.getElementsByTagName("centerX")[0].firstChild.nodeValue;
	centerY = locationNode.getElementsByTagName("centerY")[0].firstChild.nodeValue;
	maptop = locationNode.getElementsByTagName("top")[0].firstChild.nodeValue;
	mapleft = locationNode.getElementsByTagName("left")[0].firstChild.nodeValue;
	mapright = locationNode.getElementsByTagName("right")[0].firstChild.nodeValue;
	mapbottom = locationNode.getElementsByTagName("bottom")[0].firstChild.nodeValue;
	scale = locationNode.getElementsByTagName("scale")[0].firstChild.nodeValue;
	imgPath = respBody.getElementsByTagName("map_imagefilepath")[0].firstChild.nodeValue;

	//if we did a getbounds, none of the coverage tags will be populated.	
	if (mapaction != 'getbounds')
	{
		var dataEl = respBody.getElementsByTagName("data")[0];
		if (dataEl != null)
		{
			coverageLevelCDMA = getTagValue(dataEl.getElementsByTagName("coverageQualityCDMA")[0].firstChild);
			coverageLevelIDEN = getTagValue(dataEl.getElementsByTagName("coverageQualityIDEN")[0].firstChild);
			//showCovLevelDiscl = getTagValue(dataEl.getElementsByTagName("showSignalStrengthDisclaimer")[0].firstChild);
			covCDMA = getTagValue(dataEl.getElementsByTagName("CDMA")[0].firstChild);
			covIDEN = getTagValue(dataEl.getElementsByTagName("iDEN")[0].firstChild);
			covEVDO = getTagValue(dataEl.getElementsByTagName("EVDO")[0].firstChild);
			cov4G = getTagValue(dataEl.getElementsByTagName("Sprint4G")[0].firstChild);

			var bestCoverage = dataEl.getElementsByTagName("bestCoverage")[0];
			if (bestCoverage != null)
			{
				if (bestCoverage.getElementsByTagName("voicesprint")[0].firstChild != null)
				{
					haveCovData = true;
				}
				covvoicesprint[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("voicesprint")[0].firstChild);
				covvoicenextel[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("voicenextel")[0].firstChild);
				covdatasprint[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("datasprint")[0].firstChild);
				covdatanextel[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("datanextel")[0].firstChild);
				covdatawimax[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("datawimax")[0].firstChild);
				covwalkietalkiesprint[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("walkietalkiesprint")[0].firstChild);
				covwalkietalkienextel[currentLocation] = getTagValue(bestCoverage.getElementsByTagName("walkietalkienextel")[0].firstChild);
			}
		}
	}

	getMapImage();
  }
  else
  {
     if (dodebug)
     {
        log("root element is null -- " + responseDoc.doctype);
     }
  }

}

function getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight, mapslice)
{
	if (imgPath == "")
		return;

	var bTemp = false;
	var fSprint = 'F';
	var fiDEN = 'F';
	var fCombo = 'F';
	var fEVDO = 'F';
	var fCDMARoam = 'F';
	var fMCities = "F";
	var fMHighways = "F";
	var fDigitalVoiceRoam = "F";
	var fStreets = "F";
	var fRoads = "F";
	var fRoadNames = "F";
	var fIDENTower = "F";
	var fCDMATower = "F";
	var fFutIDENTower = "F";
	var fFutCDMATower = "F";
	//E3316 var fFutEVDOTower = "F";
	//E3316
	var fPowerSourceRoam = "F";
	var fEVDORoam = "F";
	var fSRAEVDO = "F";
	var fDataonlyRoam = "F";
	var f1XDataRoam = "F";
	var fEVDODataRoam = "F";
	var fSRA = "F";
	var fAffiliate = "F";
	var fAffiliateData = "F";
	var showSignalStrength = "T";
	var fSprintDirect = "F";
	var f4G = "F";
	var fAiraveConsumer = "F";

	//Omniture tracking vars
	s_prop33="";
	s_prop34="";
	//if (mapslice) {} else {mapslice=null;}

	if (selectedDrawer == "voice" && selectedTab == "sprint")
	{
		s_prop33="Sprint Voice Coverage";
		fSprint = 'T';
		fSRA = 'T';
		fAffiliate = 'T';
		fCDMARoam = 'T';
		fDigitalVoiceRoam = 'T';
		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
		 fCDMATower = 'T';
		 s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
		 fFutCDMATower = 'T';
		 s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "voice" && selectedTab == "nextel")
	{
		s_prop33="Nextel Coverage";
		fiDEN = 'T';
		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
		 fIDENTower = 'T';
		 s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutIDENTower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "data" && selectedTab == "sprint")
	{
		s_prop33="Sprint Data Coverage";
		fEVDO = 'T'; //EVDO
		fSprint = 'T'; //sprint 1x layer
		fAffiliateData = 'T';
		fSRAEVDO= 'T';  //Does not launch until 1Q08
		fEVDORoam = 'T';
		fDataonlyRoam = 'T';
		showSignalStrength = 'F';

		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
			fCDMATower = 'T';
			s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutCDMATower = 'T';
			//E3316 fFutEVDOTower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "data" && selectedTab == "nextel")
	{
		s_prop33="Nextel Data Coverage";
		fiDEN = 'T';
		showSignalStrength = 'F';
		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
			fIDENTower = 'T';
			s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutIDENTower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "data" && selectedTab == "wimax")
	{
		s_prop33="Sprint Data Coverage with 4G";
		f4G = 'T'; //4G/WiMAX
		fEVDO = 'T'; //EVDO
		fSprint = 'T'; //sprint 1x layer
		fAffiliateData = 'T';
		fSRAEVDO= 'T';  //Does not launch until 1Q08
		fEVDORoam = 'T';
		fDataonlyRoam = 'T';
		showSignalStrength = 'F';

		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
			fCDMATower = 'T';
			s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutCDMATower = 'T';
			//E3316 fFutEVDOTower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "walkietalkie" && selectedTab == "sprint")
	{
		s_prop33="Sprint Direct Connect Coverage";
		fSprintDirect = 'T';
		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
			fCDMATower = 'T';
			s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutCDMATower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}
	else if (selectedDrawer == "walkietalkie" && selectedTab == "nextel")
	{
		s_prop33="Nextel Direct Connect Coverage";
		fiDEN = 'T';
		bTemp = document.getElementById("chkRecentTower").checked;
		if (bTemp)
		{
			fIDENTower = 'T';
			s_prop34 = append(s_prop34,"Recent Coverage Additions");
		}
		bTemp = document.getElementById("chkFutureTower").checked;
		if (bTemp)
		{
			fFutIDENTower = 'T';
			s_prop34 = append(s_prop34,"Upcoming Coverage Improvements");
		}
	}

	try 
	{
		bTemp = document.getElementById("chkCities").checked;
		if (bTemp)
		{
			fMCities = 'T';
		}
	}
	catch (err)
	{
	  log("Error getting checkbox state.", err);
	}

	//Set appropriate default for secondary highways
	if (scale >=250)
	{
		fMHighways = 'F';
	}
	else
	{
		fMHighways = 'T';
	}
	//Should only look at the checkbox for 500 & 250 miles
	try 
	{
		bTemp = document.getElementById("chkHighways").checked;
		if (bTemp && (scale == 250 || scale == 500))
		{
			fMHighways = 'T';
		}
	}
	catch (err)
	{
	  log("Error getting checkbox state.", err);
	}

	//alert ("scale" + scale + ", highways:" + fMHighways);
	if (scale == 50)
	{
		try 
		{ 
			bTemp = document.getElementById("chkRoads").checked; 
			if (bTemp)
			{
				fRoads = 'T';
			}
		}
		catch (err)
		{
		  log("Error getting checkbox state.", err);
		}

	}
	if (scale < 50)
	{
		fRoads = 'T';
	}
	//if (scale <= 5)
	if ((scale == 5) || (scale == 3))
	{
		try 
		{ 
			bTemp = document.getElementById("chkRoadNames").checked;
			if (bTemp)
			{
				fRoadNames = 'T';
			}
		}
		catch (err)
		{
		  log("Error getting checkbox state.", err);
		}

	}
	if (scale < 2)
	{
		try
		{
			bTemp = document.getElementById("chkStreets").checked;
			if (bTemp)
			{
				fStreets = 'T';
				fRoadNames = 'T'; //Major roads are now a separate layer, so need to set both flags if checkbox is on.
			}
		}
		catch (err)
		{
		  log("Error getting checkbox state.", err);
		}
		
	}

	fShowPinpoint='F';
	if (geocodedAddr == true)
	{
		fShowPinpoint='T';
	}

	//TODO: mapslice is a split image test.  Remove.
	var urlString = imgPath 
		+ "covType=" + selectedTab
		+ "&serviceType=" + selectedDrawer
		//+ ( mapslice == null ? "" : ("&mapslice=" + mapslice) )
		+ "&mapcenterx=" + centerX + "&mapcentery=" + centerY
		+ "&geocenterx=" + geoCenterX + "&geocentery=" + geoCenterY
		+ "&endlinex=&endliney=&scale=" + scale
		+ "&width=" + imgWidth + "&height=" + imgHeight
		+ "&showPinpoint=" + fShowPinpoint
		+ "&signalStrength=" + showSignalStrength
		+ "&antiAlias=" + doAntiAlias
		+ "&layers=" + fSprint
						+ fiDEN
						+ fCombo
						+ fDigitalVoiceRoam
						+ fEVDO
						+ fCDMARoam
						+ fMCities
						+ fMHighways
						+ fRoads
						+ fRoadNames
						+ fCDMATower
						+ fIDENTower
						+ fStreets
						+ fFutCDMATower
						+ fFutIDENTower
						//E3316 + fFutEVDOTower
						+ fPowerSourceRoam
						+ fEVDORoam
						+ fSRAEVDO
						+ fDataonlyRoam
						+ f1XDataRoam
						+ fEVDODataRoam
						+ fSRA
						+ fAffiliate
						+ fAffiliateData
						+ fSprintDirect
						+ f4G
						+ fAiraveConsumer
						;
						//+ fEVDO //E3315 project Rev 0 -- descoped

/*
		boolean showCurrentCoverage  = false; //1
		boolean showIDENCoverage     = false; //2
		boolean showHybridCoverage   = false; //3
		boolean showDigitalVoiceRoam = false; //4 //was formerly call hybrid_roaming
		boolean showEVDO             = false; //5
		boolean showDigitalRoaming   = false; //6
		boolean showMajorCities      = false; //7
		boolean showSecondaryHighways = false; //8
		boolean showRoads            = false; //9
		boolean showRoadNames        = false; //10
		boolean showCDMATower        = false; //11
		boolean showIDENTower        = false; //12
		boolean showStreets          = false; //13
		boolean showCDMAFutTower     = false; //14
		boolean showIDENFutTower     = false; //15
		boolean showREVAFutTower     = false; //16
		boolean showEVDORoam         = false; //17
		boolean showSRAEVDO          = false; //18
		boolean showDataRoaming      = false; //19
		boolean show19001XDataRoam   = false; //20
		boolean show1900EVDODataRoam = false; //21
*/

	return urlString;
}


// The getMapImage function should only be called after making the xml call to update the field variables.
// If this is not done, the variables will get out of sync with the map and subsequent actions will have
// unpredictable results.
// Version for PNCT2.0 - E2630
function getMapImage()
{
    if (imgPath == "")
    	return;

    toggleBusy(true);
	 updatePageforZoom();

	//TODO: sliced image test
	urlString = getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight,"coverage");

  if (dodebug)
  {
   	document.getElementById("frmImpact2").txtStatus.value = "Loading image: " + urlString;
   	log("Loading image: " + urlString);
  }

  //Reset map image to static map when zooming all the way out.
  if (scale == zoomLevels[0])
  {
  		//Temporarily commented out to generate static map
		urlString = staticMapFile + "US.gif";
  		log("scale:" + scale + ", zoomlevels[0]:" + zoomLevels[0] + ", switching to static map:" + urlString);
  }
  //log("mapimg src before:" + document.getElementById("mapimg").src);
  //if (document.getElementById("mapimg").src==urlString)
  //{
  //		log("mapimg src = urlString, setting busy to false");
  //		toggleBusy(false);
  //}
  document.getElementById("mapimg").src=urlString;
  document.getElementById("mapimgurl").value=urlString;
  document.getElementById("imgpath").value=imgPath;
  
  //log("Loading image: " + getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight,"top"));
  //document.getElementById("mapimgtop").src=getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight,"top");
  //log("Loading image: " + getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight,"base"));
  //document.getElementById("mapimgbase").src=getMapImageURL(selectedDrawer, selectedTab, imgWidth, imgHeight,"base");
  
  //updatePinpoint();
  showScale();

  //make omniture call
  //With new omniture code, they want us to call omniture when changing tabs
  // instead of every time map image is requested.
  //log("calling omniture in getMapImage:" + selectedDrawer + "," + selectedTab);
  //makeOmnitureCall('coverage');
  //Analytics.CovTool.coverageDevice(selectedDrawer, selectedTab);
}


//Recenters map when clicking on it.
function doRecenterClick(obj,evt)
{

  var offsetX = 0;
  var offsetY = 0;

  //mcw 2011-06-17 commented out so dblclick from us view works on first map load
  //if (imgPath == "")
  //	return;

	var objoffset = getposOffset(document.getElementById("mapimg"),"top") ;
	if (objoffset == null) return;
	var objoffsetx = getposOffset(document.getElementById("mapimg"),"left") ;
	if (objoffsetx == null) return;
	var mouseOffset = getMouseOffset(evt);
	var mouseOffsetx = getMouseOffsetX(evt);
	offsetX = mouseOffsetx - objoffsetx;
	offsetY = mouseOffset - objoffset;

/*
//Code copied from servlet
// min y is located in the extreme south
double yDeg_per_pixel = (drMapBounds.ymax - drMapBounds.ymin) / imgHeight;
double yDelta = yDeg_per_pixel * (imgHeight - convertStringToDouble(loc.sImgY, cp.sLog));
float fNewCenterY = (float) (drMapBounds.ymin + yDelta);

// min x is located in the extreme west
double xDeg_per_pixel = (drMapBounds.xmax - drMapBounds.xmin) / imgWidth;
double xDelta = xDeg_per_pixel * convertStringToDouble(loc.sImgX, cp.sLog);
float fNewCenterX = (float) (drMapBounds.xmin + xDelta);
*/

  //alert(offsetX + "," + offsetY);
  oldCenterX = centerX;
  oldCenterY = centerY;
  //imgWidth = document.getElementById("mapimg").width;
  //imgHeight = document.getElementById("mapimg").height;
  scaleWidth = Math.abs(Math.abs(mapright) - Math.abs(mapleft));
  scaleHeight = Math.abs(Math.abs(maptop) - Math.abs(mapbottom));
  degPerPixX = scaleWidth / (imgWidth);
  degPerPixY = scaleHeight / (imgHeight);
  xDelta = degPerPixX * parseFloat(offsetX);
  yDelta = degPerPixY * (parseFloat(imgHeight) - parseFloat(offsetY));
  centerX = parseFloat(mapleft) + xDelta;
  centerY = parseFloat(mapbottom) + yDelta;
  /*
  alert("oldCenterX:" + oldCenterX
  	+ "\noldCenterY:" + oldCenterY
  	+ "\nimgWidth:  " + imgWidth
  	+ "\nimgHeight: " + imgHeight
  	+ "\ndegPerPixX:" + degPerPixX
  	+ "\ndegPerPixY:" + degPerPixY
  	+ "\nxDelta:    " + xDelta
  	+ "\nyDelta:    " + yDelta
  	+ "\nnewCenterX:" + centerX
  	+ "\nnewCenterY:" + centerY
  	+ "\nscale:    :" + scale);
  */
  //DO either recenterMap or zoomIn - not both.
  if (scale == zoomLevels[11])
  {
  	 recenterMap(centerX, centerY);
  }
  else
  {
    //If we are at national level, skip a level or two to prevent over-use of 1500 mile zoom
    if (scale == zoomLevels[0])
    {
      scale = zoomLevels[2];
    }
  	 //zoomIn(); //can't use zoomIn(), or it will just do a getbounds and not get new coverage data
	var currentZoom = -1;
	for (i=0;i<12;i++)
	{
		if (zoomLevels[i] == scale)
		{
			currentZoom = i;
			break;
		}
	}
	//alert("Current zoom,scale:" + currentZoom + "," + scale);
	if (currentZoom < 11)
	{
		scale = zoomLevels[parseInt(currentZoom)+1];
	}
	else
	{
		return;
	}

   zooming = true;
   //setZoom(parseInt(currentZoom)+1);
	recenterMap(centerX, centerY);//, false);  	 
  }
  bShowPinpoint=false;
  showScale();
}

//New function to recenter map after dragging.
function doRecenter(offsetX,offsetY)
{
  if (imgPath == "")
  	return;

  //alert(offsetX + "," + offsetY);
  oldCenterX = centerX;
  oldCenterY = centerY;
  scaleWidth = Math.abs(Math.abs(mapright) - Math.abs(mapleft));
  scaleHeight = Math.abs(Math.abs(maptop) - Math.abs(mapbottom));
  degPerPixX = scaleWidth / (imgWidth);
  degPerPixY = scaleHeight / (imgHeight);
  xDelta = degPerPixX * parseFloat(offsetX);
  yDelta = degPerPixY * parseFloat(offsetY);
  centerX = parseFloat(oldCenterX) - xDelta;
  centerY = parseFloat(oldCenterY) + yDelta;
  log("imgWidth:" + imgWidth + ",imgHeight:" + imgHeight + ",degPerPixX:" + degPerPixX + ",degPerPixY:" + degPerPixY);
  log("x delta:" + xDelta + ", y delta:" + yDelta);
  //alert("old:" + oldCenterX + "," + oldCenterY + " - new: " + centerX + "," + centerY);
  recenterMap(centerX, centerY);
  //zoomIn();
  bShowPinpoint=false;
  showScale();
}

function recenterMap(centerX, centerY, isZoom)
{
	if (!isZoom)
	{
		clearLocationData(); // mcw test PJ4443
	}		
	clearError();
	
  // Obtain an XMLHttpRequest instance
  var req = newXMLHttpRequest();

  // Set the handler function to receive callback notifications
  // from the request object
  var handlerFunction = getReadyStateHandler(req, readRecenterResponse);
  req.onreadystatechange = handlerFunction;

  // Open an HTTP POST connection to the shopping cart servlet.
  // Third parameter specifies request is asynchronous.
  req.open("POST", dataservlet, true);

  if (isZoom && haveCovData)
  {
     mapaction = "getbounds";
  }
  else
  {
  	  mapaction = "recenter";
  }
  
  // Specify that the body of the request contains form data
  req.setRequestHeader("Content-Type",
                       "application/x-www-form-urlencoded");

  var urlString = "mapAction=" + mapaction
  		+ "&covType=" + activeTab
		+ "&scale=" + scale
  		+ "&width=" + imgWidth
  		+ "&height=" + imgHeight
  		+ "&geocodeCenterX=" + geoCenterX
  		+ "&geocodeCenterY=" + geoCenterY
  		+ "&centerX=" + centerX
  		+ "&centerY=" + centerY;

  if (dodebug)
  {
  	 log("Calling " + dataservlet + "?" + urlString);
  }

  req.send(urlString);

  //MCW commented out so busy div does not show until we load an image
  toggleBusy(true);
  //MCW - for now leave on so we can test pinpoint updates
  if (!isZoom)
  {
  	bShowPinpoint=false;
  }
  hidePinpoint();
  hideMapOptions();
  if (dodebug)
  {
    log("Sending request....");
  }
  return;
}

function centerOnLocation(centerX, centerY)
{

	//Set geoCenter X and Y or the pinpoint will be in the default X,Y
	geoCenterX = centerX;
	geoCenterY = centerY;

  // Obtain an XMLHttpRequest instance
  var req = newXMLHttpRequest();

  // Set the handler function to receive callback notifications
  // from the request object
  var handlerFunction = getReadyStateHandler(req, readRecenterResponse);
  req.onreadystatechange = handlerFunction;

  // Open an HTTP POST connection to the shopping cart servlet.
  // Third parameter specifies request is asynchronous.
  req.open("POST", dataservlet, true);

  // Specify that the body of the request contains form data
  req.setRequestHeader("Content-Type",
                       "application/x-www-form-urlencoded");

  var urlString = "mapAction=center"
  		+ "&covType=" + activeTab
		+ "&scale=" + scale
  		+ "&width=" + imgWidth
  		+ "&height=" + imgHeight
  		+ "&geocodeCenterX=" + geoCenterX
  		+ "&geocodeCenterY=" + geoCenterY
  		+ "&centerX=" + centerX
  		+ "&centerY=" + centerY;

  if (dodebug)
  {
  	 log("Calling " + dataservlet + "?" + urlString);
  }

  req.send(urlString);

  //MCW commented out so busy div does not show until we load an image
  toggleBusy(true);
  //MCW - for now leave on so we can test pinpoint updates
  //bShowPinpoint=false;
  hidePinpoint();
  hideMapOptions();
  if (dodebug)
  {
    log("Sending request....");
  }
  return;
}


function doPan(direction)
{
	clearError();
	if (scale == zoomLevels[0]) return;

  // Obtain an XMLHttpRequest instance
  var req = newXMLHttpRequest();

  // Set the handler function to receive callback notifications
  // from the request object
  var handlerFunction = getReadyStateHandler(req, readRecenterResponse);
  req.onreadystatechange = handlerFunction;

  // Open an HTTP POST connection to the data servlet.
  // Third parameter specifies request is asynchronous.
  req.open("POST", dataservlet, true);

  // Specify that the body of the request contains form data
  req.setRequestHeader("Content-Type",
                       "application/x-www-form-urlencoded");

  paramData = "mapAction=pan"
  		+ "&covType=" + activeTab
  		+ "&pan_dir=" + direction
  		+ "&scale=" + scale
  		+ "&width=" + imgWidth
  		+ "&height=" + imgHeight
  		+ "&geocodeCenterX=" + geoCenterX
  		+ "&geocodeCenterY=" + geoCenterY
  		+ "&centerX=" + centerX
  		+ "&centerY=" + centerY;

  req.send(paramData);
  if (dodebug)
  {
	 log("Sending request:" + paramData);
  }

  toggleBusy(true);
  bShowPinpoint = false;
  hidePinpoint();
  hideMapOptions();
}


function zoomIn()
{
	var currentZoom = -1;
	for (i=0;i<12;i++)
	{
		if (zoomLevels[i] == scale)
			currentZoom = i;
	}
	//alert("Current zoom,scale:" + currentZoom + "," + scale);
	if (currentZoom < 11)
	{
		//scale = zoomLevels[parseInt(currentZoom)+1];
	}
	else
	{
		return;
	}

   zooming = true;
   setZoom(parseInt(currentZoom)+1);
}

function zoomOut()
{
    //alert("zoomout");
	var currentZoom = -1;
	for (i=0;i<12;i++)
	{
		if (zoomLevels[i] == scale)
			currentZoom = i;
	}
	//alert("Current zoom,scale:" + currentZoom + "," + scale);
	if (currentZoom > 0)
	{
		//scale = zoomLevels[parseInt(currentZoom)-1];
	}
	else
	{
		return;
	}

   zooming = true;
   //document.getElementById("txtZoomLevel").value = Math.round(scale);
   setZoom(parseInt(currentZoom)-1);
}

function setZoom(level)
{
	//TODO: because of click and zoom, this is breaking the recenter.. need to also
	//check to see if centerx,centery have changed.
   //make sure zoom level is changing
   if (scale == zoomLevels[level])
   {
   	  //alert( "Requested zoom level:" + zoomLevels[level] );
      //alert("zoom unchanged, returning.");
   	  return;
   }

	currentLevel = level;
   zooming = true;
   //alert( "Requested zoom level:" + zoomLevels[level] );

   scale = zoomLevels[level];//level;
   //document.getElementById("txtZoomLevel").value = Math.round(zoomLevels[level]);
   syncZoomSlider(level);

	if (level == 0)
	{
		//Reset x,y, change to static map, clear mapped address
		centerX = defaultX;
		centerY = defaultY;
		document.getElementById("covaddr").innerHTML="";
		if (document.getElementById("covaddr1"))
			document.getElementById("covaddr1").innerHTML="";
		clearLocationData();
		hideSearchResults();
	}
   zoomMap();
}

function zoomMap()
{

	//Call recenterMap, which will use the new scale to get a new image at the same centerX, centerY
	recenterMap(centerX, centerY, true);


	//was calling this, but it did not update the field variables, so subsequent pans used old map bounds!
	//getMapImage();
}

function updatePageforZoom()
{
	var level;
	for (i=0;i<12;i++)
	{
		if (zoomLevels[i] == scale)
		{
			level = i;
		}
	}

	syncZoomSlider(level);

  if (scale == zoomLevels[0])
  {
  		hideLayer('comparecoverage');
  		//document.getElementById('comparevoice').style.display='none';
 		//document.getElementById('comparedata').style.display='none';
  		//document.getElementById('comparewalkietalkie').style.display='none';
  		clear_form();
		showLayer("mapAK");
		showLayer("mapHI");
		showLayer("mapPR");
		hideLayer("printcontrol");
		showLayer("datawimaxnationalview");

		//log("Setting cursor to arrow");
		//document.getElementById('mapimg').style.cursor='arrow';
  }
  else
  {
  		//document.getElementById('comparevoice').style.display='';
  		//Compare link is suppressed when showing wimax tab (Sprint devices with 4G)
  		if (selectedTab == "wimax")
  		{
  			hideLayer('comparecoverage');
  			document.getElementById('comparedata').style.display='none';
  		}
  		else
  		{
  			showLayer('comparecoverage');
  			//document.getElementById('comparedata').style.display='';
  		}

  		//document.getElementById('comparewalkietalkie').style.display='';
		hideLayer("mapAK");
		hideLayer("mapHI");
		hideLayer("mapPR");
		showLayer("printcontrol");

		//log("Setting cursor to pointer");
		//document.getElementById('mapimg').style.cursor='move';
  }

	//alert(activeTab + "," + scale);
	document.getElementById('MajorCities').style.display='';
	document.getElementById('SecondaryRoads').style.display='none';
	document.getElementById('MajorRoads').style.display='none';
	document.getElementById('MajorRoadNames').style.display='none';
	document.getElementById('Streets').style.display='none';

	if ((scale == 500) || (scale == 250))
	{
		document.getElementById('MajorCities').style.display='';
		document.getElementById('SecondaryRoads').style.display='';
		document.getElementById('MajorRoads').style.display='none';
		document.getElementById('MajorRoadNames').style.display='none';
		document.getElementById('Streets').style.display='none';
	}
	if (scale == 50)
	{
		document.getElementById('MajorCities').style.display='';
		document.getElementById('SecondaryRoads').style.display='none';
		document.getElementById('MajorRoads').style.display='';
		document.getElementById('MajorRoadNames').style.display='none';
		document.getElementById('Streets').style.display='none';
	}
	if ((scale == 5) || (scale == 3))
	{
		document.getElementById('MajorCities').style.display='none';
		document.getElementById('SecondaryRoads').style.display='none';
		document.getElementById('MajorRoads').style.display='none';
		document.getElementById('MajorRoadNames').style.display='';
		document.getElementById('Streets').style.display='none';
	}
	if (scale < 3)
	{
		document.getElementById('MajorCities').style.display='none';
		document.getElementById('SecondaryRoads').style.display='none';
		document.getElementById('MajorRoads').style.display='none';
		document.getElementById('MajorRoadNames').style.display='none';
		document.getElementById('Streets').style.display='';
	}

	if (scale < 51)
	{
		document.getElementById('toweropt').style.display='';
	}
	else
	{
		document.getElementById('toweropt').style.display='none';
	}
	
	updateLegendForZoom();
	highlightCoverageLevel();

	setPageHeight();
}

function updateLegendForZoom()
{
	if (scale < 51)
	{
		//showLayer('toweropt');

		showLegendDiv('sprintvoicequalitymeter');
		showLegendDiv('nextelvoicequalitymeter');
		showLegendDiv('datawimaxqualitymeter');
		//showLegendDiv('walkietalkiesprintqualitymeter');
		//showLegendDiv('walkietalkiesprintqualitymeter1');
		//showLegendDiv('walkietalkienextelqualitymeter');
		//showLegendDiv('walkietalkienextelqualitymeter1');

		hideLegendDiv('sprintvoiceprimary');
		hideLegendDiv('sprintvoiceprimaryc');
		hideLegendDiv('nextelvoiceprimary');
		hideLegendDiv('nextelvoiceprimary1');
		hideLayer("datawimaxnationalview"); //This does not go on the print or compare legends
		hideLegendDiv('datawimax4gmobiledevice');
		//hideLegendDiv('sprintwalkietalkieprimary');
		//hideLegendDiv('sprintwalkietalkieprimary1');
		//hideLegendDiv('nextelwalkietalkieprimary');
		//hideLegendDiv('nextelwalkietalkieprimary1');
	}
	else
	{
		//hideLayer('toweropt');

		showLegendDiv('sprintvoiceprimary');
		showLegendDiv('sprintvoiceprimaryc');
		showLegendDiv('nextelvoiceprimary');
		showLegendDiv('nextelvoiceprimaryc');
		showLegendDiv('datawimax4gmobiledevice');
		//showLegendDiv('sprintwalkietalkieprimary');
		//showLegendDiv('sprintwalkietalkieprimary1');
		//showLegendDiv('nextelwalkietalkieprimary');
		//showLegendDiv('nextelwalkietalkieprimary1');

		hideLegendDiv('sprintvoicequalitymeter');
		hideLegendDiv('sprintvoicequalitymeterc');
		hideLegendDiv('nextelvoicequalitymeter');
		hideLegendDiv('nextelvoicequalitymeterc');
		hideLayer("datawimaxnationalview"); //This does not go on the print or compare legends
		hideLegendDiv('datawimaxqualitymeter');
		//hideLegendDiv('walkietalkiesprintqualitymeter');
		//hideLegendDiv('walkietalkiesprintqualitymeter1');
		//hideLegendDiv('walkietalkienextelqualitymeter');
		//hideLegendDiv('walkietalkienextelqualitymeter1');

	}
	
	//Override for national level.
	if (scale == zoomLevels[0])
	{
	}
	//Override for national level.
	if (scale == zoomLevels[0])
	{
		showLegendDiv("sprintvoicenationalviewlegend");
		showLegendDiv("nextelvoicenationalviewlegend");
		showLegendDiv("datawimaxnationalviewlegend");
		showLegendDiv("datasprintnationalviewlegend");
		showLegendDiv("datanextelnationalviewlegend");
		showLegendDiv("datawimaxnationalview");
		showLegendDiv("walkietalkiesprintnationalviewlegend");
		showLegendDiv("walkietalkienextelnationalviewlegend");
		
		showLegendDiv("datasprint4gnationalview");
		hideLegendDiv("datasprint4gmobiledevice");
		hideLegendDiv("datawimax4gmobiledevice");
		
		hideLegendDiv("walkietalkiesprintdetaillegend");
		hideLegendDiv("walkietalkienexteldetaillegend");
		hideLegendDiv("datawimaxdetaillegend");
		hideLegendDiv("datasprintdetaillegend");
		hideLegendDiv("datanexteldetaillegend");
		hideLegendDiv("sprintvoicedetaillegend");
		hideLegendDiv("nextelvoicedetaillegend");
	}
	else
	{
		hideLegendDiv("sprintvoicenationalviewlegend");
		hideLegendDiv("nextelvoicenationalviewlegend");
		hideLegendDiv("datawimaxnationalviewlegend");
		hideLegendDiv("datasprintnationalviewlegend");
		hideLegendDiv("datanextelnationalviewlegend");
		hideLegendDiv("walkietalkiesprintnationalviewlegend");
		hideLegendDiv("walkietalkienextelnationalviewlegend");
		
		showLegendDiv("walkietalkiesprintdetaillegend");
		showLegendDiv("walkietalkienexteldetaillegend");
		showLegendDiv("datawimaxdetaillegend");
		showLegendDiv("datasprintdetaillegend");
		showLegendDiv("datanexteldetaillegend");
		showLegendDiv("sprintvoicedetaillegend");
		showLegendDiv("nextelvoicedetaillegend");
	}
	
	
}

function recenterLastAddress()
{
	if (geocodedAddr == false)
		return;

	if (centerX != geoCenterX || centerY != geoCenterY)
	{
		centerX=geoCenterX;
		centerY=geoCenterY;
		recenterMap(centerX, centerY);
	}

	bShowPinpoint=true;
	//updatePinpoint();
}

function toggleBusy(vis)
{
	var busy = document.getElementById("busy");
	if (busy == null)
		return;
	//alert(document.getElementById("busy").style.visibility);
	if (vis)
	{
		hidePinpoint();
		hideMapOptions();
		busy.style.visibility='visible';
		if (useBusyTimer)
		{
			if (checkBusyId!=null)
			{
				log("toggleBusy clearing checkBusy interval.");
				clearInterval(checkBusyId);
			}
			log("*** toggleBusy setting checkBusy interval.:" + checkDelayms[currentLevel] + ", currentLevel=" + currentLevel);
			checkBusyId = setInterval(checkBusy, checkDelayms[currentLevel]);
		}

	}
	else
	{
		//log("toggleBusy setting div to hidden.");
		busy.style.visibility='hidden';
		if (checkBusyId!=null)
		{
			//log("toggleBusy clearing checkBusy interval.");
			clearInterval(checkBusyId);
		}
	}
	//alert(document.getElementById("busy").style.visibility);
}

function checkBusy()
{
	//log("checkbusy starting..");
	var busy = document.getElementById("busy");
	if (busy == null)
	{
		log("body div not located.");
		//alert(document.getElementById("busy").style.visibility);
		return;
	}

	if (busy.style.visibility=='visible')
	{
		log("** checkBusy calling onMapLoad()");
		//toggleBusy(false);
		onMapLoad();
	}

}

	function showSearchResults()
	{
		hideLayer("error_msg");//document.getElementById("error_msg").style.display='none';
		document.getElementById('complete_info').style.display='none';
		//document.getElementById('map_opt').style.display='none';
		//tmp
		document.getElementById('searchResults').style.display='';
		setPageHeight();
		checkBubbleStatus();
	}
	
	function hideSearchResults()
	{
		hideLayer("error_msg");//document.getElementById("error_msg").style.display='none';
		document.getElementById('complete_info').style.display='';
		//document.getElementById('sevr_loc_txt').style.display='none';
		//document.getElementById('map_opt').style.display='none';
		document.getElementById('searchResults').style.display='none';
		setPageHeight();
		hidePinpoint();
		hideMapOptions();
	}

<!--Start of changes for Pinpoints & Address Fields D8328-->
	function reSizeAddrForm()
	{
		hideLayer("error_msg");//document.getElementById("error_msg").style.display='none';
		document.getElementById('complete_info').style.display='none';
		//document.getElementById('sevr_loc_txt').style.display='';
		//document.getElementById('map_opt').style.display='';
		//tmp
		document.getElementById('searchResults').style.display='';
		setPageHeight();
	}
	function reStoreAddrForm()
	{
		hideLayer("error_msg");//document.getElementById("error_msg").style.display='none';
		document.getElementById('complete_info').style.display='';
		//document.getElementById('sevr_loc_txt').style.display='none';
		//document.getElementById('map_opt').style.display='none';
		hideLayer("closeMatchPopup");
		hideLayer("candidateOverlayBack");
		document.getElementById('searchResults').style.display='none';
		setPageHeight();
	}
<!--End of changes for Pinpoints & Address Fields D8328-->

	function onMapLoad()
	{
	   lastMapURL=document.getElementById("mapimg").src;
	   errorcount=0;

		document.getElementById("mapimg").style.top = "0px";
		document.getElementById("mapimg").style.left = "0px";

	   toggleBusy(false);
	   //mcw uncommented the next two lines for 4443 testing, may or may not use.
		//if (bShowPinpoint)
		//	showPinpoint();
		//Replaced previous two lines with this one
		checkBubbleStatus();
	}

	function onMapError()
	{
    	log("onMapError called.");
    	errorcount++;

		document.getElementById("mapimg").style.top = "0px";
		document.getElementById("mapimg").style.left = "0px";

		if (lastMapURL && errorcount < 2)
		{
			document.getElementById("mapimg").src=lastMapURL;
		}
		else
		{
			document.getElementById("mapimg").src=staticMapFile + "US.gif";
		}
	   toggleBusy(false);
	   showError(errorOccurred);
	   
	}

	function hidePinpoint(userClick)
	{
		PinpointFlag = false;
		hideLayer('pinpoint');
		hideLayer('pinpointlarge');
		hideLayer('mapOverlayScrim');
		if (userClick)
		{
			if (scale == zoomLevels[0])
			{
				if (selectedTab == 'wimax')
				{
					dismissed4GNationalPopup = true;
				}
			}
			else
			{
				if (selectedTab == 'wimax')
				{
					dismissed4GPopup = true;
				}
				else if (selectedTab == 'sprint')
				{
					dismissed3GPopup = true;
				}
			}			
		}
				
		//document.getElementById('pinpointMin').style.visibility='hidden';
		//document.getElementById('pinpoint').style.visibility='hidden';
	}

function showBubble(message, mode)
{
	if (!bShowPinpoint) 
		return false;
	document.getElementById('pinpointcontent').innerHTML=message; //preferencesModal
	document.getElementById('pinpointcontentlarge').innerHTML=message; //preferencesModal
	if (mode && mode == 'large')
	{
		showLayer('pinpointlarge');
		showLayer('mapOverlayScrim');
	}
	else
	{
		hideMapOptions()
		showLayer('pinpoint');	
	}
}

function hideBubble()
{
	//hideLayer('pinpoint');
	hidePinpoint();
}

	
function onKeyPress(e)
{
//alert("keypress1");
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return false;
    //alert("keypress2");
    if (keycode == 13 )
    {
    	if (checkFields())
    	{
			 zooming=false;
			 changinglayers=false;
			 //alert("keypress3");
			 geocodeAddress(document.getElementById("frmImpact2"));
			 //alert("keypress4");
			 return false;
		}
		else
		{
			//alert("fields not validated.");
			return false;
		}
    }
    //alert("keypress5");
    //document.getElementById("recenterlink").focus();
    return true;
}

function showHide(layerName)
{
if (document.getElementById)
  {var fred = document.getElementById(layerName);var display = fred.style.display ? '' : 'none';fred.style.display = display;return;
  }
}

function popUp(page, name, w, h, scroll, showToolbar)
{
   if (blockpopup) return false;

	var winl = (screen.width - w) / 2;var wint = (screen.height - h) / 2;var toolbar = 'toolbar=yes';
	 if ( !showToolbar ) {toolbar = 'toolbar=no';}winprop  = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable,' +toolbar;win = window.open(page, name, winprop);
	 if (parseInt(navigator.appVersion) >= 4) {win.window.focus();}}var win=null;function NewWindow(mypage,myname,w,h,scroll,pos) {if(pos=="center") {LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
	 else
	 if(pos!="center" || pos==null) {LeftPosition=0;TopPosition=20;}settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=yes,directories=yes,status=yes,menubar=yes,toolbar=yes,resizable=yes';win=window.open(mypage,myname,settings);
	 
	 return win;
}

function printPage()
{
	if (window.print)
	{ window.print(); }
	else
	{ alert(toprint); }
}

function refillSelect(key,targetForm,targetName,list,selectedValue)
{
	var target = '';
	for ( var i = 0; i < targetForm.elements.length; i++ )
	{
		if ( targetForm.elements[i].name == targetName )
		{
			target = targetForm.elements[i];
		}
	}
	if ( target == '' )
	{
		return;
	}

	target.options.length = list[key].length;
	var selected = false;
	for ( var i = 0; i < target.options.length; i++ )
	{
		target.options[i].value = list[key][i];
		target.options[i].text = list[key][i];
		if ( target.options[i].value == selectedValue )
		{
			selected = true;
			target.options[i].selected = true;
			target.selectedIndex = i;
		}
	}
	if ( !selected )
	{
		target.selectedIndex = 0;
	}
}

function showError(txt)
{
	document.getElementById("error_txt").innerHTML=txt;
	showLayer("error_msg");//document.getElementById("error_msg").style.display='';
	//document.getElementById("complete_info").style.display='none';

	setPageHeight();
}

function append(orig, appendage)
{
	if (orig.length == 0)
	{
		return appendage;
	}
	return orig + ":" + appendage;
}


function setupDebug(debugxml)
{
	dodebug=true;
	_debug=true; //enable logging window.
	if (debugxml)
	{
		printxml=true;
	}

   with(document.getElementById('hiddenstuff'))
   {
   	style.position='absolute';
   	style.top='850px';
   	style.visibility='visible';
   	style.display='';
   	style.width='730px';
   };
   with(document.getElementById("frmImpact2"))
   {
   	txtStatus.style.display='';
   	txtStatus.style.width='700px';
   	txtXml.style.display='';
   	txtXml.style.width='700px';
   	txtXml.style.height='120px';
   	mapsearchresults.style.display='';
   	mapsearchresults.style.width='700px';
   }
}

//PNCT 2.0
function setDrawerActive(drawer)
{
	//alert("setDrawerActive:" + drawer);
	//if (selectedDrawer == "data")
	//{
	//	closeDrawer(selectedDrawer);
	//	alert("back");
	//}

	selectedDrawer = drawer;
	if (drawer == "voice")
	{
		//Since only the data drawer has a wimax tab, reset to sprint for the other drawers.
		if (selectedTab == "wimax")
			selectedTab = "sprint";
		//document.getElementById('datadrawer').style.display='';
		document.getElementById('datadraweropen').style.display='none';
		//document.getElementById('dataheaderopen').style.display='none';
		//document.getElementById('dataheaderclosed').style.display='';
		//document.getElementById('walkietalkiedrawer').style.display='';
		document.getElementById('walkietalkiedraweropen').style.display='none';
		//document.getElementById('walkietalkieheaderopen').style.display='none';
		//document.getElementById('walkietalkieheaderclosed').style.display='';
		//document.getElementById('voicedrawer').style.display='none';
		document.getElementById('voicedraweropen').style.display='';
		//document.getElementById('voiceheaderopen').style.display='';
		//document.getElementById('voiceheaderclosed').style.display='none';

		//temp tab id's
		document.getElementById('voicetab').style.borderBottom='1px solid white';
		document.getElementById('datatab').style.borderBottom='0px solid white';
		document.getElementById('4gdatatab').style.borderBottom='0px solid white';
		document.getElementById('walkietalkietab').style.borderBottom='0px solid white';
		document.getElementById('voicetab').style.backgroundImage='url(images/tabSliceSelected.jpg)';
		document.getElementById('datatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('4gdatatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('walkietalkietab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';

	}
	else if (drawer == "data")
	{
		//document.getElementById('walkietalkiedrawer').style.display='';
		document.getElementById('walkietalkiedraweropen').style.display='none';
		//document.getElementById('walkietalkieheaderopen').style.display='none';
		//document.getElementById('walkietalkieheaderclosed').style.display='';
		//document.getElementById('voicedrawer').style.display='';
		document.getElementById('voicedraweropen').style.display='none';
		//document.getElementById('voiceheaderopen').style.display='none';
		//document.getElementById('voiceheaderclosed').style.display='';
		//document.getElementById('datadrawer').style.display='none';
		document.getElementById('datadraweropen').style.display='';
		//document.getElementById('dataheaderopen').style.display='';
		//document.getElementById('dataheaderclosed').style.display='none';

		//temp tab id's
		document.getElementById('voicetab').style.borderBottom='0px solid white';
		document.getElementById('walkietalkietab').style.borderBottom='0px solid white';
		document.getElementById('voicetab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		if (selectedTab == 'sprint' || selectedTab == 'nextel')
		{
			document.getElementById('datatab').style.backgroundImage='url(images/tabSliceSelected.jpg)';
			document.getElementById('4gdatatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('datatab').style.borderBottom='1px solid white';
		document.getElementById('4gdatatab').style.borderBottom='0px solid white';
		}
		else if (selectedTab == 'wimax')
		{
			document.getElementById('4gdatatab').style.backgroundImage='url(images/tabSliceSelected.jpg)';
			document.getElementById('datatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('datatab').style.borderBottom='0px solid white';
		document.getElementById('4gdatatab').style.borderBottom='1px solid white';
		}
		document.getElementById('walkietalkietab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';

	}
	else if (drawer == "walkietalkie")
	{
		//Code to switch tab to nextel before sprint drawer had walkietalkie tab.
		//if (selectedTab == "sprint")
		//{
		//	selectedTab = "nextel";
		//}

		//Since only the data drawer has a wimax tab, reset to sprint for the other drawers.
		if (selectedTab == "wimax")
			selectedTab = "sprint";

		//document.getElementById('voicedrawer').style.display='';
		document.getElementById('voicedraweropen').style.display='none';
		//document.getElementById('voiceheaderopen').style.display='none';
		//document.getElementById('voiceheaderclosed').style.display='';
		//document.getElementById('datadrawer').style.display='';
		document.getElementById('datadraweropen').style.display='none';
		//document.getElementById('dataheaderopen').style.display='none';
		//document.getElementById('dataheaderclosed').style.display='';
		//document.getElementById('walkietalkiedrawer').style.display='none';
		document.getElementById('walkietalkiedraweropen').style.display='';
		//document.getElementById('walkietalkieheaderopen').style.display='';
		//document.getElementById('walkietalkieheaderclosed').style.display='none';

		//temp tab id's
		document.getElementById('voicetab').style.borderBottom='0px solid white';
		document.getElementById('datatab').style.borderBottom='0px solid white';
		document.getElementById('4gdatatab').style.borderBottom='0px solid white';
		document.getElementById('walkietalkietab').style.borderBottom='1px solid white';
		document.getElementById('voicetab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('datatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('4gdatatab').style.backgroundImage='url(images/tabSliceUnSelected.jpg)';
		document.getElementById('walkietalkietab').style.backgroundImage='url(images/tabSliceSelected.jpg)';

	}
	else
		alert('Invalid drawer id passed:' + drawer);

	setTabActive(selectedDrawer, selectedTab);
	//getMapImage();


}

function setTabActive(drawer,tab)
{
	//tab.style.backgroundImage='url(images/tabSliceSelected.jpg)';
	selectedDrawer = drawer;
   log("Clicked tab:" + tab);
   log("drawer:" + drawer);
   
   hidePinpoint();
   hideMapOptions();

	//Putting this here for now, as it's unrelated to everything else..
	//Show new message for NDC view
	if (selectedTab == 'nextel') // && selectedDrawer == 'walkietalkie') //TODO: Talk to Bala - really this is all Nextel coverage, not just NDC
	{
		showLayer('nextelnetworkimpactslink');
	}
	else
	{
		hideLayer('nextelnetworkimpactslink');
	}

	if (selectedTab == 'sprint')
	{
		//selectedTab = "sprint";
      log("selectedTab:" + selectedTab);
      document.getElementById("toggleimg").src='images/toggle_SprintActive.png';
	
		document.getElementById('datadrawernextelcontent').style.display='none';
		document.getElementById('datadrawerwimaxcontent').style.display='none';
		document.getElementById('datadrawersprintcontent').style.display='';

		document.getElementById('voicedrawernextelcontent').style.display='none';
		document.getElementById('voicedrawersprintcontent').style.display='';

		document.getElementById('walkietalkiedrawersprintcontent').style.display='';
		document.getElementById('walkietalkiedrawernextelcontent').style.display='none';

		if (drawer == 'data')
		{
			//document.getElementById('datapop').style.display='';
			//Change recent tower labels
		}

	}
	else if (selectedTab == 'nextel')
	{
		//selectedTab = "nextel";

		document.getElementById("toggleimg").src='images/toggle_NextelActive.png';
		
		document.getElementById('datadrawersprintcontent').style.display='none';
		document.getElementById('datadrawerwimaxcontent').style.display='none';
		document.getElementById('datadrawernextelcontent').style.display='';

		document.getElementById('voicedrawersprintcontent').style.display='none';
		document.getElementById('voicedrawernextelcontent').style.display='';

		document.getElementById('walkietalkiedrawersprintcontent').style.display='none';
		document.getElementById('walkietalkiedrawernextelcontent').style.display='';

		if (drawer == 'data')
		{
			//document.getElementById('datapop').style.display='none';
		}

	}
	else if (selectedTab == 'wimax')
	{
		//selectedTab = "wimax";
		document.getElementById("toggleimg").src='images/toggle_SprintActive.png';
		
		document.getElementById('datadrawersprintcontent').style.display='none';
		document.getElementById('datadrawernextelcontent').style.display='none';
		document.getElementById('datadrawerwimaxcontent').style.display='';

		document.getElementById('voicedrawersprintcontent').style.display='';
		document.getElementById('voicedrawernextelcontent').style.display='none';

		document.getElementById('walkietalkiedrawersprintcontent').style.display='';
		document.getElementById('walkietalkiedrawernextelcontent').style.display='none';

		if (drawer == 'data')
		{
			//document.getElementById('datapop').style.display='';
		}

		/*	
		if (scale == zoomLevels[0])
		{
					
			var amsg = "4G is available in select locations only on certain devices!<br/><br/>Check your address and the 4G Device list to make sure your device is 4G capable.";
			
			showBubble(amsg);
		}
		*/
	}
	

	
	setTowerLabels(drawer, selectedTab);

	//TODO: Need to filter covtype to make sure we don't use a bad value.
	covtype = selectedTab;
	
	//Always set staticMapFile so it will be accurate if user zooms all the way out and gets static map.
	staticMapFile = "/images/map" + drawer + selectedTab;// + "US.gif";
	document.getElementById("mapAK").src = staticMapFile + "AK.gif";
	document.getElementById("mapHI").src = staticMapFile + "HI.gif";
	document.getElementById("mapPR").src = staticMapFile + "PR.gif";
	if (imgPath == "")
	{
		document.getElementById("mapimg").src = staticMapFile + "US.gif";
		log("Setting static map file to:" + staticMapFile);
	}
	else
	{
		getMapImage();
	}

	setPageHeight();

	/*
	for (locNum=0; locNum<addressCount; locNum++)
	{
		getCoverageLevelDiv(locNum);
	}
	*/

	checkBubbleStatus();

   log("calling omniture in setTabActive:" + selectedDrawer + "," + selectedTab);
   makeOmnitureCall('coverage');
}

function sprintToggleClicked()
{
	selectedTab = 'sprint';
	setDrawerActive(selectedDrawer);
	return false;
}

function nextelToggleClicked()
{
	if (selectedTab == 'wimax')
	{
		bShowPinpoint = true;
		showBubble(msgNo4Gnextel, "large");

		return false;
	}
	selectedTab = 'nextel';
	setDrawerActive(selectedDrawer);
	return false;
}

function voiceTabClicked()
{
	setDrawerActive('voice');
	return false;
}

function wimaxTabClicked()
{
	if (selectedTab == 'nextel')
	{
		//Warn user that nextel does not support 4G and do not change tabs.
		bShowPinpoint = true;
		showBubble(msgNo4Gnextel, "large");

		return false;		
	}
	selectedTab = 'wimax';
	setDrawerActive('data');
	return false;
}

function dataTabClicked()
{
	if (selectedTab == 'wimax') 
	{ 
		selectedTab = 'sprint'; 
	} 
	setDrawerActive('data'); 
	return false;
}

function pttTabClicked()
{
	setDrawerActive('walkietalkie');
	return false;
}

function setTowerLabels(drawer, tab)
{
	log("setTowerLabels(" + drawer + "," + tab + ")");
	
	//Currently only changing labels for data tabs that show Sprint data 
	if (drawer == 'data' && tab != 'nextel' )
	{
		//log("Changing recent tower label.  Old label=" + getInnerHTML('recenttowers1'));
		setInnerHTML('recenttowers1', recentTower3G);
		setInnerHTML('recenttowers2', recentTower3G);
		setInnerHTML('futuretowers1', futureTower3G);
		setInnerHTML('futuretowers2', futureTower3G);
	}
	else if ( getInnerHTML('recenttowers1') != recentTowerLabel )
	{
		//log("Changing recent tower label.  Old label=" + getInnerHTML('recenttowers1'));
		setInnerHTML('recenttowers1', recentTowerLabel);
		setInnerHTML('recenttowers2', recentTowerLabel);
		setInnerHTML('futuretowers1', futureTowerLabel);
		setInnerHTML('futuretowers2', futureTowerLabel);
	}
}

function clear_form()
{
	addrform = document.getElementById("frmImpact2");
	if (addrform)
	{
		addrform.fulladdress1.value="";
		//addrform.fulladdress2.value="";
		//addrform.fulladdress3.value="";
		document.getElementById("fulladdress1").style.backgroundColor="#ffffff";
		//document.getElementById("fulladdress2").style.backgroundColor="#ffffff";
		//document.getElementById("fulladdress3").style.backgroundColor="#ffffff";
	}
	clearError();
}

function clearError()
{
	hideLayer("error_msg");
	document.getElementById("fulladdress1").style.backgroundColor="#ffffff";
	//document.getElementById("fulladdress2").style.backgroundColor="#ffffff";
	//document.getElementById("fulladdress3").style.backgroundColor="#ffffff";
}

function closeDrawer(drawer)
{
	alert("closing drawer");
	document.getElementById("datadraweropen").style.height="20px";
	document.getElementById("datadraweropen").style.height="15px";
	document.getElementById("datadraweropen").style.height="10px";
	document.getElementById("datadraweropen").style.height="5px";
	document.getElementById("datadraweropen").style.height="0px";
	//Do that in a loop from current height (hmm.... to 0, or start at some arbitary #, or maybe just 2 steps...
	alert("closing drawer");
	document.getElementById("datadraweropen").style.display="none";
	document.getElementById("datadraweropen").style.height="";
	alert("closing drawer");
	document.getElementById("datadrawer").style.display="";
}

function setPageHeight()
{
	var minHeight = 450;
	if (document.getElementById("drawersntabs").clientHeight < minHeight)
	{
		log("legend too short, setting to " + minHeight + "px");
		document.getElementById("drawersntabs").style.height= minHeight + "px";
	}
	var tmpHeight = document.getElementById("drawersntabs").clientHeight;
	if (tmpHeight < minHeight)
		tmpHeight = minHeight;
	document.getElementById("impactMainContent").style.height= tmpHeight + "px";
	//alert("Set MainContent height to:" + tmpHeight + "px");
}

function setAntiAlias(newval)
{
	if (newval == null) return;
	if (newval == 'T' || newval == 'F' || newval == 't' || newval == 'f')
	{
		doAntiAlias = newval;
	}
}

function showLayer(layerName)
{
	//log("showLayer:" + layerName);
	if (document.getElementById)
	{
		if(!layerName.nodeName) layerName = document.getElementById(layerName);
		if(layerName)
		{
			//TODO:check for bugs
			if (layerName.style.display == 'none')
			{
			layerName.style.display = '';
		}
	}
	}
}

function hideLayer(layerName)
{
	//log("hideLayer:" + layerName);
	if (document.getElementById)
	{
		if(!layerName.nodeName) layerName = document.getElementById(layerName);
		if(layerName)
		{
			//TODO:check for bugs
			if (layerName.style.display != 'none')
			{
			layerName.style.display = 'none';
		}
	}
	}
}

function setClass(layerName, newClassName)
{
	if (document.getElementById)
	{
		if(!layerName.nodeName) layerName = document.getElementById(layerName);
		if(layerName)
		{
			layerName.className=newClassName;
		}
	}
}

function setVisibility(layerName, vis)
{
	var svis;
	if (vis)
		svis = "visible";
	else
		svis = "hidden";

	log("Layer:" + layerName + "=" + svis);
	if (document.getElementById)
	{
		if(!layerName.nodeName) layerName = document.getElementById(layerName);
		if(layerName)
		{
			layerName.style.visibility = svis;
		}
	}
}

function setInnerHTML(elementId, newContent)
{
	var tmpvar = document.getElementById(elementId);
	if (tmpvar)
	{
		try
		{
			if (tmpvar.innerHTML != newContent)
			{
				tmpvar.innerHTML = newContent;
			}
		}
		catch (ex)
		{
			log("Exception setting element innerHTML property:" + ex);
		}
	}
}

function getInnerHTML(elementId)
{
	if (document.getElementById(elementId))
	{
		return document.getElementById(elementId).innerHTML;
	}
}

var recentSearches = [
	[ false, "" ],
	[ false, "" ],
	[ false, "" ],
	[ false, "" ],
	[ false, "" ] 	];


function showRecentSearches()
{
	//if (document.getElementById("recentsearchdiv").style.display=="none")
	//{
		for ( var idx = 0; idx < recentSearches.length; idx++ )
		{
			if (recentSearches[idx][0] == true)
			{
				document.getElementById("recentsearch"+idx).innerHTML=getRecentAddr(idx);
				showLayer("search"+idx);
			}
			else
			{
				hideLayer("search"+idx);
			}
		}

		if (recentSearches[0][0] == false)
			showLayer("norecentsearches");
		else
			hideLayer("norecentsearches");

		//document.getElementById("recentsearchdiv").style.display="";
		showLayer("recentsearchdiv");
		//setVisibility("formline1", false);
		//setVisibility("formline2", false);
	//}
	//else
	//{
	//	hideRecentSearches();
	//}
}

function hideRecentSearches()
{
	//document.getElementById('recentsearchdiv').style.display='none';
	hideLayer("recentsearchdiv");
	//setVisibility("formline1", true);
	//setVisibility("formline2", true);
}

function getRecentSearch(idx)
{
	//hideRecentSearches();

  var form = document.getElementById('frmImpact2');
	hideLayer('fulladdress1hint');
	form.fulladdress1.value = recentSearches[idx][1];
	if (checkFields())
		doMapIt(form);
}

function addRecentSearch()
{
	var cookieval="";
	for (ii=0; ii<addressCount; ii++)
	{
	  	var tmpaddress = document.getElementById('fulladdress'+(ii+1)).value;

		var dup = false;
		var firstfree = -1;
		//log("addRecentSearch:before for loop.");
		for ( var idx = 0; idx < recentSearches.length; idx++ )
		{
			if (compareAddr(idx, tmpaddress) == true)
				dup = true;
			if (recentSearches[idx][0] == false)
			{
				firstfree = idx;
				break;
			}
			//cookieval += recentSearches[idx][1] + "|";
		}
		//log("addRecentSearch:after for loop." + dup + "," + firstfree);
		if (dup == false && firstfree == -1)
		{
			//cookieval="";
			for ( var idx = 0; idx < recentSearches.length - 1; idx++ )
			{
				recentSearches[idx][1] = recentSearches[idx+1][1];
				//cookieval += recentSearches[idx][1] + "|";
			}
			recentSearches[4][0] = false;
			firstfree = 4;
		}
		if (dup == false && firstfree < recentSearches.length)
		{
			idx = firstfree;
			recentSearches[idx][0] = true;
			recentSearches[idx][1] = tmpaddress;
			//log("addRecentSearch:added search=" + recentSearches[idx]);
			//cookieval += recentSearches[idx][1] + "|";
		}
	}
	
	//mcw 2009-10-7 split cookie building from adding address to list
	for ( var idx = 0; idx < recentSearches.length; idx++ )
	{
		cookieval += escape(recentSearches[idx][1]) + "|";
	}
	
	setNxCookie("recentaddr",cookieval,"session");

	showRecentSearches();
	
}

function compareAddr(idx, street)
{
	//log("compareAddr(" + idx + "):" + recentSearches[idx]);
	if (recentSearches[idx][0] == false) return false;
	if (recentSearches[idx][1] != street) return false;

	return true;

}

function getRecentAddr(idx)
{
	if (recentSearches[idx][0] == true)
	{
		var street = recentSearches[idx][1];

		var addrStr = "";
		if (street != null && street != "")
			addrStr = street;

		return addrStr;
	}
	else
		return "";
}

var covLevelEnabled = false;

function highlightCoverageLevel()
{
	//if (covLevelEnabled == false)
	//	return;
	var logMissingDivs = false;
	// Calculate best coverage shown on all nine tabs
//TODO: document add layer
	var covlevel = [  "sprintvoicequality1", "sprintvoicequality2", "sprintvoicequality3", "sprintvoiceprimary", "sprintvoicenoquality", "sprintvoiceroaming", "sprintvoicenocoverage",
						   "nextelvoicequality1", "nextelvoicequality2", "nextelvoicequality3", "nextelvoiceprimary", "nextelvoicenocoverage",
						   "datasprintmobilebroadband", "datasprintmobilebroadbandroaming", "datasprint1x", "datasprintdataroaming", "datasprintnocoverage",
						   "datanextelcov", "datanextelnocoverage",
						   "datawimaxquality1","datawimaxquality2","datawimax4gmobiledevice", "datawimaxother", "datawimaxnocoverage",
							"sprintwalkietalkiequality1", "sprintwalkietalkiequality2", "sprintwalkietalkiequality3", "sprintwalkietalkieprimary", "sprintwalkietalkienocoverage",
							"nextelwalkietalkiequality1", "nextelwalkietalkiequality2", "nextelwalkietalkiequality3", "nextelwalkietalkieprimary", "nextelwalkietalkienocoverage"
			];


		//Clear previously highlighted item
		for (var ii=0; ii<covlevel.length; ii++)
		{
			//legend
			if (document.getElementById(covlevel[ii]))
				document.getElementById(covlevel[ii]).className="";
			else
				log("Can't find div [" + covlevel[ii] + "]");
			//compare legend
			if (document.getElementById(covlevel[ii]+"c"))
				document.getElementById(covlevel[ii]+"c").className="";
			else if (logMissingDivs)
				log("Can't find div [" + covlevel[ii]+"c" + "]");
		}

		//If US view, just clear highlights, do not highlight current coverage level.
		if (!haveCovData || scale == zoomLevels[0]) return;

		log("highlightCoverageLevel() ================ ");

		//Voice Sprint
		if (covvoicesprint[currentLocation] == "Best Coverage")
		{
			highlightLegendDiv("sprintvoicequality1");
			highlightLegendDiv("sprintvoiceprimary");
		}
		else if (covvoicesprint[currentLocation] == "Good Coverage")
		{
			highlightLegendDiv("sprintvoicequality2");
			highlightLegendDiv("sprintvoiceprimary");
		}
		else if (covvoicesprint[currentLocation] == "Fair Coverage")
		{
			highlightLegendDiv("sprintvoicequality3");
			highlightLegendDiv("sprintvoiceprimary");
		}
		else if (covvoicesprint[currentLocation] == "SprintVoice")
		{
				highlightLegendDiv("sprintvoicenoquality");
		}
		else if (covvoicesprint[currentLocation] == "SRA" || coverageLevelCDMA == "Affiliate")
		{
				highlightLegendDiv("sprintvoicenoquality");
		}
		else if (covvoicesprint[currentLocation] == "CDMARoam" || coverageLevelCDMA == "DigitalVoiceRoaming")
		{
			highlightLegendDiv("sprintvoiceroaming");
		}
		else
		{
			highlightLegendDiv("sprintvoicenocoverage");
		}

		//------------------------
		// data sprint
		//------------------------
		if (covdatasprint[currentLocation] == "EVDO")
		{
			highlightLegendDiv("datasprintmobilebroadband");
		}
		else if (covdatasprint[currentLocation] == "EVDORoam")
		{
			highlightLegendDiv("datasprintmobilebroadbandroaming");
		}
		else if (covdatasprint[currentLocation] == "1900EVDORoam")
		{
			highlightLegendDiv("datasprintmobilebroadbandroaming");
		}
		else if (covdatasprint[currentLocation] == "Sprint1XData")
		{
			highlightLegendDiv("datasprint1x");
		}
		else if (covdatasprint[currentLocation] == "1XDataRoam")
		{
			highlightLegendDiv("datasprintdataroaming");
		}
		else if (covdatasprint[currentLocation] == "19001XDataRoam")
		{
			highlightLegendDiv("datasprintdataroaming");
		}
		else
		{
			highlightLegendDiv("datasprintnocoverage");
		}


		//------------------------
		// data wimax
		//------------------------
		if (covdatawimax[currentLocation] == "4Glevel1")
		{
			highlightLegendDiv("datawimaxquality1");
			highlightLegendDiv("datawimax4gmobiledevice");
		}
		else if (covdatawimax[currentLocation] == "4GMobileDevice")
		{
			highlightLegendDiv("datawimaxquality2");
			highlightLegendDiv("datawimax4gmobiledevice");
		}
		else if (covdatawimax[currentLocation] == "EVDO")
		{
			highlightLegendDiv("datawimaxother");
		}
		else if (covdatawimax[currentLocation] == "EVDORoam")
		{
			highlightLegendDiv("datawimaxother");
		}
		else if (covdatawimax[currentLocation] == "1900EVDORoam")
		{
			highlightLegendDiv("datawimaxother");
		}
		else if (covdatawimax[currentLocation] == "Sprint1XData")
		{
			highlightLegendDiv("datawimaxother");
		}
		else if (covdatawimax[currentLocation] == "1XDataRoam")
		{
			highlightLegendDiv("datawimaxother");
		}
		else if (covdatawimax[currentLocation] == "19001XDataRoam")
		{
			highlightLegendDiv("datawimaxother");
		}
		else
		{
			highlightLegendDiv("datawimaxnocoverage");
		}


		//Walkietalkie Sprint
		if (covwalkietalkiesprint[currentLocation] == "Best Coverage")
		{
			highlightLegendDiv("sprintwalkietalkiequality1");
			highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else if (covwalkietalkiesprint[currentLocation] == "Good Coverage")
		{
			highlightLegendDiv("sprintwalkietalkiequality2");
			highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else if (covwalkietalkiesprint[currentLocation] == "Fair Coverage")
		{
			highlightLegendDiv("sprintwalkietalkiequality3");
			highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else
		{
			highlightLegendDiv("sprintwalkietalkienocoverage");
		}

		//IDEN - all
		if (covvoicenextel[currentLocation] == "Best Coverage")
		{
			highlightLegendDiv("nextelvoicequality1");
			highlightLegendDiv("nextelwalkietalkiequality1" );
			highlightLegendDiv("nextelvoiceprimary");
			highlightLegendDiv("datanextelcov");
			highlightLegendDiv("nextelwalkietalkieprimary");
		}
		else if (covvoicenextel[currentLocation] == "Good Coverage")
		{
			highlightLegendDiv("nextelvoicequality2");
			highlightLegendDiv("nextelwalkietalkiequality2" );
			highlightLegendDiv("nextelvoiceprimary");
			highlightLegendDiv("datanextelcov");
			highlightLegendDiv("nextelwalkietalkieprimary");
		}
		else if (covvoicenextel[currentLocation] == "Fair Coverage")
		{
			highlightLegendDiv("nextelvoicequality3");
			highlightLegendDiv("nextelwalkietalkiequality3" );
			highlightLegendDiv("nextelvoiceprimary");
			highlightLegendDiv("datanextelcov");
			highlightLegendDiv("nextelwalkietalkieprimary");
		}
		else
		{
			highlightLegendDiv("nextelvoicenocoverage");
			highlightLegendDiv("datanextelnocoverage");
			highlightLegendDiv("nextelwalkietalkienocoverage");
		}



}

function highlightLegendDiv(divid)
{
	setClass(divid, "legendcoverage");
	setClass(divid+"c", "legendcoverage");
}


function hideLegendDiv(divid)
{
	hideLayer(divid);
	hideLayer(divid+"c");
}


function showLegendDiv(divid)
{
	showLayer(divid);
	showLayer(divid+"c");
}


//TODO: Left this in here in case we go back to multiple locations again.  Not certain it isn't being used in some way for printing or compare.. Need to confirm.
function getCoverageLevelDiv(locNum)
{
	//If structure copied from highlightCoverageLevel() -- These two methods need to be in sync.
	
	var tmpLocNum = locNum;
	
	if (selectedDrawer == 'voice' && selectedTab == 'sprint')
	{
		//Voice Sprint
		if (covvoicesprint[tmpLocNum] == "Best Coverage")
		{
			if (scale <= 50)
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicequality1").innerHTML;
			else
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoiceprimary").innerHTML;
		}
		else if (covvoicesprint[tmpLocNum] == "Good Coverage")
		{
			if (scale <= 50)
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicequality2").innerHTML;
			else
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoiceprimary").innerHTML;
			//highlightLegendDiv("sprintvoicequality2");
			//highlightLegendDiv("sprintvoiceprimary");
		}
		else if (covvoicesprint[tmpLocNum] == "Fair Coverage")
		{
			if (scale <= 50)
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicequality3").innerHTML;
			else
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoiceprimary").innerHTML;
			//highlightLegendDiv("sprintvoicequality3");
			//highlightLegendDiv("sprintvoiceprimary");
		}
		else if (covvoicesprint[tmpLocNum] == "SprintVoice")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicenoquality").innerHTML;
			//highlightLegendDiv("sprintvoicenoquality");
		}
		else if (covvoicesprint[tmpLocNum] == "SRA" || coverageLevelCDMA == "Affiliate")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicenoquality").innerHTML;
			//highlightLegendDiv("sprintvoicenoquality");
		}
		else if (covvoicesprint[tmpLocNum] == "CDMARoam" || coverageLevelCDMA == "DigitalVoiceRoaming")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoiceroaming").innerHTML;
			//highlightLegendDiv("sprintvoiceroaming");
		}
		else
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintvoicenocoverage").innerHTML;
			//highlightLegendDiv("sprintvoicenocoverage");
		}
	}

	//------------------------
	// data sprint
	//------------------------
	if (selectedDrawer == 'data' && selectedTab == 'sprint')
	{
		if (covdatasprint[tmpLocNum] == "EVDO")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintmobilebroadband").innerHTML;
			//highlightLegendDiv("datasprintmobilebroadband");
		}
		else if (covdatasprint[tmpLocNum] == "EVDORoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintmobilebroadbandroaming").innerHTML;
			//highlightLegendDiv("datasprintmobilebroadbandroaming");
		}
		else if (covdatasprint[tmpLocNum] == "1900EVDORoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintmobilebroadbandroaming").innerHTML;
			//highlightLegendDiv("datasprintmobilebroadbandroaming");
		}
		else if (covdatasprint[tmpLocNum] == "Sprint1XData")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprint1x").innerHTML;
			//highlightLegendDiv("datasprint1x");
		}
		else if (covdatasprint[tmpLocNum] == "1XDataRoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintdataroaming").innerHTML;
			//highlightLegendDiv("datasprintdataroaming");
		}
		else if (covdatasprint[tmpLocNum] == "19001XDataRoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintdataroaming").innerHTML;
			//highlightLegendDiv("datasprintdataroaming");
		}
		else
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datasprintnocoverage").innerHTML;
			//highlightLegendDiv("datasprintnocoverage");
		}
	}

	//------------------------
	// data wimax
	//------------------------
	if (selectedDrawer == 'data' && selectedTab == 'wimax')
	{
	//TODO: document add layer
		if (covdatawimax[tmpLocNum] == "4Glevel1")
		{
			if (scale <= 50)
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxquality1").innerHTML;
			else
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimax4gmobiledevice").innerHTML;
			//highlightLegendDiv("datawimax4gmobiledevice");
		}
		else if (covdatawimax[tmpLocNum] == "4GMobileDevice")
		{
			if (scale <= 50)
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxquality2").innerHTML;
			else
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimax4gmobiledevice").innerHTML;
			//highlightLegendDiv("datawimax4gmobiledevice");
		}
		else if (covdatawimax[tmpLocNum] == "EVDO")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxmobilebroadband").innerHTML;
			//highlightLegendDiv("datawimaxmobilebroadband");
		}
		else if (covdatawimax[tmpLocNum] == "EVDORoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxmobilebroadbandroaming").innerHTML;
			//highlightLegendDiv("datawimaxmobilebroadbandroaming");
		}
		else if (covdatawimax[tmpLocNum] == "1900EVDORoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxmobilebroadbandroaming").innerHTML;
			//highlightLegendDiv("datawimaxmobilebroadbandroaming");
		}
		else if (covdatawimax[tmpLocNum] == "Sprint1XData")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimax1x").innerHTML;
			//highlightLegendDiv("datawimax1x");
		}
		else if (covdatawimax[tmpLocNum] == "1XDataRoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxdataroaming").innerHTML;
			//highlightLegendDiv("datawimaxdataroaming");
		}
		else if (covdatawimax[tmpLocNum] == "19001XDataRoam")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxdataroaming").innerHTML;
			//highlightLegendDiv("datawimaxdataroaming");
		}
		else
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datawimaxnocoverage").innerHTML;
			//highlightLegendDiv("datawimaxnocoverage");
		}
	}

	if (selectedDrawer == 'walkietalkie' && selectedTab == 'sprint')
	{
		//Walkietalkie Sprint
		if (covwalkietalkiesprint[tmpLocNum] == "Best Coverage")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintwalkietalkiequality1").innerHTML;
			//highlightLegendDiv("sprintwalkietalkiequality1");
			//highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else if (covwalkietalkiesprint[tmpLocNum] == "Good Coverage")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintwalkietalkiequality2").innerHTML;
			//highlightLegendDiv("sprintwalkietalkiequality2");
			//highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else if (covwalkietalkiesprint[tmpLocNum] == "Fair Coverage")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintwalkietalkiequality3").innerHTML;
			//highlightLegendDiv("sprintwalkietalkiequality3");
			//highlightLegendDiv("sprintwalkietalkieprimary");
		}
		else
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("sprintwalkietalkienocoverage").innerHTML;
			//highlightLegendDiv("sprintwalkietalkienocoverage");
		}
	}
	
		//IDEN - all
	if (selectedTab == 'nextel')
	{
		if (covvoicenextel[tmpLocNum] == "Best Coverage")
		{
			if (selectedDrawer == 'data')
			{	
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("datanextelcov").innerHTML;
			}
			else
			{
				document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("nextelvoicequality1").innerHTML;
			}
		}
		else if (covvoicenextel[tmpLocNum] == "Good Coverage")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("nextelvoicequality2").innerHTML;
		}
		else if (covvoicenextel[tmpLocNum] == "Fair Coverage")
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("nextelvoicequality3").innerHTML;
		}
		else
		{
			document.getElementById('location'+tmpLocNum+'coverage').innerHTML = document.getElementById("nextelvoicenocoverage").innerHTML;
		}
	}
}

// Sets cookie values. Expiration date is optional
function setCookie(name, value, expire)
{
		document.cookie = name + "=" + escape(value)
		    + ( (expire == null) ? "" : ("; expires=" + expire.toGMTString()) )
}


function getCookie(Name)
{
     var search = Name + "="
     if (document.cookie.length > 0)
     {
        // if there are any cookies
        offset = document.cookie.indexOf(search)
        if (offset != -1)
        { // if cookie exists
           offset += search.length
           // set index of beginning of value
           end = document.cookie.indexOf(";", offset)
           // set index of end of cookie value
           if (end == -1)
           end = document.cookie.length
           return unescape(document.cookie.substring(offset, end))
        }
     }
}

function initPage()
{
	log("init page.");
	if (getCookie("recentaddr"))
	{
		log(getCookie("recentaddr"));
		var addrs=getCookie("recentaddr").split('|');
		idx=0;
		addrs.forEach(function(val)
			{
				log(val);
				if (val > "")
				{
					var parts=val.split("~");
					if (parts != undefined && parts[0] != "undefined" && parts[1] != "undefined" && parts[2] != "undefined" && parts[3] != "undefined")
					{
						log("Adding:" + parts);
						recentSearches[idx][0] = true;
						recentSearches[idx][1] = parts[0]; //already unescaped in getCookie()
						//recentSearches[idx][2] = parts[1];
						//recentSearches[idx][3] = parts[2];
						//recentSearches[idx][4] = parts[3];
						idx++;
					}
				}
			});
		showRecentSearches();
	}
	pageInitialized = true;
}

function makeOmnitureCall(whichFunc)
{
	if (!pageInitialized)
	{
		//alert("makeOmnitureCall - page not initialized yet!");
		return false;
	}

	if (!doOmniture)
	{
		//if Omniture is disabled, abort to be sure there are no errors.
		return false;
	}
	
	switch(selectedDrawer){
		case 'voice':
			drawerLabel='Voice Coverage';
		break;
		case 'data':
			drawerLabel='Data, Email and Multimedia';
			break;
		case 'walkietalkie':
			drawerLabel='Nextel Direct Connect®';
			break;
	}
	switch(selectedTab) {
		case 'sprint':
			tabLabel='Sprint Devices';
			break;
		case 'nextel':
			tabLabel='Nextel Devices';
			break;
		case 'wimax':
			tabLabel='Sprint Devices with 4G';
			break;
	}

	switch(whichFunc) {
		case 'coverage':
			if (Analytics != undefined && Analytics.CovTool != undefined) {
				log("Calling Analytics.CovTool.coverageDevice(" + drawerLabel + "," + tabLabel + ")" );
				var t=setTimeout("Analytics.CovTool.coverageDevice('" + drawerLabel + "', '" + tabLabel + "')",100);
				//Analytics.CovTool.coverageDevice(drawerLabel, tabLabel);
			}
			else
			{
				log("Analytics not defined");
			}
			break;
		case 'mapit':
			if (Analytics != undefined && Analytics.CovTool != undefined) {
				log("Calling Analytics.CovTool.mapItHandler('" + currentCity + "','" + currentState + "','" + currentZip + "')"); 
				//Beore PJ2331 var t=setTimeout("Analytics.CovTool.mapItHandler('" + document.getElementById("frmImpact2").mapcity.value + "','" + document.getElementById("frmImpact2").mapstate.value + "','" + document.getElementById("frmImpact2").mapzip.value + "')",100);
				var t=setTimeout("Analytics.CovTool.mapItHandler('" + currentCity + "','" + currentState + "','" + currentZip + "')",100);
			}
			else
			{
				log("Analytics not defined");
			}
			//Old omniture code.
			//s_prop33="";
			//s_prop34="";
			break;
	}

	//Old omniture code.
	//log("calling omniture. s_prop32=" + s_prop32 + ", s_prop33=" + s_prop33 + ", s_prop34=" + s_prop34);
	//s_gs(s_account);

}

function openPrintPage()
{
	var printform = document.getElementById("printform");
	if (printform != null)
	{
		printform.printmapscale.value=scale;
		printform.printcenterx.value=centerX;
		printform.printcentery.value=centerY;
		printform.covtype.value=selectedTab;
		printform.servtype.value=selectedDrawer;
		printform.covvoicesprint.value=covvoicesprint[currentLocation];
		printform.covvoicenextel.value=covvoicenextel[currentLocation];
		printform.covdatasprint.value=covdatasprint[currentLocation];
		printform.covdatanextel.value=covdatanextel[currentLocation];
		printform.covdatawimax.value=covdatawimax[currentLocation];
		printform.covwalkietalkiesprint.value=covwalkietalkiesprint[currentLocation];
		printform.covwalkietalkienextel.value=covwalkietalkienextel[currentLocation];
	}
	popUp('', 'mappreview', 850, 600, 'yes', false);
	document.getElementById("printform").submit();
	return false;
}

function hideMapOptions()
{
		hideLayer("mapoptionsdetail");
		hideLayer("mapoptionsopen");
		showLayer("mapoptionsclosed");
		document.getElementById("mapoptionscontrol").style.zIndex = 100;
}

function showMapOptions()
{
		document.getElementById("mapoptionscontrol").style.zIndex = 1001;	
		showLayer("mapoptionsdetail");
		hideLayer("mapoptionsclosed");
		showLayer("mapoptionsopen");
}

function toggleMapOptions()
{
	//if (document.getElementById("recentsearchdiv").style.display=="none")
	if (document.getElementById("mapoptionsdetail").style.display=="none")
	{
		showMapOptions();
	}
	else
	{
		hideMapOptions();
	}
	
	return false;
}
