jQuery.fn.nestedAccordion = function()
{

  function openToHash()
  {
    //如果有指定 則開至指定層
    // ex: document.location.hash == '#someEleId'
    var fragment = String(document.location.hash);
    if (fragment)
    {
      jQuery(fragment).show(800);
      jQuery(fragment).parentsUntil('#nested_accordion').show(800);
    }
  }

  
 
  //註冊事件 當hash/frag改變時開至該層
  if (window.onhashchange)
  {
    window.onhashchange = openToHash();
  }

  //將所有目錄隱藏
  jQuery('#nested_accordion dt+dd').hide().addClass('hidden');
  
  
  //第一次載入網頁後先檢查 如果有指定 則開至指定層
  openToHash();
  
  //在 dt 加入開啟 dd 子選單事件
  //取得接在 <dt> 之後的 <dd> 先將其隱藏
  
  jQuery("#nested_accordion dt+dd").prev('dt:not(:has(a))').click(function(eventObject)
  {
    //如果選單dt有內容dd 且被隱藏
    if (jQuery(this).next("dd").hasClass('hidden'))
    {
      jQuery(this).next("dd").addClass('current');
      jQuery("#nested_accordion dt+dd:not(:has(.current))")
      .removeClass('show')
      .removeClass('current')
      .addClass('hidden')
      .hide(800);
      
      jQuery(this).next("#nested_accordion dd").show(800);
      jQuery(this).next("dd").removeClass('hidden');
      jQuery(this).next("dd").addClass('show');
    }
    else
    {
      jQuery(this).next("dd").hide(800);
      jQuery(this).next("dd").removeClass('show');
      jQuery(this).next("dd").addClass('hidden');
      
      jQuery(this).next("dd").removeClass('current');
    }
  });
  
  return jQuery(this); 
}
