function setupBalloons() {
makeBalloon("display",250,"This feature gives the user the possibility of showing other users what he is seeing in his display. This is a great tool to perform online presentations and other collaborative tasks.");

makeBalloon("d2",250," With a couple of clicks, and without needing extra software or knowledge,  you can share your computer with another user. The other user gains remote access to your computer to perform either support or other collaborative tasks.");


makeBalloon("d3",250," This tool is the simplest way of telling everyone else the various ways of getting in contact with you. In just a few seconds you can send to whom you wish a customized e-mail including your account of each IM Network you have configured.");

makeBalloon("d4",250," Add interoperability to the IM Client and you will have five instant messengers in one. With one single IM Client you will be able to contact people of your own network as well as from the leading public networks: AOL, ICQ, MSN and Yahoo.");

makeBalloon("d5",250," Powerful tool for the corporate market that gives the Administrator the possibility of recording every message sent or received from any user of the network. All the messages are stored in the IM Server for auditing purposes. Afterwards, the web-based Administration Console facilitates the work of reviewing the recorded information.");


makeBalloon("d6",250," If enabled from the Administration Console, this feature warn users that their actions are being archived.");

makeBalloon("d7",250," Message Archiving Search Engine allows you to search through all the messages sent and received by the users, including invitations for file transfers, chat sessions, presentations, etc.");
makeBalloon("d8",250," Without any extra software or knowledge, send any file to users on any network with just a couple of clicks.");
makeBalloon("d9",250," Start a chat with more than one of your contacts for increased interaction. Moreover, you can invite to the same chat session users from each of the public networks.");
makeBalloon("d10",250," Include colorful emoticons in your messages to express your emotions while typing.");
makeBalloon("d11",250," Automatically starts encrypted chat session within the IM Network (not public networks) for secure communications.");



makeBalloon("d12",250," All communications between client and server are encrypted for total security. Encryption makes impossible to anyone other than the receiver to read a message.*Note: Messages to the public networks (AOL, ICQ, MSN and Yahoo) are not encrypted.");
makeBalloon("d13",250," Automatically sends files encrypted within the IM Network (not public networks) for a secure transmission maintaining the privacy of your files' content.");
makeBalloon("d14",250," Create up to five different automatic reply messages to send users when they try to contact you while you are Not Available.");
makeBalloon("d15",250," For a complete multimedia experience, our IM Solution gives the user the possibility of having voice and/or video chat. The voice and video chat is possible through integration with Netmeeting (popular voice and video chat program included in all Windows versions since Windows 98).");
makeBalloon("d16",250," Give users a wide variety of options when indicating search parameters, including the option of listing all users or only online ones.");
makeBalloon("d17",250," The user will be able to connect with the same username from a desktop or laptop PC without needing to re-add users to the contact list. Simply connects with its username and the contact list is there.");
makeBalloon("d18",250," Allows each user to separate users in different folders to facilitate visualization. In this way each user can classify contacts in different categories (for example co-workers, relatives, friends, etc.).");
makeBalloon("d19",250," At every moment the user can review on whose contact list is appearing, and even select to be removed from it.");
makeBalloon("d20",250," Possibility to store all sent and received messages from other users on the local computer, separating by folders for easiest management. This feature gives you the chance to check previous messages.");
makeBalloon("d21",250," User has different option of connection status, being able to choose between being Occupied and Not Available when doesn't want to be bothered. The user can even select to be Invisible and appear as Offline to other users, but remaining connected. Moreover, if the computer has no activity for five minutes the user will be automatically set to Not Available.");
makeBalloon("d22",250," To simplify users life, the automatic update makes the process of updating to latest version very simple. When user connects and there is a new version available, a pop-up window will notify immediately the existence of an available update. In this way users keep updated with no effort.");
makeBalloon("d23",250," Our IM Solution can be deployed in any occidental or oriental single-byte language making the IM Client accessible for a wider range of users. Even more, one installer can give the user the chance to select between various languages.");
makeBalloon("d24",250," The user can change between existing skins with ease and without needing to re-start the application. With a single click and the new skin is on.");
makeBalloon("d25",250," Our patent pending powerful Tunneling Technology makes possible that all the features included in the IM Client work behind Firewalls, NATs or Proxies. It doesn't matter if one or both users are behind a Firewall, NAT or Proxy; features that usually don't work in these scenarios (like multi-person chat and file transfer), will work fine.");
makeBalloon("d26",250," For total control of the IM Network and/or IM Server, the IM Administrator can access a complete web-based Administration Console with all the configurable features. From creating a new user to customizing e-mails that users receive when registering. As the Administration Console is web-based the Administrator can access it from any computer connected to the network.");
makeBalloon("d27",250," Through the encapsulation over TCP, the IM Client can connect even behind a Firewall or NAT. This feature widens the range of users that can get the IM Client running.");
makeBalloon("d28",250," Through the encapsulation over HTTP, the IM Client can connect behind an HTTP Proxy. This feature widens the range of users that can get the IM Client running.");
makeBalloon("d29",250," The Server Monitor was developed to control de correct behavior of the server, and in case something fails it can perform an action. This action can consist in sending an e-mail, run an application or a specific document.");

makeBalloon("d30",250," The Administration Console can be set to display texts, email messages, etc in different languages. This can be accomplished by editing the AdminConsole.htm file.");
makeBalloon("d31",250," The Console Administrator will be able to choose for each network, to work with an authentication system incorporated with our IM or with an external user directory. Connectors for most common directories included are: NT Domain, Active Directory and LDAP.");

makeBalloon("d32",250," No public instant messengers such as MSN Messenger, AOL, ICQ, etc will run in the computer. It does not matter if your IM is running or not, this tool runs as a background application.");
makeBalloon("d33",250," Customizable banner and side panel without getting a customized skin. In case they are not customized, the banner and URL will be determined by the reseller or us.");
makeBalloon("d34",250," This customization package includes: Private Labeled IM Solution, Basic Skin Customization, Customized Installer, Web Communication Center customization.");

makeBalloon("d35",250," This customization package includes: Private Labeled IM Solution, Full Skin Customization, Customized Installer, Web Communication Center customization.");
makeBalloon("d36",250," Our IM Solutions makes possible to run more than one IM Network on the same IM Server. Each IM Network runs as a separate, independent and private network.");
makeBalloon("d37",250," Two great tools that combined give each user the possibility of being contacted at anytime by anyone. From the user’s website or from an e-mail signature people can access the Web Communication Center of the user. Once there, you can send a message or initiate a chat without needing to download any software; while the IM user will receive messages and chat request directly to the IM Client.");
makeBalloon("d38",250," The IM Server can be integrated to an LDAP directory in order to facilitate users’ registration. In this way user will be automatically registered to the IM Service when they are incorporated to the LDAP directory.");
makeBalloon("d39",250," The IM Server can be integrated to any database in order to facilitate users’ registration. In this way user will be automatically registered to the IM Service when they are incorporated to the database.");
makeBalloon("d40",250," In case that the primary server fails, a secondary server (backup server) will start up automatically so contacts will always stay on-line.");
makeBalloon("d41",250," We can add any Oriental or Occidental single-byte language to the IM Client. The user will be prompted to select the language when installing the program.");
makeBalloon("d42",250," At any moment during installation of your own IM Server, you will be able to contact our Support Team by e-mail or by phone to receive an answer to any question or doubt that may arise.");
makeBalloon("d43",250," You will receive unlimited e-mail support from our Support Team during a one-year period. In this way you will be able to receive an answer to any question or doubt that you may have, maximizing the efficiency of the IM Client’s use.");
makeBalloon("d44",250," You will have free access to any upgrade released during a one-year period. This assures you that your IM Solution will remain up to date with any additional cost.");
makeBalloon("d45",250," You will have free access to any upgrade released during a one-year period. This assures you that your IM Solution will remain up to date with any additional cost.");


}

function onBalloonCall(id,event) {
  if (id == "christiaan") {
    var x = 0;
    var y = 0;
    if (window.pageXOffset || window.pageYOffset) {
      x = window.pageXOffset;
      y = window.pageYOffset;
    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
      x = document.body.scrollLeft;
      y = document.body.scrollTop;
    }
    putBalloon("photo",x,y);
  }
}

function onBalloonHide(id) {
  if (id == "christiaan")
    removeBalloon("photo");
}
/****************************************************************
 * Balloons in JavaScript. 
 *   
 * Balloon000515
 * by Christiaan Hofman, May 2000
 *   
 * This code is based upon the code by Michelle Wyner, provided by 
 * by Netscape Communications Corporation, copyright 1998. 
 *   
 * You may use or modify this code provided that this copyright notice
 * appears on all copies.
 *   
 *  First load this file using a SCRIPT tag. 
 *  Then create balloons using (either in head section or at the end):
 *   
 *    makeBalloon( "id", width, "text" );
 *   
 *  Link to a balloon in the text using (within SCRIPT tags): 
 *   
 *    linkBalloon( "id", "text" [, "status", "href"] );
 *      
 *  The "status" is the text in the statusline. The default is given by 
 *  var balloonStatus = "Tip". 
 *  Special values: "id", for the id, and "href" for the link URL. 
 *  Setting the "href" argument makes it a clickable link. 
 *   
 *  You can change the styles of the balloons (DIV.balloon) and the 
 *  links to the balloons (A.tip and A.linktip) using the STYLE tag. 
 *  This must be done after loading the 'balloon.js' file. 
 *   
 *===============================================================
 *  Example: 
 *---------------------------------------------------------------
 *   
 *  <HTML>
 *  <HEAD>
 *
 *  <SCRIPT SRC="http://www.rci.rutgers.edu/~hofman/js/balloon.js"></SCRIPT>
 *  <STYLE><!--
 *  DIV.balloon { background-color:ffffcc; layer-background-color:ffffcc; }
 *  --></STYLE>
 *  <SCRIPT> 
 *    function setupTips() { 
 *        makeBalloon('ex1',100,'This is the first Balloon');
 *        makeBalloon('ex2',100,'This is the second Balloon');
 *        ...
 *    }   
 *  </SCRIPT> 
 *
 *  </HEAD> 
 *  <BODY> 
 *
 *  Some HTML and text, ...  
 *   
 *  ... when hovering the 
 *  <SCRIPT>linkBalloon('ex1','first balloon')</SCRIPT>, 
 *  a balloon shows up ... 
 *   
 *  ... when clicking the 
 *  <SCRIPT>linkBalloon('ex2','second balloon','href','http://www.rci.rutgers.edu/~hofman')</SCRIPT>, 
 *  it works also as a link ... 
 *   
 *  ... and some more HTML.  
 *   
 *  <SCRIPT> 
 *    setupTips()
 *  </SCRIPT> 
 *   
 *  </BODY>
 *  </HTML>
 *   
 ****************************************************************
 */

//  Sets the styles for the Balloons and links to the balloons. Always needed. 

//  Creates a new Balloon.
function makeBalloon( id, width, message ) {
    if (width) document.writeln('<STYLE TYPE="text/css"><!-- #'+id+' {width:'+width+'} --></STYLE>');
    document.writeln('<DIV CLASS="balloon" ID="'+id+'">'+message+'</DIV>');
}

//  Creates a link to a Balloon.
function linkBalloon( id, text, status, href ) {
    status = status || balloonStatus;
    if (href) {
        var cls = 'linktip';
        if (status == 'href')  status = null;
    } else {
        var cls = 'tip';
        href = 'javascript:void(toggleBalloon(\''+id+'\'))';        
        if (status == 'href')  status = '';
    }
    if (status == 'id')  status = id;
    var outstatus = (typeof(status) == 'string')? 'self.status=\'\';return true' : '';
    status = (typeof(status) == 'string')? 'self.status=\''+status+'\';return true' : '';
    document.write('<A HREF="'+href+'" CLASS="'+cls+'"'+
       ' onMouseOver="showBalloon(\''+id+'\',event);'+status+'"'+
       ' onMouseOut="hideBalloon(\''+id+'\',event);'+outstatus+'">'+
       text +'</A>');
}

//  Standard call for a Balloon, called by the link at mouseover. 
function showBalloon( id, event ) {
    var x = 10, y = 10;
    if (event) {
        if (document.all) {
            x = document.body.scrollLeft + document.documentElement.scrollLeft + event.clientX + 10;
            y = document.body.scrollTop + document.documentElement.scrollTop + event.clientY + 10;
        } else if (document.layers || document.getElementById) {
            x = event.pageX + 10;
            y = event.pageY + 10;
        }
    }
    putBalloon(id, x, y);
    if (window.onBalloonCall)  window.onBalloonCall(id, event);             
}

//  Standard removal of a Balloon, called by the link at mouseout. 
function hideBalloon( id, event ) {
    removeBalloon(id);
    if (window.onBalloonHide)  window.onBalloonHide(id, event);
}

//  The event handlers onBalloonCall and onBalloonHide can be set to perform appropriate actions. 
//  When another Balloon is called or removed, use the following two functions (to avoid a loop). 
function putBalloon( id, x, y ) {
    var l;
    if (document.layers) {
        l = document.layers[id];
        l.left = Math.min(Math.max(x, window.pageXOffset), window.pageXOffset + window.innerWidth - l.clip.width);
        l.top = Math.min(Math.max(y, window.pageYOffset), window.pageYOffset + window.innerHeight - l.clip.height);
        l.visibility = "visible";
        l.zIndex = 200;
    } else if (document.all) {
        l = document.all[id];
        l.style.pixelLeft = Math.min(Math.max(x, document.body.scrollLeft + document.documentElement.scrollLeft), document.body.scrollLeft + document.documentElement.scrollLeft + document.body.clientWidth - l.offsetWidth);
        l.style.pixelTop = Math.min(Math.max(y, document.body.scrollTop + document.documentElement.scrollTop), document.body.scrollTop + document.documentElement.scrollTop + document.body.clientHeight - l.offsetHeight);
        l.style.visibility = "visible";
        l.style.zIndex = 200;
    } else if (document.getElementById) {
        l = document.getElementById(id);
        l.style.left = Math.min(Math.max(x, window.pageXOffset), window.pageXOffset + window.innerWidth - l.offsetWidth) +"px";
        l.style.top = Math.min(Math.max(y, window.pageYOffset), window.pageYOffset + window.innerHeight - l.offsetHeight) +"px";
        l.style.visibility = "visible";
        l.style.zIndex = 200;
    }
}

//  Removal of a Balloon. 
function removeBalloon( id ) {
    if (document.layers) {
        var l = document.layers[id];
    } else if (document.all) {
        var l = document.all[id].style; 
    } else if (document.getElementById) {
        var l = document.getElementById(id).style;
    }
    if (!l) return;
    if (!l.fixed)  l.visibility = "hidden";
}

//  Toggles the fixation of the Balloon.
function toggleBalloon( id ) {
    if (document.layers) {
        var l = document.layers[id];
    } else if (document.all) {
        var l = document.all[id].style; 
    } else if (document.getElementById) {
        var l = document.getElementById(id).style;
    }
    if (!l) return;
    if (l.fixed = !l.fixed)  l.zIndex = 1;
}

//  The default balloon status text. 
window.balloonStatus = "Tip";

//  The default balloon and link styles. 
document.writeln( '<STYLE TYPE="text/css"><!--',
    'DIV.balloon {',
    ' position:absolute; visibility:hidden; display:block; width:150px; height:auto;',
    ' background-color:lightyellow; layer-background-color:lightyellow;',
    ' color:black; font-family:helvetica; padding:5px;',
    ' border-style:solid; border-width:1px; border-color:black; } ',
    'A.tip:link { text-decoration:none; color:green; cursor:help; } ',
    'A.tip:visited { text-decoration:none; color:green; cursor:help; } ',
    'A.tip:active { text-decoration:none; color:green; cursor:help; } ',
    'A.tip:link { text-decoration:none; color:green; cursor:help; } ',
    'A.tip:hover { color:red; } ',
    'A.linktip:link { color:green; } ',
    'A.linktip:visited { color:darkgreen; } ',
    'A.linktip:active { color:green; } ',
    'A.linktip:hover { color:red }',
    '--></STYLE>' );

