if(!$chk(ADCProto)){ var ADCProto = new Class({}); var ADC = new ADCProto(); }
ADCProto.implement({
	
	addMembersSearchBoxJS: function(){
//			targetElement: $("membersSearchBoxResults"),
//			targetPosition: "fill",
		ADC.membersSearchBoxRequest = new MoojaxRequest({query:''}, {
			call: "adc.membersSearchBoxResults",
			method: "post",
			onSuccess: function(data){
				ADC.processMembersSearchBoxResults(data.results);
			}
		});

		$("membersSearchBoxResults").setStyles({"visibility":"hidden","display":"block"});
		ADC.membersSearchBoxResults_Slide = new Fx.Slide("membersSearchBoxResults", {mode: "vertical", duration: 200}).hide();
		$("membersSearchBoxResults").setStyles({"visibility":"visible","z-index":"100"});

		$("membersSearchBoxInput").addEvent("keydown", function(e){
			if(e.key == "enter"){
				var hrefEl = $("membersSearchBoxResults").getElement("ul li.hover a");
				if($chk(hrefEl)) var href = hrefEl.get("href");
				if($chk(href)){
					e.stop();
					document.location.href = href;
					//$("membersSearchBoxForm").set("action", href);
					//$("membersSearchBoxForm").submit();
				}				
			}
			else if(e.key == "down" || e.key == "up"){
				e.stop();

				var list = $("membersSearchBoxResults").getElement("ul");
				var current = list.getFirst(".hover");
				if($chk(current)){
					current.removeClass("hover");
					if(e.key=='down'){
						if($chk(current.getNext("li"))) current.getNext("li").addClass("hover");
						else list.getFirst("li").addClass("hover");
					}
					else {
						if($chk(current.getPrevious("li"))) current.getPrevious("li").addClass("hover");
						else list.getLast("li").addClass("hover");
					}
				} else {
					if(e.key=='down') list.getFirst("li").addClass("hover");
					else list.getLast("li").addClass("hover");
				}

			}
		});
		$("membersSearchBoxInput").addEvent("keyup", function(e){
			(function(){ ADC.processMembersSearchBox(); }).delay(100);
		});
		$("membersSearchBoxInput").addEvent("click", function(e){
			(function(){ ADC.processMembersSearchBox(); }).delay(100);
		});
		$("membersSearchBoxInput").addEvent("blur", function(e){
			(function(){
				ADC.membersSearchBoxResults_Slide.slideOut();
				ADC.membersSearchBoxRequest_SlideDone = false;
			}).delay(200);
		});

	},
	
	processMembersSearchBox: function(){
			ADC.membersSearchBoxRequest.data.query = $("membersSearchBoxInput").get("value");
			if(ADC.membersSearchBoxRequest.data.query == ""){
				ADC.membersSearchBoxResults_Slide.slideOut();
				ADC.membersSearchBoxRequest_SlideDone = false;
			} else if(ADC.membersSearchBoxRequest.data.query != ADC.membersSearchBoxRequest.data.previousQuery){
				ADC.membersSearchBoxRequest.send();
				ADC.membersSearchBoxRequest.data.previousQuery = ADC.membersSearchBoxRequest.data.query;
			} else {
				if(!ADC.membersSearchBoxRequest_SlideDone){
					ADC.membersSearchBoxRequest_SlideDone = true;
					ADC.membersSearchBoxResults_Slide.slideIn();
				} else {
					ADC.membersSearchBoxResults_Slide.show();
				}
			}
	},

	processMembersSearchBoxResults: function(results){
		if($chk(results)){
			$("membersSearchBoxResults").getElements("ul li").addClass("remove");
			var list = $("membersSearchBoxResults").getElement("ul");
			var lastFound = undefined;
			results.each(function(item,index){
				uid = "membersSearchBoxResult_"+item.uid;
				if($chk(list.getElement("li#"+uid))){
					lastFound = list.getElement("li#"+uid);
					lastFound.removeClass("remove");
				} else {
					var newItem = new Element('li').set({'html':'<a href="'+item.url+'">'+item.label+'</a>','id':uid});
					newItem.addEvent('mouseover',function(){
						$("membersSearchBoxResults").getElements("ul li").removeClass("hover");
						this.addClass("hover");
					});
					newItem.addEvent('click',function(){
						var href = this.getElement("a").get("href");
						if($chk(href)){
							$("membersSearchBoxForm").set("action", href);
							$("membersSearchBoxForm").submit();
						}				
					});
					if($chk(lastFound)){
						newItem.inject(lastFound,'after');
						lastFound = newItem;
					} else {
						newItem.inject(list,'top');
						lastFound = newItem;
					}
				}
			});
			$("membersSearchBoxResults").getElements("ul li.remove").destroy();
			
			if(!ADC.membersSearchBoxRequest_SlideDone){
				ADC.membersSearchBoxRequest_SlideDone = true;
				ADC.membersSearchBoxResults_Slide.slideIn();
			} else {
				ADC.membersSearchBoxResults_Slide.show();
			}
			
		} else {					
			ADC.membersSearchBoxResults_SlideDone = false;
			ADC.membersSearchBoxResults_Slide.slideOut();
			$("membersSearchBoxResults").getElements("ul li").destroy();
		}
	}

});