var downx=0;
var downy=0;
var upx=0;
var upy=0;
var currx=0;
var curry=0;
var mtoggle=0;
var imgsizex=0;
var imgsizey=0;

function show_tab(selectedtab) {
  var currdiv;
  tablist = new Array ("layer","overview","help","search","q","about");
  for(tabidx in tablist) {
    divname = tablist[tabidx] + "div"
    currdiv = top.document.getElementById(divname);
    if ( tablist[tabidx] == selectedtab ) {
      currdiv.style.visibility = 'visible';
      top.document.getElementById(tablist[tabidx]).style.background="#c0c9c0";
      }
    else {
      currdiv.style.visibility = 'hidden';
      top.document.getElementById(tablist[tabidx]).style.background="#f0f0f0";
      }
  }
}

function downxy(e) {
if(mtoggle==0) {
  if(navigator.appName == 'Netscape') {
    downx=e.pageX;
    downy=e.pageY;
    button=e.which;
    }
  else {
    downx=event.clientX;
    downy=event.clientY;
    button=event.button;
    }

  if(button == '1') {
    mtoggle=1;
    if(document.mapform.z.value == '1' || document.mapform.z.value == '5' || document.mapform.z.value == '6') {
      rbox=document.getElementById("rboxov");
      rbox.style.left = downx;
      rbox.style.top = downy;
      rbox.style.width = 0;
      rbox.style.height = 0;
      rbox.style.visibility = 'visible';
      }
    }
  }
}

function upxy(e) {
  if(mtoggle == '1') {

  if(navigator.appName == 'Netscape') {
    upx=e.pageX;
    upy=e.pageY;
    button=e.which;
    }
  else {
    upx=event.clientX;
    upy=event.clientY;
    button=event.button;
    }

  mtoggle=0;
  func=document.mapform.z.value;
  rbox=document.getElementById("rboxov");
  rbox.style.visibility = 'hidden';
  ex=parseFloat(document.mapform.ex.value);
  ey=parseFloat(document.mapform.ey.value);
  scale=ex*2/imgsizex;
  ulx = parseFloat(document.mapform.x.value)-(scale*(imgsizex/2));
  uly = parseFloat(document.mapform.y.value)+(scale*(imgsizey/2));

  switch(func) {

    // zoom in box
    case '1': boxheight=parseFloat(rbox.style.height)*scale;
              newey = boxheight/2;
              newscale = boxheight/imgsizey;
              newex = imgsizex * newscale / 2;
              break;

    // zoom in fixed
    case '2': newex = ex/2; 
              newey = ey/2;
              break;

    // query & pan
    case '6': 
    case '3': newex=ex;
              newey=ey; 
              break;

    // zoom out fixed
    case '4': newex = ex*2; 
              newey = ey*2;
              break;

    // zoom out box
    case '5': boxheight = parseFloat(rbox.style.height)*scale;
              zoomratio = (ey*2)/boxheight;
              newey = ey * zoomratio;
              newex = ex * zoomratio;
              break;
    } 

  if(newex>150 && newex<800000) {
  
    if(func == '6') {
      document.mapform.target=top.frames['querywin'].name;
      document.mapform.action="/lcap/query.php";
      show_tab("q");
      }
    else {
      document.getElementById("messagescrn").style.visibility = 'visible';
      document.mapform.target=top.frames['mapdisplay'].name;
      document.mapform.action="/lcap/genmap.php";
      }

    if(func == '3') {
      document.mapform.x.value = parseFloat(document.mapform.x.value) - (scale*(currx-downx));
      document.mapform.y.value = parseFloat(document.mapform.y.value) + (scale*(curry-downy));
      }
    else if(func == '6') {
      x1=parseFloat(rbox.style.left);
      y1=parseFloat(rbox.style.top);
      x2=x1+parseFloat(rbox.style.width);
      y2=y1+parseFloat(rbox.style.height);
      document.mapform.qminx.value = ulx+(scale*x1);
      document.mapform.qminy.value = uly-(scale*y2);
      document.mapform.qmaxx.value = ulx+(scale*x2);
      document.mapform.qmaxy.value = uly-(scale*y1);
      document.mapform.sf.value = 4;
      }
    else if(func == '1' || func == '5') {
      cx=parseFloat(rbox.style.left)+(parseFloat(rbox.style.width)/2);
      cy=parseFloat(rbox.style.top)+(parseFloat(rbox.style.height)/2);
      document.mapform.x.value = ulx+scale*cx;
      document.mapform.y.value = uly-scale*cy;
      document.mapform.ex.value = newex;
      document.mapform.ey.value = newey;
      }
    else {
      document.mapform.x.value = ulx+(scale*downx);
      document.mapform.y.value = uly-(scale*downy);
      document.mapform.ex.value = newex;
      document.mapform.ey.value = newey;
      }
    document.mapform.submit();
    }
  else
    alert('attempted extent (' + newex + ' meters) exceeds limit');
  }
  }

function outxy(e) {
  if(mtoggle==1 && document.mapform.z.value == '3')
    upxy(e);
 }

function mm(e) {
  if(navigator.appName == 'Netscape') {
    currx = parseFloat(e.pageX);
    curry = parseFloat(e.pageY);
    }
  else {
    currx = parseFloat(event.clientX);
    curry = parseFloat(event.clientY);
    }

  if(mtoggle==1) {
    if(document.mapform.z.value==3) {
      ml=document.getElementById("map");
      ml.style.left = currx - downx;
      ml.style.top  = curry - downy;
      }
    else if(document.mapform.z.value==1||document.mapform.z.value==5||document.mapform.z.value==6){
      rbox=document.getElementById("rboxov");
      if(currx>downx) {
         rbox.style.left = downx;
         rbox.style.width = currx-downx;
         }
      else {
         rbox.style.left = currx;
         rbox.style.width = downx-currx;
         }
      if(curry>downy) {
        rbox.style.top = downy;
        rbox.style.height = curry-downy;
        }
      else {
        rbox.style.top = curry;
        rbox.style.height = downy-curry;
         }
      }
    }
  else {
    ex=parseFloat(document.mapform.ex.value);
    ey=parseFloat(document.mapform.ey.value);
    scale=ex*2/imgsizex;
    ulx = parseFloat(document.mapform.x.value)-(scale*(imgsizex/2));
    uly = parseFloat(document.mapform.y.value)+(scale*(imgsizey/2));
    top.document.forms['coordform'].elements['xcoord'].value = Math.floor(ulx+(scale*currx)) + "E";
    top.document.forms['coordform'].elements['ycoord'].value = Math.floor(uly-(scale*curry)) + "N";
    }
  }
