var catchTab = new Class({
	initialize: function(id){
		var obj = this;
		$(id).addEvent( 'keydown', function(e){
			obj.tab(this, e);
		});
	},
	tab: function(textArea, evt) {
		if(evt.key == "tab"){
			evt.preventDefault();
			//internet explorer is Rtarded!
			if(Browser.Engine.trident) {
				var range = document.selection.createRange();
				range.text = '\t';
			}else{
				var start = textArea.selectionStart;
				var end = textArea.selectionEnd;
				var value = textArea.get('value');
				if (start!=end) {
					var lines = textArea.value.substring(start, end).split('\n');
					var lastI = lines.length;
					var tmpStr = '';
					lines.each(function(obj, key){
						tmpStr += '\t' + obj + (lastI != key+1 ? '\n' : '');
					}, this);
					textArea.set('value', value.substring(0, start) + tmpStr + value.substring(end, value.length));
					textArea.setSelectionRange(start, end+lastI);
				} else {
					textArea.set('value', value.substring(0, start) + '\t' + value.substring(end, value.length));
					start++;
					textArea.setSelectionRange(start, start);
				}
			}
		}
	}
});	
window.addEvent("domready",function(){	
	$$('textarea.tab').each(function(el) {
		id = el.id;
		if (id && id != '') {
			new catchTab(id);
		}
	})
	
});
