function save()
 {
     global $option, $mainframe;
     $accessLevels = array('id' => JRequest::getINT('id'), 'name' => JRequest::getWord('name'));
     $tableAccessLevels = JTable::getInstance('accesslevels', 'table');
     $tableAccessLevels->bind($accessLevels);
     $tableAccessLevels->check();
     if (!$tableAccessLevels->store()) {
         $msg = JText::_('NOIXACL_VIEW_ACCESSLEVELS_SAVE_ERROR');
     }
     $tableGroupLevels = JTable::getInstance('grouplevel', 'table');
     $tableGroupLevels->remove(intval($tableAccessLevels->id));
     $groups = JRequest::getVar('multigroups');
     if (!empty($groups)) {
         foreach ($groups as $group) {
             $tableGroupLevels = JTable::getInstance('grouplevel', 'table');
             $tableGroupLevels->bind($group, $tableAccessLevels->id);
             $tableGroupLevels->save();
         }
     }
     switch ($this->getTask()) {
         case 'save':
             if (isset($msg)) {
                 $msg = JText::sprintf('NOIXACL_VIEW_ACCESSLEVELS_SAVE_SUCCESS', $groupName);
             }
             $url = "index.php?option={$option}&controller=accesslevels";
             break;
         case 'apply':
             if ($msg) {
                 $msg = JText::sprintf('NOIXACL_VIEW_ACCESSLEVELS_APPLY_SUCCESS') . " " . $groupName;
             }
             $url = "index.php?option={$option}&controller=accesslevels&task=edit&cid[]={$tableAccessLevels->id}";
             break;
     }
     $this->setRedirect($url, $msg);
 }