// http://gisweb.azdeq.gov/arcgis/veiareas/
// ADEQ: Arizona Department of Environmental Quality

function StartApp(step)
{
    if (step == undefined)  // initiated by default.html
    {
        step = 0;
        _mapUpdated = true;
    }

    // give server time to return intermediate map before proceeding
    if (!_mapUpdated)
    {
        setTimeout("StartApp(" + step.toString() + ");", 200);
        return;
    }
    _mapUpdated = false;    

    // wait for intermediate map to be returned before proceeding with next step
    switch (++step)
    {
        case 1:  // initialize map
            dojo.parser.parse();
            
            // use proxy page if geometry service JSON greater than 2000 characters
            esri.config.defaults.io.proxyUrl = "/proxy.ashx";
            esri.config.defaults.io.alwaysUseProxy = false;

            // adjust layout to fit in browser window
            ResizeMap2();

            // initally show legend
            ShowLegend();

            // spatial references
            _NAD_1983_UTM_Zone_12N = new esri.SpatialReference({wkid:26912});
            _WGS_1984 = new esri.SpatialReference({wkid:4326});

            // extents
            _arizona = new esri.geometry.Extent(120000, 3450000, 710000, 4115000, _NAD_1983_UTM_Zone_12N);
            var initial = new esri.geometry.Extent(120000, 3450000, 710000, 4115000, _NAD_1983_UTM_Zone_12N);

            // map control
            _map = new esri.Map("map", { extent:initial, nav:true, slider:false });
            _map.SpatialReference = _NAD_1983_UTM_Zone_12N;

            // toolbars
            _navToolbar = new esri.toolbars.Navigation(_map);
            _drawToolbar = new esri.toolbars.Draw(_map);

            // create map layer
            _mapLayer = new esri.layers.ArcGISDynamicMapServiceLayer(_mapURL);
            _mapLayer.setImageFormat("jpg");

            // make startup wait for map before continuing
            dojo.connect(_mapLayer, "onUpdate", MapUpdated);
            _mapUpdated = false;

            // add layer to map
            _map.addLayer(_mapLayer);

            // continue on to next step
            setTimeout("StartApp(" + step.toString() + ");", 1000);
            break;

        case 2:  // zoom map
            ShowLoading();
            FullExtent();

            // continue on to next step
            setTimeout("StartApp(" + step.toString() + ");", 500);
            break;
            
        case 3:  // show vei layers
            GetVisibleLayers();

            // hide streams and lakes
            HideLayer(_layerStreamsMajor);
            HideLayer(_layerStreamsSecondary);
            HideLayer(_layerStreamsMinor);
            HideLayer(_layerCAP);
            HideLayer(_layerLakes);

            // show vei areas and townships
            ShowLayer(_layerVeiAreaA);
            ShowLayer(_layerVeiAreaB);
            ShowLayer(_layerVeiStations);
            ShowLayer(_layerTownships);

            // continue on to next step
            setTimeout("StartApp(" + step.toString() + ");", 500);
            break;

        case 4:  // show map
            // link map event handlers
            dojo.connect(_map, "onZoomStart", ShowLoading);
            dojo.connect(_map, "onPanStart", ShowLoading);
            dojo.connect(_mapLayer, "onUpdate", HideLoading);
            dojo.connect(document.getElementById("resizer"), "mousedown", BeginPanelDrag);
            window.onresize = ResizeMap;

            // place cursor in address field
            document.getElementById('address').focus();

            SetTool("zoomin");
            HideLoading();
            ShowMap();
            ShowDisclaimer();
            break;
    }
}

function MapUpdated()
{
    _mapUpdated = true;
}

function UrlParam(key)
{
    var params = document.location.search;
    if (params.length == 0) return "";
    params = params.substring(1);  // drop leading ?
    params = params.split("&");
    for (var i = 0; i < params.length; i++)
    {
        var param = params[i].split("=");
        if (param[0] == key)
        {
            var value = unescape(param[1]);
            return value.replace(/\+/g, " ");
        }
    }
    return "";
}

