﻿// Creates the spans for each glossary term on a page.
function GlossaryTerm(currTerm)
{
	var tooltips = getElementsByClass("GlossaryTerm", document, "span");
	if (tooltips.length > 0)
	{
		var terms = "";
		for (var i=0 ; i<tooltips.length ; i++)
		{
			terms += tooltips[i].getAttribute("term") + "||";
		}
		if (terms.length > 0)
			terms = terms.substr(0, terms.length-2);
		
		if (window.Grantus)
			Grantus.MyWebServices.Glossary.GetDefinitions(terms, currTerm, GlossaryGetDefinitionsComplete);
//		else
//			alert("no grantus");
	}
}
		
function GlossaryGetDefinitionsComplete(result)
{
	var definitions = result.split("||");
	var currTerm = definitions[0];
	var term = "";
	var tooltips = getElementsByClass("GlossaryTerm", document, "span");
	for (var i=0 ; i<tooltips.length ; i++)
	{
		term = tooltips[i].getAttribute("term");
		if (currTerm.toLowerCase() == term.toLowerCase())
		{
			var currDefinition = definitions[i+1] == "" ? "Undefined glossary term" : definitions[i+1];
		}
			
		if (tooltips[i].outerHTML)
		{
			// IE
			if (definitions[i+1] == "")
			{
				tooltips[i].outerHTML = "<span class=\"GlossaryTerm\" term=\"" + term + "\" onmouseover=\"dhtmlTooltip('Undefined glossary term')\" onmouseout=\"dhtmlTooltipHide()\">" + tooltips[i].innerHTML + "</span>";
			}
			else
			{
				tooltips[i].outerHTML = "<span class=\"GlossaryTerm\" term=\"" + term + "\" onmouseover=\"dhtmlTooltip('" + definitions[i+1] + "')\" onmouseout=\"dhtmlTooltipHide()\">" + tooltips[i].innerHTML + "</span>";
			}
		}
		else
		{
			// Mozila
			if (definitions[i+1] == "")
			{
				tooltips[i].setAttribute("onmouseover", "dhtmlTooltip('Undefined glossary term')", 0);
			}
			else
			{
				tooltips[i].setAttribute("onmouseover", "dhtmlTooltip('" + definitions[i+1] + "')", 0);
			}
		}
		
		// update the tooltip div for the current object.
		var objTooltip = document.getElementById("dhtmltooltip");
		objTooltip.innerHTML = currDefinition;
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	var i;
	var j;
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function HideDropdownLists() {
	var form = document.forms[0];
	var element = null;
	for (var i = 0; i < form.elements.length ; i++)
	{
		element = form.elements[i];
		if (element.type != null && (element.type == "select-one" || element.type == "select-multiple") )
		{
			element.style.visibility = "hidden";
		}
	}
}

function ShowDropdownLists() {
	var form = document.forms[0];
	var element = null;
	for (var i = 0; i < form.elements.length ; i++)
	{
		element = form.elements[i];
		if (element.type != null && (element.type == "select-one" || element.type == "select-multiple") )
		{
			element.style.visibility = "visible";
		}
	}
}

function DisableButton(buttonID, pleaseWaitText) {
	 var obj = document.getElementById(buttonID);

	 obj.value = pleaseWaitText;
	 obj.style.backgroundColor = '#cccccc';
	 obj.disabled = true;
}

function OpenWindow(url, defaultWidth, defaultHeight) {
	if (defaultWidth == null || defaultWidth == "") {
		defaultWidth = 100;
	}
	if (defaultHeight == null || defaultHeight == "") {
		defaultHeight = 100;
	}
	if (typeof(newWin) != "undefined")
	{
		if (!newWin.closed) {			
			newWin.focus();
			newWin.resizeTo(defaultWidth, defaultHeight);		
		}
	}
	newWin = window.open(url, "newWin", "width=" + defaultWidth + ",height=" + defaultHeight + ",location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0,titlebar=0");
}

function MouseX(evt) {
	// Returns the mouse X position relative to the document.
	var e = (window.event) ? window.event : evt;
	return e.clientX;
}

function MouseY(evt) {
	// Returns the mouse Y position relative to the document.
	var e = (window.event) ? window.event : evt;
	return e.clientY;
}

function FindPosX(obj) {
	// Returns the X position of an object relative to the document.
	var curleft = 0;
	
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
		
	return curleft;
}

function FindPosY(obj) {
	// Returns the Y position of an object relative to the document.
	var curtop = 0;
	
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
		
	return curtop;
}

function ValidUrl(url) {
	var regex = new RegExp("http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?");
	return regex.test(url.toLowerCase());
}