( function( global )
{
  global.tinyMCESettings = {
    base: {
      script_url: '/js/vne/tinymce/tiny_mce.js',
      theme: 'advanced',
      plugins: 'safari,spellchecker,table,iespell,preview,contextmenu,paste,embedimages',
      editor_css: '/css/themes/tinymce/ui.css',
      content_css: '/css/themes/tinymce/content.css',
      popup_css: '/css/themes/tinymce/dialog.css',
      theme_advanced_buttons1: 'undo,redo,|,bold,italic,underline,strikethrough,|,embedimages,|,bullist,numlist,|image,link,unlink,|,justifyleft,justifycenter,|,outdent,indent,|,code,',
      theme_advanced_buttons2: '',
      theme_advanced_buttons3: '',
      theme_advanced_buttons4: '',
      theme_advanced_toolbar_location: 'top',
      theme_advanced_toolbar_align: 'left',
      theme_advanced_statusbar_location: 'bottom',
      theme_advanced_path: false,
      theme_advanced_resizing: true,
      convert_urls: false
    },
    defaultPlugins: function( bCustomMarkingEnabled )
    {
      var sPluginList = global.tinyMCESettings.base.plugins;
      if( bCustomMarkingEnabled )
      {
        sPluginList = 'portionmarker,' + sPluginList;
      }
      return sPluginList;
    },
    defaultButtons: function( bCustomMarkingEnabled )
    {
      var sButtonList = global.tinyMCESettings.base.theme_advanced_buttons1;
      if( bCustomMarkingEnabled )
      {
        sButtonList = 'unclassified,classified,secret,topsecret,|,' + sButtonList;
      }
      return sButtonList;
    },
    makeSettings: function( bCustomMarkingEnabled, oExtension )
    {
      var returnVal, portionMarkingSettings;
      if( arguments.length === 0 )
      {
        returnVal = global.tinyMCESettings.base;
      }
      else
      {
        if( typeof oExtension !== 'object' || oExtension === null )
        {
          oExtension = {};
        }

        if( typeof bCustomMarkingEnabled !== 'boolean' )
        {
          bCustomMarkingEnabled = false;
        }

        portionMarkingSettings = {};
        if( bCustomMarkingEnabled )
        {
          portionMarkingSettings = {
            plugins: tinyMCESettings.defaultPlugins( bCustomMarkingEnabled ),
            theme_advanced_buttons1: tinyMCESettings.defaultButtons( bCustomMarkingEnabled )
          }
        }

        returnVal =  $.extend( {}, global.tinyMCESettings.base, portionMarkingSettings, oExtension );
      }

      return returnVal;
    }
  };
}( window ) );