var letters = null;
//var refname = null;
var xmlconn = null;
var isIE;
var glossaryReference = null;
var Glossary = function (ref,letterarray){
	this.letters = letterarray;
	this.refname = ref;
	glossaryReference = this.refname;
	if (window.XMLHttpRequest) {
		this.isIE = false;
		xmlconn = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.isIE = true;
		xmlconn = new ActiveXObject("Microsoft.XMLHTTP");
	}
	this.alternate = null;
}

Glossary.prototype.Create = function (){
	document.write ("<div id='GlossaryNav'>");
	document.write ("<a href='javascript:glossaryObj.Search(\"\",false);'><strong>[All]</strong></a> ");
	for (var i=0; i<this.letters.length; i++){
		document.write ("<a href='javascript:"+this.refname+".Display(\""+this.letters[i]+"\");'>"+this.letters[i]+"</a> ");	
	}
	document.write ("</div>");
	document.write ("<div id='GlossarySearch' class='small'>Search for a specific term: <input id='GlossaryQuery' type='text' class='small' onKeyPress='"+this.refname+".HandleKeys(event);'/>	<input type='button' value='Go' class='small' onClick='"+this.refname+".HandleButton()'></div>");
	document.write ("<div id='Status'>Loading...</div>");
	//document.write ("<div id='GlossarySection'></div>");
}

Glossary.prototype.Display = function (letter) {
	document.getElementById ("GlossaryQuery").value = "";
	xmlconn.open("GET", "glossaryAPI.cfm?letter="+letter, 1);
	xmlconn.onreadystatechange = this.Done;
	xmlconn.send(null);	
}

Glossary.prototype.Search = function (query,specific) {
	if (!specific)
		document.getElementById ("GlossaryQuery").value = query;
	xmlconn.open("GET", "glossaryAPI.cfm?query="+query+"&specific="+specific, 1);
	xmlconn.onreadystatechange = this.Done;
	xmlconn.send(null);	
}


Glossary.prototype.ToggleAlternate = function(id){
	if (this.alternate != null){
		if (this.alternate == document.getElementById ("Alternate_"+id)){
			this.alternate.className = "Hidden";
			this.alternate = null;

		}else{
			this.alternate.className = "Hidden";
			this.alternate = document.getElementById ("Alternate_"+id);
			this.alternate.className = "";	
		}
	}else{
		this.alternate = document.getElementById ("Alternate_"+id);
		this.alternate.className = "";
	}
}
Glossary.prototype.Done = function (){
	var ptr = document.getElementById ("GlossarySection");
	var status = document.getElementById ("Status");
	if (xmlconn.readyState == 4){
		status.className = 'Hidden';
		var response = xmlconn.responseXML;
		var i=0;
		if (response != null){
			var newtext = "";
			while (term = response.getElementsByTagName ('termname')[i]){
				var termname = term.firstChild.data;
				var termbody = response.getElementsByTagName ('termbody')[i].firstChild.data;
				var language = response.getElementsByTagName ('language')[i].firstChild.data;
				
				if (language == "English"){
					newtext += "<h4>"+unescape (termname)+"</h4>";
					newtext += "<div>"+unescape (termbody)+"</div>";
				}else{
					newtext += "<br><a href='javascript:"+glossaryReference+".ToggleAlternate ("+i+")' style='font-size:90%'><strong>Spanish: "+unescape (termname)+"</strong></a>";
					newtext += "<br><div class='Hidden' id='Alternate_"+i+"' style='background-color:#eeeeee;border:1px solid #cccccc;padding:10px;'>"+unescape (termbody)+"</div>";
				}
					
				i++;
			}
		}
		if (i>0){
			ptr.innerHTML = newtext;
		}else{
			ptr.innerHTML = "<div id='Error'>No pudimos encontrar su b&uacute;squeda.</div>";
		}
	}else{
		status.className = '';
	}
	
	return;
}

Glossary.prototype.HandleKeys = function (event){
	if (event.keyCode == 13){
		this.Search (document.getElementById ("GlossaryQuery").value,false);
	}
}

Glossary.prototype.HandleButton = function (){
	this.Search (document.getElementById ("GlossaryQuery").value,false);
}