var CAPXOUS=new Object();
CAPXOUS.isKHTML=navigator.appVersion.match(/Konqueror|Safari|KHTML/);
CAPXOUS.isMoz=!CAPXOUS.isKHTML&&navigator.userAgent.indexOf('Mozilla/5.')==0;
CAPXOUS.isIE=navigator.userAgent.indexOf('MSIE')>1;
CAPXOUS.isMac=navigator.appVersion.match(/Mac/);
Object.extend(CAPXOUS,{
	h:function (o){
		var s=0;
		for(i=0;i<o.length;i++){
			s+=o.charCodeAt(i);
			
		};
		var base='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
		var h=base.substr(s&63,1);
		while(s>63){
			s>>=6;
			h=base.substr(s&63,1)+h;
			
		};
		return h;
		
	},y:function (o){
		return true;
		
	},w:function (){
		return "";
		
	},b:function (text){
		return text.substring(text.indexOf('{')+1,text.lastIndexOf('}'));
		
	},focus:function (t){
		t.focus();
		var l=t.value.length;
		if(CAPXOUS.isIE){
			var r=t.createTextRange();
			r.moveStart('character',l);
			r.moveEnd('character',l);
			r.select();
			
		}else {
			t.setSelectionRange(l,l);
			
		};
		
	}
});
CAPXOUS.AutoComplete=Class.create();
Object.extend(CAPXOUS.AutoComplete,{
	u:function (e){
		while(e=e.parentNode){
			if(e.style){
				if(e.style.overflow=='hidden')e.style.overflow='visible';
				if(e.style.tableLayout=='fixed')e.style.tableLayout='auto';
				
			}
		}
	},removeWatermark:function (name,key){
		var cls=CAPXOUS.AutoComplete;
		cls.owner=name+' AutoComplete';
		cls.key=key;
		
	},style:{
		wait:'CAPXOUS_AutoComplete_waiting'
	},findPopup:function (v){
		var e=Event.element(v);
		e=e?e:v;
		while(e&&e.parentNode&&!e.object)e=e.parentNode;
		if(e==null)return null;
		return e.parentNode?e:null;
		
	},I:function (e){
		return (e.nodeType==1)&&(e.getAttribute('onselect'));
		
	},F:function (v,p){
		var e=Event.element(v);
		while(e.parentNode&&(e!=p)&&(!CAPXOUS.AutoComplete.I(e)))e=e.parentNode;
		return (e.parentNode&&(e!=p))?e:null;
		
	},process:function (e,o){
		if(!Element.hasClassName(e,'usual')){
			var url;
			if(e.getAttribute('ajaxHref'))url=e.getAttribute('ajaxHref');
			else url=e.getAttribute('href');
			o.request(url);
			
		}
	},click:function (v){
		var cls=CAPXOUS.AutoComplete;
		var e=Event.element(v);
		var p=cls.findPopup(v);
		if(p){
			var t=p.object.text;
			CAPXOUS.focus(t);
			var s=cls.F(v,p);
			var o=p.object;
			if(s){
				o.i=s.getAttribute(cls.index);
				o.z();
				
			}else {
				while(e.parentNode&&(e!=p)&&(!e.tagName||e.tagName.toUpperCase()!='A'))e=e.parentNode;
				if(e.parentNode&&(e!=p))cls.process(e,o,v);
				
			}
		}else {
			cls.inst.each(function (i){
				if(i.text!=e&&i.update!=e)setTimeout(i.hide.bind(i),10);
				
			});
			
		}
	},mouseover:function (v){
		var cls=CAPXOUS.AutoComplete;
		var p=cls.findPopup(v);
		if(p){
			var s=cls.F(v,p);
			if(s)p.object.focus(s.getAttribute(cls.index));
			
		}
	},L:function (){
		var c=CAPXOUS;
		var ca=c.AutoComplete;
		var p=document.createElement('div');
		p.className=ca.style.wait;
		var s=p.style;
		s.display='inline';
		s.position='absolute';
		s.width=s.height=s.top=s.left='0px';
		document.body.appendChild(p);
		if(c.isIE)c.selfName=self.name;
		
	},index:'index',inst:new Array(),name:'',key:'',getStyle:function (e){
		if(!CAPXOUS.isKHTML&&document.defaultView&&document.defaultView.getComputedStyle)return document.defaultView.getComputedStyle(e,null);
		else return e.currentStyle||e.style;
		
	},getInt:function (s){
		var i=parseInt(s);
		return isNaN(i)?0:i;
		
	}
});
Event.observe(window,'load',CAPXOUS.AutoComplete.L);
CAPXOUS.AutoComplete.prototype={
	visible:false,$c:false,initialized:false,timeout:0,i:-1,latestQuery:'',initialize:function (text,f,options){
		text=$(text)?$(text):document.getElementsByName(text)[0];
		if((text==null)||(f==null)||(typeof f!='function'))return ;
		text.setAttribute('autocomplete','off');
		this.onchange=text.onchange;
		text.onchange=function (){
			
		};
		this.txtBox=this.text=text;
		this.setOptions(options);
		this.getURL=f;
		this.buffer=document.createElement('div');
		var p=document.createElement('div');
		p.object=this;
		Element.addClassName(p,'CAPXOUS_AutoComplete');
		var ps=p.style;
		ps.position='absolute';
		ps.top='-999px';
		ps.height='auto';
		Element.hide(p);
		this.update=p;
		var cls=CAPXOUS.AutoComplete;
		cls.inst.push(this);
		if(!CAPXOUS.y(cls)){
			new Insertion.After(this.text,CAPXOUS.w());
			cls.u(this.text);
			
		};
		this.cls=cls;
		this.r();
		
	},setOptions:function (options){
		this.options={
			width:'auto',frequency:0.4,minChars:1,delimChars:', '
		};
		Object.extend(this.options,options||{
			
		});
		
	},r:function (){
		this._k=this.k.bindAsEventListener(this);
		this.$r=this.request.bind(this);
		var t=this.text;
		if(CAPXOUS.isMac){
			t._ac=this;
			t.onkeypress=function (e){
				return !this._ac.$s;
				
			};
			
		};
		Event.observe(t,'keydown',this.st.bind(this));
		Event.observe(t,'keypress',this._k);
		Event.observe(t,'dblclick',this.$r);
		Event.observe(t,'focus',this.$f.bind(this));
		Event.observe(t,'blur',this.blur.bind(this));
		if(this.cls.inst.length==1){
			Event.observe(document,'click',this.cls.click);
			Event.observe(document,'mouseover',this.cls.mouseover);
			
		};
		var e=this.text;
		while(e=e.parentNode)if(e.style&&(e.style.overflow=='scroll'||e.style.overflow=='auto')){
			this.scrollable=this.scrollable?this.scrollable:e;
			Event.observe(e,'scroll',this.onScroll.bind(this));
			
		}
	},st:function (){
		this.status="on";
		this.$s=false;
		
	},onScroll:function (){
		var s=this.scrollable;
		if(s){
			var p=this.t();
			var o=Position.cumulativeOffset(s);
			if(p[1]>=o[1]&&p[1]<o[1]+s.offsetHeight&&p[0]>=o[0]&&p[0]<o[0]+s.offsetWidth&&this.visible)this.s();
			else this.hide();
			
		}
	},t:function (){
		var p=Position.page(this.text);
		return [p[0]+(document.documentElement.scrollLeft||document.body.scrollLeft),p[1]+(document.documentElement.scrollTop||document.body.scrollTop)];
		
	},indexOfLatestQuery:function (){
		var d=this.options.delimChars,v=this.text.value,i,j,k=0;
		for(i=v.length-1;i>=0;i--){
			for(j=0;j<d.length;j++)if(v.charAt(i)==d.charAt(j)){
				k=i+1;
				break;
				
			};
			if(k)break;
			
		};
		return k;
		
	},page:function (name){
		var e=$A(document.getElementsByClassName(name)).find(function (e){
			return this.cls.findPopup(e)==this.update;
			
		}.bind(this));
		if(e&&e.tagName&&e.tagName.toUpperCase()=='A')this.cls.process(e,this);
		
	},$f:function (){
		if(this.status!='on'){
			this.status='on';
			if(!this.visible&&this.text.value=='')this.request();
			
		}
	},blur:function (){
		if(!this.visible){
			this.status='off';
			setTimeout(function (){
				if(this.status=='off')this.stop();
				
			}.bind(this),10);
			
		}
	},stop:function (){
		this.c();
		this.stopIndicator();
		this.hide();
		
	},c:function (){
		if((this.latest)&&(this.latest.transport.readyState!=4))this.latest.transport.abort();
		
	},k:function (e){
		var c=e.keyCode;
		var t=e.type;
		if(c==9||c==13){
			if(this.visible||!this.$c){
				if(c==13){
					Event.stop(e);
					this.$s=true;
					
				};
				if(this.visible)this.z();
				
			};
			return ;
			
		};
		if(c==38||c==40){
			if(this.$c){
				(c==38)?this.up():this.down();
				this.s();
				
			};
			
		};
		if(c==33||c==34){
			if(this.$c)(c==33)?this.page('page_up'):this.page('page_down');
			
		};
		if(c==27)this.stop();
		if(c==38||c==40||c==33||c==34||c==27){
			Event.stop(e);
			return ;
			
		};
		switch(c){
			case 9:case 37:case 39:case 35:case 36:case 45:case 16:case 17:case 18:break;
			default:clearTimeout(this.timeout);
			this.c();
			setTimeout(function (){
				this.timeout=setTimeout(this.$r,this.options.frequency*1000);
				
			}.bind(this),10);
			
		}
	},z:function (){
		var z=function (s){
			s=CAPXOUS.b(s.toString ()).replace(new RegExp("[\\s\.{}();\\\"\\'\\\\/]","g"),'');
			var z=0;
			for(var i=0;i<s.length;i++)z=(z+s.charCodeAt(i))%1986;return z;
		};var c=this.cls;var ca=CAPXOUS;if(this.getItem()/*&&(z(ca.y)+z(ca.w)+z(ca.h)+z(c.u)+z(c.prototype.initialize)==3537)*/){
			try{
				eval(this.getItem().getAttribute('o'+'n'+'se'+'le'+'ct'));
				
			}catch(e){
				this.onError(e)
			};
			ca.focus(this.text);
			if(this.onchange){
				setTimeout(function (){
					this.onchange.bind(this.text)();
					
				}.bind(this),10);
				
			}
		};
		this.status='off';
		this.stop();
		
	},getItem:function (){
		return this.items?this.items[this.i]:null;
		
	},focus:function (i){
		if(!this.$c)return ;
		Element.removeClassName(this.getItem(),'current');
		this.i=i;
		Element.addClassName(this.getItem(),'current');
		try{
			var z=this.getItem().getAttribute('onfocus');
			if(CAPXOUS.isIE)z=CAPXOUS.b(z.toString ());
			eval(z);
			
		}catch(e){
			
		}
	},up:function (){
		if(this.i>-1)this.focus(this.i-1);
		
	},down:function (){
		if(this.i<this.items.length-1)this.focus(this.i+1);
		
	},preRequest:function (){
		this.value=this.text.value;
		this.latestQuery=this.value.substr(this.indexOfLatestQuery());
		var l=this.latestQuery?this.latestQuery.length:this.text.value.length;
		if(!l)this.onReset();
		return l>=this.options.minChars;
		
	},request:function (u){
		var z=typeof u!="string";
		if(z){
			u=this.getURL();
			if(u==undefined){
				this.stop();
				return ;
				
			}
		};
		if(this.status=='on'&&this.preRequest()){
			if(!z){
				var l=location;
				var loc=l.protocol+'//'+l.host+l.pathname;
				if((u.charAt(0)=='?')||((u.indexOf(loc)==0)&&(u.charAt(loc.length)=='?'))){
					if(u.charAt(0)!='?')u=u.substr(loc.length);
					u=this.$url+'&'+u.substr(1);
					
				};
				
			};
			this.onLoad();
			this.url=u=encodeURI(u);
			if(z)this.$url=this.url;
			this.latest=new Ajax.Updater(this.buffer,u,{
				method:'get',onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)
			});
			
		}else this.stop();
		
	},onError:function (){
		
	},onReset:function (){
		
	},onFailure:function (){
		
	},onLoad:function (){
		this.$c=false;
		this.i=-1;
		this.startIndicator();
		
	},onComplete:function (){
		setTimeout(this.d.bind(this,arguments[0]),10);
		
	},o:function (){
		if(!this.initialized){
			this.initialized=true;
			document.body.appendChild(this.update);
			
		};
		this.i=-1;
		this.items=new Array();
		if(CAPXOUS.isIE)this.update.innerHTML+="<img style='width:0px;height:0px;clear:both' align='right'/>";
		$A(this.update.getElementsByTagName('a')).each(function (a){
			if(!Element.hasClassName(a,'usual')){
				a.onclick=function (){
					return false;
					
				};
				
			};
			
		});
		$A(this.update.getElementsByTagName('*')).each(function (c){
			if(this.cls.I(c)){
				c.setAttribute(this.cls.index,this.items.length);
				Element.addClassName(c,'selectable');
				this.items.push(c);
				
			}
		}.bind(this));
		this.$c=true;
		this.down();
		this.s();
		this.stopIndicator();
		
	},d:function (){
		var l=this.latest;
		var tx=l.transport;
		if((this.status=='on')&&(tx==arguments[0])){
			if(this.latest.url!=this.url)return ;
			this.$c=true;
			if(!l.success)l.success=l.responseIsSuccess;
			try{
				if((typeof tx.status!="unknown")&&l.success()){
					var text=null;
					if((tx.responseXML)&&(tx.responseXML.documentElement)){
						var docE=tx.responseXML.documentElement;
						if(docE.nodeName=='string'){
							if(docE.text){
								text=docE.text;
								
							}else if(docE.textContent){
								text=docE.textContent;
								
							}else if(docE.firstChild.nodeValue){
								text=docE.firstChild.nodeValue;
								
							}
						}
					};
					if(text==null)text=this.buffer.innerHTML;
					this.update.innerHTML=text;
					
				}else {
					this.update.innerHTML='<div>'+tx.status+' '+(tx.statusText?tx.statusText:'')+'</div>';
					
				};
				this.o();
				
			}catch(e){
				
			};
			this.buffer.innerHTML='';
			
		};
		
	},offset:function (){
		var o=0;
		if(CAPXOUS.isMoz||CAPXOUS.isKHTML||(CAPXOUS.isIE&&(document.compatMode!='BackCompat'))){
			var bl='border-left-width';
			var br='border-right-width';
			var pl='padding-left';
			var pr='padding-right';
			var f=new Function('e','p','return CAPXOUS.AutoComplete.getInt(Element.getStyle(e, p));');
			o=f(this.update,bl)+f(this.update,br)+f(this.update,pl)+f(this.update,pr);
			
		};
		return o;
		
	},f:function (){
		if(!this.iframe){
			var i=document.createElement('iframe');
			i.src='javascript:false;';
			var is=i.style;
			is.filter="progid:DXImageTransform.Microsoft.Alpha(opacity = 50)";
			is.position='absolute';
			is.margin='0px';
			Element.hide(i);
			document.body.appendChild(i);
			this.iframe=i;
			
		};
		self.name=CAPXOUS.selfName;
		Position.clone(this.update,this.iframe);
		Element.show(this.iframe);
		
	},s:function (){
		this.status='on';
		var z=function (s){
			s=CAPXOUS.b(s.toString ()).replace(new RegExp("[\\s\.{}();\\\"\\'\\\\/]","g"),'');
			var z=0;
			for(var i=0;i<s.length;i++)z=(z+s.charCodeAt(i))%1985;return z;
		};var c=this.cls;var ca=CAPXOUS;var p=this.t();var th=this.text.offsetHeight;var tw=this.text.offsetWidth;if(this.options.width=='auto'){
			tw=tw-this.offset()+'px';
			
		}else {
			tw=this.options.width;
			
		};
		if(ca.isIE){
			if(this.update.filters.length==0)this.update.style.filter="filter: progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#c0c0c0', Positive='true')";
			
		};
		if(!this.visible)Element.setStyle(this.update,{
			top:'-999px',left:'-999px',width:tw,height:'auto'
		});
		if(this.status=='on'){
			Element.show(this.update);
			var o=function (){
				var ph=this.update.offsetHeight;
				var pt=p[1]+th;
				var of;
				if((Position.page(this.text)[1]+th+ph<=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight))||(p[1]-ph<0)){
					pt=p[1]+th;
					of=th;
					
				}else {
					pt=p[1]-ph;
					of=-ph;
					
				};
				if(this.status!='on')return ;
				Element.setStyle(this.update,{
					top:pt+'px',left:p[0]+'px',width:tw,height:'auto'
				});
				if(CAPXOUS.isIE)this.f();
				this.visible=true;
				
			}.bind(this);
			setTimeout(o,64);
			setTimeout(o,128);
			
		}
	},hide:function (){
		if(this.visible){
			Element.hide(this.update);
			if(this.iframe)Element.hide(this.iframe);
			this.visible=false;
			
		}
	},startIndicator:function (){
		Element.addClassName(this.text,this.cls.style.wait);
		
	},stopIndicator:function (){
		Element.removeClassName(this.text,this.cls.style.wait);
		
	}
};
var AutoComplete=CAPXOUS.AutoComplete;
try{
	var a="prototype.js";
	//var b="license.js";
	document.write("<scr"+"ipt src=\""+$A(document.getElementsByTagName("script")).find(function (script){
		return script.src.indexOf(a)>-1;
		
	}).src.replace(a,b)+"\"><\/scr"+"ipt>");
	
}catch(e){
	
};
