/**
 * map.js - Interactive Map Functions
 * Created: 200000913 Brisid
 * Updated: 20020315 Brisid
 *    Changed show() to accept the individual building info array 
 *    for maintainability
 */

var xOffset = 0;  // Coords of map image top-left (default)
var yOffset = 0;
var currView = 0; // Set to the array of current building being viewed
var descLyr;
var lyrs = [0,0,0,0];
var bSetup = false;

function Setup()
{
  // Get imagemap offset
  if( is.ie4up || is.nav5up ) {
    var obj = document.mapimage;
    xOffset = 0;
    yOffset = 0;
    while( obj != null ) {
      xOffset += obj.offsetLeft;
      yOffset += obj.offsetTop;
      obj = obj.offsetParent;
    }
  }
  else if( is.nav4 ) {
    var lnk;
    for( lnk = 0; lnk < document.links.length; lnk++ ) {
      if( document.links[lnk].hash == "#mapimage" ) {
        xOffset = document.links[lnk].x - MAP_WIDTH;
        yOffset = document.links[lnk].y;
      } 
    } 
  } else {
    return;  // Fail
  }

  // Building description layer
  descLyr = new CrossBrowserElement( 'descLyr', DESC_WIDTH, DESC_HEIGHT );
  descLyr.setHtml( "<SPAN></SPAN>" );

  // Circle Layers
  var lyr;
  for( lyr = 0; lyr < CIRCLES.length; lyr++ ) {
    var content = 
      "<A HREF='javascript:GoActive()' ONMOUSEOUT='return Hide();'>" +
      "<IMG BORDER='0' WIDTH='" + CIRCLES[lyr][0] + "' HEIGHT='" +
      CIRCLES[lyr][1] + "' SRC='" + CIRCLES[lyr][2] + "'></A>";
    (lyrs[lyr]) = new CrossBrowserElement( "circleLyr"+lyr, CIRCLES[lyr][0], CIRCLES[lyr][1] );
    (lyrs[lyr]).setHtml( content );

  }

  bSetup = true;
  return true;
}


function GoActive()
{
  if( currView != 0 )
  {
    top.window.location.href = currView[5];
  }
  return;
}


function Show( bldg )
{
  if( !bSetup ) return true;

  var circle = CIRCLES[bldg[2]];
  if( currView != 0 )
    Hide();
  (lyrs[bldg[2]]).moveTo( xOffset + bldg[0] - circle[0]/2, 
             yOffset + bldg[1] - circle[1]/2 + 2 );
  (lyrs[bldg[2]]).show();

  if( bldg[0] < MAP_WIDTH/2 ) // Bldg is on left half, desc goes on right
  {
    descLyr.setHtml( "<TABLE BORDER='0' WIDTH='" + DESC_WIDTH +
      "' BACKGROUND='http://www.grey-company.org/TelRuid/tour/images/bkg_half.gif'><TR><TD><SPAN CLASS='maptitle'>" + 
      bldg[3] + "</SPAN><BR><SPAN CLASS='mapdesc'>" + bldg[4] +
      "</SPAN></TD></TR></TABLE>" );
    descLyr.moveTo( xOffset + bldg[0] + circle[0]/2, 
                    yOffset + bldg[1] - circle[1]/2 );
    
  } else { // Bldg is on right half of map, desc goes on left

    descLyr.setHtml( "<TABLE BORDER='0' WIDTH='" + DESC_WIDTH + 
      "' BACKGROUND='http://www.grey-company.org/TelRuid/tour/images/bkg_half.gif'><TR><TD ALIGN='right'><SPAN " +
      "CLASS='maptitle'>" + bldg[3] + "</SPAN><BR><SPAN CLASS='mapdesc'>" + 
      bldg[4] + "</SPAN></TD></TR></TABLE>" );
    descLyr.moveTo( xOffset + bldg[0] - circle[0]/2 - DESC_WIDTH, 
               yOffset + bldg[1] - circle[1]/2 );
   
  }
  descLyr.show();
  currView = bldg;
  return true;
}
// ---------------------
function Hide()
{
  if( !bSetup ) return true;
  if( currView == 0 ) return true;

  (lyrs[currView[2]]).hide();
  descLyr.hide();

  currView = 0;
  return true;
}


