(function(g){var a;var f="\n";g.fn.indent=function(){a=this;if(!g.browser.opera){a.keydown(d)}else{a.keypress(d)}if(g.browser.msie||g.browser.opera){f="\r\n"}return this};function d(t){if(t.keyCode==13){var j=b().start;var y=a[0].value.substring(0,j).lastIndexOf("\n");y=(y==-1?0:y+1);var p=a[0].value.substring(y,j).match(/^\t+/g);if(p!=null){t.preventDefault();var l=e();var u=f;for(var n=0;n<p[0].length;n++){u+="\t"}a[0].value=a[0].value.substring(0,j)+u+a[0].value.substring(j);h(j+u.length,j+u.length);c(l)}}else{if(t.keyCode==9){t.preventDefault();var l=e();var q=b();if(q.start!=q.end&&a[0].value.substr(q.start,1)=="\n"){q.start++}var p=a[0].value.substring(q.start,q.end).match(/\n/g);if(p!=null){var s=a[0].value.substring(0,q.start).lastIndexOf(f);var x=(s!=-1?s:0);if(!t.shiftKey){var k=a[0].value.substring(x,q.end).replace(/\n/g,"\n\t");a[0].value=(s==-1?"\t":"")+a[0].value.substring(0,x)+k+a[0].value.substring(q.end);h(q.start+1,q.end+p.length+1)}else{var n=(a[0].value.substr((s!=-1?s+f.length:0),1)=="\t"?1:0);var r=a[0].value.substring(x,q.end).match(/\n\t/g,"\n");if(s==-1&&a[0].value.substr(0,1)=="\t"){a[0].value=a[0].value.substr(1);r.push(0)}var k=a[0].value.substring(x,q.end).replace(/\n\t/g,"\n");a[0].value=a[0].value.substring(0,x)+k+a[0].value.substring(q.end);h(q.start-n,q.end-(r!=null?r.length:0))}}else{if(!t.shiftKey){a[0].value=a[0].value.substring(0,q.start)+"\t"+a[0].value.substring(q.start);h(q.start+1,q.start+1)}else{var w=a[0].value.substring(0,q.start).lastIndexOf("\n");var v=(w==-1?0:w);var m=a[0].value.substring(v+1).indexOf("\n");if(m==-1){m=a[0].value.length}else{m+=v+1}if(w==-1){var o=a[0].value.substring(v,m).match(/^\t/);var k=a[0].value.substring(v,m).replace(/^\t/,"")}else{var o=a[0].value.substring(v,m).match(/\n\t/);var k=a[0].value.substring(v,m).replace(/\n\t/,"\n")}a[0].value=a[0].value.substring(0,v)+k+a[0].value.substring(m);if(o!=null){h(q.start-(q.start-1>w?1:0),q.end-((q.start-1>w||q.start!=q.end)?1:0))}}}c(l)}}}function e(){return{scrollTop:a.scrollTop(),scrollHeight:a[0].scrollHeight}}function c(i){a.scrollTop(i.scrollTop+a[0].scrollHeight-i.scrollHeight)}function h(m,j){if(!g.browser.msie){a[0].setSelectionRange(m,j);a.focus()}else{var i=a[0].value.substring(0,m).match(/\r/g);i=(i!=null?i.length:0);var l=a[0].value.substring(m,j).match(/\r/g);l=(l!=null?l.length:0);var k=a[0].createTextRange();k.collapse(true);k.moveStart("character",m-i);k.moveEnd("character",j-m-l);k.select()}}function b(){if(!g.browser.msie){return{start:a[0].selectionStart,end:a[0].selectionEnd}}else{var t=document.selection.createRange().duplicate();var m=document.body.createTextRange();m.moveToElementText(a[0]);m.setEndPoint("EndToStart",t);var k=document.body.createTextRange();k.moveToElementText(a[0]);k.setEndPoint("StartToEnd",t);var o=false,j=false,s=false;var q,n,r,i,p,l;q=n=m.text;r=i=t.text;p=l=k.text;do{if(!o){if(m.compareEndPoints("StartToEnd",m)==0){o=true}else{m.moveEnd("character",-1);if(m.text==q){n+="\r\n"}else{o=true}}}if(!j){if(t.compareEndPoints("StartToEnd",t)==0){j=true}else{t.moveEnd("character",-1);if(t.text==r){i+="\r\n"}else{j=true}}}if(!s){if(k.compareEndPoints("StartToEnd",k)==0){s=true}else{k.moveEnd("character",-1);if(k.text==p){l+="\r\n"}else{s=true}}}}while((!o||!j||!s));return{start:n.length,end:n.length+i.length}}}})(jQuery);