// 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=";
//var reqMachineURL = 'http://edcw2ks23.cr.usgs.gov/';
//This is going to Layth's machine..comment out if released//
//var reqMachineURL = 'http://edcw2w064.cr.usgs.gov/';
//var reqMachineURL = 'http://edcw2w036.cr.usgs.gov/'; 
var reqMachineURL = 'http://extract.cr.usgs.gov/';

//*********************************************************************
//*			parameters set by Designer                    *
//*********************************************************************
var imsURL = parent.USGSMapService;
var imsOVURL = parent.USGSOVService;
var imsQueryURL = '';
var imsGeocodeURL = '';

// variables for setting component colors
var mapBackColor = parent.USGSMapBackColor;
var ovBoxColor = '#ff0000';
var ovBoxSize = 3;
var zoomBoxColor = '#ff0000';

// variables for using individual components
var hasOVMap = parent.USGSUseOverview;
var hasTOC = true;
var useModeFrame = true;
var showGreeting = true;

//initial map extent
var startLeft = parent.USGSleft;
var startRight = parent.USGSright;
var startTop = parent.USGStop;
var startBottom = parent.USGSbottom;

//maximum map extent
//var limitLeft = -180.0;
//var limitRight = 180.0;
//var limitTop = 90.0;
//var limitBottom = -90.0;

var limitLeft = parent.USGSOVleft;
var limitRight = parent.USGSOVright;
var limitTop = parent.USGSOVtop;
var limitBottom = parent.USGSOVbottom;

if (startTop > limitTop)
    limitTop = startTop;
if (startBottom < limitBottom)
    limitBottom = startBottom;
if (startLeft < limitLeft)
    limitLeft = startLeft;
if (startRight > limitRight)
    limitRight = startRight;

var usePan=true;
var usePanNorth=true;
var usePanWest=true;
var usePanEast=true;
var usePanSouth=true;
var usePanNortheast=true;
var usePanSoutheast=true;
var usePanNorthwest=true;
var usePanSouthwest=true;
var useZoomIn=true;
var useZoomOut=true;
var useFullExtent=true;
var useZoomActive=false;
var useZoomLast=true;
var useIdentify=false;
var useMeasure=true;
var useSetUnits=false;
var useSelect=false;
var useQuery=false;
var useFind=false;
var useMapinfo=true;
var useGeocode=false;
var useStoredQuery=false;
var useClearSelect=false;
var usePrint=true;
var useGeoNetwork=false;
var useBuffer=false;
var useExtract=false;

var MapUnits = "Degrees";
var ScaleBarUnits = "Miles";
// 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 = false;
var NorthArrowType = "4";
var NorthArrowSize = "12";
var NorthArrowCoords = "30 50";
var NorthArrowAngle = "0";

// Scale Bar
var drawScaleBar = false;

// 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 = false;
var CopyrightFont = "Arial";
var CopyrightStyle = "Bold";
var CopyrightSize = "14";
var CopyrightCoords = "4 4";
var CopyrightColor = "255,255,255";
var CopyrightBackground = "True";
var CopyrightBGColor = "0,111,65";
var CopyrightGlow = "False";
var CopyrightGlowColor = "255,255,255";
var CopyrightText = "USGS";

// 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=true;

// setup test for Nav 4.0
var isIE = parent.is_ie;
var isNav = parent.is_nn;
var isNav4 = false;
var isIE4 = false;
var is5up = false;
  if (parent.is_major>4) {
    is5up = true;
  } else {
    if (isIE) { isIE4=true; } else { isNav4=true; }
  }

/**************************************
* Extended Map parameters
**************************************/
// variables for ovmap offset
var ovHspc = 0;
var ovVspc = 0;

// 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=99;

// variables for using individual components
var useTextFrame=true;
// use external window for dialogs
var useExternalWindow=false;

// colors for tables
var textFrameBackColor = parent.USGSBackgroundColor;
var tableBackColor = parent.USGSBackgroundColor;
var textFrameTextColor="Black";
var textFrameLinkColor="Blue";
var textFrameFormColor = parent.USGSBackgroundColor;

// 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;
// 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=false;
// layers that will be listed in the LayerList or Legend
// Note: This does not affect map display
var noListLayer = new Array();
// noListLayer[0] = false;
// noListLayer[1] = false;
// noListLayer[2] = false;
// noListLayer[3] = true;	// this one will not be listed
// noListLayer[4] = false;

// 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=false;
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="0,255,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;
// 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=false;
// 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
selFieldList[0]="NAME COUNTRY POPULATION #ID# #SHAPE#";
selFieldList[1]="URL #ID# #SHAPE#";
selFieldList[2]="#ALL#";
selFieldList[3]="#ALL#";
selFieldList[4]="#ALL#";
selFieldList[5]="NAME CONTINENT #ID# #SHAPE#";
selFieldList[6]="#ALL#";

// 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=false;
// 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 ("")
fieldAliasList[0]="NAME:City Name|POPULATION:Population";
fieldAliasList[1]="";
fieldAliasList[2]="";
fieldAliasList[3]="";
fieldAliasList[4]="";
fieldAliasList[5]="NAME:CountryName";
fieldAliasList[6]="";

//Hide the ID and shape fields on query?
hideIDFieldData=false;
hideShapeFieldData=false;

// Hide the ID field display? The ID Field must be included in field list, but we don't have to show it.
var hideIDFieldData = false;
// Hide the shape field display? The Shape Field must be included in field list, but we don't have to show it.
var hideShapeFieldData = false;
// 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] = "Image";
hyperLinkFields[0] = "HOT";
hyperLinkPrefix[0] = "/gisdata/world/images/";
hyperLinkSuffix[0] = ".jpg";

// 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 = 50;

/**************************************
* Legend parameters - aimsLegend.js
**************************************/

// legend map size
var legWidth=170;
var legHeight=300;
var legFont="Arial";
var legTitle="Legend";

/**************************************
* 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>';
*/

/**************************************
* 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
    if (parent.USGSUseOverview == true) {
      if (parent.USGSUseNMAP || parent.USGSUseSimpleViewer) {
        ovImageVar = document.ovImage;
      } else {
        ovImageVar = parent.OverviewFrame.document.ovImage;
      }
    } else {
        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 = ovImageVar.width;
        i2Height = ovImageVar.height;
        forceNewOVMap = false;
        // position of ov map
        //ovMapLeft = iWidth - (i2Width + 6);
        //ovMapTop = 2;
    } 

    if (webParams!="") {
        //alert(webParams);
        getCommandLineParams(webParams);
    }
    
    //Modify the tools active for the NMAP interface and OGC Background layers
    //Disable buttons not present and switch ID and Hyperlink to all/Any
    if (Display_Only_OGC) {
      var showGreeting = false;
      var useZoomActive=false;
      var useZoomLast=false;
      var useIdentify=false;
      var useSetUnits=false;
      var useSelect=false;
      var useQuery=false;
      var useFind=false;
      var useGeocode=false;
      var useStoredQuery=false;
      var usePrint=false;
      var useGeoNetwork=false;
      var useBuffer=false;
      var useExtract=false;
      var useHyperLink=false;
      var useHyperLinkAny=false;
      var useIdentifyAll=true;
      var useBufferShape=false;
      var hasToolBarOnLayer=false;
    }

    // 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)) {
        //alert("arcimsparam.js: setting getLimitExtent to false");
        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= parent.USGSThisURL_end + "/toolbar.php"; 
      if (parent.Disclaimer!=null) parent.Disclaimer.document.location=parent.USGSThisURL_end + "/disclaimer.php";
      if (parent.TopFrame!=null) parent.TopFrame.document.location=parent.USGSThisURL_end + "/top.php";
      startMap();
    } else {
        alert("Unable to load one of the following Javascript Libraries:\naimsCommon.js\naimsXML.js\naimsMap.js");
    }
   
}