if(typeof(bsn)=="undefined"){_b=bsn={}}if(typeof(_b.AutoComplete)=="undefined"){_b.AutoComplete={}}else{alert("Autosuggest is already set!")}_b.AutoComplete=function(h,f){if(!document.getElementById){return 0}this.fld=_b.DOM.gE(h);if(!this.fld){return 0}this.sInp="";this.nInpC=0;this.aSug=[];this.iHigh=0;this.data={};this.oP=f?f:{};var b,d={minchars:1,meth:"get",varname:"input",className:"autocomplete",timeout:2500,delay:500,offsety:-5,shownoresults:true,noresults:"No results!",maxheight:250,cache:true,lowerCaseQuery:false,suggEntryCountText:"results: ",maxentries:15,windowWidth:0,windowPointerPosition:"",requestCssClass:"acRequestActive",suggEntryStyle:"long",solrRequest:false,solrParams:{},debug:false};var g,a={type:"jsonp",format:"json",callbackFunction:"jsonpSolrResponse",callbackObject:"ac_json",indent:"off"};for(b in d){if(typeof(this.oP[b])!=typeof(d[b])){this.oP[b]=d[b]}}for(g in a){if(typeof(this.oP.solrParams[g])!=typeof(a[g])){this.oP.solrParams[g]=a[g]}}var e=this;this.fld.onkeypress=function(c){return e.onKeyPress(c)};this.fld.onkeyup=function(c){return e.onKeyUp(c)};this.fld.setAttribute("autocomplete","off");this.nativeCssClass=this.fld.getAttribute("class")};_b.AutoComplete.prototype.onKeyPress=function(e){var d=(window.event)?window.event.keyCode:e.keyCode;var c=13;var b=9;var f=27;var a=1;switch(d){case c:this.setHighlightedValue();a=0;break;case f:this.clearSuggestions();break}return a};_b.AutoComplete.prototype.onKeyUp=function(e){var c=(window.event)?window.event.keyCode:e.keyCode;var b=38;var d=40;var a=1;switch(c){case b:this.changeHighlight(c);a=0;break;case d:this.changeHighlight(c);a=0;break;default:this.getSuggestions(this.fld.value)}return a};_b.AutoComplete.prototype.getSuggestions=function(g){if(g==this.sInp){return 0}_b.DOM.remE(this.idAs);this.sInp=g;if(g.length<this.oP.minchars){this.aSug=[];this.nInpC=g.length;return 0}this.setRequestCssClass();var d=this.nInpC;this.nInpC=g.length?g.length:0;if(this.oP.debug){console.log("ac.getSuggestion")}var b=this.aSug.length;if(this.nInpC>d&&b&&b<this.oP.maxentries&&this.oP.cache){if(this.oP.debug){console.log("ac.cache")}var a=[];for(var e=0;e<b;e++){if(this.aSug[e].value.substr(0,g.length).toLowerCase()==g.toLowerCase()){a.push(this.aSug[e])}}this.aSug=a;this.createList(this.aSug);this.removeRequestCssClass();return false}else{if(this.oP.debug){console.log("ac.new request")}var f=this;var c=this.sInp;clearTimeout(this.ajID);if(this.oP.solrRequest){if(this.oP.debug){console.log("ac.new Solr request")}this.ajID=setTimeout(function(){f.doSolrAjaxRequest(c)},this.oP.delay)}else{if(this.oP.debug){console.log("ac.new Ajax request")}this.ajID=setTimeout(function(){f.doAjaxRequest(c)},this.oP.delay)}}return false};_b.AutoComplete.prototype.setRequestCssClass=function(){requestCssClass=this.oP.requestCssClass;if(this.nativeCssClass&&this.oP.requestCssClass!=""){requestCssClass=this.nativeCssClass+" "+this.oP.requestCssClass}this.fld.setAttribute("class",requestCssClass)};_b.AutoComplete.prototype.removeRequestCssClass=function(){if(this.nativeCssClass){this.fld.setAttribute("class",this.nativeCssClass)}else{this.fld.removeAttribute("class")}};_b.AutoComplete.prototype.doSolrAjaxRequest=function(b){if(this.oP.debug){console.log("ac.doSolrAjaxRequest")}if(b!=this.fld.value){return false}var d=this;if(false!=this.oP.lowerCaseQuery){if(this.oP.debug){console.log("ac.lowerCaseQuery")}this.sInp=this.sInp.toLowerCase()}if(typeof(this.oP.script)=="function"){var c=this.oP.script(encodeURIComponent(this.sInp))}else{var c=this.oP.script+"&"+this.oP.varname+"="+encodeURIComponent(this.sInp);c=c+"&wt="+this.oP.solrParams.format;if(this.oP.solrParams.type=="jsonp"){c=c+"&callback=?";var a=this.oP.solrParams.callbackFunction;if(this.oP.solrParams.callbackObject){a=this.oP.solrParams.callbackObject+"."+this.oP.solrParams.callbackFunction}c=c+"&terms.limit="+this.oP.maxentries;c=c+"&indent="+this.oP.solrParams.indent;c=c+"&json.wrf="+a}}if(!c){if(this.oP.debug){console.log("ac.Solr !url")}return false}jQuery.getJSON(c,{},function(e,f){})};_b.AutoComplete.prototype.jsonpSolrResponse=function(a,b){if(this.oP.debug){console.log("ac.result",a.terms)}this.parseSolrJsonResults(a.terms);this.removeRequestCssClass();this.setSolrSuggestions(this.data,this.fld.value)};_b.AutoComplete.prototype.parseSolrJsonResults=function(a){results=[];diff=0;for(i=0;i<a[1].length/2;i++){results[i]=this.getSolrResultItem(a[1][(0+diff)],a[1][(1+diff)]);diff=diff+2}data={results:results};if(this.oP.debug){console.log("ac.Data",data)}this.data=data};_b.AutoComplete.prototype.getSolrResultItem=function(b,a){switch(this.oP.suggEntryStyle){default:return{id:"count"+a+"",value:b+"",info:this.oP.suggEntryCountText+a};break}};_b.AutoComplete.prototype.doAjaxRequest=function(c){if(this.oP.debug){console.log("ac.doAjaxRequest")}if(c!=this.fld.value){return false}var h=this;if(false!=this.oP.lowerCaseQuery){this.sInp=this.sInp.toLowerCase()}if(typeof(this.oP.script)=="function"){var d=this.oP.script(encodeURIComponent(this.sInp))}else{var d=this.oP.script+this.oP.varname+"="+encodeURIComponent(this.sInp)}if(!d){return false}var b=this.oP.meth;var c=this.sInp;var g=this;var a=function(j){h.setSuggestions(j,c);g.removeRequestCssClass()};var e=function(j){if(this.oP.debug){console.log("AJAX error: "+j)}};var f=new _b.Ajax();f.makeRequest(d,b,a,e)};_b.AutoComplete.prototype.setSuggestions=function(req,input){if(input!=this.fld.value){return false}this.aSug=[];if(this.oP.json){var jsondata=eval("("+req.responseText+")");for(var i=0;i<jsondata.results.length;i++){this.aSug.push({id:jsondata.results[i].id,value:jsondata.results[i].value,info:jsondata.results[i].info})}}else{var xml=req.responseXML;var results=xml.getElementsByTagName("results")[0].childNodes;for(var i=0;i<results.length;i++){if(results[i].hasChildNodes()){this.aSug.push({id:results[i].getAttribute("id"),value:results[i].childNodes[0].nodeValue,info:results[i].getAttribute("info")})}}}this.idAs="ac_"+this.fld.id;this.createList(this.aSug)};_b.AutoComplete.prototype.setSolrSuggestions=function(c,a){if(a!=this.fld.value){return false}this.aSug=[];if(this.oP.json){var d=c;for(var b=0;b<d.results.length;b++){this.aSug.push({id:d.results[b].id,value:d.results[b].value,info:d.results[b].info})}}else{TBD}this.idAs="ac_"+this.fld.id;this.createList(this.aSug)};_b.AutoComplete.prototype.createList=function(b){var p=this;_b.DOM.remE(this.idAs);this.killTimeout();if(b.length==0&&!this.oP.shownoresults){return false}var m=_b.DOM.cE("div",{id:this.idAs,className:this.oP.className});var d=_b.DOM.cE("div",{className:"ac_corner"});var g=_b.DOM.cE("div",{className:"ac_bar"});var r=_b.DOM.cE("div",{className:"ac_header"});r.appendChild(d);r.appendChild(g);m.appendChild(r);var l=_b.DOM.cE("ul",{id:"ac_ul"});for(var s=0;s<b.length;s++){var x=b[s].value;var o=x.toLowerCase().indexOf(this.sInp.toLowerCase());var j=x.substring(0,o)+"<em>"+x.substring(o,o+this.sInp.length)+"</em>"+x.substring(o+this.sInp.length);var q=_b.DOM.cE("span",{},j,true);if(b[s].info!=""){if(this.oP.suggEntryStyle=="simple"){var h=_b.DOM.cE("span",{},"("+b[s].info+")");q.appendChild(h)}else{var u=_b.DOM.cE("br",{});q.appendChild(u);var h=_b.DOM.cE("small",{},b[s].info);q.appendChild(h)}}var v=_b.DOM.cE("a",{href:"#"});var e=_b.DOM.cE("span",{className:"tl"}," ");var c=_b.DOM.cE("span",{className:"tr"}," ");v.appendChild(e);v.appendChild(c);v.appendChild(q);v.name=s+1;v.onclick=function(){p.setHighlightedValue();return false};v.onmouseover=function(){p.setHighlight(this.name)};var k=_b.DOM.cE("li",{},v);l.appendChild(k)}if(b.length==0&&this.oP.shownoresults){var k=_b.DOM.cE("li",{className:"ac_warning"},this.oP.noresults);l.appendChild(k)}m.appendChild(l);var t=_b.DOM.cE("div",{className:"ac_corner"});var w=_b.DOM.cE("div",{className:"ac_bar"});var n=_b.DOM.cE("div",{className:"ac_footer"});n.appendChild(t);n.appendChild(w);m.appendChild(n);var f=_b.DOM.getPos(this.fld);m.style.left=f.x+"px";m.style.top=(f.y+this.fld.offsetHeight+this.oP.offsety)+"px";m.style.width=this.fld.offsetWidth+"px";if(this.oP.debug){}if(this.oP.windowWidth>0){if(this.oP.debug){console.log("ac.setWidthFromOption: "+this.oP.windowWidth)}m.style.width=parseInt(this.oP.windowWidth)+"px";m.style.backgroundPosition="10px"}if(this.oP.windowPointerPosition!=""){if(this.oP.debug){console.log("ac.setWidthFromOption: "+this.oP.windowPointerPosition)}m.style.backgroundPosition=this.oP.windowPointerPosition}m.onmouseover=function(){p.killTimeout()};m.onmouseout=function(){p.resetTimeout()};document.getElementsByTagName("body")[0].appendChild(m);this.iHigh=0;var p=this;this.toID=setTimeout(function(){p.clearSuggestions()},this.oP.timeout)};_b.AutoComplete.prototype.changeHighlight=function(a){var b=_b.DOM.gE("ac_ul");if(!b){return false}var c;if(a==40){c=this.iHigh+1}else{if(a==38){c=this.iHigh-1}}if(c>b.childNodes.length){c=b.childNodes.length}if(c<1){c=1}this.setHighlight(c);this.previewHighlightedValue(c)};_b.AutoComplete.prototype.setHighlight=function(b){var a=_b.DOM.gE("ac_ul");if(!a){return false}if(this.iHigh>0){this.clearHighlight()}this.iHigh=Number(b);a.childNodes[this.iHigh-1].className="ac_highlight";this.killTimeout()};_b.AutoComplete.prototype.clearHighlight=function(){var a=_b.DOM.gE("ac_ul");if(!a){return false}if(this.iHigh>0){a.childNodes[this.iHigh-1].className="";this.iHigh=0}};_b.AutoComplete.prototype.setHighlightedValue=function(){if(this.iHigh){this.sInp=this.fld.value=this.aSug[this.iHigh-1].value;this.fld.focus();if(this.fld.selectionStart){this.fld.setSelectionRange(this.sInp.length,this.sInp.length)}this.clearSuggestions();if(typeof(this.oP.callback)=="function"){this.oP.callback(this.aSug[this.iHigh-1])}}};_b.AutoComplete.prototype.previewHighlightedValue=function(a){if(this.iHigh){this.fld.value=this.aSug[a-1].value}};_b.AutoComplete.prototype.killTimeout=function(){clearTimeout(this.toID)};_b.AutoComplete.prototype.resetTimeout=function(){clearTimeout(this.toID);var a=this;this.toID=setTimeout(function(){a.clearSuggestions()},1000)};_b.AutoComplete.prototype.clearSuggestions=function(){this.killTimeout();var a=_b.DOM.gE(this.idAs);var c=this;if(a){var b=new _b.Fader(a,1,0,250,function(){_b.DOM.remE(c.idAs)})}};if(typeof(_b.Ajax)=="undefined"){_b.Ajax={}}_b.Ajax=function(){this.req={};this.isIE=false};_b.Ajax.prototype.makeRequest=function(c,b,a,d){if(b!="POST"){b="GET"}this.onComplete=a;this.onError=d;extraParams={};var e=this;e.processReqChange();if(window.XMLHttpRequest){this.req=new XMLHttpRequest();this.req.onreadystatechange=function(){e.processReqChange()};this.req.dataType="jsonp";this.req.open("get",c,true);this.req.send(null)}else{if(window.ActiveXObject){this.req=new ActiveXObject("Microsoft.XMLHTTP");if(this.req){this.req.onreadystatechange=function(){e.processReqChange()};this.req.open(b,c,true);this.req.send()}}}};_b.Ajax.prototype.processReqChange=function(){if(this.req.readyState==4){if(this.req.status==200){this.onComplete(this.req)}else{this.onError(this.req.status)}}};if(typeof(_b.DOM)=="undefined"){_b.DOM={}}_b.DOM.cE=function(g,c,b,f){var h=document.createElement(g);if(!h){return 0}for(var d in c){h[d]=c[d]}var e=typeof(b);if(e=="string"&&!f){h.appendChild(document.createTextNode(b))}else{if(e=="string"&&f){h.innerHTML=b}else{if(e=="object"){h.appendChild(b)}}}return h};_b.DOM.gE=function(c){var a=typeof(c);if(a=="undefined"){return 0}else{if(a=="string"){var b=document.getElementById(c);if(!b){return 0}else{if(typeof(b.appendChild)!="undefined"){return b}else{return 0}}}else{if(typeof(c.appendChild)!="undefined"){return c}else{return 0}}}};_b.DOM.remE=function(a){var b=this.gE(a);if(!b){return 0}else{if(b.parentNode.removeChild(b)){return true}else{return 0}}};_b.DOM.getPos=function(c){var c=this.gE(c);var b=c;var d=0;if(b.offsetParent){while(b.offsetParent){d+=b.offsetLeft;b=b.offsetParent}}else{if(b.x){d+=b.x}}var b=c;var a=0;if(b.offsetParent){while(b.offsetParent){a+=b.offsetTop;b=b.offsetParent}}else{if(b.y){a+=b.y}}return{x:d,y:a}};if(typeof(_b.Fader)=="undefined"){_b.Fader={}}_b.Fader=function(b,f,e,a,d){if(!b){return 0}this.e=b;this.from=f;this.to=e;this.cb=d;this.nDur=a;this.nInt=50;this.nTime=0;var c=this;this.nID=setInterval(function(){c._fade()},this.nInt)};_b.Fader.prototype._fade=function(){this.nTime+=this.nInt;var a=Math.round(this._tween(this.nTime,this.from,this.to,this.nDur)*100);var c=a/100;if(this.e.filters){try{this.e.filters.item("DXImageTransform.Microsoft.Alpha").opacity=a}catch(b){this.e.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+a+")"}}else{this.e.style.opacity=c}if(this.nTime==this.nDur){clearInterval(this.nID);if(this.cb!=undefined){this.cb()}}};_b.Fader.prototype._tween=function(e,a,g,f){return a+((g-a)*(e/f))};
