var targetUrl = "/Main/Company/Comparison/overview.aspx?s=<securityids>";
//global menu state
var menuReady = false;
var CSSRuleValues = {	menuItemHeight:"22px",
						menuItemLineHeight:"1.4em",
						menuBorderBottom:"1px",
						menuWrapperBorderWidth:"2px",
						menuWrapperPadding:"3px",
						defaultBodyFontSize:"10px",
						textBoxHeight:"20px"
					};
var limit = 20;
var query = "";
var timeoutId;
var element;
function runQuery( elem)
{
	element = elem;
	query = elem.value;
	if( query != "Compare") 
	{
		clearTimeout( timeoutId);
		timeoutId = setTimeout( "getSearchResults()", 500);
	}
}
function getSearchResults()
{
	var request = HTTPnewRequest();
	request.onreadystatechange = function() 
	{
		//alert("got here " + request.readyState + " " + request.status);
	
		if( request.readyState == 4 && request.status == 200)
		{
			var result = request.responseText;
			var menu = createMenuArrayFromList(result);
			makeMenu( menu);	
		}
	}
	var url = "/Main/CompanySearch.aspx?q=" + query + "&limit=" + limit;
	request.open("GET", url, true); // Asynchronous
	//alert( url);
	request.send(null);
}
function createMenuArrayFromList( resultStr)
{
	var args = getArgs();
	
	var securityids = args.s;
	if( securityids == null)
	{
		securityids = "";
	}
	var lineArray = resultStr.split("\n");
	var resultArray = new Array();
	for (var i = 0; i < lineArray.length; i++)
	{
		var line = lineArray[i];
		if( line != "") 
		{
			var splitline = line.split(",");
			var qs = securityids + (securityids.length > 0 ? "," + splitline[1] : splitline[1]);
			resultArray[resultArray.length] = {href: targetUrl.replace("<securityids>", qs), text: splitline[0] }
		}
	}
	var menu = {
				mBarId: element.id,
				elemId:"dynamicCompareList",
				frameId:"dynamicCompareFrame"
				};
	menu.menuItems = resultArray;
	
	return menu;
}

function getElementStyle( elem, IEStyleProp, CSSStyleProp)
{
	if( elem.currentStyle)
	{
		return elem.currentStyle[ IEStyleProp];
	}
	else if( window.getComputedStyle)
	{
		var compStyle = window.getComputedStyle( elem, "");
		return compStyle.getPropertyValue(CSSStyleProp);
	}
	return "";
}
function getMenuItemHeight() 
{
	var menuItemH = 0;
	var bodyFontSize = parseInt( getElementStyle( document.body, "fontSize", "font-size") );
	if( bodyFontSize == parseInt(CSSRuleValues.defaultBodyFontSize) ) 
	{
		menuItemH = parseInt( parseFloat( CSSRuleValues.menuItemHeight) ) +
			parseInt( parseFloat( CSSRuleValues.menuBorderBottom) );
	}
	else
	{
		menuItemH = parseInt( parseFloat( CSSRuleValues.menuItemLineHeight) * bodyFontSize );
	}
	return menuItemH;
}
function getHeightAdjust() 
{
	var heightAdjust = parseInt( parseFloat( CSSRuleValues.menuWrapperPadding) ) 
		+ 2 * parseInt( parseFloat(CSSRuleValues.menuWrapperBorderWidth));
	if	( navigator.appName == "Microsoft Internet Explorer" &&
			navigator.userAgent.indexOf("Win") != -1 &&
			( typeof document.compatMode == "undefined" || document.compatMode == "BackCompat") 
		)
	{ 
		heightAdjust = -heightAdjust;
	}
	return heightAdjust;	
}

function makeMenu( menu) 
{
	var menuDiv, menuItem, itemLink, textNode;
	var menuItemH = getMenuItemHeight();
	var heightAdjust = getHeightAdjust();
	var frameDiv = document.getElementById( menu.frameId);
	var menuDiv = document.getElementById( menu.elemId);
	if( menuDiv != undefined) 
	{
		menuDiv.innerHTML = "";
	}
	else
	{
		menuDiv = document.createElement("div");
		if( frameDiv != undefined)
		{
			frameDiv.appendChild( menuDiv);
		}
		menuDiv.id = menu.elemId;
	}
	
/*	
	if( menu.menuItems.length > 0)
	{
		menuDiv.style.height = ( menuItemH * menu.menuItems.length) - heightAdjust + "px";
	}
	else
	{
		menuDiv.style.height = menuItemH  - heightAdjust + "px";
	}
*/	
	
	// build menus using the resultSet Array. Use array to drive div creation loop.
	for ( var index = 0; index < menu.menuItems.length ; index++)
	{
		menuItem = document.createElement("div");
		menuItem.id = menu.elemId + "_" + index;
		menuItem.className = "searchMenuItem";
		// mouse events need to be determined
		//menuItem.style.top = menuItemH * index + "px";
		
		//menuItem.onclick = "loadSix(" + menu.menuItems[index].cik +")"
		itemLink = document.createElement("a");
		itemLink.href = menu.menuItems[index].href;
		itemLink.className = "menuItem";
		//itemlink mouseevents need to be established
		textNode = document.createTextNode( menu.menuItems[index].text);
		itemLink.appendChild( textNode);
		menuItem.appendChild( itemLink);
		menuDiv.appendChild( menuItem);		
	}
	if( menu.menuItems.length == 0)
	{
		menuItem = document.createElement("div");
		menuItem.id = menu.elemId + "_NoResults";
		menuItem.className = "searchMenuItemNoResult";
		
		//menuItem.style.top = menuItemH * 0 + "px";
		menuItem.innerHTML = "no match found, please double check the spelling";
		//menuItem.appendChild( textNode);
		menuDiv.appendChild(menuItem);
	}
//	menuDiv = positionMenu( menu.mBarId,menuDiv);
	menuReady = true;
	if( query != "")
	{
		frameDiv.style.display = "block";
		frameDiv.style.zIndex = 1000;
		menuDiv.style.visibility = "visible";
	}
	else
	{
		frameDiv.style.display = "none";
		menuDiv.innerHTML = "";
	}
}
function positionMenu( elemId, menuDiv) 
{
	// use the image for poistion reference of related div.
	var mBar = element;
	
	var offsetTrail = mBar;
	var offsetLeft = 0;
	var offsetTop = 0;
	
	while( offsetTrail )
	{
		//alert( offsetTrail.offsetTop);
		offsetLeft += offsetTrail.offsetLeft;
		offsetTop += offsetTrail.offsetTop;
		offsetTrail = offsetTrail.offsetParent;
	}
	if( navigator.userAgent.indexOf("Mac") != -1 &&
		typeof document.body.leftMargin != "undefined")
	{
		offsetLeft += document.body.leftMargin;
		offsetTop += document.body.topMargin;
	}
	//alert( parseInt(parseFloat(CSSRuleValues.textBoxHeight)));
	menuDiv.style.left = offsetLeft + "px";
	menuDiv.style.top = offsetTop + parseInt(parseFloat(CSSRuleValues.textBoxHeight)) + "px";
	return menuDiv;
}

function showMenu( menu) 
{
	if( menuReady )
	{
		//positionMenu( menu);
		menu.style.visibility = "visible";
	}
}
function hideMenu(menu)
{
	//alert( "removing kid");
	document.body.removeChild( menu);
}


