// requires jquery
	
$(document).ready(
	function(){		
		$('.richCodeEditor').keydown(
			function(e){
				this.textBeforeKey=this.innerText;
			}
		);
		
		$('.richCodeEditor').keyup(
			function(e){
				if(typeof(this.justAutoClosed)=='undefined'){
					this.justAutoClosed=false;
				}
				var textAfterKey=this.innerText;
				
				if(this.textBeforeKey&&(this.textBeforeKey.length>=textAfterKey.length)){
					this.justAutoClosed=false;
					return;
				}
				
				var strNearCursor = getStringNearCursor(-2,1,this /*send this for non-ie compatibility*/);
				var char2BeforeCursor = strNearCursor.charAt(0);
				var charBeforeCursor = strNearCursor.charAt(1);
				var charAfterCursor = strNearCursor.charAt(2);
				
				if(char2BeforeCursor == '\\') return;
				
				if(
					this.justAutoClosed &&
						(charBeforeCursor == '"' && charAfterCursor == '"' ||
						 charBeforeCursor == "'" && charAfterCursor == "'" ||
						 charBeforeCursor == ")" && charAfterCursor == ")" ||
						 charBeforeCursor == "]" && charAfterCursor == "]")
				){
					deleteStringNearCursor(0,1,this);
					this.justAutoClosed=false;
				}
				else{			
					this.justAutoClosed=true;
					// eger autoclose yapilmazsa, 
					// bu deger false yapilir 
					// (asagidaki switch'deki default'a bak)
					switch(charBeforeCursor){
						case '(':
							insertAfterCursor(')',this);
							break;
						case '[':
							insertAfterCursor(']',this);
							break;
						case '"':
						case "'":
							insertAfterCursor(charBeforeCursor,this);
							break;
						default:
							this.justAutoClosed=false;
							break;
					}
				}
				this.textBeforeKey=this.innerText; // shift veya alt kaldirildiginda bir ] veya ) daha koyuyordu, bunu onlemek icin		
			}
		);
	}
);
