/* 
AnchorPosition.js
Author: Matt Kruse
Last modified: 10/11/02

DESCRIPTION: These functions find the position of an <A> tag in a document,
so other elements can be positioned relative to it.

COMPATABILITY: Netscape 4.x,6.x,Mozilla, IE 5.x,6.x on Windows. Some small
positioning errors - usually with Window positioning - occur on the 
Macintosh platform.

FUNCTIONS:
getAnchorPosition(anchorname)
  Returns an Object() having .x and .y properties of the pixel coordinates
  of the upper-left corner of the anchor. Position is relative to the PAGE.

getAnchorWindowPosition(anchorname)
  Returns an Object() having .x and .y properties of the pixel coordinates
  of the upper-left corner of the anchor, relative to the WHOLE SCREEN.

NOTES:

1) For popping up separate browser windows, use getAnchorWindowPosition. 
   Otherwise, use getAnchorPosition

2) Your anchor tag MUST contain both NAME and ID attributes which are the 
   same. For example:
   <A NAME="test" ID="test"> </A>

3) There must be at least a space between <A> </A> for IE5.5 to see the 
   anchor tag correctly. Do not do <A></A> with no space.
*/ 

// getAnchorPosition(anchorname)
//   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;
	}

// getAnchorWindowPosition(anchorname)
//   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;
	}

function putintocolor(where,place,value) {
eval("document." + place + ".value = '" + value + "'");
hidecolortable(where);
}
function hidecolortable(where) {
 elm=document.getElementById(where + 'dis');
 elm.style.visibility='hidden';
}

function showcolortable(where) {
 position=getAnchorPosition(where);
 position.y = position.y+20;
 elm=document.getElementById(where + 'dis');
 elm.style.visibility='visible';
 elm.style.top=position.y;
 elm.style.left=position.x;
}

function putinto(where,place,value) {
eval("document." + place + ".value = '" + value + "'");
hidefilelist(where);
}

function hidefilelist(where) {
 document.getElementById(where + 'dis').style.visibility='hidden';
}

function showimg(where,img) {
 direlm=document.getElementById(where + 'dir');
 dimelm=document.getElementById(where + 'dim');
 elm=document.getElementById(where + 'img');
 dimelm.style.background='url(' + direlm.innerHTML + img + ')';
 elm.innerHTML=img;
}

function rightfilelist(where) {
 position=getAnchorPosition(where);
 curcol=document.getElementById(where + 'col').innerHTML;
 endcol=parseInt(curcol)+3;
 endelm=document.getElementById(where + 'b' + endcol);
 if (endelm) { 
  curcol=parseInt(curcol)+1;
  document.getElementById(where + 'col').innerHTML=curcol;

  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co1');
  elmc.innerHTML=elmb.innerHTML;

  curcol=parseInt(curcol)+1;
  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co2');
  elmc.innerHTML=elmb.innerHTML;

  curcol=parseInt(curcol)+1;
  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co3');
  elmc.innerHTML=elmb.innerHTML;
 }
}

function leftfilelist(where) {
 position=getAnchorPosition(where);
 curcol=document.getElementById(where + 'col').innerHTML;
 endcol=parseInt(curcol)-1;
 endelm=document.getElementById(where + 'b' + endcol);
 if (endelm) { 
  curcol=parseInt(curcol)-1;
  document.getElementById(where + 'col').innerHTML=curcol;

  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co1');
  elmc.innerHTML=elmb.innerHTML;

  curcol=parseInt(curcol)+1;
  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co2');
  elmc.innerHTML=elmb.innerHTML;

  curcol=parseInt(curcol)+1;
  elmb=document.getElementById(where + 'b' + curcol);
  elmc=document.getElementById(where + 'co3');
  elmc.innerHTML=elmb.innerHTML;

 }
}

function showfilelist(where) {
 position=getAnchorPosition(where);
 position.y = position.y+20;

 elm=document.getElementById(where + 'dis');
 elm.style.visibility='visible';
 elm.style.top=position.y;
 elm.style.left=position.x;
 elm=document.getElementById(where + 'col');
 elm.innerHTML=1;

 elmb=document.getElementById(where + 'b1');
 elmc=document.getElementById(where + 'co1');
 elmc.innerHTML=elmb.innerHTML;
 elmb=document.getElementById(where + 'b2');
 elmc=document.getElementById(where + 'co2');
 elmc.innerHTML=elmb.innerHTML;
 elmb=document.getElementById(where + 'b3');
 elmc=document.getElementById(where + 'co3');
 elmc.innerHTML=elmb.innerHTML;
}
function refreshParent() {
        setTimeout('doit()', 500);
}

function doit() {
  window.opener.location.href = window.opener.location.href;
  if (window.opener.progressWindow) window.opener.progressWindow.close();
}


function refreshParentCl() {
        setTimeout('doit2()', 1200);
}

function doit2() {

  window.opener.location.href = window.opener.location.href;
  if (window.opener.progressWindow) window.opener.progressWindow.close();
	window.close();
}

function winhere(winurl,wid,hei,hasscroll,herename) {
	pos=getAnchorPosition(herename);
	openwinrel(winurl,wid,hei,pos.x,pos.y,hasscroll);
}

function winpop(winurl,wid,hei,lef,top,hasscroll) {
   winStats='toolbar=no,location=no,directories=no,menubar=no,'
   winStats+='scrollbars='+hasscroll+',width='+wid+',height='+hei
   if (navigator.appName.indexOf("Microsoft")>=0) {
      winStats+=',left='+lef+',top='+top
    }else{
      winStats+=',screenX='+lef+',screenY='+top
    }
	window.open(winurl,"",winStats);
}

function openWindow(winurl,dawid,dahi,hasscroll) {
   winStats='toolbar=no,location=no,directories=no,menubar=no,'
   winStats+='scrollbars='+hasscroll+',width='+dawid+',height='+dahi
   if (navigator.appName.indexOf("Microsoft")>=0) {
      winStats+=',left=10,top=25'
    }else{
      winStats+=',screenX=10,screenY=25'
    }
   	window.open(winurl,"",winStats)
}

function openwinrel(winurl,wid,hei,fromleft,fromtop,hasscroll) {
if (document.all) {
  x = window.screenLeft;
  y = window.screenTop;
}
else if (document.layers) {
  x = window.screenX;
  y = window.screenY;
}

else {
  x = window.screenX;
  y = window.screenY;
}

fromleft = fromleft + x;
fromtop = fromtop + y;

winStats='toolbar=no,location=no,directories=no,menubar=no,';
winStats+='scrollbars='+hasscroll+',width='+wid+',height='+hei;
winStats+=',left='+ fromleft + ',top=' + fromtop;
winStats+=',screenX=' + fromleft + ',screenY=' +fromtop;

window.open(winurl,"",winStats);

}


function showdivat(thediv,at,xoff,yoff) {
 position=getAnchorPosition(at);
 elm=document.getElementById(thediv);
 elm.style.visibility='visible';
 elm.style.top=position.y + yoff;
 elm.style.left=position.x + xoff;
}

function hidedivsoon(thediv,when) {
	var elm=document.getElementById(thediv);
	elm.style.visibility='hidden';
}
