// aimsDHTML.js
/*
*  JavaScript template file for ArcIMS HTML Viewer
*       dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js,
*       aimsLayers.js
*/

var aimsDHTMLPresent=true;


/*
***************************************************************************************

DHTML layer functions

***************************************************************************************
*/

        // Create a DHTML layer
        function createLayer(name, left, top, width, height, visible, content) {
              var layer;
              if (isNav4) {
                document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  '>');
                document.writeln(content);
                document.writeln('</layer>');
                //layer = getLayer(name);
               // layer.width = width;
               // layer.height = height;
              //}
              } else {
             // if (isNav) {
                document.writeln('<div id="' + name + '" style="position:absolute; overflow:hidden; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
                document.writeln(content);
                document.writeln('</div>');
              }
              //clipLayer(name, 0, 0, width, height);
        }
        
        // get the layer object called "name"
        function getLayer(name) {
              if (isNav4)
                return(document.layers[name]);
              else if (isIE) {
                layer = eval('document.all.' + name + '.style');
                return(layer);
              } else if (isNav) {
                var theElements = document.getElementsByTagName("DIV");
                var theObj;
                var j = -1;
                for (i=0;i<theElements.length;i++) {
                    if (theElements[i].id==name) theObj = theElements[i].style;
                }
                return theObj
              }
              else
                return(null);
        }
        
function isVisible(name) {
      var layer = getLayer(name);
      if (isNav && layer.visibility == "show")
        return(true);
      if (isIE && layer.visibility == "visible")
        return(true);
      return(false);
}


// move layer to x,y
function moveLayer(name, x, y) {        
    var layer = getLayer(name);     
    if (isNav4)
        layer.moveTo(x, y);
    //if (document.all) {
     else {
        layer.left = x;
         layer.top  = y;
    }
}

// set layer background color
function setLayerBackgroundColor(name, color) {     
    var layer = getLayer(name);     
     if (isNav4)
        layer.bgColor = color;
    //else if (document.all)
    else
        layer.backgroundColor = color;
}

// toggle layer to invisible
function hideLayer(name) {      
    var layer = getLayer(name);     
    if (isNav4)
        layer.visibility = "hide";
    //if (document.all)
    else
         layer.visibility = "hidden";
}

// toggle layer to visible
function showLayer(name) {      
    var layer = getLayer(name);     
    if (isNav4)
        layer.visibility = "show";
    //if (document.all)
    else
     layer.visibility = "visible";
}

// clip layer display to clipleft, cliptip, clipright, clipbottom
    // Not working with Mozilla Milestone 12 (Nav5)
function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {        
      var layer = getLayer(name);       
      if (isNav4) {
            layer.clip.left   = clipleft;
            layer.clip.top    = cliptop;
            layer.clip.right  = clipright;
            layer.clip.bottom = clipbottom;
      }
      //if (document.all)
      else
            layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
}

// replace layer's content with new content
    // not working with Mozilla Milestone 12 (Nav5)
function replaceLayerContent(name, content) {
      if (isNav4) {
            var layer = getLayer(name);
            layer.document.open();
            layer.document.writeln(content);
            layer.document.close();
      }  else if (isIE) {
            var str = "document.all." + name + ".innerHTML = '" + content + "'";
            eval(str);
      }
}

/*
// get window width     
function getWinWidth() {
      if (isNav)
            return(window.innerWidth);
      else if (isIE)
            return(document.body.clientWidth);
      else
            return(null);
}

// get window height
function getWinHeight() {
    if (isNav)
        return(window.innerHeight);
    else if (isIE)
        return(document.body.clientHeight);
    else
        return(null);
}
*/

// toggle Overview Map display
function toggleOVMap() {
    if (imsURL!="") {
        ovIsVisible = !ovIsVisible;
        if (ovIsVisible) {
            //showRetrieveMap();
            //var theString = writeOVXML();
            putExtentOnOVMap();
            showLayer("ovLayer");
            showLayer("ovShadow");
            
            showLayer("zoomOVBoxTop");
            showLayer("zoomOVBoxLeft");
            showLayer("zoomOVBoxRight");
            showLayer("zoomOVBoxBottom");
            //sendToServer(imsOVURL,theString,2);
            
        } else {
            hideLayer("ovLayer");
            hideLayer("ovShadow");
            hideLayer("zoomOVBoxTop");
            hideLayer("zoomOVBoxLeft");
            hideLayer("zoomOVBoxRight");
            hideLayer("zoomOVBoxBottom");
            //hideLayer("ovBox");
        }
        if (isIE) {
            document.all.theTop.style.cursor = theCursor;
        }
    } else {
        alert("A MapService must be loaded");
    }
    
}

// plot extent box on overview map
function putExtentOnOVMap() {
    var ovXincre = fullOVWidth / i2Width;
    var ovYincre = fullOVHeight / i2Height;
    var vleft = (left - fullOVLeft) / ovXincre + ovBorderWidth;
    var vright = (right - fullOVLeft) / ovXincre + ovBorderWidth;
    var vtop = (fullOVTop - top) / ovYincre + ovBorderWidth;
    var vbottom = (fullOVTop - bottom) / ovYincre + ovBorderWidth;
    if (isNav5up) {
        moveLayer("zoomOVBoxTop",vleft,vtop);
        moveLayer("zoomOVBoxBottom",vright-cornerOffset,vbottom-cornerOffset);
        moveLayer("zoomOVBoxLeft",vleft,vbottom-cornerOffset);
        moveLayer("zoomOVBoxRight",vright-cornerOffset,vtop);
    } else {        
        clipLayer("zoomOVBoxTop",vleft,vtop-ovExtentBoxSize,vright,vtop);
        clipLayer("zoomOVBoxLeft",vleft-ovExtentBoxSize,vtop-ovExtentBoxSize,vleft,vbottom);
        clipLayer("zoomOVBoxRight",vright,vtop-ovExtentBoxSize,vright+ovExtentBoxSize,vbottom);
        clipLayer("zoomOVBoxBottom",vleft,vbottom-ovExtentBoxSize,vright,vbottom);
    }    
}

function boxIt(theLeft,theTop,theRight,theBottom) {
    if (isNav5up) {
        // /*
        moveLayer("zoomBoxTop",theLeft,theTop);
        moveLayer("zoomBoxBottom",theRight-cornerOffset,theBottom-cornerOffset);
        moveLayer("zoomBoxLeft",theLeft,theBottom-cornerOffset);
        moveLayer("zoomBoxRight",theRight-cornerOffset,theTop);
        // */
         /*
        moveLayer("zoomBoxTop",0,theTop-ovBoxSize+1);
        moveLayer("zoomBoxBottom",0,theBottom);
        moveLayer("zoomBoxLeft",theLeft-ovBoxSize+1,0);
        moveLayer("zoomBoxRight",theRight,0);
         */
    
    } else {
        clipLayer("zoomBoxTop",theLeft,theTop,theRight,theTop+ovBoxSize);
        clipLayer("zoomBoxLeft",theLeft,theTop,theLeft+ovBoxSize,theBottom);
        clipLayer("zoomBoxRight",theRight-ovBoxSize,theTop,theRight,theBottom);
        clipLayer("zoomBoxBottom",theLeft,theBottom-ovBoxSize,theRight,theBottom);    
    }
}
