home *** CD-ROM | disk | FTP | other *** search
- <script type="text/javascript">
- var moreLinkText = "{0}";
- var moreLinkLink = "{1}";
- var maxHeight = {2};
- var maxWidth = {3};
- var maxLines = {4};
-
- function isFF2() {
- return (document.location.href.indexOf("file:///") == 0);
- };
-
- function IsMoreLinkVisible(moreLink)
- {
- if (moreLink.offsetTop + moreLink.offsetHeight > maxHeight ||
- moreLink.offsetWidth + moreLink.offsetLeft > maxWidth)
- return false;
- else
- return true;
- };
-
- function GetMoreLinkElem() {
- var more = document.createElement("a");
- more.setAttribute("href", moreLinkLink);
- more.setAttribute("class", "ebLink msgText");
-
- //add target blank for IE only
- if(isFF2()) more.setAttribute("target", "_blank");
-
- more.innerHTML = moreLinkText;
- return more;
- };
-
- function AddMoreLink(oDiv, insertBeforeElement) {
- var moreLinkId = "moreLinkId";
- var moreLink = GetMoreLinkElem();
- var htmlBlankChar = document.createElement("span");
- htmlBlankChar.innerHTML = "... ";
- oDiv.insertBefore(htmlBlankChar, insertBeforeElement);
- oDiv.insertBefore(moreLink, insertBeforeElement);
- moreLink.id = moreLinkId;
-
- while(oDiv.lastChild.id != moreLinkId)
- oDiv.removeChild(oDiv.lastChild);
-
- var oElem = htmlBlankChar.previousSibling;
- while (!IsMoreLinkVisible(moreLink)) {
- if(oElem.tagName)
- oDiv.removeChild(oElem);
-
- oElem = oElem.previousSibling;
- }
- };
-
- function CreateLinks(arrSpans)
- {
- var isLink = function(strText) {
- var strRegex = /^(http:\/\/|https:\/\/|ftp:\/\/).+/i;
- return strRegex.test(strText);
- };
-
- var checkAndCreateLink = function(objSpan) {
- var strText = objSpan.innerHTML;
- if(!isLink(strText)) return;
-
- var a = document.createElement("a");
- a.setAttribute("href", strText);
- a.setAttribute("class", "ebLink msgText");
- if(isFF2()) a.setAttribute("target", "_blank");
- a.appendChild(document.createTextNode(strText));
- objSpan.innerHTML = "";
- objSpan.appendChild(a);
- };
-
- for(var i=0; i<arrSpans.length; i++)
- checkAndCreateLink(arrSpans[i]);
- };
-
- function CheckSize() {
- var oDiv = document.getElementById("mainDiv");
- var iWidth = oDiv.offsetWidth;
- var iHeight = oDiv.offsetHeight;
- var arrSpans = oDiv.getElementsByTagName("span");
- CreateLinks(arrSpans);
- var bIsAddMore = false;
-
- if (iHeight > maxHeight) {
- bIsAddMore = true;
- var linesOffSetTop = new Array(maxLines-1);
- linesOffSetTop[0] = arrSpans[0].offsetTop;
-
- var arrLastLineSpans = new Array();
- var currLine = 0;
-
- for (var i = 0; i < arrSpans.length; i++) {
- if (arrSpans[i].offsetTop > linesOffSetTop[currLine]) {
- currLine++;
- linesOffSetTop[currLine] = arrSpans[i].offsetTop;
-
- if (currLine == maxLines - 1)
- arrLastLineSpans.push(arrSpans[i]);
- else if (currLine > maxLines - 1) {
- break;
- }
- }
- }
-
- var moreElem = GetMoreLinkElem();
-
- //one long word in second line
- var lastLineTop = arrLastLineSpans[0].offsetTop;
- if (arrLastLineSpans.length == 1 &&
- arrLastLineSpans[0].offsetWidth + arrLastLineSpans[0].offsetLeft > maxWidth) {
- AddMoreLink(oDiv, arrLastLineSpans[0]);
- }
- //few short words in second line
- else {
- var lastElement = arrLastLineSpans[arrLastLineSpans.length - 1];
- if (lastElement.nextSibling)
- lastElement = lastElement.nextSibling;
- else {
- var htmlDummy = document.createElement("span");
- oDiv.appendChild(htmlDummy);
- lastElement = htmlDummy;
- }
-
- AddMoreLink(oDiv, lastElement);
- }
- }
-
- oDiv.style.overflow = "hidden";
- oDiv.style.height = maxHeight + "px";
- };
-
- function OnLoad() {
- var oDiv = document.getElementById("mainDiv");
- oDiv.style.width = maxWidth + "px";
- CheckSize();
- };
- </script>