
var words;
var val = "";
var found = false;
var matchedWords = new Array();

var showSuccess = function(response, responseXML)
{
	words = this.response.xml.getElementsByTagName('WORD');
	displayWords(words);
}

var lookForExact = function(response, responseXML)
{
	var wordsToSearch = this.response.xml.getElementsByTagName('WORD');
	for(var i = 0; i < wordsToSearch.length; i++)
	{
		//if(wordsToSearch[i] != null && wordsToSearch[i] != 'undefined')
		//{
			//var word = new Element(wordsToSearch[i]);
			var word = wordsToSearch[i].getAttribute('term');
			if(word.toLowerCase() == val.toLowerCase())
			{
				displayTermResult(wordsToSearch[i]);
				found = true;
			}
		//}
	}
}

function searchTerm(value)
{
	val=value.replace(/^\s+|\s+$/g, '');
	emptyString="<div class=\"leftFloat\"><p class=\"titleOrangeBold11\">Please enter a word</p></div>\n";
	if(val.length < 1)
		document.getElementById('searchError').innerHTML=emptyString;
	else if(!lookForExactMatch(val))
		lookForSimilar(val);
}

function lookForExactMatch(val)
{
	found=false;
	var firstChar = val.substring(0,1).toUpperCase();
	//var myAjax2 = new Ajax("/tools-information/lookups/glossary/data/"+firstChar+".xml", {method: 'get', evalScripts: true, onFailure: showFailure});
	var myAjax2 = new Ajax("/tools-information/lookups/glossary/data/"+firstChar+".xml", {async: false, method: 'get', evalScripts: true, onSuccess: lookForExact, onFailure: showFailure});
	myAjax2.request();
	return found;
}

function lookForSimilar(val)
{
	var letters = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
	matchedWords = new Array();
	var myAjax3;
	for(var i = 0; i < letters.length; i++)
	{
		myAjax3 = new Ajax("/tools-information/lookups/glossary/data/"+letters[i]+".xml", {async: false, method: 'get', evalScripts: true, onFailure: showFailure});
		myAjax3.request();
	
		var wordsToSearch = myAjax3.response.xml.getElementsByTagName('WORD');

		for(var j = 0; j < wordsToSearch.length; j++)
		{
			//var word = new Element(wordsToSearch[j]);
			if(wordsToSearch[i] != null)// && wordsToSearch[i] != 'undefined')
			{
				var word = wordsToSearch[i].getAttribute('term');

				if(word.toLowerCase().indexOf(val.toLowerCase()) > -1)
				{
					matchedWords.push(wordsToSearch[i]);
				}
			}
		}
	}
	displaySimilarWords(matchedWords);
}

function changeLetter(letter)
{
	var myAjax = new Ajax("/tools-information/lookups/glossary/data/"+letter+".xml", {method: 'get', evalScripts: true, onSuccess: showSuccess, onFailure: 'showFailure'});
	myAjax.request();
}
var showFailure = function()
{
	var err="";
	err="<div class=\"padTop15\"></div>\n";
	err+="<div class=\"leftFloat\"><p class=\"titleOrangeBold11\">No matches found.</p></div>\n";
	err+="<div class=\"clear\"></div>\n";
	document.getElementById('wikiTerms').innerHTML=err;
}

function displayTermResult(wordElement)
{
	//var word = new Element(wordElement);
	var term = wordElement.getAttribute('term');
	var definition = wordElement.getAttribute('definition');
	
	var termOut="";
	termOut="<div class=\"padTop15\"></div>\n";
	termOut+="<div class=\"lineDouble\">\n";
	termOut+="<div class=\"leftFloat\"><p class=\"titleOrangeBold11\">"+term+"</p></div>\n";
	termOut+="<div class=\"clear\"></div>\n";
	termOut+="</div>\n";
	termOut+="<div>\n";
	termOut+="<p><b>Definition:</b><br>\n";
	termOut+=unescape(definition)+"\n";
	termOut+="</div>\n";
	termOut+="<div class=\"clear\"></div>\n";
	termOut+="</div>\n";
	termOut+="<div class=\"padTop20\">&nbsp;</div>\n";
	document.getElementById('searchError').innerHTML="";
	document.getElementById('wikiTerms').innerHTML=termOut;
}

function changeTerm(term)
{
	var termOut="";
	var definition = "Empty Definition";
	for (var i = 0; i < words.length; i++)
	{
		//var word = new Element(words[i]);
		var word = words[i].getAttribute('term');
		if(term == word)
			displayTermResult(words[i]);
	}
}

function changeTermSearch(term)
{
	var termOut="";
	var definition = "Empty Definition";

	for (var i = 0; i < matchedWords.length; i++)
	{
		//var word = new Element(matchedWords[i]);
		var word = matchedWords[i].getAttribute('term');
		if(term == word)
			displayTermResult(matchedWords[i]);
	}
}


function displayTerm(term, words)
{
	var definition = "Empty Definition";
	for (var i = 0; i < words.length; i++)
	{
		//var word = new Element(words[i]);
		var word = words[i].getAttribute('term');
		if(term == word)
			//definition = word.getProperty('definition');
			definition = words[i].getAttribute('definition');
	}
	document.getElementById('searchError').innerHTML="";
	document.getElementById('wikiTerms').innerHTML=definition;
}

// display data at a given time interval
function displayWords(words)
{
	var size = words.length;

	var firstCol = 0;
	var secondCol = 0;
	var thirdCol = 0;
	var thirdSize = Math.round(size/3);
	var out ="";

	if(size%3 == 0)
	{
		firstCol = thirdSize;
		secondCol = thirdSize;
		thirdCol = thirdSize;
	}
	else if(size%3 == 1)
	{
		firstCol = thirdSize + 1;
		secondCol = thirdSize;
		thirdCol = thirdSize;
	}
	else
	{
		firstCol = thirdSize;
		secondCol = thirdSize;
		thirdCol = thirdSize - 1;
	}
	
	if(firstCol > 0)
	{
		out+="<div class=\"thirdColumn\">";
		for(var i = 0; i < firstCol; i++)
		{
			//var word = new Element(words[i]);
			var term = words[i].getAttribute('term');
			out+="<a href=\"javascript:;\" onClick=\"changeTerm('"+term+"');\">"+term+"</a>";
		}
		out+="</div>";
	}
	
	if(secondCol > 0)
	{
		out+="<div class=\"thirdColumn\">";
		for(var i = firstCol; i < firstCol + secondCol; i++)
		{
			//var word = new Element(words[i]);
			var term = words[i].getAttribute('term');
			out+="<a href=\"javascript:;\" onClick=\"changeTerm('"+term+"');\">"+term+"</a>";
		}
		out+="</div>";
	}
	if(thirdCol > 0)
	{
		out+="<div class=\"thirdColumn\">";
		for(var i = (firstCol + secondCol); i < size; i++)
		{
			//var word = new Element(words[i]);
			var term = words[i].getAttribute('term');
			out+="<a href=\"javascript:;\" onClick=\"changeTerm('"+term+"');\">"+term+"</a>";
		}
		out+="</div>";
	}
	document.getElementById('searchError').innerHTML="";
    document.getElementById('wikiTerms').innerHTML=out;
}

function displaySimilarWords(words)
{
	var size = words.length;

	var firstCol = 0;
	var secondCol = 0;
	var thirdCol = 0;
	var thirdSize = Math.round(size/3);
	var out ="";
	
	if(size == 0)
	{
		out="<div class=\"padTop15\"></div>\n";
		out+="<div class=\"leftFloat\"><p class=\"titleOrangeBold11\">No matches found.</p></div>\n";
		out+="<div class=\"clear\"></div>\n";
	}
	else
	{
	
		if(size%3 == 0)
		{
			firstCol = thirdSize;
			secondCol = thirdSize;
			thirdCol = thirdSize;
		}
		else if(size%3 == 1)
		{
			firstCol = thirdSize + 1;
			secondCol = thirdSize;
			thirdCol = thirdSize;
		}
		else
		{
			firstCol = thirdSize;
			secondCol = thirdSize;
			thirdCol = thirdSize - 1;
		}
		
		if(firstCol > 0)
		{
			out+="<div class=\"thirdColumn\">";
			for(var i = 0; i < firstCol; i++)
			{
				var word = new Element(words[i]);
				//out+="<a href=\""+window.location.href+"?term="+word.getProperty('term')+"\">"+word.getProperty('term')+"</a>";
				out+="<a onClick=\"changeTermSearch('"+word.getProperty('term')+"');\">"+word.getProperty('term')+"</a>";
			}
			out+="</div>";
		}
		
		if(secondCol > 0)
		{
			out+="<div class=\"thirdColumn\">";
			for(var i = firstCol; i < firstCol + secondCol; i++)
			{
				var word = new Element(words[i]);
				//out+="<a href=\""+window.location.href+"?term="+word.getProperty('term')+"\">"+word.getProperty('term')+"</a>";
				out+="<a onClick=\"changeTermSearch('"+word.getProperty('term')+"');\">"+word.getProperty('term')+"</a>";
			}
			out+="</div>";
		}
		if(thirdCol > 0)
		{
			out+="<div class=\"thirdColumn\">";
			for(var i = (firstCol + secondCol); i < size; i++)
			{
				var word = new Element(words[i]);
				//out+="<a href=\""+window.location.href+"?term="+word.getProperty('term')+"\">"+word.getProperty('term')+"</a>";
				out+="<a onClick=\"changeTermSearch('"+word.getProperty('term')+"');\">"+word.getProperty('term')+"</a>";
			}
			out+="</div>";
		}
	}
	document.getElementById('searchError').innerHTML="";
    document.getElementById('wikiTerms').innerHTML=out;
}


// execute program when page is loaded
window.onload=function()
{
	var myAjax = new Ajax("/tools-information/lookups/glossary/data/A.xml", {method: 'get', evalScripts: true, onSuccess: showSuccess, onFailure: showFailure});
	myAjax.request();
}


	var leftnavToggler = $$('dl#navigation_left dd.ddSubnav a.leftNav');
	var leftnavAccordion = $$('dl#navigation_left div.subnav');
	
	var leftNavAccordion = new Accordion(leftnavToggler, leftnavAccordion, 
		{
			openAll: false,
			allowMultipleOpen: true,
			firstElementsOpen: [0],
			start: 'open-first',
			fixedHeight: false,
			fixedWidth: false,
			alwaysHide: true,
			wait: false,
			onActive:function(e, c){
				e.getParent().getParent().addClass('over');
			},
			onBackground:function(e, c){
				e.getParent().getParent().removeClass('over');
				e.getParent().getParent().addClass('under');
			},
			opacity: true
		}
	);

	// added for keeping the current section open
        var sections = ['company', 'trading', 'globex', 'market-data', 'clearing', 'market-regulation', 'investor-relations', 'education'];
        sections.each(
		function(e, i){

                	var sectionRX = new RegExp(e, 'ig');
                        if(sectionRX.test(window.location) ){
                              leftNavAccordion.display(i);
                              sections.each = null;
                        }
                  }
        );



