//-----------------------------------------------------------------------------
//  Panel which is slowly unfolding on the client side.
//-----------------------------------------------------------------------------

RegisterNamespace("FP");

FP.ShowUp = function(panelId)
{
   var panel = document.getElementById(panelId);
   
   if (FP.x >= panel.offsetWidth || FP.y >= panel.offsetHeight)
   {
      panel.style.clip = "rect(auto, auto, auto, auto)"; 
      clearInterval(FP.intervalId);
      FP.intervalId = undefined;
      if (br_ie)
        panel.className = panel.className;
        
/*      if (br_ie)
      {
          var back = document.createElement("iframe");
          back.style.top=panel.offsetTop;
          back.id = "floating_panel_back";
          back.style.left=panel.offsetLeft;
          back.style.width=panel.offsetWidth;
          back.style.height=panel.offsetHeight;
          back.style.position="absolute";
          
          panel.style.zIndex= 1000;
          back.style.zIndex= 999;

          document.body.appendChild(back);
      }*/
   }
   else
   {
      FP.y += FP.stepY;
      FP.stepY *= 0.87;
      
      panel.style.clip = "rect(auto, auto, "+FP.y+"px, auto)"; 
   }   
}

FP.HideDown = function(panelId, showPanelId)
{
   var panel = document.getElementById(panelId);
   if (FP.x <= 0 || FP.y <= 0)
   {
      panel.style.clip = "rect(auto, auto, 0, auto)"; 
      document.getElementById(panelId).style.display="none";
      
      FP.FillPanelState(panelId, panel);
      
      clearInterval(FP.intervalId);
      FP.intervalId = null;
      
      if (br_ie)
        panel.className = panel.className;
        
      if (showPanelId != "undefined")
      {
          FP.OpenFloatingPanel(showPanelId);
      }
   }
   else
   {
      FP.y -= FP.stepY;
      FP.stepY *= 0.87;
      
      panel.style.clip = "rect(auto, auto, "+FP.y+"px, auto)"; 
   }   
}

FP.OpenFloatingPanel = function(panelId)
{
  if (FP.intervalId != null)
   return;
   
  if (FP.HidePanelsExcept(panelId) == 1)
    return;

  var panel = document.getElementById(panelId);
 
  if (panel.style.display == "block")
  { 
    FP.HideFloatingPanel(panelId, undefined);
    return; 
  } 

  panel.style.clip = "rect(auto, auto, 0, auto)"; 
  panel.style.display="block";
  panel.style.width =  panel.parentNode.offsetWidth;
  
  FP.FillPanelState(panelId, panel);
  
  FP.y = 0;
  FP.stepY = panel.offsetHeight/7;
  
  FP.intervalId = setInterval("FP.ShowUp('"+panelId+"')",30);
}


FP.HideFloatingPanel = function(panelId, showPanelId)
{
  if (FP.intervalId != null)
   return; 
   
  var panel = document.getElementById(panelId);
  
  FP.y = panel.offsetHeight;
  FP.stepY = panel.offsetHeight/4;
  
  FP.intervalId = setInterval("FP.HideDown('"+panelId+"','"+showPanelId+"')",30);
  
/*  if (br_ie)
  {
      var back = document.getElementById("floating_panel_back");
      if (back != null)
        document.body.removeChild(back);
  }*/
}

FP.HidePanelsExcept = function(panelId)
{
  var aDivs = document.body.getElementsByTagName("DIV");
  for(var i = 0; i < aDivs.length; i++)
  {
    var aDiv = aDivs[i];
    if(aDiv.className == "floating_panel" && aDiv.id != panelId && aDiv.style.display == "block")
    {
      FP.HideFloatingPanel(aDiv.id, panelId);
      return 1;
    } 
  }
  
  return 0; 
}

FP.FillPanelState = function(panelId, panel)
{
  var state = document.getElementById(panelId+"_state");
  state.value = panel.style.display + "," + panel.style.width;
}
//save state of all panels on the page in a hidden field 
FP.FillAllPanelsState = function()
{
  var aDivs = document.body.getElementsByTagName("DIV");
  for(var i = 0; i < aDivs.length; i++)
  {
    var aDiv = aDivs[i];
    if(aDiv.className == "floating_panel")
    {
      FP.FillPanelState(aDiv.id, aDiv);
    } 
  }
}


FP.FillAllPanelsState();