Abstract:
An arrangement for realizing asymmetric collaboration utilizes a “shared Web-top”, i.e., a work space, in which different in-document applications can run and be shared. Specifically, in one embodiment of the invention employed in asymmetric collaboration, documents to be collaborated on at different users&#39; terminals are logically identical but structurally different. Indeed, one of the collaborators, for example, a customer service agent, may have access to information that should not be made available to others of the collaborators. This asymmetric collaboration is realized by assigning a unique logical name to each information entity. Then, changes in the entity captured by some detection technique, for example, the use of document polling or event handlers, are propagated along with the name of the entity to the collaborators, where they are processed only if the relevant named entity exists. If the entity exists the logical name of the entity is mapped into its physical name which, therefore, allows asymmetric collaboration. Consequently, the name-based technique allows the collaborators, e.g., customer and agent, to share changes in the logically common portions of documents, which are structurally different.

Description:
RELATED APPLICATIONS 
     U.S. patent application Ser. No. 09/221,069 and Ser. No. 09/221,068 were filed concurrently herewith. 
    
    
     TECHNICAL FIELD 
     The invention relates to communications systems and methods, and in particular to systems and methods for allowing users to obtain information and services on the World Wide Web (WWW) or the “web”. 
     BACKGROUND OF THE INVENTION 
     Computer users can access many information resources on an expansive international network of computer networks known as the Internet. The WWW is a graphical subnetwork of the Internet. With common “web browser” software such as the NETSCAPE NAVIGATOR and INTERNET EXPLORER browsers, the users can readily access Internet information and services provided by web servers on the WWW. 
     Computer users can also share a web browsing experience using a collaborative browsing scheme. In one such scheme, users are provided capabilities for collaborative or shared browsing of hypertext markup language (HTML) documents at various uniform resource locators (URLs or website addresses) on the WWW. 
     Another arrangement utilizes a polling technique in a surrogate for sharing values in a multi-user application, which employs simultaneously viewed documents on the WEB. This arrangement although advantageous in certain applications, requires the surrogate to periodically poll the viewed document to determine if any changes have occurred. Such polling is potentially expensive from the prospective of computation time and, therefore, inefficient. Furthermore, the prior polling arrangement can only be employed when the documents at all user locations are structurally and logically identical, i.e., the collaboration must be symmetrical. 
     Still another arrangement utilizes so-called event handlers that are inserted into the documents and inform a surrogate that associated form element values have changed. Again, although this prior event handler arrangement functions satisfactorily in many applications, it is also limited to symmetrical collaboration. 
     More recently, a system has been proposed in which a customer and customer service agent may access to different information when the customer service agent is servicing the customer, i.e., asymmetric browsing. However, this prior system is concerned with the browsing of different versions of information related to the customer. In particular the customer service agent may have access to proprietary information that should not necessarily be made available to the customer. 
     SUMMARY OF THE INVENTION 
     Problems and limitations of prior known collaborative arrangements are addressed in an asymmetric collaboration arrangement that creates a “shared Web-top”, i.e., a work space, in which different in-document applications, for example, within a document page, can run and be shared. 
     Specifically, in one embodiment of the invention employed in asymmetric collaboration, documents to be collaborated on at different users&#39; terminals are logically identical but structurally different. Indeed, one of the collaborators, for example, a customer service agent, may have access to information that should not be made available to others of the collaborators. This asymmetric collaboration is realized by assigning a unique logical name to each information entity. Then, changes in the entity captured by some detection technique, for example, the use of document polling or event handlers, are propagated along with the name of the entity to the collaborators, where they are processed only if the relevant named entity exists. If the entity exists the logical name of the entity is mapped into its physical name which, therefore, allows asymmetric collaboration. Consequently, the name-based technique allows the collaborators, e.g., customer and agent, to share changes in the logically common portions of documents, which are structurally different. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 is a simplified block diagram of a server system including an embodiment of the invention for obtaining and exchanging information over the WWW; 
     FIGS. 2A and 2B form a flowchart depicting the steps in carrying out the operation of the system of FIG. 1; 
     FIG. 3 is a flowchart illustrating the steps taken in a surrogate employed in the process of FIGS. 2A and 2B that may be utilized in an embodiment of the invention; 
     FIG. 4 is a flowchart depicting the steps of applicants&#39; unique polling loop employed in the surrogate of FIG. 3; 
     FIG. 5 is a flowchart illustrating the steps taken in another surrogate which may be employed in the process of FIGS. 2A and 2B that may be utilized in an embodiment of the invention; 
     FIG. 6 is a flowchart depicting the steps of applicants&#39; unique process for relating event handlers with form elements employed in the surrogate of FIG. 5; 
     FIG. 7 illustrates a hierarchy of multiple controllers in the system of FIG. 1; and 
     FIG. 8 shows in simplified form details of a call center arrangement including an embodiment of the invention. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 shows, in simplified block diagram form, server system  100  embodying the principles of the invention, which is connected to the World Wide Web (WWW)  101  as a web server. Server system  100  includes WWW server  102 , controller  103  and manager  104 . Advantageously, server system  100  operates compatibly with standard web browsers such as the NETSCAPE browser, the standard hypertext transfer protocol (HTTP) and hypertext markup language (HTML). Among other things, server system  100  provides users with services of (a) collaborative browsing of HTML documents at various web sites on WWW  101 , and (b) real-time, interactive collaborative communications between the users. Specifically, with server system  100 , during a collaborative browsing session, multiple users or collaborators are allowed to synchronously and collaboratively input data into a document or otherwise edit the document. The collaborators may also interact with one another through text-chat communications, for example. In addition, server system  100  allows users to join and exit an on-going session and is capable of scaling its capacity to accommodate a changing number of sessions and collaborators in a particular session. 
     As shown in FIG. 1, a user may utilize computer U- 1  to access server system  100  over WWW  101  at a predetermined Uniform Resource Locator (URL). In this example, it is assumed that the user of U- 1  is a customer service agent (CSA) who may be located at a customer service center, for example, a call center. Computer U- 1  may be a conventional personal computer (PC) running standard web browser  106 - 1 , such as the NETSCAPE browser. As soon as U- 1  is connected to server system  100  through link  107 - 1 , manager  104  in server system  100  starts communicating with U- 1  through web browser  106 - 1  and WWW server  102  having a common gate interface (CGI). 
     Manager  104  includes a service routine shown in FIG.  2 A and FIG. 2B for helping a user to establish an interactive collaborative browsing session. FIGS. 2A and 2B illustrates the steps of a service routine including an embodiment of the invention. At step  201 , manager  104  causes a “home page” to be displayed on U- 1 , which greets the user, and describes the service provided by server system  100 . Manager  104  then elicits from U- 1  user information, as indicated at step  202 . This information includes a user identification (ID), password and other administrative data necessary for ensuring that the user is an authorized user. At step  203 , manager  104  queries U- 1  as to whether the user wants to create a session, or join an on-going session. In this instance, the user of U- 1  chooses to create a session. Manager  104 , at step  204 , then prompts the user for the details on the session to be created, such as the purpose of or the document to be addressed during the session, and whether it is a private or public session. By way of example, if it is a private session, a would-be collaborator must identify the user by his/her user ID who created the session in order to join it. It is assumed that all sessions would be private that deal with filling-in personal or otherwise sensitive user information into documents, i.e., forms or the like. If it is a public session, the topic of or the document to be edited or filled in during the session is listed and is searchable by a prospective collaborator. In this embodiment of the invention, whether private or public, the session is interactive among the collaborators in order to collaboratively input data into the document, for example, into one or more forms in the document. 
     In this instance, the user of U- 1  replies that the session to be created is a private session. Indeed, the user of U- 1  may be, for example, a customer service agent for a medical insurance company located at a company call center or other service location. Manager  104  proceeds to start the new session and causes surrogate  108 - 1  to be created within browser  106 - 1  in computer U- 1 , as indicated at step  205 . To that end, server system  100  transmits to computer U- 1  mobile code pursuant to a mobile programming language such as the standard JAVA language. Thus, in this instance, the mobile code may be in the form of a JAVA applet. (For a discussion on JAVA and JAVA applets see, for example, “Teach Yourself JAVA in 21 Days, Professional Reference Edition”  Sam&#39;s Net , Indianapolis, Ind., 1996 and/or “Learn JAVA Now”,  Microsoft Press , 1996. ) Surrogate  108 - 1  is realized when the JAVA applet starts to run within browser  106 - 1  as soon as it reaches computer U- 1 . Surrogate  108 - 1  is further described below in relationship to FIG. 3, and it suffices to know for now that it serves as an assistant to browser  106 - 1  to carry out the session. 
     Since in this instance it is a new session, manager  104  at step  206  assigns a new controller, numerically denoted  103 , to control and regulate the session. Manager  104 , at step  207 , causes controller  103  to be connected to surrogate  108 - 1  through link  102 - 1 , and at the same time discontinues link  107 - 1 . Surrogate  108 - 1  serves as an interface between, browser  106 - 1  and controller  103 . Among other things, surrogate  108 - 1  monitors user interaction with browser  106 - 1 , and reports the user interaction to controller  103 . It should be noted at this point that surrogate  108 - 1  is realized using a JAVA applet, which is transmitted to and executed on U- 1  on an on-demand basis. Indeed, no software needs to be installed or maintained on the user computer beforehand, as is required in traditional applications. Thus, any standard JAVA-enabled browser such as the NETSCAPE browser can be utilized to implement the invention. In other words, server system  100  does not require the users to have specialized browser software to take advantage of the inventive service. 
     After the new session starts, the user of computer U- 1  may change the URL with browser  106 - 1  to a web site to obtain information concerning the medical insurance form to be completed. The new URL is transmitted by surrogate  108 - 1  to controller  103 , where the new URL is recorded and conveyed to the surrogates of other collaborators, if any, in the same session. At the same time, browser  106 - 1  accesses a web server at the new URL, and opens on computer U- 1  a HTLM document provided by the web server, in this example, an medical insurance form. 
     A second user, for example, an insured person, may utilize computer U-N to access server system  100  at the predetermined URL to join an on-going session or to request assistance in making an insurance claim. After computer U-N establishes link  107 -N to WWW server  102 , manager  104  similarly performs steps  201  and  202  of FIG. 2A, previously described. However, at step  203 , the user of U-N in this instance chooses to join an on-going session. As such, manager  107  queries U-N as to whether the second user wants to join a private session or public session, as indicated at step  208  in FIG.  2 B. In this instance, the second user chooses to join a private session with the insurance company customer service agent. If the user of U-N wished to join a public session, manager  104  would proceed to steps  209  and  210 . Since, the second user has chosen to join the private session with the insurance company customer service agent he/she needs to identify the private session to be joined, by the user ID of the creator of that session, as indicated at step  211 . 
     In any event, at step  208 , manager  104  causes a list of all the on-going sessions to be displayed on computer U-N including the medical insurance form session created by the user of computer U- 1 . Manager  104  then proceeds to step  210  where it determines the particular session selected by the second user. In this example, the second user chooses to join the private medical insurance form session by pointing and clicking using a mouse device at the listed topic. At step  212 , surrogate  108 -N is created on computer U-N, in a manner described before, within browser  106 -N, which may be different from browser  106 - 1 . Once surrogate  108 -N is created, knowing that the medical insurance form session was assigned to controller  103 , manager  104  causes controller  103  to be connected to surrogate  108 -N through link  107 -N, as indicated at step  213 . 
     At that point, a message is sent by controller  103  to each collaborator&#39;s computer connected thereto about the presence of a new collaborator. The user of U-N is then afforded a chance to visit the sequence of URLs that the session has gone through to review its history. This sequence of URLs has been recorded and is updated in controller  103  as the session progresses. The user of, U-N is also afforded an option to browse new HTML documents synchronously with other collaborators and, in this example, with the service agent. When that option is exercised, controller  103  sends the current URL to surrogate  108 -N. The latter then directs web browser  106 -N to open the HTML document at the current URL. During the medical insurance form session, when browser  106 - 1  initiates a change in the URL, the new URL information is obtained by surrogate  108 - 1 , and the latter communicates this information to the surrogates of all other collaborators via controller  103 . Each surrogate then directs its respective browser to open the HTML document at the new URL. As such, the collaborators manage to synchronously move from one URL to another to browse documents as the session progresses. 
     In this particular embodiment, the creator of the session, i.e., the customer service agent, is afforded access to additional information that may be of a sensitive nature or proprietary or both, which is not available to other collaborators including the insured person. This is clearly indicated in HTML document displayed on a monitor as form  112  in document  110 - 1 , which includes an additional field than the form  113  in document  110 -N. Moreover, the customer service agent, in this example, has the control of leading the session. In addition, the surrogates connected to controller  103  are programmed to allow the collaborators to communicate interactively in text with one another in real time. 
     FIG. 3 is a flowchart illustrating the steps taken in a surrogate  108  employed in the process of FIGS. 2A and 2B and including an embodiment of the invention. Specifically, surrogate  108  in step  301  initializes by connecting to session controller  103  and to browser  106  and displaying the user interface. Then, control is transferred to steps  302  and  303 . In step  302 , surrogate  108  waits for an input and in step  303  a timer is set to a predetermined interval. Step  304  tests to determine if the timer has timed out, i.e., whether the predetermined interval has expired, i.e., terminated. Steps  303  and  304  are employed to insure that a polling cycle will be initiated after a predetermined interval of not receiving an input. 
     Thus, the surrogate, in this example, periodically checks the document structure for changes in the values of prescribed properties, e.g., document elements or form elements, of the document and transmits changes along with the name of the document element or form element it applies to the other collaborators in a session via a communication channel. It is noted that the documents do not have to be “collaboration aware”, i.e., documents that were not created with an awareness of the potential that they may be filled in by multiple cooperating users. The only requirement is that the surrogate be able to read and write properties of the document. To this end, the surrogate monitors the activity as collaborators, i.e., users, enter data into the documents and, specifically, in forms included in the documents, and the entered data, i.e., the change in the property along with the name of the form element it applies to, is relayed to the other users&#39; surrogates so that the correct field including the named element if present in the forms are collaboratively filled in.. This is realized in this embodiment of the invention by assigning a distinct name to each element in a form (document element). In the simple example, shown in FIG. 1, form  112  includes three elements, namely, “Name”, “Birthday” (B&#39;day), and “Age” and form  113  includes only two of the elements, namely, “Name” and “Age”. Thus, in this example, a Web-page author would assign logical names to the form elements and use for form  112  the following HTML: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT NAME=myName&gt; 
     &lt;INPUT TYPE=TEXT NAME=myBirthDate&gt; 
     &lt;INPUT TYPE=TEXT NAME=myAge&gt; 
     &lt;FORM&gt; 
     and use for form  113  the following HTML: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT NAME=myName&gt; 
     &lt;INPUT TYPE=TEXT NAME=myAge&gt; 
     &lt;FORM&gt;. 
     Returning to FIG. 3, control is then transferred from step  304  to step  305 . Returning to step  302 , upon an input control is transferred to step  305 , which tests to determine if there is a user input. If the test result in step  305  is YES, control is transferred to step  306 , where it is determined whether the named form element is available. If the test result in step  305  is NO, control is transferred to step  307 , which tests to determine if there is a session input. If the test result in step  307  is YES, control is transferred to step  306 , where again it is determined whether the named form element is available. If the test result in step  307  is NO, control is transferred to step  308 , which tests to determine if there is a browser input. If the test result in step  308  is YES, control is transferred to step  306 , where it is determined whether the named form element is available. If the test result in step  308  is NO, control is transferred to step  309  and a browser polling cycle is initiated. A browser polling cycle is shown in FIG.  4  and described below. Upon completion of the polling cycle, control is returned to step  302  which is waiting for an input and to step  303  which sets a timer, and steps  302  through  305  and steps  307  through  309  are iterated until either step  305 , step  307  or step  308  yields a YES result. Then, control is transferred to step  306 , which again tests to determined whether the named form element is available. If the test result in step  306  is NO, control is transferred to steps  302  and  303  and steps  302  through  309  are iterated until step  306  yields a YES result and control is transferred to step  310 . Step  306  yielding a YES result indicates that the named element is present in the user&#39;s form and the logical name is mapped into the physical name of the form element. This allows for the desired asymmetric collaboration. Step  310  processes the input and generates an output in accordance with prescribed criteria. Specifically, if the input is a user input as indicated in step  305 , step  310  processes it to generate a session or browser output. If the input is a session input as indicated in step  307 , step  310  processes it to generate a user or browser output. If the input is a browser input as indicated in step  308 , step  310  processes it to generate a session output. Upon processing an input and generating an output in step  310 , control is transferred to step  311 , which tests to determine if there is a user output. If the test result in step  311  is YES, control is transferred to step  312 , which sends the user output to a user interface (UI), control is returned to steps  302  and  303 , and the process is iterated as described above, i.e., steps  302  through  316  are repeated. If the test result in step  311  is NO, control is transferred to step  313 , which tests to determine if there is a browser output. If the test result in step  313  is YES, control is transferred to step  314 , which sends the browser output to the browser, control is returned to steps  302  and  303 , and the process is iterated as described above, i.e., steps  302  through  316  are repeated. If the test result in step  313  is NO, control is transferred to step  315 , which tests to determine if there is a session output. If the test result in step  315  is YES, control is transferred to step  316 , which sends the session output to the session, control is returned to steps  302  and  303 , and the process is iterated as described above, i.e., steps  302  through  316  are repeated. If the test result in step  315  is NO, control is transferred to steps  302  and  303  and the process is iterated as described above, i.e., steps  302  through  316  are repeated. 
     In this example, the surrogate continuously keeps track of the state of the forms in a document by examining the form(s) structure. That is, the surrogate polls the structure of the form(s) in the document. For example, in a browser scripting language like JavaScript, “document.forms[ 0 ]” refers to the first form in the document, “document.forms[ 1 ].elements[ 0 ]” refers to the first element of the second form in the document and so on. To this end, the surrogate executes the following polling process for each shared window in the session: 
     if browser is at a new page 
     for each form in the document 
     for each element in the form 
     remember the initial value of the form element 
     loop 
     loop 
     end-if 
     while the browser is at this page 
     for each form in the document 
     for each element in the form 
     if current value of the form element differs from the saved value 
     remember current value 
     notify other users of new value 
     end-if 
     loop 
     loop 
     loop 
     When the other collaborators&#39; surrogates receive notification of a change along with the logical name of the element, the users&#39; surrogates test to determine whether the named form element is available and, if so, update the corresponding data entry in their form. 
     FIG. 4 is a flowchart depicting the steps of applicants&#39; unique polling loop including an embodiment of the invention that is employed in the surrogate of FIG.  3 . Thus, the polling process is started via step  401 . Thereafter, control is transferred to step  402 , which tests to determine if the browser is at a new page. If the test result in step  402  is YES, control is transferred to step  403 , which causes the storage of the initial values of each element in each form of the document page. The, step  404  goes to the first form on the new page. Thereafter, control is transferred to step  405 , which tests to determine if the current form element has changed. Returning to step  402 , if the test result is NO, the browser is not at a new page and control is transferred to step  405 . If the test result in step  405  is YES, step  406  causes a form element value change event, i.e., a browser input, to be generated and supplied as an input to step  302  and  303  of the surrogate in FIG.  3 . Then, control is transferred to step  407 , which tests to determine if this is the last form element change. If the test result in step  407  is NO, control is transferred to step  408 . Returning to step  405 , if the test result is NO, control is transferred to step  408 , which tests to determine if this is the last element of the current form. If the test result in step  408  is NO, it is not the last element in the form and step  409  causes the process to go, i.e., route, to the next form element and control is then returned to step  406 . If the test result in step  408  is YES, the current form element is the last element of the current form and control is transferred to step  410 . Returning to step  407 , if the test result is YES the current form element change is the last one and control is transferred to step  410 . Step  410  tests to determine if the current form is the last form in the document. If the test result in step  410  is NO, the current form is not the last form in the document and step  411  causes the process to go, i.e., route, to the next form in the document and control is returned to step  405 . Thereafter, steps  405  through  411  are iterated until step  410  yields a YES result indicating that all the forms in the document have been completed. Then, the unique polling process is stopped via step  412  and control is returned to the surrogate of FIG.  3 . 
     FIG. 5 is a flowchart illustrating the steps taken in a surrogate  108  employed in the process of FIGS. 2A and 2B that employs so-called event handlers and may be utilized in an embodiment of the invention. Specifically, surrogate  108  in step  501  initializes by connecting to session controller  103  and to browser  106  and displaying the user interface. Then, control is transferred to steps  502  and  503 . In step  502 , surrogate  108  waits for an input and in step  503  a timer is set to a predetermined interval. Step  504  tests to determine if the timer has timed out, i.e., whether the predetermined interval has expired. Steps  503  and  504  are employed to insure that an input check cycle will be initiated after a predetermined interval of not receiving an input. 
     Thus, the surrogate, in this example, periodically checks the document structure for changes in the values of prescribed properties of the document and transmits changes along with the name of the form element it applies to the other collaborators in a session via a communication channel. It is noted that the documents do not have to be “collaboration aware”, i.e., documents that were not created with an awareness of the potential that they may be filled in by multiple cooperating users. The only requirement is that the surrogate be able to read and write properties of the document. To this end, the surrogate monitors the activity as collaborators, i.e., users, enter data into the documents and, specifically, in forms included in the documents, and the entered data, i.e., the change in the property along with the name of the form element it applies to, is relayed to the other users&#39; surrogates so that the correct field including the named element if present in the forms are collaboratively filled in. This is realized in this embodiment of the invention by assigning a distinct name to each element in a form. In the simple example, shown in FIG. 1, form  112  includes three elements, namely, “Name”, “Birthday” (B&#39;day), and “Age” and form  113  includes only two of the elements, namely, “Name” and “Age”. Thus, in this example, a Web-page author would assign logical names to the form elements and use for form  112  the following HTML: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT NAME=myName&gt; 
     &lt;INPUT TYPE=TEXT NAME=myBirthDate&gt; 
     &lt;INPUT TYPE=TEXT NAME=myAge&gt; 
     &lt;FORM&gt; 
     and use for form  113  the following HTML: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT NAME=myName&gt; 
     &lt;INPUT TYPE=TEXT NAME=myAge&gt; 
     &lt;FORM&gt;. 
     Returning to FIG. 5, control is then transferred from step  504  to step  505 . Returning to step  502 , upon receiving an input, control is transferred to step  505 , which tests to determine if there is a user input. If the test result in step  505  is YES, control is transferred to step  506 , where it is determined whether the named form element is available. If the test result in step  505  is NO, control is transferred to step  507 , which tests to determine if there is a session input. If the test result in step  507  is YES, control is transferred to step  506 , where it is determined whether the named form element is available. If the test result in step  507  is NO, control is transferred to step  508 , which tests to determine if there is a browser input. If the test result in step  508  is YES, control is transferred to step  506 , where it is determined whether the named form element is available. If the test result in step  508  is NO, control is transferred to steps  502  and  503  and steps  502  through  508  and  520  are iterated until either step  505 , step  507  or step  508  yields a YES result. Then, control is transferred to step  506 , which tests to determine whether the named form element is available. If the test result in step  506  is NO, control is transferred to steps  502  and  503  and steps  502  through  508  and  520  are iterated until step  506  yields a YES result and control is transferred to step  510 . Step  506  yielding a YES result indicates that the named element is present in the user&#39;s form and the logical name is mapped into the physical name of the form element. This allows for the desired asymmetric collaboration. 
     Note that in step  520  events, i.e., changes in values of prescribed properties of forms in a document, are received from the browser. In this manner, the surrogate is notified by the event handlers of the changes in the forms. These events are supplied to the surrogate as browser inputs. To realize this, however, the event handlers need to be inserted into the document and, hence, into the forms therein. Moreover, the event handlers can also be dynamically inserted into documents that are not collaborative aware. The only requirement being that there is a capability to insert the event handlers into the document. To this end, the event handlers may be inserted into the document by a WEB page author. The insertion of these event handlers can occur at the WWW server  102  (FIG. 1) providing the document, or be effected by the surrogate once the document has been retrieved. 
     In the HTML document used in this example and shown in FIG. 1 a WEB page author can use JavaScript to insert event handlers in form  112  as follows: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT ONCHANGE=“nameChangeHandler( )”&gt; 
     &lt;INPUT TYPE=TEXT ONCHANGE=“birthdayChangeHandler( )”&gt; 
     &lt;INPUT TYPE=TEXT ONCHANGE=“ageChangeHandler( )”&gt; 
     &lt;FORM&gt; 
     and in form  113  as follows: 
     &lt;FORM&gt; 
     &lt;INPUT TYPE=TEXT ONCHANGE=“nameChangeHandler( )”&gt; 
     &lt;INPUT TYPE=TEXT ONCHANGE=“ageChangeHandler( )”&gt; 
     &lt;FORM&gt; 
     to specify that the JavaScript function “nameChangeHandler( )” be invoked everytime the value of the “name” field of the form changes, that “birthdayChangeHandler( )” be invoked everytime the value of the “birthday” field of the form changes, and that “ageChangeHandler( )” be invoked every time the “age” field of the form changes because of a user input. Again, these event handlers communicate with the surrogate to transmit the changed value to other collaborators&#39; surrogates where the field, i.e., form element, in the corresponding form is appropriately changed. This process, however, requires that the WEB-page author be aware of the possibility that the WEB-page will be viewed by multiple users simultaneously, and that the users will fill in the form collarboratively and interactively. 
     Alternatively, JavaScipt code in the surrogate is used to dynamically insert event handlers as follows: 
     document.forms[ 0 ].elements [ 0 ].onChange=changeHandler; 
     to specify that the JavaScript function “nameChangeHandler( )” be invoked everytime the value of the “name” field of the form changes. Again, these event handlers communicate with the surrogate to transmit the changed value to other collaborators&#39; surrogates where the field in the corresponding is appropriately changed. This process, however, does not require that the WEB-page author be aware of the possibility that the WEB-page will be viewed by multiple users simultaneously, and that the users will fill in the form collarboratively and interactively. It does require, however, that the surrogate have the capability to insert event handlers into the document. 
     The above-noted JavaScript code statements are examples of code that can be employed to insert event handlers into the document. It will be apparent to those skilled in the art that further fields may be employed along with appropriate code to specify the corresponding changeHandler functions. 
     A process for associating event handlers with form elements is shown in FIG.  6 . The process is started in step  601 . Thereafter, control is transferred to step  602 , which causes a form to be obtained. Then, step  603  associates the event handlers with form elements. Thereafter, step  604  tests to determine if the current form element is the last element in the form. If the test result in step  604  is NO, control is returned to step  603  and steps  603  and  604  are iterated until step  604  yields a YES result and control is transferred to step  605 . Step  605  tests to determine if the current form is the last form in the document. If the test result instep  605  is NO, control is transferred to step  606 , which causes another form to be obtained. Thereafter, control is transferred to step  603  and steps  603  through  606  are iterated until step  605  yields a YES result and the process is stopped via step  607 . 
     Returning to FIG. 5, step  510  processes the input and generates an output in accordance with prescribed criteria. Specifically, if the input is a user input as indicated in step  305 , step  310  processes it to generate a session or browser output. If the input is a session input as indicated in step  307 , step  310  processes it to generate a user or browser output. If the input is a browser input as indicated in step  308 , step  310  processes it to generate a session output. Upon processing an input and generating an output in step  510 , control is transferred to step  511 , which tests to determine if there is a user output. If the test result in step  511  is YES, control is transferred to step  512 , which sends the user output to a user interface (UI), and control is transferred to steps  502  and  503 . If the test result in step  511  is NO, control is transferred to step  513 , which tests to determine if there is a browser output. If the test result in step  513  is YES, control is transferred to step  514 , which sends the browser output to the browser, and control is transferred to steps  502  and  503 . If the test result in step  513  is NO, control is transferred to step  515 , which tests to determine if there is a session output. If the test result in step  515  is YES, control is transferred to step  515 , which sends the session output to the session, and control is transferred to steps  502  and  503 . If the test result in step  515  is NO, control is transferred to steps  502  and  503  and the process is iterated as described above, i.e., steps  502  through  515  are repeated. In this example, as seen from the above description, the surrogate continuously keeps track of the state of the forms in a document by being notified by the browser through the event handlers of changes in the values of the form elements in a document. When notification of a change is received by the other collaborators&#39; surrogates, the users assume that their document is identical to the source document, and update the corresponding data entry in their form. 
     In the course of a session, the collaborators may point and click at a specified icon on their computers using a mouse device to make, for example, text-chat connections for exchanging their opinions on filling out the form elements as the HTML documents unfold before them. However, it will be appreciated that a person skilled in the art may program controller  103  to enforce certain access control. For example, controller  103  may afford different collaborators  103  different capabilities during a collaborative session. Controller  103  may also enforce a priority scheme whereby the collaborators take turns to lead the session and communicate with one another. Other computer users who want to either create a session or join an on-going session go through the similar process to that of U- 1  through U-N described above. However, a controller may be overloaded at a certain point as more and more collaborators joining a particular session regulated by the controller. Because of the server-based architecture of server system  100  where intelligence and information on every user&#39;s connection resides in manager  104 , the system capacity is readily scaleable to accommodate a growing number of the collaborators, without affecting the service quality. Once the number reaches a predetermined threshold at a controller, manager  104  employs a new controller to connect the additional collaborators. The new controller and existing controllers for the same session dynamically reorganize themselves in a hierarchy to facilitate communications with one another and their coordination to carry out the session in a synchronous manner. FIG. 7 illustrates one such hierarchy, where the existing controllers (denoted by circles marked “E”) and the new controller (denoted by a circle marked “N”) form a star topology. In this hierarchy, controller  701  acts as an information center and efficiently distributes information from any of the controllers to all other controllers. 
     Furthermore, as more and more controllers are engaged, the initial capacity of server system  100  may run out. Again, because of the inventive architecture of server system  100 , a new controller may be engaged using additional hardware, which can be easily absorbed into server system  100 . 
     Similarly, when the number of sessions exceeds a predetermined threshold, multiple managers similar to manager  104  are instituted and the managers are dynamically reorganized in a hierarchy similar to that of FIG.  7 . 
     FIG. 8 shows, in simplified block diagram form, details of another communications system (call center) including an embodiment of the invention that, typically, would be employed in a company&#39;s customer service organization. Specifically shown is server system  800  that includes a plurality of customer service agent stations, i.e., computers  801 - 1  through  801 -M. Each computer when operating includes a browser and surrogate, for example computer  801 -K includes browser  802 -K and surrogate  803 -K. Also shown is local area network (LAN)  804  for interconnecting the components of server system  800 . Theses components further include, for example, host computer  805  and private branch exchange (PBX)  806 . LAN  804  also interfaces WWW server  807  and manager  809 . Controller  808  interfaces directly with WWW server  807  and manager  809 . Customers, clients, or others seeking service and/or advice may interface server system  800  via the World Wide Web (WWW)  810  through use of, for example, personal computer  811 . Computer  811  also includes browser  812  and surrogate  813 . Specifically, Browser  812  establishes a link  814  through WWW  810  to WWW server  807 , while surrogate  813  established communications to controller  808  via link  815 . Assuming that the customer service agent is employing computer  801 -K. Then, operation of the communications between the customer at computer  811  and the customer service agent at computer  801 -K is essentially identical to that described above in relationship to FIG. 1 where a customer is employing computer U-N and the customer service agent is employing computer U- 1 .