/*  modified 28-feb-2008 wls  */
/* Rev: $Revision: 105885 $ */
var securityTypes = new Array();
	securityTypes[0]="";
	securityTypes[1]="";
	securityTypes[2]="";
	securityTypes[3]="Preferred Stock";
	securityTypes[4]="Warrant";
	securityTypes[5]="Premium";
	securityTypes[6]="Trust";
	securityTypes[7]="Right";
	securityTypes[8]="Warrant Right";
	securityTypes[9]="Index";
	securityTypes[10]="Future";
	securityTypes[11]="Future Spread";
	securityTypes[12]="Option";
	securityTypes[13]="Equity Option";
	securityTypes[14]="Index Option";
	securityTypes[15]="Future Option";
	securityTypes[16]="Fixed Income";
	securityTypes[17]="Bond";
	securityTypes[18]="Convertible Bond";
	securityTypes[19]="Mortgage Backed";
	securityTypes[20]="Government Bond";
	securityTypes[21]="Corporate Bond";
	securityTypes[22]="US Agency Bond";
	securityTypes[23]="US Treasury Bill";
	securityTypes[24]="US Treasury Coupon";
	securityTypes[25]="Money Market";
	securityTypes[26]="CD";
	securityTypes[27]="Mutual Fund";
	securityTypes[28]="Mutual Fund";
	securityTypes[29]="Money Market Fund";
	securityTypes[30]="Unit Inv. Trust Ph. 1";
	securityTypes[31]="Unit Inv. Trust Ph. 2";
	securityTypes[32]="Currency";
	securityTypes[33]="Forex FRA";
	securityTypes[34]="Forex Deposit";
	securityTypes[35]="Forex Forward";
	securityTypes[36]="Market Indicator";
	securityTypes[37]="Fund";
	securityTypes[38]="ETF";
	securityTypes[39]="Loan";
	securityTypes[40]="";
	securityTypes[41]="Statistic";

var searchBox;
var dropdownBox;
var searchButton;
var highlightClass;
var enabledSetting;
var secType=new Array();
var latestServerQuery="";
var rows;
var smartboxUrl;
var resultsObj;
var sbMinWidth=488;
var defaultDropdownPosLeft=316; // dm header
var defaultDropdownPosTop=96; // dm header
var closeDropdownTimeout=3000;
var closeTimeoutID=0;
var sendReqTimeout=200;
var reqTimeoutID=0;

document.onclick=hideDropdownBox;

function smartbox(inQueryField,inDropdownDivName,inSearchButton,inQueryUrl,inHighlightClass,inEnabledSetting,inSecType,inTimeout,inReqTimeout,inDropdownPosLeft)
{
	searchBox=inQueryField;
	dropdownBox=inDropdownDivName;
	smartboxUrl=inQueryUrl;
	highlightClass=inHighlightClass;
	searchButton=document.getElementById(inSearchButton);
	enabledSetting=inEnabledSetting;
	secType=inSecType;
	closeDropdownTimeout=inTimeout;
	closeTimeoutID=0;
	
	if((typeof(inReqTimeout)!='undefined'&&inReqTimeout!=null)){sendReqTimeout=inReqTimeout;}
	if((typeof(inDropdownPosLeft)!='undefined'&&inDropdownPosLeft!=null)){defaultDropdownPosLeft=inDropdownPosLeft;}
	if(enabledSetting!=0){startup();}
}

function startup()
{
	searchBox.autocomplete="off";
	searchBox.onkeydown=keyDownHandler;
	reqTimeoutID=window.setTimeout('requestLoop()',sendReqTimeout);
}

function requestLoop()
{
	var keyword=query().toLowerCase();
	if((keyword!=latestServerQuery)&&(keyword!=''))
	{
		var posColon=keyword.indexOf(":");
		if(posColon!=-1){keyword=keyword.substring(0,posColon);}
		loadJSON(keyword.toLowerCase());
		latestServerQuery=keyword.toLowerCase();
	}
	if(keyword.length==0){hideDropdownBox();latestServerQuery=null;}
}

function loadJSON(key)
{
	var url=smartboxUrl+"/?f=json&s="+key+"&c=11&fids=n,sn,en,e,cc,t&service=SmartBoxQuotes&callback=processJSON";
	var headID=document.getElementsByTagName("head")[0];
	var newScript=document.createElement('script');
	newScript.type='text/javascript';
	newScript.src=url;
	headID.appendChild(newScript);
}

function keyDownHandler(evt)
{
	cancelCloseTime();
	if(reqTimeoutID){window.clearTimeout(reqTimeoutID);
	reqTimeoutID=null;
}

var dropdown=document.getElementById(dropdownBox);
var parentEl=get_firstchild(dropdown);

if(!evt&&window.event){evt=window.event;}

var key=evt.keyCode;
var KEYUP=38;
var KEYDOWN=40;
var KEYENTER=13;
var KEYTAB=9;
var KEYBACKSPACE=8;
var KEYDELETE=48;

if(key==KEYBACKSPACE){}else if(key==KEYDELETE){hideDropdownBox();}
if((key!=KEYUP)&&(key!=KEYDOWN)&&(key!=KEYENTER)&&(key!=KEYTAB)){return true;}

var selNum=getSelectedSpanNum(parentEl);
var selSpan=setSelectedSpan(parentEl,selNum);

	if(key==KEYENTER)
	{
		if(selSpan)
		{
			_selectResult(selSpan);
			evt.cancelBubble=true;
			return false;
		}
		else
		{
			hideDropdownBox();
		}
	}
	else if(key==KEYTAB)
	{
		hideDropdownBox();
	}
	else
	{
		if(key==KEYUP)selSpan=setSelectedSpan(parentEl,selNum-1);
		if(key==KEYDOWN)selSpan=setSelectedSpan(parentEl,selNum+1);
		if(selSpan)_highlightResult(selSpan);
	}
}

function closeSmartbox(evt){hideDropdownBox();}

function processJSON(feed){if(enabledSetting==2){if(feed==null){hideDropdownBox();}
else{showDropdownBox();try{resultsObj=eval(feed);htmlFormat(resultsObj);}
catch(e){var msg=(typeof e=="string")?e:((e.message)?e.message:"Unknown Error");hideDropdownBox();}}}}

function htmlFormat(resultsObj)
{
	var rowSmartbox;
	var output=document.getElementById(dropdownBox);
	var keyword;
	while(output.childNodes.length>0){output.removeChild(output.childNodes[0]);}
	var frmSmartbox=document.createElement("iframe");
	frmSmartbox.setAttribute("id","SMARTBOX_IFRAME");
	frmSmartbox.setAttribute("frameBorder","0");
	frmSmartbox.setAttribute("scrolling","no");
	output.appendChild(frmSmartbox);
	var tblSmartbox=document.createElement("table");
	tblSmartbox.setAttribute("id","TBL_SMARTBOX");
	var headSmartbox=document.createElement("thead");
	var topRow=document.createElement("tr");
	var header=document.createElement("td");
	header.setAttribute("colSpan","3");
	header.style.paddingLeft=sbMinWidth+"px";
	topRow.appendChild(header);
	headSmartbox.appendChild(topRow);
	var bodySmartbox=document.createElement("tbody");
	for(var i=0;i<resultsObj.ss.length;i++){if(resultsObj.ss[i].n&&i<10){rowSmartbox=document.createElement("tr");
	rowSmartbox.onmouseover=highlightResult;rowSmartbox.onmouseout=unhighlightResult;
	rowSmartbox.onclick=selectResult;var x2=document.createElement("td");
	x2.className="sym";
	keyword=query().toUpperCase();
	var symbolText=replaceAll(resultsObj.ss[i].s,keyword,"<b>"+keyword+"</b>")
	var countryCode=resultsObj.ss[i].cc;
	if(countryCode!="USA"&&countryCode!="undefined"){if(countryCode=="GBR"){countryCode=":UK";}
	else if(countryCode=="CAN"){countryCode=":CA";}
	else{countryCode="";}
	symbolText=symbolText+countryCode;}
	if(keyword.indexOf(":")!=-1){if(countryCode=="USA"&&countryCode!="undefined"){rowSmartbox.setAttribute("class","hideResult");}}
	x2.innerHTML=symbolText;var x3=document.createElement("td");x3.className="comp";var company=resultsObj.ss[i].n;if(company.length>100){company=company.substring(0,99)+"...";}
	x3.innerHTML=replaceAll(company,keyword,"<b>"+keyword+"</b>");var x4=document.createElement("td");x4.className="exch";var exch=resultsObj.ss[i].xN;var securityNo=resultsObj.ss[i].t;if((securityNo)&&(securityNo!="undefined")&&securityNo!=1&&securityNo!=2&&securityNo!=3){if((secType[securityNo])&&(secType[securityNo]!="undefined")){exch=secType[securityNo]+" - "+exch;}}
	x4.appendChild(document.createTextNode(exch));rowSmartbox.appendChild(x2);rowSmartbox.appendChild(x3);rowSmartbox.appendChild(x4);bodySmartbox.appendChild(rowSmartbox);}}

	var linkViewAll=document.createElement("a");linkViewAll.id="viewAll";linkViewAll.setAttribute("href","http://finance.aol.com/lookup/"+keyword+"/usa?type=USA");
	var txtView=document.createTextNode("View all results for '"+keyword+"'");linkViewAll.appendChild(txtView);
	var footSmartbox=document.createElement("tfoot");
	var bottomRow=document.createElement("tr");
	var footer=document.createElement("td");footer.setAttribute("colSpan","3");footer.appendChild(linkViewAll);bottomRow.appendChild(footer);footSmartbox.appendChild(bottomRow);

	tblSmartbox.appendChild(headSmartbox);
	tblSmartbox.appendChild(bodySmartbox);
	tblSmartbox.appendChild(footSmartbox);
	output.appendChild(tblSmartbox);

	if(dropdownBox=="search_suggest_quote")
	{
		var dropdownPosLeft=parseInt(defaultDropdownPosLeft)+parseInt(document.getElementById("header").offsetLeft);
		var dropdownPosTop=parseInt(defaultDropdownPosTop)+parseInt(document.getElementById("header").offsetTop);
		output.style.left=dropdownPosLeft+"px";
		output.style.top=dropdownPosTop+"px";
	}

	frmSmartbox.setAttribute("width",tblSmartbox.offsetWidth);
	frmSmartbox.setAttribute("height",tblSmartbox.offsetHeight);
	rows=bodySmartbox.getElementsByTagName('TR');
}

function replaceAll(searchText,keyword,replacements)
{
	searchText=searchText.toUpperCase()
	return searchText.replace(keyword.toUpperCase(),replacements.toUpperCase());
}

function query(){return searchBox.value;}

function selectResult(){_selectResult(this);}

 
function _selectResult(item)
{
	var quoteUrl;
	item.className=highlightClass;
	var selNum=getSelectedSpanNum(document.getElementById("TBL_SMARTBOX"));
	var symbol=resultsObj.ss[selNum].s;
	var exch=(resultsObj.ss[selNum].x).toLowerCase();

	quoteUrl = "http://finance.aol.com/quotes" + "/" + symbol + "/" + exch;
	window.location=quoteUrl;
	hideDropdownBox();
}

function highlightResult(){_highlightResult(this);}

function _highlightResult(item){var symbol=item.firstChild.innerHTML;item.className=highlightClass;}

function unhighlightResult(){_unhighlightResult(this);}

function _unhighlightResult(item){var origCl=item.getAttribute('origCl');item.className=origCl;}

function getSelectedSpanNum(div)
{
	var count=-1;
	var tbodyResults=div.getElementsByTagName("tbody");
	var spans=tbodyResults[0].getElementsByTagName("tr");
	if(spans)
	{
		for(var i=0;i<spans.length;i++)
		{
			count++;
			if(spans[i].className==highlightClass){return count;}
		}
	}
	return-1;
}

function setSelectedSpan(div,spanNum)
{
	var count=-1;
	var thisSpan;
	var tbodyResults=div.getElementsByTagName("tbody");
	var spans=tbodyResults[0].getElementsByTagName("tr");
	if(spans)
	{
		for(var i=0;i<spans.length;i++)
		{
			if(++count==spanNum){_highlightResult(spans[i]);thisSpan=spans[i];}
			else{_unhighlightResult(spans[i]);}
		}
	}
	return thisSpan;
}

function showDropdownBox()
{
	cancelCloseTime();
	if(document.layers){document.layers[dropdownBox].display="block";}
	else{document.getElementById(dropdownBox).style.display="block";}
	var ticker=document.getElementById("flashcontent2");
	if(ticker){ticker.style.zIndex=3;}
}

function hideDropdownBox(){if(document.getElementById(dropdownBox)){if(document.layers)document.layers[dropdownBox].display="none";else document.getElementById(dropdownBox).style.display="none";}
var ticker=document.getElementById("flashcontent2");if(ticker){ticker.style.zIndex=2;}}

function closeTime(){closeTimeoutID=window.setTimeout(hideDropdownBox,closeDropdownTimeout);}

function cancelCloseTime(){if(closeTimeoutID){window.clearTimeout(closeTimeoutID);closeTimeoutID=null;}}

function get_firstchild(n)
{
	x=n.firstChild.nextSibling;
	while(x.nodeType!=1){x=x.nextSibling;}
	return x;
}

