﻿/*******************************************************************************
 *        程序 ID     ：    框架菜单
 *        程序名称    ：    框架菜单
 *        处 理       ：    框架菜单
 *        功 能       ：    框架菜单
 *
 *        修改履历
 *        年  月  日 区分 所 属/担 当        内 容                     对应编号
 *        ---------- ---- ------------------ ------------------------- --------
 *        2007/10/16 编写 Intasect/陈冬    新規作成
 *        2008/03/14 变更 Intasect/陈冬    对应综合测试课题151 281 291
 *        2008/03/20 变更 Intasect/陈冬    从主页购买服务时不刷新画面  综合.343
 *        2008-03-21 变更 Intasect/陈冬    修改“理财策略”的菜单路径  综合.361
 * 
 * 
 *        Copyright ( C ) 2007 by Intasect communications(Chengdu), Co, Ltd.
 *        All rights reserved.
 *
********************************************************************************/
// Menu1 : 一级菜单
var Menu1 = Class.create();
Menu1.prototype = {
  // 类型
  GetType : function()
  {
    return "Menu1";
  },
  // 本菜单DIV
  div                  : null,
  // 二级子菜单容器DIV ID
  childMenusDivID      : "",
  // 二级子菜单容器DIV
  childMenusDiv        : null,
  // 二级子菜单指向三级菜单箭头DIV ID
  childMenusArrowDivID : "",
  // 二级子菜单指向三级菜单箭头DIV
  childMenusArrowDiv   : null,
  // 二级子菜单
  childMenus           : null,
  // 焦点二级菜单
  focusedMenu2         : null,
  // 焦点三级菜单
  focusedMenu3         : null,
  // 内容区域
  body                 : null,
  // Tips人物
  tipsGuider           : null,
  // 二级菜单区
  divMenu2s            : null,
  // 三级菜单区
  divMenu3s            : null,
  //页面容器IFrame
  frameFlake           : null,
  //菜单路径
  menuRoute            : null,
  //画面提示
  pageTip              : null,
  //广告区
  miniAdsArea          : null,
  //是否已打开页面
  HasPage : false,
  
  // CSS
  CSS :
  {
    Normal  : "menu1",
    Focused : "menu1Focused",
    Focused2chr : "menu1Focused2chr",
    Focused4chr : "menu1Focused4chr"
  },

  initialize : function(id,text)
  {
    this.id = id;
    this.idPrev = "__"+id+"__";
    this.text = text;
    this.options = Object.extend({}, arguments[2] || {});
    this.childMenus = new Array();
    this.childMenusDivID      = id + "ChildMenusDiv";
    this.childMenusArrowDivID = id + "ChildMenusDivArrow";
    if(document.getElementById(id + "Body"))
    {
        this.body = document.getElementById(id + "Body");
        this.menus = document.getElementById(id + "Menus");
        this.HasPage = true;
    }
    else
    {
        this.body = null;
        this.menus = null;
    }
  },
  
  // 本菜单(1级)获得焦点
  Focus : function()
  {
    if(Menu1s.focusedMenu1 != null && Menu1s.focusedMenu1.focusedMenu3 != null)
    {
        Menu1s.lastFocusedMenu1 = Menu1s.focusedMenu1;
    }
    Menu1s.focusedMenu1 = this;
    
    var chrs = this.text.length;
    if(chrs < 4)
    {
        this.div.className = this.CSS.Focused2chr;
    }
    else if(chrs < 6)
    {
        this.div.className = this.CSS.Focused4chr;
    }
    else
    {
        this.div.className = this.CSS.Focused;
    }
    if(this.body == null){
        var menumenus = document.getElementById("divMenus").cloneNode(true);
        this.renameNode(menumenus,this.idPrev);
        document.getElementById("menus").appendChild(menumenus);
        this.menus = menumenus;
        var menubody = document.getElementById("divBody").cloneNode(true);
        this.renameNode(menubody,this.idPrev);
        document.getElementById("bodys").appendChild(menubody);
        this.body = menubody;
        this.tipsGuider = document.getElementById(this.idPrev + "imgTipsGuider");
        this.divMenu2s = document.getElementById(Menu1s.focusedMenu1.idPrev + "divMenu2s");
        this.divMenu3s = document.getElementById(Menu1s.focusedMenu1.idPrev + "divMenu3s");
        this.frameFlake = document.getElementById(Menu1s.focusedMenu1.idPrev + "frameFlake");
        this.frameFlakeFull = document.getElementById(Menu1s.focusedMenu1.idPrev + "frameFlakeFull");
        this.frameFlake.menu1ID = this.id;
        this.frameFlakeFull.menu1ID = this.id;
        this.menuRoute = document.getElementById(Menu1s.focusedMenu1.idPrev + "divRoute");
        this.menuRouteFull = document.getElementById(Menu1s.focusedMenu1.idPrev + "divRouteFull");
        this.pageTip = document.getElementById(Menu1s.focusedMenu1.idPrev + "divTip");
        this.miniAdsArea = document.getElementById(Menu1s.focusedMenu1.idPrev + "divMiniAds");
    }
    this.ShowChildMenus();
    this.menus.style.display = CONST.CSS.Display.Empty;
    if(this.HasPage)
    {
        if(Menu1s.lastBody)
        {
            Menu1s.lastBody.style.display = CONST.CSS.Display.None;
        }
        this.body.style.display = CONST.CSS.Display.Empty;
    }
    else
    {
        Menu1s.lastBody.style.display = CONST.CSS.Display.Empty;
    }
    if(this.id != "M000")
    {
        this.tipsGuider.src = "img/v2/" + this.id + ".gif";
    }
  },
  
  // 本菜单失去焦点
  LoseFocus : function()
  {
    this.div.className = this.CSS.Normal;
    if(this.body != null)
    {
        this.menus.style.display = CONST.CSS.Display.None;
        this.body.style.display = CONST.CSS.Display.None;
        if(this.body != null && this.HasPage)
        {
            Menu1s.lastBody = this.body;
        }
    }
  },
  
  // 重命名节点(复制生成body时加前缀)
  renameNode : function(node,pre)
  {
    if(!node || node.id==undefined){
        return;
    }
    if(node.id != "")
    {
        node.id = pre + node.id;
    }
    for(var i in node.childNodes)
    {
      this.renameNode(node.childNodes[i],pre);
    }
  },

  // 添加二级子菜单
  Add : function(menu2)
  {
    this.childMenus.push(menu2);
    menu2.parentMenu = this;
  },
  
  // 根据ID或text获取二级菜单
  Get : function(idortext)
  {
    var result = null;
    this.childMenus.each(
      function(m)
      {
        if(m.id == idortext || m.text == idortext)
        {
          result = m;
          throw $break;
        }
      }
    );
    return result;
  },

  //显示一级菜单下的二级菜单
  ShowChildMenus : function()
  {
    if(this.id == "M000")
    {
        //首页
        return;
    }
    this.childMenusDiv        = document.getElementById(this.childMenusDivID);
    this.childMenusArrowDiv   = document.getElementById(this.childMenusArrowDivID);

    if(!this.childMenusDiv)
    {
      this.childMenusDiv         = document.createElement(CONST.HtmlTag.Div);
      this.childMenusDiv.id      = this.childMenusDivID;
      this.childMenusDiv.menuID  = this.id;
      this.childMenusArrowDiv    = document.createElement(CONST.HtmlTag.Div);
      this.childMenusArrowDiv.id = this.childMenusArrowDivID;
      
      this.childMenusArrowDiv.className = Menu1s.CSS.ChildMenusArrowDivClass;
      Menu1s.focusedMenu1.menus.appendChild(this.childMenusArrowDiv);
      
      for(var i=0;i<this.childMenus.length;i++)
      {
        this.childMenus[i].GetHTML();
        this.childMenusDiv.appendChild(this.childMenus[i].div);
      }
      Menu1s.focusedMenu1.divMenu2s.appendChild(this.childMenusDiv);
    }
  },
  
  GetHTML : function()
  {
    var menu1Div = document.createElement(CONST.HtmlTag.Span);
    menu1Div.id = "Menu1" + this.id;
    menu1Div.menuID = this.id;
    menu1Div.innerText =  this.text;
    menu1Div.className = this.CSS.Normal;
    menu1Div.attachEvent("onclick",function(){
        if(Menu1s.focusedMenu1 != null){
            Menu1s.focusedMenu1.LoseFocus();
        }
        var menu1 = Menu1s.Get(event.srcElement.innerText);
        if(menu1 != null)
        {
          menu1.Focus();
        }
    });
    this.div = menu1Div;
  }
}

// Menu2 : 二级菜单
var Menu2 = Class.create();
Menu2.prototype = {
  // 类型
  GetType : function()
  {
    return "Menu2";
  },
  // 本菜单DIV
  div        : null,
  // 父菜单
  parentMenu : null,
  // 三级子菜单集合
  childMenus : null,
  // 焦点三级菜单
  focusedMenu3 : null,
  // 三级子菜单容器DIV
  menu3sDiv  : null,
  // CSS
  CSS : 
  {
    Normal  : "menu2",
    Focused : "menu2Focused"
  },
  
  initialize : function(id,text)
  {
    this.id = id;
    this.text = text;
    this.childMenus = new Array();
    this.options = Object.extend({}, arguments[2] || {});
  },
  
  // 本菜单(2级)获得焦点
  Focus : function()
  {
    Menu1s.focusedMenu1.focusedMenu2 = this;
    this.div.className = this.CSS.Focused;
    this.ShowChildMenus();
  },
  
  // 本菜单失去焦点
  LoseFocus : function()
  {
    this.div.className = this.CSS.Normal;
    this.HideChildMenus();
  },
  
  // 添加三级子菜单
  Add : function(menu3)
  {
    this.childMenus.push(menu3);
    menu3.parentMenu = this;
  },
 
  //显示二级子菜单
  ShowChildMenus : function()
  {
    if(!this.menu3sDiv)
    {
      var menu3sDivID = "Menu3" + this.id;
      if(document.getElementById(menu3sDivID))
      {
        document.getElementById(menu3sDivID).removeNode(true);
      }
      var menu3sHTML = this.GetMenu3s();
      this.menu3sDiv = document.createElement(CONST.HtmlTag.Div);
      this.menu3sDiv.id = menu3sDivID;
      
      var spliter = null;
      for(var i=0;i<this.childMenus.length;i++)
      {
        if(i!=0)
        {
            spliter = document.createElement(CONST.HtmlTag.Div);
            spliter.innerText = " |  ";
            spliter.className = "menu3Spliter";
            this.menu3sDiv.appendChild(spliter);
        }
        this.menu3sDiv.appendChild(this.childMenus[i].div);
      }
      Menu1s.focusedMenu1.divMenu3s.appendChild(this.menu3sDiv);
    }
    if(this.childMenus.length == 1)
    {
        //只包含一个3级菜单时直接执行3级菜单的点击事件
        this.childMenus[0].Focus(2);
        this.menu3sDiv.style.display = CONST.CSS.Display.None;
        Menu1s.focusedMenu1.childMenusArrowDiv.style.display = CONST.CSS.Display.None;
    }else{
        //包含不止一个3级菜单时显示所有3级菜单和指向3级菜单的箭头
        this.menu3sDiv.style.display = CONST.CSS.Display.Empty;
        var offsetobj = null;
        if(event.srcElement.offsetParent.id.indexOf(Menu1s.focusedMenu1.idPrev) == -1)
        {
            offsetobj = event.srcElement;
        }else{
            offsetobj = document.getElementById(Menu1s.focusedMenu1.idPrev + event.srcElement.offsetParent.id).firstChild;
        }
        var menu1Top  = JSUtil.CalcAbsoluteOffset(offsetobj,"offsetTop");
        var menu1Left = JSUtil.CalcAbsoluteOffset(offsetobj,"offsetLeft");
        if(menu1Top == -1)
        {
            menu1Top = JSUtil.CalcAbsoluteOffset(offsetobj,"offsetTop");
        }
        if(menu1Left == -1)
        {
            menu1Left = JSUtil.CalcAbsoluteOffset(offsetobj,"offsetLeft");
        }
        Menu1s.focusedMenu1.childMenusArrowDiv.style.display = CONST.CSS.Display.Empty;
        Menu1s.focusedMenu1.childMenusArrowDiv.style.pixelLeft = menu1Left + offsetobj.offsetWidth / 2 - 4;
        Menu1s.focusedMenu1.childMenusArrowDiv.style.pixelTop  = menu1Top + offsetobj.offsetHeight + 2;
        Menu1s.focusedMenu1.childMenusArrowDiv.style.backgroundImage = "url(" + CONST.Res.ImgMenuArrow + ")";
    }
  },

  // 隐藏三级子菜单
  HideChildMenus : function()
  {
    if(this.menu3sDiv)
    {
      this.menu3sDiv.style.display = CONST.CSS.Display.None;
    }
  },
  
  // 读取三级子菜单
  GetMenu3s : function()
  {
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = "false";
    if(Storage.Data.menus == "" || Storage.Data.menus == undefined)
    {
      xmlDoc.load("xml/menu.xml");
    }else{
      xmlDoc.loadXML(Storage.Data.menus);
    }

    var result = "";
    if (xmlDoc.parseError.errorCode != 0)
    {
      Message.Show(Message.MSG.SysException);
      return;
    }
    var menu1List = xmlDoc.documentElement.childNodes;
    for1:
    for(var i = 0; i < menu1List.length ; i++)
    {
      var menu2List = menu1List[i].childNodes;
      for(var j=0;j<menu2List.length;j++)
      {
        var menu2Attr = menu2List[j].attributes;
        for(var k=0;k<menu2Attr.length;k++)
        {
          if(menu2Attr[k].nodeName == "menuID")
          {
            if(menu2Attr[k].nodeValue == this.id)
            {
              result = this.GetMenu3sHTML(menu2List[j]);
              break for1;
            }
          }
        }
      }
    }
    return result;
  },
  
  // 根据ID或text获取三级菜单
  Get : function(idortext)
  {
    var result = null;
    this.childMenus.each(
      function(m)
      {
        if(m.id == idortext || m.text == idortext)
        {
          result = m;
          throw $break;
        }
      }
    );
    return result;
  },

  // 取得单个三级子菜单的HTML
  GetMenu3HTML : function(menu3Node)
  {
    var _icon       = JSUtil.GetAttribute(menu3Node,"icon")       ? JSUtil.GetAttribute(menu3Node,"icon")       : JSUtil.GetChildNode(menu3Node,"icon")      ? JSUtil.GetChildNode(menu3Node,"icon").text : "";
    var _pageid     = JSUtil.GetAttribute(menu3Node,"pageid")     ? JSUtil.GetAttribute(menu3Node,"pageid")     : JSUtil.GetChildNode(menu3Node,"pageid")    ? JSUtil.GetChildNode(menu3Node,"pageid").text : "";
    var _title      = JSUtil.GetAttribute(menu3Node,"title")      ? JSUtil.GetAttribute(menu3Node,"title")      : JSUtil.GetChildNode(menu3Node,"title")     ? JSUtil.GetChildNode(menu3Node,"title").text : "";
    var _menuid     = JSUtil.GetAttribute(menu3Node,"menuID")     ? JSUtil.GetAttribute(menu3Node,"menuID")     : JSUtil.GetChildNode(menu3Node,"menuID")    ? JSUtil.GetChildNode(menu3Node,"menuID").text : "";
    var menu3 = new Menu3(_menuid,_title);
    menu3.aspxId = _pageid;
    menu3.icon = _icon;
    var htmlText = menu3.GetHTML();
    this.Add(menu3);
    return htmlText;
  },
  
  // 取得所有三级子菜单的HTML
  GetMenu3sHTML : function(menu2Node)
  {
    var result = "";
    for(var i=0;i<menu2Node.childNodes.length;i++)
    {
        result += this.GetMenu3HTML(menu2Node.childNodes[i]);
    }
    return result;
  },
  
  //生成二级菜单内容HTML
  GetHTML : function()
  {
    var menu2span = document.createElement(CONST.HtmlTag.Span);
    this.div = menu2span;
    this.div.id        = "Menu2" + this.id;
    this.div.className = this.CSS.Normal;
    var menu2a = document.createElement(CONST.HtmlTag.A);
    menu2a.menuID = this.id;
    //menu2a.href = "javascript:void(0)";
    menu2a.style.cursor = "pointer";
    menu2a.innerText = this.text;
    this.div.appendChild(menu2a);
    
    menu2a.attachEvent("onclick",function(){
        var clickMenuID = event.srcElement.menuID;
        var clickMenu2 = Menu1s.focusedMenu1.Get(clickMenuID);
        if(clickMenu2 == Menu1s.focusedMenu1.focusedMenu2 && clickMenu2.childMenus.length != 1){return;}
        if(Menu1s.focusedMenu1.focusedMenu2 != null){
            Menu1s.focusedMenu1.focusedMenu2.LoseFocus();
        }
        clickMenu2.Focus();
    });
  }
}

//Menu3 : 三级菜单
var Menu3 = Class.create();
Menu3.prototype = {
  // 类型
  GetType : function()
  {
    return "Menu3";
  },
  // 本菜单DIV
  div        : null,
  // 父菜单
  parentMenu : null,
  // 画面ID
  aspxId     : "",
  // 图标
  icon       : "",
  
  CSS        : {
    Normal  : "menu3",
    Focused : "menu3Focused"
  },
  
  initialize : function(id,text)
  {
    this.id = id;
    this.text = text;
    this.options = Object.extend({}, arguments[1] || {});
  },
  
  // 本菜单(3级)获得焦点
  // m : 当二级菜单只包含一个三级菜单时值为2，直接打开画面
  Focus : function(m)
  { 
    if(this.text != "我的信箱")
    {
        if(Menu1s.focusedMenu1.focusedMenu3 == this)
        {
            // 重复点击焦点三级菜单，返回
            Flakes.Menu3AddFlake(this.aspxId,m);
            return;
        }
        Menu1s.focusedMenu1.focusedMenu2.focusedMenu3 = this;
        if(Menu1s.focusedMenu1.focusedMenu3 != null)
        {
            Menu1s.focusedMenu1.focusedMenu3.LoseFocus();
        }
        Menu1s.focusedMenu1.focusedMenu3 = this;
    }
    this.div.className = this.CSS.Focused;
    Flakes.Menu3AddFlake(this.aspxId,m);
  },
  
  // 本菜单失去焦点
  LoseFocus : function()
  {
    this.div.className = this.CSS.Normal;
    Menu1s.focusedMenu1.focusedMenu2.focusedMenu3 = null;
    Menu1s.focusedMenu1.focusedMenu3 = null;
  },
  
  // 生成本菜单HTML内容
  GetHTML : function(){
    if(this.div == null){
        var menu3Div = document.createElement(CONST.HtmlTag.Div);
        menu3Div.id = this.id
        menu3Div.className = this.CSS.Normal;
        var menu3a = document.createElement(CONST.HtmlTag.A);
        //menu3a.href = "javascript:void(0);";
        menu3a.style.cursor = "pointer";
        var _menu3 = this;
        menu3a.innerText = this.text;
        menu3Div.appendChild(menu3a);
        this.div = menu3Div;
        menu3a.attachEvent("onclick",function(){
            var _focusedMenu3 = Menu1s.focusedMenu1.focusedMenu3;
            if(_focusedMenu3)
            {
                if(_focusedMenu3.id == _menu3.id){
                    //comment return 以可以重复点击
                    //return;
                    _focusedMenu3.LoseFocus();
                }else{
                    _focusedMenu3.LoseFocus();
                }
            }
            _menu3.Focus();
        });
    }
    return this.div.outerHTML;
  }
}

// Menu1s : 菜单管理器
var Menu1s = {

  // 一级菜单集合
  menus        : [],
  
  // 焦点一级菜单
  focusedMenu1 : null,
  
  // 上一次焦点一级菜单
  lastFocusedMenu1 : null,
  
  // 上一次focus body
  lastBody : null,
  
  CSS          :
  {

    Menu1DivSpliterClass    : "menu1Spliter",
    Menu1DivSpecClass       : "specMenu1",
    ChildMenusArrowDivClass : "childMenusArrowDiv"
  },

  Init : function()
  {
    // 读取一级菜单
    this.GetMenu1s();
    
    // 创建一级菜单
    this.CreateMenu1s();
    
    // 焦点定位到第一个一级菜单(首页)
    this.menus[0].Focus();
  },

  // 添加受管一级菜单
  Add : function(menu1)
  {
    this.menus.push(menu1);
  },

  // 根据ID或text获取一级菜单
  Get : function(idortext)
  {
    var result = null;
    this.menus.each(
      function(m)
      {
        if(m.id == idortext || m.text == idortext)
        {
          result = m;
          throw $break;
        }
      }
    );
    return result;
  },
  
  //根据id 或 text查找一级菜单，未找到返回-1，找到返回序号
  ContainsMenu1 : function(idortext)
  {
    var result = -1;
    for(var i=0;i<Menu1s.menus.length;i++)
    {
        if(this.menus[i].id == idortext || this.menus[i].text == idortext)
        {
            result = i;
            break;
        }
    }
    return result;
  },

  // 创建一级菜单显示
  CreateMenu1s : function()
  {
    var menucontainer = document.getElementById("divMenu1s");
    for(var i=0;i<this.menus.length;i++)
    {
        this.menus[i].GetHTML();
        if(CONST.Menu1Spec.grep(this.menus[i].text).length > 0)
        {
            //特殊一级菜单
            if(this.menus[i].text == "我的信箱")
            {
                document.getElementById("divMyMsgBox").style.display = CONST.CSS.Display.Empty;
            }
        }else{
            //普通一级菜单
            if(i != 0)
            {
                // 添加间隔符
                var splispan = document.createElement(CONST.HtmlTag.Span);
                splispan.innerText =  " | ";
                splispan.className = Menu1s.CSS.Menu1DivSpliterClass;
                menucontainer.appendChild(splispan);
            }
            menucontainer.appendChild(this.menus[i].div);
        }
    }
  },

  // 读取所有一级菜单
  GetMenu1s : function()
  { 
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = "false";
    if(Storage.Data.menus == "" || Storage.Data.menus == undefined)
    {
      xmlDoc.load("xml/menu.xml");
    }else{
      xmlDoc.loadXML(Storage.Data.menus);
    }
    if (xmlDoc.parseError.errorCode != 0)
    {
      Message.Show(Message.MSG.SysException);
      return;
    }
    var menu1List = xmlDoc.documentElement.childNodes;
    var menu1 = new Menu1("M000","首 页");
    this.Add(menu1);
    for(var i = 0; i < menu1List.length ; i++)
    {
      var menu1Node = menu1List[i];
      var _menu1_ID_   = JSUtil.GetAttribute(menu1Node,"menuID");
      var _menu1_text_ = JSUtil.GetAttribute(menu1Node,"text");
      var menu1 = new Menu1(_menu1_ID_,_menu1_text_);
      for(var m2 = 0;m2<menu1Node.childNodes.length;m2++)
      {
        var menu2Node = menu1Node.childNodes[m2];
        var _menu2_ID_   = JSUtil.GetAttribute(menu2Node,"menuID");
        var _menu2_text_ = JSUtil.GetAttribute(menu2Node,"text");
        var menu2 = new Menu2(_menu2_ID_,_menu2_text_);
        menu1.Add(menu2);
      }
      this.Add(menu1);
    }
  },
  
  //到菜单“申请成为理财师”
  GoToSQCWLCS : function()
  {
      Dialog.closeInfo();
      Menu1s.GoMenu("SQCWLCS");
  },
  
  //购买服务后刷新画面
  RefreshCurMenu3 : function()
  {
      try
      {
           if(Menu1s.focusedMenu1.id == "M000")
          {
              //在首页时不执行刷新
              return;
          }
          if(Menu1s.focusedMenu1.focusedMenu3 != null)
          {
              Menu1s.focusedMenu1.focusedMenu3.Focus();
          }
          else if(Menu1s.lastFocusedMenu1.focusedMenu3 != null)
          {
              Menu1s.focusedMenu1.LoseFocus();
              Menu1s.lastFocusedMenu1.Focus();
              Menu1s.focusedMenu1.focusedMenu3.Focus();
          }
      }catch(e){}
  },
  
  //点击特殊一级菜单(我要找理财师 or 我要提供服务 or 帮助)
  SpecMenuClick : function()
  {
    var menuText = "";
    if(event.srcElement.tagName == "FONT"){
        menuText = event.srcElement.parentNode.innerText;
    }else{
        menuText = event.srcElement.innerText;
    }
    switch(menuText)
    {
    case "我要找理财师":
    
        var pos = Menu1s.ContainsMenu1(menuText);
        if(Menu1s.focusedMenu1 && Menu1s.focusedMenu1.text == menuText)
        {
            return;
        }
        if(pos != -1)
        {
            Menu1s.menus[pos].div.click();
            return;
        }
        break;
    case "我要提供服务":
        
        if(Storage.ActorID == CONST.Actors.GUEST)
        {
            //需先登录
            Menu1s.AddLoginFlake();
            return;
        }
        
        if(Storage.ActorID == CONST.Actors.REGED || Storage.ActorID == CONST.Actors.MEMBER)
        {
            //需要先申请成为理财师
            Dialog.confirm(Message.MSG.ApplayProvFirst,
                 {
                  okLabel:"确定",
                  cancelLabel : "取消",
                  buttonClass:"EditAeraButtonStyle",
                  windowParameters:{
                                    height:120,
                                    width:300,
                                    draggable:false,
                                    className:"dialog",
                                    icon:CONST.Res.ImgAlertIcon
                                   },
                  ok : Menu1s.GoToSQCWLCS
                 }
                );
            return;
        }
        
        var pos = Menu1s.ContainsMenu1("个人帐户管理");
        if(pos != -1)
        {
            if(Menu1s.focusedMenu1.text != "个人帐户管理")
            {
                Menu1s.menus[pos].div.click();
            }
            var _menu2 = Menu1s.focusedMenu1.Get("提供服务管理");
            if(_menu2 != null)
            {
                if(!Menu1s.focusedMenu1.focusedMenu2 || Menu1s.focusedMenu1.focusedMenu2.text != "提供服务管理")
                {
                    _menu2.div.firstChild.click();
                    if(_menu2.focusedMenu3)
                    {
                        _menu2.focusedMenu3.Focus();
                    }
                }
            }
            return;
        }
        break;
    case "帮助":
        var pos = Menu1s.ContainsMenu1("客服中心");
        if(pos != -1)
        {
            if(Menu1s.focusedMenu1.text != "客服中心")
            {
                Menu1s.menus[pos].div.click();
            }
            return;
        }
        break;
    }
    if(menuText.substring(0,4)=="我的信箱")
    {
        var pos = Menu1s.ContainsMenu1(menuText.substring(0,4));
        if(pos != -1)
        {
            if(Menu1s.menus[pos].childMenus[0].childMenus.length==0)
            {
                Menu1s.menus[pos].childMenus[0].GetMenu3s();
            }
            Menu1s.menus[pos].childMenus[0].childMenus[0].Focus();
            return;
        }
    }
  },
  
  FocusMenu : function(strIDs)
  { 
    try
    {
      var ids = strIDs.split(",");
      if(ids.length > 0)
      {
        Menu1s.Get(ids[0]).div.click();
        if(ids.length > 1)
        {
          Menu1s.Get(ids[0]).Get(ids[1]).div.firstChild.click();
          if(ids.length > 2)
          {
            Menu1s.Get(ids[0]).Get(ids[1]).Get(ids[2]).div.firstChild.click();
          }  
        }
      }
      return true;
    }catch(e){
      return false;
    }
  },
  
  NeedLoginMenu : ['M002001001','M002002001','M002003001','M002004001','M003001001',
                   'M003001002','M003001003','M003001004','M003001005','M003002001',
                   'M003002002','M003002003','M003002004','M003002005','M003002006',
                   'M003002007','M003003001','M003003002','M003003003','M003003004',
                   'M003003005','M003004001','M003004002','M003004003','M003004004',
                   'M003004005','M003004006','M003005001','M003006001','M003007001',
                   'M003007002','M003007003','M003007004','M003007005','M004001001',
                   'M004002001','M004003001','M005001001','M005002001','M005002002',
                   'M005002003','M005002004','M005002005','M005003001','M005003002',
                   'M005003003','M005003004','M005004001'],
  
  MenuPath :
  {
    //RSS
    GNCJ : "理财资讯,财经,国内财经",
    GJCJ : "理财资讯,财经,国际财经",
    CJTT : "理财资讯,财经,财经头条",
    CJSP : "理财资讯,财经,财经时评",
    GPSCDT : "理财资讯,股票,股票市场动态",
    WHSCDT : "理财资讯,外汇,外汇市场动态",
    ZQSCDT : "理财资讯,债券,债券市场动态",
    JJSCDT : "理财资讯,基金,基金市场动态",
    ZQSCFX : "理财资讯,债券,债券市场分析",
    ZQJYTS : "理财资讯,债券,债券交易提示",
    JJSCFX : "理财资讯,基金,基金市场分析",
    JJJYTS : "理财资讯,基金,基金交易提示",
    GPSCFX : "理财资讯,股票,股票市场分析",
    GPHYDT : "理财资讯,股票,行业动态",
    GPHYYJ : "理财资讯,股票,行业研究",
    SSGSYJ : "理财资讯,股票,上市公司研究",
    GPJYTS : "理财资讯,股票,股票交易提示",
    WHSCFX : "理财资讯,外汇,外汇市场分析",
    QHSCDT : "理财资讯,期货,期货市场动态",
    QHSCFX : "理财资讯,期货,期货市场分析",
    HJSCDT : "理财资讯,黄金,黄金市场动态",
    HJSCFX : "理财资讯,黄金,黄金市场分析",
    LCHYDT : "理财资讯,理财,理财行业动态",
    LCCPDT : "理财资讯,理财,理财产品动态",
    LCXY : "理财资讯,理财,理财学园",
    LCAL : "理财资讯,理财,理财案例",
    SDBG : "独家资讯,产品研究",
    LCBG : "独家资讯,投资策略",
    
    //Tools
    ZLZCPZ : "理财分析工具,资产组合配置,战略资产配置",
    ZCZHPZ : "理财分析工具,资产组合配置,股票资产配置",
    TZZHFX : "理财分析工具,投资组合分析,股票组合分析",
    JRPZFX : "理财分析工具,金融品种分析,股票品种分析",
    JJXJPJ : "理财分析工具,基金综合评价",
    GPTZJZFX : "理财分析工具,股票投资价值分析",
    
    GPZCPZ : "理财分析工具,资产组合配置,股票资产配置",
    JJZCPZ : "理财分析工具,资产组合配置,基金资产配置",
    
    JTSZFX : "我的理财中心,财务分析中心,家庭收支分析",
    LCZHGL : "我的理财中心,理财账户管理",
    ZHLCGH : "理财规划工具,综合理财规划工具",
    BXLCGH : "理财规划工具,保险理财规划工具",
    
    LCFWCX : "我要找理财师,理财服务查询",
    LCSCX  : "我要找理财师,理财师查询",
    
    SQCWLCS : "个人帐户管理,个人信息管理,申请成为理财师"
  },
  
  GoMenu : function(id)
  {
    if(Menu1s.FocusMenu(Menu1s.MenuPath[id]))
    {
        //window.scrollTo(0,0);
    }else{
        Menu1s.AddLoginFlake();
    }
  },
  
  AddFlake : function(id)
  {
      switch(id)
      {
          case "FXPHCS":
              if(Storage.ActorID == CONST.Actors.GUEST)
              {
                  Menu1s.AddLoginFlake();
                  return;
              }
              Flakes.AddFlake(CONST.RiskTestAspx,"customerID=" + Storage.User + "&fm=1");
              break;
          default :
              break;
      }
  },
  
  AddLoginFlake : function()
  {
      Dialog.confirm(Message.MSG.RegOrLoginFirst,
                 {
                  okLabel:"确定",
                  cancelLabel : "取消",
                  buttonClass:"EditAeraButtonStyle",
                  windowParameters:{
                                    height:120,
                                    width:300,
                                    draggable:false,
                                    className:"dialog",
                                    icon:CONST.Res.ImgAlertIcon
                                   },
                  ok : Menu1s.AddLoginFlake_OK
                 }
                );
  },
  
  AddLoginFlake_OK : function()
  {
      Dialog.closeInfo();
      Flakes.AddFlake(CONST.LoginAspx);
  }
}

var RSSChannel = 
{
    CSS : 
    {
        FocusedChannel    : "channeltabfocused",
        NotFocusedChannel : "channeltabnotfocused",
        FocusedTopChannel : "channeltabfocusedtop",
        NotFocusedTopChannel : "channeltabnotfocusedtop"
    },
    
    Focus : function(tab)
    {
        if(tab.className.indexOf("top") > -1)
        {
            //top tab
            tab.className = RSSChannel.CSS.FocusedTopChannel + tab.innerText.length + "char";
        }
        else
        {
            //wide or simple
            tab.className = RSSChannel.CSS.FocusedChannel + tab.innerText.length + "char";
        }
        
        for(var i=0;i<tab.parentNode.childNodes.length;i++)
        {
            if(tab.parentNode.childNodes[i].className.indexOf(RSSChannel.CSS.FocusedChannel) > -1 && tab.parentNode.childNodes[i] != tab)
            {
                RSSChannel.loseFocus(tab.parentNode.childNodes[i]);
            }
        }
        if(tab.binddiv)
        {
            document.getElementById(tab.binddiv).style.display="";
        }
    },
    
    loseFocus : function(tab)
    {
        if(tab.className.indexOf("top") > -1)
        {
            //top tab
            tab.className = RSSChannel.CSS.NotFocusedTopChannel+tab.innerText.length+"char";
        }
        else
        {
            //wide or simple
            tab.className = RSSChannel.CSS.NotFocusedChannel+tab.innerText.length+"char";
        }
        if(tab.binddiv)
        {
            document.getElementById(tab.binddiv).style.display="none";
        }
    }
}

var MarketInfo = 
{
    CSS : 
    {
        FocusedMarket    : "markettabfocused",
        NotFocusedMarket : "markettabnotfocused"
    },
    
    Focus : function(tab)
    {
        tab.className = MarketInfo.CSS.FocusedMarket + tab.innerText.length + "char";       
        for(var i=0;i<tab.parentNode.childNodes.length;i++)
        {
            if(tab.parentNode.childNodes[i].className.indexOf(MarketInfo.CSS.FocusedMarket) > -1 && tab.parentNode.childNodes[i] != tab)
            {
                MarketInfo.loseFocus(tab.parentNode.childNodes[i]);
            }
        }
        if(tab.binddiv)
        {
            document.getElementById(tab.binddiv).style.display="";
        }
    },
    
    loseFocus : function(tab)
    {
        tab.className = MarketInfo.CSS.NotFocusedMarket+tab.innerText.length+"char";
        if(tab.binddiv)
        {
            document.getElementById(tab.binddiv).style.display="none";
        }
    }
}
