Patent Publication Number: US-8121880-B2

Title: Method for calendar driven decisions in web conferences

Description:
TRADEMARKS 
     IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies. 
     BACKGROUND 
     Exemplary embodiments relate to calendar events and web conference events, and particularly to synchronizing calendar events and web conferencing events. 
     Web conferencing is used to conduct live meetings or presentations over the Internet. In a web conference (e.g., an electronic meeting), each participant sits at his or her own computer, and is connected to other participants via the Internet. This can be either a downloaded application on each of the attendees computers or a web-based application where the attendees will simply enter a “URL” or website meeting address to enter the live meeting or conference. These web-based applications may be used with Flash or Java technology. 
     A webinar is a type of web conference, that tends to be mostly one-way, from the speaker to the audience with limited audience interaction, such as in a webcast, which is transmission of information in one direction only, like watching a concert on the internet. A webinar, however, can be very collaborative, and include polling and question and answer sessions to allow full participation between the audience and the presenter. A webinar is ‘live’ in the sense that information is conveyed according to an agenda, with a starting and ending time. In most cases, the presenter may speak over a standard telephone line, pointing out information being presented on screen, and the audience can respond over their own telephones, preferably a speakerphone. There are a few web conferencing technologies on the market that have incorporated the use of Voice over the Internet protocol (VoIP) audio technology, to allow for a truly web-driven presentation, removing the need for any external devices, such as a telephone. 
     When scheduling participants to attend a web conference, there are only certain options available. It would be desirable to provide mechanisms and techniques for seamlessly scheduling and providing calendar events and web conferences. 
     SUMMARY 
     A method for associating a calendar invitation for a calendar event to a web conference for a web conference event is provided in accordance with exemplary embodiments. Invitees of a calendar invitation for a calendar event are received. The invitees of the calendar invitation for the calendar event are detected. The invitees of the calendar event are associated to a web conference event for a web conference. Modifications relating to the invitees of the calendar event are detected. The modifications relating to the invitees of the calendar event are propagated to the web conference event, such that the web conference event synchronizes with the calendar event. Modifications relating to the web conference event for the web conference are detected. The modifications relating to the web conference event are propagated to the calendar event for the invitees, such that the calendar event synchronizes with the web conference event. The invitees, of the calendar invitation for the calendar event, include at least one of a first tier, a second tier, and a third tier. 
     Additional features and advantages are realized through the techniques of the presented in exemplary embodiments. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of exemplary embodiments with advantages and features, refer to the description and to the drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other features are apparent from the following detailed description taken in conjunction with the accompanying drawings in which: 
         FIG. 1  illustrates a block diagram of a system in accordance with exemplary embodiments; 
         FIG. 2  illustrates further interactions between servers in accordance with exemplary embodiments; 
         FIG. 3  illustrates a method for associating a calendar invitation for a calendar event to a web conference for a web event in accordance with exemplary embodiments; and 
         FIG. 4  illustrates an example of a computer having capabilities that may be utilized in implementations of exemplary embodiments. 
     
    
    
     The detailed description explains exemplary embodiments of the invention, together with advantages and features, by way of example with reference to the drawings. 
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       FIG. 1  illustrates a block diagram of a system  100  in accordance with exemplary embodiments. The system  100  provides an infrastructure through which exemplary embodiments may be implemented. A plurality of communication devices, such as communication devices  110 ,  10 ,  20 ,  30 ,  40 , may be operatively connected to and communicate over a network  120 . Also, servers  130 ,  140 ,  150  may be operatively connected to and communicate over the network  120 . 
     It is understood that in exemplary embodiments and implementations, communication devices  110 ,  10 ,  20 ,  30 ,  40  can be a variety of other communication devices such as general purpose or laptop computers, wireless devices such as cellular telephones, portable computing device, digital music players (e.g., MP3 players), mobile devices, etc. In addition, a wireline public switched telephone network (PSTN) telephone, session initiation protocol (SIP) telephone, dual-mode mobile telephone, personal digital assistant (PDA), or other type of communications device may be included in the system  100  of  FIG. 1 . 
     The network  120  may include circuit-switched and/or packet-switched technologies and devices, such as routers, switches, hubs, gateways, etc., for facilitating communications among the network entities. The network  120  may include wireline and/or wireless components utilizing, e.g., IEEE 802.11 standards for providing over-the-air transmissions of communications. 
     In exemplary embodiments, the network  120  can be a managed IP network administered by a service provider (or network administrator), which can control bandwidth and quality of service for the communications discussed herein. The network  120  may be implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, BLUETOOTH, etc. The network  120  can also be a packet-switched network as a local area network, a wide area network, a metropolitan area network, an Internet network, or other similar types of networks. The network  120  may include a cellular communications network, a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN), a personal area network (PAN), a virtual private network (VPN), an intranet or any other suitable network, and the network  120  may include equipment for receiving and transmitting signals, such as a cell tower, a mobile switching center, a base station, and a wireless access point. 
     As further shown in  FIG. 1 , the servers  130 ,  140 ,  150  may be implemented using a high-speed processing device (e.g., a computer system) that is capable of handling high volume activities conducted, e.g., by the communication devices  110 ,  10 ,  20 ,  30 ,  40  and other network entities. According to exemplary embodiments, the servers  130 ,  140 ,  150  may receive requests from the communication devices  110 ,  10 ,  20 ,  30 ,  40  to access services. In exemplary embodiments, one or more of the servers  130 ,  140 ,  150  (or another server) may implement authentication software for restricting or controlling access to network services and may be in communication with a customer identity system (CIS) database, which stores user credentials (e.g., user names and passwords). 
     Furthermore, exemplary embodiments are not limited to but are capable of being implemented in the system  100  illustrated in  FIG. 1 . Additionally, the servers  130 ,  140 ,  150  may be representative of numerous servers. Likewise, the network  120  may be representative of numerous networks. Therefore, the system  100  illustrated in  FIG. 1  is neither limited numerically to the elements depicted therein nor limited to the exact configuration and operative connections of elements. Further, it is understood by those skilled in the art that elements may be added to, subtracted from, or substituted for the elements described in the system  100  of  FIG. 1 . 
     In accordance with exemplary embodiments, the system  100  provides the ability to associate a calendar invitation for a calendar event (e.g., on the server  140 ) with a web conference for a web conference event (e.g., on the server  150 ) such that decisions in the calendar invitation (of the server  140 ) propagate as behaviors to the web conference (of the server  150 ). 
       FIG. 2  illustrates further interactions between the server  140  and the server  150  in accordance with exemplary embodiments. The server  140  may comprise an email application  115  for implementing various email functions and a calendar application  145  for implementing various calendar functions. The server  140  may comprise a detection component  125  for detecting web conference event creations/changes on the server  150  and detecting calendar event (and/or calendar invitation) creations/changes on the server  140 . 
     The server  150  (e.g., acting as a web conferencing server) may comprise a conferencing application  155  for implementing web conferencing for web conference events and a detection component  165  for detecting calendar event creations/changes of calendar invitations on the server  140 . The detection component  165  may also detect creations/changes of web conference events on the server  150 . 
     The calendar application  145  of the server  140  may receive updates from the detection component  125  (and/or the detection component  165 ), such that any changes made by the conferencing application  155  for web conference events on the server  150  are reflected in calendar events on the server  140 . The conferencing application  155  on the server  150  may receive updates from the detection component  165  (and/or the detection component  125 ), such that any changes made by the calendar application  145  for calendar events on the server  140  (and/or any changes for calendar invitations) are reflected in web conference events on the server  150 . 
     As a non-limiting example, a sender may transmit a calendar invitation (e.g., via the calendar application  145 ) from the communication device  110  to the users of the communication devices  10 ,  20 ,  30 ,  40 . The calendar invitation from communication device  110  may be transmitted in an email, e.g., using the email application on the server  140 . Also, the server  130  may operate as an email server, and the server  130  is in communication with the server  140  so that calendar invitations can be transmitted to the communication devices  10 ,  20 ,  30 ,  40  over the network  120 . 
     The sender using the communication device  110  may input various email addresses in the fields of the calendar invitation. In exemplary embodiments, individuals who are on the “To” and “CC” fields of a calendar invitation of the server  140  may propagate to the web conference hosted on the server  150  with conventional attendee privileges, and individuals who are on the “BCC” field may propagate as hidden (or anonymous) participants to the web conference for the web conference event on the server  150 . Moreover, when a web conference occurs for a web conference event on the server  150 , the individuals listed in the TO, CC, and BCC fields are able to attend the web conference event in accordance with privileges associated with each respective field (i.e., the TO, CC, and BCC fields) of the calendar invitation. The status of each individual attending the web conference event may correspond to the TO, CC, and BCC fields (or any other fields) of the calendar invitation. The behavior described above can be consistent for repeat meetings using web conferencing on the server  150 . 
     If the calendar event changes (e.g., people added, people deleted, people promoted from BCC to TO or CC) on the server  140 , then an associated workflow between the scheduled web conference event on the server  150  and calendar invitation on the server  140  works on behalf of the moderator (e.g., the sender) to automate the change in decisions. As non-limiting examples, the detection component  165  of the server  150  detects changes to the calendar event (and/or calendar invitation), and the conferencing application  155  applies the corresponding changes to the scheduled web conference event. The detection component  165  is in communication with the calendar application  145  and/or the email application  115 , and if a change is made to the calendar invitation and/or calendar event, the detection component  165  recognizes the change. 
     Likewise, post calendar-invitation creation decisions made in the web conference event of the server  150  propagate to the calendar invitation for the calendar event on the server  140 . As non-limiting examples, the moderator (which may be the sender) of the web conference event may make a change (e.g., change the time, location, date, usernames/passwords, documents, etc.) to the web conference event of the server  150 . The detection component  125  of the server  140  detects the changes in the web conference event of the server  150  (e.g., by communicating with the conferencing application  155 ), and the calendar application  145  applies the corresponding changes of the web conference event to the calendar event on the server  140 . The calendar event remains synchronized with the web conference event even after the initial calendar invitation was transmitted from the sender on the communication device  110  to the communication devices  10 ,  20 ,  30 ,  40 . Even if a modification is made to the web conference event after the calendar invitation has been transmitted, the calendar application  145  can transmit any updates made by the moderator (sender) to the communication devices  10 ,  20 ,  30 ,  40 . 
     Furthermore, updates to calendar events on the server  140  by the moderator (e.g., adding an attachment, updating the event, updating the attendees/invitees, removing attendees/invitees, changing the time, etc.) are handled by this workflow and propagated back to the web conference event on the server  150 . Similarly, updates to the web conference event on the server  150  by the moderator (e.g., adding an attachment, updating the event, updating the attendees/invitees, removing attendees/invitees, changing the time, etc.) are handled by this workflow and propagated back to the calendar event on the server  140 . Exemplary embodiments support a calendaring-web conferencing interface and provide a workflow that allows changes and decisions on either side (e.g., servers  140 ,  150 ) to propagate to the other system seamlessly (which may be in asynchronous way). 
     Exemplary embodiments support user attendance profiles of web conferencing events on the server  150 , including the recognition of BCC type users in a web conference on the server  150 . Exemplary embodiments allow additional web conference attendance profiles. Typically, for users who are attending an electronic web conference meeting, their attendance is made known and visible to all participants through a user interface display. Additionally, there is typically an accompanying voice channel for communications that attendees can make their presence known. Also, additional application options are enabled when the attending users are known in a web conference, e.g., meeting voting, cross meeting chat, and questions posed to the web conference are all identified by username. 
     In accordance with exemplary embodiments, there are a variety of reasons why users may want to attend a meeting and/or web conference and not have their presence known. They would accept not being able to exercise their online web conference meeting options (e.g., meeting chat or meeting voting), for just listening into the meeting exchange of the web conference event. Exemplary embodiments support the concept of “anonymous” and “hidden” user attendance to an electronic meeting for the associated web conference. As a non-limiting example, the sender on the communication device  110  may transmit a calendar invitation (e.g., as BCC) to the user of the communication device  10 . The detection device  165  may detect the calendar invitation and transmit this information to the conferencing application  155 , so that the conferencing application  155  can create a web conference event on the server  150  with privileges (or a status) according to the BCC designation. The BCC designation for the user of the communication device  110  may translate as anonymous or hidden for the corresponding web conference event. As a non-limiting example, the users of the communication devices  20 ,  30  may be designated in the TO field of the calendar invitation. The detection component  165  detects the TO designations and translates the TO designations for the users of the communication devices  20 ,  30  to the web conference event on the server  150  with normal privileges. 
     The conferencing application  155  receives the various designations (e.g., TO, CC, and BCC). The conferencing application  155  applies the privileges to the web conference event on the server  150  in accordance with the designations in the calendar invitation for the calendar event of the server  140 . When the web conference event is in session, the web conference event may display the user with the BCC designation as anonymous, or the user may be hidden (so no one can see that the user is participating in the web conference event). As an anonymous participant of the web conference event, only the word “anonymous” may be seen by others who are attending the web conference event. As a hidden participant of the web conference event, nothing is seen by others which would acknowledge the hidden participants. 
     As a non-limiting scenario, a meeting (a web conference) may be called by a moderator on a topic that holds interest to a large number of people, but only a core number of people attending need to be discussing the topic, while the others attending the meeting are sufficiently enabled to just listen in. This meeting has an associated web conference setup (e.g., on the server  150 ), where visuals are posted and discussed. Exemplary embodiments provide an option for the meeting invitation (i.e., the calendar invitation) to support anonymous invitations and attendees, where a user (e.g., on the communication device  10 ) accepting as anonymous will have his or her name appear as anonymous through the associated web conferencing visual (on the server  150 ). The conferencing application  155  allows each succeeding user attending as anonymous to appear as an additional anonymous user (which may signal that other users are attending the web conference). 
     As a non-limiting scenario, a meeting (a web conference) may be called by a moderator on a topic and the meeting invitees have been identified. One (or more) person is part of the project team and will not be part of the invitee list. The moderator made a decision or received a recommendation to include this individual in a non-intrusive way (e.g., by designating the person as BCC in the calendar invitation). This individual should be invited to the meeting in a hidden capacity (e.g., BCC). The individual can attend and be alerted of the meeting invite (e.g., calendar invitation for the calendar event that is translated into the web conference event), but will not be visually attending and known to be present by the other attendees. 
     Exemplary embodiments correlate the relationships between calendar invitations on the server  140  and associated web conferences on the server  150 . Exemplary embodiments support detection and update of associated scheduled entries (in the calendar events and web conference events) to remain in step and appear as one integrated unit. 
     In accordance with exemplary embodiments, there are users who would benefit from attending web conference events of the server  150  by just listening in, where their presence is understood, implied, or not acknowledged at all. The conferencing application  155  allows these uniquely invited users&#39; attendance to appear as anonymous to alert attendees that others are attending without giving their names. Also, the conferencing application  155  allows these users to be hidden, where their names will not appear in the attendee list at all, thus giving no indication that there are additional attendees. The conferencing application  155  may allow the privileges of those designated as BCC to change. For example, there can be additional access granted (such as ok, no, or granted access at selective times) for the web conference event so that anonymous or hidden users are able to talk during the web conference event. 
     In accordance with exemplary embodiments, meeting logic (of the conferencing application  145 ) detects that hidden and/or anonymous user(s) are specified (in the calendar invitation for the calendar event). A list of these users (e.g., users of the communication devices  10 ,  20 ,  30 ,  40 ) may be formed and the web conferencing server (server  150 ) is contacted. The list of users, the user status type (hidden or anonymous) is passed over to or retrieved by the web conferencing server (the server  150 ), e.g., by the detection component  165 . 
     The scheduled meeting becomes active at the scheduled time, such that the web conference event becomes active at the scheduled time on the server  150 . As new users join the web conference event, their names are checked next to this list. If a match is found (by the conferencing application  155 ), a decision is made. If the user is listed as an anonymous user, then a web conference meeting attendees list is updated with an entry for anonymous (if not already present). If the user is listed as hidden, no special user information updates are made. In both cases, users are granted access to attend the web conference event hosted by the web conference server (the server  150 ). The web conferencing server (the server  150 ) can handle additional name updates. 
     As additional anonymous attendees join, a count may appear next to the anonymous entry to reflect how many anonymous users are attending. As each hidden and/or anonymous user joins, their presence is reported to the meeting invitee (e.g., the sender or moderator) although others may not be aware. 
     There can be a variety of access grants established, as to who can invite anonymous or hidden users (e.g., the meeting caller only, the meeting moderator if different, or all users). 
     Referring to  FIG. 2 , in accordance with exemplary embodiments, coordination components (e.g., detection components  125  and  165 ) between calendar invite processing and the web conference scheduling are used to synchronize operations in the server  140  (and/or the server  130 ) and the server  150 . The detection component  165  on the server  150  detects when a calendar entry for a calendar event is created or modified on the server  140 . The detection component  125  on the server  140  detects when a web conference entry for a web conference event is created or modified on the server  150 . 
     In exemplary embodiments, the server  140  may include or be operatively connected to a storage  135 . The storage  135  may include calendar invitations and calendar events. The server  150  may include or be operatively connected to a storage  175 . The storage  175  may include scheduled web conference events for web conferences. As a non-limiting example, when relevant field changes are detected in the storage  135  of the server  140  by the detection component  165  of the server  150 , the detection component  165  relays the information to the conferencing application  155  for update to the corresponding web conferencing event of the server  150 . As a non-limiting example, when relevant field changes are detected in the storage  175  of the server  150  by the detection component  125  of the server  140 , the detection component  125  relays the information to the calendar application  145  (and/or email application  115 ) for update to the corresponding calendar event (and/or resending of the calendar invitation) of the server  140 . 
     Further, an acknowledgement may be sent back to the originator (e.g., the sender and/or the moderator) when updates are complete for the calendar events and web conference events in the servers  140 ,  150 , respectively. 
     Even though the meeting inviter (sender) is the same as the meeting moderator examples, it is understood that the meeting inviter could be different than the meeting moderator. 
     Although the detection components  125 ,  165  are provided for explanatory purposes, the detection components  125 ,  165  are not meant to be limiting. In accordance with exemplary embodiments, different applications, components, and/or mechanisms may be used for associating these two scheduled events. As a non-limiting example, there may be a single component or application that is responsible for associating calendar invitations and calendar events of the server  140  with web conference events for web conferences on the server  150 . In other words, there may be only one detection component that is capable of detecting creation and modification of both calendar events and web conference events on the servers  140  and  150 , respectively. The one detection component (and/or the calendar application  145 , the conferencing application  155 , or the detection components  125 ,  165 ) can transmit the necessary information between the two servers  140 ,  150  in accordance with exemplary embodiments. 
     Also, in exemplary embodiments, the detection component  125  itself may detect the creation or modification of calendar events on the server  140 , and the detection component  125  may forward this information to the detection component  165  (or conferencing application  155 ) of the server  150 . Similarly, the detection component  165  itself may detect the creation or modification of web conference events, and the detection component  165  may forward this information to the detection component  125  (or calendar application  145 ) of the server  140 . 
       FIG. 3  illustrates a method for associating a calendar invitation for a calendar event to a web conference for a web event in accordance with exemplary embodiments. 
     Invitees of a calendar invitation for a calendar event are received by the calendar application  145  of the server  140  at  300 . The status of the invitees may vary from each other. For example, the invitees may be designated in accordance with the TO field, the CC field, the BCC field, or any other available field. 
     The invitees of the calendar invitation for the calendar event are detected by the detection component  165  of the server  150  (and/or the detection component  125 ) at  310 . The invitees of the calendar event on the server  140  are associated to a web conference event for a web conference on the server  150  by the conferencing application  155  at  320 . As a non-limiting example, the calendar application  145  may transmit the calendar event information for the invitees to the conferencing application  155  via the network  120 , such that the conferencing application  155  can create a corresponding web conference event. As a non-limiting example, the conferencing application  150  may retrieve the calendar event information for the invitees from the storage  135 . 
     Any modifications relating to the invitees of the calendar event can be detected by the detection component  165  at  330 . The modifications relating to the invitees of the calendar event are propagated to the web conference event by the calendar application  145  via the network  120 , such that the web conference event synchronizes with the calendar event at  340 . Also, the conferencing application  155  may retrieve modifications to the calendar event. Further, the detection components  165 ,  125  may transmit the modifications to the conferencing application  155 . 
     Any modifications relating to the web conference event for the web conference are detected by the detection component  125  at  350 . The modifications relating to the web conference event are propagated to the calendar event for the invitees by the conferencing application  155  via the network  120 , such that the calendar event synchronizes with the web conference event at  360 . Also, the calendar application  145  may retrieve modifications to the calendar event. Further, the detection components  125 ,  165  may transmit the modifications to the calendar application  145 . 
     In accordance with exemplary embodiments, the invitees, of the calendar invitation for the calendar event, may include a first tier, a second tier, and/or a third tier. The invitees of the first tier may be known to others in the web conference event hosted on the server  150 . The invitees of the second tier may be known as anonymous to others in the web conference event hosted on the server  150 . The invitees of the third tier are hidden from the others in the web conference event hosted on the server  150 . If additional invitees of the second tier join the web conference event, the conferencing application  155  may have a count to reflect the number of anonymous invitees attending the web conference event hosted on the server  150 . If the invitees of the second tier and the third tier join the web conference event, the presence of the invitees of the second tier and the third tier is reported to the meeting invitee. The meeting invitee (e.g., the moderator or the sender) is informed of the actual names (e.g., usernames) of all attending, including the hidden and anonymous participants. 
       FIG. 4  illustrates an example of a computer having capabilities, which may be included in exemplary embodiments. Various methods discussed above may also utilize the capabilities of the computer  400 . One or more of the capabilities of the computer  400  may be incorporated in the servers  130 ,  140 ,  150 , in the communication devices  10 ,  20 ,  30 ,  40 ,  110 , and/or any element discussed herein. 
     The computer  400  includes, but is not limited to, PCs, workstations, positional and/or guidance devices, laptops, PDAs, palm devices, Internet protocol enabled televisions, set top boxes, servers, and the like. Generally, in terms of hardware architecture, the computer  400  may include one or more processors  410 , memory  420 , and one or more input and/or output (I/O) devices  470  that are communicatively coupled via a local interface (not shown). The local interface can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art. The local interface may have additional elements, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface may include address, control, and/or data connections to enable appropriate communications among the aforementioned components. 
     The processor  410  is a hardware device for executing software that can be stored in the memory  420 . The processor  410  can be virtually any custom made or commercially available processor, a central processing unit (CPU), a data signal processor (DSP), or an auxiliary processor among several processors associated with the computer  400 , and the processor  410  may be a semiconductor based microprocessor (in the form of a microchip) or a macroprocessor. 
     The memory  420  can include any one or combination of volatile memory elements (e.g., random access memory (RAM), such as dynamic random access memory (DRAM), static random access memory (SRAM), etc.) and nonvolatile memory elements (e.g., ROM, erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), programmable read only memory (PROM), tape, compact disc read only memory (CD-ROM), disk, diskette, cartridge, cassette or the like, etc.). Moreover, the memory  420  may incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the memory  420  can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor  410 . 
     The software in the memory  420  may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions. The software in the memory  420  includes a suitable operating system (O/S)  450 , compiler  440 , source code  430 , and an application  460  (which may be one or more applications) of the exemplary embodiments. As illustrated, the application  460  comprises numerous functional components for implementing the features and operations of the exemplary embodiments. The application  460  of the computer  400  may represent the various applications referred to herein, but the application  460  is not meant to be a limitation. 
     The operating system  450  may control the execution of other computer programs, and provides scheduling, input-output control, file and data management, memory management, and communication control and related services. It is contemplated by the inventors that the application  460  for implementing exemplary embodiments is applicable on all other commercially available operating systems. 
     The application  460  may be a source program, executable program (object code), script, or any other entity comprising a set of instructions to be performed. When a source program, then the program is usually translated via a compiler (such as the compiler  440 ), assembler, interpreter, or the like, which may or may not be included within the memory  420 , so as to operate properly in connection with the O/S  450 . Furthermore, the application  460  can be written as (a) an object oriented programming language, which has classes of data and methods, or (b) a procedure programming language, which has routines, subroutines, and/or functions, for example but not limited to, C, C++, C#, Pascal, BASIC, API calls, HTML, XHTML, XML, ASP scripts, FORTRAN. COBOL, Perl, Java, ADA, .NET, and the like. 
     The I/O devices  470  may include input devices such as, for example but not limited to, a mouse, keyboard, scanner, microphone, camera, etc. Furthermore, the I/O devices  470  may also include output devices, for example but not limited to, a printer, display, etc. Further, the I/O devices  470  may further include devices that communicate both inputs and outputs, for instance but not limited to a NIC or modulator/demodulator (for accessing remote devices, other files, devices, systems, or a network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, etc. The I/O devices  470  also include components for communicating over various networks, such as the networks  120 . 
     If the computer  400  is a PC, workstation, intelligent device or the like, the software in the memory  420  may further include a basic input output system (BIOS) (omitted for simplicity). The BIOS is a set of essential software routines that initialize and test hardware at startup, start the O/S  450 , and support the transfer of data among the hardware devices. The BIOS is stored in some type of read-only-memory, such as ROM, PROM, EPROM, EEPROM or the like, so that the BIOS can be executed when the computer  400  is activated. 
     When the computer  400  is in operation, the processor  410  is configured to execute software stored within the memory  420 , to communicate data to and from the memory  420 , and to generally control operations of the computer  400  pursuant to the software. The application  460  and the O/S  450  are read, in whole or in part, by the processor  410 , perhaps buffered within the processor  410 , and then executed. 
     When the application  460  is implemented in software it should be noted that the application  460  can be stored on virtually any computer readable medium for use by or in connection with any computer related system or method. In the context of this document, a computer readable medium may be an electronic, magnetic, optical, or other physical device or means that can contain or store a computer program for use by or in connection with a computer related system or method. 
     The application  460  can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. 
     More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic or optical), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc memory (CDROM, CD R/W) (optical). Note that the computer-readable medium could even be paper or another suitable medium, upon which the program is printed or punched, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. 
     In exemplary embodiments, where the application  460  is implemented in hardware, the application  460  can be implemented with any one or a combination of the following technologies, which are each well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc. 
     It is understood that the computer  400  includes non-limiting examples of software and hardware components that may be included in various devices and systems discussed herein, and it is understood that additional software and hardware components may be included in the various devices and systems discussed in exemplary embodiments. 
     The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof. 
     As one example, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately. 
     Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided. 
     The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention. 
     While exemplary embodiments described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.