  var xmouse, ymouse, xfrom, yfrom, xabs, yabs, xdrag, ydrag, x, y, x1, y1
  var xmin, ymin, xmax, ymax, mapwidth, mapheight, i, size, xdisplaymouse, ydisplaymouse
  var lastbutton, mousebutton, dragmode, usrdata, usrarray, vectorhours
  var ogcurl, ogcquery, ogcparts, prefwindow, preflist, prefform, prefchange
  var msgwindow, shiplat, shiplon, shipdate, shipname, shipspeed, distance, totdist
  var frcstquery, satquery, satwindow, forecastwindow, distwindow, strdist
  var lDb_R, lDb_deltaLat, lDb_deltaLon, lDb_a, lDb_c, wpt, tothour, waypoint, urlname
  var lat = new Array()
  var lon = new Array()
  var distquery = new Array()
  var disttime = new Array()
  
  // netscape only object variables
  var maplayerobj, mapimageobj, boxleftobj, boxrightobj, boxtopobj, boxbottomobj, pinobj
  
  function init() // initialise on document load event
    {
    window.name = 'main'
    urlname = document.URL
    // set active button
    document.mapper.reset()
    if (document.mapper.operation.value == "zoomall")
      button("zoomin")
    else
      button(document.mapper.operation.value)
	
    // get global variables from form
    xmin=Number(document.mapper.xmin.value)
    ymin=Number(document.mapper.ymin.value)
    xmax=Number(document.mapper.xmax.value)
    ymax=Number(document.mapper.ymax.value)
    mapwidth=Number(document.mapper.mapwidth.value)
    mapheight=Number(document.mapper.mapheight.value)
    shiplat=Number(document.mapper.shiplat.value)
    shiplon=Number(document.mapper.shiplon.value)
    shipname=document.mapper.shipname.value
    shipdate=document.mapper.shipdate.value
    shipspeed=document.mapper.shipspeed.value
    vectorhours=Number(document.mapper.vectorhours.value)
    size=document.mapper.size.value
    
    preflist = document.mapper.preflist.value
    preflist = preflist.replace(/ccc/g,">")
    
    x1=Number(document.mapper.x1.value)
    y1=Number(document.mapper.y1.value)
          
    // browser specifics
    if (document.layers == null) {
      // microsoft version
      document.onmousedown=mousedown
      document.onmousemove=mousemove
      document.onmouseup=mouseup
      }
    else {
      // netscape version
      document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
      document.onmousedown=mousedown
      document.onmousemove=mousemove
      document.onmouseup=mouseup 
      maplayerobj=document.layers['maplayer']
      boxleftobj=document.layers['boxleft']
      boxrightobj=document.layers['boxright']
      boxtopobj=document.layers['boxtop']
      boxbottomobj=document.layers['boxbottom']
      //pinobj=document.layers['maplayer'].document.layers['pinicon']
      }
    }
    
  function button(name)
    {
    lastbutton=document.images[document.mapper.operation.value]
    if (lastbutton != null) lastbutton.src = 'images/' + lastbutton.name + '.gif'
    if (document.images[name] == null) name='zoomin'
    document.images[name].src = 'images/' + name + 'x.gif'
    document.mapper.operation.value = name
    
    // microsoft only !
    if (document.layers == null) mapper.mapimage.alt = 'Click or drag the mouse to ' + document.images[name].alt
    
    if ((name != 'query') & (msgwindow !=null)) {
      if (msgwindow.closed == false) msgwindow.close()
      msgwindow = null }
      
    if ((name != 'forecast') & (forecastwindow !=null)) {
      if (forecastwindow.closed == false) forecastwindow.close()
      forecastwindow = null }
      
    if ((name != 'satview') & (satwindow !=null)) {
      if (satwindow.closed == false) satwindow.close()
      satwindow = null }
      
    if ((name != 'distance') & (distwindow !=null)) {
      if (distwindow.closed == false) distwindow.close()
      distwindow = null }
      
     if (name == 'distance')
		lat.length = 1
		lon.length = 1
		totdist = 0
		tothour = 0
		wpt = 0
		lat[wpt] = shiplat
		lon[wpt] = shiplon 
	      
    if (name == 'zoomall') document.mapper.submit()
    lastbutton=name
    return false
    }
  
  function mousedown(evt)
    {
    if (evt == null) {
      // microsoft version
      mousebutton = window.event.button }
    else {
      // netscape version
      mousebutton = evt.which }
    if (mousebutton <= 1) {
      xdrag = xabs
      ydrag = yabs
      if (mousemove(evt) == false) {
        xfrom = xmouse
        yfrom = ymouse
        // enable dragging of zoom window
        if ((lastbutton == 'zoomin') | (lastbutton == 'zoomout')) {
          if (evt == null) {
            // microsoft version
            boxleft.style.left = -2
            boxleft.style.height = 1
            boxleft.style.visibility = 'visible'
            boxright.style.left = -2
            boxright.style.height = 1
            boxright.style.visibility = 'visible'
            boxtop.style.top = -2
            boxtop.style.width = 1
            boxtop.style.visibility = 'visible'
            boxbottom.style.top = -2
            boxbottom.style.width = 1
            boxbottom.style.visibility = 'visible'
            }
          else {
            // netscape version
            boxleftobj.left = -2
            boxleftobj.clip.height = 1
            boxleftobj.visibility = 'show'
            boxrightobj.left = -2
            boxrightobj.clip.height = 1
            boxrightobj.visibility = 'show'
            boxtopobj.top=-2
            boxtopobj.clip.width = 1
            boxtopobj.visibility = 'show'
            boxbottomobj.top = -2
            boxbottomobj.clip.width = 1
            boxbottomobj.visibility = 'show'
            }
          dragmode='box'
          }
        return false }
      else {
        return true }
      }    
    }

  function mousemove(evt)
    {
    if (evt == null) {
      // microsoft version
      xabs = window.event.clientX + document.body.scrollLeft
      yabs = window.event.clientY + document.body.scrollTop
      x = xabs - maplayer.offsetLeft
      y = yabs - maplayer.offsetTop }
    else {
      // netscape version
      xabs = evt.pageX
      yabs = evt.pageY
      x = xabs - maplayerobj.pageX
      y = yabs - maplayerobj.pageY }
    if (x > mapwidth) x = -1
    if (y > mapheight) y = -1
    if ((x >= 0) && (y >= 0)) {
      xmouse = xmin + (x / mapwidth) * (xmax - xmin)
      ymouse = ymax - (y / mapheight) * (ymax - ymin)
      // xmouse = formatnumber(xmouse,3)
      ymouse = formatnumber(ymouse,3)
      
      if (xmouse > 180 || xmouse < -180) {
		if (xmouse > 180){
		xdisplaymouse = formatnumber(xmouse - 360, 3)}
		else {
		xdisplaymouse = formatnumber(xmouse + 360, 3)}}
      else{
      xdisplaymouse = formatnumber(xmouse,3)}
      
      if (document.title == 'Voyage Details'){
		distance = LatLonDist(shiplat, shiplon, ymouse, xmouse)
		if (isNaN(shipspeed)){
		    window.status = 'Lat=' + ymouse + ' Lon=' + xdisplaymouse + '  Distance= ' + formatnumber(distance, 2) + ' nm'}
		    else
            if (shipspeed > 0){ 
            window.status = 'Lat=' + ymouse + ' Lon=' + xdisplaymouse + '  Distance= ' + formatnumber(distance, 2) + ' nm   Hours of steaming at ' + shipspeed + ' knots: ' + formatnumber((distance/shipspeed), 2 )}
           
         else    
         window.status = 'Lat=' + ymouse + ' Lon=' + xdisplaymouse + '  Distance= ' + formatnumber(distance, 2) + ' nm'
         }
      else
      window.status = 'Lat=' + ymouse + ' Lon=' + xdisplaymouse 
      
      
      if ((dragmode == 'box') && (xdrag != null)) dragbox()
      return false }
    else {
      window.status=''
      xmouse = null
      ymouse = null
      return true }
    }

  function mouseup(evt)
    {
    if (evt == null) 
      mousebutton = window.event.button
    else
      mousebutton = evt.which
    if (mousebutton <= 1)
      {
      mousemove(evt)
      if (xmouse != null)
        {
        
        if (lastbutton == 'query')
          {
          if (evt == null) {
            ogcquery = mapper.mapimage.src }  // microsoft version
          else {
            ogcquery = maplayerobj.document.images[0].src }  // netscape version
          ogcparts = ogcquery.split('?')
          ogcurl = ogcparts[0] + '?'
          ogcquery = ogcparts[1]
          ogcparts = ogcquery.split('&')
          ogcquery = ogcparts[0] // wmt version
          ogcquery = ogcquery + '&REQUEST=feature_info'
          ogcquery = ogcquery + '&' + ogcparts[2] // srs
          ogcquery = ogcquery + '&' + ogcparts[3] // bbox
          ogcquery = ogcquery + '&' + ogcparts[4] // width
          ogcquery = ogcquery + '&' + ogcparts[5] // height
          ogcquery = ogcquery + '&' + ogcparts[6] // layers
          ogcquery = ogcquery + '&' + ogcparts[7] // styles
          ogcquery = ogcquery + '&QUERY_' + ogcparts[6] // query layers
          ogcquery = ogcquery + '&INFO_FORMAT=MIME&FEATURE_COUNT=16'
          ogcquery = ogcquery + '&X=' + x + '&Y=' + y
          if (msgwindow != null) {
            if (msgwindow.closed) {
              msgwindow = null }
            else {
              msgwindow.document.open() }
            }
          if (msgwindow == null) {
            msgwindow = window.open(ogcurl + ogcquery, '', 'width=400,height=100,resizable=yes,scrollbars=yes') }
          else {
            msgwindow.location = ogcurl + ogcquery }
          msgwindow.focus()
          }
        else
        
        if (lastbutton == 'forecast')
         {
				frcstquery = 'http://www.offshoreweather.com/new_respond.asp?'
				frcstquery = frcstquery + 'DecLat=' + ymouse + '&DecLong=' + xmouse
		if (forecastwindow != null) {
            if (forecastwindow.closed) {
              forecastwindow = null }
            else {
              forecastwindow.close()
              forecastwindow = null }
            }
          if (forecastwindow == null) {
            forecastwindow = window.open(frcstquery, '', 'width=750,height=400,resizable,scrollbars=yes') }
            
          else {
            forecastwindow.location = frcstquery }
          forecastwindow.focus()
          }
        else
        
        
        if (lastbutton == 'satview')
         {
          		satquery = 'http://wwwghcc.msfc.nasa.gov/cgi-bin/get-goes?'
				satquery = satquery + 'satellite=Global%20Composite' + '&lat=' + ymouse
				satquery = satquery + '&lon=' + xmouse + '&zoom=2&width=350&height=250&type=Animation&palette=ir.pal'
		if (satwindow != null) {
            if (satwindow.closed) {
              satwindow = null }
            else {
              satwindow.close()
              satwindow = null }
            }
          if (satwindow == null) {
            satwindow = window.open(satquery, '', 'width=375,height=325,resizable=no,scrollbars=no') }
            
          else {
            satwindow.location = satquery }
          satwindow.focus()
          }
        
        else
				if (lastbutton == 'distance')
          {		wpt++
				lat[wpt] = ymouse
				lon[wpt] = xmouse
          		distquery[wpt] = formatnumber(LatLonDist(lat[wpt], lon[wpt], lat[wpt-1], lon[wpt-1]), 2)
          		totdist = totdist+Number(distquery[wpt])
          		
          		if (isNaN(shipspeed)) {
            disttime[wpt] = 0}
            else
            if (shipspeed > 0) {
            disttime[wpt] = formatnumber(distquery[wpt]/shipspeed,2)}
            else{
            disttime[wpt] = 0}
            
            tothour = tothour+Number(disttime[wpt])
          		
			if (distwindow != null) {
            if (distwindow.closed) {
              distwindow = null }
            else {
              distwindow.document.close()
              distwindow = null }
            }
          if (distwindow == null) {
            distwindow = window.open('', 'Distance', 'width=400,height=400,left=0,top=0,resizable=yes,scrollbars=yes')
            strdist = '<html><title>Quick Distance Calculation</title><BODY bgColor=lightblue>'
            strdist = strdist + '<p align="center" ><font size="3"><b>'
            strdist = strdist + 'Distance Calculation for ' + shipname +'<br>'
            strdist = strdist + 'From position on ' + shipdate + '  ' + shipspeed + ' knots</b></font><br>'
            strdist = strdist + '<table width="100%" border = "5"><thead><tr><td align="middle" style="BORDER-BOTTOM-STYLE:solid"><b></b></td>'
            strdist = strdist + '<td align="middle" style="BORDER-BOTTOM-STYLE: solid"><b>Latitude</b></td>'
            strdist = strdist + '<td align="middle" style="BORDER-BOTTOM-STYLE: solid"><b>Longitude</b></td>'
            strdist = strdist + '<td align="middle" style="BORDER-BOTTOM-STYLE: solid"><b>Distance</b></td>'
            strdist = strdist + '<td align="middle" style="BORDER-BOTTOM-STYLE: solid"><b>Hours</b></td>'
            strdist = strdist + '</tr></thead><tbody><tr><td align="middle">From:</td>'
            strdist = strdist + '<td align="middle">' + lat[wpt-1] + '</td><td align="middle">' + lon[wpt-1] + '</td><td align="middle"></td></tr>'
            
            for (var i=1; i<wpt+1; i++){
            strdist = strdist + '<tr><td align="middle">Wpt: ' + i + '</td>'
            strdist = strdist + '<td align="middle">' + lat[i] + '</td><td align="middle">' + lon[i] + '</td>'
            strdist = strdist + '<td align="middle"><b>' + distquery[i] + ' nm</b></td>'
            strdist = strdist + '<td align="middle"><b>' + disttime[i] + '</b></td></tr>'}
            
            strdist = strdist + '<tr><td colspan = "3" align="right"><b>Total:</b></td><td align="middle"><b>' + formatnumber(totdist,2) + ' nm</b></td>'
            strdist = strdist + '<td align="middle"><b>' + formatnumber(tothour,2) + ' hr</b></td></tr>'
            strdist = strdist + '</tbody></table>'
            strdist = strdist + '<p><font face="Verdana, Arial, Helvetica" size="2"><a href="JavaScript:onClick= window.close()">Close Window</A></font></p></body></HTML>'
            distwindow.document.write(strdist)
            distwindow.document.close() }
            distwindow.focus()
            
            //if (evt == null) {  //waypoint marks
            // microsoft version
            //xabs = window.event.clientX + document.body.scrollLeft
		//	yabs = window.event.clientY + document.body.scrollTop
            //waypointmark.style.left = xabs-11
            //waypointmark.style.top = yabs-11
            //waypointmark.style.visibility = 'visible'
           // waypointmark.style.height = 22
           // waypointmark.style.width = 22}
          //else {
            // netscape version
          //  waypointobj.left = xabs
          //  waypointobj.clip.height = yabs
          //  waypointobj.visibility = 'show'}
          }
        else
        
        {
          if ((xfrom != null) && (xmouse != null)) {
            document.mapper.x1.value = xfrom
            document.mapper.y1.value = yfrom
            document.mapper.x2.value = xmouse
            document.mapper.y2.value = ymouse
            document.mapper.submit() }
          else {
            yfrom = null
            yfrom = null
            xmouse = null
            ymouse = null }
          if (dragmode == 'box')
            {
            if (evt == null) {
              // microsoft version
              boxleft.style.visibility = 'hidden'
              boxright.style.visibility = 'hidden'
              boxtop.style.visibility = 'hidden'
              boxbottom.style.visibility = 'hidden' }
            else {
              // netscape version
              boxleftobj.visibility = 'hide'
              boxrightobj.visibility = 'hide'
              boxtopobj.visibility = 'hide'
              boxbottomobj.visibility = 'hide' }
            }
          }
        }
      }
    dragmode = null
    return true
    }
  
  function dragbox()
    {
    if (maplayerobj == null)
      { // microsoft version
      if (xabs > xdrag) {
        boxleft.style.left = xdrag
        boxright.style.left = xabs
        boxtop.style.left = xdrag
        boxtop.style.width = (xabs - xdrag)
        boxbottom.style.left = xdrag
        boxbottom.style.width = (xabs - xdrag) }
      if (xabs < xdrag) {
        boxleft.style.left = xabs
        boxright.style.left = xdrag
        boxtop.style.left = xabs
        boxtop.style.width = (xdrag - xabs)
        boxbottom.style.left = xabs
        boxbottom.style.width = (xdrag - xabs) }
      if (yabs > ydrag) {
        boxtop.style.top = ydrag
        boxbottom.style.top = yabs
        boxleft.style.top = ydrag
        boxleft.style.height = (yabs - ydrag)
        boxright.style.top = ydrag
        boxright.style.height = (yabs - ydrag) }
      if (yabs < ydrag) {
        boxtop.style.top = yabs
        boxbottom.style.top = ydrag
        boxleft.style.top = yabs
        boxleft.style.height = (ydrag - yabs)
        boxright.style.top = yabs
        boxright.style.height = (ydrag - yabs) }
      }
    else
      { // netscape version
      if (xabs > xdrag) {
        boxleftobj.left = xdrag
        boxrightobj.left = xabs
        boxtopobj.left = xdrag
        boxtopobj.clip.width = (xabs - xdrag)
        boxbottomobj.left = xdrag
        boxbottomobj.clip.width = (xabs - xdrag) }
      else {
        boxleftobj.left = xabs
        boxrightobj.left = xdrag
        boxtopobj.left = xabs
        boxtopobj.clip.width = (xdrag - xabs)
        boxbottomobj.left = xabs
        boxbottomobj.clip.width = (xdrag - xabs) }
      if (yabs > ydrag) {
        boxtopobj.top = ydrag
        boxbottomobj.top = yabs
        boxleftobj.top = ydrag
        boxleftobj.clip.height = (yabs - ydrag)
        boxrightobj.top = ydrag
        boxrightobj.clip.height = (yabs - ydrag) }
      else {
        boxtopobj.top = yabs
        boxbottomobj.top = ydrag
        boxleftobj.top = yabs
        boxleftobj.clip.height = (ydrag - yabs)
        boxrightobj.top = yabs
        boxrightobj.clip.height = (ydrag - yabs) }
      }
    return true
    }

  function formatnumber(value, decimals)
    {
    usrdata=value.toString(10)
    i=usrdata.indexOf('.')
    if (i == 0) {
      return usrdata }
    else {
      return usrdata.substr(0,i+decimals+1) }
    }
  
  function closemsg()
    { // close the query window if open
    if (msgwindow != null) {
      if (msgwindow.closed == false) msgwindow.close()
      msgwindow = null }
    return true
    }
    
function PopupWindow(address) {
  popupWin = window.open(address, 
    'open_window',
    'dependent,width=375,height=325,left=0,top=0')
}

function LatLonDist(Lat1, Lon1, Lat2, Lon2){

    lDb_deltaLon = AsRadians(Lon2) - AsRadians(Lon1)
    lDb_deltaLat = AsRadians(Lat2) - AsRadians(Lat1)

   lDb_a = Sin2(lDb_deltaLat / 2) + (Math.cos(AsRadians(Lat1)) * Math.cos(AsRadians(Lat2)) * Sin2(lDb_deltaLon / 2))
    
    lDb_c = 2 * Math.asin(Math.min(1, Math.sqrt(lDb_a)))

    return 3362 * lDb_c
}

function AsRadians(pDb_Degrees){
    return pDb_Degrees * (3.14159265358979 / 180)
}

function Sin2(X){
    return (1 - Math.cos(2 * X)) / 2
}

function MapPreferences(){
	mapwidth=Number(document.mapper.mapwidth.value)
	prefwindow = window.open('', 'Preferences', 'width=200,height=450,resizable=yes,scrollbars=yes')
	prefform = '<HTML><head><title>Preferences</title><script language="javascript" src="scripts.js"></head></script><BODY>'
	if (document.layers == null) {
      // microsoft version
	prefform = prefform + '<FORM name="mapper" onsubmit="self.close()" method="post" target="main" >'}
	else {
	prefform = prefform + '<FORM name="mapper" action ="'+urlname+'" method="post" target="main" >'}
	prefform = prefform + '<p align="center"><h2>Map Preferences</h2></p>'
    prefform = prefform + '<p align="center"><font size = "2"><i>Indicate your map preferences here.</i></font></p>'
	prefform = prefform + preflist
	prefform = prefform + '<input type="hidden" name="operation" value="'+ lastbutton + '">'
	prefform = prefform + '<input type="hidden" name="mapwidth" value="' + mapwidth + '">'
	prefform = prefform + '<input type="hidden" name="mapheight" value="' + mapheight + '">'
	prefform = prefform + '<input type="hidden" name="xmin" value="' + xmin + '">'
	prefform = prefform + '<input type="hidden" name="ymin" value="' + ymin + '">'
	prefform = prefform + '<input type="hidden" name="xmax" value="' + xmax + '">'
	prefform = prefform + '<input type="hidden" name="ymax" value="' + ymax + '">'
	if (size == "small")
	prefform = prefform + '<INPUT type=checkbox name=screensize value="full">&nbsp;Full-Sized Map<br>'
	else {
	prefform = prefform + '<INPUT type=checkbox name=screensize value="full" checked>&nbsp;Full-Sized Map<br>'}
	prefform = prefform + '<input type="text" name="vectorhours" onChange="validatenumber(this)" maxlength="2" size = "2" value="' + vectorhours + '">&nbsp;Vector in Hours<br>'
	prefform = prefform + '<INPUT type="hidden" name="clientwidth" value="' + window.screen.availWidth + '">'
	prefform = prefform + '<INPUT type="hidden" name="clientheight" value="' + window.screen.availHeight + '">'
	prefform = prefform + '<br><INPUT type="submit" name="update" value="Update"></form>'
	prefform = prefform + '<p><font face="Verdana, Arial, Helvetica" size="2"><a href="JavaScript:onClick= window.close()">Close Window</A></font></p></body></html>'
	prefwindow.document.write(prefform)
	prefwindow.document.close() 
    prefwindow.focus()
    }

function validatenumber(field) {
var valid = "0123456789."
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Please enter a numeric value in the field");
field.focus();
field.select();
   }
}

function isodatetime() {
var today = new Date();
var year  = today.getYear();
if (year < 2000)  
year = year + 1900;
var month = today.getMonth() + 1;
var day  = today.getDate();
var hour = today.getHours();
var hourUTC = today.getUTCHours();
var diff = hour - hourUTC;
var UTCtoday = new Date();
var UTCyear  = UTCtoday.getUTCFullYear();
if (UTCyear < 2000)  
UTCyear = UTCyear + 1900;
var UTCmonth = UTCtoday.getUTCMonth() + 1;
var UTCday  = UTCtoday.getUTCDate();
var hourdifference = Math.abs(diff);
var minute = today.getMinutes();
var minuteUTC = today.getUTCMinutes();
var minutedifference;
var second = today.getSeconds();
var timezone;
if (minute != minuteUTC && minuteUTC < 30 && diff < 0) { hourdifference--; }
if (minute != minuteUTC && minuteUTC > 30 && diff > 0) { hourdifference--; }
if (minute != minuteUTC) {
minutedifference = ":30";
}
else {
minutedifference = ":00";
}
if (hourdifference < 10) { 
timezone = "0" + hourdifference + minutedifference;
}
else {
timezone = "" + hourdifference + minutedifference;
}
if (diff < 0) {
timezone = "-" + timezone;
}
else {
timezone = "+" + timezone;
}
if (month <= 9) month = "0" + month;
if (day <= 9) day = "0" + day;
if (hour <= 9) hour = "0" + hour;
if (minute <= 9) minute = "0" + minute;
if (minuteUTC <= 9) minuteUTC = "0" + minuteUTC;
if (second <= 9) second = "0" + second;
if (UTCmonth <= 9) UTCmonth = "0" + UTCmonth;
if (UTCday <= 9) UTCday = "0" + UTCday;
if (hourUTC <= 9) hourUTC = "0" + hourUTC;
time = year + "-" + month + "-" + day + "  "
+ hour + ":" + minute + ":" + second + ' ' + timezone + ' (LT)';
document.isoclock.display.value = time;
UTCtime = UTCyear + "-" + UTCmonth + "-" + UTCday + "  "
+ hourUTC + ":" + minuteUTC + ":" + second + ' GMT';
document.isoclock.displayUTC.value = UTCtime;
window.setTimeout("isodatetime();", 500);
}

function PopupBody(Login, Table, ID){
	myWindow = window.open('utilities/ShowBody.asp?Login=' + Login + '&Table=' + Table + '&ID=' + ID, "BodyWindow", 'width=400,height=400, resizable=yes,scrollbars=yes') 
	myWindow.document.close() 
    }

function PopupGeneric(address, winwidth, winheight) {
  myWindow = window.open(address , "GenericWindow", 'width=' + winwidth + ',height=' + winheight + ', resizable=yes,scrollbars=yes') 
  myWindow.document.close() 
}
