/**
 * Inline editor feature for RightJS (http://rightjs.org/ui/in-edit)
 *
 * Copyright (C) 2009-2010 Nikolay V. Nemshilov
 */
var InEdit=new Class(Observer,{extend:{EVENTS:$w('show hide send update'),Options:{url:null,name:'text',method:'put',type:'text',toggle:null,update:true,Xhr:{}},i18n:{save:'Save',cancel:'Cancel'},current:null},initialize:function(e,o){this.setOptions(o);this.element=$(e);this.build()},show:function(){if(InEdit.current!==this){if(InEdit.current)InEdit.current.hide();this.oldContent=this.element.innerHTML;if(!['file','password'].include(this.options.type))this.field.value=this.oldContent;this.element.clean().insert(this.form);this.spinner.hide();this.submit.show();if(this.options.toggle)$(this.options.toggle).hide()}if(this.options.type!='file')this.field.focus();InEdit.current=this;return this.fire('show',this)},hide:function(){this.element.innerHTML=this.oldContent;if(this.xhr)this.xhr.cancel();return this.finish()},send:function(){this.spinner.show().resize(this.submit.sizes());this.submit.hide();this.xhr=new Xhr(this.options.url,Object.merge(this.options.Xhr,{method:this.options.method,spinner:this.spinner,onComplete:this.update.bind(this)})).send(this.form);return this.fire('send',this)},finish:function(){if(this.options.toggle)this.options.toggle.show();InEdit.current=null;return this.fire('hide',this)},update:function(){if(this.options.update){this.element.update(this.xhr.text);this.fire('update',this)}this.xhr=null;this.finish()},build:function(){this.field=this.buildField();this.spinner=this.buildSpinner();this.submit=$E('input',{type:'submit','class':'right-in-edit-submit',value:this.constructor.i18n.save});this.cancel=$E('a',{href:'','class':'right-in-edit-cancel',html:this.constructor.i18n.cancel});this.form=$E('form',{'class':'right-in-edit',action:this.options.url}).insert([this.field,this.spinner,this.submit,this.cancel]);this.form.onSubmit(function(a){a.stop();this.send()}.bind(this));this.cancel.onClick(function(a){a.stop();this.hide()}.bind(this))},buildField:function(){return(this.options.type=='textarea'?$E('textarea'):$E('input',{type:this.options.type})).addClass('right-in-edit-field').set('name',this.options.name)},buildSpinner:function(){var s=$E('div',{'class':'right-in-edit-spinner','html':'<div class="glow"></div><div></div><div></div>'});(function(){if(s.firstChild)s.insertBefore(s.lastChild,s.firstChild)}).periodical(400);return s}});document.onKeydown(function(e){if(e.keyCode==27&&InEdit.current)InEdit.current.hide()});Element.include({inEdit:function(o){return new InEdit(this,o).show()}});document.write("<style type=\"text/css\">form.right-in-edit,*.right-in-edit-field,*.right-in-edit-submit,*.right-in-edit-cancel,*.right-in-edit-spinner,*.right-in-edit-spinner div{margin:0;padding:0}form.right-in-edit,*.right-in-edit-spinner,*.right-in-edit-spinner div{display:inline-block;*display:inline;*zoom:1;border:none;background:none}textarea.right-in-edit-field{width:100%;margin-bottom:.5em}*.right-in-edit-field,*.right-in-edit-submit,*.right-in-edit-spinner{margin-right:.2em}*.right-in-edit-spinner{background:#EEE;border:1px solid #DDD;-moz-border-radius:.2em;-webkit-border-radius:.2em;text-align:center;line-height:100%}*.right-in-edit-spinner div{width:.3em;height:.7em;margin-top:.3em;background:#BBB;margin-right:2px;-moz-border-radius:.1em;-webkit-border-radius:.1em}*.right-in-edit-spinner div.glow{background:#777}</style>");