﻿// configuration.js
//
// the Configuration object will hold static 
// configuration data so we can easily edit this file
// and change many of the settings for the website.

dojo.require("esri.map");
dojo.require("esri.virtualearth.VETiledLayer");
dojo.require("esri.tasks.locator");
dojo.require("esri.tasks.geometry");
dojo.require("esri.tasks.query");
dojo.require("esri.toolbars.navigation");

// Required for clustering (I think)
dojo.require("dojox.lang.functional");
dojo.require("dojox.lang.functional.lambda");
dojo.require("dojox.lang.functional.curry");
dojo.require("dojox.lang.functional.fold");

function Configuration() { };

Configuration.WebRoot = "http://www.crimemapping.com/";
Configuration.ProxyPath = Configuration.WebRoot + "proxy.ashx";
Configuration.VETokenPath = "handlers/vetoken.ashx";
Configuration.MaximumRecordCount = 800;
Configuration.DefaultDateRange = 5;
Configuration.CurrentXHR = null;
Configuration.SpatialReferenceWKID = 4326;
Configuration.SpatialReferenceWKID_BING = 102113;

// Defines the maps initial starting point with a spatial reference for ESRI Maps API
//-----------------------------------------------------------------------------------
Configuration.DefaultExtent = new esri.geometry.Extent(-15783510.010221612, 1533289.423095196, -5627780.684142645, 8215720.183896675, new esri.SpatialReference({ wkid: Configuration.SpatialReferenceWKID_BING }));
Configuration.DefaultSubscriptionExtent = new esri.geometry.Extent(-15208703.557517234, 2128348.630814013, -6315102.44248277, 7079022.0787869925, new esri.SpatialReference({ "wkid": Configuration.SpatialReferenceWKID_BING }));

// Locally hosted services
//------------------------        
Configuration.ArcGISBoundaryServiceUrl = "http://209.216.237.198/ArcGIS/rest/services/CrimeMapping/CrimeMapping_Boundaries/MapServer/0";                // boundaries
Configuration.ArcGISGeometryServiceUrl = "http://209.216.237.198/ArcGIS/rest/services/CrimeMapping/Geometry/GeometryServer";                            // geometry service

// Global esri enums used for defining the path to VE Tiled Layers
//---------------------------------------------------------
Configuration.BingRoadLayerUrl = esri.virtualearth.VETiledLayer.MAP_STYLE_ROAD;
Configuration.BingAerialLayerUrl = esri.virtualearth.VETiledLayer.MAP_STYLE_AERIAL;
Configuration.BingAerialLabeledLayerUrl = esri.virtualearth.VETiledLayer.MAP_STYLE_AERIAL_WITH_LABELS;

// Global Geometry objects
//------------------------
Configuration.AgencySymbol = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/agency.png", 56, 40).setOffset(15, 20);
Configuration.AddressGraphicSymbol = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/address-marker.png", 34, 32).setOffset(10, 20);
Configuration.AddressDistanceSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 4);
Configuration.DefaultSymbol = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/unknown.png", 42, 38).setOffset(10, 20);
Configuration.ClusterSymbol = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/cluster.png", 42, 38).setOffset(10, 20);
Configuration.MiniClusterSymbol = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/cluster.png", 26, 22).setOffset(8, 10);
Configuration.GeometryService = null;

// Global boolean values
//----------------------
Configuration.IsMeasuringDistance = false;

// Global Miscellaneous values
//----------------------------
Configuration.IsShowingCrime = false;
Configuration.IsClusteringEnabled = false;
Configuration.UsingLargeIcons = true;
Configuration.InfoWindowBaseWidth = 400;
Configuration.InfoWindowBaseHeight = 350;
Configuration.MaxIncidentZoomLevel = 2;
Configuration.ShowingIncidentsZoomLevel = 9;
Configuration.ReportPage = null;

// Global Parameters set from URL
//-------------------------------
Configuration.SelectedCrimeID = "";
Configuration.SelectedX = "";
Configuration.SelectedY = "";
Configuration.SelectedAddress = "";
Configuration.SelectedBufferRadius = "";
Configuration.SelectedAgencyID = "";
Configuration.SelectedRegionID = "";
Configuration.SelectedStateID = "";
Configuration.SelectedDateBegin = null;
Configuration.SelectedDateEnd = null;

// Others no longer used ..... 
//----------------------------
Configuration.IsStartingUp = false;
Configuration.ZoomedToAgencyDate = false;
Configuration.MapMoveStartListener = null;
Configuration.MapMoveEndListener = null;
Configuration.LoadingMessageOverlay = null;

// Arrays for holding references to symbology
//-------------------------------------------
Configuration.LargeCrimeSymbols = [];
Configuration.LargeCrimeSymbols[0] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/arson.png", 42, 38);
Configuration.LargeCrimeSymbols[1] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/assault.png", 42, 38);
Configuration.LargeCrimeSymbols[2] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/burglary.png", 42, 38);
Configuration.LargeCrimeSymbols[3] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/disturbing-the-peace.png", 42, 38);
Configuration.LargeCrimeSymbols[4] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/drugs-alcohol-violations.png", 42, 38);
Configuration.LargeCrimeSymbols[5] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/dui.png", 42, 38);
Configuration.LargeCrimeSymbols[6] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/fraud.png", 42, 38);
Configuration.LargeCrimeSymbols[7] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/homicide.png", 42, 38);
Configuration.LargeCrimeSymbols[8] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/motor-vehicle-theft.png", 42, 38);
Configuration.LargeCrimeSymbols[9] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/robbery.png", 42, 38);
Configuration.LargeCrimeSymbols[10] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/sex-crimes.png", 42, 38);
Configuration.LargeCrimeSymbols[11] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/theft-larceny.png", 42, 38);
Configuration.LargeCrimeSymbols[12] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/vandalism.png", 42, 38);
Configuration.LargeCrimeSymbols[13] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/vehicle-break-in-theft.png", 42, 38);
Configuration.LargeCrimeSymbols[14] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/weapons.png", 42, 38);

Configuration.LargeLegendCrimeSymbols = [];
Configuration.LargeLegendCrimeSymbols[0] = Configuration.WebRoot + "images/map/crime-types/legend/arson.png";
Configuration.LargeLegendCrimeSymbols[1] = Configuration.WebRoot + "images/map/crime-types/legend/assault.png";
Configuration.LargeLegendCrimeSymbols[2] = Configuration.WebRoot + "images/map/crime-types/legend/burglary.png";
Configuration.LargeLegendCrimeSymbols[3] = Configuration.WebRoot + "images/map/crime-types/legend/disturbing-the-peace.png";
Configuration.LargeLegendCrimeSymbols[4] = Configuration.WebRoot + "images/map/crime-types/legend/drugs-alcohol-violations.png";
Configuration.LargeLegendCrimeSymbols[5] = Configuration.WebRoot + "images/map/crime-types/legend/dui.png";
Configuration.LargeLegendCrimeSymbols[6] = Configuration.WebRoot + "images/map/crime-types/legend/fraud.png";
Configuration.LargeLegendCrimeSymbols[7] = Configuration.WebRoot + "images/map/crime-types/legend/homicide.png";
Configuration.LargeLegendCrimeSymbols[8] = Configuration.WebRoot + "images/map/crime-types/legend/motor-vehicle-theft.png";
Configuration.LargeLegendCrimeSymbols[9] = Configuration.WebRoot + "images/map/crime-types/legend/robbery.png";
Configuration.LargeLegendCrimeSymbols[10] = Configuration.WebRoot + "images/map/crime-types/legend/sex-crimes.png";
Configuration.LargeLegendCrimeSymbols[11] = Configuration.WebRoot + "images/map/crime-types/legend/theft-larceny.png";
Configuration.LargeLegendCrimeSymbols[12] = Configuration.WebRoot + "images/map/crime-types/legend/vandalism.png";
Configuration.LargeLegendCrimeSymbols[13] = Configuration.WebRoot + "images/map/crime-types/legend/vehicle-break-in-theft.png";
Configuration.LargeLegendCrimeSymbols[14] = Configuration.WebRoot + "images/map/crime-types/legend/weapons.png";

// Create an array for the mini crime symbols
Configuration.MiniCrimeSymbols = [];
Configuration.MiniCrimeSymbols[0] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/arson.png", 26, 22);
Configuration.MiniCrimeSymbols[1] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/assault.png", 26, 22);
Configuration.MiniCrimeSymbols[2] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/burglary.png", 26, 22);
Configuration.MiniCrimeSymbols[3] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/disturbing-the-peace.png", 26, 22);
Configuration.MiniCrimeSymbols[4] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/drugs-alcohol-violations.png", 26, 22);
Configuration.MiniCrimeSymbols[5] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/dui.png", 26, 22);
Configuration.MiniCrimeSymbols[6] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/fraud.png", 26, 22);
Configuration.MiniCrimeSymbols[7] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/homicide.png", 26, 22);
Configuration.MiniCrimeSymbols[8] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/motor-vehicle-theft.png", 26, 22);
Configuration.MiniCrimeSymbols[9] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/robbery.png", 26, 22);
Configuration.MiniCrimeSymbols[10] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/sex-crimes.png", 26, 22);
Configuration.MiniCrimeSymbols[11] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/theft-larceny.png", 26, 22);
Configuration.MiniCrimeSymbols[12] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/vandalism.png", 26, 22);
Configuration.MiniCrimeSymbols[13] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/vehicle-break-in-theft.png", 26, 22);
Configuration.MiniCrimeSymbols[14] = new esri.symbol.PictureMarkerSymbol(Configuration.WebRoot + "images/map/crime-types/mini/weapons.png", 26, 22);

Configuration.MiniLegendCrimeSymbols = [];
Configuration.MiniLegendCrimeSymbols[0] = Configuration.WebRoot + "images/map/crime-types/legend/mini/arson.png";
Configuration.MiniLegendCrimeSymbols[1] = Configuration.WebRoot + "images/map/crime-types/legend/mini/assault.png";
Configuration.MiniLegendCrimeSymbols[2] = Configuration.WebRoot + "images/map/crime-types/legend/mini/burglary.png";
Configuration.MiniLegendCrimeSymbols[3] = Configuration.WebRoot + "images/map/crime-types/legend/mini/disturbing-the-peace.png";
Configuration.MiniLegendCrimeSymbols[4] = Configuration.WebRoot + "images/map/crime-types/legend/mini/drugs-alcohol-violations.png";
Configuration.MiniLegendCrimeSymbols[5] = Configuration.WebRoot + "images/map/crime-types/legend/mini/dui.png";
Configuration.MiniLegendCrimeSymbols[6] = Configuration.WebRoot + "images/map/crime-types/legend/mini/fraud.png";
Configuration.MiniLegendCrimeSymbols[7] = Configuration.WebRoot + "images/map/crime-types/legend/mini/homicide.png";
Configuration.MiniLegendCrimeSymbols[8] = Configuration.WebRoot + "images/map/crime-types/legend/mini/motor-vehicle-theft.png";
Configuration.MiniLegendCrimeSymbols[9] = Configuration.WebRoot + "images/map/crime-types/legend/mini/robbery.png";
Configuration.MiniLegendCrimeSymbols[10] = Configuration.WebRoot + "images/map/crime-types/legend/mini/sex-crimes.png";
Configuration.MiniLegendCrimeSymbols[11] = Configuration.WebRoot + "images/map/crime-types/legend/mini/theft-larceny.png";
Configuration.MiniLegendCrimeSymbols[12] = Configuration.WebRoot + "images/map/crime-types/legend/mini/vandalism.png";
Configuration.MiniLegendCrimeSymbols[13] = Configuration.WebRoot + "images/map/crime-types/legend/mini/vehicle-break-in-theft.png";
Configuration.MiniLegendCrimeSymbols[14] = Configuration.WebRoot + "images/map/crime-types/legend/mini/weapons.png";

// And an array for the CrimeCode types
//-------------------------------------
Configuration.CrimeCodes = [];
Configuration.CrimeCodes[0] = "Arson";
Configuration.CrimeCodes[1] = "Assault";
Configuration.CrimeCodes[2] = "Burglary";
Configuration.CrimeCodes[3] = "Disturbing the Peace";
Configuration.CrimeCodes[4] = "Drugs/Alcohol Violations";
Configuration.CrimeCodes[5] = "DUI";
Configuration.CrimeCodes[6] = "Fraud";
Configuration.CrimeCodes[7] = "Homicide";
Configuration.CrimeCodes[8] = "Motor Vehicle Theft";
Configuration.CrimeCodes[9] = "Robbery";
Configuration.CrimeCodes[10] = "Sex Crimes";
Configuration.CrimeCodes[11] = "Theft/Larceny";
Configuration.CrimeCodes[12] = "Vandalism";
Configuration.CrimeCodes[13] = "Vehicle Break-In/Theft";
Configuration.CrimeCodes[14] = "Weapons";