
var PRAjax_Component_Suggest=new(function(){this.SuggestComponents=new Array();this.SuggestStack=new Array();this.AttachSuggestComponent=function(pElementId,pPRAjaxFunction){PRAjax_Component_Suggest.SuggestComponents[pElementId]={'element':document.getElementById(pElementId),'function':pPRAjaxFunction,'isVisible':false,'selectedIndex':-1,'lastActivity':(new Date()).getTime()};PRAjax_Component_Suggest.SuggestComponents[pElementId]['element'].setAttribute('autocomplete','off');PRAjaxUtil.addEvent(PRAjax_Component_Suggest.SuggestComponents[pElementId]['element'],'keyup',function(e){PRAjax_Component_Suggest.KeyUp(e,pElementId);},false);PRAjaxUtil.addEvent(PRAjax_Component_Suggest.SuggestComponents[pElementId]['element'],'keydown',function(e){PRAjax_Component_Suggest.KeyDown(e,pElementId);},false);}
this.KeyUp=function(e,pElementId){if(e==null){e=window.event;}
var keyCode=e.keyCode;switch(keyCode){case 13:case 27:case 9:case 38:case 40:return false;break;default:PRAjax_Component_Suggest.GetSuggestData(pElementId);break;}}
this.KeyDown=function(e,pElementId){if(e==null){e=window.event;}
var keyCode=e.keyCode;switch(keyCode){case 13:var currentRank=PRAjax_Component_Suggest.SuggestComponents[pElementId]['selectedIndex'];var element=PRAjax_Component_Suggest.GetListElement(currentRank);PRAjax_Component_Suggest.SetValue(pElementId,escape(element.getAttribute('value')));e.preventDefault?e.preventDefault():e.returnvalue=false;return false;break;case 27:case 9:PRAjax_Component_Suggest.HideAll();break;case 38:var currentRank=PRAjax_Component_Suggest.SuggestComponents[pElementId]['selectedIndex'];PRAjax_Component_Suggest.HighlightItem(currentRank,false);PRAjax_Component_Suggest.HighlightItem(currentRank-1,true);var element=PRAjax_Component_Suggest.GetListElement(currentRank-1);if(element!=null){if(element.offsetTop<element.offsetParent.scrollTop){element.scrollIntoView(true);}}
e.preventDefault?e.preventDefault():e.returnvalue=false;return false;break;case 40:var currentRank=PRAjax_Component_Suggest.SuggestComponents[pElementId]['selectedIndex'];PRAjax_Component_Suggest.HighlightItem(currentRank,false);PRAjax_Component_Suggest.HighlightItem(currentRank+1,true);var element=PRAjax_Component_Suggest.GetListElement(currentRank+1);if(element!=null){if(element.offsetTop>(element.offsetParent.scrollTop+element.offsetParent.offsetHeight)){element.scrollIntoView(true);}}
e.preventDefault?e.preventDefault():e.returnvalue=false;return false;break;default:break;}}
this.GetSuggestData=function(pElementId){if(PRAjax_Component_Suggest.SuggestComponents[pElementId]['element'].value!=''){if(PRAjax_Component_Suggest.SuggestComponents[pElementId]['lastActivity']<(new Date()).getTime()-2){PRAjax_Component_Suggest.SuggestStack.push(pElementId);PRAjax_Component_Suggest.SuggestComponents[pElementId]['lastActivity']=(new Date()).getTime();eval(PRAjax_Component_Suggest.SuggestComponents[pElementId]['function']+"('"+PRAjaxUtil.addSlashes(PRAjax_Component_Suggest.SuggestComponents[pElementId]['element'].value)+"', PRAjax_Component_Suggest.SuggestCallback);");}}}
this.SuggestCallback=function(pArray){var elementId=PRAjax_Component_Suggest.SuggestStack.pop();PRAjax_Component_Suggest.SuggestComponents[elementId]['selectedIndex']=-1;PRAjax_Component_Suggest.Render(elementId,pArray);PRAjax_Component_Suggest.Show(elementId);}
this.DocumentClicked=function(){PRAjax_Component_Suggest.HideAll();}
this.HideAll=function(){PRAjax_Component_Suggest.IFrame.style.visibility='hidden';PRAjax_Component_Suggest.IFrame.style.display='none';PRAjax_Component_Suggest.Dropdown.style.visibility='hidden';PRAjax_Component_Suggest.Dropdown.style.display='none';for(elementId in PRAjax_Component_Suggest.SuggestComponents){PRAjax_Component_Suggest.Hide(elementId);}}
this.Hide=function(pElementId){PRAjax_Component_Suggest.SuggestComponents[pElementId]['isVisible']=false;}
this.Render=function(pElementId,pDataArray){this.Dropdown.innerHTML='';this.Dropdown.scrollTop=0;var strData='';for(var i=0;i<pDataArray.length;i++){var strElement=pDataArray[i];strData+='<div';strData+=' class="Item"';strData+=' id="prajax_suggest_item_'+i+'"';strData+=' rank="'+i+'"';strData+=' parent="'+pElementId+'"';strData+=' value="'+strElement+'"';strData+=' onClick="PRAjax_Component_Suggest.SetValue(this.getAttribute(\'parent\'), escape(this.getAttribute(\'value\')));"';strData+=' onMouseOver="PRAjax_Component_Suggest.HighlightItem('+i+', true);"';strData+=' onMouseOut="PRAjax_Component_Suggest.HighlightItem('+i+', false);"';strData+='>';strData+=strElement;strData+='</div>';}
this.Dropdown.innerHTML=strData;}
this.HighlightItem=function(pElementRank,pHighlight){var element=PRAjax_Component_Suggest.GetListElement(pElementRank);if(element!=null){PRAjax_Component_Suggest.SuggestComponents[element.getAttribute('parent')]['selectedIndex']=pElementRank;if(pHighlight){element.className="Item_Highlighted";}else{element.className="Item";}}}
this.GetListElement=function(pRank){var element=null;if(document.getElementById('prajax_suggest_item_'+pRank)!=null){return document.getElementById('prajax_suggest_item_'+pRank);}
return null;}
this.SetValue=function(pElementId,pValue){document.getElementById(pElementId).value=unescape(pValue);PRAjax_Component_Suggest.HideAll();}
this.Show=function(pElementId){var x=PRAjax.GetLeft(pElementId);var y=PRAjax.GetTop(pElementId)+document.getElementById(pElementId).offsetHeight;PRAjax_Component_Suggest.IFrame.style.left=x+'px';PRAjax_Component_Suggest.IFrame.style.top=y+'px';PRAjax_Component_Suggest.IFrame.style.width=document.getElementById(pElementId).offsetWidth+'px';PRAjax_Component_Suggest.Dropdown.style.left=x+'px';PRAjax_Component_Suggest.Dropdown.style.top=y+'px';PRAjax_Component_Suggest.Dropdown.style.width=document.getElementById(pElementId).offsetWidth+'px';PRAjax_Component_Suggest.IFrame.style.visibility='visible';PRAjax_Component_Suggest.IFrame.style.display='block';PRAjax_Component_Suggest.Dropdown.style.visibility='visible';PRAjax_Component_Suggest.Dropdown.style.display='block';PRAjax_Component_Suggest.SuggestComponents[pElementId]['isVisible']=true;}
this.Startup=function(){PRAjax_Component_Suggest.IFrame=document.createElement('iframe');PRAjax_Component_Suggest.IFrame.id='PRAjax_component_suggest_iframe';PRAjax_Component_Suggest.IFrame.style.zIndex='98';PRAjax_Component_Suggest.IFrame.style.visibility='hidden';PRAjax_Component_Suggest.IFrame.style.display='none';document.body.appendChild(PRAjax_Component_Suggest.IFrame);PRAjax_Component_Suggest.Dropdown=document.createElement('div');PRAjax_Component_Suggest.Dropdown.id='PRAjax_component_suggest_div';PRAjax_Component_Suggest.Dropdown.style.zIndex='99';PRAjax_Component_Suggest.Dropdown.style.visibility='hidden';PRAjax_Component_Suggest.Dropdown.style.display='none';document.body.appendChild(PRAjax_Component_Suggest.Dropdown);PRAjaxUtil.addEvent(document,'click',PRAjax_Component_Suggest.DocumentClicked,false);var aElements=document.getElementsByTagName('input');for(var i=0;i<aElements.length;i++){var element=aElements[i];if(element.getAttribute('prajax_suggest')!=null){var elementId=element.id;if(elementId==''){elementId=element.name;}
if(elementId!=''){PRAjax_Component_Suggest.AttachSuggestComponent(elementId,element.getAttribute('prajax_suggest'));}}}}
PRAjaxUtil.addEvent(window,'load',this.Startup,false);})();