/**
***
**/

var dialog = null; // DOM Window executing dialog box
var destel = null; // destination_element.value receives returned data
if(!menu_Nodes)
  var menu_Nodes = new Array(); //Menu entries status


// Cookie functions - BEGIN//

function getCookieVal (offset) 
{
  var endstr = document.cookie.indexOf (';', offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) 
{
  var arg = name + '=';
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return getCookieVal (j);
    i = document.cookie.indexOf(' ', i) + 1;
    if (i == 0) break;
  }
  return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + '=' + escape (value) +
    ((expires) ? '; expires=' + expires.toGMTString() : '') +
    ((path) ? '; path=' + path : '') +
    ((domain) ? '; domain=' + domain : '') +
    ((secure) ? '; secure' : '');
}

// Cookie functions - END//

function ExecDialog(tagid, url, name)
{
  destel = document.getElementById(tagid);
  dialog = window.open(url, name, "width=470,height=470,status=0,alwaysRaised,centerscreen,modal,dialog,dependant=yes,menu=no,resizable=yes,toolbar=no,status=no,scrollbars=yes,menubar=no,directories=no,location=yes");
  dialog.focus();
}

function ExitDialog(retval)
{
  destel.value = retval;
  dialog.close();
}

function OpenWindow(url, name)
{
  dialog = window.open(url, name, "width=800,height=580,status=0,alwaysRaised,centerscreen,modal,dialog,dependant=yes,menu=no,resizable=yes,toolbar=no,status=no,scrollbars=yes,menubar=no,directories=no,location=no");
  dialog.focus();
}

function menuSerialize(AMap)
{
  var result = '';
  for (var key in AMap)
    if (AMap[key])
      result += (result ? ',' : '') + key;
  return result;
}

function menuUnserialize(AStr)
{
  var result = {};
  if (AStr) {
    var list = AStr.split(',');
    for (key in list)
      result[list[key]] = true;
  }
  return result;
}

function menuSaveState(menuID)
{
  var str = menuSerialize(menu_Nodes[menuID]);
  SetCookie('menuTreeState_'+menuID, str);
}

function menuGetFromCookie(menuID)
{ 
  xNodes = menuUnserialize(GetCookie('menuTreeState_'+menuID));
  for (var id in menu_Nodes[menuID]) {
    menu_Nodes[menuID][id] = false;
  }
  for (var id in xNodes) {
    menu_Nodes[menuID][id] = true;
  }
}

function menuLoadState(menuID)
{
  menuGetFromCookie(menuID)

  for (var id in menu_Nodes[menuID]) {
    if (menu_Nodes[menuID][id])
      menu_hide(menuID, id, true);
    else 
      menu_hide(menuID, id, false);
  }
}

function menu_hide(menuID, mid, State)
{
  var subTreeElement = document.getElementById('menu_' + mid);
  var Image = document.getElementById('image_' + mid);
  
  if (State == undefined) {
    State = null;
  }
  
  if (!subTreeElement)
    return false;

  var currentState = (subTreeElement.style.display == 'none');
  var newState = (State != null ? State : !currentState);

  if (newState) {
    subTreeElement.style.display = 'none';
    if (Image) Image.src = 'design/arrows_dn.gif';
  } else {
    subTreeElement.style.display = 'block';
    if (Image) Image.src = 'design/arrows_up.gif';
  }  

  menu_Nodes[menuID][mid] = newState;
  menuSaveState(menuID);
}
