function preventSelection(element){
	  var preventSelection = false;

	  function addHandler(element, event, handler){
	    if (element.attachEvent)
	      element.attachEvent('on' + event, handler);
	    else
	      if (element.addEventListener)
	        element.addEventListener(event, handler, false);
	  }
	  function removeSelection(){
	    if (window.getSelection) { window.getSelection().removeAllRanges(); }
	    else if (document.selection && document.selection.clear)
	      document.selection.clear();
	  }
	  function killCtrlA(event){
	    var event = event || window.event;
	    var sender = event.target || event.srcElement;

	    if (sender.tagName.match(/INPUT|TEXTAREA/i))
	      return;

	    var key = event.keyCode || event.which;
	    if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
	    {
	      removeSelection();

	      if (event.preventDefault)
	        event.preventDefault();
	      else
	        event.returnValue = false;
	    }
	  }

	  // не даем выделять текст мышкой
	  addHandler(element, 'mousemove', function(){
	    if(preventSelection)
	      removeSelection();
	  });
	  addHandler(element, 'mousedown', function(event){
	    var event = event || window.event;
	    var sender = event.target || event.srcElement;
	    preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
	  });

	  // борем dblclick
	  // если вешать функцию не на событие dblclick, можно избежать
	  // временное выделение текста в некоторых браузерах
	  addHandler(element, 'mouseup', function(){
	    if (preventSelection)
	      removeSelection();
	    preventSelection = false;
	  });

	  // борем ctrl+A
	  // скорей всего это и не надо, к тому же есть подозрение
	  // что в случае все же такой необходимости функцию нужно
	  // вешать один раз и на document, а не на элемент
	  addHandler(element, 'keydown', killCtrlA);
	  addHandler(element, 'keyup', killCtrlA);
	}

	preventSelection(document);
