// 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);
  // */
  /*
  moveLayer("zoomOVBoxTop",ovBorderWidth,vtop);
  moveLayer("zoomOVBoxBottom",ovBorderWidth,vbottom);
  moveLayer("zoomOVBoxLeft",vleft,ovBorderWidth);
  moveLayer("zoomOVBoxRight",vright,ovBorderWidth);
  */
 } 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);
 }
}
