// http://gisweb.azdeq.gov/arcgis/veiareas/
// ADEQ: Arizona Department of Environmental Quality

function ResizeMap()
{
    // IE fires multiple resize events
    clearTimeout(_timer);
    _timer = setTimeout("ResizeMap500();", 500);
}

function ResizeMap500()
{
    // page controls
    var panel = dojo.byId("panel");
    var map = dojo.byId("map");
    var resizer = dojo.byId("resizer");
    var loading = dojo.byId("loading");

    // map left
    var panelWidth = Number(panel.style.width.substring(0, panel.style.width.length - 2));
    var resizerWidth = Number(resizer.style.width.substring(0, resizer.style.width.length - 2)) + 2/*border*/;
    map.style.left = String(panelWidth + resizerWidth) + "px";

    // map width
    var mapWidth = document.documentElement.clientWidth - panelWidth - _scrollbarWidth;
    if (mapWidth < _minMap) mapWidth = _minMap;
    map.style.width = String(mapWidth) + "px";

    // map height
    // when user drags panel/map separator to the right (to left is ok),
    // document.documentElement.clientHeight is 17 pixels too small,
    // but the second time it is referenced, it is correct {a Twilight Zone bug}
    var mapHeight = document.documentElement.clientHeight;
    mapHeight = document.documentElement.clientHeight - _headerHeight - _toolbarHeight - 2;
    if (mapHeight < _minMap) mapHeight = _minMap;
    map.style.height = String(mapHeight) + "px";

    // redraw map
    _map.resize();
    _map.reposition();

    // panel dimensions
    var panelHeight = document.documentElement.clientHeight - _headerHeight - _toolbarHeight;
    panel.style.height = String(panelHeight) + "px";

    // panel resizer dimensions
    var resizerHeight = document.documentElement.clientHeight - _headerHeight - _toolbarHeight;
    resizer.style.height = String(resizerHeight) + "px";
    resizer.style.top = _headerHeight + _toolbarHeight;
    resizer.style.left = panel.style.width;
    
    // loading image position
    var loadingWidth = loading.style.width.substring(0, loading.style.width.length - 2);
    loading.style.left = String(panelWidth + (mapWidth / 2) - (loadingWidth / 2)) + "px";
    loading.style.top = String(_headerHeight + (mapHeight / 2)) + "px";
}

function BeginPanelDrag(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    e.preventDefault();
    if (e.stopPropagation) e.stopPropagation();

    // clientX can be 0 to 10 more than resizer left
    var resizer = dojo.byId("resizer");
    var left = Number(resizer.style.left.substring(0, resizer.style.left.length - 2));
    _offsetX = e.clientX - left;

    HideMap();

    // connect mousemove and mouseup events
    window.onresize = null;
    _mousemove = dojo.connect(document, "mousemove", PanelDrag);
    _mouseup = dojo.connect(document, "mouseup", EndPanelDrag);
}

function PanelDrag(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    e.preventDefault();
    if (e.stopPropagation) e.stopPropagation();

    var button = event.button;  // IE
    //if (!button) button = e.which;  // Firefox
    if (button == 0) EndPanelDrag(e);
    
    // adjust clientX by mousedown X
    var width = e.clientX - _offsetX;

    // limit adjustment
    if (width < 20) return;
    if (width > document.documentElement.clientWidth - _scrollbarWidth - _minMap) return;

    var panel = dojo.byId("panel");
    panel.style.width = width + "px";

    var resizer = dojo.byId("resizer");
    resizer.style.left = width + "px";
}

function EndPanelDrag(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    e.preventDefault();
    if (e.stopPropagation) e.stopPropagation();

    dojo.disconnect(_mousemove);
    dojo.disconnect(_mouseup);

    ResizeMap();
    window.onresize = ResizeMap;

    setTimeout("ShowMap()", 2000);
}    

