/**
 * tinymce.yakabox.settings.js - API to centralize, store, and produce settings for tinymce
 * Copyright (c) 2010, Yakabod, Inc.
 *
 * $Revision: 1.13 $
 * $Date: 2012/01/11 15:37:37 $
 *
 * Last edited by: $Author: danderson $
 *
 * Last eror free JSLint: 20101115 12:12
 *                        Checked Options: Assume a browser,
 *                                         Allow one var statement per function
 *                                         Disallow undefined variables
 *                                         Disallow dangling _ in identifiers
 *                                         Disallow == and !=
 *                                         Disallow ++ and --
 *                                         Disallow bitwise operators
 *                                         Disallow insecure . and [^...] in /RegExp/
 *                                         Require Initial Caps for constructors
 *                                         Require parens around immediate invocations
 *                        Predefined: window
 */
( function( global )
{
  "use strict";

  var oSettings, $;

  oSettings = {
    verify_html: false, /* required to keep tinymce from mucking with HTML5 microdata */
    script_url: '/js/vne/tinymce/tiny_mce.js',
    theme: 'advanced',
    plugins: 'fullscreen,safari,spellchecker,table,iespell,preview,contextmenu,paste,embedimages,tabfocus,vnelinks,linkautodetect',
    spellchecker_languages : "+English=en",
    editor_css: '/css/themes/tinymce/ui.css',
    content_css: '/css/themes/tinymce/content.css',
    popup_css: '/css/themes/tinymce/dialog.css',
    spellchecker_rpc_url: '/spell.html',
    theme_advanced_buttons1: 'fullscreen, undo,redo,|,bold,italic,underline,strikethrough,|,embedimages,|,bullist,numlist,|,vneaddlink,unlink,|,justifyleft,justifycenter,|,outdent,indent,|,spellchecker,|,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,
    tab_focus: ':prev,:next',
    convert_urls: false,
    paste_auto_cleanup_on_paste : true,
    extended_valid_elements : 'style[dir<ltr?rtl|lang|media|title|type],script[charset|defer|language|src|type]',
    fullscreen_new_window : true,
    fullscreen_settings : {
        plugins: 'fullscreen,preview,paste,embedimages,safari,spellchecker,pagebreak,style,layer,table,save,advhr,advlist,advlink,emotions,iespell,inlinepopups,insertdatetime,media,searchreplace,print,contextmenu,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,vnelinks,linkautodetect',
        theme_advanced_buttons1 : 'fullscreen,preview,save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,spellchecker,|,formatselect,fontselect,fontsizeselect',
        theme_advanced_buttons2 : 'cut,copy,paste,|,search,replace,|,embedimages,,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,vneaddlink,|,link, unlink,anchor,cleanup,help,code,|,insertdate,inserttime,|,forecolor,backcolor',
        theme_advanced_buttons3 : 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl',
        theme_advanced_buttons4 : 'insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,restoredraft'
    }
  };

  $ = global.jQuery;

  global.tinyMCESettings = {
    makeSettings: function( bCustomMarkingEnabled, oExtension )
    {
      var oReturnSettings;

      oReturnSettings = $.extend( true, {}, oSettings );

      if( arguments.length !== 0 )
      {
        if( bCustomMarkingEnabled === true )
        {
          oReturnSettings.plugins = 'portionmarker,' + oReturnSettings.plugins;
          oReturnSettings.theme_advanced_buttons1 = 'unclassified,classified,secret,topsecret,|,' + oReturnSettings.theme_advanced_buttons1;

          oReturnSettings.fullscreen_settings.plugins = 'portionmarker,' + oReturnSettings.fullscreen_settings.plugins;
          oReturnSettings.fullscreen_settings.theme_advanced_buttons1 = 'unclassified,classified,secret,topsecret,|,' + oReturnSettings.fullscreen_settings.theme_advanced_buttons1;
        }

        if( typeof oExtension === 'object' && oExtension !== null )
        {
          oReturnSettings = $.extend( true, oReturnSettings, oExtension );
        }
      }

      return oReturnSettings;
    },
    overrideFullScreenCommand: function( )
    {
      var tinyMCE, i, onAdd, ed;

      tinyMCE = global.tinyMCE;

      /*
       * we need to override the code that gets run on the fullscreen button
       * so that we can go to our own page that has our own css and scripts
       * that need to load.
       **/
      if( typeof tinyMCE !== 'undefined' )
      {
        if( tinyMCE.editors.length === 0 )
        {
          setTimeout( global.tinyMCESettings.overrideFullScreenCommand, 200 );
        }

        onAdd = function( ed, cmd )
        {
          if( cmd === 'mceFullScreen' )
          {
            ed.addCommand( 'mceFullScreen', function( ui, v )
            {
              var DOM, ed;

              DOM = global.tinymce.DOM;
              ed = tinyMCE.activeEditor;

              if( ed.getParam( 'fullscreen_is_enabled' ) )
              {
                if( ed.getParam( 'fullscreen_new_window' ) )
                {
                  global.closeFullscreen(); // Call to close in new window
                }
                return;
              }

              if( ed.getParam( 'fullscreen_new_window' ) )
              {
                DOM.win.open(
                  '/tinyMCEFullScreenOverride.html',
                  'mceFullScreenPopup',
                  'fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=' + global.screen.availWidth + ',height=' + global.screen.availHeight
                );
              }
            } );
          }
        };

        for( i = 0; i < tinyMCE.editors.length; i += 1 )
        {
          ed = tinyMCE.editors[i];
          ed.onBeforeExecCommand.add( onAdd );
        }
      }
      else
      {
        setTimeout( global.tinyMCESettings.overrideFullScreenCommand, 200 );
      }
    }
  };
}( window ) );

