/* Copyright: Guillermo Rauch <http://devthought.com/> - Distributed under MIT - Keep this message! */
Element.implement({getCaretPosition:function(){if(this.createTextRange){var r=document.selection.createRange().duplicate();r.moveEnd("character",this.value.length);if(r.text===""){return this.value.length;}return this.value.lastIndexOf(r.text);}else{return this.selectionStart;}}});var ResizableTextbox=new Class({Implements:Options,options:{min:5,max:500,step:7},initialize:function(_2,_3){var _4=this;this.setOptions(_3);this.el=$(_2);this.width=this.el.offsetWidth;this.el.addEvents({"keydown":function(){this.store("rt-value",this.get("value").length);},"keyup":function(){var _5=_4.options.step*this.get("value").length;if(_5<=_4.options.min){_5=_4.width;}if(!(this.get("value").length==this.retrieve("rt-value")||_5<=_4.options.min||_5>=_4.options.max)){this.setStyle("width",_5);}}});}});var TextboxList=new Class({Implements:[Events,Options],options:{resizable:{},className:"bit",separator:"###",extrainputs:true,startinput:true,hideempty:true},initialize:function(_6,_7){this.setOptions(_7);this.element=$(_6).setStyle("display","none");this.bits=new Hash;this.events=new Hash;this.count=0;this.current=false;this.maininput=this.createInput({"class":"maininput"});this.holder=new Element("ul",{"class":"holder","events":{"click":function(e){e=new Event(e).stop();if(this.maininput!=this.current){this.focus(this.maininput);}}.bind(this)}}).inject(this.element,"before").adopt(this.maininput);this.makeResizable(this.maininput);this.setEvents();},setEvents:function(){document.addEvent(Browser.Engine.trident?"keydown":"keypress",function(e){if(!this.current){return;}if(this.current.retrieve("type")=="box"&&e.code==Event.Keys.backspace){new Event(e).stop();}}.bind(this));document.addEvents({"keyup":function(e){e=new Event(e).stop();if(!this.current){return;}switch(e.code){case Event.Keys.left:return this.move("left");case Event.Keys.right:return this.move("right");case Event.Keys.backspace:return this.moveDispose();}}.bind(this),"click":function(){this.fireEvent("onBlur").blur();}.bind(this)});},update:function(){this.element.set("value",this.bits.getValues().join(this.options.separator));return this;},add:function(_b,_c){var id=this.options.className+"-"+this.count++;var el=this.createBox($pick(_c,_b),{"id":id}).inject(this.current||this.maininput,"before");el.addEvent("click",function(e){e=new Event(e).stop();this.focus(el);}.bind(this));this.bits.set(id,_b);if(this.options.extrainputs&&(this.options.startinput||el.getPrevious())){this.addSmallInput(el,"before");}return el;},addSmallInput:function(el,_11){var _12=this.createInput({"class":"smallinput"}).inject(el,_11);_12.store("small",true);this.makeResizable(_12);if(this.options.hideempty){_12.setStyle("display","none");}return _12;},dispose:function(el){this.bits.remove(el.id);if(el.getPrevious().retrieve("small")){el.getPrevious().destroy();}if(this.current==el){this.focus(el.getNext());}if(el.retrieve("type")=="box"){this.fireEvent("onBoxDispose",el);}el.destroy();return this;},focus:function(el,_15){if(!this.current){this.fireEvent("onFocus",el);}else{if(this.current==el){return this;}}this.blur();el.addClass(this.options.className+"-"+el.retrieve("type")+"-focus");if(el.retrieve("small")){el.setStyle("display","block");}if(el.retrieve("type")=="input"){this.fireEvent("onInputFocus",el);if(!_15){this.callEvent(el.retrieve("input"),"focus");}}else{this.fireEvent("onBoxFocus",el);}this.current=el;return this;},blur:function(_16){if(!this.current){return this;}if(this.current.retrieve("type")=="input"){var _17=this.current.retrieve("input");if(!_16){this.callEvent(_17,"blur");}this.fireEvent("onInputBlur",_17);}else{this.fireEvent("onBoxBlur",this.current);}if(this.current.retrieve("small")&&!_17.get("value")&&this.options.hideempty){this.current.setStyle("display","none");}this.current.removeClass(this.options.className+"-"+this.current.retrieve("type")+"-focus");this.current=false;return this;},createBox:function(_18,_19){return new Element("li",$extend(_19,{"class":this.options.className+"-box"})).set("html",_18).store("type","box");},createInput:function(_1a){var li=new Element("li",{"class":this.options.className+"-input"});var el=new Element("input",$extend(_1a,{"type":"text","events":{"click":function(e){e=new Event(e).stop();},"focus":function(e){if(!this.isSelfEvent("focus")){this.focus(li,true);}}.bind(this),"blur":function(){if(!this.isSelfEvent("blur")){this.blur(true);}}.bind(this),"keydown":function(e){this.store("lastvalue",this.value).store("lastcaret",this.getCaretPosition());}}}));return li.store("type","input").store("input",el).adopt(el);},callEvent:function(el,_21){this.events.set(_21,el);el[_21]();},isSelfEvent:function(_22){return (this.events.get(_22))?!!this.events.remove(_22):false;},makeResizable:function(li){var el=li.retrieve("input");el.store("resizable",new ResizableTextbox(el,$extend(this.options.resizable,{min:el.offsetWidth,max:this.element.getStyle("width").toInt()})));return this;},checkInput:function(){var _25=this.current.retrieve("input");return (!_25.retrieve("lastvalue")||(_25.getCaretPosition()===0&&_25.retrieve("lastcaret")===0));},move:function(_26){var el=this.current["get"+(_26=="left"?"Previous":"Next")]();if(el&&(!this.current.retrieve("input")||((this.checkInput()||_26=="right")))){this.focus(el);}return this;},moveDispose:function(){if(this.current.retrieve("type")=="box"){return this.dispose(this.current);}if(this.checkInput()&&this.bits.getKeys().length&&this.current.getPrevious()){return this.focus(this.current.getPrevious());}}});