// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

function getAnchorPosition(anchorname)
{
	var useWindow=false;
	var coordinates=new Object();
	var x=0,y=0;
	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;
	}
	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;
	}
	
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;
	}
	
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;
}


