// JavaScript Document

// determine which browser is being used; store for reference
var isSafari = navigator.appVersion.indexOf("Safari") != -1;
var isIE = navigator.appName.indexOf("Microsoft") != -1;
var isNNMoz = (navigator.appName.indexOf("Netscape") != -1 && !isSafari);

function addEvent(objObject, strEventName, fnHandler) {
	// Adds event listener to object using DOM model, if available; otherwise tries IE model.
	if (objObject.addEventListener) {
		objObject.addEventListener(strEventName, fnHandler, false);
	}
 	// IE/windows way to add an event listener
	else if (objObject.attachEvent) {
   		objObject.attachEvent("on" + strEventName, fnHandler);
	}
}

function findEventOwner(evt) {
	if (evt.target) {
		// DOM compliant
		var node = evt.target; 
	}
	else {
		// IE/Win
		var node = evt.srcElement;
	}
	while (node) {
		if ( (node.nodeType == node.ELEMENT_NODE || node.nodeType == 1) && node.nodeName == "A") {
			// node.ELEMENT_NODE does not seem to work in Safari
			return node;
		}
		node = node.parentNode;
		}
	return null;
}

function findComment(evt) {
	if (!evt) evt = window.evt // for IE/Win
	node = findEventOwner(evt);
	commentId = node.href.substring(node.href.indexOf('#') + 1);
	comment = document.getElementById(commentId);
	return comment;
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if ( isSafari ) {
		scrOfX = 0;
		scrOfY = 0;
	}
	else if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} 
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} 
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return { x : scrOfX, y : scrOfY };
}

function showComment(evt) {
	comment = findComment(evt);

	// record pointer position; get values for both Netscape and IE DOMs
	scr = getScrollXY();
	var x = evt.clientX + scr.x + 10;
	var y = evt.clientY + scr.y + 15;
	if ((x > window.innerWidth - 300)) x = window.innerWidth - 300;
	// if ((window.innerHeight) && (y > window.innerHeight - 100)) y = window.innerHeight + scrollY - 100;

	// set comment position accordingly and display
	comment.style.top = y + "px";
	comment.style.left = x + "px";
	comment.style.display = "block";

	return;
}

function hideComment(evt) {
	comment = findComment(evt);
	comment.style.display = "none";
	return;
}

function closeComment(evt) {
	if (!evt) evt = window.evt // for IE/Win
	node = findEventOwner(evt);
	while( node.nodeName != 'DD' ) {
		node = node.parentNode;
	}
	node.style.display = 'none';
	return;
	
}

