
var SCOPE_SIZE=40;var ExchangeArray=new Array(SCOPE_SIZE);var ExchDisplayArray=new Array(SCOPE_SIZE);var DoubleEvtForArrow=false;var UseAppleWebKit=false;var FireFoxOnMac=false;var CACHE_SIZE=10;var MAX_SHOWN=12;var ShownEntries=new Array(MAX_SHOWN);var JRequests=new Array();function initCache(m_cache,m_NextCachePos)
{for(var i=0;i<m_cache.length;i++)
{m_cache[i]=null;m_NextCachePos[i]=0;}}
function CheckOSBrowser()
{var agent=navigator.userAgent;if(agent!=null)
{var start=agent.indexOf("AppleWebKit/");if(start>0)
{UseAppleWebKit=true;var awk_ver=agent.substr(start+12,3);if(awk_ver<500)
{DoubleEvtForArrow=true;}}else{start=agent.indexOf("Mac OS");if(start>0){start=agent.indexOf("Firefox");if(start>0){FireFoxOnMac=true;}}}}}
function leftTrim(str)
{a=str.replace(/^\s+/,'');return a;}
function initExchArray()
{ExchangeArray[0]='';ExchDisplayArray['NYSE']='NYSE';ExchangeArray[1]='';ExchDisplayArray['NAS']='Nasdaq';ExchangeArray[2]='';ExchDisplayArray['ASE']='Amex';ExchangeArray[3]='';ExchDisplayArray['OTUS']='OTCBB';ExchangeArray[4]='';ExchDisplayArray['OTC']='OTC';ExchangeArray[5]='XLON';ExchDisplayArray['XLON']='London';ExchangeArray[6]='TSE';ExchDisplayArray['TSE']='Toronto';ExchangeArray[7]='TSX';ExchDisplayArray['TSX']='TSX Venture';ExchangeArray[8]='XETR';ExchDisplayArray['XETR']='Xetra';ExchangeArray[9]='XPAR';ExchDisplayArray['XPAR']='Euronext Paris';ExchangeArray[10]='XLIS';ExchDisplayArray['XLIS']='Euronext Lisbon';ExchangeArray[11]='XBRU';ExchDisplayArray['XBRU']='Euronext Brussels';ExchangeArray[12]='XMLI';ExchDisplayArray['XMLI']='XMLI Paris';ExchangeArray[13]='XAMS';ExchDisplayArray['XAMS']='Euronext Amesterdam';ExchangeArray[14]='XSWX';ExchDisplayArray['XSWX']='SWX';ExchangeArray[15]='XHKG';ExchDisplayArray['XHKG']='Hong Kong';ExchangeArray[16]='XASE';ExchDisplayArray['XASE']='AMEX';ExchangeArray[17]='ALXA';ExchDisplayArray['ALXA']='ALXA Amsterdam';ExchangeArray[18]='TNLB';ExchDisplayArray['TNLB']='TNLB Brussels';ExchangeArray[19]='ALXB';ExchDisplayArray['ALXB']='ALXB Brussels';ExchangeArray[20]='WQXL';ExchDisplayArray['WQXL']='WQXL Lisbon';ExchangeArray[21]='MLXB';ExchDisplayArray['MLXB']='MLXB Brussels';ExchangeArray[22]='IXUS';ExchDisplayArray['IXUS']='US Indices';ExchangeArray[23]='TNLA';ExchDisplayArray['TNLA']='TNLA Amsterdam';ExchangeArray[24]='XMOD';ExchDisplayArray['XMOD']='Montreal';ExchangeArray[25]='ALXP';ExchDisplayArray['ALXP']='ALXP Paris';ExchangeArray[26]='';ExchangeArray[27]='';ExchangeArray[28]='XFRA';ExchDisplayArray['XFRA']='Frankfurt';ExchangeArray[29]='';ExchangeArray[30]='XMIL';ExchDisplayArray['XMIL']='Milan';ExchDisplayArray['XSHG']='Shanghai';ExchDisplayArray['XSHE']='Shenzhen';}
function JSONscriptRequest(fullUrl,jsid)
{this.fullUrl=fullUrl;this.noCacheIE='&noCacheIE='+(new Date()).getTime();this.headLoc=document.getElementsByTagName("head").item(0);this.scriptId=jsid;}
JSONscriptRequest.scriptCounter=1;JSONscriptRequest.prototype.buildScriptTag=function()
{this.scriptObj=document.createElement("script");this.scriptObj.setAttribute("type","text/javascript");this.scriptObj.setAttribute("charset","utf-8");this.scriptObj.setAttribute("src",this.fullUrl+this.noCacheIE);this.scriptObj.setAttribute("id",this.scriptId);}
JSONscriptRequest.prototype.removeScriptTag=function()
{this.headLoc.removeChild(this.scriptObj);}
JSONscriptRequest.prototype.addScriptTag=function()
{this.headLoc.appendChild(this.scriptObj);}
function Record(rkey,rpos,leaf,data)
{this.key=rkey;this.startPos=rpos;this.isLeaf=leaf;this.data=data;}
function DataEntry(Dticker,Dname,Dregion,Dsrc,Dtype,Dlink,Dexchange)
{this.ticker=Dticker;this.name=Dname;this.exchange=Dexchange;this.src=Dsrc;this.type=Dtype;this.link=Dlink;this.region=Dregion;}
function AutoCompleteBox(m_ACINPUT_ID,m_ACDROPDOWN_ID,m_DefaultScope,m_QUOTE_SERVER,m_SearchURL,m_FomId,m_AllCache,m_NextCachePos,m_SubmitCallback,m_AutoPosition,m_DefaultRegion)
{var ACQ_ROW_DELIMITER="}]";var ACQ_COL_DELIMITER="[|";var HEADER_ROWS=3;var Current_Value="";var HIDE_DELAY_MS=200;var AllCache=m_AllCache;var NextCachePos=m_NextCachePos;var KeyScopeStr='';var REFOCUS_DELAY_MS=50;var ENTRY_SELECT_COLOR='#B1D9F0';var ENTRY_COLOR='white';var KEY_DELIMITER=',';var EXCH_DELIMITER=':';var IgnoreFuncKey=false;var IgnoreAppleArrowKey=false;var NumShownEntries=0;var SelectedIndex=-1;var DataPrefix="ACDEntry_";var DPLen=DataPrefix.length;var DefaultScope=4;if(m_DefaultScope>=0&&m_DefaultScope<SCOPE_SIZE)
{DefaultScope=m_DefaultScope;}
var CurScope=DefaultScope;var KeyScope=DefaultScope;var FormId=m_FomId;var boxId=m_ACINPUT_ID;var self=this;var IsSubmit=true;var QUOTE_SERVER='http://quote.morningstar.com/switch.html?ticker=';var SearchURL='http://search.morningstar.com/MstarSrch/MstarSrch2.aspx?pgid=hetopsearch';if(m_QUOTE_SERVER!=null&&m_QUOTE_SERVER.length!=0)
{QUOTE_SERVER=m_QUOTE_SERVER;}
if(m_SearchURL!=null&&m_SearchURL.length!=0)
{SearchURL=m_SearchURL;}
this.ACINPUT_ID=m_ACINPUT_ID;this.ACDROPDOWN_ID=m_ACDROPDOWN_ID;this.AutoPosition=m_AutoPosition;this.SubmitCallback=m_SubmitCallback;this.IdleDisplayMsg=null;this.IdleMsgColor='#CCCCCC';this.FocusMsgColor='#333333';this.DefaultRegion='USA';if(m_DefaultRegion!='')
{this.DefaultRegion=m_DefaultRegion;}
this.ACQ_SERVER='//quote.morningstar.com';this.ACQHandlerURL=this.ACQ_SERVER+"/acindex/acq.ashx?callback=AutoCompleteBox.FCallBack"+m_ACINPUT_ID+"&out=j";(function(){var funcString="AutoCompleteBox.FCallBack"+boxId+" = function(p){self.j_callback(p);}";eval(funcString);})();function initInputBox(boxId)
{try
{var input_box=document.getElementById(boxId);AutoCompleteBox.addListener(input_box,"keydown",checkFuncKey);AutoCompleteBox.addListener(input_box,"keyup",self.j_sendQuery);AutoCompleteBox.addListener(input_box,"blur",loseFocus);AutoCompleteBox.addListener(input_box,"focus",getFocus);if(FormId!=null){AutoCompleteBox.addListener(document.getElementById(FormId),"submit",self.trySubmit);}}
catch(ae)
{}}
function getFocus()
{var input_box=document.getElementById(self.ACINPUT_ID);if(self.IdleDisplayMsg!=null)
{if(input_box!=null)
{if(input_box.value==self.IdleDisplayMsg)
{input_box.value='';}}}
if(input_box!=null){input_box.style.color=self.FocusMsgColor;}};function getCurrentKey()
{var key;var wholekey;var start=0;try
{var input_box=document.getElementById(self.ACINPUT_ID);wholekey=input_box.value;start=wholekey.lastIndexOf(KEY_DELIMITER);if(start>=wholekey.length)
{key='';}else{start++;key=wholekey.substr(start);key=leftTrim(key);}
if(DefaultScope==4){start=key.indexOf(EXCH_DELIMITER);if(start>0)
{if(start>=key.length){key='';}else{var exch=key.substr(0,start);key=key.substr(start+1);KeyScope=GetScope(exch);}}else{KeyScope=DefaultScope;KeyScopeStr='';}}}
catch(ae)
{key='';}
return key;}
function GetScope(exch)
{if(exch.length==0)
return DefaultScope;exch=exch.toUpperCase();if(exch==KeyScopeStr){return KeyScope;}
var size=SCOPE_SIZE;for(var i=0;i<size;i++)
{if(ExchangeArray[i]==exch)
{KeyScopeStr=ExchangeArray[i];return i;}}
return-1;}
this.j_sendQuery=function()
{var key='';var input_box;var ret=false;if(IgnoreFuncKey){IgnoreFuncKey=false;return ret;}
if(IgnoreAppleArrowKey){IgnoreAppleArrowKey=false;return ret;}
key=getCurrentKey();if(KeyScope<0){return ret;}
key=key.toLowerCase();if(key==Current_Value&&KeyScope==CurScope)
{return ret;}
CurScope=KeyScope;if(key.length==0){Current_Value="";self.displayRecord(null);SelectedIndex=-1;return ret;}
Current_Value=key;var cache_hit=1;if(AllCache[CurScope]!=null){var Cache=AllCache[CurScope];for(var i=0;i<CACHE_SIZE;i++){cache_hit=AutoCompleteBox.isRecordHit(key,Cache[i]);if(cache_hit==0){self.displayRecord(Cache[i]);return ret;}}}
var jsid='JD'+JSONscriptRequest.scriptCounter;JSONscriptRequest.scriptCounter++;var cope=CurScope;var url=self.ACQHandlerURL+"&sc="+cope+"&key="+encodeURIComponent(key)+"&js="+jsid;var Req=new JSONscriptRequest(url,jsid);Req.buildScriptTag();JRequests[JRequests.length]=Req;Req.addScriptTag();return ret;};function loseFocus(ev)
{window.setTimeout(delayedHideDropDown,HIDE_DELAY_MS);var input_box=document.getElementById(self.ACINPUT_ID);if(input_box!=null){input_box.style.color=self.IdleMsgColor;if(self.IdleDisplayMsg!=null){var tmp_str=input_box.value;if(tmp_str!=null){tmp_str=leftTrim(tmp_str);}
if(tmp_str.length==0)
{input_box.value=self.IdleDisplayMsg;}}}}
function checkFuncKey(kp)
{var ret=true;var keyID=(window.event)?kp.keyCode:kp.which?kp.which:kp.charCode;IgnoreFuncKey=false;IgnoreAppleArrowKey=false;switch(keyID)
{case 13:if(FormId==null&&self.SubmitCallback!=null){self.trySubmit();return false;}
return ret;case 38:self.moveArrow(-1);ret=false;IgnoreFuncKey=true;if(DoubleEvtForArrow)
{IgnoreAppleArrowKey=true;}
return ret;case 40:self.moveArrow(1);ret=false;IgnoreFuncKey=true;if(DoubleEvtForArrow)
{IgnoreAppleArrowKey=true;}
return ret;case 188:IgnoreFuncKey=true;ret=true;return ret;}
return ret;}
this.moveArrow=function(delta)
{var idx=SelectedIndex;if(delta>0)
{idx++;}
else if(delta<0)
{idx--;}
if(idx<0)
{if(SelectedIndex==-1){idx=NumShownEntries-1;}else{idx=-1;}}
else if(idx>=NumShownEntries)
{if(SelectedIndex==NumShownEntries-1){idx=-1;}else{idx=0;}}
ACDSelectEntry(DataPrefix+idx)();replaceCurrentKey(idx);if(UseAppleWebKit){setCaretToEnd(ACINPUT_ID);}};function replaceCurrentKey(idx)
{var wholekey;var start=0;var prefix='';try
{var input_box=document.getElementById(self.ACINPUT_ID);wholekey=input_box.value;wholekey=removeLastDelimiter(wholekey);start=wholekey.lastIndexOf(KEY_DELIMITER);if(start>0)
{prefix=wholekey.substr(0,start)+KEY_DELIMITER;}
if(idx==-1)
{wholekey=prefix+Current_Value;input_box.value=wholekey;}
else if(idx>=0&&idx<NumShownEntries)
{var entry=ShownEntries[idx];if(entry.ticker!=null&&entry.ticker.length>0)
{if(entry.region==self.DefaultRegion)
{wholekey=prefix+entry.ticker+KEY_DELIMITER;}
else
{wholekey=prefix+entry.exchange+EXCH_DELIMITER+entry.ticker+KEY_DELIMITER;}
input_box.value=wholekey;}
else if(entry.name!=null&&entry.name.length>0)
{wholekey=prefix+entry.name+KEY_DELIMITER;input_box.value=wholekey;}}}
catch(ae)
{}}
function removeLastDelimiter(wholekey)
{if(wholekey==null)
{return null;}
if(wholekey.length>0)
{var pos=wholekey.length-1;if(wholekey.charAt(pos)==KEY_DELIMITER)
{wholekey=wholekey.substr(0,pos);}}
return wholekey;}
function setCaretToEnd(objid)
{var obj=document.getElementById(objid);if(obj==null)
{return;}
var pos=obj.value.length;if(obj.createTextRange)
{var range=obj.createTextRange();range.move("character",pos);range.select();}
else if(obj.selectionStart)
{obj.focus();obj.setSelectionRange(pos,pos);}}
function delayedHideDropDown()
{if(Current_Value.length!=0)
{Current_Value="";self.displayRecord(null);}}
function resetShownEntries()
{for(var i=0;i<MAX_SHOWN;i++)
{ShownEntries[i]=null;}
NumShownEntries=0;}
self.displayRecord=function(record)
{var dropdown=null;try
{dropdown=document.getElementById(self.ACDROPDOWN_ID);if(dropdown!=null)
{if(record==null)
{dropdown.innerHTML="";SelectedIndex=-1;if(NumShownEntries>0){resetShownEntries();}}
else
{resetShownEntries();SelectedIndex=-1;dropdown.innerHTML=generateContentFromRecord(Current_Value,record);}
if(dropdown.innerHTML.length==0)
{dropdown.visibility='hidden';if(typeof showalldrops=='function')
{showalldrops();}}
else
{if(typeof hidealldrops=='function')
{hidealldrops();}
if(self.AutoPosition==true){var txt_box=document.getElementById(self.ACINPUT_ID);if(txt_box!=null)
{var coords=AutoCompleteBox.findPosition(txt_box);dropdown.style.left=coords[0]-10+'px';dropdown.style.top=coords[1]+6+txt_box.offsetHeight+'px';}}
dropdown.visibility='visible';SelectedIndex=-1;for(var i=0;i<NumShownEntries;i++)
{var trId=DataPrefix+i;AutoCompleteBox.addListener(document.getElementById(trId),"mouseover",ACDSelectEntry(trId));AutoCompleteBox.addListener(document.getElementById(trId),"click",clickEntry(trId));}}}}
catch(e)
{alert(e);}};function generateContentFromRecord(key,record)
{var content="";if(record.data==null)
{return content;}
var size=record.data.length;if(size==0)
{return content;}
var tmpstr="";var partial="";for(var i=0;i<size;i++)
{partial=generateContentForRow(key,record.data[i]);if(partial.length>0)
{tmpstr+=partial;AddNewShownEntry(record.data[i]);if(NumShownEntries>=MAX_SHOWN)
{break;}}}
if(tmpstr.length>0){content+="<table border=1px><tr><td style='border-style:none; padding: 9px 5px 7px 5px;'><table class='ACDropDownStyle'>"+tmpstr+"</table></td></tr></table>"}
return content;}
function generateContentForRow(key,row)
{var ret="";var cells=row.split(ACQ_COL_DELIMITER);var found_match=false;var tmp;var pos;var MAX_MATCH_IDX=2;var NAME_IDX=1;var EXCH_POS=6;var REGION_POS=2;var replaced=false;if(cells.length>MAX_MATCH_IDX)
{var myid=DataPrefix+NumShownEntries;ret="<tr id='"+myid+"' >"
var exch_prefix=cells[EXCH_POS]+EXCH_DELIMITER;if(cells[REGION_POS]==self.DefaultRegion){exch_prefix='';}
for(var j=0;j<MAX_MATCH_IDX;j++)
{if(j!=0)
{exch_prefix='';}
if(!found_match)
{tmp=cells[j].toLowerCase();pos=tmp.indexOf(key,0)
if(pos>=0)
{found_match=true;ret+=AutoCompleteBox.generateMatchTd(cells[j],key,pos,exch_prefix);replaced=true;}
else if((j==NAME_IDX)&&(tmp.indexOf(".")>=0))
{tmp=tmp.replace(/\./g,'');pos=tmp.indexOf(key,0)}
if(!replaced)
{if(pos>=0)
{found_match=true;ret+=AutoCompleteBox.generateMatchTd(cells[j].replace(/\./g,''),key,pos,exch_prefix);}
else
{ret+="<td class='ACDropDownStyle'>"+exch_prefix+cells[j]+"</td>";}}}
else
{ret+="<td class='ACDropDownStyle'>"+exch_prefix+cells[j]+"</td>";}}
var exch_display='';if(cells[EXCH_POS]!=null)
{if(ExchDisplayArray[cells[EXCH_POS]]!=null)
{exch_display=ExchDisplayArray[cells[EXCH_POS]];}}
ret+="<td class='ACDropDownStyle' width=130 align=right style='color:gray;' >"+exch_display+"</td>";ret+="</tr>";}
if(!found_match)
{return"";}
return ret;}
function AddNewShownEntry(data)
{var entry=data.split(ACQ_COL_DELIMITER);ShownEntries[NumShownEntries]=new DataEntry(entry[0],entry[1],entry[2],entry[3],entry[4],entry[5],entry[6]);NumShownEntries++;}
function clickEntry(myID)
{return function()
{var sid=myID.substr(DPLen);SelectedIndex=sid;self.trySubmit();}}
function ACDSelectEntry(myID)
{return function()
{var entry;var sid=myID.substr(DPLen);if(sid!=SelectedIndex&&SelectedIndex>=0&&SelectedIndex<NumShownEntries)
{var cur_entry=document.getElementById(DataPrefix+SelectedIndex);if(cur_entry!=null)
{cur_entry.style.backgroundColor=ENTRY_COLOR;}}
if(sid>=0)
{entry=document.getElementById(myID);if(entry!=null)
{entry.style.backgroundColor=ENTRY_SELECT_COLOR;}}
SelectedIndex=sid;}}
this.trySubmit=function()
{if(SelectedIndex>=0)
{replaceCurrentKey(SelectedIndex);}
var quoteInput=document.getElementById(self.ACINPUT_ID);if(quoteInput!=null)
{var line=quoteInput.value;line=removeLastDelimiter(line);if(line!=null)
{var str=leftTrim(line);if(str.length>0)
{var didx=str.indexOf(KEY_DELIMITER);if(didx>=0)
{commonSearch(QUOTE_SERVER,line);}
else
{if(SelectedIndex>=0&&SelectedIndex<NumShownEntries)
{var entry=ShownEntries[SelectedIndex];if(entry.ticker==null||entry.ticker.length==0)
{commonSearch(SearchURL,line);}
else
{commonSearch(QUOTE_SERVER,line);;}}
else
{commonSearch(QUOTE_SERVER,line);}}}}}
return false;};function commonSearch(actionURL,content)
{if(self.SubmitCallback!=null){var tmpstr=self.SubmitCallback+"('"+content+"')";delayedHideDropDown();eval(tmpstr);}
else{var st=document.getElementById("SrchTerm");if(st!=null)
{st.value=content;}
var f=document.getElementById(FormId);f.action=actionURL+escape(content)+'&pgid=hetopquote';if(IsSubmit)
{f.submit();}}}
this.processResult=function(sc,result)
{var record;var rows=result.split(ACQ_ROW_DELIMITER);record=new Record("",0,'true',null);if(rows.length>=HEADER_ROWS)
{record.key=rows[0];record.startPos=rows[1];record.isLeaf=rows[2];record.data=null;var size=rows.length-HEADER_ROWS;if(size>0)
{record.data=new Array(size);for(var i=HEADER_ROWS;i<rows.length;i++)
{record.data[i-HEADER_ROWS]=rows[i];}}
if(record.data!=null)
{if(AllCache[sc]==null)
{AllCache[sc]=AutoCompleteBox.createCacheForScope();}
var Cache=AllCache[sc];Cache[NextCachePos[sc]]=record;NextCachePos[sc]++;if(NextCachePos[sc]==CACHE_SIZE)
{NextCachePos[sc]=0;}}
if(sc==CurScope)
{var hit=AutoCompleteBox.isRecordHit(Current_Value,record);if(hit==0)
{self.displayRecord(record);}}}}
this.set_ENTRY_SELECT_COLOR=function(color)
{ENTRY_SELECT_COLOR=color;}
this.set_ENTRY_COLOR=function(color)
{ENTRY_COLOR=color;}
this.set_IsSubmit=function(isSub)
{IsSubmit=isSub;}
{initExchArray();resetShownEntries();initInputBox(self.ACINPUT_ID);}}
AutoCompleteBox.addListener=function(pElement,type,fn)
{if(pElement.attachEvent)
{pElement.attachEvent("on"+type,fn);}
else if(pElement.addEventListener)
{pElement.addEventListener(type,fn,false);}}
AutoCompleteBox.prototype.j_callback=function(resultset)
{var jdata=resultset.ResultSet;if(jdata.result.length>0)
{this.processResult(jdata.sc,jdata.result);}
var Req=null;for(var i=0;i<JRequests.length;i++)
{if(JRequests[i]!=null)
{if(JRequests[i].scriptId==jdata.jsid)
{Req=JRequests[i];break;}}}
if(Req!=null)
{JRequests.splice(i,1);Req.removeScriptTag();}}
AutoCompleteBox.isRecordHit=function(key,record)
{var pos;if(record==null)
{return 1;}
if(key.length>=record.key.length)
{if(key==record.key)
{return 0;}
pos=key.indexOf(record.key);if(pos==0)
{if(record.isLeaf==1)
{return 0;}
return 1;}
return 1;}
else
{if(key.length<record.startPos)
{return 1;}
pos=record.key.indexOf(key);if(pos==0)
{return 0;}
return 1;}}
AutoCompleteBox.findPosition=function(pElement)
{var curleft=curtop=0;if(pElement.offsetParent)
{curleft=pElement.offsetLeft
curtop=pElement.offsetTop
while(pElement=pElement.offsetParent)
{curleft+=pElement.offsetLeft
curtop+=pElement.offsetTop}}
return[curleft,curtop];}
AutoCompleteBox.createCacheForScope=function()
{var Cache=new Array(CACHE_SIZE);for(var c=0;c<CACHE_SIZE;c++)
{Cache[c]=null;}
return Cache;}
AutoCompleteBox.generateMatchTd=function(str,key,pos,exch)
{var prefix=exch;var suffix="";if(pos>0)
{prefix+=str.substring(0,pos);}
if(pos+key.length<str.length)
{suffix=str.substring(pos+key.length);}
var ret="<td class='ACDropDownStyle'>"+prefix
+"<b>"+str.substring(pos,pos+key.length)
+"</b>"+suffix+"</td>";return ret;}