public function initCategoriesAssociation($id_root = null)
 {
     if (is_null($id_root)) {
         $id_root = Configuration::get('PS_ROOT_CATEGORY');
     }
     $id_shop = (int) Tools::getValue('id_shop');
     $shop = new Shop($id_shop);
     $selected_cat = Shop::getCategories($id_shop);
     if (empty($selected_cat)) {
         // get first category root and preselect all these children
         $root_categories = Category::getRootCategories();
         $root_category = new Category($root_categories[0]['id_category']);
         $children = $root_category->getAllChildren($this->context->language->id);
         $selected_cat[] = $root_categories[0]['id_category'];
         foreach ($children as $child) {
             $selected_cat[] = $child->id;
         }
     }
     if (Shop::getContext() == Shop::CONTEXT_SHOP && Tools::isSubmit('id_shop')) {
         $root_category = new Category($shop->id_category);
     } else {
         $root_category = new Category($id_root);
     }
     $root_category = array('id_category' => $root_category->id, 'name' => $root_category->name[$this->context->language->id]);
     $helper = new Helper();
     return $helper->renderCategoryTree($root_category, $selected_cat, 'categoryBox', false, true);
 }