var m_structureTimer = null;
var m_structurePath = new Array();
var m_clearStructurePath = false;

function nid2midStructureMenu(node_id)
{
 var p = strpos(node_id,'.',0);
 if(p){return 'siteStructure'+node_id.substr(p);}
 return false;
}

function mid2nidStructureMenu(menu_id)
{
 var p = strpos(menu_id,'.',0);
 if(p){return 'siteStructureNode'+menu_id.substr(p);}
 return false;
}

function appendStructurePath(node_id)
{
 if(node_id)
 {
  var menu_id = nid2midStructureMenu(node_id);
  var menu_element = fetchElement(menu_id);
     
  if(menu_element)
  {
   if(m_structurePath.length==0)
   {
    m_structurePath.push(menu_id);
   }
   else
   {
    if(menu_id==m_structurePath[(m_structurePath.length-1)])return;
    
    /*var current_uri = explodeArray(menu_id,'.');
    var last_uri = explodeArray(m_structurePath[(m_structurePath.length-1)],'.');
    var valid_segment_count = getValidStructureSegmentCount(current_uri,last_uri)-1;
    
    //alert(current_uri+"\n---------------------\n"+last_uri);
    //alert('Valid segments: '+valid_segment_count);
     
    if(valid_segment_count<last_uri.length)
    {
     alert(current_uri+"\n"+valid_segment_count+"\n"+m_structurePath);
     //clearStructurePath();
    }*/
     
    filterStructureMenu(menu_id);     
    m_structurePath.push(menu_id);
   }     
      
   var handle_element = fetchElement(node_id);
   
   var nx = getElementX(handle_element) + getElementWidth(handle_element) + 7;
   var ny = getElementY(handle_element);
   
   showElement(menu_element); 
   setElementStyle(menu_element,'display','block');
   
   setElementStyle(menu_element,'left',nx+'px');
   setElementStyle(menu_element,'top',ny+'px');
   
   m_clearStructurePath = false;
  }
 }
}

function filterStructureMenu(current_uri)
{
 var path = new Array();
 var hide_elements = new Array();
 
 for(var i=0;i<m_structurePath.length;i++)
 {
  if(current_uri.search(m_structurePath[i])==0)
  path.push(m_structurePath[i]);
  else hide_elements.push(m_structurePath[i]);
 }
 for(var j=0;j<hide_elements.length;j++)
 {
  hideElement(fetchElement(hide_elements[j]));
 }
 m_structurePath = path;
}

function clearStructurePath(valid_segment_count)
{
 for(var i=0;i<m_structurePath.length;i++)
 {
  hideElement(fetchElement(m_structurePath[i]));
 }
 m_structurePath = new Array();
}

function timerStructureMenuEvent()
{
 if(m_clearStructurePath)
 {
  clearStructurePath();
  m_clearStructurePath = false;
 }
 m_structureTimer = setTimeout('timerStructureMenuEvent()',1000);
}

function getValidStructureSegmentCount(current_array,last_array)
{ 
 var vs = 0;
 var len = last_array.length;
 if(current_array.length<len)len=current_array.length;

 for(var i=0;i<len;i++)
 {
  if(last_array[i]==current_array[i])vs++;
 }
 
 return vs;
}

function showStructureMenu(node)
{
 if(node)
 {
  appendStructurePath(getElementID(node));
  if(m_structureTimer==null)
  {
   m_structureTimer = setTimeout('timerStructureMenuEvent()',1000);
  }
 }  
}

function hideStructureMenu()
{
 m_clearStructurePath = true;
}

function focusStructureMenu(element)
{
 m_clearStructurePath = false;
}

function blurStructureMenu()
{
 hideStructureMenu();
}