/home/sylamedg/www/wp-content/plugins/cc-child-pages/includes/js/ccchildpages-plugin.js
;(function () {
  tinymce.create('tinymce.plugins.ccchildpages', {
    /**
     * Initializes the plugin, this will be executed after the plugin has been created.
     * This call is done before the editor instance has finished it's initialization so use the onInit event
     * of the editor instance to intercept that event.
     *
     * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
     * @param {string} url Absolute URL to where the plugin is located.
     */
    init: function (ed, url) {
      ed.addButton('ccchildpages', {
        title: 'CC Child Pages',
        cmd: 'ccchildpages',
        image: url + '/childpages.png'
      })

      ed.addCommand('ccchildpages', function () {
        var selected_text = ed.selection.getContent()

        ed.windowManager.open({
          title: 'CC Child Pages',
          body: [
            {
              type: 'listbox',
              name: 'ccchildcols',
              label: 'Columns',
              values: [
                { text: '1', value: '1' },
                { text: '2', value: '2' },
                { text: '3', value: '3' },
                { text: '4', value: '4' }
              ],
              value: '2'
            },
            {
              type: 'textbox',
              name: 'ccchildid',
              label: 'Parent Page ID'
            },
            {
              type: 'textbox',
              name: 'ccchildmore',
              label: 'Read More Text'
            },
            {
              type: 'textbox',
              name: 'ccchildwords',
              label: 'Excerpt Length'
            },
            {
              type: 'textbox',
              name: 'ccchildthumbs',
              label: 'Thumbnail Size'
            },
            {
              type: 'textbox',
              name: 'ccchildclass',
              label: 'Custom Class'
            },
            {
              type: 'listbox',
              name: 'ccchildskin',
              label: 'Skin',
              values: [
                { text: 'Simple (default)', value: 'simple' },
                { text: 'Red', value: 'red' },
                { text: 'Green', value: 'green' },
                { text: 'Blue', value: 'blue' }
              ],
              value: 'simple'
            },
            {
              type: 'textbox',
              name: 'ccchildexclude',
              label: 'Exclude (comma separated list of page IDs)'
            },
            {
              type: 'listbox',
              name: 'ccchildlist',
              label: 'Show as list',
              values: [
                { text: 'False (default)', value: 'false' },
                { text: 'True', value: 'true' }
              ],
              value: 'false'
            },
            {
              type: 'textbox',
              name: 'ccchilddepth',
              label: 'Depth (only for list mode)'
            }
          ],
          onsubmit: function (e) {
            var return_text = '[child_pages cols="' + e.data.ccchildcols + '"'
            if (e.data.ccchildid != '')
              return_text = return_text + ' id="' + e.data.ccchildid + '"'
            if (e.data.ccchildmore != '')
              return_text = return_text + ' more="' + e.data.ccchildmore + '"'
            if (e.data.ccchildwords != '')
              return_text = return_text + ' words="' + e.data.ccchildwords + '"'
            if (e.data.ccchildthumbs != '')
              return_text =
                return_text + ' thumbs="' + e.data.ccchildthumbs + '"'
            if (e.data.ccchildclass != '')
              return_text = return_text + ' class="' + e.data.ccchildclass + '"'
            if (e.data.ccchildskin != '')
              return_text = return_text + ' skin="' + e.data.ccchildskin + '"'
            if (e.data.ccchildexclude != '')
              return_text =
                return_text + ' exclude="' + e.data.ccchildexclude + '"'
            if (e.data.ccchildlist != '')
              return_text = return_text + ' list="' + e.data.ccchildlist + '"'
            if (e.data.ccchilddepth != '')
              return_text = return_text + ' depth="' + e.data.ccchilddepth + '"'

            return_text = return_text + ']'

            ed.execCommand('mceInsertContent', 0, return_text)
          }
        })
      })
    },

    /**
     * Creates control instances based in the incomming name. This method is normally not
     * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
     * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
     * method can be used to create those.
     *
     * @param {String} n Name of the control to create.
     * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
     * @return {tinymce.ui.Control} New control instance or null if no control was created.
     */
    createControl: function (n, cm) {
      return null
    },

    /**
     * Returns information about the plugin as a name/value array.
     * The current keys are longname, author, authorurl, infourl and version.
     *
     * @return {Object} Name/value array containing information about the plugin.
     */
    getInfo: function () {
      return {
        longname: 'CC Child Pages',
        author: 'Tim Lomas',
        authorurl: 'http://caterhamcomputing.net',
        infourl: 'http://ccchildpages.ccplugins.co.uk',
        version: '1.45'
      }
    }
  })

  // Register plugin
  tinymce.PluginManager.add('ccchildpages', tinymce.plugins.ccchildpages)
})()