Index: branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category.tpl	(revision 22586)
+++ branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category.tpl	(revision 22602)
@@ -25,8 +25,7 @@
     <h2 class="title_block">商品カテゴリ</h2>
     <nav id="categorytree">
-        <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}-->
+        <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist" display=1 level=0}-->
 
         <script>//<![CDATA[
-            initCategoryList(); //カテゴリリストの初期化
         //]]></script>
     </nav>
Index: branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category_tree_fork.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category_tree_fork.tpl	(revision 22586)
+++ branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category_tree_fork.tpl	(revision 22602)
@@ -21,10 +21,15 @@
  *}-->
 
-<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}-->>
+<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}--><!--{if $level > 5 || !$display}--> style="display: none;"<!--{/if}-->>
 <!--{foreach from=$children item=child}-->
-    <li<!--{if $child.view_flg == "2" || $child.level > 5 || !in_array($child.category_id, $arrDispID)}--> style="display: none;"<!--{/if}--> class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->">
+    <li class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->">
         <span class="category_header"></span><span class="category_body"><a rel="external" href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$child.category_id}-->"<!--{if in_array($child.category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$child.category_name|h}-->(<!--{$child.product_count|default:0}-->)</a></span>
+        <!--{if in_array($child.category_id, $arrParentID)}-->
+            <!--{assign var=disp_child value=1}-->
+        <!--{else}-->
+            <!--{assign var=disp_child value=0}-->
+        <!--{/if}-->
         <!--{if isset($child.children|smarty:nodefaults)}-->
-            <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children treeID=""}-->
+            <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children treeID="" display=$disp_child level=$child.level}-->
         <!--{/if}-->
     </li>
Index: branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category.tpl	(revision 22586)
+++ branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category.tpl	(revision 22602)
@@ -31,5 +31,5 @@
         <div class="block_body">
             <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_category.gif" alt="商品カテゴリ" /></h2>
-            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}-->
+            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist" display=1}-->
         </div>
     </div>
Index: branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category_tree_fork.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category_tree_fork.tpl	(revision 22586)
+++ branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category_tree_fork.tpl	(revision 22602)
@@ -21,10 +21,15 @@
  *}-->
 
-<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}-->>
+<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}--><!--{if !$display}--> style="display: none;"<!--{/if}-->>
 <!--{foreach from=$children item=child}-->
-    <li<!--{if !in_array($child.category_id, $arrDispID)}--> style="display: none;"<!--{/if}--> class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->">
+    <li class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->">
         <p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$child.category_id}-->"<!--{if in_array($child.category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$child.category_name|h}-->(<!--{$child.product_count|default:0}-->)</a></p>
+        <!--{if in_array($child.category_id, $arrParentID)}-->
+            <!--{assign var=disp_child value=1}-->
+        <!--{else}-->
+            <!--{assign var=disp_child value=0}-->
+        <!--{/if}-->
         <!--{if isset($child.children|smarty:nodefaults)}-->
-            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children}-->
+            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children display=$disp_child}-->
         <!--{/if}-->
     </li>
Index: branches/version-2_12-dev/data/class/util/SC_Utils.php
===================================================================
--- branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 22597)
+++ branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 22602)
@@ -1093,28 +1093,4 @@
     }
 
-    /* 階層構造のテーブルから与えられたIDの兄弟を取得する */
-    function sfGetBrothersArray($arrData, $pid_name, $id_name, $arrPID)
-    {
-        $max = count($arrData);
-
-        $arrBrothers = array();
-        foreach ($arrPID as $id) {
-            // 親IDを検索する
-            for ($i = 0; $i < $max; $i++) {
-                if ($arrData[$i][$id_name] == $id) {
-                    $parent = $arrData[$i][$pid_name];
-                    break;
-                }
-            }
-            // 兄弟IDを検索する
-            for ($i = 0; $i < $max; $i++) {
-                if ($arrData[$i][$pid_name] == $parent) {
-                    $arrBrothers[] = $arrData[$i][$id_name];
-                }
-            }
-        }
-        return $arrBrothers;
-    }
-
     /* 階層構造のテーブルから与えられたIDの直属の子を取得する */
     function sfGetUnderChildrenArray($arrData, $pid_name, $id_name, $parent)
Index: branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php	(revision 22595)
+++ branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php	(revision 22602)
@@ -37,4 +37,5 @@
     // }}}
     // {{{ functions
+    public $arrParentID;
 
     /**
@@ -133,21 +134,9 @@
         $arrTree = $objCategory->getTree();
 
-        $arrCategory = $objCategory->getList();
+        $this->arrParentID = array();
         foreach ($arrParentCategoryId as $category_id) {
             $arrParentID = $objCategory->getTreeTrail($category_id);
-            $arrBrothersID = SC_Utils_Ex::sfGetBrothersArray(
-                $arrCategory,
-                'parent_category_id',
-                'category_id',
-                $arrParentID
-            );
-            $arrChildrenID = SC_Utils_Ex::sfGetUnderChildrenArray(
-                $arrCategory,
-                'parent_category_id',
-                'category_id',
-                $category_id
-            );
+            $this->arrParentID = array_merge($this->arrParentID, $arrParentID); 
             $this->root_parent_id[] = $arrParentID[0];
-            $this->arrDispID = array_merge($arrBrothersID, $arrChildrenID);
         }
 
Index: branches/version-2_12-dev/tests/class/util/SC_Utils/SC_Utils_sfGetBrothersArrayTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/util/SC_Utils/SC_Utils_sfGetBrothersArrayTest.php	(revision 22567)
+++ 	(revision )
@@ -1,71 +1,0 @@
-<?php
-
-$HOME = realpath(dirname(__FILE__)) . "/../../../..";
-require_once($HOME . "/tests/class/Common_TestCase.php");
-/*
- * This file is part of EC-CUBE
- *
- * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-/**
- * SC_Utils::sfGetBrothersArray()のテストクラス.
- *
- *
- * @author Hiroko Tamagawa
- * @version $Id$
- */
-class SC_Utils_sfGetBrothersArrayTest extends Common_TestCase
-{
-
-
-  protected function setUp()
-  {
-    // parent::setUp();
-  }
-
-  protected function tearDown()
-  {
-    // parent::tearDown();
-  }
-
-  /////////////////////////////////////////
-  public function testSfGetBrothersArray__与えられたIDの兄弟要素だけが抽出される()
-  {
-    $input_array = array(
-      array('parent_id' => '1001', 'child_id' => '1001001'),
-      array('parent_id' => '1002', 'child_id' => '1002001'),
-      array('parent_id' => '1002', 'child_id' => '1002002'),
-      array('parent_id' => '1003', 'child_id' => '1003001'),
-      array('parent_id' => '1004', 'child_id' => '1004001')
-    );
-    $this->expected = array('1002001', '1002002', '1004001');
-    $this->actual = SC_Utils::sfGetBrothersArray(
-      $input_array, 
-      'parent_id',
-      'child_id', 
-      array('1002001', '1004001')
-    );
-    $this->verify();
-  }
-
-  //////////////////////////////////////////
-
-}
-
Index: branches/version-2_12-dev/html/user_data/packages/sphone/css/block.css
===================================================================
--- branches/version-2_12-dev/html/user_data/packages/sphone/css/block.css	(revision 21995)
+++ branches/version-2_12-dev/html/user_data/packages/sphone/css/block.css	(revision 22602)
@@ -250,4 +250,9 @@
     vertical-align: middle;
 }
+#categorytree li ul {
+    border: none;
+    margin: 0;
+    padding: 0;
+}
 
 #categorytree li:first-child {
Index: branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js
===================================================================
--- branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js	(revision 22586)
+++ branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js	(revision 22602)
@@ -1,119 +1,26 @@
-/*------------------------------------------
-指定されたノードを、オープンまたはクローズする
-------------------------------------------*/
-function openOrClose(tgt){
-    //指定ノードが「hidden」のとき、リストを可視化
-    if(tgt.style.visibility == "hidden"){
-        tgt.style.display = "block";
-        tgt.style.visibility = "visible";
-        tgt.style.height = "auto";
-        tgt.style.paddingTop = "0.25em";
-        tgt.style.lineHeight = "1em";
-        tgt.style.opacity = 1.0;
-    }
-    //指定ノードが「hidden」でないとき、リストを隠す
-    else{
-        tgt.style.display = "none";
-        tgt.style.visibility = "hidden";
-        tgt.style.height = "0px";
-        tgt.style.paddingTop = "0";
-        tgt.style.lineHeight = 0;
-        tgt.style.opacity = 0;
-    }
-}
-
-/*------------------------------------------
-リストープン処理
-------------------------------------------*/
-function listopen(lv, num){
-    var tgt = document.getElementsByClassName("level" + lv)[num];
-    //次のレベルをサーチ → 次のレベルのリストをオープンする
-    for(var i=0; i < document.getElementsByClassName("level" + (lv+1)).length; i++){
-        var next_tgt = document.getElementsByClassName("level" + (lv+1))[i];
-        //li
-        if (next_tgt.parentNode == tgt || next_tgt.parentNode.parentNode == tgt){
-            openOrClose(next_tgt);
-        }
-    }
-    //次のレベルをサーチ → 表示ボタンの状態を変更
-    for(var i=0; i < tgt.childNodes.length; i++){
-        var next_tgt = tgt.childNodes[i];
-        //ul
-        if(next_tgt.tagName == "UL"){
-            if(next_tgt.style.height == "0px"){
-                if(event.srcElement.parentNode.className == "category_header plus"){
-                    event.srcElement.innerText = '−';
-                    event.srcElement.parentNode.className = "category_header minus";
-                }
-                next_tgt.style.height = "auto";
-            }
-            else{
-                for(var i=0; i<next_tgt.parentNode.childNodes.length; i++){
-                    if(event.srcElement.parentNode.className == "category_header minus"){
-                        event.srcElement.innerText = '＋';
-                        event.srcElement.parentNode.className = "category_header plus";
-                    }
-                }
-                next_tgt.style.height = "0px";
-            }
-        }
-    }
-}
-
-/*------------------------------------------
-クリックイベントを設定する
-------------------------------------------*/
-function setclickevent(tgt, lv, num){
-    //レベル１以外の時は非表示に
-    if(lv!=1){
-        tgt.style.visibility = "hidden";
-        tgt.style.display = "none";
-        tgt.style.height = "0px";
-        tgt.style.lineHeight = 0;
-        tgt.style.paddingTop = 0;
-        tgt.style.paddingBottom = 0;
-        if(tgt.parentNode.tagName == "UL"){
-            tgt.parentNode.style.height = "0px";
-            tgt.parentNode.style.margin = "0";
-            tgt.parentNode.style.padding = "0";
-            tgt.parentNode.style.border = "none";
-        }
-    }
-    var hasLink_flg;
-    if(tgt.childNodes.length){
-        for (var j = 0; j < tgt.childNodes.length; j++) {
-            //クリック範囲の拡大
-            if(tgt.childNodes[j].tagName == 'A'){
-                tgt.setAttribute('onclick', 'location.href="' + tgt.childNodes[j].getAttribute('href') + '"');
-            }
-            //アコーディオンリストの操作イベント関数を追加
-            else if(tgt.childNodes[j].tagName == 'UL'){
-                //▶を表示し、リストオープン関数を追加
-                var linkObj = document.createElement("a");
-                linkObj.innerText = '＋';
-                $(tgt).children('span.category_header')
-                        .addClass('plus')
-                        .append(linkObj);
-                j++;
-                linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')');
-
-                //tgt.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')');
-                break;
-            }
-        }
-    }
-}
-
 /*------------------------------------------
 初期化
 ------------------------------------------*/
 //level?クラスを持つノード全てを走査し初期化
-function initCategoryList(){
-    var lv = 0;
-    //level?クラスを持つノード全てに、クリックイベントを追加
-    while(document.getElementsByClassName("level" + (++lv)).length){
-        for (var i = 0; i < document.getElementsByClassName("level" + lv).length; i++) {
-            setclickevent(document.getElementsByClassName("level" + lv)[i], lv, i);
+$(function(){
+    $("#categorytree li").each(function(){
+        if ($(this).children("ul").length) {
+            //▶を表示し、リストオープンイベントを追加
+            var tgt = $(this).children('span.category_header');
+            var linkObj = $("<a>");
+            linkObj.text('＋');
+            tgt
+                .click(function(){
+                    $(this).siblings("ul").toggle('fast', function(){
+                        if ($(this).css('display') === 'none') {
+                            tgt.children('a').text('＋');
+                        } else {
+                            tgt.children('a').text('ー');
+                        }
+                    });
+                })
+                .addClass('plus')
+                .append(linkObj);
         }
-    }
-}
+    });
+});
