 //
//	Copyright 2001 Kingswood MapMechanics
//	Creation date:	27th July 2001
//	FileName:		originally chk.js
//	Written By:		Dannie Bye(Kingswood MapMechanics)
//	Customer:		Cook Hammond & Kell
//
//	Purpose:		Centralised JavaScript routines, opens windows, and parses values back and
//					forth between the browser
//	History
//	-------
//
//
//=============================================================================================

//=============================================================================================
function changeTab ( objSelection )
{
	ChkApplet.setTab (objSelection);

}

//=============================================================================================
//called when user selects an item from the selection box
function updatePosition ( objSelection ){
	ChkApplet.setSavedPosition ( objSelection.value );
}
//=============================================================================================
//called when user selects an item from the selection box
function updatePositionString ( objSelection ){
	ChkApplet.setSavedPosition ( objSelection);
}
//=============================================================================================
function updateHashPosition(){
	document.ChkApplet.openHashPositionsDialog ();
}

//=============================================================================================
// Opens "geocoder.html" into a floating window
function openGazeteer()
{
	window_handle = window.open("geoCoder.html","","width=660,height=220,directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no");
}
//=============================================================================================
// Opens ASP and sends delimited value of HTML page names
function displayObjectsUnderClick ( strArrayOfObjects )
{

	var	strURL	="";
//	alert ( "Here" + strArrayOfObjects );
	arrArrayOfResults	=	strArrayOfObjects.split (";");
	strURL	+=	"<TABLE>";
	for (intCount=0;intCount < (arrArrayOfResults.length - 1);intCount++)
	{
		arrTmpArray	=	arrArrayOfResults[intCount].split ("-");
		//if (arrTmpArray.length = 1)
			strURL	+=	"<TR><TD VALIGH=TOP><LI><FONT CLASS=\'popupText\'><A HREF=\'" + arrTmpArray[1] + "\' TARGET=_Blank>" + arrTmpArray[0] + "</A></FONT></LI></TD></TR>";

	}
	strURL	+=	"</TABLE>";
	//alert (strURL);
	return overlib(strURL, TIMEOUT, 240000, WIDTH, 200, HEIGHT, 150, FIXX, 770, FIXY, 461, PADX, 10, 10, PADY, 10, 10  )
}
//=============================================================================================
function populateGeocodingOption ()
{
	if ( strSearchString.value == "" )
		alert ( "No text has been entered");
	else
	{
		strResults = ChkApplet.findMatchingGazName ( strSearchString.value );
		strResults = strResults + "";
		//alert ( strResults );
		var myArray = strResults.split(';');
		optSelect.length = 0; // clear the previous selections (make size of combo box 0)
		for ( intOptionNumber=0;intOptionNumber < ( myArray.length - 1);intOptionNumber++ )
		{
			optOption = new Option();
			
			
			optOption.text = myArray[intOptionNumber].substring(0,myArray[intOptionNumber].indexOf('(')-1);
			optOption.value = myArray[intOptionNumber];
			optSelect.add ( optOption, 1 );
			}
	}
		if (( myArray.length - 1)==1){gotoPos( myArray[0]);}


}

//=============================================================================================
function gotoPos( strSelectedOption )
{
if(strSelectedOption=="_____________"||"")
{
return false;
}
else
{

//Line below for getPostcodePolicy()
//MM_swapImage('reset','','../images/reset.gif','panmap','','../images/panmap.gif','zoomin','','../images/zoomin.gif','zoomout','','../images/zoomout.gif','policies','','../images/policy_.gif',1);MM_showHideLayers('Layer1','','hide');

pos = (strSelectedOption.substring(0,(strSelectedOption.lastIndexOf('(')-1)))
tab = (strSelectedOption.substring(strSelectedOption.indexOf('(')+1,strSelectedOption.indexOf(')')));

ChkApplet.setGazPos ( pos );
tabChange (tab);



//getPostcodePolicy();// add double slash at begining to switch OFF


}
}
//=============================================================================================
function changeScale ( strCurrentScale )
{
	//scale.value = strCurrentScale;
}

//=============================================================================================

//                           CHK javascript modifications v1.0

//=============================================================================================
// Mini Map Global Variables


var giSC = 250000;				// Opening Scale
var gmX = 348535;				// Bottom left easting
var gmY = 298332;				// Bottom left northing
var gmX1 = 383769;				// Top Right easting
var gmY1 = 327473;				// Top right northing
mmPX = 726;						// Top left X coordinate (in Pixels) of mini map on page (use Dreawmeaver - turn on rulers)
mmPY = 26;						// Top left Y ccordinate
mmHt = 61;						// Height of image in pixels
mmWd = 78;						// width of image in pixels
tabMax = 2;						// Number of tabs
tabName = 2;					// Tab that is selected when the page starts
bxColor = "#990000"				// Color of miniMap Box
i =1;							// arbitary. Unly uses if zooming in using logical scale (keyboard zoom)
currentTab = tabName			//
var rset =1;

//=============================================================================================

// this function called when applet is repainted.
function winUpdated()
{
	miniMap();
}

//=============================================================================================
function miniMap ()
{
	gtInfo = document.ChkApplet.getScale();
	gtInfo = gtInfo +"";
	var ugmX = parseInt(gtInfo.substr(0,6));
	var ugmY = parseInt(gtInfo.substr(9,6));
	var usSC = parseInt(gtInfo.substr(gtInfo.lastIndexOf('/')+1).replace (/ /g,''));
	if (isNaN(ugmX)==1) {ugmX=((gmX+(gmX1-gmX)/2));ugmY=(gmY+((gmY1-gmY)/2));}
	//alert( ugmX+"  "+ugmY+"  "+usSC)
	var mBxSz = Math.round(mmWd*(usSC / giSC));
	var mapScale = ((mmWd/28.346) / (gmX1 - gmX))
	var mmX = ((((((ugmX-gmX) * mapScale)*28.346))+mmPX)-mBxSz/2)
	var mmY = (((mmHt-(((ugmY-gmY) * mapScale)*28.346))+mmPY)-mBxSz/2)
	var myBox = document.all.mmBox.style;
	Box.style.borderWidth ="2"
	if (rset==1) {Box.style.borderWidth ="0"}
	Box.style.borderColor = bxColor
   	var mBxWd = mBxSz
	var mBxHt = mBxSz
	
	if (mmY < (mmPY)){
	mBxHt = mmY+mBxSz-mmPY
	mmY=mmPY
	Box.style.borderTopWidth = "0"	}
	
	if (((mmY+mBxHt) > (mmPY+mmHt))){
	mBxHt = (mmPY+mmHt)-mmY
	Box.style.borderBottomWidth = "0"}
	
	if (((mmX+mBxWd) > (mmPX+mmWd))){
	mBxWd =(mmPX+mmWd) - mmX
	Box.style.borderRightWidth = "0"}
	
	if (mmX < mmPX+2){
	mBxWd = (mmX+mBxWd)-mmPX
	mmX=mmPX
	Box.style.borderLeftWidth = "0"}
	
	mBxWd = mBxWd -2
	mBxHt = mBxHt -2
	
	if ((mmX+mBxWd<mmPX)||(mmX>mmPX+mmWd)||(mmY+mBxHt<mmPY)||(mmY>mmPY+mmHt)){Box.style.borderWidth="0"}
	myBox.pixelLeft = mmX
	myBox.pixelTop = mmY
	document.images.Box.width = mBxWd
	document.images.Box.height = mBxHt
 	myBox.visibility = 'visible'
	controlToPage();
	rset=0;
	return;
}
//=============================================================================================
//Changes tab depending on what area is selected
//
// 1 = Rural : 2 = Town
function autabChange (posName)
{

switch (posName.value)
	{
	case "Admaston":;tabChange("2");return true;break;
	case "Aqueduct":;tabChange("2");return true;break;
	case "Arleston":;tabChange("2");return true;break;
	case "Brockton":;tabChange("2");return true;break;
	case "Brookside":;tabChange("2");return true;break;
	case "Broseley":;tabChange("2");return true;break;
	case "Broseley Wood":;tabChange("2");return true;break;
	case "Buildwas":;tabChange("2");return true;break;
	case "Coalbrookdale":;tabChange("2");return true;break;
	case "Coalmoor":;tabChange("2");return true;break;
	case "Coalport":;tabChange("2");return true;break;
	case "Dawley":;tabChange("2");return true;break;
	case "Dawley Bank":;tabChange("2");return true;break;
	case "Donnington":;tabChange("2");return true;break;
	case "Donnington Wood":;tabChange("2");return true;break;
	case "Doseley":;tabChange("2");return true;break;
	case "Dothill":;tabChange("2");return true;break;
	case "Epsom":;tabChange("2");return true;break;
	case "Hadley Castle":;tabChange("2");return true;break;
	case "Halesfield":;tabChange("2");return true;break;
	case "Highlands":;tabChange("2");return true;break;
	case "Hinkshay":;tabChange("2");return true;break;
	case "Hollinswood":;tabChange("2");return true;break;
	case "Horsehay":;tabChange("2");return true;break;
	case "Hortonwood":;tabChange("2");return true;break;
	case "Huntington":;tabChange("2");return true;break;
	case "Ironbridge":;tabChange("2");return true;break;
	case "Jackfield":;tabChange("2");return true;break;
	case "Ketley":;tabChange("2");return true;break;
	case "Ketley Bank":;tabChange("2");return true;break;
	case "Lawley":;tabChange("2");return true;break;
	case "Leegomery":;tabChange("2");return true;break;
	case "Little Dawley":;tabChange("2");return true;break;
	case "Little Wenlock":;tabChange("2");return true;break;
	case "Madeley":;tabChange("2");return true;break;
	case "Malinslee":;tabChange("2");return true;break;
	case "Muxton":;tabChange("2");return true;break;
	case "New Works":;tabChange("2");return true;break;
	case "Newdale":;tabChange("2");return true;break;
	case "Oakengates":;tabChange("2");return true;break;
	case "Old Park":;tabChange("2");return true;break;
	case "Overdale":;tabChange("2");return true;break;
	case "Priorslee":;tabChange("2");return true;break;
	case "Randlay":;tabChange("2");return true;break;
	case "Red Lake":;tabChange("2");return true;break;
	case "Shawbirch":;tabChange("2");return true;break;
	case "Snedshill":;tabChange("2");return true;break;
	case "St. Georges":;tabChange("2");return true;break;
	case "Stafford Park":;tabChange("2");return true;break;
	case "Stirchley":;tabChange("2");return true;break;
	case "Sutton Hill":;tabChange("2");return true;break;
	case "Telford Town Centre":;tabChange("2");return true;break;
	case "The Rock":;tabChange("2");return true;break;
	case "Trench":;tabChange("2");return true;break;
	case "Trench Lock":;tabChange("2");return true;break;
	case "Tweedale":;tabChange("2");return true;break;
	case "Wellington":;tabChange("2");return true;break;
	case "Wombridge":;tabChange("2");return true;break;
	case "Woodside":;tabChange("2");return true;break;
	case "Telford Central Railway Station":;tabChange("2");return true;break;
	case "Princess Royal Hospital":;tabChange("2");return true;break;
	case "Ellerdine Heath":;tabChange("1");return true;break;
	case "Ellerdine":;tabChange("1");return true;break;
	case "Walton":;tabChange("1");return true;break;
	case "Rowton":;tabChange("1");return true;break;
	case "Cold Hatton":;tabChange("1");return true;break;
	case "Great Bolas":;tabChange("1");return true;break;
	case "Meeson":;tabChange("1");return true;break;
	case "Tibberton":;tabChange("1");return true;break;
	case "Cherrington":;tabChange("1");return true;break;
	case "Howle":;tabChange("1");return true;break;
	case "Sambrook":;tabChange("1");return true;break;
	case "Pickstock":;tabChange("1");return true;break;
	case "Chetwynd Park":;tabChange("1");return true;break;
	case "Edgmond":;tabChange("1");return true;break;
	case "Adeney":;tabChange("1");return true;break;
	case "Kynnersley":;tabChange("1");return true;break;
	case "Horton":;tabChange("1");return true;break;
	case "Preston upon the Weald Moors":;tabChange("1");return true;break;
	case "Waters Upton":;tabChange("1");return true;break;
	case "Wappenshall":;tabChange("1");return true;break;
	case "Lilleshall":;tabChange("1");return true;break;
	case "Lilleshall Sports Centre":;tabChange("1");return true;break;
	case "Chetwynd Aston":;tabChange("1");return true;break;
	case "Stockton":;tabChange("1");return true;break;
	case "Lynn":;tabChange("1");return true;break;
	case "Pave Lane":;tabChange("1");return true;break;
	case "Church Aston":;tabChange("1");return true;break;
	case "Crudgington":;tabChange("1");return true;break;
	case "Poynton":;tabChange("1");return true;break;
	case "Roden":;tabChange("1");return true;break;
	case "High Ercall":;tabChange("1");return true;break;
	case "Rodington":;tabChange("1");return true;break;
	case "Longdon on Tern":;tabChange("1");return true;break;
	case "Allscott":;tabChange("1");return true;break;
	case "Charlton":;tabChange("1");return true;break;
	case "Wrockwardine":;tabChange("1");return true;break;
	}
}
//=============================================================================================
//Changes the tab image
// this function is called from selecticting the tab on the web page or from the function 'autabChange'
function tabChange(tabNo)
{		
	if (tabNo != currentTab){changeTab(tabNo);document.images["tab1"].src = "images/tab"+tabNo+".gif"}
	currentTab = tabNo;

}
//=============================================================================================
//if accessed from link in written statement, this instructs applet to goto identified area in link.
function wStatement()
{
	Box.style.borderWidth = "0"
	if (document.location.search.substring(1)!=""){
	var myArray = (document.location.search.substring(1)).split('&');
	updatePositionString(myArray[0]);
	tabChange(myArray[1]);miniMap();Box.style.borderWidth = "2";}
	rset = 1;
	
	
}




//=============================================================================================
// pass control to html page, away from applet.
function controlToPage()
{
	document.getElementById('controlToPage').focus();
	return true
}

//=============================================================================================
// Pan & Zoom keys: arrow keys - pan   shift - zoom in  ctrl - zoom out
// - decrease tab   + increase tab  (no shift)


//NOTE: ONLY USES LOGICAL SCALE
function keyPressed()
{

	var a = event.keyCode;
	if (a > 36 || a <41){keyAction(a);}
	return;
}
//=============================================================================================

// Not used!!!!
function setCookie ()
{
	var name="Job Name";
	var value="Area";
	var days=1

	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";



	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) alert (c.substring(nameEQ.length,c.length));
	}
	return null;
}
//=============================================================================================
// Not used!!!!
function myAlert()
	{
	alert("!");
	}
//=============================================================================================
//NOT USED
//removes illegal characters from the Postcode TextBox
function validate()
	{
	var badChr = /[^a-z0-9]/gi;
	if(strSearchString.value.match(badChr)){
	strSearchString.value=strSearchString.value.replace(badChr,'');}
	keyPressed();
	}
//=============================================================================================
//after a postode search this returns the policy information for that postcode
function getPostcodePolicy()
	{	

	MM_swapImage('reset','','../images/reset.gif','panmap','','../images/panmap.gif','zoomin','','../images/zoomin.gif','zoomout','','../images/zoomout.gif','policies','','../images/policy_.gif',1);MM_showHideLayers('Layer1','','hide')
	document.ChkApplet.getPostcodePolicy ();
	}
//=============================================================================================

function keyAction(a)
{
	gtInfo = document.ChkApplet.getScale();
	var ugmX = parseInt(gtInfo.substr(0,6));
	var ugmY = parseInt(gtInfo.substr(9,6));
	var usSC = parseInt(gtInfo.substr(gtInfo.lastIndexOf('/')+1).replace (/ /g,''));
	if (isNaN(ugmX)==1) {ugmX=((gmX+(gmX1-gmX)/2));ugmY=(gmY+((gmY1-gmY)/2))}
	var newUgmY = ugmY
	var newUgmX = ugmX
//Pan
	if (a == 38&&!event.shiftKey) {newUgmY = newUgmY+(usSC*(460/28.346))/200;document.ChkApplet.panMap(newUgmX, newUgmY, usSC)};
	if (a == 40&&!event.shiftKey) {newUgmY = newUgmY-(usSC*(460/28.346))/200;document.ChkApplet.panMap(newUgmX, newUgmY, usSC)};
	if (a == 39&&!event.shiftKey) {newUgmX = newUgmX+(usSC*(460/28.346))/200;document.ChkApplet.panMap(newUgmX, newUgmY, usSC)};
	if (a == 37&&!event.shiftKey) {newUgmX = newUgmX-(usSC*(460/28.346))/200;document.ChkApplet.panMap(newUgmX, newUgmY, usSC)};
//Zoom	
	if (a == 38&&event.shiftKey) {document.ChkApplet.zoomInLogical(newUgmX, newUgmY,i)};
	if (a == 40&&event.shiftKey) {document.ChkApplet.zoomOutLogical(newUgmX, newUgmY,i)};
//Tabs	
	if (a ==37&&event.shiftKey && tabName > 1) {tabName--;tabChange(tabName,i)};
	if (a ==39&&event.shiftKey && tabName < tabMax) {tabName++;tabChange(tabName)};

	miniMap();
	return
}













