This document works through the major changes between
      NetTalk 6 and NetTalk 7. It is designed for users, currently experienced
      with NetTalk 6 to quickly identify, and use, the new features in NetTalk
      7. It covers things that are likely to break when you upgrade your app,
      and instructions on how to correct the application to allow for a smooth
      upgrade. It also covers other optional information which you may wish to
      make use of in your application. 
     The goal of this section is a quick overview of things
      that have changed since NetTalk 6 which experienced NT6 users will want to
      know about. Since there are a few changes in NetTalk 7 which invalidate
      things that were true in NetTalk 6, and unlearning previously sound
      information and habits is hard, please pay particular attention to this
      section.
      
StringTheory is now required
       In the past the 
StringTheory
        class was required only for specific parts of NetTalk. However as
        NetTalk does an enormous amount of string processing, across all
        objects, and because some of the new features require code already in
        StringTheory, we've decided to make StringTheory a "Required" product
        rather that an "Optionally required" product. 
NetSimple.Send method for sending a StringTheory object
       The current way to call the .Send
        method is to prime the object.packet.bindata
        and object.packet.bindatalen fields, and
        then call the .Send method. The primary
        limitation of this is the size of the object.packet.bindata
        field, if the string you are sending is bigger than this then you need
        to break your string into slices before sending. This is true for
        NetSimple and all classes based on NetSimple.
        
        Because NetTalk 7 treats StringTheory as a requirement, not an optional
        extra, there is now a .Send method that
        takes a StringTheory object (of any size) as a parameter. This means
        that you no longer need to code the slicing yourself, rather the class
        will do it for you. This has ramifications in both the internal classes,
        and in your own code, by simplifying the amount of code necessary to
        send large packets.
      
      More control over included scripts
       With each new version the amount of included
        JavaScript continues to grow. This is good because it means access to
        more and more functionality in the browser, but it is also bad because
        it makes the all.js file grow larger. Because some of this functionality
        is optional, there are now more settings on the WebServer / Scripts tab
        to allow you to exclude features you are not using. For example, if you
        have no Image Gallery functionality in your app then you can suppress
        the Image Gallery JavaScript from being included. 
      New fields default to jQuery on
       Checkboxes and Radio buttons now default to "Use
        jQuery buttons" on. (If your app is still on NT4 or NT5 then it means
        that Radios and Checks will automatically change to the jQuery style if
        you upgrade directly to NetTalk 7, without upgrading to NetTalk 6.
      Clarion 5.5 support is fading ever faster
       With NetTalk 7, Clarion 5.5 is no longer officially
        supported. Unofficially NetTalk may still compile and run in Clarion
        5.5, however there may be limitations as to what can be achieved. Web
        apps in particular are not recommended for C5.5 because of the threading
        limitations, and the inability to turn the server into a Windows
        Service. Because of these limitations it is expected that support for
        Clarion 5.5 will be dropped completely in the short-to-medium term. 
      jQuery updates
       jQuery core has been updated to version 1.8.3 which
        is a relatively small step from NetTalk 6. However jQueryUI has gone
        from 1.8.x to 1.9.x, which is a larger jump than it seems.
        
        1.9 is designed to be an interim step in changing to jQueryUI 2.0. As
        such it has the option to either include, or exclude features that are
        in 1.8, but won't be in 2.0. By default, NetTalk 7 turns the features
        off. you can turn it back on if you need to, but you should then
        research the updates required to bring your custom code up to 2.0
        levels.
        
        jQueryMobile has also been updated to version 1.2.x. With the library
        being very "young" it's likely that this will change over the course of
        the release cycle. 
      New Themes
       A new theme, called Shoestrap, has been added to the
        default set of styles. The style is based on a jQueryUI implementation
        by 
          Addy Osmani of the 
Bootstrap style (made popular by the folks at
        Twitter). 3 variations of the style exist. In addition a theme modeled
        somewhat after the Windows 8 tiles look is also included.
        
          
            
              | Name | Description | 
            
              | Shoestrap1 | Basic style, no colors on buttons | 
            
              | Shoestrap2 | Icons on buttons are colored. Buttons are colored, icons are
                white. (Note that you will need to refresh the buttons list in
                the WebServer to fully appreciate this style) | 
            
              | Shoestrap3 | Buttons are colored, icons are white. (Note that you will need
                to refresh the buttons list in the WebServer to fully appreciate
                this style) | 
            
              | MetroBlue | A Windows 8 style look. | 
            
              | Aristo, Absolution | Included with later NT6 builds, these themes are good
                alternatives to the jQuery UI themes. | 
            
              |  |  | 
          
        
      Support for Google Fonts
       You are able to link in one or more fonts from the
        Google Fonts repository. Fonts can be added in the WebServer procedure,
        on the Settings, Styles, Fonts tab. Note that this setting is Case
        Sensitive and you need to match the name of the font to the name in
        Google's repository exactly.
        The Google Font Repository can be found at 
http://www.google.com/webfonts.
        
        Once you have selected the font(s) you want to use, you will need to
        edit the themes to support that font. Search for font-family in
        jquery-ui.css and nettalk-ui.css for the use of Font-Family. There are
        typically 3 places (2 in jquery-ui.css and 1 in nettalk-ui.css that need
        changing.)
      
WebServer Window
      
        
          -  Number of connections is now noted on the Performance Monitor
            control template. (You will need to re-populate the template to see
            the effect.)
-  The Port the server is listening on is automatically added to the
            window caption.
-  The IP Address of the client is now in the Log in the previous
            "Port" column. To see in your app change the List Box properties of
            the Log list, so the first column is @S30,
            header IP Address. 
 
    
      Redactor HTML Editor
       Redactor is an alternative to the TinyMCE HTML text
        editor. While both editors have strengths and weaknesses, the Redactor
        code is smaller and thus pages will load faster. It also has some very
        nice features for uploading images, and files, as part of the HTML. 
        
        CapeSoft has purchased an OEM license for Redactor from 
Imperavi so you are free to use Redactor in your
        NetTalk apps without needing to purchase an additional license.
        
        Using the Redactor HTML editor requires one global setting and one local
        setting.
        
        The global setting is located in the WebServer procedure, in the NetTalk
        extension. Go to Settings, Scripts and tick on the option 
Include
          Redactor HTML Editor Script.
        
        
 
        
        The local setting is located on the Form Field which you want to make
        into a HTML editing field. Go to the form, to the field, and tick on the
        option to Allow xHtml. Then Selected Redactor as the editor of choice.
        
        
 
        
        The Redactor is (by default) in English. However additional languages
        are supported by Imperavi. Adding support for another language is as
        follows;
        
          -  
              Download the language file that you need.
- Save it in your scripts file as redactor.xx.js, where xx is the
            redactor language code. (eg for spanish, es, it would be saved as
            redactor.es.js)
- Go to the WebServer procedure, to the NetTalk extension, Settings,
            Scripts tab, and set the language to the Redactor code, without any
            quotes. For example, for Spanish, put just es
 
  
Asynchronous File Uploader
       The File Upload form field in NetTalk 6 is a native
        HTML File Upload field. While this is functional, it does not take
        advantage of the new File Upload support offered by HTML5 browsers.
        NetTalk 7 has a more advanced File Upload file, which supports;
        
          - Multiple File Uploads (Not IE 9 or lower)
- Progress Bars while files are being uploaded (Not IE8 or lower)
- The ability to Cancel an upload once it has started
- Drag and Drop files from the operating system directly onto the
            web page (not IE9 or lower)
- File uploads can commence as soon as the file is selected.
        By default the new uploader is used automatically wherever a File Upload
        field exists in your application, however there is a template option to
        revert to the old field type if you prefer. 
        
        Documentation on the methods and options of the new file uploader can be
        found here.
Spinner
       The Spinner form field type allows you to use a
        spinner control instead of a Number or Range control for entering
        numbers. 
      Media
       The Media control allows you to include non-html
        elements on your form. It does this my making use of an appropriate
        plugin for the media. For example, a PDF can be included on a page if
        the user has the Adobe PDF Plugin installed in their browser.
        
        The following plugins, and their associated media are supported;
        
          
            
              | Plugin | File Types | 
            
              | iframe | HTML, PDF | 
            
              | Silverlight | XAML | 
            
              | Real Player | RA, RAM, RM, RPM, RV, SMI, SMIL | 
            
              | Windows Media Player | ASX, ASF, AVI, WMA, WMV | 
            
              | Flash | FLV, MP3, SWF | 
            
              | Quicktime | AIF,AIFF,AAC,AU,BMP,GSM,MOV,MID,MIDI,MPG,MPEG,MP4,M4A,PSD,QT,QTIF,QIF,QTI,SND,TIF,TIFF,WAV,3G2,3PG | 
          
        
        A new example, Media (74) has been included to show some of the media
        control in action. 
 
    
      Procedures
       Other Browse procedures can now be added into a
        Browse column. Typically the column is set to span across the width of
        the browse, and the line above it is set to expand and collapse the
        browse row. think of this as a form of Drill down. 
      Checkboxes
       Edit in place in browse columns can now use jQuery
        styled Checkbox buttons. 
      Browse Anchors
       If you are building a site that contains a browse,
        and you want a permanent link to be available to a particular browse
        row, then you can use Browse Anchors. An example of this is the
        downloads page on the CapeSoft web site. The page is located at 
          https://capesoft.com/downloads and it is a file-loaded browse.
        However from each product page we want to link directly to the download
        for a specific product. For example 
https://capesoft.com/downloads#nettalk7.
        This is possible because each browse line has an Anchor.
        
        The anchor is set on the Browse Column properties, and needs to be
        something unique for the browse. It can be memorable (like the product
        name I used) or it could be something specific like the ID field for the
        browse.
        
        The field is an expression so can consist of another field in the table,
        or a collection of fields in the table.  
        
        Note that this just creates an anchor on the page. The URL of the page,
        especially for a page-loaded browse, can be slightly more complicated to
        construct, so for now this feature is best suited to file-loaded
        browses.
      
Other Browse Options
      
        
          - Browse Animate speed for multi-row, compacting browses. Use 0 for
            instant.
 
     
     
      As mentioned earlier StringTheory is now required by NetTalk. This will
      result in a number of optimizations over the next while to take advantage
      of that code. The first, and most significant feature so far though is the
      ability for StringTheory to compress blocks of text on the fly. This has
      resulted in a number of options being added to the advanced tab of the Web
      Server procedure.
      
      
Compress Static Files
       If this is on, then static files in the web folder,
        which do not have a pre-compressed .gz file present, and which do not
        include a 
        <!-- NetWebServer --> header, will be
        compressed on-the-fly before they are sent to the client. For example,
        if you have a static html file called 
home.htm
        in the web folder, then when the server serves this file it will be
        compressed before sending (assuming that the browser has indicated in
        the request that compressed files are acceptable.)
        
        This should speed up the transmission of pages and files, especially on
        slower connections. 
        
        The following file types are not compressed, because they already
        contain compressed code; 
*.saf, 
*.zip,
        
*.gz, 
*.rar, 
*.7z, 
*.jpg and 
*.png.
        This list may be expanded in the future.
Compress Dynamic Data
       Because most of the page requests in a web
        application are dynamic, this option has the potential to speed up
        communication between the browser and server even more than compressing
        static files. When this option is on all the dynamic content of the page
        is buffered, and then when the response is complete it is compressed and
        sent.