j'ai pas tout regardé (pour moi j'arrive à sélectionner...),
mais j'ai remarqué que tu utilise un fonction position(evt) qui prends en argument un évènement javascript.
Il me semble que l'erreur peut venir de là: quand tu redéfini un évènement (par ex. onclick) il faut que tu retourne true ou false dans l'évènement. Lorsque tu retourne true, celà indique que tu as traité l'évènement et qu'il ne nécessite plus de traitement. Lorsque tu retourne false, celà indique que soit tu désire que d'autres objets traitent l'évènement.
L'ordre de traitement des objets se fait à partir de l'objet qui a reçut l'évènement, vers l'objet parent. Ainsi, la gestion de séléction est faite par l'objet document, si tu retourne true dans un onclick le click ne sera pas transmis au document et ce dernier ne gérera plus la sélection.
Ce système de gestion d'évènement fonctionne plus ou moins bien suivant les navigateurs, mais pour être sûr qu'il fonctionne sur tous les navigateurs, tu doit faire attention à retourner la bonne valeur d'une fonction d'évènement.
Exemple classique:
<a href="blabla.html" target=_blank onclick="javascript:window.open('blabla.html','_blank','width=320,height=240');return false;">blabla</a>
Ouvre un popup et retourne false afin que href soit ignoré. Si javascript est désactivé, ouvre une nouvelle fenêtre.