(function(n){n.fn.editable=function(t,i){if("disable"==t){n(this).data("disabled.editable",!0);return}if("enable"==t){n(this).data("disabled.editable",!1);return}if("destroy"==t){n(this).unbind(n(this).data("event.editable")).removeData("disabled.editable").removeData("event.editable");return}var r=n.extend({},n.fn.editable.defaults,{target:t},i),o=n.editable.types[r.type].plugin||function(){},s=n.editable.types[r.type].submit||function(){},h=n.editable.types[r.type].buttons||n.editable.types.defaults.buttons,f=n.editable.types[r.type].content||n.editable.types.defaults.content,c=n.editable.types[r.type].element||n.editable.types.defaults.element,u=n.editable.types[r.type].reset||n.editable.types.defaults.reset,e=r.callback||function(){},l=r.onedit||function(){},a=r.onsubmit||function(){},v=r.onreset||function(){},y=r.onerror||u;return r.tooltip&&n(this).attr("title",r.tooltip),r.autowidth="auto"==r.width,r.autoheight="auto"==r.height,this.each(function(){var t=this,i=n(t).width(),p=n(t).height();n(this).data("event.editable",r.event);n.trim(n(this).html())||n(this).html(r.placeholder);n(this).bind(r.event,function(v){var w,b,d,g,k;!0!==n(this).data("disabled.editable")&&(t.editing||!1!==l.apply(this,[r,t])&&(v.preventDefault(),v.stopPropagation(),r.tooltip&&n(t).removeAttr("title"),0==n(t).width()?(r.width=i,r.height=p):(r.width!="none"&&(r.width=r.autowidth?n(t).width():r.width),r.height!="none"&&(r.height=r.autoheight?n(t).height():r.height)),n(this).html().toLowerCase().replace(/(;|")/g,"")==r.placeholder.toLowerCase().replace(/(;|")/g,"")&&n(this).html(""),t.editing=!0,t.revert=n(t).html(),n(t).html(""),w=n("
"),r.cssclass&&("inherit"==r.cssclass?w.attr("class",n(t).attr("class")):w.attr("class",r.cssclass)),r.style&&("inherit"==r.style?(w.attr("style",n(t).attr("style")),w.css("display",n(t).css("display"))):w.attr("style",r.style)),b=c.apply(w,[r,t]),r.loadurl?(k=setTimeout(function(){b.disabled=!0;f.apply(w,[r.loadtext,r,t])},100),g={},g[r.id]=t.id,n.isFunction(r.loaddata)?n.extend(g,r.loaddata.apply(t,[t.revert,r])):n.extend(g,r.loaddata),n.ajax({type:r.loadtype,url:r.loadurl,data:g,async:!1,success:function(n){window.clearTimeout(k);d=n;b.disabled=!1}})):r.data?(d=r.data,n.isFunction(r.data)&&(d=r.data.apply(t,[t.revert,r]))):d=t.revert,f.apply(w,[d,r,t]),b.attr("name",r.name),h.apply(w,[r,t]),n(t).append(w),o.apply(w,[r,t]),n(":input:visible:enabled:first",w).focus(),r.select&&b.select(),b.keydown(function(n){n.keyCode==27&&(n.preventDefault(),u.apply(w,[r,t]))}),"cancel"==r.onblur?b.blur(function(){k=setTimeout(function(){u.apply(w,[r,t])},500)}):"submit"==r.onblur?b.blur(function(){k=setTimeout(function(){w.submit()},200)}):n.isFunction(r.onblur)?b.blur(function(){r.onblur.apply(t,[b.val(),r])}):b.blur(function(){}),w.submit(function(i){var o,u,f;return k&&clearTimeout(k),i.preventDefault(),!1!==a.apply(w,[r,t])&&!1!==s.apply(w,[r,t])&&(n.isFunction(r.target)?(o=r.target.apply(t,[b.val(),r]),n(t).html(o),t.editing=!1,e.apply(t,[t.innerHTML,r]),n.trim(n(t).html())||n(t).html(r.placeholder)):(u={},u[r.name]=b.val(),u[r.id]=t.id,n.isFunction(r.submitdata)?n.extend(u,r.submitdata.apply(t,[t.revert,r])):n.extend(u,r.submitdata),"PUT"==r.method&&(u._method="put"),n(t).html(r.indicator),f={type:"POST",data:u,dataType:"html",url:r.target,success:function(i){f.dataType=="html"&&n(t).html(i);t.editing=!1;e.apply(t,[i,r]);n.trim(n(t).html())||n(t).html(r.placeholder)},error:function(n){y.apply(w,[r,t,n])}},n.extend(f,r.ajaxoptions),n.ajax(f))),n(t).attr("title",r.tooltip),!1})))});this.reset=function(i){this.editing&&!1!==v.apply(i,[r,t])&&(n(t).html(t.revert),t.editing=!1,n.trim(n(t).html())||n(t).html(r.placeholder),r.tooltip&&n(t).attr("title",r.tooltip))}})};n.editable={types:{defaults:{element:function(){var t=n('<\/input>');return n(this).append(t),t},content:function(t){n(":input:first",this).val(t)},reset:function(n,t){t.reset(this)},buttons:function(t,i){var f=this,r,u;t.submit&&(t.submit.match(/>$/)?r=n(t.submit).click(function(){r.attr("type")!="submit"&&f.submit()}):(r=n(''),r.html(t.submit)),n(this).append(r));t.cancel&&(t.cancel.match(/>$/)?u=n(t.cancel):(u=n(''),u.html(t.cancel)),n(this).append(u),n(u).click(function(){var r;return r=n.isFunction(n.editable.types[t.type].reset)?n.editable.types[t.type].reset:n.editable.types.defaults.reset,r.apply(f,[t,i]),!1}))}},text:{element:function(t){var i=n("");return t.width!="none"&&i.width(t.width),t.height!="none"&&i.height(t.height),i.attr("autocomplete","off"),n(this).append(i),i}},textarea:{element:function(t){var i=n("");return t.rows?i.attr("rows",t.rows):t.height!="none"&&i.height(t.height),t.cols?i.attr("cols",t.cols):t.width!="none"&&i.width(t.width),n(this).append(i),i}},select:{element:function(){var t=n("");return n(this).append(t),t},content:function(data,settings,original){var json,key,option;String==data.constructor?eval("var json = "+data):json=data;for(key in json)json.hasOwnProperty(key)&&"selected"!=key&&(option=n("").val(key).append(json[key]),n("select",this).append(option));n("select",this).children().each(function(){(n(this).val()==json.selected||n(this).text()==n.trim(original.revert))&&n(this).attr("selected","selected")})}}},addInputType:function(t,i){n.editable.types[t]=i}};n.fn.editable.defaults={name:"value",id:"id",type:"text",width:"auto",height:"auto",event:"click.editable",onblur:"cancel",loadtype:"GET",loadtext:"Loading...",placeholder:"Click to edit",loaddata:{},submitdata:{},ajaxoptions:{}}})(jQuery)