go.dadynamic  =  new ( function(){
	
	// Здесь живут комбинации + действия над ними + необходимость/ненужность контрола
	//Формат хранения:  {'ASCI_KEY': {'ctrl': 1/0, 'action': function}	
	this.combination  =  {};
	
	this.ctrl  =  false;
	
	// Устанавливаем кобинацию. Если комбинация устанавливается повторно затираем предидущую
	this.setCombination  =  (function(key, action, ctrl){
		this.combination[key]  =  {'action':action, 'ctrl': ctrl}
	});
	
	var _this = this;
	
	this.processingEvent  =  (function(key_event){
		
		if(!key_event) key_event  =  window.event;
		
		if(key_event.ctrlKey){
			_this.ctrl = 1;
		}
		

		var  combinations  =  _this.combination;

		if(combinations[key_event.keyCode]){
			
			var combination  =  combinations[key_event.keyCode];
			if( (combination['ctrl'] == 0) || ( (combination['ctrl'] == 1) && (_this.ctrl == 1) )){
				combination['action']();
			}
		}
	});
	
	this.ctrlAction  =  (function(key_event) {
		
		if(!key_event) key_event  =  window.event;
		
    	if(key_event.keyCode == 17){
			_this.ctrl  =  0;
		}
	});

});

// Перехватываем все происходящие действия
document.onkeydown  =  go.dadynamic.processingEvent;

// Сбрасываем флаг ctrl
document.onkeyup    =  go.dadynamic.ctrlAction;