docs: function moveSelection(forward, reset) {
  		var p, _p, cur;
  		
  		if (!$('[key]', self.cwd).length) {
  			return;
  		}
  		
  		if (self.fm.selected.length == 0) {
  			p = $('[key]:'+(forward ? 'first' : 'last'), self.cwd);
  			self.fm.select(p);
  		} else if (reset) {
  			p  = $('.ui-selected:'+(forward ? 'last' : 'first'), self.cwd);
  			_p = p[forward ? 'next' : 'prev']('[key]');
  			if (_p.length) {
  				p = _p;
  			}
  			self.fm.select(p, true);
  		} else {
  			if (self.pointer) {
  				cur = $('[key="'+self.pointer+'"].ui-selected', self.cwd);
  			}
  			if (!cur || !cur.length) {
  				cur = $('.ui-selected:'+(forward ? 'last' : 'first'), self.cwd);
  			}
  			p = cur[forward ? 'next' : 'prev']('[key]');
  
  			if (!p.length) {
  				p = cur;
  			} else {
  				if (!p.hasClass('ui-selected')) {
  					self.fm.select(p);
  				} else {
  					if (!cur.hasClass('ui-selected')) {
  						self.fm.unselect(p);
  					} else {
  						_p = cur[forward ? 'prev' : 'next']('[key]')
  						if (!_p.length || !_p.hasClass('ui-selected')) {
  							self.fm.unselect(cur);
  						} else {
  							while ((_p = forward ? p.next('[key]') : p.prev('[key]')) && p.hasClass('ui-selected')) {
  								p = _p;
  							}
  							self.fm.select(p);
  						}
  					}
  				}
  			} 
  		}
  		self.pointer = p.attr('key');
  		self.fm.checkSelectedPos(forward);
  	}