function optionsMenu()
 {
     $sparkOps = new UberOptions(UBERMENU_SETTINGS, array('parent_slug' => 'themes.php', 'page_title' => __('UberMenu Options', 'ubermenu'), 'menu_title' => __('UberMenu', 'ubermenu'), 'menu_slug' => 'uber-menu', 'version' => UBERMENU_VERSION), $this->getOptionsMenuLinks(), $this->coreURL . 'sparkoptions/');
     /*
      * Basic Config Panel
      */
     $basic = 'basic-config';
     $sparkOps->registerPanel($basic, __('Basic Configuration', 'ubermenu'), 10);
     $sparkOps->addHidden($basic, 'current-panel-id', $basic);
     $sparkOps->addRadio($basic, 'wpmega-orientation', __('Orientation', 'ubermenu'), __('Choose a vertical (top to bottom) or horizontal (left to right) menu.  Note that if your horizontal menu is forced to have a narrow width by your theme, it may appear to be vertically oriented.', 'ubermenu'), array('horizontal' => __('Horizontal', 'ubermenu'), 'vertical' => __('Vertical', 'ubermenu')), 'horizontal', '', 2);
     $weight = 15;
     /* Responsiveness */
     $sparkOps->addSubHeader($basic, 'megaMenu-responsiveness', __('Responsive Settings', 'ubermenu'), __('Knowledgebase: <a target="_blank" href="http://sevenspark.com/docs/ubermenu-responsive" >UberMenu Responsiveness</a>', 'ubermenu'), '', $weight);
     $sparkOps->addCheckbox($basic, 'responsive-menu', __('Responsive Mega Menu', 'ubermenu'), __('Enable UberMenu\'s responsive properties. Requires a responsive theme, otherwise you may have ' . 'strange results if your theme is fixed-width.', 'ubermenu'), 'on', '', $weight);
     $sparkOps->addCheckbox($basic, 'responsive-menu-toggle', __('Responsive Mega Menu - Toggle', 'ubermenu'), __('Display a toggle button to show/hide menu on mobile devices.', 'ubermenu'), 'on', '', $weight);
     $sparkOps->addTextInput($basic, 'responsive-menu-toggle-text', __('Responsive Mega Menu - Toggle Text', 'ubermenu'), __('Text or HTML to display on Toggle Button.  Set to a single space to disable text.', 'ubermenu'), 'Menu', '', '', $weight);
     $sparkOps->addCheckbox($basic, 'iOS-close-button', __('Display Close Button on iOS', 'ubermenu'), __('You can disable this if you do not wish to display the close button on iPads, iPhones, and iPods.', 'ubermenu'), 'on', '', $weight);
     /* ANIMATIONS */
     $weight = 20;
     $sparkOps->addSubHeader($basic, 'wpmega-animation-header', __('jQuery Animations &amp; Auto-positioning', 'ubermenu'), '', '', $weight);
     $sparkOps->addCheckbox($basic, 'wpmega-jquery', __('jQuery Enhanced', 'ubermenu'), __('Disable to use UberMenu without jQuery enhancement.  All submenus will be full-width by default.', 'ubermenu'), 'on', '', $weight);
     $sparkOps->addRadio($basic, 'wpmega-transition', __('Animation', 'ubermenu'), '', array('slide' => __('Slide', 'ubermenu'), 'fade' => __('Fade', 'ubermenu'), 'none' => __('None', 'ubermenu')), 'slide', '', $weight);
     $sparkOps->addTextInput($basic, 'wpmega-animation-time', __('Animation Time', 'ubermenu'), __('Set how long the animation should take in milliseconds', 'ubermenu'), 300, 'spark-minitext', 'ms', $weight);
     $sparkOps->addRadio($basic, 'wpmega-trigger', __('Trigger', 'ubermenu'), '', array('hover' => 'Hover', 'hoverIntent' => 'Hover Intent', 'click' => 'Click'), 'hoverIntent', '', $weight);
     $sparkOps->addTextInput($basic, 'wpmega-hover-interval', __('Hover Intent Interval', 'ubermenu'), __('The number of milliseconds before the hover event is triggered.  Defaults to 100. [Applies to trigger: Hover Intent]', 'ubermenu'), 20, 'spark-minitext', 'ms', $weight);
     $sparkOps->addTextInput($basic, 'wpmega-hover-timeout', __('Hover Intent Timeout', 'ubermenu'), __('The number of milliseconds before the out event is triggered (milliseconds until the submenu closes after hover-off).  Defaults to 400. [Applies to trigger: Hover Intent]', 'ubermenu'), 400, 'spark-minitext', 'ms', $weight);
     $sparkOps->addCheckbox($basic, 'wpmega-submenu-full', __('Full Width Submenus', 'ubermenu'), __('Enable to force all submenus to be full-width, regardless of their content.  Disable ' . 'to size submenus to their content and position with Javascript.', 'ubermenu'), 'off', '', $weight);
     /* Mobile Settings */
     $weight = 30;
     $sparkOps->addSubHeader($basic, 'mobile-settings-header', __('Mobile Settings', 'ubermenu'), '', '', $weight);
     $sparkOps->addCheckbox($basic, 'android-click', __('Force Click Trigger on Android', 'ubermenu'), __('<em>Makes Android interface act more like iOS</em>.  By default, Android will redirect to the top level menu item link URL as soon as it is tapped.  To display a submenu, users must ' . 'tap, and without lifting their finger slide off of the menu item.  By enabling Force-Click, the menu touch interface on Android will ' . 'work similarly to iOS: a tap will open the sub menu.  Tap + hold will follow the link.', 'ubermenu'), 'off', '', $weight);
     /* Special */
     $weight = 35;
     $sparkOps->addSubHeader($basic, 'basic-other-settings', __('Submenu Positioning', 'ubermenu'), '', '', $weight);
     $sparkOps->addCheckbox($basic, 'reposition-on-load', __('Reposition submenus on window.load', 'ubermenu'), __('If your submenus aren\'t positioned properly, it may be because you have a font (like @font-face or Cufon) that needs to load before ' . 'the menu items are positioned.  Turn this on to position your submenus once your font finishes loading.', 'ubermenu'), 'off', '', $weight);
     /* 
      * DESCRIPTION, SHORTCODE, WIDGET SETTINGS 
      */
     $descConfig = 'description-config';
     $sparkOps->registerPanel($descConfig, __('Descriptions', 'ubermenu'), 20);
     $sparkOps->addSubHeader($descConfig, 'wpmega-desc-header', __('Descriptions', 'ubermenu'));
     $sparkOps->addInfobox($descConfig, 'wpmega-descriptions', '', __('You can turn on and off menu item descriptions on a per-level basis.', 'ubermenu'));
     $sparkOps->addCheckbox($descConfig, 'wpmega-description-0', __('Display Top-Level Descriptions', 'ubermenu'));
     $sparkOps->addCheckbox($descConfig, 'wpmega-description-1', __('Display Sub-Header Descriptions', 'ubermenu'));
     $sparkOps->addCheckbox($descConfig, 'wpmega-description-2', __('Display Sub-Menu Item Descriptions', 'ubermenu'));
     /* STYLE SETTINGS */
     $styleConfig = 'style-config';
     $sparkOps->registerPanel($styleConfig, __('Style Configuration', 'ubermenu'), 40);
     $sparkOps->addInfobox($styleConfig, 'wpmega-style-settings', '', __('Configure how you want to apply styles to the menu', 'ubermenu'));
     $sparkOps->addRadio($styleConfig, 'wpmega-style', __('Style Application', 'ubermenu'), '', $this->getStyleApplicationOptions(), 'preset');
     $sparkOps->addSelect($styleConfig, 'wpmega-style-preset', __('Style Preset', 'ubermenu'), __('Only applicable if <strong>Use a Preset</strong> is selected above.  <strong><a target="_blank" href="http://goo.gl/4lnno">Get More Skins</a></strong>', 'ubermenu'), 'ubermenu_getStylePresetOps', array('execute', &$this, 'getDefaultPreset'));
     return $sparkOps;
 }
    function optionsMenu()
    {
        $sparkOps = new UberOptions(UBERMENU_SETTINGS, array('parent_slug' => 'themes.php', 'page_title' => 'UberMenu Options', 'menu_title' => 'UberMenu', 'menu_slug' => 'uber-menu'), array(1 => array('href' => 'http://j.mp/dPmJ8m', 'class' => 'spark-outlink-hl', 'title' => 'Read the Support Manual', 'text' => 'Support Manual &rarr;'), 2 => array('href' => 'http://goo.gl/G8b3r', 'class' => 'spark-outlink-hl', 'title' => 'Watch Video Tutorials', 'text' => 'Video Tutorials &rarr;'), 3 => array('href' => 'http://goo.gl/0OIDQ', 'class' => 'spark-outlink-hl', 'title' => 'Troubleshoot problems you encounter', 'text' => 'Troubleshooter &rarr;'), 4 => array('href' => 'http://goo.gl/KdXgk', 'class' => 'spark-outlink-hl', 'title' => 'Customization Assistant', 'text' => 'Customization Assistant &rarr;'), 5 => array('href' => 'http://sevenspark.com/out/support', 'class' => 'spark-outlink', 'title' => 'Submit a support request', 'text' => 'Get Support &rarr;'), 6 => array('href' => 'http://j.mp/ekannC', 'class' => 'spark-outlink', 'title' => 'Frequently Asked Questions', 'text' => 'FAQs  &rarr;'), 7 => array('href' => 'http://j.mp/fDpVkP', 'class' => 'spark-outlink', 'title' => 'Purchase a license for use on a second installation', 'text' => 'Additional License &rarr;')));
        /*
         * Basic Config Panel
         */
        $basic = 'basic-config';
        $sparkOps->registerPanel($basic, 'Basic Configuration');
        $sparkOps->addHidden($basic, 'current-panel-id', $basic);
        $sparkOps->addRadio($basic, 'wpmega-orientation', 'Orientation', 'Include an "Add to Wishlist" button on your individual product pages', array('horizontal' => 'Horizontal', 'vertical' => 'Vertical'), 'horizontal');
        $sparkOps->addCheckbox($basic, 'wpmega-menubar-full', 'Expand Menu Bar Full Width?', 'Enable to have the menu bar fill its container.  Disable to size the menu bar to its contents. ', 'on');
        /* Responsiveness */
        $sparkOps->addSubHeader($basic, 'megaMenu-responsiveness', 'Responsive Settings');
        $sparkOps->addCheckbox($basic, 'responsive-menu', 'Responsive Mega Menu', 'Enable UberMenu\'s responsive properties. Requires a responsive theme, otherwise you may have ' . 'strange results if your theme is fixed-width.', 'off');
        $sparkOps->addCheckbox($basic, 'responsive-menu-toggle', 'Responsive Mega Menu - Toggle', 'Display a toggle button to show/hide menu on mobile devices.', 'off');
        $sparkOps->addTextInput($basic, 'responsive-menu-toggle-text', 'Responsive Mega Menu - Toggle Text', 'Text to display on Toggle Button.  Set to a single space to disable text.', 'Menu');
        /* ANIMATIONS */
        $sparkOps->addSubHeader($basic, 'wpmega-animation-header', 'jQuery Animations &amp; Auto-positioning');
        $sparkOps->addCheckbox($basic, 'wpmega-jquery', 'jQuery Enhanced', 'Disable to use UberMenu without jQuery enhancement.  All submenus will be full-width by default.', 'on');
        $sparkOps->addRadio($basic, 'wpmega-transition', 'Animation', '', array('slide' => 'Slide', 'fade' => 'Fade', 'none' => 'None'), 'slide');
        $sparkOps->addTextInput($basic, 'wpmega-animation-time', 'Animation Time', 'Set how long the animation should take in milliseconds', 300, 'spark-minitext', 'ms');
        $sparkOps->addRadio($basic, 'wpmega-trigger', 'Trigger', '', array('hover' => 'Hover', 'hoverIntent' => 'Hover Intent', 'click' => 'Click'), 'hoverIntent');
        $sparkOps->addTextInput($basic, 'wpmega-hover-interval', 'Hover Intent Interval', 'The number of milliseconds before the hover event is triggered.  Defaults to 100. [Applies to trigger: Hover Intent]', 20, 'spark-minitext', 'ms');
        $sparkOps->addTextInput($basic, 'wpmega-hover-timeout', 'Hover Intent Timeout', 'The number of milliseconds before the out event is triggered (milliseconds until the submenu closes after hover-off).  Defaults to 400. [Applies to trigger: Hover Intent]', 400, 'spark-minitext', 'ms');
        $sparkOps->addCheckbox($basic, 'wpmega-submenu-full', 'Full Width Submenus', 'Enable to force all submenus to be full-width, regardless of their content.  Disable ' . 'to size submenus to their content and position with Javascript.', 'off');
        $sparkOps->addCheckbox($basic, 'wpmega-autoAlign', 'Auto Align (Deprecated)', 'Automatically align the second-level menu items by setting all widths the width of the widest item in each submenu. ' . '<div class="spark-infobox spark-infobox-warning">This feature remains for legacy use.  A better way to accomplish column alignment is to choose the "Full Width" option and set the number of columns in a menu item\'s settings</div>', 'off');
        $sparkOps->addSubHeader($basic, 'wpmega-vertical-header', 'Vertical Menu Sizing');
        $sparkOps->addTextInput($basic, 'vertical-submenu-w', 'Vertical Mega Submenu Width', 'Since the width of a submenu is constrained by the container that the UberMenu is placed in, you must set the width manually if you want it to be wider.', '', 'spark-minitext', 'px');
        /* Mobile Settings */
        $sparkOps->addSubHeader($basic, 'mobile-settings-header', 'Mobile Settings');
        $sparkOps->addCheckbox($basic, 'android-click', 'Force Click Trigger on Android', '<em>Makes Android interface act more like iOS</em>.  By default, Android will redirect to the top level menu item link URL as soon as it is tapped.  To display a submenu, users must ' . 'tap, and without lifting their finger slide off of the menu item.  By enabling Force-Click, the menu touch interface on Android will ' . 'work similarly to iOS: a tap will open the sub menu.  Tap + hold will follow the link.', 'off');
        /* Special */
        $sparkOps->addSubHeader($basic, 'basic-other-settings', 'Submenu Positioning');
        $sparkOps->addCheckbox($basic, 'reposition-on-load', 'Reposition submenus on window.load', 'If your submenus aren\'t positioned properly, it may be because you have a font (like @font-face or Cufon) that needs to load before ' . 'the menu items are positioned.  Turn this on to position your submenus once your font finishes loading.', 'off');
        /* DESCRIPTION, SHORTCODE, WIDGET SETTINGS */
        $descConfig = 'description-config';
        $sparkOps->registerPanel($descConfig, 'Descriptions, Shortcodes, Widgets');
        $sparkOps->addSubHeader($descConfig, 'wpmega-desc-header', 'Descriptions');
        $sparkOps->addInfobox($descConfig, 'wpmega-descriptions', '', 'You can turn on and off menu item descriptions on a per-level basis.');
        $sparkOps->addCheckbox($descConfig, 'wpmega-description-0', 'Display Top-Level Descriptions');
        $sparkOps->addCheckbox($descConfig, 'wpmega-description-1', 'Display Sub-Header Descriptions');
        $sparkOps->addCheckbox($descConfig, 'wpmega-description-2', 'Display Sub-Menu Item Descriptions');
        //ADVANCED
        $sparkOps->addSubHeader($descConfig, 'wpmega-othercontent-header', 'Advanced Content Capabilities: Content Overrides, Shortcodes, Widgets');
        $sparkOps->addCheckbox($descConfig, 'wpmega-shortcodes', 'Allow Content Overrides', 'Content Overrides allow you to include non-links in the Mega Menu.  You can use shortcodes, which will allow you to put items like contact forms, search boxes, or galleries in your Menus', 'off');
        $sparkOps->addTextInput($descConfig, 'wpmega-sidebars', 'Number of Widget Areas', 'Enter the number of widget areas/sidebars that should be generated for the UberMenu.  You can then add widgets through the normal means. <span class="ss-infobox ss-infobox-warning">This value must be 1 or greater to use widgets</span>', '0', 'spark-minitext');
        $sparkOps->addCheckbox($descConfig, 'wpmega-top-level-widgets', 'Allow Top-Level Widgets', 'Turn this on to allow placing widgets in the top level, in addition to the submenu.  <span class="spark-infobox spark-infobox-warning">Remember, if you place widgets in the top level, they will always be visible.  In many cases, this will break your layout.</span>', 'off');
        $sparkOps->addCheckbox($descConfig, 'load-google-maps', 'Load Google Maps', 'Loads the Google Maps API so you can use maps in your menu with the provided shortcode.  Note that jQuery Enhancements must be enabled in order to utilize the map shortcode.', 'off');
        /*
         * IMAGE SETTINGS
         */
        $imageConfig = 'image-config';
        $sparkOps->registerPanel($imageConfig, 'Images');
        $sparkOps->addInfobox($imageConfig, 'wpmega-images', '', 'Control how your images are sized and processed.');
        $sparkOps->addCheckbox($imageConfig, 'wpmega-resizeimages', 'Resize Images', 'Should the images be all sized the same?  <span class="spark-infobox">This must be enabled if you wish to use Timthumb.</span>', 'on');
        $sparkOps->addTextInput($imageConfig, 'wpmega-image-width', 'Image Width', 'Setting this value is important for proper spacing in the menu, even if you aren\'t resizing your images.', '25', 'spark-minitext', 'px');
        $sparkOps->addTextInput($imageConfig, 'wpmega-image-height', 'Image Height', '', '25', 'spark-minitext', 'px');
        $sparkOps->addCheckbox($imageConfig, 'wpmega-usetimthumb', 'Use Timthumb', 'Use TimThumb to automatically scale and crop images to the preferred width and height.  <span class="spark-infobox">You must follow the instructions in the UberMenu Support Guide to setup TimThumb for use.  Note that some hosts, especially shared hosting, will not allow you to use timthumb on their servers.</span>', 'off');
        /* THEME INTEGRATION */
        $themeIntegration = 'theme-config';
        $sparkOps->registerPanel($themeIntegration, 'Theme Integration');
        $sparkOps->addInfobox($themeIntegration, 'wpmega-themeintegration', '', 'Help with integrating UberMenu with complex or misbehaving themes.');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-strict', 'Strict Mode', 'Disable Strict Mode <strong>if you have only one menu on your site</strong>, and it should be a mega menu, and your theme does not support Theme Locations.  Otherwise, leave this on or you may end up with the wrong menu megafied.', 'on');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-easyintegrate', 'Easy Integration', 'For themes that don\'t properly support WordPress 3 Menus.  Just turn this on and place ' . '<code>&lt;?php uberMenu_easyIntegrate(); ?&gt;</code> in your header.php file, or <code>[uberMenu_easyIntegrate]</code> in a text widget to place your menu.', 'off');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-remove-conflicts', 'Remove Theme Conflicts', 'This attempts to remove previously registered javascript acting on the menu.', 'on');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-minimizeresidual', 'Minimize Residual Styling', 'This will change the ID of the menu\'s top level UL.  If you still have residual styling, you likely need 
						to manually edit the ID or class of the elements surrounding the <code>wp_nav_menu</code> call in your header.php.', 'on');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-iefix', 'Use IE Fix Script', 'Depending on how your theme is coded, some themes will require this for the menu to work properly while others will not.  IE is a fickle bitch, so try it both ways and see which works better for your theme.', 'off');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-jquery-noconflict', 'Run jQuery in noConflict Mode', 'If your theme does not load the default WordPress jQuery library, turn this on.', 'off');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-load-on-login', 'Load UberMenu on Login and Registration Pages', 'Since WordPress login and registration pages do not include a menu by default, UberMenu won\'t load there.  If you are styling your login/registration page, turn this on - otherwise UberMenu will be completely unstyled.', 'off');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-include-jquery', 'Include jQuery', 'This is REQUIRED.  Only disable this if your theme or another plugin already is not properly enqueueing jQuery.  <span class="spark-infobox spark-infobox-warning"><strong>DO NOT DISABLE UNLESS YOU KNOW WHAT YOU ARE DOING!</strong></span>', 'on');
        $sparkOps->addCheckbox($themeIntegration, 'wpmega-include-hoverintent', 'Include Hover Intent', 'This is REQUIRED.  Only this if your theme or another plugin already includes hoverIntent.js.  <span class="spark-infobox spark-infobox-warning"><strong>DO NOT DISABLE UNLESS YOU ARE CERTAIN!</strong></span>', 'on');
        $sparkOps->addCheckbox($themeIntegration, 'no-ie6', 'Default to theme menu in IE6', 'UberMenu is not compatible with IE6, as noted in the product description.  By default, UberMenu will not load in IE6, in an effort to fall back to the default theme menu, which may or may not be IE6-compatible.  If for some reason you want to disable this feature, you can do so here.', 'on');
        /* ADVANCED */
        $advanced = 'advanced-config';
        $sparkOps->registerPanel($advanced, 'Advanced Settings');
        $sparkOps->addInfobox($advanced, 'advanced-panel-warning', 'Warning', 'Do not change advanced settings unless you are certain of what you are doing.', 'spark-infobox-warning');
        $sparkOps->addTextInput($advanced, 'wpmega-container-w', 'Menu Bar Width', 'Enter a width in pixels.  UberMenu automatically sizes to its container, so you only need to use this if you want UberMenu ' . 'to be a different size.  It will automatically be centered when possible.' . '<span class="spark-infobox spark-infobox-warning">Remember, your submenu\'s maximum width is restricted to the width of your menu bar by default.</span>' . '<span class="spark-infobox spark-infobox-warning">Be sure to disable the Expand Menu Bar Full Width option in basic settings if you intend to use this</span>', '', 'spark-minitext', 'px');
        $sparkOps->addCheckbox($advanced, 'center-menubar', 'Center Menu Bar', 'Coupled with the Menu Bar Width above, this will center your menu within its container.', 'off');
        $sparkOps->addCheckbox($advanced, 'enable-clearfix', 'Enable Clearfix', 'Important for centering.', 'off');
        $sparkOps->addTextInput($advanced, 'inner-menu-width', 'Inner Menu Width', 'Enter a width in pixels (most common: 960).  This is useful for centering the menu items while allowing the menu bar to span the entire window.', '', 'spark-minitext', 'px');
        $sparkOps->addCheckbox($advanced, 'center-inner-menu', 'Center Inner Menu', 'Coupled with the Inner Menu Width above, this will center your inner menu within the menu bar.' . '<span class="spark-infobox spark-infobox-warning">You must set an explicit width above to center the menu.</span>', 'off');
        $sparkOps->addCheckbox($advanced, 'center-menuitems', 'Center Menu Items', 'Center the menu items within the menu bar.  Note that using images, widgets or content overrides in the top level may break your layout with this option enabled.  ' . 'Works best with basic text menu items.', 'off');
        /*$sparkOps->addTextInput( $advanced,			
        		'wpmega-max-submenu-w',
        		'Maximum Submenu Width',
        		'Normally, a submenu can only be as wide as the top level menu bar.  If you want it to be wider, set the value here.',
        		'',
        		'spark-minitext',
        		'px'
        		);*/
        $sparkOps->addCheckbox($advanced, 'wpmega-html5', 'HTML5', 'Use the HTML5 <code>&lt;nav&gt;</code> element as the menu container.  <span class="spark-infobox spark-infobox-warning">Only enable this if your theme supports HTML5!  Otherwise it\'ll break Internet Explorer</span>');
        $sparkOps->addCheckbox($advanced, 'include-basic-css', 'Include basic.css', 'UberMenu\'s basic.css contains all the structural code for the menu.  <span class="spark-infobox spark-infobox-warning">Without this code, the menu will not work.  Only disable this if you are going to manually include it elsewhere.</span>', 'on');
        $sparkOps->addCheckbox($advanced, 'wpmega-debug', 'Development Mode', 'Run in Development mode.  This will load the .dev.js ubermenu script rather than the minified version.  Easier for testing customizations and debugging.');
        $sparkOps->addResetButton($advanced, 'wpmega-reset-options', 'Reset Options', 'Reset UberMenu Settings to the factory defaults.');
        /* STYLE SETTINGS */
        $styleConfig = 'style-config';
        $sparkOps->registerPanel($styleConfig, 'Style Configuration');
        $sparkOps->addInfobox($styleConfig, 'wpmega-style-settings', '', 'Configure how you want to apply styles to the menu');
        $sparkOps->addRadio($styleConfig, 'wpmega-style', 'Style Application', '', array('preset' => 'Use a Preset' . '<span class="spark-admin-op-radio-desc">Select from the Preset Styles below</span>', 'inline' => 'Style Generator' . '<span class="spark-admin-op-radio-desc">If custom file is not writable, adds <code>&lt;style&gt;</code> tags to <code>&lt;head&gt;</code></span>', 'custom' => 'Custom' . '<span class="spark-admin-op-radio-desc">Load <code>ubermenu/styles/custom.css</code>.  Always use this file for customizations!</span>', 'none' => 'Do Nothing ' . '<span class="spark-admin-op-radio-desc">I will manually include the styles elsewhere, like in my <code>style.css</code>.</span>'), 'preset');
        $sparkOps->addSelect($styleConfig, 'wpmega-style-preset', 'Style Preset', 'Only applicable if "Use a Preset" is selected above.', 'ubermenu_getStylePresetOps', 'grey-white');
        $sparkOps->addTextarea($styleConfig, 'wpmega-css-tweaks', 'Custom CSS', 'Best for minor CSS tweaks.  Want to write a custom style?  Use custom.css.  <br/><br/><span class="spark-infobox">These styles will be applied regardless of the options above</span>', '');
        /* STYLE GENERATOR */
        $styleGen = 'style-gen';
        $sparkOps->registerPanel($styleGen, 'Style Generator');
        $sparkOps->addInfobox($styleGen, 'style-gen-application-alert', '', 'Please note that unless you set the <strong>Style Application</strong> to <strong>Style Generator</strong> ' . 'in <em>UberMenu > Style Configuration</em>, these settings will have no effect.', 'spark-infobox-warning');
        $sparkOps->addCheckbox($styleGen, 'save-style-gen-to-file', 'Save Custom CSS to file', 'Will attempt to save to a file, rather than including in site head.');
        $sparkOps->addHidden($styleGen, 'use-gen-skin', 'off');
        //Menu Bar
        $sparkOps->addSubHeader($styleGen, 'menu-bar-header', 'Menu Bar');
        $sparkOps->addInfobox($styleGen, 'colorpickers-info', '', 'When using the color pickers, (1) click the input box, (2) select your color, (3) <strong>click ' . 'the colorwheel button in the lower right corner</strong> to set the color.  Do <strong>not</strong> ' . 'include a # before your color in the input box.');
        //@menubarColorStart, @menubarColorEnd
        $sparkOps->addColorPicker($styleGen, 'menu-bar-background', 'Menu Bar Background', '', true);
        //@menubarBorderColor
        $sparkOps->addColorPicker($styleGen, 'menu-bar-border-color', 'Menu Bar Border', '', false);
        //@menubarRadius
        $sparkOps->addTextInput($styleGen, 'menu-bar-border-radius', 'Menu Bar Border Radius', 'CSS3: only works in modern browsers.', '0', 'minitext', 'px');
        //Top Level
        $sparkOps->addSubHeader($styleGen, 'top-level-header', 'Top Level');
        //@topLevelFontSize
        $sparkOps->addTextInput($styleGen, 'top-level-item-font-size', 'Font Size', 'Example: <em>12px</em> or <em>1.5em</em>', '12px', 'minitext');
        //@topLevelColor
        $sparkOps->addColorPicker($styleGen, 'top-level-item-font-color', 'Font Color', '', false);
        //@topLevelColorHover
        $sparkOps->addColorPicker($styleGen, 'top-level-item-font-color-hover', 'Font Color [Hover]', '', false);
        //@currentColor
        $sparkOps->addColorPicker($styleGen, 'top-level-item-font-color-current', 'Font Color [Current Menu Item]', '', false);
        //@topLevelTextShadow
        $sparkOps->addColorPicker($styleGen, 'top-level-item-text-shadow', 'Text Shadow', '', false);
        //@topLevelTextShadowHover
        $sparkOps->addColorPicker($styleGen, 'top-level-item-text-shadow-hover', 'Text Shadow [Hover]', '', false);
        //@topLevelTextTransform
        $sparkOps->addSelect($styleGen, 'top-level-text-transform', 'Text Transform', '', array('uppercase' => 'uppercase', 'capitalize' => 'capitalize', 'lowercase' => 'lowercase', 'none' => 'none'), 'none');
        //@topLevelTextWeight
        $sparkOps->addSelect($styleGen, 'top-level-text-weight', 'Font Weight', '', array('normal' => 'normal', 'bold' => 'bold'), 'bold');
        //@topLevelDividerColor
        $sparkOps->addColorPicker($styleGen, 'top-level-item-border', 'Item Divider Color', '', false);
        //@topLevelPaddingX
        $sparkOps->addTextInput($styleGen, 'top-level-item-padding-x', 'Horizontal Padding', '', '15', 'minitext', 'px');
        //@topLevelPaddingY
        $sparkOps->addTextInput($styleGen, 'top-level-item-padding-y', 'Vertical Padding', '', '12', 'minitext', 'px');
        //@topLevelGlowOpacity
        $sparkOps->addTextInput($styleGen, 'top-level-item-glow-opacity', 'Glow Opacity', 'The top and left edge are given a lighter glow to add depth.  Set a decimal between 0 and 1. For lighter menus, set a value closer to 1.  For darker menus, set a number closer to 0.  ' . '<span class="spark-infobox spark-infobox-warning">If you have a "white border" on the top and left that you can\'t remove, set this to 0.  See also the [Hover] version.</span>', '.9', 'minitext');
        //@topLevelBackgroundHoverStart, @topLevelBackgroundHoverEnd
        $sparkOps->addColorPicker($styleGen, 'top-level-item-background-hover', 'Background Color [Hover]', '', true);
        //@topLevelGlowOpacityHover
        $sparkOps->addTextInput($styleGen, 'top-level-item-glow-opacity-hover', 'Glow Opacity [Hover]', 'The top and left edge are given a lighter glow to add depth.  Set a decimal between 0 and 1. For lighter menus, set a value closer to 1.  For darker menus, set a number closer to 0.', '.9', 'minitext');
        /*$sparkOps->addColorPicker( $styleGen,
        		'top-level-item-border-hover',
        		'Tab and Dropdown Border Color [Hover]',
        		'',
        		false
        		);*/
        /*$sparkOps->addTextInput( $styleGen,
        		'top-level-item-border-radius',
        		'Tab and Dropdown Border Radius [Hover]',
        		'',
        		'0',
        		'minitext',
        		'px'
        		);*/
        //Sub Menus
        $sparkOps->addSubHeader($styleGen, 'sub-level-header', 'Sub Menu Level');
        //@subMenuBorderColor
        $sparkOps->addColorPicker($styleGen, 'sub-menu-border', 'Submenu Border Color', '', false);
        //@submenuColorStart
        $sparkOps->addColorPicker($styleGen, 'sub-level-background', 'Dropdown Background Color', 'Set the second color to create a vertical gradient.  Leave blank for a flat color.', true);
        //@subMenuColor
        $sparkOps->addColorPicker($styleGen, 'sub-level-item-font-color', 'Submenu Font Color', 'The default font color for the submenus - overridden by header and item colors', false);
        //@subMenuTextShadow
        $sparkOps->addColorPicker($styleGen, 'sub-level-text-shadow', 'Submenu Text Shadow Color', '', false);
        //@subMenuBoxShadow
        $sparkOps->addColorPicker($styleGen, 'sub-level-box-shadow', 'Drop Shadow Color', '', false);
        //@SubMenuMinColWidth
        $sparkOps->addTextInput($styleGen, 'sub-level-column-width', 'Minimum Column Width', 'You can set the minimum width of the columns in the dropdown.  Useful to align columns in multi-row layouts.', '100', 'minitext', 'px');
        //Submenu Headers
        $sparkOps->addSubHeader($styleGen, 'sub-level-header-headers', 'Sub Menu Headers');
        //@subHeaderColor
        $sparkOps->addColorPicker($styleGen, 'sub-level-header-font-color', 'Header Font Color', '', false);
        //@subHeaderSize
        $sparkOps->addTextInput($styleGen, 'sub-level-header-font-size', 'Header Font Size', 'Example: 12px or 1.5em', '12px', 'minitext', '');
        //@subHeaderWeight
        $sparkOps->addSelect($styleGen, 'sub-level-header-font-weight', 'Header Font Weight', '', array('normal' => 'normal', 'bold' => 'bold'), 'bold');
        //@subHeaderBorderBottom (1)
        $sparkOps->addSelect($styleGen, 'sub-level-header-border-style', 'Header Underline Style', '', array('dotted' => 'dotted', 'dashed' => 'dashed', 'solid' => 'solid', 'none' => 'none'), 'dotted');
        //@subHeaderBorderBottom (2)
        $sparkOps->addColorPicker($styleGen, 'sub-level-header-border-color', 'Header Underline Color', '', false);
        //Submenu Links
        $sparkOps->addSubHeader($styleGen, 'sub-level-header-links', 'Sub Menu Links');
        //@subLinkColor
        $sparkOps->addColorPicker($styleGen, 'sub-level-link-font-color', 'Submenu Link Font Color', '', false);
        //@subLinkColorHover
        $sparkOps->addColorPicker($styleGen, 'sub-level-link-font-color-hover', 'Submenu Link Font Color [Hover]', '', false);
        //@subLinkSize
        $sparkOps->addTextInput($styleGen, 'sub-level-link-font-size', 'Submenu Link Font Size', 'Example: 12px or 1.5em', '12px', 'minitext', '');
        //@subLinkBackground
        $sparkOps->addColorPicker($styleGen, 'sub-level-link-background', 'Item Background Color', '', false);
        //@subLinkBackgroundHover
        $sparkOps->addColorPicker($styleGen, 'sub-level-link-background-hover', 'Item Background Color [Hover]', '', false);
        //Miscellaneous
        $sparkOps->addSubHeader($styleGen, 'sub-level-other-header', 'Miscellaneous');
        //@highlightColor
        $sparkOps->addColorPicker($styleGen, 'sub-level-highlight-color', 'Highlight Color', 'Items that are highlighted will be displayed this color', false);
        //@descriptionSize
        $sparkOps->addTextInput($styleGen, 'menu-description-size', 'Description Font Size', 'Example: 12px or 1.5em', '9px', 'minitext', '');
        //@descriptionColor: #bbb;
        $sparkOps->addColorPicker($styleGen, 'menu-description-color', 'Description Font Color', '', false);
        //@descriptionTransform
        $sparkOps->addSelect($styleGen, 'description-transform', 'Description Transform', '', array('uppercase' => 'uppercase', 'capitalize' => 'capitalize', 'lowercase' => 'lowercase', 'none' => 'none'), 'none');
        //@topLevelArrowColor
        $sparkOps->addColorPicker($styleGen, 'top-level-arrow-color', 'Top Level Arrow Color', '', false);
        //@flyoutArrowColor
        $sparkOps->addColorPicker($styleGen, 'sub-level-arrow-color', 'Flyout Sub Level Arrow Color', '', false);
        //PREVIEW
        $sparkOps->addSubHeader($styleGen, 'stylegen-preview', 'Preview');
        $sparkOps->addSelect($styleGen, 'menu-preview', 'Menu', 'Select the menu you\'d like to preview', $this->getNavMenus());
        $sparkOps->addCustomField($styleGen, 'ubermenu-preview-button', 'previewButton');
        if (isset($_GET['updates'])) {
            /* UPDATES */
            $updates = 'updates';
            $sparkOps->registerPanel($updates, 'Updates');
            $sparkOps->addCustomField($updates, 'ubermenu-updates', 'ubermenu_update_notifier');
        }
        return $sparkOps;
    }