var _allAutoSuggests=[];function AutoSuggest(j,k,h,b,d,c,e){var g=this;_allAutoSuggests.push(this);this.elem=j;this.elemID=c;this.oldVal=this.elem.value;if(j.onchange){this.cb=j.onchange;j.onchange=null}j.setAttribute("autocomplete","off");this.suggestType="numeric";if(k&&k.length>0){this.suggestType=k}this.suggestions=b;this.maxDigits=h;this.ajaxType=d;this.eligible=[];this.eligibleID=[];this.inputText=null;this.highlighted=-1;this.isMouseOver=false;this.div=null;this.ifrm=null;this.createDiv(this.elem,e);var i=9;var m=13;var l=27;var f=38;var a=40;j.onkeydown=function(o){var n=(o?o.keyCode:window.event.keyCode);var q=true;switch(n){case i:var p=g.elem.value;if(g.oldVal!=p&&g.cbS){g.cb.call(g.elem);g.oldVal=p}g.hideDiv();break;case m:q=(g.div.style.visibility=="hidden");g.useSuggestion();break;case l:g.hideDiv();break;case f:if(g.highlighted>0){g.highlighted--}g.changeHighlight(n);break;case a:if(g.highlighted<(g.eligible.length-1)){g.highlighted++}g.changeHighlight(n);break}return q};j.onkeyup=function(o){var n=(o?o.keyCode:window.event.keyCode);switch(n){case i:case m:case l:case f:case a:return;default:if(this.value!=g.inputText){g.inputText=this.value;if((this.value.length<2&&g.suggestType=="ajax")||this.value.length<1){g.hideDiv();return}g.getEligible();g.createList();g.positionDiv();g.showDiv()}}};j.onblur=function(n){g.useSuggestion()};Utils.BrowserCompat.attachEvent(document,"onclick",this.onMouseDownHandler.bind(this))}AutoSuggest.prototype.useSuggestion=function(){var c=this.elem.value;if(this.highlighted>-1&&this.isMouseOver){var b=this.eligibleID[this.highlighted];c=this.eligible[this.highlighted]}if(this.highlighted>-1&&c!=undefined){if(this.ajaxType=="city"){var a=document.getElementById("DefaultStateCode");if(a&&c.indexOf(",")<0){c+=","+a.value}this.elem.value=c;if(this.elemID&&this.elemID!=null){this.elemID.value=b}if(this.oldVal!=c&&this.cb){this.cb.call(this.elem)}}else{this.elem.value=c;if(this.elemID&&this.elemID!=null){this.elemID.value=b}if(this.oldVal!=c&&this.cb){this.cb.call(this.elem)}}this.hideDiv()}else{if(this.oldVal!=c&&this.cb){this.cb.call(this.elem)}this.hideDiv()}this.oldVal=c};AutoSuggest.prototype.showDiv=function(){if(this.ifrm!=null){this.ifrm.style.visibility="visible"}this.div.style.visibility="visible"};AutoSuggest.prototype.hideDiv=function(){if(this.ifrm!=null){this.ifrm.style.visibility="hidden"}this.div.style.visibility="hidden";this.highlighted=-1};AutoSuggest.prototype.changeHighlight=function(){var b=this.div.getElementsByTagName("SPAN");for(var d=0,a=b.length;d<a;d++){var c=b[d];if(this.highlighted==d){c.className="selected"}else{c.className=""}}};AutoSuggest.prototype.positionDiv=function(){var c=this.elem;var a=0;var b=c.offsetHeight;while(c.offsetParent&&c.tagName.toUpperCase()!="BODY"){a+=c.offsetLeft;b+=c.offsetTop;c=c.offsetParent}a+=c.offsetLeft;b+=c.offsetTop;var e=this.div.style;e.left=a+1+"px";e.top=b+1+"px";if(this.ifrm!=null){var d=this.ifrm.style;d.left=e.left;d.top=e.top;d.width=this.div.offsetWidth+"px";d.height=this.div.offsetHeight+"px"}};AutoSuggest.prototype.createList=function(){var f=this.div;var c=this.eligible;if(f.hasChildNodes){while(f.childNodes.length>=1){f.removeChild(f.firstChild)}}for(var d=0,b=c.length;d<b;d++){var e=document.createElement("span");var g=document.createElement("a");g.setAttribute("href","javascript:void(0)");g.innerHTML="<nobr>"+c[d]+"</nobr>";e.appendChild(g);if(this.highlighted==d){e.className="selected"}f.appendChild(e);f.appendChild(document.createElement("br"))}var h=this;f.onmouseover=function(k){var l=(k?k.target:window.event.srcElement);while(l.parentNode&&l.tagName.toUpperCase()!="SPAN"){l=l.parentNode}var j=f.getElementsByTagName("SPAN");for(var m=0,a=j.length;m<a;m++){if(j[m]==l){h.highlighted=m;break}}h.isMouseOver=true;h.changeHighlight()};f.onmouseout=function(a){h.isMouseOver=false};f.onclick=function(a){h.useSuggestion();h.hideDiv();return false}};AutoSuggest.prototype.createDiv=function(b,d){var c=document.createElement("DIV");c.className="suggestion";if(typeof(d)!="undefined"&&d!=null){c.setAttribute("style","height: "+d+"px; overflow-y: auto; overflow-x: hidden;")}document.body.appendChild(c);this.div=c;if(/msie|MSIE 6/.test(navigator.userAgent)){var a=document.createElement("IFRAME");a.src="about:blank";a.setAttribute("scrolling","no");a.setAttribute("frameborder","0");a.style.position="absolute";a.style.border="none";a.style.visibility="hidden";document.body.appendChild(a);this.ifrm=a}};AutoSuggest.prototype.getEligible=function(){var newEligible=[];var newEligibleID=[];if(this.inputText==null||this.inputText.length==0){this.eligible=newEligible;this.eligibleID=newEligibleID;return}else{if(this.suggestType=="ajax"){var xhr=new XMLHttpRequest();var url="/"+Utils.AppName+"/Include/AJAX/GetAutoSuggestions.aspx?type="+this.ajaxType+"&input="+this.inputText;xhr.open("GET",url,false);xhr.send(null);try{var resp=eval("("+xhr.responseText+")");if(resp.eligible.length>0){for(var i=0,len=resp.eligible.length;i<len;i++){newEligible.push(resp.eligible[i][0]);newEligibleID.push(resp.eligible[i][1])}}}catch(err){newEligible=[];newEligibleID=[]}}else{if(this.suggestType=="array"){var suggs=this.suggestions;var inputText=this.inputText.toLowerCase();for(var i=0,len=suggs.length;i<len;i++){var suggestion=suggs[i];if(suggestion.toLowerCase().indexOf(inputText)==0){newEligible.push(suggestion)}}newEligibleID=newEligible}else{if(this.suggestType=="money"){var txt=this.inputText;if(txt.length>0&&IsNumeric(txt)){var zeros="";for(i=0,len=this.maxDigits-txt.length;i<len;i++){zeros+="0";newEligible.push("$"+Utils.Format.addCommas(txt+zeros))}}newEligibleID=newEligible}else{var txt=this.inputText;if(txt.length>0&&IsNumeric(txt)){var zeros="";for(i=0,len=this.maxDigits-txt.length;i<len;i++){zeros+="0";newEligible.push(Utils.Format.addCommas(txt+zeros))}}newEligibleID=newEligible}}}}this.eligible=newEligible;this.eligibleID=newEligibleID};AutoSuggest.prototype.onMouseDownHandler=function(a){if(this.div.style.visibility!="visible"){return}var b=(a?a.target:window.event.srcElement);var d=false;var c=this.div;while(b!=null){if(b==c){d=true;break}b=b.parentNode}if(!d){this.hideDiv()}return true};