if(typeof Effect=="undefined"){throw ("controls.js requires including script.aculo.us' effects.js library")}function IsSafari(){return(navigator.vendor&&(navigator.vendor.indexOf("Apple")>-1))}var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(c,b,d,a){c=$(c);this.element=c;this.key=b;this.update=$(d);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.scrollPrev=0;this.oldElementValue=this.element.value;if(this.setOptions){this.setOptions(a)}else{this.options=a||{}}this.options.paramName=this.options.paramName||this.element.name;this.options.defaultKey=this.options.defaultKey||"";this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(e,f){if(!f.style.position||f.style.position=="absolute"){f.style.position="absolute";Position.clone(e,f,{setHeight:false,offsetTop:e.offsetHeight})}Effect.Appear(f,{duration:0.15})};this.options.onHide=this.options.onHide||function(e,f){new Effect.Fade(f,{duration:0.15})};Event.observe(window,"load",this.initImages.bind(this));window.adjustlayout=CombineFunctions(window.adjustlayout,function(){setTimeout(this.initImages.bind(this),25)}.bind(this));if(typeof(this.options.tokens)=="string"){this.options.tokens=new Array(this.options.tokens)}if(!this.options.tokens.include("\n")){this.options.tokens.push("\n")}this.observer=null;this.element.setAttribute("autocomplete","off");Element.hide(this.update);Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.update,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.element,"focus",this.onFocus.bindAsEventListener(this));Event.observe(this.update,"focus",this.onFocus.bindAsEventListener(this));Event.observe(this.element,"keydown",this.onKeyPress.bindAsEventListener(this))},initImages:function(){if(this.options.expander){var c=$(this.options.expander);c.style.position="absolute";Position.clone(this.element,c,{setHeight:false,setWidth:false,offsetLeft:this.element.offsetWidth-Element.getWidth(c)-1,offsetTop:1});Element.show(c)}if(this.options.shrinker){var b=$(this.options.shrinker);b.style.position="absolute";Position.clone(this.element,b,{setHeight:false,setWidth:false,offsetLeft:this.element.offsetWidth-Element.getWidth(b)-1,offsetTop:1})}if(this.options.indicator){var a=$(this.options.indicator);a.style.position="absolute";Position.clone(this.element,a,{setHeight:false,setWidth:false,offsetLeft:this.element.offsetWidth-Element.getWidth(a)-1,offsetTop:1})}},show:function(){if(Element.getStyle(this.update,"display")=="none"){this.options.onShow(this.element,this.update)}if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,"position")=="absolute")){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+"_iefix")}if(this.iefix){setTimeout(this.fixIEOverlapping.bind(this),50)}if(this.options.expander){Element.hide(this.options.expander)}if(this.options.shrinker){Element.show(this.options.shrinker)}},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix)},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,"display")!="none"){this.options.onHide(this.element,this.update)}if(this.iefix){Element.hide(this.iefix)}if(this.options.shrinker){Element.hide(this.options.shrinker)}if(this.options.expander){Element.show(this.options.expander)}},expand:function(){if(this.options.minChars>this.getToken().length){this.options.minChars=this.getToken().length}setTimeout(this.activate.bind(this),250)},startIndicator:function(){if(this.options.expander){Element.hide(this.options.expander)}if(this.options.shrinker){Element.hide(this.options.shrinker)}if(this.options.indicator){Element.show(this.options.indicator)}},stopIndicator:function(){if(this.options.indicator){Element.hide(this.options.indicator)}if(this.options.expander&&!this.active){Element.show(this.options.expander)}if(this.options.shrinker&&this.active){Element.show(this.options.shrinker)}},onKeyPress:function(b){var a=true;if(this.active){switch(b.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(b);a=false;case Event.KEY_ESC:this.hide();this.active=false;Event.stop(b);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();Event.stop(b);return;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(b);return}}else{if(b.keyCode==Event.KEY_TAB||b.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&b.keyCode==0)){return}}if(b.keyCode==Event.KEY_SHIFT||b.keyCode==Event.KEY_CTRL||b.keyCode==Event.KEY_ALT){a=false}if(a&&this.key){$(this.key).value=this.options.defaultKey}this.changed=true;this.hasFocus=true;if(this.observer){clearTimeout(this.observer)}this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000)},activate:function(){this.changed=false;this.hasFocus=true;this.element.focus();this.getUpdatedChoices()},onHover:function(b){var a=Event.findElement(b,"LI");if(this.index!=a.autocompleteIndex){this.index=a.autocompleteIndex;this.render()}Event.stop(b)},onClick:function(b){var a=Event.findElement(b,"LI");this.index=a.autocompleteIndex;this.selectEntry();this.hide()},onBlur:function(a){this.scrollPrev=this.update.scrollTop;setTimeout(this.hideIfNoFocus.bind(this),250);this.hasFocus=false;this.active=false},onFocus:function(a){this.hasFocus=true},hideIfNoFocus:function(){var a=!this.hasFocus&&(IsSafari()?(this.update.scrollTop==this.scrollPrev):true);if(a){this.hide()}},render:function(){if(this.entryCount>0){for(var a=0;a<this.entryCount;a++){this.index==a?Element.addClassName(this.getEntry(a),"selected"):Element.removeClassName(this.getEntry(a),"selected")}if(this.hasFocus){this.show();this.active=true}}else{this.active=false;this.hide()}},markPrevious:function(){if(this.index>0){this.index--}this.getEntry(this.index).scrollIntoView(false)},markNext:function(){if(this.index<this.entryCount-1){this.index++}this.getEntry(this.index).scrollIntoView(false)},getEntry:function(a){return this.update.firstChild.childNodes[a]},getCurrentEntry:function(){return this.getEntry(this.index)},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry())},updateElement:function(f){if(this.options.updateElement){this.options.updateElement(f);return}var d="";if(this.options.select){var a=$(f).select("."+this.options.select)||[];if(a.length>0){d=Element.collectTextNodes(a[0],this.options.select)}}else{d=Element.collectTextNodesIgnoreClass(f,"informal")}if(d==""){return}var c=this.getTokenBounds();if(c[0]!=-1){var e=this.element.value.substr(0,c[0]);var b=this.element.value.substr(c[0]).match(/^\s+/);if(b){e+=b[0]}this.element.value=e+d+this.element.value.substr(c[1])}else{this.element.value=d}this.oldElementValue=this.element.value;this.element.focus();if(this.key){$(this.key).value=Element.readAttribute(f,"matchid")}if(this.options.afterUpdateElement){this.options.afterUpdateElement(this.element,f)}},updateChoices:function(c){if(!this.changed&&this.hasFocus){this.update.innerHTML=c;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var a=0;a<this.entryCount;a++){var b=this.getEntry(a);b.autocompleteIndex=a;this.addObservers(b)}}else{this.entryCount=0}if(this.entryCount>this.options.maxResultsWithoutScroll){this.update.style.overflow="auto";this.update.style.height=(Element.getHeight(this.element)*this.options.maxResultsWithoutScroll)+"px"}else{this.update.style.height=""}this.stopIndicator();this.index=0;if(this.key&&Element.collectTextNodes(this.getCurrentEntry()).toLowerCase()==$(this.element).value.toLowerCase()){$(this.key).value=Element.readAttribute(this.getCurrentEntry(),"matchid")}if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide()}else{this.render()}}},addObservers:function(a){Event.observe(a,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(a,"click",this.onClick.bindAsEventListener(this))},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices()}else{this.active=false;this.hide()}this.oldElementValue=this.element.value},getToken:function(){var a=this.getTokenBounds();return this.element.value.substring(a[0],a[1]).strip()},getTokenBounds:function(){if(null!=this.tokenBounds){return this.tokenBounds}var e=this.element.value;if(e.strip().empty()){return[-1,0]}var f=arguments.callee.getFirstDifferencePos(e,this.oldElementValue);var h=(f==this.oldElementValue.length?1:0);var d=-1,c=e.length;var g;for(var b=0,a=this.options.tokens.length;b<a;++b){g=e.lastIndexOf(this.options.tokens[b],f+h-1);if(g>d){d=g}g=e.indexOf(this.options.tokens[b],f+h);if(-1!=g&&g<c){c=g}}return(this.tokenBounds=[d+1,c])}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(c,a){var d=Math.min(c.length,a.length);for(var b=0;b<d;++b){if(c[b]!=a[b]){return b}}return d};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(d,c,e,b,a){this.baseInitialize(d,c,e,a);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=b},getUpdatedChoices:function(){this.startIndicator();var a=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,a):a;if(this.options.defaultParams){this.options.parameters+="&"+this.options.defaultParams}new Ajax.Request(this.url,this.options)},onComplete:function(a){this.updateChoices(a.responseText)}});Autocompleter.AjaxPro=Class.create(Autocompleter.Base,{initialize:function(c,b,e,d,a){this.baseInitialize(c,b,e,a);this.options.onComplete=this.onComplete.bind(this);this.options.noMatchFoundText=a.noMatchFoundText||"No matches found";this.func=d},getUpdatedChoices:function(){this.startIndicator();this.func(this.options.data,this.options.mode,this.options.maxResults,this.options.maxLength,this.getToken(),this.options.onComplete)},onComplete:function(a){var b;if(a.error){b='<ul><li class="error"><span class="informal">'+a.error.Message+"</span></li></ul>"}else{if(a.value==""){b='<ul><li class="error"><span class="informal">'+this.options.noMatchFoundText+"</span></li></ul>"}else{b=a.value}}this.updateChoices(b)}});