var isOpera=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);var arrOptions=new Array();var strLastValue="";var bMadeRequest;var theTextBox;var objLastActive;var currentValueSelected=-1;var bNoResults=false;var isTiming=false;var timer=null;var toCount=0;function AddHandler(A){A.onkeyup=GiveOptions;A.onblur=function(){if(this.obj.useTimeout){StartTimeout();}};if(isOpera){A.onkeypress=GiveOptions;}}function GiveOptions(B){var A=-1;if(window.event){A=event.keyCode;theTextBox=event.srcElement;}else{A=B.which;theTextBox=B.target;}if(theTextBox.obj.useTimeout&&isTiming){RestartTimeout();}if(theTextBox.value.length==0&&!isOpera){arrOptions=new Array();HideTheBox();strLastValue="";return false;}if(objLastActive==theTextBox){if(A==13){GrabHighlighted();theTextBox.focus();return false;}else{if(A==38){MoveHighlight(-1);return false;}else{if(A==40){MoveHighlight(1);return false;}else{if(A==27){arrOptions=new Array();HideTheBox();strLastValue="";return false;}}}}}if(theTextBox.value.indexOf(strLastValue)!=0||theTextBox.value.length>strLastValue.length||((arrOptions.length==0||arrOptions.length==15)&&!bNoResults)){objLastActive=theTextBox;bMadeRequest=true;SuggestUser(theTextBox.value);}else{if(!bMadeRequest){BuildList(theTextBox.value);}}strLastValue=theTextBox.value;}function SuggestUser(pattern){var url=theTextBox.obj.serverClass+pattern+"&where="+theTextBox.obj.matchAnywhere;new Ajax.Request(url,{method:"get",onSuccess:function(transport){eval(transport.responseText);BuildList(strLastValue);bMadeRequest=false;},onError:function(transport){return false;}});}function BuildList(B){SetElementPosition(theTextBox);B=B.replace(/\\/gi,"");var A=MakeMatches(B);A=A.join().replace(/\,/gi,"");if(A.length>0){$("spanOutput").innerHTML=A;$("OptionsList_0").className="spanHighElement";currentValueSelected=0;bNoResults=false;}else{currentValueSelected=-1;bNoResults=true;if(theTextBox.obj.showNoMatchMessage){$("spanOutput").innerHTML="<span class='noMatchData'>"+theTextBox.obj.noMatchingDataMessage+"</span>";}else{HideTheBox();}}}function SetElementPosition(E){if(document.all){var A=0;var F=0;var D=E;if(!D){return ;}var B=D.offsetHeight;var C=D.offsetWidth;while(D!=null){A+=D.offsetLeft;F+=D.offsetTop;D=D.offsetParent;}xPosElement=$("spanOutput");if(E.obj.matchTextBoxWidth){xPosElement.style.left=A;}if(E.obj.matchTextBoxWidth){if(document.all){xPosElement.style.width=C;}else{xPosElement.style.width=C-4;}}xPosElement.style.top=F+B;}else{xPosElement=$("spanOutput");xPosElement.clonePosition(E,{setWidth:E.obj.matchTextBoxWidth,setHeight:false,offsetTop:E.getHeight()});}xPosElement.style.display="block";if(E.obj.useTimeout){xPosElement.onmouseout=StartTimeout;xPosElement.onmouseover=EraseTimeout;}else{xPosElement.onmouseout=null;xPosElement.onmouseover=null;}}var countForId=0;function MakeMatches(D){countForId=0;var C=new Array();var A=new RegExp(theTextBox.obj.regExAny+D,theTextBox.obj.regExFlags);for(i=0;i<arrOptions.length;i++){var B=arrOptions[i][0].match(A);if(B){C[C.length]=CreateUnderline(arrOptions[i][0],D,i);}}return C;}var undeStart="<span class='spanMatchText'>";var undeEnd="</span>";var selectSpanStart="<span style='width:100%;display:block;' class='spanNormalElement' onmouseover='SetHighlightColor(this);' ";var selectSpanEnd="</span>";function CreateUnderline(E,C,D){selectSpanMid="onclick='SetText("+D+")' id='OptionsList_"+countForId+"' theArrayNumber='"+D+"'>";var B=new RegExp(theTextBox.obj.regExAny+C,theTextBox.obj.regExFlags);var F=E.search(B);var A=E.substring(F,F+C.length);countForId++;return selectSpanStart+selectSpanMid+E.replace(B,undeStart+A+undeEnd)+selectSpanEnd;}function MoveHighlight(A){if(currentValueSelected>=0){newValue=parseInt(currentValueSelected)+parseInt(A);if(newValue>-1&&newValue<countForId){currentValueSelected=newValue;SetHighlightColor(null);}}}function SetHighlightColor(A){if(A){currentValueSelected=A.id.slice(A.id.indexOf("_")+1,A.id.length);}for(i=0;i<countForId;i++){$("OptionsList_"+i).className="spanNormalElement";}$("OptionsList_"+currentValueSelected).className="spanHighElement";}var userLinkStart="<a href=\"javascript:removeFromTo('";var userLinkMid="');\">";var userLinkEnd="</a>";function SetText(B){if(theTextBox.obj.distListDisplay==null){theTextBox.value=arrOptions[B][0];theTextBox.obj.hidden.value=arrOptions[B][1];}else{if(theTextBox.obj.hidden.value.indexOf(arrOptions[B][0])<0){var A=userLinkStart+arrOptions[B][0]+userLinkMid+arrOptions[B][0]+userLinkEnd;theTextBox.obj.hidden.value+=" "+arrOptions[B][0];if(theTextBox.obj.distListDisplay.innerHTML==""){theTextBox.obj.distListDisplay.innerHTML=A;}else{theTextBox.obj.distListDisplay.innerHTML+=", "+A;}theTextBox.value="";}else{theTextBox.value="";}}$("spanOutput").style.display="none";currentValueSelected=-1;}function GrabHighlighted(){if(currentValueSelected>=0){xVal=$("OptionsList_"+currentValueSelected).getAttribute("theArrayNumber");SetText(xVal);HideTheBox();}return false;}function HideTheBox(){$("spanOutput").style.display="none";currentValueSelected=-1;EraseTimeout();}function EraseTimeout(){clearTimeout(timer);timer=null;isTiming=false;}function StartTimeout(){if(theTextBox){timer=setTimeout("HideTheBox()",theTextBox.obj.theVisibleTime);isTiming=true;}}function RestartTimeout(){EraseTimeout();StartTimeout();}function SetProperties(B,K,G,D,A,E,L,F,C,J,H){var I={elem:B,hidden:K,serverClass:G,distListDisplay:$(D),regExFlags:((A)?"i":""),regExAny:((E)?"":"^"),matchAnywhere:E,matchTextBoxWidth:L,showNoMatchMessage:F,noMatchingDataMessage:C,useTimeout:J,theVisibleTime:H};AddHandler(B);return I;}function removeFromTo(A){var D=theTextBox.obj.hidden.value;var C=theTextBox.obj.distListDisplay.innerHTML;var B=new RegExp(" "+A,"g");D=D.replace(B,"");theTextBox.obj.hidden.value=D;if(document.all){B=new RegExp(A,"g");C=C.replace(B,"");C=C.replace(/<[^>]+><\/a>/gi,"");}else{C=C.replace(userLinkStart+A+userLinkMid+A+userLinkEnd,"");}C=C.replace(/^\,?\s?/,"");C=C.replace(/\,?\s?$/,"");C=C.replace(/\,\s\,\s/g,", ");theTextBox.obj.distListDisplay.innerHTML=C;toCount--;}