<!--

/******************************************************************************
 *	Additional logic for map interactions.  This supplements the main.js file
 *
 *****************************************************************************/
 
/*****************************************************************************
 * Constants for the buffers applied to the full extent envelope when zooming 
 * and panning used in isInsideExtent()
 *****************************************************************************/
var ZOOM_8_Y_BUFFER = 700000;
var ZOOM_8_X_BUFFER = 1000000; 
var ZOOM_7_Y_BUFFER = 300000; 
var ZOOM_7_X_BUFFER = 500000; 
var ZOOM_6_Y_BUFFER = 100000; 
var ZOOM_6_X_BUFFER = 200000; 
var ZOOM_DEFAULT_Y_BUFFER = 0; 
var ZOOM_DEFAULT_X_BUFFER = 0; 


/*****************************************************************************
 * Constants for changing of mapservice to and from GB/NI used in checkMapService()
 *****************************************************************************/
//NI in BNG
var NI_X_MIN = -10000;
var NI_X_MAX = 190000;
var NI_Y_MIN = 455000;
var NI_Y_MAX = 620000;
//NI in ING	
var GB_X_MIN = 175000;
var GB_X_MAX = 375000;
var GB_Y_MIN = 300000;
var GB_Y_MAX = 465000;
 


/******************************************************************************
 * incremental zoomin
 * if the current extent is fully zoomed in then dont do anything, alert message?
 *****************************************************************************/
function stepZoom(direction)
{
	try
	{
		var currentZoom = parseInt(m_mapViewer.getLevel());
		var maxZoom = parseInt(m_ExtentWidths.length);
		var minZoom = 1;

		if( minZoom < currentZoom || currentZoom < maxZoom )
		{	
			switch (direction) 
			{
				case "in":  
					if(currentZoom > minZoom )
					{
						//newZoom = currentZoom - 1
						ZoomToLevel(currentZoom - 1);
					}		
					else
					{
						alert('Zoom limit reached.\nCannot zoom in any further.');
					}	
				break;
				
				case "out":
					if(currentZoom < maxZoom )
					{
						//newZoom = currentZoom + 1
						ZoomToLevel(currentZoom + 1);
					}
					else
					{
						alert('Zoom limit reached.\nCannot zoom out any further.');
					}						
				break;
				
				default: 
					//do nothing
			}
		}
		else //if(currentZoom == minZoom || currentZoom == maxZoom)
		{
			alert('Zoom limit reached.\nCannot zoom any further.');
		}
	}
	catch(e)
	{
		handleException(e, 'zoomIn');
	}	
}



/******************************************************************************
 * go to maximum  extent- note that this is not the initial extent
 *****************************************************************************/
function fullExtent()
{
	try
	{	
		//the full extent
		var fullExtentXMin = parseInt(document.getElementById('hvFullExtentXMin').value);
		var fullExtentXMax = parseInt(document.getElementById('hvFullExtentXMax').value);
		var fullExtentYMin = parseInt(document.getElementById('hvFullExtentYMin').value);
		var fullExtentYMax = parseInt(document.getElementById('hvFullExtentYMax').value);

		//the current map envelope... 
		var xMinCurrent = parseInt(document.getElementById('hvMinX').value);
		var xMaxCurrent = parseInt(document.getElementById('hvMaxX').value);
		var yMinCurrent = parseInt(document.getElementById('hvMinY').value);
		var yMaxCurrent = parseInt(document.getElementById('hvMaxY').value);		


			
			
		if(!(	fullExtentXMin == xMinCurrent
			&&  fullExtentXMax == xMaxCurrent
			&&  fullExtentYMin == yMinCurrent
			&&  fullExtentYMax == yMaxCurrent)
		  )
		{	
			var fullExtentX = parseInt((fullExtentXMin + fullExtentXMax) / 2.0);
			var fullExtentY = parseInt((fullExtentYMin + fullExtentYMax) / 2.0);

			var newCenter = new point(fullExtentX, fullExtentY);
			m_mapViewer.recenter(newCenter);
			
			persistExtent();
						
			//set the mapservice to GB
			document.getElementById('hvMapService').value = "GB"			
			ZoomToLevel(m_ExtentWidths.length);	
			

						
			//ZoomToLevel(8);	
		}
	
	}
	catch(e)
	{
		handleException(e, 'fullExtent');
	}

	
}


/******************************************************************************
 * handles the selected place/poscode from the search
 * creates an envelope and zoom to it
 * the list value will contain comma separated values in the format:
 * easting,northing,mapserivice,zoomlevel,shapeID
 * if the result list is for place then there will be a dummy value for shapeID
 *****************************************************************************/
 function zoomToPoint(list)
 {
	try
	{
		if(list.value != 0 && m_mapViewer != null)
		{
		
			document.getElementById('divSearchForm').style.visibility = 'hidden'
			document.getElementById('listSearchResults').style.visibility = 'hidden'
            

			var eastingNorthingService = list.value.split(",");
			var easting = parseInt(eastingNorthingService[0]);
			var northing = parseInt(eastingNorthingService[1]);
			var mapService = eastingNorthingService[2];
			var zLevel = parseInt(eastingNorthingService[3]);
			var shapeID = eastingNorthingService[4];						
				
			var newCenter = new point(easting, northing);
			m_mapViewer.recenter(newCenter);
			
			//if postcode search, set shapeid
			if(shapeID != 0)
			{
				document.getElementById('hvMode').value = 'postcode';
				document.getElementById('hvModeValue').value = shapeID;
			}
			else
			{
				//document.getElementById('hvMode').value = '';
				//document.getElementById('hvModeValue').value = '';			
			}
						
			persistExtent();
			//set the mapservice
			document.getElementById('hvMapService').value = mapService;	
			document.getElementById('hvSearchEasting').value = easting;
			document.getElementById('hvSearchNorthing').value = northing;
			document.getElementById('hvSearchMapService').value = mapService;
			
			resetRefreshMapValue();
			
			//check level=1 for postcode, 3 for places
			ZoomToLevel(zLevel);		
		}
	}
	catch(e)
	{
		handleException(e, 'zoomToPoint');
	}
 }


/******************************************************************************
 * reset value used after searches that result in exact match to 
 * enabled the zoom to directly
 *****************************************************************************/
function resetRefreshMapValue()
{
	document.getElementById('hvRefreshMap').value = "";
}


/******************************************************************************
 * converts the array of map scales to array of extent widths in map units
 *****************************************************************************/
function mapScale2ExtentWidths(MapScaleArray)
{
	try
	{
		var extentWidths = new Array(MapScaleArray.length);				
		var imageWidth = document.getElementById("imgMapCanvas").width;
		//map unit per pixel
		var mpp = 0.0254 * 96.0;
		
		for( i = 0; i < MapScaleArray.length; i++)
		{
			//map widths = scale * mpp * imageWidth/10000
			extentWidths[i] = Math.round(MapScaleArray[i] * mpp * imageWidth / 10000.0);
		}
		return extentWidths;
	}
	catch(e)
	{
		handleException(e, 'mapScale2ExtentWidths');
	}	
}


/******************************************************************************
 * check the extent for pan/zoom actions to make sure that 
 * the new image is inside thed allowable extent.
 * this is dependant on zoom levels.
 *
 * reset the extent of the global map viewer object (m_mapViewer) if necessary
 *
 * only do this if the service is GB, ie no need if it is NI
 *****************************************************************************/
function isInsideExtent(clickedPoint)
{
	var isInside = false;
	var message;

	try
	{
		if(document.getElementById('hvMapService').value == 'GB')
		{
			//original full extent details		
			var fullExtentXMin = parseInt(document.getElementById('hvFullExtentXMin').value);
			var fullExtentXMax = parseInt(document.getElementById('hvFullExtentXMax').value);
			var fullExtentYMin = parseInt(document.getElementById('hvFullExtentYMin').value);
			var fullExtentYMax = parseInt(document.getElementById('hvFullExtentYMax').value);
			//var fullExtent = new rect(fullExtentXMin, fullExtentXMax, fullExtentYMin, fullExtentYMax);
			
			//x and y buffer distances in map units
			var xBuffer;
			var yBuffer;
			var xMinBuffer;
			var xMaxBuffer;
			var yMinBuffer;
			var yMaxBuffer; 
				
			var currentZoom = m_mapViewer.getLevel();
			switch(currentZoom)
			{
				case 8:		//if the current zoom level is fully out ie 8
					xBuffer = ZOOM_8_X_BUFFER;
					yBuffer = ZOOM_8_Y_BUFFER;
					break;
				case 7:		//if the current level is 7
					xBuffer = ZOOM_7_X_BUFFER;
					yBuffer = ZOOM_7_Y_BUFFER;
					break;				
				case 6:		//if the current level is 6
					xBuffer = ZOOM_6_X_BUFFER;
					yBuffer = ZOOM_6_Y_BUFFER;
					break;			
					
				//if the current level is between 1-5
				case 1: 
				case 2: 
				case 3: 
				case 4: 
				case 5:
				//case default:
					xBuffer = ZOOM_DEFAULT_X_BUFFER;
					yBuffer = ZOOM_DEFAULT_Y_BUFFER;				
					break;						
			}
			
			//apply the buffer distances to the envelope for the full extent
			xMinBuffer = fullExtentXMin - xBuffer;	//full envelope - buffer distance x
			xMaxBuffer = fullExtentXMax + xBuffer;	//full envelope + buffer distance x
			yMinBuffer = fullExtentYMin - yBuffer;	//full envelope - buffer distance y
			yMaxBuffer = fullExtentYMax + yBuffer; 	//full envelope + buffer distance y		
		
			//the current map envelope... 
			//var xMinCurrent = parseInt(document.getElementById('hvMinX').value);
			//var xMaxCurrent = parseInt(document.getElementById('hvMaxX').value);
			//var yMinCurrent = parseInt(document.getElementById('hvMinY').value);
			//var yMaxCurrent = parseInt(document.getElementById('hvMaxY').value);		
			//var clickedEnvelope = m_mapViewer.makeRectFromCenter(clickedPoint, xMaxCurrent-xMinCurrent, yMaxCurrent-yMinCurrent);							
			
			var xMinNew = clickedPoint.x - (m_mapViewer.getExtent().getWidth()/2);
			var xMaxNew = clickedPoint.x + (m_mapViewer.getExtent().getWidth()/2);
			var yMinNew = clickedPoint.y - (m_mapViewer.getExtent().getHeight()/2);
			var yMaxNew = clickedPoint.y + (m_mapViewer.getExtent().getHeight()/2);		
						
			//case 0: the new envelope is ok
			if(    xMinNew > xMinBuffer && xMaxNew < xMaxBuffer
				&& yMinNew > yMinBuffer && yMaxNew < yMaxBuffer)
			{
				isInside = true;
			}
			//the user is panning beyond the northern limit
			else if(yMaxNew > yMaxBuffer)
			{	
				message = '   You cannot navigate past the Northern extent of the map.';		
			}	
			//the user is panning beyond the eastern limit		
			else if(xMaxNew > xMaxBuffer)
			{	
				message = '   You cannot navigate past the Eastern extent of the map.';		
			}	
			//the user is panning beyond the southern limit
			else if(yMinNew < yMinBuffer)
			{	
				message = '   You cannot navigate past the Southern extent of the map.';	
			}
			//the user is panning beyond the western limit
			else if(xMinNew < xMinBuffer)
			{	
				message = '   You cannot navigate past the Western extent of the map.';		
			}			

		}
		else
		{
			isInside = true;
		}
		
		if(!isInside)
		{
			m_MaxExtentExeeded = m_MaxExtentExeeded + 1;
			if( m_MaxExtentExeeded >= 2 )
			{
				message = message + '\n   You will now be taken back to the original UK map.';
				alert(message);
				m_MaxExtentExeeded = 0 ;
				fullExtent();
			}
			else
			{
				message = message + '\nYou can use the "Zoom to UK Map" tool to return to the original map.';
				alert(message);
			}
		}
		else
		{
			m_MaxExtentExeeded = 0 ;
		}
			
		return isInside;	
	}
	catch(e)
	{
		handleException(e, 'isInsideExtent');
	}	
	
}


/******************************************************************************
 * enable the wifi check box if the zoom level is the maximum 3
 *
 *****************************************************************************/
function checkWifi()
{
	try
	{
		//var currentZoom = m_mapViewer.getLevel();
		if( m_mapViewer != null && m_mapViewer.getLevel() <= 3 )
		{
			document.getElementById("mobile_wifi").disabled = "";
		}
		else
		{
			document.getElementById("mobile_wifi").disabled = "disabled";
		}			

	}
	catch(e)
	{
		handleException(e, 'checkWifi');
	}	
}

/******************************************************************************
 * recenter the map from user click, avoiding the tool bar
 *****************************************************************************/
function doRecentre(eventX, eventY)
{
	var hitThanks = false;
	
	try
	{
		if (document.getElementById('divThankyou').style.visibility == "hidden" && document.getElementById('divSearchForm').style.visibility == "hidden") {
							
  			if (hitTest('divZoomLevel',eventX, eventY) == false && hitThanks == false) {
	  			
  				var ptUserClick = m_mapViewer.toMapPoint(eventX, eventY);

				//check is done in isInsideExtent() via checkMapService()
				
				
				if (document.getElementById('divEnhancementForm').style.visibility != "visible") {
					if(isInsideExtent(ptUserClick))
					{
						m_mapViewer.recenter(ptUserClick);
				
						//check the map service switching
						checkMapService();  
										
						//Request a new map.
						submit();
						//break;
					}
				}
			}
		}	
	}
	catch(e)
	{
		handleException(e, 'doRecentre'); 
	}			

}

/******************************************************************************
 * test to see whether mouse click occurs over an element (e.g. divZoomLevel)
 *****************************************************************************/
function hitTest(element,eventX, eventY){

	var valid = true;

	try
	{
		//have to avoid the 'divZoomLevel', get the dimension of the divZoomLevel	
		var divZoom = document.getElementById(element);
		var divZoomHeight = divZoom.style.height;
		var divZoomWidth = divZoom.style.width;
		var divZoomLeft = divZoom.style.left;
		var divZoomTop = divZoom.style.top;		
		
		divZoomHeight = parseInt(divZoomHeight.substring(0,divZoomHeight.indexOf("px")));
		divZoomWidth = parseInt(divZoomWidth.substring(0,divZoomWidth.indexOf("px")));
		divZoomLeft = parseInt(divZoomLeft.substring(0,divZoomLeft.indexOf("px")));
		divZoomTop = parseInt(divZoomTop.substring(0,divZoomTop.indexOf("px")));	
		
		//calc the rectangle coords for the zoom div to be avoided
		var divZoomXMin = divZoomLeft;
		var divZoomXMax = divZoomXMin + divZoomWidth;
		var divZoomYMin = divZoomTop;
		var divZoomYMax = divZoomTop + divZoomHeight;
		
	
		
		if(   (eventX <= divZoomXMin) ||
			  (eventY <= divZoomYMin) ||
			  (eventX >  divZoomXMax) ||
			  (eventY >  divZoomYMax)
			)
		{	
		
			valid = false;
				
		}
		else
		{
			valid = true;
			//alert('no panning pan- shoud be zooming here');	
		}
		return valid;	
	}
	catch(e)
	{
		handleException(e, 'doRecentre'); 
	}	
		
}

/******************************************************************************
 * checks if the xoom/pan action needs to switch map service
 * from GB->NI or NI->BG
 *****************************************************************************/
function checkMapService()
{
	try
	{
		//also check if zoom level is the closest 3, then enable the wifi for the mobile map
		//done in submit() instead
		//checkWifi();		
		
		var currentService = document.getElementById('hvMapService').value;

		//map envelope and center point of the user click
		var xMin = m_mapViewer.getExtent().getLeft();
		var xMax = m_mapViewer.getExtent().getRight();
		var yMin = m_mapViewer.getExtent().getBottom();
		var yMax = m_mapViewer.getExtent().getTop();
		
		var centX = Math.round((xMin + xMax) / 2.0);
		var centY = Math.round((yMin + yMax) / 2.0);


		if (currentService == "GB")
		{
			
			//Coordinates below is the extent of NI in British National Grid.
			if(	  (centX > NI_X_MIN) 
				&&(centX < NI_X_MAX) 
				&&(centY > NI_Y_MIN) 
				&&(centY < NI_Y_MAX)
			  )
			{
				if ((xMax - xMin) < 100000)
				{
					document.getElementById('hvMapService').value = "NI";
					//reset the envelope
					var newXmin = xMin + 185000
					var newXmax = xMax + 185000
					var newYmin = yMin - 155000
					var newYmax = yMax - 155000	
					//recreate the map coordinate manager.
					m_mapViewer = new map(m_panel.offsetLeft,
  										m_panel.offsetTop,
										m_imgMapCanvas.width,	
										m_imgMapCanvas.height,
										m_ExtentWidths,
										new rect(newXmin, newYmin, newXmax, newYmax)
										);					
				}
			}
		}
		else //it is NI
		{
			//Coordinates below is the extent of NI in Irish National Grid.
			if  (   (centX < GB_X_MIN) 
				  ||(centX > GB_X_MAX) 
				  ||(centY < GB_Y_MIN) 
				  ||(centY > GB_Y_MAX)
				  ||((xMax - xMin) > 100000)
				)
			{
				document.getElementById('hvMapService').value = "GB";	
				//reset the envelope
				var newXmin = xMin - 185000
				var newXmax = xMax - 185000
				var newYmin = yMin + 155000
				var newYmax = yMax + 155000		
				//recreate the map coordinate manager.				
				m_mapViewer = new map(m_panel.offsetLeft,
  										m_panel.offsetTop,
										m_imgMapCanvas.width,	
										m_imgMapCanvas.height,
										m_ExtentWidths,
										new rect(newXmin, newYmin, newXmax, newYmax)
									);						
					
			}
		}
	}
	catch(e)
	{
		handleException(e, 'checkMapService'); 
	}	
		
}	

/******************************************************************************
* handle the exception gracefully
*****************************************************************************/
function handleException(ex, from)
{
	var message = "An error occured whilst executing your request.";
	message += "\nThis error occured in " + from;
	message += "\nError name: " + ex.name;
	message += "\nError message: " + ex.message; 
	
	alert(message);

}

/******************************************************************************
 * layer switching
 *****************************************************************************/
 function updateLayers(radio)
 {
	document.getElementById('hvLayer').value = radio.value;
	submit();
 } 
 
 /******************************************************************************
 * look up postcode/locality.  validation now done on server side
 *****************************************************************************/
 function validateSearch()
 {
	try
	{
		var searchMode = "postcode";	//default to postcode search
		
		//check the mode of the search
		if (document.getElementById('searchModePlace').checked == true)
			searchMode = "locality";
		
		var txtSearchElement = document.getElementById('searchValue');
		var searchString = txtSearchElement.value.replace( /^\s+/g, "" );// strip leading
		searchString = searchString.replace( /\s+$/g, "" );// strip trailing
		//?more entry validation
			
		if(searchString.length == 0)
		{
			alert('Please enter a valid value to search.');
			txtSearchElement.value = "";
			txtSearchElement.focus();
		}
		else
		{ 
			document.getElementById('hvMode').value = searchMode;
			document.getElementById('hvModeValue').value = searchString;						
			//submit();
		}
	}
	catch(e)
	{
		handleException(e, 'validateSearch');
	}
 
 }

/******************************************************************************
 * enhancement request for poor coverage
 * added a.cox
 *****************************************************************************/
function enhancement(eventX, eventY)
{
	try
	{	
		//alert("enhancement");
		if (hitTest('divZoomLevel',eventX, eventY) == false) {
			var ptUserClick = m_mapViewer.toMapPoint(eventX, eventY);
				
			//added a.cox
			//Round(pi, 2)
			var clickX = ptUserClick.x;
			var clickY = ptUserClick.y;
			
			var x2DecPlace = Math.round(clickX);
			var y2DecPlace = Math.round(clickY);
			
			window.status = "coverage feedback for: " + x2DecPlace + " " + y2DecPlace;
			
			//document.getElementById('labelEasting').innerHTML = x2DecPlace;
			//document.getElementById('labelNorthing').innerHTML = y2DecPlace;
			
			document.getElementById('hvEastingValue').value = x2DecPlace;
			document.getElementById('hvNorthingValue').value = y2DecPlace;
			
			// need to switch off all map interaction functionality
			
			document.getElementById('divEnhancementForm').style.visibility = 'visible';
			document.getElementById('divTransbox').style.visibility = 'visible';

			disableIt(document.getElementById('listGazetteerType'));
			disableElement('radVodaCustomer_1','textMobileNumber');
			if (document.getElementById('listSearchResults') != undefined) {
				disableIt(document.getElementById('listSearchResults'));
			}
			
			//Set the type of feedback depending on current map layer
			/*
			if (document.getElementById('handsetMap').checked == true){
				document.getElementById('radServType_0').checked = true;
			} else {
				document.getElementById('radServType_1').checked = true;
			}
			*/	
			
		}
		//end added a.cox
	}
	catch(e)
	{
		handleException(e, 'enhancement');
		alert(e);
	}	
}

/******************************************************************************
 * cancel enhancement request for poor coverage
 * added a.cox
 *****************************************************************************/

function cancelEnhancement() {

	// need to switch back on all map interaction functionality
	
	document.getElementById('divThankyou').style.visibility = "hidden";
	document.getElementById('divEnhancementForm').style.visibility = "hidden";
	document.getElementById('divTransbox').style.visibility = "hidden";

	disableIt(document.getElementById('listGazetteerType'));
	if (document.getElementById('listSearchResults') != undefined) {
		disableIt(document.getElementById('listSearchResults'));
	}

	
	document.getElementById('imgMapCanvas').alt = "Click to centre the map";
}

/******************************************************************************
 * clear gazetteer search box when changing search type
 * added c.harris
 *****************************************************************************/

function clearText(element) {
		document.getElementById(element).value = "";
	  
	}
	
function setExampleMessage() {
	if (document.getElementById('lblSearchMsg') != undefined){
		var lblSearchMsg = "";
			switch(document.getElementById('listGazetteerType').value) {
				case "place":
					lblSearchMsg = "(e.g. Newbury)";
					break
				case "postcode":
					lblSearchMsg = "(e.g. RG14 2FN)";
					break
				case "eastnorth_gb":
					lblSearchMsg = "(e.g. 447400 / 168400)";
					break
				case "eastnorth_ni":
					lblSearchMsg = "(e.g. 334456 / 374411)";
					break
				case "gridref_gb":
					lblSearchMsg = "(e.g. NT251735)";
					break
				case "gridref_ni":
					lblSearchMsg = "(e.g. J310380)";
					break
				case "mwayjunction":
					lblSearchMsg = "(e.g. M4 J16)";
					break
			}
		document.getElementById('lblSearchMsg').innerText = lblSearchMsg;
		document.getElementById('lblSearchMsg').innerHTML = lblSearchMsg;
	}
}
	
/******************************************************************************
 * get WLAN / WI_FI features for current extent
 * added a.cox
 *****************************************************************************/
function identify(layer,eventX,eventY) {
	
	try
	{
		var results = false;
		
		//Check for presence of results datagrid
		if (document.getElementById('dgIdentifyResults') != undefined){
			if (document.getElementById('dgIdentifyResults').style.visibility == "visible"){
				if (hitTest('dgIdentifyResults',eventX, eventY) == true) {
					results = true;
				}
			}
		}
		
	if ((hitTest('divZoomLevel',eventX, eventY) == false) && (results == false)){	
		
		var ptUserClick = m_mapViewer.toMapPoint(eventX, eventY);
			
		//added a.cox
		//Round(pi, 2)
		var clickX = ptUserClick.x;
		var clickY = ptUserClick.y;
		
		var x2DecPlace = Math.round(clickX);
		var y2DecPlace = Math.round(clickY);
		
		window.status = "identify " + layer + " at: " + x2DecPlace + " " + y2DecPlace;
		
		document.getElementById('hvEastingValue').value = x2DecPlace;
		document.getElementById('hvNorthingValue').value = y2DecPlace;
		
		document.getElementById('hvToolMode').value = "4";
		//trigger the refresh of the external page
		document.getElementById('btnRefresh').click();
	}
		

	}
	catch(e)
	{
		handleException(e, layer);
	}
}
 
 /******************************************************************************
 * validate phone number input 
 * added c.harris
 *****************************************************************************/
 function isNumber(element) {
	
	var valid = false;
	var message = "";
	
	var docElement = document.getElementById(element).value;
	if (docElement != undefined){
		docElement = docElement.replace(/ /g,"");
	}
	
	if (document.getElementById('radVodaCustomer_1').checked == true){
		valid = true;
	} else {
		
		if (docElement.length > 0){
			if (docElement.length < 12) {			
							
				var reg = new RegExp("[0][7][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
				if (reg.test(docElement)){
					valid = true;
				}else{
					message = docElement + " is not a valid number";
					valid = false;
				}
			} else {
				message = docElement + " is not a valid number";
				valid = false;
			}
		} else {
			valid = true;	
		}
	}
	
		document.getElementById('lblEnhancementMsg').innerText = message;
		document.getElementById('lblEnhancementMsg').innerHTML = message;
	
	
	return valid;
 }
 
 /******************************************************************************
 * disable select form element  
 * added c.harris
 *****************************************************************************/
 function disableIt(obj)
{
	obj.disabled = !(obj.disabled);
	var z = (obj.disabled) ? 'disabled' : 'enabled';
}

function extracheck(obj)
{
	return !obj.disabled;
}
 /******************************************************************************
 * disable text box depending radio button selection
 * added c.harris
 *****************************************************************************/
function disableElement(element,target){
	
	var docElement = document.getElementById(element);
	
	if (docElement.checked == true){
		document.getElementById(target).disabled=true;
	}else{
		document.getElementById(target).disabled=false;
	}
	
}

 /******************************************************************************
 * show Dialog Timer
 * added c.harris
 *****************************************************************************/
 function showDialog(element) {
 
	var d=document.getElementById(element)
	d.style.visibility="visible";
	document.getElementById('divTransbox').style.visibility = "visible";
	
	
	disableIt(document.getElementById('listGazetteerType'));
	
	if (document.getElementById('listSearchResults') != undefined) {
		disableIt(document.getElementById('listSearchResults'));
	}
	//setTimeout(function() {document.getElementById(element).style.visibility="hidden";} , timerval);
 
 }
 
 /******************************************************************************
 * show Thankyou alert
 * added c.harris
 *****************************************************************************/
 function showThanks(){
	alert("Thank You. Your request has been logged.");
 }
 //-->