/*
  Copyright (c) 2004 Todd Augsburger
  todd@rollerorgans.com
*/

// www.mattkruse.com
//   This function returns an object having .x and .y properties which are the coordinates
//   of the named anchor, relative to the page.
function getAnchorPosition(anchorname) {
  // This function will return an Object with x and y properties
  var useWindow=false;
  var coordinates=new Object();
  var x=0,y=0;
  // Browser capability sniffing
  var use_gebi=false, use_css=false, use_layers=false;
  if (document.getElementById) { use_gebi=true; }
  else if (document.all) { use_css=true; }
  else if (document.layers) { use_layers=true; }
  // Logic to find position
  if (use_gebi && document.all) {
  x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
  y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
  }
  else if (use_gebi) {
  var o=document.getElementById(anchorname);
  x=AnchorPosition_getPageOffsetLeft(o);
  y=AnchorPosition_getPageOffsetTop(o);
  }
  else if (use_css) {
  x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
  y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
  }
  else if (use_layers) {
  var found=0;
  for (var i=0; i<document.anchors.length; i++) {
    if (document.anchors[i].name==anchorname) { found=1; break; }
    }
  if (found==0) {
    coordinates.x=0; coordinates.y=0; return coordinates;
    }
  x=document.anchors[i].x;
  y=document.anchors[i].y;
  }
  else {
  coordinates.x=0; coordinates.y=0; return coordinates;
  }
  coordinates.x=x;
  coordinates.y=y;
  return coordinates;
  }
//   This function returns an object having .x and .y properties which are the coordinates
//   of the named anchor, relative to the window
function getAnchorWindowPosition(anchorname) {
  var coordinates=getAnchorPosition(anchorname);
  var x=0;
  var y=0;
  if (document.getElementById) {
  if (isNaN(window.screenX)) {
    x=coordinates.x-document.body.scrollLeft+window.screenLeft;
    y=coordinates.y-document.body.scrollTop+window.screenTop;
    }
  else {
    x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
    y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
    }
  }
  else if (document.all) {
  x=coordinates.x-document.body.scrollLeft+window.screenLeft;
  y=coordinates.y-document.body.scrollTop+window.screenTop;
  }
  else if (document.layers) {
  x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
  y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
  }
  coordinates.x=x;
  coordinates.y=y;
  return coordinates;
  }
// Functions for IE to get position of an object
function AnchorPosition_getPageOffsetLeft (el) {
  var ol=el.offsetLeft;
  while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
  return ol;
  }
function AnchorPosition_getWindowOffsetLeft (el) {
  return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
  }	
function AnchorPosition_getPageOffsetTop (el) {
  var ot=el.offsetTop;
  while((el=el.offsetParent) != null) { ot += el.offsetTop; }
  return ot;
  }
function AnchorPosition_getWindowOffsetTop (el) {
  return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
  }

// open a poplist window at an appropriate spot relative to an anchor like:
// <a name="anchorname" id="anchorname" style="text-decoration:none">&nbsp;</a>
var newwindow = '';
function popopen(url,anchorname,width)
{
  if (!newwindow.closed && newwindow.location) {
  newwindow.location.href = url;
  } else {
  var w = 0 + width;
  var x = (screen.width-w)/2;
  var y = (screen.height-400)/2;
  if (anchorname) {
    var point = getAnchorWindowPosition(anchorname);
    x = point.x;
    y = point.y;
    if((screen.width - x) < w) {
      x = (screen.width - width);        	
    }
    if((screen.height - y) < 400) {
      x = (screen.height - 400);        	
    }
  }
  newwindow=window.open(url,'name','resizable=yes,scrollbars=yes,width=' + w + ',height=400,left=' + x + ',top=' + y);
  if (!newwindow.opener) newwindow.opener = self;
  }
  if (window.focus) {newwindow.focus()}
  return false;
}

