function fixLinksWidth() {
	var r = /^(.*(<[^>]*>)*)([^>]*)[^>]((<[^>]*>)*)$/m;
	var r2 = /^(.*(<[^>]*>)*)([^>]*)[^>]((<[^>]*>)*\.\.)$/m;
	for (var i = 0; i < document.links.length; i++) {
		var a = document.links[i];
		if (a.maxWidth) {
			var s0 = a.innerHTML;
			var w0 = a.offsetWidth;
			var h0 = a.offsetHeight;
			var s, s2;
			// test multi line
			s = s0;
			while (a.offsetWidth > a.maxWidth/2) {
				s2 = s.replace(r, "$1$3$4");
				if (s2.length >= s.length) break;
				a.innerHTML = s = s2;
			}
			var h2 = a.offsetHeight;
			var multiLine = (a.offsetHeight < h0/1.5) ? true : false;
			// not too long
			if (!multiLine && w0 <= a.maxWidth) {
				a.innerHTML = s0;
				continue;
			}
			// too long
			s = s0 + '..';
			a.innerHTML = s;
			while (a.offsetHeight > h2*1.5 || a.offsetWidth > a.maxWidth) {
				s2 = s.replace(r2, "$1$3$4");
				if (s2.length >= s.length) break;
				a.innerHTML = s = s2;
			}
		}
	}
}
addLoadEvent(fixLinksWidth);

