(function($$$$){function $process_keypress$$($o$$,$shft$$,$options$$){var $scrollTo$$=$o$$.scrollTop;if($o$$.setSelectionRange)$gecko_tab$$($o$$,$shft$$,$options$$);else document.selection&&$ie_tab$$($o$$,$shft$$,$options$$);$o$$.scrollTop=$scrollTo$$}function $gecko_tab$$($o$$,$shft$$,$options$$){var $ss$$=$o$$.selectionStart,$es$$=$o$$.selectionEnd;if($ss$$==$es$$)if($shft$$)if("\t"==$o$$.value.substring($ss$$-$options$$.tabString.length,$ss$$)){$o$$.value=$o$$.value.substring(0,$ss$$-$options$$.tabString.length)+
$o$$.value.substring($ss$$);$o$$.focus();$o$$.setSelectionRange($ss$$-$options$$.tabString.length,$ss$$-$options$$.tabString.length)}else{if("\t"==$o$$.value.substring($ss$$,$ss$$+$options$$.tabString.length)){$o$$.value=$o$$.value.substring(0,$ss$$)+$o$$.value.substring($ss$$+$options$$.tabString.length);$o$$.focus();$o$$.setSelectionRange($ss$$,$ss$$)}}else{$o$$.value=$o$$.value.substring(0,$ss$$)+$options$$.tabString+$o$$.value.substring($ss$$);$o$$.focus();$o$$.setSelectionRange($ss$$+$options$$.tabString.length,
$ss$$+$options$$.tabString.length)}else{var $lines_modifier$$=$o$$.value.split("\n"),$indices$$=[],$pos_sl$$=0,$el$$=0;for(var $i$$ in $lines_modifier$$){$el$$=$pos_sl$$+$lines_modifier$$[$i$$].length;$indices$$.push({start:$pos_sl$$,end:$el$$,selected:$pos_sl$$<=$ss$$&&$el$$>$ss$$||$el$$>=$es$$&&$pos_sl$$<$es$$||$pos_sl$$>$ss$$&&$el$$<$es$$});$pos_sl$$=$el$$+1}$lines_modifier$$=0;for($i$$ in $indices$$)if($indices$$[$i$$].selected){$pos_sl$$=$indices$$[$i$$].start+$lines_modifier$$;if($shft$$&&$options$$.tabString==
$o$$.value.substring($pos_sl$$,$pos_sl$$+$options$$.tabString.length)){$o$$.value=$o$$.value.substring(0,$pos_sl$$)+$o$$.value.substring($pos_sl$$+$options$$.tabString.length);$lines_modifier$$-=$options$$.tabString.length}else if(!$shft$$){$o$$.value=$o$$.value.substring(0,$pos_sl$$)+$options$$.tabString+$o$$.value.substring($pos_sl$$);$lines_modifier$$+=$options$$.tabString.length}}$o$$.focus();$o$$.setSelectionRange($ss$$+($lines_modifier$$>0?$options$$.tabString.length:$lines_modifier$$<0?-$options$$.tabString.length:
0),$es$$+$lines_modifier$$)}}function $ie_tab$$($bookmark_o$$,$shft$$,$new_range_options$$){var $range$$=document.selection.createRange();if($bookmark_o$$==$range$$.parentElement())if(""==$range$$.text){if($shft$$){$bookmark_o$$=$range$$.getBookmark();$range$$.moveStart("character",-$new_range_options$$.tabString.length);if($new_range_options$$.tabString==$range$$.text)$range$$.text="";else{$range$$.moveToBookmark($bookmark_o$$);$range$$.moveEnd("character",$new_range_options$$.tabString.length);
if($new_range_options$$.tabString==$range$$.text)$range$$.text=""}$range$$.collapse(true)}else{$range$$.text=$new_range_options$$.tabString;$range$$.collapse(false)}$range$$.select()}else{var $before_range_selection_text$$=$range$$.text,$selection_len$$=$before_range_selection_text$$.length,$selection_arr$$=$before_range_selection_text$$.split("\r\n");$before_range_selection_text$$=document.body.createTextRange();$before_range_selection_text$$.moveToElementText($bookmark_o$$);$before_range_selection_text$$.setEndPoint("EndToStart",
$range$$);var $before_len_before_text$$=$before_range_selection_text$$.text,$before_arr$$=$before_len_before_text$$.split("\r\n");$before_len_before_text$$=$before_len_before_text$$.length;var $after_range_after_text$$=document.body.createTextRange();$after_range_after_text$$.moveToElementText($bookmark_o$$);$after_range_after_text$$.setEndPoint("StartToEnd",$range$$);$after_range_after_text$$=$after_range_after_text$$.text;var $check_html_end_range$$=document.body.createTextRange();$check_html_end_range$$.moveToElementText($bookmark_o$$);
$check_html_end_range$$.setEndPoint("StartToEnd",$before_range_selection_text$$);var $end_text_i$$=$check_html_end_range$$.text;$check_html_end_range$$=$$$$($bookmark_o$$).html();$$$$("#r3").text($before_len_before_text$$+" + "+$selection_len$$+" + "+$after_range_after_text$$.length+" = "+$check_html_end_range$$.length);if($before_len_before_text$$+$end_text_i$$.length<$check_html_end_range$$.length){$before_arr$$.push("");$before_len_before_text$$+=2;if($shft$$&&$new_range_options$$.tabString==$selection_arr$$[0].substring(0,
$new_range_options$$.tabString.length))$selection_arr$$[0]=$selection_arr$$[0].substring($new_range_options$$.tabString.length);else $shft$$||($selection_arr$$[0]=$new_range_options$$.tabString+$selection_arr$$[0])}else if($shft$$&&$new_range_options$$.tabString==$before_arr$$[$before_arr$$.length-1].substring(0,$new_range_options$$.tabString.length))$before_arr$$[$before_arr$$.length-1]=$before_arr$$[$before_arr$$.length-1].substring($new_range_options$$.tabString.length);else $shft$$||($before_arr$$[$before_arr$$.length-
1]=$new_range_options$$.tabString+$before_arr$$[$before_arr$$.length-1]);for($end_text_i$$=1;$end_text_i$$<$selection_arr$$.length;$end_text_i$$++)if($shft$$&&$new_range_options$$.tabString==$selection_arr$$[$end_text_i$$].substring(0,$new_range_options$$.tabString.length))$selection_arr$$[$end_text_i$$]=$selection_arr$$[$end_text_i$$].substring($new_range_options$$.tabString.length);else $shft$$||($selection_arr$$[$end_text_i$$]=$new_range_options$$.tabString+$selection_arr$$[$end_text_i$$]);if(1==
$before_arr$$.length&&0==$before_len_before_text$$)if($shft$$&&$new_range_options$$.tabString==$selection_arr$$[0].substring(0,$new_range_options$$.tabString.length))$selection_arr$$[0]=$selection_arr$$[0].substring($new_range_options$$.tabString.length);else $shft$$||($selection_arr$$[0]=$new_range_options$$.tabString+$selection_arr$$[0]);$before_len_before_text$$+$selection_len$$+$after_range_after_text$$.length<$check_html_end_range$$.length&&$selection_arr$$.push("");$before_range_selection_text$$.text=
$before_arr$$.join("\r\n");$range$$.text=$selection_arr$$.join("\r\n");$new_range_options$$=document.body.createTextRange();$new_range_options$$.moveToElementText($bookmark_o$$);0<$before_len_before_text$$?$new_range_options$$.setEndPoint("StartToEnd",$before_range_selection_text$$):$new_range_options$$.setEndPoint("StartToStart",$before_range_selection_text$$);$new_range_options$$.setEndPoint("EndToEnd",$range$$);$new_range_options$$.select()}}$$$$.fn.tabby=function $$$$$$fn$tabby$($options$$){var $opts$$=
$$$$.extend({},$$$$.fn.tabby.defaults,$options$$),$pressed$$=$$$$.fn.tabby.pressed;return this.each(function(){$this=$$$$(this);var $options$$=$$$$.meta?$$$$.extend({},$opts$$,$this.data()):$opts$$;$this.bind("keydown",function($e$$){var $kc$$=$$$$.fn.tabby.catch_kc($e$$);if(16==$kc$$)$pressed$$.shft=true;if(17==$kc$$){$pressed$$.ctrl=true;setTimeout("$.fn.tabby.pressed.ctrl = false;",1E3)}if(18==$kc$$){$pressed$$.alt=true;setTimeout("$.fn.tabby.pressed.alt = false;",1E3)}if(9==$kc$$&&!$pressed$$.ctrl&&
!$pressed$$.alt){$pressed$$.last=$kc$$;setTimeout("$.fn.tabby.pressed.last = null;",0);$process_keypress$$($$$$($e$$.target).get(0),$pressed$$.shft,$options$$);return false}}).bind("keyup",function($e$$){if(16==$$$$.fn.tabby.catch_kc($e$$))$pressed$$.shft=false}).bind("blur",function($e$$){9==$pressed$$.last&&$$$$($e$$.target).one("focus",function(){$pressed$$.last=null}).get(0).focus()})})};$$$$.fn.tabby.catch_kc=function $$$$$$fn$tabby$catch_kc$($e$$){return $e$$.keyCode?$e$$.keyCode:$e$$.charCode?
$e$$.charCode:$e$$.which};$$$$.fn.tabby.pressed={shft:false,ctrl:false,alt:false,last:null};$$$$.fn.tabby.defaults={tabString:String.fromCharCode(9)}})(jQuery);
