rem: while (XRai.isIn(y,x)) x = XRai.firstChild(x); return { x: x, y: y}; 
add:   return XRai.normalisePassage(x,y); 
context: XRai.getSelection = function() {   if (!writeAccess) return null;   var range = XRai.getSelectedRange();   if (range == null || range.collapsed) {      Message.show("warning","No selected elements");      return;   }   // Get the start and the end of the container   var x = XRai.isInDocument(range.startContainer) ? range.startContainer :XRai.previous(range.startContainer);   var y = XRai.isInDocument(range.endContainer) ? range.endContainer : XRai.previous(range.endContainer) ;   if ((!x) || (!y)) { Message.show("warning","Invalid passage"); return null; }   while (XRai.isIn(y,x)) x = XRai.firstChild(x);   return { x: x, y: y};}
meta: 8632	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/8632/54ec3394e56995837ac14240ddfe00752d141a15/article.js/clean/trunk/js/article.js