    
    xinha_default_config = function () { return new HTMLArea.Config(); }
    
    // This contains the names of textareas we will make into Xinha editors
    xinha_init = function()
    {
      /** STEP 1 ***************************************************************
       * First, what are the plugins you will be using in the editors on this
       * page.  List all the plugins you will need, even if not all the editors
       * will use all the plugins.
       ************************************************************************/

      xinha_plugins = xinha_plugins ? xinha_plugins :
      [
        
      ];
             // THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :)
             if(!HTMLArea.loadPlugins(xinha_plugins, xinha_init)) return;

      /** STEP 2 ***************************************************************
       * Now, what are the names of the textareas you will be turning into
       * editors?
       ************************************************************************/

      xinha_editors = xinha_editors ? xinha_editors :
      [
        
      ];

      /** STEP 3 ***************************************************************
       * We create a default configuration to be used by all the editors.
       * If you wish to configure some of the editors differently this will be
       * done in step 4.
       *
       * If you want to modify the default config you might do something like this.
       *
       *   xinha_config = new HTMLArea.Config();
       *   xinha_config.width  = 640;
       *   xinha_config.height = 420;
       *
       *************************************************************************/

       xinha_config = xinha_default_config();
       xinha_config.panel_dimensions.right = '100px';
       xinha_config.hideSomeButtons(xinha_undesired_buttons);

      /** STEP 3 ***************************************************************
       * We first create editors for the textareas.
       *
       * You can do this in two ways, either
       *
       *   xinha_editors   = HTMLArea.makeEditors(xinha_editors, xinha_config, xinha_plugins);
       *
       * if you want all the editor objects to use the same set of plugins, OR;
       *
       *   xinha_editors = HTMLArea.makeEditors(xinha_editors, xinha_config);
       *   xinha_editors['myTextArea'].registerPlugins(['Stylist','FullScreen']);
       *   xinha_editors['anotherOne'].registerPlugins(['CSS','SuperClean']);
       *
       * if you want to use a different set of plugins for one or more of the
       * editors.
       ************************************************************************/

      xinha_editors   = HTMLArea.makeEditors(xinha_editors, xinha_config, xinha_plugins);

      /** STEP 4 ***************************************************************
       * If you want to change the configuration variables of any of the
       * editors,  this is the place to do that, for example you might want to
       * change the width and height of one of the editors, like this...
       *
       *   xinha_editors.myTextArea.config.width  = 640;
       *   xinha_editors.myTextArea.config.height = 480;
       *
       ************************************************************************/

      function merge_object(a,b)
      {     
        for(var j in b)
        {
          if(typeof a[j] != typeof b[j] || typeof b[j] != 'object')
          {
            a[j] = b[j]
          }
          else
          {
            merge_object(a[j], b[j]);
          }
        }
      }
      
       
      for(var o in xinha_editors)
      {      
        var xn_eval = "{ }";
        var xn_config = null;
        
        if(typeof xinha_editors[o]._textArea.hasAttribute != 'undefined')
        {
          if(xinha_editors[o]._textArea.hasAttribute('xinhaconfig'))
          {
            xn_eval = xinha_editors[o]._textArea.getAttribute('xinhaconfig');
          }
        }
        else if(typeof xinha_editors[o]._textArea.xinhaconfig != 'undefined')
        {
          xn_eval = xinha_editors[o]._textArea.xinhaconfig;
        }
        
          var xn_config = null;          

          try
          {
            if(!/^\{/.test(xn_eval)) //\}
            {
              eval("xn_config = {" + xn_eval + "}");  
            }
            else
            {
              eval("xn_config = " + xn_eval);
            }
          }
          catch(e)
          {
            try
            {
              xn_config = eval(xn_eval);  
            }
            catch(e)
            {
              continue;
            }
          }
          
          if(typeof xn_config == 'object')
          {
            merge_object(xinha_editors[o].config, xn_config);
          }
        
        
        var cfg = xinha_editors[o].config;
        
        if(cfg.stylistStyles && cfg.stylistLoadStyles)
        {          
          for(var x = 0; x < cfg.stylistStyles.length; x++)
          {            
            if(cfg.stylistStyles[x].styles.length)
            {
              cfg.stylistLoadStyles(cfg.stylistStyles[x].styles, cfg.stylistStyles[x].friendly);
            }
            else
            {
              cfg.stylistLoadStylesheet(cfg.stylistStyles[x].styleSheet, cfg.stylistStyles[x].friendly);
            }            
          }
        }
        else if(HTMLArea.ripStylesFromCSSFile)
        {
          for(var x = 0; x < cfg.pageStyleSheets.length; x++)
          {
            var newStyles = HTMLArea.ripStylesFromCSSFile(cfg.pageStyleSheets[x]);
            for(var i in newStyles)
            {
              cfg.css_style[i] = newStyles[i];
            }
          }
        }
      }

      /** STEP 5 ***************************************************************
       * Finally we "start" the editors, this turns the textareas into
       * Xinha editors.
       ************************************************************************/

      HTMLArea.startEditors(xinha_editors);     
    }
    
    function init_xinha_fields()
    {
      var textAreas = document.getElementsByTagName('textarea');
      for(var i = 0; i < textAreas.length; i++)
      {
        if(textAreas[i].className.match(/html(area)?Field/))
        {
          // Got one.
          xinha_editors[xinha_editors.length] = textAreas[i].id;
        }
      }
      if(xinha_editors.length) xinha_init();
    } 
