*****************************************************************
*                                                               *
*                           CooCoo(F1.52)                       *
*                            Java Applet                        *
*                         Written by Mark Qian                  *
*                                                               *
*****************************************************************

   


CooCoo is a cool web-communication machine.
It allows its users to chat, call-to-chat, display ad, 
news, and more... The AdWare version of CooCoo is FREE!
Shareware version is also availabel. TOP 5% at JARS. 

This may not be the latest version.  Please get the latest
version at CooCoo's home

  http://www.coolshare.com/html/app_coo.htm

Detail instructions for installation are available there.


CooCoo is DFFERENT because:


  A. Call-to-Chat - Call the person to chat

         CooCoo comes with a Call Center where you can "call"
         people who are not currently in CooCoo's chatroom.
         After placing a "chat call", you can switch to other
         applications (you can also icon your CooCoo. Move
         the browser to other pages? No problem! CooCoo will
         live until you shut down the browser.) and CooCoo will
         prompt you when the person you called logs in to CooCoo. 
        


  B. Easy Chat -  for most personal pages

          CooCoo's chat system does not requires a program
          running in background(daemon) in the server(Most ISPs
          do not allow their users run such a background
          program).  This means CooCoo can be installed
          on any personal home page where CGI and Perl 
          are supported.


  C. No firewall problem

         CooCoo's users will not be blocked by
         firewalls since the communication is
         done with https.          


  D. Easy advertising banner with sound

         CooCoo displays an advertisement banner in a HTML
         style. Ad images are fetched from the server periodically
         in a random or specified order. It is "easy" because
         it is not neccessary for the resource (image and sound files) 
         to reside in your site. Only thing you need to provide
         is their URLs.  This is great for most of personal sites
         since it make CooCoo's ad is affordable to these sites with
         limited bandwidth(MB/Day): the images and sound can be 
         fetched from other's site instead of yous!

         Another great feature of HTML style is that gif anmation
         is supported in the ad banner.

         In additional, a sound file (any sound format support by
         your browser) can be easily attached to an ad image.

     E. Smart news

         CooCoo starts displaying news line by line automatically 
         if there is no chat activity for a specified period.
         The news will be stoped as soon as people start chating.
         This feature can be turn off from CooCoo but users.

         Maintenace of these text files is easy: just place all the
         news text files in a specified directory and
         CooCoo will pick up one at a time randomly.

     F. Smart sleep capability

         Bandwidth and CPU usage are limited in
         most personal pages.  To reduce their
         usage, CooCoo comes with a sleep
         function: CooCoo will sleep if there
         is no user activity after a specified
         period.  That is, CooCoo will not
         update info such as chat log, news,
         ad, and so on untill users do something
         like moving their mouse.




Parameters:

         cgibase  - The URL where coocoo.cgi resides

         adperiod  - determent the frequency of updating ad banner. Default is 9.

         callerperiod  - determent the frequency of checking calls. Default is 50.

         userlistperiod  - determent the frequency of updating user list. Default is 15.

         clearuserperiod - period to clear the user list.  It is neccessary
                        to clear user list because some users may be
                        disconnected before they log off.  CooCoo need to
                        clear user list periodatically.  Note: if you set
                        clearuserperiod < userlistperiod
                        you will clear all the login users too.  So DON"T
                        set clearuserperiod < userlistperiod !! 
                        Default is 100.

         roomlistperiod - Similar to userlistperiod except it is for room list. 
                         Default is 15. 

         clearroomperiod - Similar to clearuserperiod except it is for room list. 
                         Default is 200.  

         maxRoom -      Maximum number of rooms.

         passwordfile - specify the file where passwords are stored.  Default is
                        "password".              
              
         ownertips - content of tooltips on Call Site Owner button

         callcentertips - content of tooltips on Call Center button

         nonmemberbutt - label of button for non-member log on. Default is "Non-member log on".

         memberbutt - label of button for member log on. Default is "Member log on".

         memberon - show member log on button if 1. Hide the button if 0. Default is 1.

         nonmemberon - show non-member log on button if 1. Hide the button if 0. Default is 1.

         loginmsg - the message appear at the bottom of the log on screen. It can be a HTML text.
                    Default is

                   <h3>Please enter a nick name and click at a connect button.<h3>You can test member log on with following password: <br><b>guest</b>"

                    
                   Note: This message is not the one displayed initially in the lower part of CooCoo's
                         screen.  The initial message is displayed in coo2.htm.

         logintitle - the title text displayed in log in screen.  Defualt is "CooCoo Chat".

         fgcolor - foreground color of CooCoo. It accept HTML color format
                   such as "FFFFFF" for white and "000000" for black. 
                   Default is black.

         bgcolor - background color of CooCoo. Default is light gray.
                           
         refreshperiod  - determent the frequency of updating chat log. 
                   Default is 5.

         newsperiod  - determent the frequency of posting news. Default is 50.

         newswait    - determent how long the period from 
                       no chating activity to launching news.Default is 100.


         newsState  - determent the initial state of the News Check Box.
                      1 - checked
                      0 - unchecked

                      Default is 1.

         newson     - determent if the News Check Box is accessable.
                      1 - enabled
                      0 - disabled

                      Default is 1.

                      Note: the check box will disappear if newDir is ignore.


         ownername   - Owner's login name. CooCoo will notice
                       the user with this name as owner.
                       If this parameter is ignore the "Call site owner now"
                       button will disappear.

         owneremail  - Owner's email. Ignore this field if you
                       don't want to have to Call Owner button.

                       If this parameter is ignore CooCoo won't send email 
                        notice.

         waitsleep   - the period CooCoo will sleep if no uesr action. 
                       Default is 50.

         newswait    - determent how long the period from 
                       no chating activity to launching news.
                       Default is 100.

         imageInfo  - name of the file where ad info is stored
                       Default is "image_info".

         showSleeper - CooCoo will update user list while sleeping if set to 1.
                       Otherwise not update user list - this will cause sleeping
                       users disappear from the user list but save some CUP time
                       and bandwidth in your server.
                       Default is 1.

     
         datadir  - Name of sub directory where data files reside.
                    Since some ISPs don't allow the CGI directory
                    to be set to writable. So it is recommended that
                    you better create a sub directory right under
                    your CGI directory where coocoo.cgi resides.
                    (If you set datadir to "" or ignore it, the data
                     files will be written in your CGI directory).
                    

         imagedir     - a sub directory(includ the related path if
                        it does not reside directly under cgibase)
                        under cgibase to contain ad images and the 
                        file specifed by m_imageInfo

                     Ignore it if you don't want ad.

         newsdir     - a sub directory(includ the related path if
                        it does not reside directly under cgibase)
                        under cgibase to contain text files which
                        contains news text.

                        Ignore it if you don't want news.

        sleepupmax   - the period which CooCoo will update screen
                       right after it is waken up if it sleep longer
                       than sleepupmax. 
                       Default is 300.

       soundstate    - Sound for ad if 1 and sound for chat if 2.
                       No sound if 0.
                       Default is 2.
 
        adwidth      - width of ad banner.
                       Default is 550.
 
        adheight     - height of ad banner.
                       Default is 300.

       
         maxchatline - maximum number of line in chat log file.
                       if the nummber of line in chat log file
                       exceeds maxchatline, CooCoo will clear
                       chat log file.
                       Default is 100.


         button1 - Specify the first "customized chat button"

         button2 - Specify the 2nd "customized chat button"

           ...

         buttonn - Specify the Nnd "customized chat button"

                   More details about "customized chat button":

                       CooCoo allow its own customize five buttons
                       in "Click here" section under the chat window.

                       There are three fields in value of button1 through
                       buttonN separated by delimitor "^#^":

                       1). button label  2). text to be post to chat log
                       3). sound when post

                   Example:  

     <param name=button1 value="Hello^#^Hello, folks!^#^sound/SOUND22.AU">

     The "customized chat button" above has "Hello" as its button label,
     "Hello, folks!" as posted test, and "sound/SOUND22.AU" as posted sound.





Detail Instructions for installation:
                                             
   1).  
       Download coocoo.zip

   2). Unzip coocoo.zip in a temperary directory, say c:\tmp_coo, 
       in your local machine.
  
      At this time, you should have following files in c:\tmp_coo
       
         sound25.au
         sound22.au
         laugh.au
         FILE_ID.DIZ
         Readme.txt
         coo2.htm
         coo.htm
         coo1.htm
         coocoo.cgi
         coocoo.class
         app_coo.htm
         zzz*.class  (total 9 files with names started with "zzz")
         
           

   3). Upload all the class, au files and app_coo.htm above to the 
       html diretory in you server, say my-html.

       Note: all the class and au files have to be uploaded with binary mode
                 while htm file should be uploaded with ASCII mode.

       so far, you have following directory and files:

          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")
          
          


   4). Make sure CGI and Perl are enabled at the directory where
       parameter "cgibase" points to, say my-cgi.  
       And make sure my-cgi is readable and executable (750)
       Upload coocoo.cgi to my-cgi and set its access attribute
       to readable and executable(750).

       so far, you have following directory and files:

          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")

          my-cgi
          my-cgi/coocoo.cgi


   5). Creat a sub directory right under my-cgi with value of 
       datadir above as its name such as "data". 
       Set the access attributes of "data" 
       to readable, writable, and executable (770).

       VERY IMPORTANT: You have to set this directory to 
                       readable, writable, and executable (770).


       so far, you have following directory and files:


          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")

          my-cgi
          my-cgi/coocoo.cgi
          my-cgi/data

   6). Creat a sub directory right under "data" with value of 
       imagedir above as its name such as "images"
       and set it to readable and executable(750). 

       
       so far, you have following directory and files:


          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")

          my-cgi
          my-cgi/coocoo.cgi
          my-cgi/data
          my-cgi/data/images
       


   8). Create a file with value of imageinfo above as its 
        name such as "image_info". Each line of this file has
        three fields divided by delimitor "^#^":

        1). URL of the image  
        2). URL of the link to be opened when clicking at the image
        3). URL of the sound  

       Example of a single line in the file:  

       http://www.coolshare.comhtml/image/image1.gif^#^http://www.coolshare.com^#^http://www.coolshare.com/sound/au1.au

       will display image with url http://www.coolshare.comhtml/image/image1.gif
       sound with url http://www.coolshare.com/sound/au1.au
       and open http://www.coolshare.com/ when the image is clicked

       You also need to set this file to readable(740).

       so far, you have following directory and files:


          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")

          my-cgi
          my-cgi/coocoo.cgi
          my-cgi/data
          my-cgi/data/images
          my-cgi/data/images/image_info

   9). Creat a sub directory right under "data" with value of 
       newsdir above as its name such as "news"
       and set it to readable and executable(750). 

       Copy all the files (such as new1, new2, ... newX)
       contains news text into this directory, "news", and
       set them readable(740).

       
       so far, you have following directory and files:


          my-html
          my-html/sound22.au
          my-html/sound25.au
          my-html/laugh.au
          my-html/app_coo.htm
          my-html/coocoo.class
          my-html/zzz*.class  (total 9 files with names started with "zzz")

          my-cgi
          my-cgi/coocoo.cgi
          my-cgi/data
          my-cgi/data/images
          my-cgi/data/news
          my-cgi/data/news/new1
          my-cgi/data/news/new2
          ...
          my-cgi/data/news/newX

       

   10). Modify app_coo.htm:

        In the <SCRIPT> section at top of app_coo.htm, there is a Javascript
        function

        function OpenCooCoo() {
           Coo=window.open("http://www.coolshare.com/html/coo.htm","CooCoo", "width=560,height=425");
        }

        Set the first parameter to the complete URL of coo.htm.
        In our sample, it is http://.../my-html/coo.htm.


   11). Modify coo1.htm:

         set the parameter, cgibase, to http://.../my-cgi

       Note: the value of cgibase has to be a complete URL.

   12). If you like to provide member password logon, you 
        need to create a file named password under data directory
        with following content

            yourpassword^#^anonymous 
            ownerpassword^#^ownername 

        where yourpassword is the password for all members and
        ownerpassword is the password for owner.

        The password for owner is neccessary if you like to log on
        as an owner.


        The memer logon of CooCoo in this version only support a
        single password for all members.



   13). Test CooCoo:

       Browse app_coo.htm to test it.

       You may want to make sure coocoo.cgi work fine and environment setup fine by
       browsing following url

          http://www.your-site.com/your-cgi-dir/coocoo.cgi?action=test&datadir=data

       where
          
          http://www.your-site.com/your-cgi-dir/ is the url of directory where coocoo.cgi resides
          data is value of coocoo's parameter in Applet tag (note: don't use slash)




       If you get OK that means the environment in server side is OK.
       Otherwise, you will get error messages and instructions to fix.   
  


   14). A list of errors:

       - If you get a message box pop up with "Document contains no data" or get
         "java.io.IOException: Document contains no data" in your java console,
         it may means that you didn't set coocoo.cgi to executable.
         You may want to execute command

             chmod 755 coocoo.cgi 

         to make it executable in yout UNIX shell.


       - If you get a message box pop up with "cant open File in create file: ..." or get
         "List Item:cant open file6: ..." in your java console,
         it may means that the directory that datadir specifies is not writable
         You may want to execute command

             chmod 770 data 

         to make it writable in yout UNIX shell.
         

       

 
       Contact Mark Qian(ok@coolshare.com) if you get any problem.
    
       If you are not confortable with those buttons 
       and news in CooCoo with Mark's info
       you may want to get a registered shareware version.



       
