// ===================================================================
// 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;}

// ===================================================================
// Author: Jeff Goke
// ===================================================================

	var dhtml_image_loaded = false;
	var dhtml_maxwidth = 0;
	var dhtml_forcewidth = 300;

	function show_dhtml_image_window(anchorfield, imagename, maxwidth, right_adjust) {
		if (maxwidth != null && maxwidth != '') {
			dhtml_maxwidth = maxwidth;		
		}
		return _show_dhtml_window(anchorfield, imagename,'', right_adjust);
	}

	function show_dhtml_text_window(anchorfield, textvalue, maxwidth, forcewidth, right_adjust) {
		if (maxwidth != null && maxwidth != '') {
			dhtml_maxwidth = maxwidth;		
		}
		if (forcewidth != null && forcewidth != '') {
			dhtml_forcewidth = dhtml_forcewidth;
		} else {
			dhtml_forcewidth = 300;
		}	
		document.getElementsByName('dhtml_text_div')[0].width = dhtml_forcewidth;
		return _show_dhtml_window(anchorfield, '', textvalue, right_adjust);
	} 

	function hide_dhtml_window() {
		document.getElementsByName('display_dhtml_window')[0].style.display = 'none';
		document.getElementsByName('dhtml_image_div')[0].style.display = 'none';
		document.getElementsByName('dhtml_text_div')[0].style.display = 'none';
		return false;
	}

	function _show_dhtml_window(anchorfield, imagename, textvalue, right_adjust) {
		var dhtml_window = document.getElementsByName('display_dhtml_window')[0];
		var do_adjust = 0;
		if (right_adjust != '' && right_adjust != null) {
			do_adjust = right_adjust;
		}

		hide_dhtml_window();

		// move the viewer
		var coordLeft = AnchorPosition_getPageOffsetLeft (anchorfield);
		var coordTop = AnchorPosition_getPageOffsetTop (anchorfield);	
		
		if (coordTop < 1) {
			coordTop = 1;
		}
		
		dhtml_window.style.left = coordLeft + do_adjust;
		dhtml_window.style.top = coordTop;
		dhtml_window.style.display = '';
		
		if (imagename != null && imagename != "") {
			document.getElementsByName('dhtml_image_div')[0].style.display = '';
			document.getElementsByName('dhtml_image')[0].src = '/editor/images/spacer.gif';	
			document.getElementsByName('dhtml_image')[0].src = imagename;	
			dhtml_window.style.display = '';
			dhtml_image_loaded = false;
		} else {
			document.getElementsByName('dhtml_text_div')[0].style.display = '';
			document.getElementsByName('dhtml_text_div')[0].innerHTML = textvalue;
			document.getElementsByName('dhtml_title_div')[0].innerHTML = 'Detail information:';
			dhtml_window.style.display = '';
			check_dhtml_dimensions('dhtml_text_div');
		}
		
		return false;
	}

	function check_dhtml_dimensions(checkelement) {
		var dhtml_window = document.getElementsByName('display_dhtml_window')[0];

		if (dhtml_window.style.displayed == '') {
			return;
		}

		var coordLeft = dhtml_window.style.left;
		var ispx = coordLeft.indexOf('px');
		if (ispx > 0) {
			coordLeft = coordLeft.substring(0,ispx);
		}

		if ((+coordLeft) + (+document.getElementsByName(checkelement)[0].width) > dhtml_maxwidth) {
			coordLeft = dhtml_maxwidth - document.getElementsByName(checkelement)[0].width;
		}

		dhtml_window.style.left = coordLeft;
	}
