public function display($tpl = null)
 {
     $JSNMedia = JSNFactory::getMedia();
     JSNHtmlAsset::addScript(JSN_POWERADMIN_LIB_JSNJS_URI . 'jsn.filter.js');
     // Check for errors.
     if (count($errors = $this->get('Errors'))) {
         JError::raiseError(500, implode("\n", $errors));
         return false;
     }
     $language = JFactory::getLanguage();
     $language->load('com_menus');
     $model = $this->getModel();
     $this->assign('model', $model);
     $menutype = '';
     $menutypeid = JRequest::getVar("menutypeid", '');
     if ($menutypeid) {
         JSNFactory::localimport('models.menuitem');
         $paMenuModel = new PoweradminModelMenuitem();
         $menutype = $paMenuModel->getMenuType($menutypeid);
     }
     $parentid = JRequest::getVar("parentid", '');
     $customScript = "\n\t\t\tvar selectMenuType;\n            (function(\$){\n\t\t\t\t\$(window).ready(function(){\n\t\t\t\t  \t  selectMenuType =  \$.jsnFilter(\n\t\t\t\t  \t  {\n\t\t\t  \t  \t\t  frameElement: \$('.jsn-menu-type'),\n\t\t\t  \t  \t\t  category    : true,\n\t\t\t\t\t  \t  itemClass   : '.jsn-item-type',\n\t\t\t\t\t  \t  totalColumn : 3,\n\t\t\t\t\t  \t  itemWidth   : 220,\n\t\t\t\t\t  \t  itemHeight  : 30,\n\t\t\t\t\t  \t  mPosLeft    : 0,\n\t\t\t\t\t  \t  mPosTop     : 15,\n\t\t\t\t\t  \t  marginOffset: {\n\t\t\t\t\t  \t  \t  right : 15,\n\t\t\t\t\t  \t  \t  bottom: 20\n\t\t\t\t\t  \t  },\n\t\t\t\t\t  \t  eventClick: function(){\n\t\t\t\t\t  \t  \t var params = \$(this).attr('params');\n\t\t\t\t\t  \t  \t window.parent.JoomlaShine.jQuery.addNewMenuItem(params, '" . $menutype . "', '" . $menutypeid . "', '" . $parentid . "');\n\t\t\t\t\t  \t  }\n\t\t\t\t  \t  \t}\n\t\t\t\t  \t  );\n\t\t\t\t  });\n\t\t\t  })(JoomlaShine.jQuery);\n\t\t";
     $JSNMedia->addScriptDeclaration($customScript);
     return parent::display();
 }
 /**
  * Before render needs using this function to make format of HTML of modules
  *
  * @return: Changed HTML format
  */
 public function onBeforeRender()
 {
     $app = JFactory::getApplication();
     $input = $app->input;
     // Load custom assets for each menu
     if (!$this->_application->isAdmin() && $this->_params->get('custom_assets_enhance', true)) {
         require_once JPATH_ROOT . '/administrator/components/com_poweradmin/models/menuitem.php';
         $itemid = $input->getVar('Itemid');
         $menuCss = PoweradminModelMenuitem::loadMenuCustomAssets($itemid, 'css');
         $menuJs = PoweradminModelMenuitem::loadMenuCustomAssets($itemid, 'js');
         // Load css files from parent menu items
         $finalCssFiles = array();
         $parentLoadableCssFiles = array();
         PoweradminModelMenuitem::getInheritedAssetsFromParents($parentLoadableCssFiles, $itemid, 'css');
         if (count($parentLoadableCssFiles)) {
             foreach ($parentLoadableCssFiles as $key => $value) {
                 if ($value->loaded == 'true') {
                     array_push($finalCssFiles, $key);
                 }
             }
         }
         if (count($menuCss) && isset($menuCss->assets)) {
             foreach ($menuCss->assets as $key => $value) {
                 if ($value->loaded === "true") {
                     if (in_array($key, $finalCssFiles)) {
                         $_k = array_search($key, $finalCssFiles);
                         unset($finalCssFiles[$_k]);
                     }
                     array_push($finalCssFiles, $key);
                 }
             }
         }
         // Add computed css files
         if (count($finalCssFiles)) {
             foreach ($finalCssFiles as $_file) {
                 $_file = $this->addhttp($_file);
                 $this->_document->addStyleSheet($_file);
             }
         }
         // Load JS files from parent menu items
         $finalJsFiles = array();
         $parentLoadableJsFiles = array();
         PoweradminModelMenuitem::getInheritedAssetsFromParents($parentLoadableJsFiles, $itemid, 'js');
         if (count($parentLoadableJsFiles)) {
             foreach ($parentLoadableJsFiles as $key => $value) {
                 if ($value->loaded == 'true') {
                     array_push($finalJsFiles, $key);
                 }
             }
         }
         if (count($menuJs) && isset($menuJs->assets)) {
             foreach ($menuJs->assets as $key => $value) {
                 if ($value->loaded === "true") {
                     if (in_array($key, $finalJsFiles)) {
                         $_k = array_search($key, $finalJsFiles);
                         unset($finalJsFiles[$_k]);
                     }
                     array_push($finalJsFiles, $key);
                 }
             }
         }
         // Add computed css files
         if (count($finalJsFiles)) {
             foreach ($finalJsFiles as $_file) {
                 $_file = $this->addhttp($_file);
                 $this->_document->addScript($_file);
             }
         }
     }
     if ($this->_application->isAdmin() && $this->_user->id > 0 && $input->getVar('tmpl', '') != 'component' && $this->_params->get('enable_adminbar', true) == true) {
         JHtml::_('behavior.framework');
         $document = JFactory::getDocument();
         $template = isset($document->template) ? $document->template : null;
         if ($template != null && !in_array($template, array('rt_missioncontrol', 'hathor')) && ($input->getCmd('tmpl', '') != 'component' && $input->getCmd('format', '') != 'raw')) {
             require_once dirname(__FILE__) . '/libraries/administrator.menu.php';
             $this->loadLanguage('mod_menu');
             $this->_menuContent = JSNPowerAdminMenuHelper::renderMenus();
             $modules = JModuleHelper::getModules('menu');
             foreach ($modules as $module) {
                 if ($module->module == 'mod_menu') {
                     continue;
                 }
                 $this->_menuContent .= JModuleHelper::renderModule($module);
             }
             $this->_menuContent = '<div id="module-menu">' . $this->_menuContent . '</div>';
         }
     }
     if ($this->_application->isAdmin()) {
         return;
     }
 }