﻿function SmartSearch(oTextbox,oVal,oText,oSmart,oClear,oProvider,oWM){this.cur=-1;this.provider=oProvider;this.textbox=oTextbox;this.itemVal=oVal;this.itemText=oText;this.layer=oSmart;this.clear=oClear;this.watermark=oWM;this.init();}
SmartSearch.prototype.autosuggest=function(aSuggestions,bTypeAhead){if(aSuggestions.length>1){aSuggestions=aSuggestions.split('$')
this.showSuggestions(aSuggestions);}
else
{this.hideSuggestions();this.itemVal.value="";this.itemText.innerHTML="";}};SmartSearch.prototype.createDropDown=function(){var oThis=this;this.layer.className="suggestions";this.layer.style.visibility="hidden";this.layer.onmousedown=this.layer.onmouseup=this.layer.onmouseover=function(oEvent){oEvent=oEvent||window.event;oTarget=oEvent.target||oEvent.srcElement;if(oTarget.tagName=="B")
oTarget=oTarget.parentNode;if(oEvent.type=="mousedown"){if(oTarget.innerText){oThis.textbox.value=oTarget.innerText;oThis.itemText.innerText=oTarget.innerText;}
else{oThis.textbox.value=oTarget.textContent;oThis.itemText.textContent=oTarget.textContent;}
oThis.itemVal.value=oTarget.id;oThis.hideSuggestions();}else if(oEvent.type=="mouseover"){oThis.highlightSuggestion(oTarget);}else{oThis.textbox.focus();}};};SmartSearch.prototype.handleKeyDown=function(oEvent){switch(oEvent.keyCode){case 38:this.previousSuggestion();break;case 40:this.nextSuggestion();break;case 13:this.hideSuggestions();break;}};SmartSearch.prototype.handleKeyUp=function(oEvent){var iKeyCode=oEvent.keyCode;if(iKeyCode==8||iKeyCode==46){this.provider.requestSuggestions(this,false);}else if(iKeyCode<32||(iKeyCode>=33&&iKeyCode<46)||(iKeyCode>=112&&iKeyCode<=123)){}else{this.provider.requestSuggestions(this,true);}};SmartSearch.prototype.hideSuggestions=function(){this.layer.style.visibility="hidden";};SmartSearch.prototype.highlightSuggestion=function(oSuggestionNode){if(oSuggestionNode.tagName=="B")
oSuggestionNode=oSuggestionNode.parentNode;for(var i=0;i<this.layer.childNodes.length;i++){var oNode=this.layer.childNodes[i];if(oNode==oSuggestionNode){oNode.className="current"}else if(oNode.className=="current"){oNode.className="";}}};SmartSearch.prototype.init=function(){var oThis=this;this.textbox.onkeyup=function(oEvent){if(!oEvent){oEvent=window.event;}
oThis.handleKeyUp(oEvent);};this.textbox.onkeydown=function(oEvent){if(!oEvent){oEvent=window.event;}
oThis.handleKeyDown(oEvent);};this.textbox.onblur=function(){oThis.hideSuggestions();if(oThis.textbox.value==''){oThis.textbox.value=oThis.watermark;}};this.textbox.onfocus=function(){if(oThis.textbox.value==oThis.watermark){oThis.textbox.value='';}};if(oThis.textbox.value=='')
oThis.textbox.value=oThis.watermark;this.clear.onclick=function(){oThis.textbox.value='';oThis.textbox.focus();oThis.itemVal.value='';}
this.createDropDown();};SmartSearch.prototype.nextSuggestion=function(){var cSuggestionNodes=this.layer.childNodes;if(cSuggestionNodes.length>0&&this.cur<cSuggestionNodes.length-1){var oNode=cSuggestionNodes[++this.cur];this.highlightSuggestion(oNode);if(oNode.innerText)
{this.textbox.value=oNode.innerText;this.itemText.innerText=oNode.innerText;}
else
{this.textbox.value=oNode.textContent;this.itemText.textContent=oNode.textContent;}
this.itemVal.value=oNode.id;}};SmartSearch.prototype.previousSuggestion=function(){var cSuggestionNodes=this.layer.childNodes;if(cSuggestionNodes.length>0&&this.cur>0){var oNode=cSuggestionNodes[--this.cur];this.highlightSuggestion(oNode);if(oNode.innerText)
{this.textbox.value=oNode.innerText;this.itemText.innerText=oNode.innerText;}
else
{this.textbox.value=oNode.textContent;this.itemText.textContent=oNode.textContent;}
this.itemVal.value=oNode.id;}};SmartSearch.prototype.selectRange=function(iStart,iLength){if(this.textbox.createTextRange){var oRange=this.textbox.createTextRange();oRange.moveStart("character",iStart);oRange.moveEnd("character",iLength-this.textbox.value.length);oRange.select();}else if(this.textbox.setSelectionRange){this.textbox.setSelectionRange(iStart,iLength);}
this.textbox.focus();};SmartSearch.prototype.showSuggestions=function(aSuggestions){var oDiv=null;var arr=null;this.layer.innerHTML="";for(var i=0;i<aSuggestions.length;i++){oDiv=document.createElement("div");arr=aSuggestions[i].split('|');oDiv.innerHTML=arr[1];oDiv.setAttribute("id",arr[0]);this.layer.appendChild(oDiv);}
this.layer.style.visibility="visible";};SmartSearch.prototype.typeAhead=function(sSuggestion){if(this.textbox.createTextRange||this.textbox.setSelectionRange){var iLen=this.textbox.value.length;this.textbox.value=sSuggestion;this.selectRange(iLen,sSuggestion.length);}};function SmartSearchConn(){if(typeof XMLHttpRequest!="undefined"){this.http=new XMLHttpRequest();}else if(typeof ActiveXObject!="undefined"){this.http=new ActiveXObject("MSXML2.XmlHttp");}else{alert("No XMLHttpRequest object available. This functionality will not work.");}}
SmartSearchConn.prototype.requestSuggestions=function(oSmartSearch,bTypeAhead){var oHttp=this.http;if(oHttp.readyState!=0){oHttp.abort();}
if(oSmartSearch.textbox.value.length>0){var sURL="/SmartSearch.aspx?l="+encodeURIComponent(oSmartSearch.textbox.value);oHttp.open("get",sURL,true);oHttp.onreadystatechange=function(){if(oHttp.readyState==4){var aSuggestions=oHttp.responseText;oSmartSearch.autosuggest(aSuggestions,bTypeAhead);}};oHttp.send(null);}
else
oSmartSearch.hideSuggestions();};