/* ~~ browser detection - populates global variable "browser" ~~*/
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

var browser = getBrowser();
if (browser == "ie6" || browser == "ie7") document.writeln("<link rel=\"stylesheet\" href=\"../common/css/TUApplIE6_IE7.css\" type=\"text/css\">");
if (browser == "ie") document.writeln("<link rel=\"stylesheet\" href=\"../common/css/TUApplIE.css\" type=\"text/css\">");
if (browser == "firefox") document.writeln("<link rel=\"stylesheet\" href=\"../common/css/TUApplFirefox.css\" type=\"text/css\">");
var oField = "";

function getBrowser() {
	var userAgent = navigator.userAgent.toLowerCase();
	var retBrowser = "";
	if (contains(userAgent, 'msie') || contains(userAgent, 'internet explorer')) {
		if (contains(userAgent, 'msie 6')) retBrowser = "ie6";
		else if (contains(userAgent, 'msie 7')) retBrowser = "ie7";
		else retBrowser = "ie";
	}
	else if (contains(userAgent, 'safari') || contains(userAgent, 'safari')) retBrowser = "safari";
	else if (!contains(userAgent, 'compatible') || contains(userAgent, 'firefox'))
	{
	    retBrowser = "mozilla";
	    if(contains(userAgent, 'firefox')) retBrowser="firefox";
	    if(contains(userAgent, 'macintosh')) retBrowser="firefox-mac";
	} else retBrowser = "unknown";
	return retBrowser;
}

function contains(string, substring)
{
    found = string.indexOf(substring) + 1;
    return found;
} 

/* ~~ like prototype.js - shortcut for getElementById ~~*/
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function $(element) {
	return(document.getElementById(element));
}

/* ~~ hide/show objects ~~*/
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function show (objId, displayState) {
	$(objId).style.display = displayState;
}
function hide (objId) {
	$(objId).style.display = "none";
}

/* ~~ get coordinates for objects ~~*/
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function getLeftById(imgId) {
	return getLeftByObj($(imgId));
}

function getTopById(imgId) {
	return getTopByObj($(imgId));
}

function getLeftByObj(objId) {
	xPos = objId.offsetLeft;
	tempEl = objId.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}
	return xPos;
}

function getTopByObj(objId) {
	yPos = objId.offsetTop;
	tempEl = objId.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
}

function isOutsideObject(objId, e) {
	var obj = $(objId)
	var left = getLeftByObj(obj);
	var top = getTopByObj(obj);
	var right = left + obj.offsetWidth;
	var bottom = top + obj.offsetHeight;
	var xPos = 0;
	var yPos = 0;
	if (browser == "ie6" || browser == "ie7" || browser == "ie") {
		xPos = event.clientX;
		yPos = event.clientY;

		//adjust the top variable to handle scrolling by the user
		top -= document.documentElement.scrollTop;		
	} else {
		xPos = e.pageX;
		yPos = e.pageY;
	}
	if (xPos < left || xPos > right || yPos < top || yPos > bottom) {
		return true;
	} else {
		return false;
	}
}

/* ~~ help popup configuration and display ~~*/
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function configureHelpPopup(popupButtonId) {
	var xVal = getLeftById(popupButtonId);
	var yVal = getTopById(popupButtonId);
	var popupObject = $("helpPopupArea"+oField);
	if (browser == "ie6" || browser == "ie7") {
		popupObject.style.top = (yVal - 4) + "px";
		popupObject.style.left = (xVal - 4) + "px";
	} else if (browser == "ie") {
		popupObject.style.top = (yVal - 4) + "px";
		popupObject.style.left = (xVal - 5) + "px";
	} else {
		popupObject.style.top = (yVal - 5) + "px";
		popupObject.style.left = (xVal - 5) + "px";
	}
}

function showCommonHelpPopupElements (popupButtonId) {
	show("helpPopupArea"+oField, "block");
	show("helpPopupHeader"+oField, "block");
}

function hideCommonHelpPopupElements () {
	hide("helpPopupArea"+oField);
	hide("helpPopupHeader"+oField);
}

function helpPopupClickOutListener (e) {
	if ($("helpPopupHeader"+oField).style.display == "block") {
		if (isOutsideObject("helpPopupArea"+oField, e)) {
			hideHelpPopupOnClickListener();
		}
	}
}

function bodyOnClickListener(e) {
	if ($("helpPopupArea"+oField) != null) helpPopupClickOutListener(e);
}

function showHelpPopupOnClickListener(oId) {
	oField = oId;
	configureHelpPopup("subCodeHelpBtn"+oField);
	show("subCodeHelpContent"+oField, "block");
	showCommonHelpPopupElements("subCodeHelpBtn"+oField);
}

function hideHelpPopupOnClickListener(oId) {
	oField = oId;
	hideCommonHelpPopupElements();
	hide("subCodeHelpContent"+oField);
}
