(function(e,g){var h=Browser.ie6,c=new Class({Implements:Options,options:{top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},initialize:function(c,e){if(h){this.setOptions(e);this.element=g(c);var a=this.element.getFirst();(!a||!a.hasClass("bgiframe"))&&this.element.grab(document.createElement(this.render()),"top")}},toPx:function(c){return isFinite(c)?c+"px":c},render:function(){var c=this.options;return'<iframe class="bgiframe" frameborder="0" tabindex="-1" src="'+
c.src+'" style="display:block;position:absolute;z-index:-1;'+(c.opacity!==false?"filter:alpha(opacity='0');":"")+"top:"+(c.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":this.toPx(c.top))+";left:"+(c.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":this.toPx(c.left))+";width:"+(c.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":this.toPx(c.width))+";height:"+(c.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":
this.toPx(c.height))+';"/>'}});Element.implement("bgiframe",function(g){h&&new c(this,g);return this})})(this,document.id||$);
(function(e,g){var h=Browser;Object.append(Element.NativeEvents,{paste:2,input:2});Element.Events.paste={base:h.opera||h.firefox&&h.version<3?"input":"paste",condition:function(a){this.fireEvent("paste",a,1);return false}};Element.Events.keyrepeat={base:h.firefox||h.opera?"keypress":"keydown",condition:Function.from(true)};var c=e.Meio||{},j,m={9:1,16:1,17:1,18:1,224:1,91:1,37:1,38:1,39:1,40:1};c.Widget=new Class({initialize:function(){this.elements={}},addElement:function(a,b){this.elements[a]=b},
addEventToElement:function(a,b,d){this.elements[a].addEvent(b,d.bind(this))},addEventsToElement:function(a,b){for(var d in b)this.addEventToElement(a,d,b[d])},attach:function(){for(var a in this.elements)this.elements[a].attach()},detach:function(){for(var a in this.elements)this.elements[a].detach()},destroy:function(){for(var a in this.elements)this.elements[a]&&this.elements[a].destroy()}});c.Autocomplete=new Class({Extends:c.Widget,Implements:[Options,Events],options:{delay:200,minChars:0,cacheLength:20,
selectOnTab:true,maxVisibleItems:10,cacheType:"shared",filter:{},fieldOptions:{},listOptions:{},requestOptions:{},urlOptions:{}},initialize:function(a,b,d,i){this.parent();this.setOptions(d);this.active=0;this.filters=c.Autocomplete.Filter.get(this.options.filter);this.addElement("list",i||new c.Element.List(this.options.listOptions));this.addListEvents();this.addElement("field",new c.Element.Field(a,this.options.fieldOptions));this.addFieldEvents();this.addSelectEvents();this.attach();this.initCache();
this.initData(b)},addFieldEvents:function(){this.addEventsToElement("field",{beforeKeyrepeat:function(a){this.active=1;var b=a.key,d=this.elements.list;(b=="up"||b=="down"||b=="enter"&&d.showing)&&a.preventDefault()},delayedKeyrepeat:function(a){var a=a.key,b=this.elements.field;b.keyPressControl[a]=true;switch(a){case "up":case "down":this.focusItem(a);break;case "enter":this.setInputValue();break;case "tab":this.options.selectOnTab&&this.setInputValue();b.keyPressControl[a]=false;break;case "esc":this.elements.list.hide();
break;default:this.setupList()}this.oldInputedText=b.node.get("value")},keyup:function(a){var b=this.elements.field;m[a.code]||(b.keyPressControl[a.key]||this.setupList(),b.keyPressControl[a.key]=false)},focus:function(){this.active=1;var a=this.elements.list;a.focusedItem=null;a.positionNextTo(this.elements.field.node)},click:function(){++this.active>2&&!this.elements.list.showing&&this.forceSetupList()},blur:function(){this.active=0;var a=this.elements.list;a.shouldNotBlur?(a.shouldNotBlur=false,
a.focusedItem&&a.hide()):a.hide()},paste:function(){return this.setupList()}})},addListEvents:function(){this.addEventsToElement("list",{mousedown:function(a){this.active&&!a.dontHide&&this.setInputValue()}})},update:function(){var a=this.data,b=this.elements.list,d=a.getKey(),c=this.cache.get(d);if(c)a=c.html,this.itemsData=c.data;else{for(var a=a.get(),f=[],c=[],k=b.options.classes,g=this.inputedText,h=this.filters.formatItem,e,j=0,l=0;e=a[j++];)f.push('<li title="',e.url?e.url.replace(/"/g,"&quot;").replace(/'/g,
"&#39;"):"",'" data-index="',l,'" class="',e.identifier==""?k.subtitle:k.cursor+" "+(l%2?k.even:k.odd),'">',h.call(this,g,e,l),"</li>"),c.push(e),l++;a=f.join("");this.cache.set(d,{html:a,data:c});this.itemsData=c}b.focusedItem=null;this.fireEvent("deselect",[this.elements]);b.list.set("html",a);this.options.maxVisibleItems&&b.applyMaxHeight(this.options.maxVisibleItems)},setupList:function(){this.inputedText=this.elements.field.node.get("value");this.inputedText!==this.oldInputedText?this.forceSetupList(this.inputedText):
this.elements.list.hide();return true},forceSetupList:function(a){a=a||this.elements.field.node.get("value");if(a.length>=this.options.minChars)clearInterval(this.prepareTimer),this.prepareTimer=this.data.prepare.delay(this.options.delay,this.data,this.inputedText)},dataReady:function(){this.update();if(this.onUpdate)this.onUpdate(),this.onUpdate=null;var a=this.elements.list;a.list.get("html")?this.active&&a.show():(this.fireEvent("noItemToList",[this.elements]),a.hide())},setInputValue:function(){var a=
this.elements.list;if(a.focusedItem){var b=a.focusedItem.get("title");if(b)window.location.href=b}a.hide()},focusItem:function(a){var b=this.elements.list;b.showing?b.focusItem(a):(this.forceSetupList(),this.onUpdate=function(){b.focusItem(a)})},addSelectEvents:function(){this.addEvents({select:function(a){a.field.addClass("selected")},deselect:function(a){a.field.removeClass("selected")}})},initData:function(a){this.data=typeOf(a)=="string"?new c.Autocomplete.Data.Request(a,this.cache,this.elements.field,
this.options.requestOptions,this.options.urlOptions):new c.Autocomplete.Data(a,this.cache);this.data.addEvent("ready",this.dataReady.bind(this))},initCache:function(){var a=this.options.cacheLength;this.options.cacheType=="shared"?(this.cache=j,this.cache.setMaxLength(a)):this.cache=new c.Autocomplete.Cache(a)},refreshCache:function(a){this.cache.refresh();this.cache.setMaxLength(a||this.options.cacheLength)},refreshAll:function(a,b){this.refreshCache(a);this.data.refreshKey(b)}});c.Autocomplete.Select=
new Class({Extends:c.Autocomplete,options:{syncName:"id",valueField:null,valueFilter:function(a){return a.id}},initialize:function(a,b,d,c){this.parent(a,b,d,c);(this.valueField=g(this.options.valueField))&&this.syncWithValueField(b)},syncWithValueField:function(a){var b=this.getValueFromValueField();b&&this.options.syncName?(this.addParameter(a),this.addDataReadyEvent(b),this.data.prepare(this.elements.field.node.get("value"))):this.addValueFieldEvents()},addValueFieldEvents:function(){this.addEvents({select:function(a,
b){this.valueField.set("value",this.options.valueFilter.call(this,b))},deselect:function(){this.valueField.set("value","")}})},addParameter:function(){this.parameter={name:this.options.syncName,value:function(){return this.valueField.value}.bind(this)};this.data.url&&this.data.url.addParameter(this.parameter)},addDataReadyEvent:function(a){var b=this,d=function(){b.addValueFieldEvents();for(var c=this.get(),f=c.length;f--;)if(b.options.valueFilter.call(b,c[f])==a){var e=b.filters.formatMatch.call(b,
"",c[f],0);b.elements.field.node.set("value",e);b.fireEvent("select",[b.elements,c[f],e,f]);break}this.url&&this.url.removeParameter(b.parameter);this.removeEvent("ready",d)};this.data.addEvent("ready",d)},getValueFromValueField:function(){return this.valueField.get("value")}});c.Autocomplete.Select.One=new Class({Extends:c.Autocomplete.Select,options:{filter:{path:"text"}},initialize:function(a,b,d){this.select=g(a);this.replaceSelect();this.parent(this.field,this.createDataArray(),Object.merge(b||
{},{valueField:this.select,valueFilter:function(a){return a.value}}),d)},replaceSelect:function(){var a=this.select.getSelected()[0];this.field=new Element("input",{type:"text"});var b=a.get("value");(b||b===0)&&this.field.set("value",a.get("html"));this.select.setStyle("display","none");this.field.inject(this.select,"after")},createDataArray:function(){for(var a=this.select.options,b=[],d=0,c,f;c=a[d++];)((f=c.value)||f===0)&&b.push({value:f,text:c.innerHTML});return b},addValueFieldEvents:function(){this.addEvents({select:function(a,
b){var d=this.valueField.getElement('option[value="'+this.options.valueFilter.call(this,b)+'"]');if(d)d.selected=true},deselect:function(){var a=this.valueField.getSelected()[0];if(a)a.selected=false}})},getValueFromValueField:function(){return this.valueField.getSelected()[0].get("value")}});c.Element=new Class({Implements:[Events],initialize:function(a){this.setNode(a);this.createBoundEvents();this.attach()},setNode:function(a){this.node=a?g(a)||$$(a)[0]:this.render()},createBoundEvents:function(){this.bound=
{};this.boundEvents.each(function(a){this.bound[a]=function(b){this.fireEvent("before"+a.capitalize(),b);this[a]&&this[a](b);this.fireEvent(a,b);return true}.bind(this)},this)},attach:function(){for(var a in this.bound)this.node.addEvent(a,this.bound[a])},detach:function(){for(var a in this.bound)this.node.removeEvent(a,this.bound[a])},addClass:function(a){this.node.addClass(this.options.classes[a])},removeClass:function(a){this.node.removeClass(this.options.classes[a])},toElement:function(){},render:function(){}});
c.Element.Field=new Class({Extends:c.Element,Implements:[Options],options:{classes:{loading:"ma-loading",selected:"ma-selected"}},initialize:function(a,b){this.keyPressControl={};this.boundEvents="paste,focus,blur,click,keyup,keyrepeat".split(",");h.ie6&&this.boundEvents.push("keypress");this.setOptions(b);this.parent(a);g(e).addEvent("unload",function(){}.bind(this))},setNode:function(a){this.parent(a);this.node.set("autocomplete","off")},keyrepeat:function(a){clearInterval(this.keyrepeatTimer);
this.keyrepeatTimer=this._keyrepeat.delay(1,this,a)},_keyrepeat:function(a){this.fireEvent("delayedKeyrepeat",a)},destroy:function(){this.detach();this.node.removeAttribute("autocomplete")},keypress:function(a){a.key=="enter"&&this.bound.keyrepeat(a)}});c.Element.List=new Class({Extends:c.Element,Implements:[Options],options:{width:"field",classes:{container:"ma-container",hover:"ma-hover",odd:"ma-odd",even:"ma-even",subtitle:"ma-subtitle",cursor:"ma-cursor"}},initialize:function(a){this.boundEvents=
["mousedown","mouseover"];this.setOptions(a);this.parent();this.focusedItem=null},applyMaxHeight:function(a){var b=this.list.childNodes;if(a=b[a-1]||(b.length?b[b.length-1]:null)){a=g(a);for(b=2;b--;)this.node.setStyle("height",a.getCoordinates(this.list).bottom)}},mouseover:function(a){var a=this.getItemFromEvent(a),b=this.options.classes.hover;if(!a)return true;this.focusedItem&&this.focusedItem.removeClass(b);a.addClass(b);this.focusedItem=a;this.fireEvent("focusItem",[this.focusedItem])},mousedown:function(a){a.preventDefault();
this.shouldNotBlur=true;if(!(this.focusedItem=this.getItemFromEvent(a)))return a.dontHide=true;this.focusedItem.removeClass(this.options.classes.hover)},focusItem:function(a){var b=this.options.classes.hover,d;if(this.focusedItem){if(d=this.focusedItem[a=="up"?"getPrevious":"getNext"]())this.focusedItem.removeClass(b),d.addClass(b),this.focusedItem=d,this.scrollFocusedItem(a)}else if(d=this.list.getFirst())d.addClass(b),this.focusedItem=d},scrollFocusedItem:function(a){var b=this.focusedItem.getCoordinates(this.list),
d=this.node.scrollTop;if(a=="down"){if(a=b.bottom-this.node.getStyle("height").toInt(),a-d>0)this.node.scrollTop=a}else if(a=b.top,d&&d>a)this.node.scrollTop=a},getItemFromEvent:function(a){for(a=a.target;a&&a.tagName.toLowerCase()!="li";){if(a===this.node)return null;a=a.parentNode}return g(a)},render:function(){var a=new Element("div",{"class":this.options.classes.container,id:this.options.classes.container});a.bgiframe&&a.bgiframe({top:0,left:0});this.list=(new Element("ul")).inject(a);g(document.body).grab(a);
return a},positionNextTo:function(a){var b=this.options.width,d=this.node,c=a.getCoordinates();d.setStyle("width",b=="field"?a.getWidth().toInt()-d.getStyle("border-left-width").toInt()-d.getStyle("border-right-width").toInt():b);d.setPosition({x:c.left,y:c.bottom})},show:function(){this.node.scrollTop=0;this.node.setStyle("visibility","visible");this.showing=true},hide:function(){this.showing=false;this.node.setStyle("visibility","hidden")}});c.Autocomplete.Filter={filters:{},get:function(a){var b=
a.type,d=(a.path||"").split("."),a=b&&this.filters[b]?this.filters[b](this,d):a;return Object.merge(this.defaults(d),a)},define:function(a,b){this.filters[a]=b},defaults:function(a){var b=this;return{filter:function(d,c){return d?b._getValueFromKeys(c,a).test(RegExp(d.escapeRegExp(),"i")):true},formatMatch:function(d,c){return b._getValueFromKeys(c,a)},formatItem:function(c,i,f){if(c){var f=b._getValueFromKeys(i,a),e=f.replace(RegExp("("+c.escapeRegExp()+")","gi"),"<strong>$1</strong>");if(f==e){c=
c.clean().replace(RegExp("[()]","gi"),"").split(" ");for(f=0;f<c.length;f++)if(c[f].length>1||Number.from(c[f]))e=e.replace(RegExp("("+c[f].escapeRegExp()+")","gi"),"<strong>$1</strong>")}return i.identifier?"&bull; "+e:e}else return i.identifier?"&bull; "+b._getValueFromKeys(i,a):b._getValueFromKeys(i,a)}}},_getValueFromKeys:function(a,b){for(var c,e=a,f=0;c=b[f++];)e=e[c];return e}};c.Autocomplete.Filter.define("contains",function(){return{}});c.Autocomplete.Filter.define("startswith",function(a,
b){return{filter:function(c,e){return c?a._getValueFromKeys(e,b).test(RegExp("^"+c.escapeRegExp(),"i")):true}}});c.Autocomplete.Data=new Class({Implements:[Options,Events],initialize:function(a,b){this._cache=b;this.data=a;this.dataString=JSON.encode(this.data)},get:function(){return this.data},getKey:function(){return this.cachedKey},prepare:function(a){this.cachedKey=this.dataString+(a||"");this.fireEvent("ready")},cache:function(a,b){this._cache.set(a,b)},refreshKey:function(){}});c.Autocomplete.Data.Request=
new Class({Extends:c.Autocomplete.Data,options:{noCache:true,formatResponse:function(a){return a}},initialize:function(a,b,c,e,f){this.setOptions(e);this.rawUrl=a;this._cache=b;this.element=c;this.urlOptions=f;this.refreshKey();this.createRequest()},prepare:function(a){this.cachedKey=this.url.evaluate(a);this._cache.has(this.cachedKey)?this.fireEvent("ready"):this.request.send({url:this.cachedKey})},createRequest:function(){var a=this;this.request=new Request.JSON(this.options);this.request.addEvents({request:function(){a.element.addClass("loading")},
complete:function(){a.element.removeClass("loading")},success:function(b){a.data=a.options.formatResponse(b);a.fireEvent("ready")}})},refreshKey:function(a){a=Object.merge(this.urlOptions,{url:this.rawUrl},a||{});this.url=new c.Autocomplete.Data.Request.URL(a.url,a)}});c.Autocomplete.Data.Request.URL=new Class({Implements:[Options],options:{queryVarName:"q",extraParams:null,max:20},initialize:function(a,b){this.setOptions(b);this.url=this.rawUrl=a;this.url+=this.url.contains("?")?"&":"?";this.dynamicExtraParams=
[];for(var c=Array.from(this.options.extraParams),e=c.length;e--;)this.addParameter(c[e]);this.options.max&&this.addParameter("limit="+this.options.max)},evaluate:function(a){var a=(a||"").clean().replace(RegExp("[^a-zA-Z0-9 ]","gi"),""),b=this.dynamicExtraParams,c=[];c.push(this.options.queryVarName+"="+encodeURIComponent(a));for(a=b.length;a--;)c.push(encodeURIComponent(b[a].name)+"="+encodeURIComponent(Function.from(b[a].value)()));return this.url+c.join("&")},addParameter:function(a){a.nodeType==
1||typeOf(a.value)=="function"?this.dynamicExtraParams.push(a):this.url+=(typeOf(a)=="string"?a:encodeURIComponent(a.name)+"="+encodeURIComponent(a.value))+"&"},removeParameter:function(a){this.dynamicExtraParams.erase(a)}});c.Autocomplete.Cache=new Class({initialize:function(a){this.refresh();this.setMaxLength(a)},set:function(a,b){if(!this.cache[a]){if(this.getLength()>=this.maxLength){var c=this.pos.shift();this.cache[c]=null;delete this.cache[c]}this.cache[a]=b;this.pos.push(a)}return this},get:function(a){return this.cache[a||
""]||null},has:function(a){return!!this.get(a)},getLength:function(){return this.pos.length},refresh:function(){this.cache={};this.pos=[]},setMaxLength:function(a){this.maxLength=Math.max(a,1)}});j=new c.Autocomplete.Cache;e.Meio=c})(this,document.id||$);

