//
// Class SubMenuState.
//
// isExpand == 1 -> Expand.
// isExpand == 0 -> Collapse.
//

function SubMenuState(uid, isExpand) {
  this.uid  = uid;
  this.isExpand = isExpand;
}
// Class SubMenuState. [end]

function subMenuRefreshSubMenu() {
  var subMenuStates = subMenuGetArrayOfSubMenuStates();
    
  for (var i = 0; i < subMenuStates.length; i++) {
    var subMenuTable = document.getElementById('subMenuTable' + subMenuStates[i].uid);
    var subMenuTableSpan = document.getElementById('subMenuTableSpan' + subMenuStates[i].uid);
    if (subMenuTable != null && subMenuTableSpan != null) {
      if (subMenuStates[i].isExpand == '1') {
         if (shareutilIsIE()) {
           subMenuTable.style.display = 'inline';
           subMenuTableSpan.innerText = '-';
         }
         else {
          subMenuTable.style.display = 'table';
          subMenuTableSpan.textContent = '-';
        }
      }
      else {
        subMenuTable.style.display = 'none';
         if (shareutilIsIE()) {
           subMenuTableSpan.innerText = '+';
         }
         else {
          subMenuTableSpan.textContent = '+';
        }
      }
    }
  }
}

function subMenuToggleExpandSubMenu(uid) {
  subMenuToggleSubMenuState(uid);
  subMenuRefreshSubMenu();
}
 
function subMenuGetSubMenuState(uid) {
  var subMenuStates = subMenuGetArrayOfSubMenuStates();
  
  for (var i = 0; i < subMenuStates.length; i++) {
    if (subMenuStates[i].uid == uid) {
      return subMenuStates[i].isExpand;
    }
  }
  
  return '0';
}

function subMenuSetSubMenuState(uid, isExpand) {
  var subMenuStates = subMenuGetArrayOfSubMenuStates();
  var i;

  for (i = 0; i < subMenuStates.length; i++) {
    if (subMenuStates[i].uid == uid) {
      subMenuStates[i].isExpand = isExpand;
      subMenuSetArrayOfSubMenuStates(subMenuStates);
          
      return;
    }
  }
  
  // Not found -> add new one.
  subMenuStates.push(new SubMenuState(uid, isExpand));
  subMenuSetArrayOfSubMenuStates(subMenuStates);
}

function subMenuToggleSubMenuState(uid) {
  var subMenuStates = subMenuGetArrayOfSubMenuStates();
  var i;

  for (i = 0; i < subMenuStates.length; i++) {
    if (subMenuStates[i].uid == uid) {
      if (subMenuStates[i].isExpand == '1') {
        subMenuStates[i].isExpand = '0';
      }
      else {
        subMenuStates[i].isExpand = '1';
      }
      
      break;
    }
  }
  
  // Not found -> add new one.
  if (i == subMenuStates.length) {
    subMenuStates.push(new SubMenuState(uid, 1));
  }
  
  subMenuSetArrayOfSubMenuStates(subMenuStates);
}
 
function subMenuSetArrayOfSubMenuStates(subMenuStates) {
  var s = '';
  
  for (var i = 0; i < subMenuStates.length; i++) {
    s += subMenuStates[i].uid + '=' + subMenuStates[i].isExpand;
    
    if (i != subMenuStates.length - 1) {
      s += ',';
    }
  }
  
  shareutilSetCookie('subMenuStates', s, 30);
}

function subMenuGetArrayOfSubMenuStates() {
  var subMenuTableCookie = shareutilGetCookie('subMenuStates');
  
  if (subMenuTableCookie == '') {
    return new Array();
  }
  
  var tmp;
  var tmp2;
    
  var resultArray = new Array();
    
  tmp = subMenuTableCookie.substr(subMenuTableCookie.indexOf('=') + 1, subMenuTableCookie.length - subMenuTableCookie.indexOf('=') );
  tmp = tmp.split(',');
  
  for (var i = 0; i < tmp.length; i++) {
    tmp2 = tmp[i].split('=');
    resultArray[i] = new SubMenuState(tmp2[0], tmp2[1]);
  }
    
  return resultArray;    
}