private function _ajax()
 {
     try {
         if (empty($_POST['action']) || empty($_POST['tab'])) {
             throw new Exception('Error!');
         }
         if ($_POST['action'] != 'get_add_form' && $_POST['action'] != 'add_item' && $_POST['action'] != 'save_sort') {
             if ($_POST['tab'] != 'equipments') {
                 $_POST['item_id'] = (int) $_POST['item_id'];
                 if ($_POST['item_id'] == 0) {
                     throw new Exception('Error!');
                 }
             } else {
                 if (empty($_POST['item_id'])) {
                     throw new Exception('Error!');
                 }
             }
         }
         $reference_model = $this->load->model('reference_model');
         switch ($_POST['action']) {
             case 'item_delete':
                 switch ($_POST['tab']) {
                     case 'manufacturers':
                         $res = $reference_model->delete_manufacturer_by_id($_POST['item_id']);
                         break;
                     case 'models':
                         $res = $reference_model->delete_model_by_id($_POST['item_id']);
                         break;
                     case 'body_types':
                         $res = $reference_model->delete_body_type_by_id($_POST['item_id']);
                         break;
                     case 'currencies':
                         $res = $reference_model->delete_currency_by_id($_POST['item_id']);
                         break;
                     case 'doors':
                         $res = $reference_model->delete_door_by_id($_POST['item_id']);
                         break;
                     case 'equipments':
                         $res = $reference_model->delete_equipment_by_alias($_POST['item_id']);
                         break;
                     case 'fuels':
                         $res = $reference_model->delete_fuel_by_id($_POST['item_id']);
                         break;
                     case 'technical_conditions':
                         $res = $reference_model->delete_technical_condition_by_id($_POST['item_id']);
                         break;
                     case 'transmissions':
                         $res = $reference_model->delete_transmission_by_id($_POST['item_id']);
                         break;
                     case 'transport_types':
                         $res = $reference_model->delete_transport_type_by_id($_POST['item_id']);
                         break;
                     case 'regions':
                         $res = $reference_model->delete_region_by_id($_POST['item_id']);
                         break;
                     case 'states':
                         $res = $reference_model->delete_state_by_id($_POST['item_id']);
                         break;
                     case 'drive':
                         $res = $reference_model->delete_drive_by_id($_POST['item_id']);
                         break;
                     case 'colors':
                         $res = $reference_model->delete_color_by_id($_POST['item_id']);
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 if (!$res) {
                     throw new Exception('Failed deleted!');
                 }
                 $message = __('Item was deleted.', AT_ADMIN_TEXTDOMAIN);
                 break;
             case 'get_edit_form':
                 switch ($_POST['tab']) {
                     case 'manufacturers':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_manufacturer_by_id($_POST['item_id']);
                         break;
                     case 'models':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_model_by_id($_POST['item_id']);
                         break;
                     case 'body_types':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_body_type_by_id($_POST['item_id']);
                         break;
                     case 'currencies':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_currency_by_id($_POST['item_id']);
                         break;
                     case 'doors':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_door_by_id($_POST['item_id']);
                         break;
                     case 'equipments':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_equipment_by_alias($_POST['item_id']);
                         break;
                     case 'fuels':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_fuel_by_id($_POST['item_id']);
                         break;
                     case 'technical_conditions':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_technical_condition_by_id($_POST['item_id']);
                         break;
                     case 'transmissions':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_transmission_by_id($_POST['item_id']);
                         break;
                     case 'transport_types':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_transport_type_by_id($_POST['item_id']);
                         $item['icons'] = AT_Common::get_transport_icons();
                         break;
                     case 'regions':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_region_by_id($_POST['item_id']);
                         break;
                     case 'states':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_state_by_id($_POST['item_id']);
                         break;
                     case 'drive':
                         $template = 'form';
                         $get_alias = false;
                         $item = $reference_model->get_drive_by_id($_POST['item_id']);
                         break;
                     case 'colors':
                         $template = 'form';
                         $get_alias = true;
                         $item = $reference_model->get_color_by_id($_POST['item_id']);
                         $item['alias'] = ltrim($item['alias'], '#');
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 $view = new AT_View();
                 $message = $view->use_layout('content')->add_block('content', 'admin/reference/' . $template, array('tab' => $_POST['tab'], 'item' => $item, 'get_alias' => $get_alias))->render()->display(TRUE);
                 break;
             case 'save_item':
                 switch ($_POST['tab']) {
                     case 'manufacturers':
                     case 'transport_types':
                     case 'currencies':
                     case 'models':
                         $data = array('name' => $_POST['name'], 'alias' => strtolower($_POST['alias']));
                         $item = $reference_model->update_reference('_' . $_POST['tab'] . '_table', $_POST['item_id'], $data);
                         break;
                     case 'states':
                         $data = array('name' => $_POST['name'], 'alias' => strtolower($_POST['alias']));
                         $item = $reference_model->update_reference('_' . $_POST['tab'] . '_table', $_POST['item_id'], $data);
                         break;
                     case 'colors':
                         $data = array('name' => $_POST['name'], 'alias' => '#' . ltrim(strtolower($_POST['alias']), '#'));
                         $item = $reference_model->update_reference('_' . $_POST['tab'] . '_table', $_POST['item_id'], $data);
                         break;
                     case 'body_types':
                     case 'doors':
                     case 'equipments':
                     case 'fuels':
                     case 'technical_conditions':
                     case 'transmissions':
                     case 'regions':
                     case 'drive':
                         $data = array('name' => $_POST['name']);
                         $item = $reference_model->update_reference('_' . $_POST['tab'] . '_table', $_POST['item_id'], $data);
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 $message = __('Item has been saved.', AT_ADMIN_TEXTDOMAIN);
                 break;
             case 'save_sort':
                 if (!isset($_POST['item']) && $_POST['tab'] != 'equipments') {
                     throw new Exception('Error!');
                 }
                 switch ($_POST['tab']) {
                     case 'body_types':
                         $data = $reference_model->get_body_types();
                         break;
                     case 'currencies':
                         $data = $reference_model->get_currencies();
                         break;
                         // case 'equipments':
                         // 	$items = array();
                         // 	foreach ($_POST as $key => $value) {
                         // 		if ( strpos( $key, 'item_' ) == 0 ) {
                         // 			$str = substr( $key, 5, strlen( $key ) );
                         // 			if ( is_array( $value ) ) {
                         // 				foreach ($value as $k => $val) {
                         // 					$items[] = 	$str . '_' . $val;
                         // 				}
                         // 			} else {
                         // 				$items[] = 	$str . '_' . $value;
                         // 			}
                         // 		}
                         // 	}
                         // 	$data = $reference_model->get_equipments();
                         // 	break;
                     // case 'equipments':
                     // 	$items = array();
                     // 	foreach ($_POST as $key => $value) {
                     // 		if ( strpos( $key, 'item_' ) == 0 ) {
                     // 			$str = substr( $key, 5, strlen( $key ) );
                     // 			if ( is_array( $value ) ) {
                     // 				foreach ($value as $k => $val) {
                     // 					$items[] = 	$str . '_' . $val;
                     // 				}
                     // 			} else {
                     // 				$items[] = 	$str . '_' . $value;
                     // 			}
                     // 		}
                     // 	}
                     // 	$data = $reference_model->get_equipments();
                     // 	break;
                     case 'fuels':
                         $data = $reference_model->get_fuels();
                         break;
                     case 'technical_conditions':
                         $data = $reference_model->get_technical_conditions();
                         break;
                     case 'transmissions':
                         $data = $reference_model->get_transmissions();
                         break;
                     case 'transport_types':
                         $data = $reference_model->get_transport_types();
                         break;
                     case 'regions':
                         $data = $reference_model->get_regions();
                         break;
                     case 'drive':
                         $data = $reference_model->get_drive();
                         break;
                     case 'colors':
                         $data = $reference_model->get_colors();
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 if (count($data) == count($_POST['item'])) {
                     foreach ($_POST['item'] as $key => $sort_id) {
                         $reference_model->update_reference('_' . $_POST['tab'] . '_table', $sort_id, array('sort' => $key));
                     }
                 }
                 $message = __('Sort has been saved.', AT_ADMIN_TEXTDOMAIN);
                 break;
             case 'get_add_form':
                 $item = array();
                 switch ($_POST['tab']) {
                     case 'models':
                         $template = 'form';
                         $get_alias = true;
                         $item['manufacturer_id'] = $_POST['item_id'];
                         break;
                     case 'manufacturers':
                     case 'equipments':
                     case 'colors':
                         $template = 'form';
                         $get_alias = true;
                         break;
                     case 'transport_types':
                         $template = 'form';
                         $get_alias = true;
                         $item['icons'] = AT_Common::get_transport_icons();
                         break;
                     case 'states':
                         $template = 'form';
                         $get_alias = false;
                         $item['region_id'] = $_POST['item_id'];
                         break;
                     case 'body_types':
                     case 'currencies':
                     case 'doors':
                     case 'fuels':
                     case 'technical_conditions':
                     case 'transmissions':
                     case 'regions':
                     case 'drive':
                         $template = 'form';
                         $get_alias = false;
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 $view = new AT_View();
                 $message = $view->use_layout('content')->add_block('content', 'admin/reference/' . $template, array('tab' => $_POST['tab'], 'get_alias' => $get_alias, 'item' => $item))->render()->display(TRUE);
                 break;
             case 'add_item':
                 switch ($_POST['tab']) {
                     case 'manufacturers':
                     case 'transport_types':
                         // case 'models':
                         $data = array('name' => $_POST['name'], 'alias' => strtolower($_POST['alias']));
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data, true);
                         break;
                     case 'models':
                         $data = array('name' => $_POST['name'], 'manufacturer_id' => $_POST['manufacturer_id'], 'alias' => strtolower($_POST['alias']));
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data, true);
                         break;
                     case 'equipments':
                         $data = array('name' => $_POST['name'], 'alias' => '_' . ltrim($_POST['alias'], '_'));
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data, true);
                         break;
                     case 'colors':
                         $data = array('name' => $_POST['name'], 'alias' => '#' . ltrim($_POST['alias'], '#'));
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data, true);
                         break;
                     case 'states':
                         $data = array('name' => $_POST['name'], 'region_id' => $_POST['region_id']);
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data, false);
                         break;
                     case 'body_types':
                     case 'currencies':
                     case 'doors':
                     case 'fuels':
                     case 'technical_conditions':
                     case 'transmissions':
                     case 'regions':
                     case 'drive':
                         $data = array('name' => $_POST['name']);
                         $res = $reference_model->insert_reference('_' . $_POST['tab'] . '_table', $data);
                         break;
                     default:
                         throw new Exception('Error!');
                         break;
                 }
                 if (!$res) {
                     throw new Exception('Error! This alias exist!');
                 }
                 $message = __('Item was added.', AT_ADMIN_TEXTDOMAIN);
                 break;
                 break;
             default:
                 throw new Exception('Error!');
                 break;
         }
         $response = array('status' => 'OK', 'message' => $message);
     } catch (Exception $e) {
         $response = array('status' => 'ERROR', 'message' => $e->getMessage());
     }
     $this->view->add_json($response)->display();
     exit;
 }