
TabList=function()
{
    this.tabs=new Hashtable();
    this.menus=new Hashtable();
    
    this._locked=false;
    this.Element;
    var list="";
    var currentObjectID=0;
    var showObjectCount;
    var hiddenObjectCount=0; 
    var flag=true;
    var width= document.body.offsetWidth-160+"px";
    var mask;
    
    this.initialize=function()
    {
        this.Element=$("banner");
        var resizeHandler=Function.createDelegate(this,this._resize);
        window.attachEvent("onresize",resizeHandler);
    }
    this._resize=function()
   {
        if(width!= document.body.offsetWidth-160+"px")
        {
            document.getElementById("banner_list").innerHTML="";
            document.getElementById("banner_list").style.display="none"; 
            show=true; 
        }        
        width= document.body.offsetWidth-160+"px";

        $("obx_navbar").width=width;
        $("obx_navbar").fireEvent("onresize");
   }  
 
    this._render=function()
    {
        var html="";
        //
        html+="<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" rules=\"none\" onmouseout=\"javascript:tablist.mouseout(this);\"><tr>";
        html+="<td>";
        var j=0;
        for(var i=0 in this.tabs._hash)
        {
            if(showObjectCount>=this.tabs.count())
           {
                if(flag)
                { 
                    currentObjectID=i;
                    flag=false;
                }
                if(currentObjectID!=i)
                {
                    html+="<td class=\"imgstyle4\"></td><td id=\""+i+"\" class=\"imgstyle5\" onclick=\"javascript:tablist.clicktab(this);\">";
                    html+="<a id=\""+i+"\" href=\"javascript:;\"><span>"+this.tabs.item(i)+"</span></a></td>";
                    html+="<td class=\"imgstyle6\"></td>";
                }
                else
                {
                    html+="<td class=\"imgstyle7\"></td><td id=\""+i+"\" class=\"imgstyle2\" onclick=\"javascript:tablist.clicktab(this);\">";
                    html+="<a id=\""+i+"\" href=\"javascript:;\"><span>"+this.tabs.item(i)+"</span></a></td>";
                    html+="<td class=\"imgstyle8\"></td>";
                }
           }  
            else
           {
                j++;
                if(j<showObjectCount)
                {
                    if(flag)
                    { 
                        currentObjectID=i;
                        flag=false;
                    }
                    if(currentObjectID!=i)
                    {
                        html+="<td class=\"imgstyle4\"></td><td id=\""+i+"\" class=\"imgstyle5\" onclick=\"javascript:tablist.clicktab(this);\">";
                        html+="<a id=\""+i+"\" href=\"javascript:;\"><span>"+this.tabs.item(i)+"</span></a></td>";
                        html+="<td class=\"imgstyle6\"></td>";
                    }
                    else
                    {
                        html+="<td class=\"imgstyle7\"></td><td id=\""+i+"\" class=\"imgstyle2\" onclick=\"javascript:tablist.clicktab(this);\">";
                        html+="<a id=\""+i+"\" href=\"javascript:;\"><span>"+this.tabs.item(i)+"</span></a></td>";
                        html+="<td class=\"imgstyle8\"></td>";
                    }
                }
                else
                {
                        html+="<td id=\"Nav_More\"  class=\"imgstyle4\"></td><td  class=\"imgstyle5\" onclick=\"javascript:tablist.ShowList();\" >";
                        html+="<a  href=\"javascript:;\" ><span ><img src=\"image/menusub.gif\"></img></span></a></td>";
                        html+="<td class=\"imgstyle6\"></td>";
                        list="";
                        //list+="<table id=\"bannerList_table\" border=\"0\" width=\"85px;\" cellspacing=\"0\" cellpadding=\"0\" rules=\"none\" bgcolor=\"#4d78ae\" onmouseout=\"javascript:tablist.mousemove(this);\">";
                        list+="<table id=\"bannerList_table\" border=\"0\" width=\"85px;\" cellspacing=\"0\" cellpadding=\"0\" rules=\"none\" bgcolor=\"#4d78ae\" >";
                        hiddenObjectCount=0;
                        for(var k=i in this.tabs.list(j))
                        {
                            hiddenObjectCount++;
                            list+="<tr style=\"height:21px\">";
                            if(flag)
                            { 
                                currentObjectID=k;
                                flag=false;
                            }
                            if(currentObjectID!=k)
                            {
                                list+="<td id=\""+k+"\" class=\"imgstyle5\" onclick=\"javascript:tablist.clicktab(this);\">";
                                list+="<a id=\""+k+"\" href=\"javascript:;\"><span>"+this.tabs.item(k)+"</span></a></td>";
                                list+="";
                            }
                            else
                            {
                                list+="<td id=\""+k+"\" class=\"imgstyle2\" onclick=\"javascript:tablist.clicktab(this);\">";
                                list+="<a id=\""+k+"\" href=\"javascript:;\"><span>"+this.tabs.item(k)+"</span></a></td>";
                                list+="";
                            }
                            list+="</tr>";
                        }
                        list+="</table>";
                        break;
                }
           }  
        }
        html+="</td>";
        html+="</tr></table>";
        return html;
    }
    this.refresh=function(ts)
    {
        if(ts)this.tabs=ts;
        showObjectCount=Math.floor((document.body.offsetWidth-130)/115);
        //showObjectCount=Math.floor((document.body.offsetWidth-130)/85);
        $("obx_navbar").innerHTML=this._render();        
        var resizeHandler=Function.createDelegate(this,this.size);
        $("obx_navbar").attachEvent("onresize",resizeHandler);
    }
   var show=true; 
   var bannerList=null;

   this.ShowList=function()
  {
        bannerList=document.getElementById("banner_list");
        if(show)
        {
            bannerList.innerHTML=list;
            bannerList.style.left=130+document.getElementById("Nav_More").offsetLeft+"px";
            bannerList.style.display="block";
            show=false; 
        }
        else
        {
            bannerList.innerHTML="";
            bannerList.style.display="none"; 
            show=true; 
        }
  }  
//******* add  ¡ý  3/4/2008 *** hongc *********
  this.mousemove=function(e)
  {
        //mouse loaction
        var x;
        var y;
        x = event.clientX + document.body.scrollLeft; 
        y = event.clientY + document.body.scrollTop; 
        if(document.getElementById("Nav_More")!=null)
        {
            if(x<(140+document.getElementById("Nav_More").offsetLeft) || x>(130+85+document.getElementById("Nav_More").offsetLeft) || y>hiddenObjectCount*25.3)
            {
                if(y>0)
                {
                    bannerList=document.getElementById("banner_list");
                    bannerList.innerHTML="";
                    bannerList.style.display="none"; 
                    show=true; 
                }
            }
        }
  }
    this.mouseout=function(e)
    {
        //mouse loaction
        var x;
        var y;
        x = event.clientX + document.body.scrollLeft; 
        y = event.clientY + document.body.scrollTop; 
        if(document.getElementById("Nav_More")!=null)
        {
            if(x<(130+document.getElementById("Nav_More").offsetLeft) || x>(130+85+document.getElementById("Nav_More").offsetLeft) || y<38)
            {
                if(y>0)
                {
                    bannerList=document.getElementById("banner_list");
                    bannerList.innerHTML="";
                    bannerList.style.display="none"; 
                    show=true; 
                }
            }
        }
    }
//******* add  ¡ü  3/4/2008 *** hongc *********   
    this.size=function()
   {
        if(show)
        { 
            document.getElementById("banner_list").innerHTML="";
            document.getElementById("banner_list").style.display="none"; 
            show=true; 
        }
        //var count= Math.floor((document.body.offsetWidth-130)/85);
        var count= Math.floor((document.body.offsetWidth-130)/115);
        if(count!=showObjectCount)
        {
            showObjectCount=count;
            if(typeof(this.refresh)=="function")
            {
                this.refresh();
            }
        }
   }   
    this.refreshSubmenu=function(xml)
    {
        this.menus.clear();
        var nodes=xml.selectNodes("/menulist/menu");

        
        var html="<table cellpadding=\"0\" cellspacing=\"0\"><tr>";
        
        for(var i=0;i<nodes.length;i++)
        {
            var node=nodes[i];

            var type=node.attributes.getNamedItem("type").nodeValue;

            switch(type)
            {
                case "btn":
                    var name=node.attributes.getNamedItem("value").nodeValue;
                    var click=node.attributes.getNamedItem("onclick").nodeValue;
                    this.menus.add(name,click);
                    var showname=name.length>15?name.substring(0,15):name;
                    html+="<td onclick=\"tablist.clicksubmenu(this)\" id='submenu_"+name+"' class=\"menuhead\" alt=\""+name+"\"><a href=\"javascript:;\" title=\"\"><span>"+showname+"</span></a></td>";
                    break;
                case "sub":
                    html+="<td class=\"menuheadsub\"><div class=\"anchor\">";
                    html+="<!--[if lte IE 6]><a href=\"javascript:;\" title=\"\">&nbsp;<table><tr><td><![endif]-->";
                    
                    var tempHtml="";
                    var maxLength=0;
                    for(var j=0;j<node.childNodes.length;j++)
                    {
                        var subnode=node.childNodes.item(j);
                        var subname=subnode.attributes.getNamedItem("value").nodeValue; 
                         
                        var subclick=subnode.attributes.getNamedItem("onclick").firstChild.xml;
                        this.menus.add(subname.replace("'","")+j,subclick);
                        var showsubname=subname.length>15?subname.substring(0,15):subname;                     
                        if(subnode.attributes.getNamedItem("value").nodeValue.length>maxLength)
                        {
                            maxLength=subnode.attributes.getNamedItem("value").nodeValue.length
                        }
                        tempHtml+="<tr><td onclick=\"tablist.clicksubmenu(this)\" id='submenu_" + subname.replace("'","") + j + "' onmouseover=\"javascript:document.getElementById('submenu_" + subname.replace("'","") + j + "').style.backgroundColor = '#CCCCCC';\" onmouseout=\"javascript:document.getElementById('submenu_" + subname.replace("'","") + j + "').style.backgroundColor = '#FFFFFF';\" class=\"menuitem\">&nbsp;<a href=\"javascript:;\" title=\""+subnode.attributes.getNamedItem("value").nodeValue+"\">"+subnode.attributes.getNamedItem("value").nodeValue+"</a></td></tr>";
                    }
                    var fixwidth= (maxLength*7+20)<150 ? 150 : maxLength*7+20;
                    if(node.childNodes.length>15)
                    {
                        if(com.ie6)
                        {
                            html+="<div class=\"menu1\" >";
                        }
                        else
                        {
                            html+="<div class=\"menu1\" style=\"width:"+fixwidth+"px\">";
                        }
                        //html+="<div class=\"menu\">";
                    }
                    else 
                    {
                        if(com.ie6)
                        {
                            html+="<div class=\"menu\" >";
                        }
                        else
                        {
                            html+="<div class=\"menu\" style=\"width:"+fixwidth+"px\">";
                        }
                    }
                    html+="<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"background: #ffffff;border-bottom:solid 1px #CCCCCC; text-align: left; width:"+ fixwidth +"px;\">";
                   
                    html+=tempHtml;
                    html+="</table>";
                    html+="</div>";
                    html+="<!--[if lte IE 6]></td></tr></table></a><![endif]-->";
                    html+="</div></td>";
                    break;
            }
        }
        $('submenulist').innerHTML=html;
    }
    this.lock=function()
    {
        this._locked=true;
        
        mask=document.createElement("div");
        
        mask.className="tablist_mask";
        
        document.body.appendChild(mask);
        
    }
    this.unlock=function()
    {
        this._locked=false;
        
        if(mask)
        {
            document.body.removeChild(mask);
        }
    }
    this.clicksubmenu=function(emt)
    {
        if(this._locked)return false;
        var script=this.menus.item(emt.id.slice(8));
        try
        {
            eval(script);
        }
        catch(e)
        {
            alert("Javascript error : " + script);
        }
         
    }
    this.clicktab=function(emt)
    {
        if(this._locked)return false;
//        var body="action=active&objectid="+emt.id.slice(4);
        var body="action=active&objectid="+emt.id;
        context.request(DesktopHandler_URL,body,this);
        
//        var ul=$("obx_navbar").firstChild;
//        for(var i=0;i<ul.childNodes.length;i++)
//        {
//            if(ul.childNodes(i).className=="current")
//                ul.childNodes(i).className="";
//        }
//        
//        emt.className="current";

        currentObjectID=emt.id;
        $("obx_navbar").innerHTML=this._render();
        //list="";
        document.getElementById("banner_list").innerHTML="";
        show=true;
    }
    this.startProcess=function()
    {
    }
    this.endProcess=function()
    {
    }
    this.initialize();
}
