// CAPXOUS AutoComplete 1.2.5 (20061125020437)
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;
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 o.owner&&o.key&&!o.key.indexOf(CAPXOUS.h(o.owner));
			  },
			  w:function(){
//				  return"<br/><a style='font-size:10px !important;display:inline !important;color:#000 !important;background:#fff !important;visibility:visible !important;text-indent:0px !important; text-decoration:underline;' href='http://capxous.com#powered'>Powered&nbsp;By&nbsp;CAPXOUS</a>";
				  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,complete: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._request=this.request.bind(this);
		this.__focus=this._focus.bind(this);
		var t=this.text;
		Event.observe(t,'keydown',this._k);
		Event.observe(t,'keyup',this._k);
		Event.observe(t,'dblclick',this._request);
		Event.observe(t,'focus',this.__focus);
		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));
			}
		},
		ajaxpro:function(text,b){
			if(this.latestAjaxPro==b){
				this.update.innerHTML=text.value;this.o();
			}
		},
		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);
		},
		_focus:function(){
			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();
		},
		e:function(event){
			var c=event.keyCode;
			if(c==38||c==40){
				if(this.complete){
					(c==38)?this.up():this.down();
					this.s();
				};
			};
			if(c==33||c==34){
				if(this.complete)(c==33)?this.page('page_up'):this.page('page_down');
			};
			if(c==27)this.hide();
			if(c==38||c==40||c==33||c==34||c==27){Event.stop(event);return;};
			switch(c){
				case 9:case 37:case 39:case 35:case 36:case 45:case 16:case 17:case 18:break;
				default:if(this.timeout!=0)clearTimeout(this.timeout);this.c();
				setTimeout(function(){
									this.value=this.text.value;
									this.latestQuery=this.value.substr(this.indexOfLatestQuery());
									this.timeout=setTimeout(this._request,this.options.frequency*1000);
								}.bind(this),10);
			}
		},
		c:function(){
			if(this.latest)this.latest.transport.abort();
		},
		k:function(event){
			var c=event.keyCode;
			if(c==9){
				if(event.type=='keydown'&&this.visible)this.z();return;
			};
			if(c==13){
				Event.stop(event);
				if(event.type=='keyup'){
					if(this.latestKeyCode==13&&this.latestType=='keydown'){
						this.visible?this.z():this.request();
					}else{
						this.request();
					}
				}
			};
			this.latestType=event.type;this.latestKeyCode=event.keyCode;
			if(event.type=='keydown'&&c!=13)this.e(event);
		},
		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;
//aqui
//alert(z(ca.y)+z(ca.h)+z(c.u)+z(c.prototype.initialize));
//			if(this.getItem()&&(z(ca.y)+z(ca.w)+z(ca.h)+z(c.u)+z(c.prototype.initialize)==3537)){
			if(this.getItem()&&(z(ca.y)+621+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)
		};
		if(this.onchange){
			setTimeout(function(){
								this.onchange.bind(this.text)();
							}.bind(this),10);
			}
		};
		this.stop();
	},
	getItem:function(){
		return this.items?this.items[this.i]:null;
	},
	focus:function(i){
		if(!this.complete)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(){
	var l=this.latestQuery?this.latestQuery.length:this.text.value.length;
	if(!l)this.onReset();
	return l>=this.options.minChars;
},
request:function(url){
	if(typeof url!='string')url=false;
	if(this.status=='on'&&this.preRequest()){
		if(!this.pro){
			this.getURL=new Function(CAPXOUS.b(this.getURL.toString()).replace('CAPXOUS.AjaxPro','this.ajaxpro.bind(this), null, function() { this.doStateChange() }, null, null, function(a, b) { if (a == 0) this.latestAjaxPro = b; }.bind(this)')).bind(this);
			this.pro=true;
		};
		if(url)this.onLoading(true);
		else this.onLoading();
		var _url=this.getURL();
		if(typeof _url=='string'){
			if(url){
				var loc=location.protocol+'//'+location.host+location.pathname;
				if((url.charAt(0)=='?')||((url.indexOf(loc)==0)&&(url.charAt(loc.length)=='?'))){
					if(url.charAt(0)!='?')url=url.substr(loc.length);_url+='&'+url.substr(1);}
					else{_url=url;};
				};
				this.url=_url=encodeURI(_url);
				this.latest=new Ajax.Updater(this.buffer,_url,{
											 method:'get',onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)
									});
			}
		}else this.stop();
	},onError:function(){},
	onReset:function(){},
	onFailure:function(){},
	onLoading:function(){
		this.complete=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.complete=true;this.down();this.s();this.stopIndicator();
	},
	d:function(){
		var tx=this.latest.transport;
		if((this.status=='on')&&(tx==arguments[0])){
			if(this.latest.url!=this.url)return;
			this.complete=true;
			try{if((typeof tx.status!="unknown")&&this.latest.responseIsSuccess()){
				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;
//aqui
//alert(z(ca.y)+z(ca.w)+z(ca.h)+z(c.u)+z(this.initialize));
//		if(z(ca.y)+z(ca.w)+z(ca.h)+z(c.u)+z(this.initialize)!=3592)return;
		if(z(ca.y)+633+z(ca.h)+z(c.u)+z(this.initialize)!=3592)return;
		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);
			setTimeout(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;
								};
								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),10);
		}
	},
	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);
	}
};

