var xgrid=null;
var ygrid=null;
var mx=null;
var my=null;
var cmx=null;
var cmy=null;
var zz=null;
var search=0;
var seeboxes=1;
var myWin=null;
var datapresent=0;
var boxespresent=0;
var ix=1;
var i=1;
var ii=1;
var iy=1;
var temp=' ';
var re=1;
var iix=1;
var iiy=1;
var xm=0;
var ym=0;
var zm=0;
var msg=' ';
var zoom=null;
function InitAll()
{
if (document.all) {
  msg = 'Internet Explorer';
  } else {
  if (document.getElementById) {
    msg = 'Firefox';
    } else {
    msg = 'Netscape';
    document.captureEvents(Event,MOUSEMOVE)
    }
  }
document.onmousemove=moveHandler
document.getElementById("PanUpButton").style.visibility="hidden"
document.getElementById("PanLeftButton").style.visibility="hidden"
document.getElementById("PanRightButton").style.visibility="hidden"
document.getElementById("PrintButton").style.visibility="hidden"
document.getElementById("PanDownButton").style.visibility="hidden"
document.getElementById("ModMapButton").style.visibility="hidden"
document.getElementById("ZoomInButton").style.visibility="hidden"
document.getElementById("ZoomOutButton").style.visibility="hidden"
document.getElementById("BackButton").style.visibility="hidden"
document.getElementById("box").style.visibility="hidden"
document.getElementById("Find").style.visibility="hidden"
document.getElementById("SFB").style.visibility="hidden"
document.getElementById("ShowBoxesButton").style.visibility="hidden"
lm=25;
tm=80;
li=685;
ti=80;
zz=3;
ix=1;
iy=1;
}
function moveHandler(evt) {
if (document.all) {
  mx=window.event.clientX + document.body.scrollLeft
  my=window.event.clientY + document.body.scrollTop
  } else {
  if (document.getElementById) {
    mx=evt.clientX + document.body.scrollLeft
    my=evt.clientY + document.body.scrollTop
    } else {
    mx=evt.pageX + window.pageXOffset
    my=evt.pageY + window.pageYOffset
    }
  }
if ((mx>li) && (mx<li+310) && (my>ti) && (my<ti+388)) {
  document.getElementById("temp").innerHTML = '<H3>Index Map</H3> Click to show detail at: ' +  mgref(mx,my)
  } else {
  document.getElementById("temp").innerHTML = '<H3>Index Map</H3> Click below to show detail'
  }
if (boxespresent>99) {
  if ((mx>lm) && (mx<lm+625) && (zm>0) && (my>tm) && (my<tm+375)) {
    document.getElementById("info").innerHTML = 'Mouse: ' +  mmgref(mx,my,zm) + 'Only the first 100 boxes up to ' + lastbox + ' are shown below.'
    Cursor()
    } else {
    document.getElementById("info").innerHTML = msg + ' Only the first 100 boxes up to ' + lastbox + ' are shown below.'
    NoCursor()
    }
  } else {
  if (boxespresent>0) {
    if ((mx>lm) && (mx<lm+625) && (zm>0) && (my>tm) && (my<tm+375)) {
      document.getElementById("info").innerHTML = 'Mouse: ' +  mmgref(mx,my,zm) + ' Click on a signal box icon for more information.'
      Cursor()
      } else {
      document.getElementById("info").innerHTML = msg + ' Click on a signal box icon for more information.'
      NoCursor()
      }
    } else {
    if ((mx>lm) && (mx<lm+625) && (zm>0) && (my>tm) && (my<tm+375)) {
      if (seeboxes==1) {
        document.getElementById("info").innerHTML = 'Mouse: ' +  mmgref(mx,my,zm) + ' No boxes here, try another view.'
        } else {
        document.getElementById("info").innerHTML = 'Mouse: ' +  mmgref(mx,my,zm) + ' Click ShowBoxes to show signal box locations.'
        }
      Cursor()
      } else {
      if (seeboxes==1) {
        document.getElementById("info").innerHTML = msg + ' No boxes here, try another view.'
        } else {
        document.getElementById("info").innerHTML = msg + ' Click ShowBoxes to show signal box locations.'
        }
      NoCursor()
      }
    }
  }
}

function Cursor()
{
if (zm==1) {
  x=10*parseInt(xgrid/10)+5+((mx-lm-312)*10/125);
  y=10*parseInt(ygrid/10)+5-((my-tm-187)*10/125);
  }
if (zm==3) {
  x=30*parseInt(xgrid/30)+15+((mx-lm-312)*30/125);
  y=30*parseInt(ygrid/30)+15-((my-tm-187)*30/125);
  }
if (zm==6) {
  x=60*parseInt(xgrid/60)+30+((mx-lm-312)*60/125);
  y=60*parseInt(ygrid/60)+30-((my-tm-187)*60/125);
  }
if (zz==3) {
  x=parseInt(li-77.8+0.0597*x)
  y=parseInt(ti+392.2-0.058*y)
  }
if (zz==2) {
  x=parseInt(li-0.7+(0.1194*x)-(155*ix))
  y=parseInt(ti+202.5-(0.116*y)+(194*iy))
  }
if (zz==1) {
  x=parseInt(li-156.4+(0.2388*x)-(155*ix))
  y=parseInt(ti+211-(0.232*y)+(194*iy))
  }
if ((x>li) && (x<li+310) && (y>ti) && (y<ti+388)) {
  document.getElementById("CurInf").src="../images/cursor.gif"
  document.getElementById("CurDiv").style.top=(y-12) + "px"
  document.getElementById("CurDiv").style.left=(x-12) + "px"
  document.getElementById("CurDiv").style.visibility="visible"
  } else {
  document.getElementById("CurInf").src="../images/blank.gif"
  document.getElementById("CurDiv").style.top="10px"
  document.getElementById("CurDiv").style.left="10px"
  document.getElementById("CurDiv").style.visibility="hidden"
  }
}

function NoCursor()
{
document.getElementById("CurInf").src="../images/blank.gif"
document.getElementById("CurDiv").style.top="10px"
document.getElementById("CurDiv").style.left="10px"
document.getElementById("CurDiv").style.visibility="hidden"
}

function NoSearch() {
if (search>0) {
  i=1
  boxespresent=0
  do {
    gi[i]=0
    }
  while (i++<101)
  xb[0]=0
  yb[0]=0
  PlotBoxes()
  PlotBig()
  }
search=0
document.getElementById("box").value=""
}

function PrintWin(x,y) {
if (myWin && !myWin.closed) {
  myWin.close()
}
myWin=window.open("","boxinfo","toolbar=no,location=no,scrollbars=no,width=920,height=640")
myWin.document.write('<HTML><HEAD><TITLE>1940s Railway Map at ' + gridref(xgrid,ygrid) + '</TITLE>')
myWin.document.write('</HEAD><body>')
myWin.document.writeln('<script language="Javascript" type="text/javascript">')
myWin.document.writeln('<!-- Hide script from older browsers')
myWin.document.writeln('function printMe() {')
myWin.document.writeln('document.getElementById("printme").style.visibility="hidden"')
myWin.document.writeln('window.print()')
myWin.document.writeln('document.getElementById("printme").style.visibility="visible"')
myWin.document.writeln('}')
myWin.document.writeln('//End hiding script-' + '->')
myWin.document.writeln('</script>')
myWin.document.write('<div style="position: absolute; top: 0px; left:16px; font-size:6pt">' + parseInt((xgrid-30)/1000)%10  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:20px; font-size:10pt">' + parseInt(xgrid/10-3)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:145px; font-size:10pt">' + parseInt(xgrid/10-2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:270px; font-size:10pt">' + parseInt(xgrid/10-1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:395px; font-size:10pt">' + parseInt(xgrid/10)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:520px; font-size:10pt">' + parseInt(xgrid/10+1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:645px; font-size:10pt">' + parseInt(xgrid/10+2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:770px; font-size:10pt">' + parseInt(xgrid/10+3)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 0px; left:895px; font-size:10pt">' + parseInt(xgrid/10+4)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 10px; left:6px; font-size:6pt">' + parseInt((ygrid+30)/1000)%10  + '</div>')
myWin.document.write('<div style="position: absolute; top: 10px; left:10px; font-size:10pt">' + parseInt(ygrid/10+3)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 135px; left:10px; font-size:10pt">' + parseInt(ygrid/10+2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 260px; left:10px; font-size:10pt">' + parseInt(ygrid/10+1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 385px; left:10px; font-size:10pt">' + parseInt(ygrid/10)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 510px; left:10px; font-size:10pt">' + parseInt(ygrid/10-1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 630px; left:10px; font-size:10pt">' + parseInt(ygrid/10-2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 10px; left:905px; font-size:10pt">' + parseInt(ygrid/10+3)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 135px; left:905px; font-size:10pt">' + parseInt(ygrid/10+2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 260px; left:905px; font-size:10pt">' + parseInt(ygrid/10+1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 385px; left:905px; font-size:10pt">' + parseInt(ygrid/10)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 510px; left:905px; font-size:10pt">' + parseInt(ygrid/10-1)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 630px; left:905px; font-size:10pt">' + parseInt(ygrid/10-2)%100  + '</div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:25px; font-size:10pt"><img src="' + fref1(x-30,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:150px; font-size:10pt"><img src="' + fref1(x-20,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:275px; font-size:10pt"><img src="' + fref1(x-10,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:400px; font-size:10pt"><img src="' + fref1(x,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:525px; font-size:10pt"><img src="' + fref1(x+10,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:650px; font-size:10pt"><img src="' + fref1(x+20,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 15px; left:775px; font-size:10pt"><img src="' + fref1(x+30,y+20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:25px; font-size:10pt"><img src="' + fref1(x-30,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:150px; font-size:10pt"><img src="' + fref1(x-20,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:275px; font-size:10pt"><img src="' + fref1(x-10,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:400px; font-size:10pt"><img src="' + fref1(x,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:525px; font-size:10pt"><img src="' + fref1(x+10,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:650px; font-size:10pt"><img src="' + fref1(x+20,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 140px; left:775px; font-size:10pt"><img src="' + fref1(x+30,y+10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:25px; font-size:10pt"><img src="' + fref1(x-30,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:150px; font-size:10pt"><img src="' + fref1(x-20,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:275px; font-size:10pt"><img src="' + fref1(x-10,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:400px; font-size:10pt"><img src="' + fref1(x,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:525px; font-size:10pt"><img src="' + fref1(x+10,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:650px; font-size:10pt"><img src="' + fref1(x+20,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 265px; left:775px; font-size:10pt"><img src="' + fref1(x+30,y) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:25px; font-size:10pt"><img src="' + fref1(x-30,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:150px; font-size:10pt"><img src="' + fref1(x-20,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:275px; font-size:10pt"><img src="' + fref1(x-10,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:400px; font-size:10pt"><img src="' + fref1(x,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:525px; font-size:10pt"><img src="' + fref1(x+10,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:650px; font-size:10pt"><img src="' + fref1(x+20,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 390px; left:775px; font-size:10pt"><img src="' + fref1(x+30,y-10) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:25px; font-size:10pt"><img src="' + fref1(x-30,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:150px; font-size:10pt"><img src="' + fref1(x-20,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:275px; font-size:10pt"><img src="' + fref1(x-10,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:400px; font-size:10pt"><img src="' + fref1(x,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:525px; font-size:10pt"><img src="' + fref1(x+10,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:650px; font-size:10pt"><img src="' + fref1(x+20,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.write('<div style="position: absolute; top: 515px; left:775px; font-size:10pt"><img src="' + fref1(x+30,y-20) + '" border="0" width="125" height="125"></div>')
myWin.document.writeln('<input type="button" value="Print Map (use A4 Landscape)" onclick="printMe()" ID="printme" style="position:absolute;left:40px;top:500px"/>')
for (i=1; i<gi.length; i++) {
  xm=xb[gi[i]]
  ym=yb[gi[i]]
  temp2 = rb[gi[i]]
  re = /^(\w\w)\s(\w\w\w-\w\w\w)/
  temp = re.exec(temp2)
  temp2='../images/box3' + RegExp.$1 + '.gif'
  if ((xm>(10*parseInt(xgrid/10)-30)) && (xm<(10*parseInt(xgrid/10)+40)) && (ym>(10*parseInt(ygrid/10)-20)) && (ym<(10*parseInt(ygrid/10)+30))) {
    myWin.document.write('<div style="position: absolute; top: ' + parseInt(640-12.5*(ym-(10*parseInt(ygrid/10))+20)) + 'px; left: ' + parseInt(25+12.5*(xm-(10*parseInt(xgrid/10))+30)) + 'px;"><img src="' + temp2 + '" border="0" width="24" height="24"></div>')
    xm=-2*(nb[gi[i]].length)+parseInt(39+12.5*(xm-(10*parseInt(xgrid/10))+30))
    ym=parseInt(662-12.5*(ym-(10*parseInt(ygrid/10))+20))
    myWin.document.write('<div style="position: absolute; top: ' + ym + 'px; left: ' + xm + 'px; height:12px;')
    myWin.document.write('  font-family:Arial,sans-serif; font-weight:bold; color:White; text-decoration:none; text-align:center; background:#0000FF; border:1px solid #FF0000; font-size: 6pt;">' + nb[gi[i]].toUpperCase() + '</div>')
    }
  }
myWin.document.write("</BODY></HTML>")
myWin.document.close()
myWin.focus()
}

function SeeBoxes()
{
if (seeboxes == 1) {
  seeboxes=0
  search=0
  boxespresent=0
  i=1
  do {
    gi[i]=0
    }
  while (i++<101)
  xb[0]=0
  yb[0]=0
  PlotBoxes()
  document.getElementById("ShowBoxesButton").value = 'Show boxes'
  } else {
  ShowBoxes()
  seeboxes=1
  document.getElementById("ShowBoxesButton").value = 'Hide boxes'
  }
PlotBig()
}

function IndexClk(x,y)
{
msg='Detail requested at ' + mgref(mx,my);
document.getElementById("info").innerHTML = msg
if (zm == 0) {
  document.getElementById("PanUpButton").style.visibility="visible"
  document.getElementById("PanLeftButton").style.visibility="visible"
  document.getElementById("PrintButton").style.visibility="visible"
  document.getElementById("PanRightButton").style.visibility="visible"
  document.getElementById("PanDownButton").style.visibility="visible"
  document.getElementById("ModMapButton").style.visibility="visible"
  document.getElementById("box").style.visibility="visible"
  document.getElementById("Find").style.visibility="visible"
  document.getElementById("SFB").style.visibility="visible"
  document.getElementById("ShowBoxesButton").style.visibility="visible"
  }
if (zz==1) {
  if (((x>li+20) || (ix<2)) && ((x<li+290) || (ix>6)) && ((y>ti+20) || (iy>11)) && ((y<ti+368) || (iy<2))) {
    xgrid=1304+((x-li)/0.2388)+((ix-1)*155/0.2388);
    ygrid=73-((y-ti-388)/0.232)+((iy-1)*194/0.232);
//  msg=msg + 'mid-btm map: ' + fref1(xgrid,ygrid-10);
    zm=1
    document.getElementById("ZoomInButton").style.visibility="hidden"
    document.getElementById("ZoomOutButton").style.visibility="visible"
    ShowMap(zm)
  } else {
    if ((y<=ti+20) && (iy<12)) {
      iy++
      }
    if ((y>=ti+368) && (iy>1)) {
      iy--
      }
    if ((x>=li+290) && (ix<7)) {
      ix++
      }
    if ((x<=li+20) && (ix>1)) {
      ix--
      }
    document.getElementById("indA").src = indMap(ix,iy+1,zz)
    document.getElementById("indB").src = indMap(ix+1,iy+1,zz)
    document.getElementById("indC").src = indMap(ix,iy,zz)
    document.getElementById("indD").src = indMap(ix+1,iy,zz)
    document.getElementById("indG").src = indGrid(ix,iy,zz)
//  msg=msg + 'mid-btm map: ' + fref3(xgrid,ygrid-30);
    zm=3
    document.getElementById("ZoomInButton").style.visibility="visible"
    document.getElementById("ZoomOutButton").style.visibility="visible"
    }
  }
if (zz==2) {
  if (((x>li+20) || (ix<2)) && ((x<li+290) || (ix>2)) && ((y>ti+20) || (iy>4)) && ((y<ti+368) || (iy<2))) {
    zz=zz-1;
    document.getElementById("BackButton").style.visibility="visible"
    xgrid=1304+((x-li)/0.1194)+((ix-1)*155/0.1194);
    ygrid=73-((y-ti-388)/0.116)+((iy-1)*194/0.116);
    iy=(iy-1)*2+parseInt(((ti+436-my)/97));
    ix=(ix-1)*2+parseInt(((mx-li+39)/77.5));
    if (ix>7) {
       ix=7
       }
    if (iy>12) {
       iy=12
       }
    if (ix<1) {
       ix=1
       }
    if (iy<1) {
       iy=1
       }
    document.getElementById("indA").src = indMap(ix,iy+1,zz)
    document.getElementById("indB").src = indMap(ix+1,iy+1,zz)
    document.getElementById("indC").src = indMap(ix,iy,zz)
    document.getElementById("indD").src = indMap(ix+1,iy,zz)
    document.getElementById("indG").src = indGrid(ix,iy,zz)
//  msg=msg + 'mid-btm map: ' + fref3(xgrid,ygrid-30);
    zm=3
    document.getElementById("ZoomInButton").style.visibility="visible"
    document.getElementById("ZoomOutButton").style.visibility="visible"
    ShowMap(zm)
  } else {
    if ((y<=ti+20) && (iy<5)) {
      iy++
      }
    if ((y>=ti+368) && (iy>1)) {
      iy--
      }
    if ((x>=li+290) && (ix<3)) {
      ix++
      }
    if ((x<=li+20) && (ix>1)) {
      ix--
      }
    document.getElementById("indA").src = indMap(ix,iy+1,zz)
    document.getElementById("indB").src = indMap(ix+1,iy+1,zz)
    document.getElementById("indC").src = indMap(ix,iy,zz)
    document.getElementById("indD").src = indMap(ix+1,iy,zz)
    document.getElementById("indG").src = indGrid(ix,iy,zz)
//  msg=msg + 'mid-btm map: ' + fref6(xgrid,ygrid-60);
    zm=6
    document.getElementById("ZoomInButton").style.visibility="visible"
    document.getElementById("ZoomOutButton").style.visibility="hidden"
    }
  }
if (zz==3) {
  zz=zz-1;
  document.getElementById("BackButton").style.visibility="visible"
  xgrid=1304+((x-li)/0.0597);
  ygrid=73-((y-ti-388)/0.058);
  ix=parseInt((mx-li+39)/77.5);
  iy=parseInt((ti+436-my)/97);
  if (ix>3) {
     ix=3
     }
  if (iy>5) {
     iy=5
     }
  if (ix<1) {
     ix=1
     }
  if (iy<1) {
     iy=1
     }
  document.getElementById("indA").src = indMap(ix,iy+1,zz)
  document.getElementById("indB").src = indMap(ix+1,iy+1,zz)
  document.getElementById("indC").src = indMap(ix,iy,zz)
  document.getElementById("indD").src = indMap(ix+1,iy,zz)
  document.getElementById("indG").src = indGrid(ix,iy,zz)
//msg=msg + 'mid-btm map: ' + fref6(xgrid,ygrid-60);
  zm=6
  document.getElementById("ZoomInButton").style.visibility="visible"
  document.getElementById("ZoomOutButton").style.visibility="hidden"
  ShowMap(zm)
  }
}

function indMap(x,y,z)
{
char1=" ABCDEFGHIJKLM"
return '../images/GBMap' + parseInt(z) + char1.charAt(x) + char1.charAt(y) + '.gif'
}
function indGrid(x,y,z)
{
char1=" ABCDEFGHIJKLM"
return '../images/Grid' + parseInt(z) + char1.charAt(x) + char1.charAt(y) + '.gif'
}
function mgref(x,y)
{
if (zz==1) {
  cmx=li+((x-li)/4)+((ix-1)*310/8);
  cmy=ti+388-((ti+388-y)/4)-((iy-1)*388/8);
  x=1304+((x-li)/0.2388)+((ix-1)*155/0.2388);
  y=73-((y-ti-388)/0.232)+((iy-1)*194/0.232);
  }
if (zz==2) {
  cmx=li+((x-li)/2)+((ix-1)*310/4);
  cmy=ti+388-((ti+388-y)/2)-((iy-1)*388/4);
  x=1304+((x-li)/0.1194)+((ix-1)*155/0.1194);
  y=73-((y-ti-388)/0.116)+((iy-1)*194/0.116);
  }
if (zz==3) {
  cmx=x;
  cmy=y;
  x=1304+((x-li)/0.0597);
  y=73-((y-ti-388)/0.058);
  }
return gridref(x,y);
// + ' Mouse: ' + parseInt(10*cmx) + ',' + parseInt(10*cmy) ;
}
function mmgref(x,y,z)
{
if (z==1) {
  x=10*parseInt(xgrid/10)+5+((x-lm-312)*10/125);
  y=10*parseInt(ygrid/10)+5-((y-tm-187)*10/125);
  }
if (z==3) {
  x=30*parseInt(xgrid/30)+15+((x-lm-312)*30/125);
  y=30*parseInt(ygrid/30)+15-((y-tm-187)*30/125);
  }
if (z==6) {
  x=60*parseInt(xgrid/60)+30+((x-lm-312)*60/125);
  y=60*parseInt(ygrid/60)+30-((y-tm-187)*60/125);
  }
return gridref(x,y);
}

function gref(x,y)
{
return gridref(x,y);
}

function fref1(x,y)
{
return 'http://tile.npemap.org.uk/osgb/1940s/scaled1/' + padnum(x/10) + '/' + padnum(y/10) + '.jpg';
}

function fref3(x,y)
{
return 'http://ustile.npemap.org.uk/osgb/1940s/scaled3/' + padnum(x/30) + '/' + padnum(y/30) + '.jpg';
}

function fref6(x,y)
{
return 'http://ustile.npemap.org.uk/osgb/1940s/scaled6/' + padnum(x/60) + '/' + padnum(y/60) + '.jpg';
}


function gridref(x,y) {
if (x<0 || x>7000 || y<0 || y>11000) {
	return "?? ??? ???"
	}
char1="HJKLMNOPQRST"
char2="ABCDEFGHJKLMNOPQRSTUVWXYZ"
return char1.charAt(10+(x/5000)-5*(y/5000-(y%5000)/5000)) +
	char2.charAt((x%5000)/1000+5*(4-(y%5000)/1000+((y%5000)%1000)/1000)) +
	padnum(x%1000) +
	padnum(y%1000) + "."
}

function padnum(xin) {
if (xin>99.999) {
	return parseInt(xin)
	}
if (xin>9.999) {
	return "0"+parseInt(xin)
	}
return "00"+parseInt(xin)
}

function IndexClick(evt)
{
IndexClk(mx,my)
}
function MapClk(elat,elong)
{
document.getElementById("info").innerHTML = 'Click on map at ' + parseInt(elat) + ':' + parseInt(elong);
}

function MapClick(evt)
{
MapClk(mx,my)
}
function DoMove(x,y)
{
if (zm==1) {
  xgrid+=x*20
  ygrid+=y*10
  }
if (zm==3) {
  xgrid+=x*60
  ygrid+=y*30
  }
if (zm==6) {
  xgrid+=x*120
  ygrid+=y*60
  }
msg=' '
document.getElementById("info").innerHTML = msg
ShowMap(zm)
}

function ShowMap(z)
{
if (z==1) {
  document.getElementById("mapA").src = fref1(xgrid-20,ygrid+10);
  document.getElementById("mapB").src = fref1(xgrid-10,ygrid+10);
  document.getElementById("mapC").src = fref1(xgrid,ygrid+10);
  document.getElementById("mapD").src = fref1(xgrid+10,ygrid+10);
  document.getElementById("mapE").src = fref1(xgrid+20,ygrid+10);
  document.getElementById("mapF").src = fref1(xgrid-20,ygrid);
  document.getElementById("mapG").src = fref1(xgrid-10,ygrid);
  document.getElementById("mapH").src = fref1(xgrid,ygrid);
  document.getElementById("mapI").src = fref1(xgrid+10,ygrid);
  document.getElementById("mapJ").src = fref1(xgrid+20,ygrid);
  document.getElementById("mapK").src = fref1(xgrid-20,ygrid-10);
  document.getElementById("mapL").src = fref1(xgrid-10,ygrid-10);
  document.getElementById("mapM").src = fref1(xgrid,ygrid-10);
  document.getElementById("mapN").src = fref1(xgrid+10,ygrid-10);
  document.getElementById("mapO").src = fref1(xgrid+20,ygrid-10);
  }
if (z==3) {
  document.getElementById("mapA").src = fref3(xgrid-60,ygrid+30);
  document.getElementById("mapB").src = fref3(xgrid-30,ygrid+30);
  document.getElementById("mapC").src = fref3(xgrid,ygrid+30);
  document.getElementById("mapD").src = fref3(xgrid+30,ygrid+30);
  document.getElementById("mapE").src = fref3(xgrid+60,ygrid+30);
  document.getElementById("mapF").src = fref3(xgrid-60,ygrid);
  document.getElementById("mapG").src = fref3(xgrid-30,ygrid);
  document.getElementById("mapH").src = fref3(xgrid,ygrid);
  document.getElementById("mapI").src = fref3(xgrid+30,ygrid);
  document.getElementById("mapJ").src = fref3(xgrid+60,ygrid);
  document.getElementById("mapK").src = fref3(xgrid-60,ygrid-30);
  document.getElementById("mapL").src = fref3(xgrid-30,ygrid-30);
  document.getElementById("mapM").src = fref3(xgrid,ygrid-30);
  document.getElementById("mapN").src = fref3(xgrid+30,ygrid-30);
  document.getElementById("mapO").src = fref3(xgrid+60,ygrid-30);
  }
if (z==6) {
  document.getElementById("mapA").src = fref6(xgrid-120,ygrid+60);
  document.getElementById("mapB").src = fref6(xgrid-60,ygrid+60);
  document.getElementById("mapC").src = fref6(xgrid,ygrid+60);
  document.getElementById("mapD").src = fref6(xgrid+60,ygrid+60);
  document.getElementById("mapE").src = fref6(xgrid+120,ygrid+60);
  document.getElementById("mapF").src = fref6(xgrid-120,ygrid);
  document.getElementById("mapG").src = fref6(xgrid-60,ygrid);
  document.getElementById("mapH").src = fref6(xgrid,ygrid);
  document.getElementById("mapI").src = fref6(xgrid+60,ygrid);
  document.getElementById("mapJ").src = fref6(xgrid+120,ygrid);
  document.getElementById("mapK").src = fref6(xgrid-120,ygrid-60);
  document.getElementById("mapL").src = fref6(xgrid-60,ygrid-60);
  document.getElementById("mapM").src = fref6(xgrid,ygrid-60);
  document.getElementById("mapN").src = fref6(xgrid+60,ygrid-60);
  document.getElementById("mapO").src = fref6(xgrid+120,ygrid-60);
  }
if ((search == 0) && (seeboxes == 1)) {
  ShowBoxes()
  } else {
  PlotBoxes()
  }
PlotBig()
}

function DoNewMap()
{
newmap=window.open('http://www.streetmap.co.uk/newmap.srf?x=' + parseInt(xgrid*100) + '&y=' + parseInt(ygrid*100) + '&z=3&sv=' + parseInt(xgrid*100) + ',' + parseInt(ygrid*100) + '&st=4&ar=Y&mapp=newmap.sfr&searchp=newsearch.srf' , 'newmap' , "width=800,height=850")
}

function DoBack()
{
if (zz==2) {
  zz=3
  ix=1
  iy=1
  document.getElementById("BackButton").style.visibility="hidden"
  document.getElementById("indA").src = "../images/GBMap3AB.gif"
  document.getElementById("indB").src = "../images/GBMap3BB.gif"
  document.getElementById("indC").src = "../images/GBMap3AA.gif"
  document.getElementById("indD").src = "../images/GBMap3BA.gif"
  document.getElementById("indG").src = "../images/Grid.gif"
  }
if (zz==1) {
  zz=2
  ix=parseInt((xgrid-500)/1400)
  iy=parseInt((ygrid+600)/1600)
  if (ix>3) {
     ix=3
     }
  if (iy>5) {
     iy=5
     }
  if (ix<1) {
     ix=1
     }
  if (iy<1) {
     iy=1
     }
  document.getElementById("indA").src = indMap(ix,iy+1,zz)
  document.getElementById("indB").src = indMap(ix+1,iy+1,zz)
  document.getElementById("indC").src = indMap(ix,iy,zz)
  document.getElementById("indD").src = indMap(ix+1,iy,zz)
  document.getElementById("indG").src = indGrid(ix,iy,zz)
  }
PlotBig()
}

function DoZoomIn()
{
msg=' '
document.getElementById("info").innerHTML = msg
if (zm==3) {
  zm=1
  document.getElementById("ZoomInButton").style.visibility="hidden"
  ShowMap(zm)
  }
if (zm==6) {
  zm=3
  document.getElementById("ZoomOutButton").style.visibility="visible"
  ShowMap(zm)
  }
}

function DoZoomOut()
{
msg=' '
document.getElementById("info").innerHTML = msg
if (zm==3) {
  zm=6
  document.getElementById("ZoomOutButton").style.visibility="hidden"
  ShowMap(zm)
  }
if (zm==1) {
  zm=3
  document.getElementById("ZoomInButton").style.visibility="visible"
  ShowMap(zm)
  }
}

function DoFind() {
findform=document.getElementById("box")
search = 0
lcbox = findform.value.toLowerCase()
ucbox = lcbox.toUpperCase()
re2 = new RegExp(lcbox,'i')
re = /[sS][.0-9][.0-9][.0-9][.0-9]/
i=1
jj=1
ii=1
do {
  if ((re.test(lcbox) && (sb[ii] == ucbox)) || re2.test(nb[ii])) {
    search=i
    gi[i++]=ii
    } else {
    if (qb[jj]==ii) {
      do {
        if (re2.test(ab[jj++])) {
          search=i
          gi[i++]=ii
          }
        } while (qb[jj]==ii)
      }
    }
  }
while ((ii++<xb.length) && (i<101))
xb[0]=0
yb[0]=0
if (search == 0) {
  findform.value='No boxes found'
  } else {
  boxespresent=search
  firstbox=findform.value
  findform.value='click to clear search'
  if (i<101) {
    do {
      gi[i]=0
      }
    while (i++<101)
    }
  zz=3
  ix=1
  iy=1
  document.getElementById("BackButton").style.visibility="hidden"
  document.getElementById("indA").src = "../images/GBMap3AB.gif"
  document.getElementById("indB").src = "../images/GBMap3BB.gif"
  document.getElementById("indC").src = "../images/GBMap3AA.gif"
  document.getElementById("indD").src = "../images/GBMap3BA.gif"
  document.getElementById("indG").src = "../images/Grid.gif"
  PlotBoxes()
  PlotBig()
  if (search == 1) {
    UpdateWin(1)
    }
  }
return false
}

function ShowBoxes()
{
if (datapresent==0) {
  xb = new Array
  yb = new Array
  nb = new Array
  sb = new Array
  hb = new Array
  gi = new Array
  rb = new Array
  zb = new Array
  qb = new Array
  ab = new Array
  j = 1
  i = 1
  InitGW()
  InitMR()
  InitER()
  InitSR()
  qd=i
  datapresent=1
  }
ii=1
i=1
boxespresent=0
cmx=30
cmy=20
if (zm==3) {
  cmx=90
  cmy=60
}
if (zm==6) {
  cmx=180
  cmy=120
}
do {
  if ((xb[ii]<xgrid+cmx) && (xb[ii]>xgrid-cmx)) {
    if ((yb[ii]<ygrid+cmy) && (yb[ii]>ygrid-cmy)) {
      boxespresent=i
      if (i==1) { firstbox=nb[ii] }
      lastbox=nb[ii]
      gi[i++]=ii
      }
    }
  }
while ((ii++<xb.length) && (i<101))
if (i<101) {
  do {
    gi[i]=0
    }
  while (i++<101)
  }
xb[0]=0
yb[0]=0
PlotBoxes()
PlotBig()
}

function PlotBoxes()
{
for (i=1; i<gi.length; i++) {
  xm=parseInt(lm+249.5+12.5*(xb[gi[i]]-(10*parseInt(xgrid/10))))
  ym=parseInt(tm+249.5-12.5*(yb[gi[i]]-(10*parseInt(ygrid/10))))
  if (zm==3) {
    xm=parseInt(lm+249.5+125*(xb[gi[i]]-(30*parseInt(xgrid/30)))/30)
    ym=parseInt(tm+249.5-125*(yb[gi[i]]-(30*parseInt(ygrid/30)))/30)
    }
  if (zm==6) {
    xm=parseInt(lm+249.5+125*(xb[gi[i]]-(60*parseInt(xgrid/60)))/60)
    ym=parseInt(tm+249.5-125*(yb[gi[i]]-(60*parseInt(ygrid/60)))/60)
    }
  if ((xm>lm) && (xm<lm+625) && (ym>tm) && (ym<tm+375)) {
    temp2 = rb[gi[i]]
    re = /^(\w\w)\s(\w\w\w-\w\w\w)/
    temp = re.exec(temp2)
    document.getElementById("BoxInfo" + i).src="../images/box3" + RegExp.$1 + ".gif"
    document.getElementById("BoxInfo" + i).alt=nb[gi[i]]
    document.getElementById("BoxInfo" + i).title=nb[gi[i]]
//    document.getElementById("BoxInfo" + i).title="box3" + RegExp.$1 + ".gif"
    document.getElementById("BoxDiv" + i).style.top=ym + "px"
    document.getElementById("BoxDiv" + i).style.left=xm + "px"
    document.getElementById("BoxDiv" + i).style.visibility="visible"
    } else {
    document.getElementById("BoxInfo" + i).src="../images/blank.gif"
    document.getElementById("BoxInfo" + i).alt="BoxName"
    document.getElementById("BoxInfo" + i).title="BoxName"
    document.getElementById("BoxDiv" + i).style.top="10px"
    document.getElementById("BoxDiv" + i).style.left="10px"
    document.getElementById("BoxDiv" + i).style.visibility="hidden"
    }
  }
}
function PlotBig()
{
for (i=1; i<gi.length; i++) {
  xm=parseInt(li-77.8+0.0597*xb[gi[i]])
  ym=parseInt(ti+392.2-0.058*yb[gi[i]])
  if (zz==2) {
    xm=parseInt(li-0.7+(0.1194*xb[gi[i]])-(155*ix))
    ym=parseInt(ti+202.5-(0.116*yb[gi[i]])+(194*iy))
    }
  if (zz==1) {
    xm=parseInt(li-156.4+(0.2388*xb[gi[i]])-(155*ix))
    ym=parseInt(ti+211-(0.232*yb[gi[i]])+(194*iy))
    }
  if ((xm>li) && (xm<li+310) && (ym>ti) && (ym<ti+388)) {
    temp2 = rb[gi[i]]
    re = /^(\w\w)\s(\w\w\w-\w\w\w)/
    temp = re.exec(temp2)
    document.getElementById("BoxInf" + i).src="../images/box3" + RegExp.$1 + ".gif"
    document.getElementById("BoxInf" + i).alt=nb[gi[i]]
    document.getElementById("BoxInf" + i).title=nb[gi[i]]
//    document.getElementById("BoxInf" + i).title="box3" + RegExp.$1 + ".gif"
    document.getElementById("IndDiv" + i).style.top=ym + "px"
    document.getElementById("IndDiv" + i).style.left=xm + "px"
    document.getElementById("IndDiv" + i).style.visibility="visible"
    } else {
    document.getElementById("BoxInf" + i).src="../images/blank.gif"
    document.getElementById("BoxInf" + i).alt="BoxName"
    document.getElementById("BoxInf" + i).title="BoxName"
    document.getElementById("IndDiv" + i).style.top="10px"
    document.getElementById("IndDiv" + i).style.left="10px"
    document.getElementById("IndDiv" + i).style.visibility="hidden"
    }
  }
}

function UpdateWin(i) {
re = /[sS][.0-9][.0-9][.0-9][.0-9]/
temp=''
if (re.test(sb[gi[i]])) {
  temp='<BR>Stick number: ' + sb[gi[i]]
}
temp2=''
j=1
do {
  if (qb[j]==gi[i]) {
    temp2=temp2 + '<BR>Also: ' + ab[j]
  }
} while (j++<ab.length)
document.getElementById("boxdetail").innerHTML = 'Signal box: <SPAN class="homeunlink">' + nb[gi[i]] + '</SPAN>' + temp + '<BR>Railref number: ' + rb[gi[i]] + '<BR>Grid reference: ' + gridref(xb[gi[i]],yb[gi[i]]) + '<BR>SRS diagram <A HREF="http://www.s-r-s.org.uk/html/drawings.html">' + hb[gi[i]] + '</A>' + temp2 + '<BR>' + zb[gi[i]]
temp2 = rb[gi[i]]
re = /^\w\w\s\w\w\w/
temp = temp2.match(re)
if (myWin && !myWin.closed && myWin.most) {
  myWin.most.document.location.hash="S" + temp2 
  myWin.title.document.location.hash="SZ1"
  myWin.focus()
} else {
//  myWin=window.open("GWFrame.htm","boxinfo","toolbar=no,location=no,scrollbars=no,width=1000,height=150")
//  myWin.most.document.location.href="GWRegister.htm#SGW 020-020"
//  myWin.title.document.location.href="GWRegister.htm#SA1"
//  myWin.focus()
}
}


function NewWin() {
document.getElementById("boxdetail").innerHTML = '<SPAN class="homeunlink">Detailed information</SPAN><BR>Click on a signal box icon in the left hand map window to show detailed information.'
//REMOVE ABILITY TO OPEN REGISTER
if (myWin && !myWin.closed) {
//  myWin.most.document.location.href="GWRegister.htm#R" + temp2 
//  myWin.title.document.location.href="GWRegister.htm#R" + temp
//  myWin.focus()
} else {
  myWin=window.open("../cgi-bin/srs.cgi","boxinfo","toolbar=no,location=no,scrollbars=no,width=1000,height=150")
  myWin.focus()
}
}
