 //
//	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
//	-------
//
//
//=============================================================================================
//
//
//                           CHK javascript modifications v1.1
//
//					October 2005
//
// Latest Mods:
//
// 1. Accepts 5 figure Coordinates.
// 2. Key Images for Policy Text.
// 3. blankPolicy() called to clear Policies on refresh or tool select. Requires CHK_7.jar
// 4. No link supplied on Policy Text when displayName prefixed by a '*'
//
//
//
//
//
//
//
//=============================================================================================
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[0] == "Web Note ")
		{
		strURL	+=		"<TR><TD VALIGH=TOP><LI><FONT><A CLASS='popupTextX'>Please note that policies 1.1 - 1.9, 1.11 and 5.1 are no longer saved.</A><BR><A CLASS='popupText' HREF='http://www.cartoplus.co.uk/ealing/text/dclg_2007appendix.htm' TARGET=_Blank>See Appendix on DCLG Direction 2007</A></FONT></LI></TD></TR>";
		}else{
		
		//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, 550, FIXY, 386, PADX, 10, 10, PADY, 10, 10  )
}
//=============================================================================================
function populateGeocodingOption ()
{
	if ( strSearchString.value == "" )

		alert ( "No Entry in text string ");
	else
	{
		strResults = ChkApplet.findMatchingGazName ( strSearchString.value )+"";
		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;
}

// Mini Map Global Variables


var giSC = 110000;				// Opening Scale
var mMI = 'MiniMap.gif';	 		// Name for Proposals Mini Map
var gmX = 509617;				// Left   easting
var gmY = 174999;				// Bottom northing
var gmX1 = 522017;				// Right  easting
var gmY1 = 187402;				// Top    northing
var mmPX = 553;					// Top left X coordinate (in Pixels) of mini map on page [550ish]
var mmPY = 9;					// Top left Y ccordinate [10ish]
var mmHt = 100;					// Height of image in pixels
var mmWd = 100;					// width of image in pixels
var tabMax = 2;					// Number of tabs
var tabName = 1;				// Tab that is selected when the page starts
var bxColor = "red"				// Color of miniMap Box
var i =1;					// arbitary. Only uses if zooming in using logical scale (keyboard zoom)
var currentTab = tabName			//
var rset =1;



//=============================================================================================
// this function called when applet is repainted.
function winUpdated()
{
	miniMap();
	miniMap();
	miniMap();
}

//=============================================================================================
function miniMap ()
{
	gtInfo = document.ChkApplet.getScale();
	gtInfo = gtInfo + "";
		

	var ugmX = parseInt(gtInfo.substring(0,gtInfo.indexOf(":")-2))
	var ugmY = parseInt(gtInfo.substring(gtInfo.indexOf(":")+1,gtInfo.indexOf(":",12)-2))


	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 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){
	mBxWd = (mmX+mBxWd)-mmPX
	mmX=mmPX
	Box.style.borderLeftWidth = "0"}

	mBxWd = mBxWd -2
	mBxHt = mBxHt -2
	
	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 = Proposals Map : 2 = Inset Maps
function autabChange (posName)
{
switch (posName.value)
	{
	case "EalingBorough":;tabChange("1");return true;break;
	case "Acton":;tabChange("2");return true;break;
	case "Ealing":;tabChange("2");return true;break;
	case "Greenford":;tabChange("2");return true;break;
	case "Hanwell":;tabChange("2");return true;break;
	case "Southall":;tabChange("2");return true;break;
	case "Northolt":;tabChange("1");return true;break;
	case "Perivale":;tabChange("1");return true;break;
	case "DormersWells":;tabChange("1");return true;break;
	case "BedfordPark":;tabChange("1");return true;break;
	case "NorthActon":;tabChange("1");return true;break;
	case "NorwoodGreen":;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();
	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))}
	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
}

//=============================================================================================

function myAlert(aString)
{
Alert (aString);
}


function blankPolicy()
{
return overlib("", TIMEOUT, 240000, WIDTH, 200, HEIGHT, 150, FIXX, 550, FIXY, 420, PADX, 10, 10, PADY, 10, 10  )
}











