Event.observe(window, 'load', function() {
	var terms = $$(".g-link");
	var arr = new Array();                              

	/* Looking for all elements and creating array */
	terms.each(function(div) { 
		if(document.all){
			arr.push(AlphaNumeric(div.innerText) );  
		} else{
			arr.push(AlphaNumeric(div.textContent) );
		}

	});

	var url = "index.php?id=169&qu=" + arr.toString() + "&t="+ new Date().getTime();
	new Ajax.Request(url, {
		asynchronous: true,
		method: "get",
		onSuccess: function(request){
			//evaluate
			var response = request.responseText;
			var responseArr = response.split(',');
			var no=0;
			terms.each(function(div) { 
				no++;
				if(responseArr[no].length > 0) {
					div.className = 'g-link-active';
					div.id = 'glpop'+responseArr[no];
					div.idNo = responseArr[no];

					Event.observe(div, 'click', function(event) {
						ShowPopup(div.idNo, div);
					    Event.stop(event);
					}, false);
					
					Event.observe(div, 'mouseover', function(event) {
						div.setStyle({ cursor: 'pointer' });
					}, false);

				}
			});
		},
	  	onFailure: function(request){
		}
	});
});

function ShowPopup(id, div) {
	var url = "index.php?id=169&gid="+id+"&t="+ new Date().getTime();
	new Ajax.Request(url, {
		asynchronous: true,
		method: "get",
		onSuccess: function(subrequest){
			//evaluate
			var subresponse = subrequest.responseText;
			outputArr = subresponse.split('|#|');
			if(outputArr[0] && outputArr[1]) {
				var obj = document.getElementById('popupWindow');
				if(div) {
					var pos = findPos(div);
					var containerPos = findPos(document.getElementById("pg-container"));
					containerPos[0]+=960;
					obj.style.left = (pos[0]+5)+'px';
					obj.style.top = (pos[1]+20)+'px';
				}

				document.getElementById('popupWindowTitle').innerHTML = outputArr[0];
				document.getElementById('popupWindowBody').innerHTML = outputArr[1];
				obj.style.display = 'block';
				if(div) {
					if(obj.offsetWidth) {
						if(pos[0]+5+obj.offsetWidth > containerPos[0])
							obj.style.left = (containerPos[0] - obj.offsetWidth - 5)+'px';
					}
				}
			}
		},
		onFailure: function(request){
		}
	});
}

function closePopup() {
	document.getElementById('popupWindow').style.display = 'none';
}

// Returns true if the string only contains alpha numeric characters (empty string = true)
function AlphaNumeric(txt)
{
	return ValidString(txt,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789()');
}

// Returns true if the CheckString only contains characters passed in ValidString (empty string = true)
function ValidString(ChkString,ValidString)
{
	var returnString = '';
	for (i=0; i<ChkString.length; i++)
	{
		if (ValidString.indexOf(ChkString.substring(i,i+1)) != -1) 
			returnString+=ChkString.substring(i,i+1);
	}
	return returnString;
}

Array.prototype.push = function(value) {this[this.length] = value; };

function findPos(obj) {
	
	var curLeft = curTop = 0;	
    do {
      curLeft += obj.offsetLeft;
      curTop += obj.offsetTop;
    } while(obj = obj.offsetParent)
	return [curLeft,curTop];
}

/*
OLD CODES:
function getElementsByClassName(strClass, strTag, action, outputArr, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  var no = 0;
  for (var i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
		  if(action=='req') {
			  if(document.all){
				arr.push(AlphaNumeric(objColl[i].innerText) );  
			  } else{
				arr.push(AlphaNumeric(objColl[i].textContent) );
			  }
		  } else {
			  no++;
//			  alert(outputArr[no]);
			  if(outputArr[no].length > 0) {
				  objColl[i].className = 'g-link-active';
				  objColl[i].id = 'popup'+no;
				  objColl[i].innerHTML = '<a href="javascript:ShowPopup(\''+outputArr[no]+'\',true, '+no+' )">'+objColl[i].innerHTML+'</a>';
			  }
		  }
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

// Returns true if the string only contains alpha numeric characters (empty string = true)
function AlphaNumeric(txt)
{
	return ValidString(txt,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789()');
}

// Returns true if the CheckString only contains characters passed in ValidString (empty string = true)
function ValidString(ChkString,ValidString)
{
	var returnString = '';
	for (i=0; i<ChkString.length; i++)
	{
		if (ValidString.indexOf(ChkString.substring(i,i+1)) != -1) 
			returnString+=ChkString.substring(i,i+1);
	}
	return returnString;
}


// To cover IE 5 Mac lack of the push method
Array.prototype.push = function(value) {this[this.length] = value; };

function createRequest() {
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = false;
			}
		}
	}
	return request;
}

function UpdateRequ() {
	if (request.readyState == 4 || request.readyState == 0) {
		var output = request.responseText;
		if(output.length>0) {
			//alert(output);
			outputArr = output.split('||');
			getElementsByClassName('g-link','span', 'res', outputArr);
		}
	}  
}

var request = createRequest();
var requestId = 0;
var requestMove = true;
var requestMoveId = 0;

function glossaryChange() {
	var url = "http://staging.edsource.org/index.php?id=169&qu="+getElementsByClassName('g-link','span', 'req')+"&t="+ new Date().getTime();
//	document.write(url);
//	alert(url);
	request.open("GET", url, true);
	request.onreadystatechange = UpdateRequ;
	request.send("");
}


window.onload = setTimeout("glossaryChange()",100);;

function ShowPopup(id, move, moveId) {
	requestId = id;
	requestMove = move;
	requestMoveId = moveId?moveId:0;
	var url = "index.php?id=169&gid="+id+"&t="+ new Date().getTime();
	//document.write(url);
	request.open("GET", url, true);
	request.onreadystatechange = ShowPopupContent;
	request.send("");
}

function ShowPopupContent() {
	if (request.readyState == 4 || request.readyState == 0) {
		var output = request.responseText;
		if(output.length>0) {
//	alert(output);
			var obj = document.getElementById('popupWindow');
			if(requestMove && requestMoveId) {
				var pos = findPos(document.getElementById('popup'+requestMoveId));
				var containerPos = findPos(document.getElementById('container'));
				containerPos[0]+=960;
				obj.style.left = (pos[0]+5)+'px';
				obj.style.top = (pos[1]+20)+'px';
			}
			outputArr = output.split('|#|');
			document.getElementById('popupWindowTitle').innerHTML = outputArr[0];
			document.getElementById('popupWindowBody').innerHTML = outputArr[1];
			obj.style.display = 'block';
			if(requestMove) {
				if(obj.offsetWidth) {
					if(pos[0]+5+obj.offsetWidth > containerPos[0])
						obj.style.left = (containerPos[0] - obj.offsetWidth - 5)+'px';
				}
				//alert(obj.offsetWidth);
			}
			
		}
	}  
}

function closePopup() {
	document.getElementById('popupWindow').style.display = 'none';
}

function findPos(obj) {
	
	var curLeft = curTop = 0;	
    do {
      curLeft += obj.offsetLeft;
      curTop += obj.offsetTop;
    } while(obj = obj.offsetParent)
	return [curLeft,curTop];
//	return [obj.offsetLeft,obj.offsetTop];
}
*/

