//***************************************************************************
//*	Script name   : 	ArcIMSparam.js for Public                           *
//*	Purpose       : 	setup parameters to calling page                    *
//*	Modify History: 	             		                                *
//*                                                                         *
//* DATE      PROGRAMMER  DESCRIPTION                                       *
//* ----      ----------  ------------------------------------------------- *
//* 31-Mar-04  C. Lam     Add SAN_ layer in Sanitary Sewer group            *
//*                       before the Sanitary main line                     *
//* 05-Mar-04  C. Lam     Remove RCMP Block Watch and BNE layers and move   *
//*                       Right of way layers (4) after Drainage            *
//* 21-Apr-04  C. Lam     Add 4 layers: Property link, Undeveloped Streets, *
//*                       Trails and Major SubDivision and change color for *
//*                       sanitrary catchment, marsh and font color for     *
//*                       community safety (Fire, Ambulance and Hospital    *
//* 
//* 12-Jul-04  C. Lam     Add the 3 layers for Real Eatate after Right Of   *
//*                       Way layers                                        *
//* 07-Dec-04  C. Lam     Add the Park names                                *
//* 09-Feb-05  C. Lam     Added SAN_LIFT_STATIONS, preliminary_sewer_line   *
//*                       and preliminary_sewer_features                    *
//* 14-Mar-05  C. Lam     Included zone text in zoning selection (#49974)   *
//*                                                                       
//* 23-Jun-05  Y. Markova Airport Noise Layer replaces with 2 new layers -  *
//* 			  ANSD and Airport Contours
//* 21-Feb-06  Y. Markova 3 layers deleted:                                 *
//* 			  Preliminary Sewer Features & Lines; Voting Disctr *
//*                       
//* 17-Aug-06  Y. Markova RAR 5m and RAR 15m layers added
//*
//* 01-May-07  Y. Markova Remove Real Estate Services
//*
//* 01-Dec-07  Y. Markova Active / Inactive Dev Apps layers added
//* 01-Dec-07  Y. Markova 2007 / 2005 / 2002 Air Photos option added
//*
//* 04-Dec-09  Y. Markova FCL layers added
//*
//* 14-Jan_10  Y. Markova 2 new Heritage layers added             *
//*
//* 27-Apr_10  Y. Markova added Air Photo 2009                    *
//*
//***********************************************************************
// ArcIMSparam.js
// javascript file with parameters specific to calling page

//***************************************************************************
//*			parameters File for HTML Template		                        *
//***************************************************************************
// get machine name
var hostName = document.location.host;
// make URL for getting mapservice catalog
var catURL = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?ServiceName=catalog";
// make prefix for URL
var serverURL  = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?ServiceName=";


//*********************************************************************
//*			parameters set by Designer			                     *
//*********************************************************************
var imsURL = 'http://map.city.richmond.bc.ca/servlet/com.esri.esrimap.Esrimap?ServiceName=GISpublic';
var imsOVURL =  'http://map.city.richmond.bc.ca/servlet/com.esri.esrimap.Esrimap?ServiceName=OVpublic';
//var imsURL = 'http://hal5002086/servlet/com.esri.esrimap.Esrimap?ServiceName=GISpublic';
//var imsOVURL =  'http://hal5002086/servlet/com.esri.esrimap.Esrimap?ServiceName=GISpublic';
var imsQueryURL = '';
var imsGeocodeURL = '';
// export with FME software
var useFMEExport=true;


// variables for setting component colors

var mapBackColor = '225,225,225';
var ovBoxColor = '#0000ff';
var ovBoxSize = 3;
var zoomBoxColor = '#0000ff';

// variables for using individual components

var hasOVMap = true;
var hasTOC = true;
var useModeFrame = true;

//initial map extent
var startLeft = 483279.5912;
var startRight = 503345.0753;
var startTop = 5452765.481;
var startBottom = 5436407.4868;
//maximum map extent
var limitLeft = 483279.5912;
var limitRight = 503345.0753;
var limitTop = 5452765.481;
var limitBottom = 5436407.4868;

var usePan=true;
var usePanNorth=false;
var usePanWest=false;
var usePanEast=false;
var usePanSouth=false;
var useZoomIn=true;
var useZoomOut=true;
var useFullExtent=true;
var useZoomActive=false;
var useZoomLast=true;
var useIdentify=false;
var useMeasure=true;
var useSetUnits=true;
var useSelect=true;
var useQuery=true;
var useFind=true;
var useGeocode=false;
var useStoredQuery=true;
var useClearSelect=true;
var usePrint=true;
var useGeoNetwork=false;
var useBuffer=true;
var useExtract=true;

// user tools variables
var useLegend = true;
var useLayers = true;
var useServices = true;

var MapUnits = "Meters";
var ScaleBarUnits = "Meters";

var maxBufferDistance = 0.0;

// print parameters
var printParam1 = 1;
var printParam2 = 1;

// End of Designer set parameters


var useHyperLink=false;
var useHyperLinkAny=false;
var useIdentifyAll=true;
var useBufferShape=false; 
var hasToolBarOnLayer=false;
	// useHyperLink takes priority - both cannot be true
if (useHyperLink) useHyperLinkAny=false;
	// useIdentify takes priority - both cannot be true
if (useIdentify) useIdentifyAll=false;
	// allow debugging
var setDebug=true;


/**************************************
* Basic Map parameters
**************************************/

// variables for map pixel offset from upper left corner of frame
	// horizontal offset
var hspc = 0;
	// vertical offset
var vspc = 0;

//panning factor for arrow buttons
var panFactor = 85/100;
//zoom factors for v.3
var zoomFactor = 2

// margin factor for zooming in on selected lines and polygons - based on feature width and height. . . margin will be selectMargin * width or height
var selectMargin = 25/100;
// margin margin factor for zooming in on selected points - based on full extent. . . margin will be selectPointMargin * fullWidth or fullHeight
var selectPointMargin = 25/1000

// show the scale factor
var showScalePercent=true;
// display coords in status line
var showXYs=true;

// Have ArcXML responses URL encoded? Will not work with multi-byte characters
var doURLencode = false;

//variables for MapDrawing
	// North Arrow
var drawNorthArrow = true;
var NorthArrowType = "7";
var NorthArrowSize = "15";
var NorthArrowCoords = "20 30";
var NorthArrowAngle = "0";
	// Scale Bar
var drawScaleBar = true;
	// MapUnits=DEGREES,FEET,METERS
	// can MapUnits be changed by user?
var setMapUnits=false;
	// ScaleBarUnits=KILOMETERS,METERS,MILES,FEET
var ScaleBarBackground = "TRUE";
var ScaleBarBackColor = "0,0,0";
var ScaleBarFontColor = "255,255,255";
var ScaleBarColor = "192,192,192";
var ScaleBarFont = "Arial";
var ScaleBarStyle = "Bold";
var ScaleBarRound = "1";
var ScaleBarSize = "14";
var ScaleBarWidth = "7";
var ScaleBarPrecision = 2;
var numDecimals = ScaleBarPrecision;
	// Copyright blurb
var drawCopyright = true;
var CopyrightFont = "Arial";
var CopyrightStyle = "Bold";
var CopyrightSize = "8";
var CopyrightCoords = "35 4";
var CopyrightColor = "0,0,0";
var CopyrightBackground = "False";
var CopyrightBGColor = "255,255,255";
var CopyrightGlow = "True";
var CopyrightGlowColor = "255,255,255";
var CopyrightText = "Copyright © City of Richmond, 2003. Data Accuracy and Completeness Not Guaranteed.";
	// Mode on Map
var drawModeOnMap = false;
var modeRefreshMap = false;
var modeMapColor = "255,255,255";
var modeMapGlow = "128,0,255";

var ovImageVar;
var ovBorderWidth = 2;
var ovExtentBoxSize = 2;

// map image background transparent? - requires gif or png8 types
var mapTransparent=false;

// setup test for Nav 4.0
var isIE = false;
var isNav = (navigator.appName.indexOf("Netscape")>=0);
var isNav4 = false;
var isIE4 = false;
var is5up = false;
//alert(navigator.appVersion);
if (isNav) {
	
	if (parseFloat(navigator.appVersion)<5) {
		isNav4=true;
		//alert("Netscape 4.x or older");
	} else {
		is5up = true;
	}
} else {
	isIE4=true;
	isIE=true;
	if (navigator.appVersion.indexOf("MSIE 5")>0) {
		isIE4 = false;
		is5up = true;
		//alert("IE5");
	}
}	
	
//********************************************************************************
//*	Changes of layers(add, delete or change position) may impact the followings: *
//*	1. the listed and non-listed layers                                          *
//* 2. Positions of layers listed in the Select Drop-down list                   *
//* 4. Positions of layers if changes affect layers with attributes              *
//* 5. Positions of layers if changes requires hyperlink functinoality           *
//* 6. Table Headers                                                             *
//* 7. Heading and corresponding layers (from and to) positions of Customed      *
//*    Services (button) selection.                                              *
//* 8. Individual lines with inline comment "** --> CHG"                         *
//********************************************************************************

// variables for ovmap offset
var ovHspc = 0;
var ovVspc = 0;
var numberOfLayer = 126;
var airPhotoPos = 117;  //* Aerial Photography
var resAttachPos = 112;  // Residential Attached layer
var resDetdPos = 113;   // Residential Detached layer
var OthrRealEstPos = 114;  // Other real estate properties layer
var actDA = 43; // Active Dev Apps layer
var inactDA = 44; // Inactive Dev Apps layer


// color for Main Map zoombox in html hex RGB format
//var zoomBoxColor = "#ff0000";

// index of initial active layer. . . if more than or equal to layer count top layer used
var ActiveLayerIndex=115;  //*  ---->  CHG  streets center line

// variables for using individual components
var useTextFrame=true;
// use external window for dialogs
var useExternalWindow=false;

// colors for tables 
var textFrameBackColor="Silver";
var tableBackColor="White";
var textFrameTextColor="Black";
var textFrameLinkColor="Blue";
var textFrameFormColor="Gray";

//----------------------------------------------------------------------------------
// listed and non-listed layers in Layer list and Legend
//----------------------------------------------------------------------------------

// LayerList visible at service load
var showTOC=true;
// set layer visibility according to LayerList or by custom programming
var toggleVisible = true;
// set layer visibility of OVMap according to LayerList or by custom programming
	// imsURL must equal imsOVMap - depends on one LayerList
var toggleOVVisible = false;
// will the LayerList show all layers, not just those available at current scale
var listAllLayers = false;

//----------------------------------------------------------------------------------
// make all the bottom layers not listed except Air Photo layer
//----------------------------------------------------------------------------------

// toggle the check of non-listing of layers in LayerList and Legend
// if true, noListLayer array must have an element defined for each layer
var hideLayersFromList=true;
// layers that will be listed in the LayerList or Legend
	// Note: This does not affect map display
var noListLayer = new Array();
for (var i=0;i<=airPhotoPos-3;i++) {
	noListLayer[i] = false;
}
// Quarter Sections, Islands, River, Block Outlines and Richmond Boundaries 
// will not be listed as well as Street Centre Lines
for (var i=airPhotoPos-2;i<numberOfLayer;i++) {
	noListLayer[i] = true;
}
//Air Photos LISTED
	noListLayer[airPhotoPos] = false;
	noListLayer[airPhotoPos+1] = false;
	noListLayer[airPhotoPos+2] = false;
// Street Names NOT Listed
noListLayer[2] = true;

//----------------------------------------------------------------------------------
// Change the range of Select Drop Down list position when required
// Note: This does not affect map display
//----------------------------------------------------------------------------------

// layers that will not show attributes when selected
var showSelAttr = new Array();
for (var i=0;i<numberOfLayer;i++) {
	showSelAttr[i] = true;
}
// Don't show Engeneering Layers Attributes
showSelAttr[26] = false;  //Base Legal Dimension
for (var i=49;i<=101;i++) {
	showSelAttr[i] = false;
}
// layers that will be listed in Select Drop-Down List
	// Note: This does not affect map display
var idenLayer = new Array();
for (var i=0;i<numberOfLayer;i++) {
	idenLayer[i] = false;
}
// SELECT following layers:
idenLayer[0] = true;  	// Property
idenLayer[3] = true;  	// City Hall
idenLayer[4] = true;  	// Public Elementrary schools
idenLayer[6] = true;  	// Public Secondary schools
// Public Post Secondary school to zoning
for (var i=8;i<=22;i++) {
	idenLayer[i] = true; 
}
idenLayer[106] = true;  	// rights of way
idenLayer[24] = true;  	// lot number
idenLayer[28] = true;  	// Government owned properties
//Heritage 
for (var i=31;i<=37;i++) {
	idenLayer[i] = true; 
}
// Airport countours and ANSD Areas
idenLayer[45] = true;  	// Airport countours
idenLayer[46] = true;  	// ANSD Areas
idenLayer[actDA] = true;   // Active Dev Apps
idenLayer[inactDA] = true;   // Inactive Dev Apps
// undrground water 
idenLayer[80] = true;  	// water hydrants
idenLayer[86] = true;  	// water lines
idenLayer[83] = true;  	// water valves
// drainage
idenLayer[91] = true;  	// drainage trashscreens
idenLayer[92] = true;  	// drainage pumpstations
idenLayer[93] = true;  	// drainage manholes
idenLayer[97] = true;  	// drainage ditches
idenLayer[100] = true;  	// drainage mainlines
idenLayer[110] = true;  // FCL layers
idenLayer[111] = true; 
//sanitary connection to sanitary concrete protection
for (var i=71;i<=73;i++) {
	idenLayer[i] = true; 
}
idenLayer[64] = true
//city lighting - street lighting photo cells to street lighting conduit
for (var i=49;i<=57;i++) {
	idenLayer[i] = true; 
}

// Mode on floating layer
var drawFloatingMode = false;
var modeLayerOn = false;
var modeLayerColor = "Black";
var modeLayerShadowColor = "White";
var modeLayerFont = "Arial";
var modeLayerSize = "4";

	// does the overview map a layer on top of map?... 
var ovMapIsLayer=true;

var webParams = "";
if (parent.MapFrame!=null) {
	webParams = parent.document.location.search;
} else {
	webParams = document.location.search;
}

/**************************************
* Interactive Map parameters
**************************************/

// Click points - Measure/Shape Select/Shape Buffer
var clickMarkerColor="255,0,0";
var clickMarkerType="Circle";
var clickMarkerSize="6";


/**************************************
* Identify/Select/Query/Buffer parameters
**************************************/

// search tolerance in pixels around click
var pixelTolerance=2;
// color of selected features in decimal RGB format
var selectColor="255,255,0";
// color of highlighted feature in decimal RGB format
var highlightColor="255,0,0";
// level of transparency of selected and highlighted color
var transparentLevel = "0.5";
	// zoom to selected feature if only one is returned?
var zoomToSingleSelect = false;

//----------------------------------------------------------------------------------
// Change the Alias name (table heading) positions when required
//----------------------------------------------------------------------------------

// fields to be returned in identify/selection/query request. . . #ALL#=all fields
var selectFields= "#ALL#";
//var selectFields= "#ID# #SHAPE#";
// swap out the list of returned fields? 
//If true, a list must be defined in selFieldList[n] for each layer to update selectFields
var swapSelectFields=true;
// array for each layer's returned fields if swapSelectFields=true
var selFieldList = new Array();
// sample set for world - if not #ALL#, id and shape fields required. Separate with a space

for (var i=0;i<numberOfLayer;i++) {
	selFieldList[i]="#ALL#";
}
//selFieldList[80]="#ID# #SHAPE# RSN LOT_NO AREA";
selFieldList[0]="#ID# #SHAPE# RSN LOT_NO AREA ADDRESS ZONING";
// for Real Estate Search added by Yelena Markova on Aug 9th, 2004
selFieldList[resAttachPos]="#ID# #SHAPE# STREET PRICE PROPSUBTYP";
selFieldList[resDetdPos]="#ID# #SHAPE# STREET PRICE PROPSUBTYP";
selFieldList[OthrRealEstPos]="#ID# #SHAPE# STREET PRICE PROPTYPE";

//----------------------------------------------------------------------------------
// Overwrite with alias names
//----------------------------------------------------------------------------------

// use the field alias in the data display? 
//If true, a list must be defined in fieldAliasList[n] for each layer defining aliases for those fields needing them
var useFieldAlias=true;
// array for aliases for each layer's returned fields if useFieldAlias=true
var fieldAliasList  = new Array();
// sample set for world - fieldname:alias pairs separated by a bar (|)... if no aliases, use empty string ("")
for (var i=0;i<numberOfLayer;i++) {
	fieldAliasList[i]="#ID#:GIS ID";
}
fieldAliasList[0]="RSN:Richmond Key|LOT_NO:Lot Number|AREA:Area(sq.m)|ADDRESS:Address|ZONING:Zoning|#ID#:GIS ID";

// from Fire stations to Golf courses
for (var i=10;i<=19;i++) {
	fieldAliasList[i]="WEB_SITE_U:Hyperlink";
}

fieldAliasList[45]="NOISELEVEL:Noise Level|URL:Hyperlink|#ID#:GIS ID";  //Airport Contours
fieldAliasList[46]="ANDS_USES: Aircraft Noise Area|URL:Hyperlink|#ID#:GIS ID";  //ANSD Areas

// Development Applications
fieldAliasList[actDA]="FOLDERRSN:Folder RSN|FOLDERYEAR:Folder Year|FOLDERTYPE:Folder Type|FOLDERNUMB:Folder Number|PROPERTYRS:Property RSN|PROPHISTOR:Property Status|STATUS:Status|ACTIVE:Active|SUBDESC:Decription|FOLDERNAME:Folder Name|INDATE:In Date|REFERENCEF:Reference|SHAPE_AREA:Shape Area|#ID#:GIS ID";  
fieldAliasList[inactDA]="FOLDERRSN:Folder RSN|FOLDERYEAR:Folder Year|FOLDERTYPE:Folder Type|FOLDERNUMB:Folder Number|PROPERTYRS:Property RSN|PROPHISTOR:Property Status|STATUS:Status|ACTIVE:Active|SUBDESC:Decription|FOLDERNAME:Folder Name|INDATE:In Date|REFERENCEF:Reference|SHAPE_AREA:Shape Area|#ID#:GIS ID"; 

fieldAliasList[31]="TYPE_NUM:Type|BY_LAW_NUM:Bylaw Number|NAME:Name|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage build
fieldAliasList[32]="BYLAW_NO:Bylaw Number|NAME:Name|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage Landscape
fieldAliasList[33]="IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage Trees
fieldAliasList[34]="TYPE_NUM:Type|BYLAW_NUM:Bylaw Number|NAME:Name|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage resources
fieldAliasList[35]="BYLAW_NO:Bylaw Number|NAME:Name|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage areas
fieldAliasList[36]="TYPE_NUM:Type|BYLAW_NUM:Bylaw Number|NAME:Name|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage Conservation 
fieldAliasList[37]="BYLAW_NO:Bylaw|IMAGE_ID:Hyperlink|#ID#:GIS ID";  //Heritage Artifacts
fieldAliasList[20]="IMAGE_ID:Hyperlink|PARK_NAME:Park or Open Space Name|#ID#:GIS ID";  //Parks and open space
fieldAliasList[97]="B_HGHT_MM:DIAMETER|#ID#:GIS ID";  //Drainage Ditches
// residential attached / detached / other added by Yelena Markova on Aug 9th, 2004
fieldAliasList[resAttachPos]="PRICE:Price|PROPSUBTYP:Property Type|STREET:Address|#ID#:GIS ID";
fieldAliasList[resDetdPos]="PRICE:Price|PROPSUBTYP:Property Type|STREET:Address|#ID#:GIS ID"
fieldAliasList[OthrRealEstPos]="PRICE:Price|PROPTYPE:Property Type|STREET:Address|#ID#:GIS ID";

//----------------------------------------------------------------------------------
// Do not show layers without attributes
//----------------------------------------------------------------------------------
// Hide the ID field display? The ID Field must be included in field list, but we don't have to show it.
var hideIDFieldData = true;
// Hide the shape field display? The Shape Field must be included in field list, but we don't have to show it.
var hideShapeFieldData = true;

//----------------------------------------------------------------------------------
// Change the Hyperlink positions if changed layers have hyperlink functionality
//----------------------------------------------------------------------------------


// parameters for setting up hyperlinks in data display
var hyperLinkLayers = new Array(); // layers to have hyperlink
var hyperLinkFields = new Array();	// field in those layers to be used for hyperlink
var hyperLinkPrefix = new Array();  // prefix (if any) to place before field value to make hyperlink url
var hyperLinkSuffix = new Array();  // suffix (if any) to place after field value to make hyperlink url
hyperLinkLayers[0] = "Heritage Buildings";
hyperLinkFields[0] = "IMAGE_ID";
hyperLinkPrefix[0]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[0] = " ";
hyperLinkLayers[1] = "Heritage Landscapes";
hyperLinkFields[1] = "IMAGE_ID";
hyperLinkPrefix[1]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[1] = " ";
hyperLinkLayers[2] = "Heritage Trees";
hyperLinkFields[2] = "IMAGE_ID";
hyperLinkPrefix[2]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[2] = " ";
hyperLinkLayers[3] = "Parks and Open Spaces";
hyperLinkFields[3] = "IMAGE_ID";
hyperLinkPrefix[3]="http://www.richmond.ca/asp2/parks/park.aspx?ID=";
hyperLinkSuffix[3] = "";
hyperLinkLayers[4] = "Community Centres";
hyperLinkFields[4] = "WEB_SITE_U";
hyperLinkPrefix[4]="http://www.richmond.ca/parksrec/centres/";
hyperLinkSuffix[4] = "";
hyperLinkLayers[5] = "Swimming Pools";
hyperLinkFields[5] = "WEB_SITE_U";
hyperLinkPrefix[5]="http://www.richmond.ca";
hyperLinkSuffix[5] = "";
hyperLinkLayers[6] = "Skating Arenas";
hyperLinkFields[6] = "WEB_SITE_U";
hyperLinkPrefix[6]="http://www.richmond.ca";
hyperLinkSuffix[6] = "";
hyperLinkLayers[7] = "Public Art";
hyperLinkFields[7] = "WEB_SITE_U";
hyperLinkPrefix[7]="http://www.richmond.ca";
hyperLinkSuffix[7] = "";
hyperLinkLayers[8] = "Libraries";
hyperLinkFields[8] = "WEB_SITE_U";
hyperLinkPrefix[8]="http://www.richmond.ca";
hyperLinkSuffix[8] = "";
hyperLinkLayers[9] = "Play Houses";
hyperLinkFields[9] = "WEB_SITE_U";
hyperLinkPrefix[9]="http://www.richmond.ca";
hyperLinkSuffix[9] = "";
hyperLinkLayers[10] = "Aircraft Noise Policy Areas";
hyperLinkFields[10] = "URL";
hyperLinkPrefix[10]="";
hyperLinkSuffix[10] = "";
hyperLinkLayers[11] = "2015 Noise Exposure Forecast(NEF) Contours";
hyperLinkFields[11] = "URL";
hyperLinkPrefix[11]="";
hyperLinkSuffix[11] = "";

hyperLinkLayers[12] = "Heritage Conservation Area";
hyperLinkFields[12] = "IMAGE_ID";
hyperLinkPrefix[12]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[12] = " ";

hyperLinkLayers[13] = "Heritage Resources";
hyperLinkFields[13] = "IMAGE_ID";
hyperLinkPrefix[13]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[13] = " ";

hyperLinkLayers[14] = "Heritage Areas";
hyperLinkFields[14] = "IMAGE_ID";
hyperLinkPrefix[14]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[14] = " ";
hyperLinkLayers[15] = "Heritage Artifacts";
hyperLinkFields[15] = "IMAGE_ID";
hyperLinkPrefix[15]="http://www.richmond.ca/asp2/HeritageInv/Details.aspx?ID=";
hyperLinkSuffix[15] = " ";

// will the returned data be displayed in text frame?
var showSelectedData=true;
// will the returned features be drawn?
var showSelectedFeatures=true;
// maximum number of features returned from query
var maxFeaturesReturned=25;
// for ID All - List all visible layers in response - default is false
	// if false only visible layers with idenitified features written to table
	// if true the names of all visible layers will be diplayed even if no features returned
var listAllLayersInIDAll = false;


// number of data samples retrieved for query form
var numberDataSamples = 150;



/**************************************
* Legend parameters - aimsLegend.js
**************************************/

// legend map size
var legWidth=200;
var legHeight=500;
var legFont="Arial";
var legTitle="Legend";

/**************************************
 * Custom Layers List Parameters
**************************************/
toggleLayers = false;
toggleIdenProp = false;
toggleSearchProp = false;

toggleAirPhotos = false;

//----------------------------------------------------------------------------------
// Heading and corresponding layers for Customed Service (button) selection
//----------------------------------------------------------------------------------

/**************************************
 * Custom Services Parameters
**************************************/
var NumbOfServices=43;  //--> # of check boxes
var sIndex = new Array();
// Services Headers
var ServToggleHeader = new Array();
var ServHeader = new Array();
var ServDescr = new Array();
for (var is=0;is<NumbOfServices;is++) {
	sIndex[is] = -1;
	ServToggleHeader[is] = 0;
	ServHeader[is] = ' ';
	ServDescr[is] = ' ';
}
//Default select after invoked
sIndex[4] = 1;  // Turn Off Air Photos
sIndex[30] = 1;  // Parks and Open Spaces

AirPhotosPos = 0;  // Air Photos Heading position
PropFeatrPos = 5;  // Property Feature Heading position
EngServPos = 10;   // Engineering Services Heading position
PlanServPos = 16;  // Planning Services Heading position
GovServPos = 27;   // Government Services Heading position
RecCultPos = 30;    // Recreation and Cultural Services Heading position
CommSafePos = 39;  // Community Safety Services Heading position

ServToggleHeader[AirPhotosPos] = 1;
ServToggleHeader[PropFeatrPos] = 1;
ServToggleHeader[EngServPos] = 1;
ServToggleHeader[PlanServPos] = 1;
ServToggleHeader[GovServPos] = 1;
ServToggleHeader[RecCultPos] = 1;
ServToggleHeader[CommSafePos] = 1;

ServHeader[AirPhotosPos] = 'Aerial Photos';
ServHeader[PropFeatrPos] = 'Property Features';
ServHeader[EngServPos] = 'Engineering Services';
ServHeader[PlanServPos] = 'Planning Services';
ServHeader[GovServPos] = 'Government Services';
ServHeader[RecCultPos] = 'Recreation and Cultural Services';
ServHeader[CommSafePos] = 'Community Safety Services';
ServHeader[GovServPos] = 'Government Services';

ServDescr[AirPhotosPos] = 'Aerial Photos 2009, 2007, 2005, 2002';
ServDescr[PropFeatrPos] = 'Addresses / Legal / Dimensions ...';
ServDescr[EngServPos] = 'Water / Sewer / Drainage ...';
ServDescr[PlanServPos] = 'Planning Areas / Heritage / Zonning ...';
ServDescr[GovServPos] = 'Elementary / Secondary Schools ...';
ServDescr[RecCultPos] = 'Parks / Community Centres / Arenas ...';
ServDescr[CommSafePos] = 'Police / Fire / Hospitals / Ambulance ...';


// Services
var servDescr = new Array();
var i=0;
servDescr[i] = 'Aerial Photo (April 2009)';
servDescr[++i] = 'Aerial Photo (May 15, 2007)';
servDescr[++i] = 'Aerial Photo (May 25, 2005)';
servDescr[++i] = 'Aerial Photo (May 12, 2002)';
servDescr[++i] = 'Turn Off Aerial Photos';
servDescr[++i] = 'Addresses';
servDescr[++i] = 'Undeveloped Streets';
servDescr[++i] = 'Legal Description';
servDescr[++i] = 'Property Dimensions';
servDescr[++i] = 'Government Owned Properties';
servDescr[++i] = 'Water Works System';
servDescr[++i] = 'Sanitary Sewers';
servDescr[++i] = 'Street Lighting';
servDescr[++i] = 'Drainage';
servDescr[++i] = 'Rights of Way';
servDescr[++i] = 'Flood Construction Level (FCL)';
servDescr[++i] = '<a href="http://www.richmond.ca/__shared/assets/Zoning_Bylaw_850023948.pdf" target="_blank">Zoning - Bylaw 8500</a>';
servDescr[++i] = 'Active Development Applications';
servDescr[++i] = 'Inactive Development Applications(since Jan 05)';
servDescr[++i] = 'Planning Area Boundaries';
servDescr[++i] = 'Agricultural Land Reserve';
servDescr[++i] = 'Env. Sensitive Areas';
servDescr[++i] = '<a href ="http://www.richmond.ca/services/sustainable/environment/policies/rar.htm" target="_blank">Riparian Management Area(RMA) 15m Buffer</a>'
servDescr[++i] = '<a href ="http://www.richmond.ca/services/sustainable/environment/policies/rar.htm" target="_blank">Riparian Management Area(RMA) 5m Buffer</a>'
servDescr[++i] = 'Aircraft Noise Policy Areas';
servDescr[++i] = '2015 Noise Exposure Forecast(NEF) Contours';
servDescr[++i] = 'Heritage';
servDescr[++i] = 'Elementary Schools and Catchments Areas';
servDescr[++i] = 'Secondary Schools and Catchments Areas';
servDescr[++i] = 'Post Secondary Schools';
servDescr[++i] = 'Parks and Open Spaces';
servDescr[++i] = 'Trails';
servDescr[++i] = 'Community Centres';
servDescr[++i] = 'Skating Arenas';
servDescr[++i] = 'Swimming Pools';
servDescr[++i] = 'Golf Courses';
servDescr[++i] = 'Libraries';
servDescr[++i] = 'Play Houses';
servDescr[++i] = 'Public Art';
servDescr[++i] = 'Police Stations';
servDescr[++i] = 'Fire Stations';
servDescr[++i] = 'Ambulance Stations';
servDescr[++i] = 'Hospitals';



//----------------------------------------------------------------------------------
// From and To positions from each Heading group - need to be changed when layers
// are re-arranged.
//----------------------------------------------------------------------------------

// Services Active layers
var servAL = new Array();
// Services  show layers from to
var servFrom = new Array();
var servTo = new Array();
i=0;
// Air Photos 2009
servAL[i] = airPhotoPos; 
servFrom[i] = airPhotoPos;  
servTo[i++] = airPhotoPos;
// Air Photos 2007
servAL[i] = airPhotoPos+1; 
servFrom[i] = airPhotoPos+1;  
servTo[i++] = airPhotoPos+1;
// Air Photos 2005
servAL[i] = airPhotoPos+2; 
servFrom[i] = airPhotoPos+2;  
servTo[i++] = airPhotoPos+2;
// Air Photos 2002
servAL[i] = airPhotoPos+3; 
servFrom[i] = airPhotoPos+3;  
servTo[i++] = airPhotoPos+3;
// Turn Off Air Photos 
servAL[i] = 115; 
servFrom[i] = 115;  
servTo[i++] = 115;
 // Addresses
servAL[i] = 27;
servFrom[i] = 27; 
servTo[i++] = 27;
// Major SubDivision
//servAL[i] = 29;
//servFrom[i] = 29; 
//servTo[i++] = 29;
 // Undeveloped Streets
servAL[i] = 30;
servFrom[i] = 30; 
servTo[i++] = 30;
// Legal Description (lot number & Base plan number)
servAL[i] = 25; 
servFrom[i] = 24;  
servTo[i++] = 25;
// Property Dimensions - Base legal dimension
servAL[i] = 26; 
servFrom[i] = 26;  
servTo[i++] = 26;
// Government Owned Properties
servAL[i] = 28; 
servFrom[i] = 28;  
servTo[i++] = 28;
// Water hydrant to private water main
servAL[i] = 86;  //water line
servFrom[i] = 80;  
servTo[i++] = 87;
// Sanitary connection to sanitary concrete protection
servAL[i] = 64; //sanitary catchment
servFrom[i] = 62;  
servTo[i++] = 79;
// Street Lighting to street lighting conduit
servAL[i] = 51; // city street lighting
servFrom[i] = 49;  
servTo[i++] = 57;
// Drainage to Drainage pipe slope indicators
servAL[i] = 100;   //drainage mainline
servFrom[i] = 91;  
servTo[i++] = 101;
// Rights of Way
servAL[i] = 106; 
servFrom[i] = 106;  
servTo[i++] = 109;
// FCL
servAL[i] = 110; 
servFrom[i] = 110;  
servTo[i++] = 111;
// Zoning
servAL[i] = 22; 
servFrom[i] = 22;  
servTo[i++] = 23;
// Active Dev Apps
servAL[i] = actDA; 
servFrom[i] = actDA;  
servTo[i++] = actDA;
// Inactive Dev Apps
servAL[i] = inactDA; 
servFrom[i] = inactDA;  
servTo[i++] = inactDA;
// Planning Area Boundaries
servAL[i] = 47; 
servFrom[i] = 47;  
servTo[i++] = 47;
// Agricultural Land Reserve
servAL[i] = 48; 
servFrom[i] = 48;  
servTo[i++] = 48;
// Env. Sensitive Areas
servAL[i] = 41; 
servFrom[i] = 41;  
servTo[i++] = 41;
// RAR 15 m 
servAL[i] = 39; 
servFrom[i] = 39;  
servTo[i++] = 39;
// RAR 5 m 
servAL[i] = 40; 
servFrom[i] = 40;  
servTo[i++] = 40;
// ANSD Policy Areas
servAL[i] = 46; 
servFrom[i] = 46;  
servTo[i++] = 46;
// Airport Contours 2015
servAL[i] = 45; 
servFrom[i] = 45;  
servTo[i++] = 45;
// Development Permit Areas
//servAL[i] = 42; 
//servFrom[i] = 42;  
//servTo[i++] = 42;
// Heritage 
servAL[i] = 31; 
servFrom[i] = 31;  
servTo[i++] = 37;
// Elementary Schools and Catchments Areas
servAL[i] = 4; 
servFrom[i] = 4;   
servTo[i++] = 5;
// Secondary Schools and Catchments Areas
servAL[i] = 6; 
servFrom[i] = 6;  
servTo[i++] = 7;
 // Post Secondary Schools
servAL[i] = 8;
servFrom[i] = 8;  
servTo[i++] = 8;
// Parks and Open Spaces
servAL[i] = 20; 
servFrom[i] = 20; 
servTo[i++] = 20;
// Trails
servAL[i] = 21; 
servFrom[i] = 21; 
servTo[i++] = 21;
// Community Centres
servAL[i] = 13; 
servFrom[i] = 13;    
servTo[i++] = 13;
// Skating Arenas
servAL[i] = 17; 
servFrom[i] = 17;  
servTo[i++] = 17;
// Swimming Pools
servAL[i] = 18; 
servFrom[i] = 18;  
servTo[i++] = 18;
// Golf Courses
servAL[i] = 19; 
servFrom[i] = 19; 
servTo[i++] = 19;
// Libraries
servAL[i] = 14; 
servFrom[i] = 14;  
servTo[i++] = 14;
// Play Houses
servAL[i] = 15; 
servFrom[i] = 15;  
servTo[i++] = 15;
// Public Art
servAL[i] =16; 
servFrom[i] = 16;  
servTo[i++] = 16;
// Police Station
servAL[i] = 9; 
servFrom[i] = 9;  
servTo[i++] = 9;
// Fire Stations
servAL[i] = 10; 
servFrom[i] = 10; 
servTo[i++] = 10;
// Ambulance Stations
servAL[i] = 11; 
servFrom[i] = 11;  
servTo[i++] = 11;
// Hospitals
servAL[i] = 12; 
servFrom[i] = 12;  
servTo[i++] = 12;


/**************************************
* Options parameters - aimsOptions.js
**************************************/

// allowing user to set options
var allowOptions=false;

/**************************************
* ClassRender parameters - aimsClassRender.js
**************************************/

// parameters for custom class rendering... overrides default renderer
var ClassRenderLayer = new Array();  // layers to have custom renderers
var ClassRenderString = new Array(); // initial custom renderer XML string for the layers
ClassRenderLayer[0] = "Cities";
ClassRenderString[0] = "";
/*
ClassRenderString[0] ='<VALUEMAPRENDERER lookupfield="population">\n<RANGE LOWER="0" UPPER="1000000">\n<SIMPLEMARKERSYMBOL color="255,0,255" type="circle" size="4" />\n</RANGE>';
ClassRenderString[0] = ClassRenderString[0] + '<RANGE LOWER="1000000" UPPER="2500000">\n<SIMPLEMARKERSYMBOL color="255,0,255" type="circle" size="6" />\n</RANGE>';
ClassRenderString[0] = ClassRenderString[0] + '<RANGE LOWER="2500000" UPPER="5000000">\n<SIMPLEMARKERSYMBOL color="255,0,255" type="circle" size="9" />\n</RANGE>';
ClassRenderString[0] = ClassRenderString[0] + '<RANGE LOWER="5000000" UPPER="10000000">\n<SIMPLEMARKERSYMBOL color="255,0,255" type="circle" size="12" />\n</RANGE>';
ClassRenderString[0] = ClassRenderString[0] + '<RANGE LOWER="10000000" UPPER="30000000">\n<SIMPLEMARKERSYMBOL color="255,0,255" type="circle" size="16" />\n</RANGE>\n</VALUEMAPRENDERER>';
*/


/**************************************
* Iniital map layer value loading
**************************************/

var firstLoadLayer = true;
var ParkNameArray = new Array();

/**************************************
* Custom
**************************************/
var prRSN = '';
var parcelsCount = 0;
var parcelsArea = 0;
//var envX1 = 0;
//var envX2 = 0;
//var envY1 = 0;
//var envY2 = 0;

/**************************************
* Geocode parameters - aimsGeocode.js
**************************************/

// maximum geocode candidates returned - default = 20
var maxGeocodeCandidates=20;
// minimal acceptable geocode score for candidate
var minGeocodeScore=50;
var geocodePointColor = "255,0,0";
var geocodePointSize = "15";
var geocodeLabelSize = "12";
// custom functions needed for Reverse Geocoding
var useReverseGeocode = false;

// the starting point. . . it all starts here on loading
function checkParams() {
	appDir = getPath(document.location.pathname);
	// global for overview map. . . change if not on same frame as Map
	ovImageVar = document.ovImage;
	debugOn = 0;
	if (parent.TextFrame==null) {
		useTextFrame = false;
		useExternalWindow=true;
	}
	if (!hasLayer("measureBox")) useMeasure=false;
	if ((!useMeasure) && (!drawScaleBar)) useSetUnits=false;
	if (ovImageVar==null) hasOVMap = false;
	if (parent.TOCFrame==null) hasTOC = false;
	if (parent.ModeFrame==null) useModeFrame = false;
	
	
	if (isIE)	{
		if (hasLayer("theTop")) document.all.theTop.style.cursor = "crosshair";
		if (hasOVMap) ovImageVar.style.cursor = "hand";
	}
		
	if (hasOVMap) {
		// size of ov map image
		i2Width = parseInt(ovImageVar.width);
		i2Height = parseInt(ovImageVar.height);
		forceNewOVMap = false;
		// position of ov map
		//ovMapLeft = iWidth - (i2Width + 6);
		//ovMapTop = 2;
	}
	if (webParams!="") {
		//alert(webParams);
		getCommandLineParams(webParams);
	}
	// if starting extents zero'd then flag to get start from mapservice
	if ((startLeft!=0) && (startRight!=0)) getStartingExtent=false;
	// if limit extents zero'd then flag to get max from mapservice
	if ((limitLeft!=0) && (limitRight!=0)) {
		getLimitExtent=false;
		enforceFullExtent=true;
	}
	if (ovBoxColor=="") ovBoxColor = "255,0,0";
	//ovBoxColor = convertHexToDec(ovBoxColor);
	checkCoords();
	if (aimsNavigationPresent) {
		// Set up event capture for mouse movement
		if (isNav4) {
			document.captureEvents(Event.MOUSEMOVE);
			document.captureEvents(Event.MOUSEDOWN);
			document.captureEvents(Event.MOUSEUP);
			//document.captureEvents(Event.MOUSEOUT);
		}
		document.onmousemove = getMouse;
		//document.onmousedown = chkMouseDown;
		document.onmousedown = mapTool;
		document.onmouseup = chkMouseUp;
		//document.onmouseout = chkMouseOut;
	} else {
		usePan=false;
		usePanNorth=false;
		usePanWest=false;
		usePanEast=false;
		usePanSouth=false;
		useMeasure=false;
		useZoomIn=false;
		useZoomOut=false
		//useFullExtent=false;
		useZoomActive=false;
		//useZoomLast=false;	
	}
	
	if (!aimsBufferPresent) {
		useBuffer=false;
	}
	if (!aimsQueryPresent) {
		aimsBufferPresent=false;
		useQuery=false;
		useFind=false;
		useBuffer=false;
		useStoredQuery=false;
	}
	if (!aimsSelectPresent) {
		aimsQueryPresent=false;
		aimsBufferPresent=false;
 		useSelect=false;
		useQuery=false;
		useFind=false;
		useBuffer=false;
		useStoredQuery=false;
		useClearSelect=false;
	}
	if (!aimsIdentifyPresent) {
		aimsSelectPresent=false;
		aimsQueryPresent=false;
		aimsBufferPresent=false;
		canQuery=false;
		useIdentify=false;
 		useSelect=false;
		useQuery=false;
		useFind=false;
		useBuffer=false;
		useStoredQuery=false;
		useHyperLink=false;
		useHyperLinkAny=false;
		useIdentifyAll=false;
	}
	if (!aimsGeocodePresent) {
		useGeocode=false;
		useReverseGeocode=false;
	}
	if (!aimsPrintPresent) {
		usePrint=false;
	}
	if (!aimsOptionsPresent) {
		allowOptions=false;
	}
	if ((aimsXMLPresent) && (aimsMapPresent)) {
		if (aimsClickPresent) clickFunction("zoomin");
		if (parent.ToolFrame!=null) parent.ToolFrame.document.location="toolbar.htm";
		startMap();
	} else {
		alert(msgList[0]);
	}
}


