﻿//类树形结构显示
Namespace.register("ZhuFly.Tree");
// 在Grandsoft.GEA命名空间里面声明类NewStruct

//工作类
var gClsTree = null ;
var gClsDTree = new  dTree('gClsDTree');
//url出示获取树形条的url
ZhuFly.Tree.aTree = function(url)
{
    this.ajaxObj = null ;
    //请求的原字符串
    this.url = url ;
    // 暂缺
    this.sLost = "暂缺";
    //建立一个树对象,初始化为未分类
    this.parentID = 0 ;
    this.clsType = -1 ;
    this.KeyWord  ="";
    //当前显示的第一页
    this.PageNum = 1 ;
    this.PageSize =10;
    //保留上一次搜索类型
    this.lastSearchType= 2;
    // 当前返回类型，分为2中，一种是改变关键字，或者改变搜索类型的来的； 第二种是通过分页处理的来的结果集合
    this.bPageResults = false ;
    //一次搜索结果的返回页面数量
    this.nPageCnt =  0;
    //当前页码
    this.npageindex=0;
    //是否正在处理分类搜索 ,在搜索的情况下会变成false
    this.bIsClass = true ; 

}

ZhuFly.Tree.aTree.prototype.CreateAjax = function()
{
    this.ajaxObj  = CreatAjaxObj(); 
    if (null == this.ajaxObj )
    {
        alert( "Error initializing ZhuFly.GEA.NewStruct.ajaxObj HttpRequest!" );
    }
}


// 给类Person添加一个公共方法show()
ZhuFly.Tree.aTree.prototype.callServer = function(callBackFun)
{
    if (this.ajaxObj == null)
    {
        alert("同步对象，初始化失败");
        return null;
    }
    var url = this.url;
    this.ajaxObj.open( "get", url, true );
    this.ajaxObj.setRequestHeader("Cache-Control","no-cache"); 
    this.ajaxObj.onreadystatechange = callBackFun;
    this.ajaxObj.send( null );
}
ZhuFly.Tree.aTree.prototype.SetUrlStr = function(url)
{
    this.url  = url;
}

ZhuFly.Tree.aTree.prototype.OnClick = function(id,parentID)
{
    if (this.clsType != id)
    {
        this.clsType = id;
        this.PageNum =  1 ;
        this.nPageCnt = 0 ;
    }
    
    this.parentID = parentID;
    this.Search(2/*this.lastSearchType*/,false,true);
}
function  CatStr(str,len)
{
   if(str.length>len)
   {
     str=str.substring(0,len)+'...';
   }
   return str;
}
//搜索数据，分类中搜索，分类中搜索，支持到最小类别，如果当前选中大类，能支持到小类搜索
ZhuFly.Tree.aTree.prototype.Search = function(type,bPages,bClass)
{
   curKeyWord = document.getElementById("InputClsKey").value ;
   if (!bClass && curKeyWord == "")
   {
      alert("请输入关键字");
      return ;
   }
   else if (bClass) {
        //清空关键字
        this.KeyWord = "";
        document.getElementById("InputClsKey").value = gClsTree.KeyWord ;
   }
    //加载一个动态Gif来进行搜索
    setInnerHTML(document.getElementById( "DivSearchR" ), "<img src=images/loading.gif border=0 />");
    if (this.ajaxObj == null || type == null)
    {
        alert("同步对象，初始化失败");
        return null;
    }
    this.bIsClass = bClass ;
    this.KeyWord = document.getElementById("InputClsKey").value ;//能够支持空搜索，在当前类别
    var bExacSearch = document.getElementById("IsExac").checked;
    url  = "../Search.aspx?SearchType="+type ;
    if (this.KeyWord != "") {
        url += "&KeyWord=" + escape(this.KeyWord);
    }
    url += "&PageNum=" + this.PageNum + "&nPageSize=" + this.PageSize + "&bExac=" + bExacSearch;
    url += "&bClass=" + this.bIsClass + "&ClassID=" + this.clsType;
    
    this.ajaxObj.open( "post", url, true );
    this.ajaxObj.setRequestHeader("Cache-Control","no-cache"); 
    if (bPages == null)
    {
        this.bPageResults = false ;
    }
    else
    {
        this.bPageResults = bPages ;
    }
    if (type != this.lastSearchType )
    {
        this.lastSearchType = type;
        this.PageNum =  1 ;
        this.nPageCnt = 0 ;
    }
    switch(type )
    {
        case 1 :
            this.ajaxObj.onreadystatechange = ProductOfClassCASID;
            break ;
        case 2 :
        case 3 :
            this.ajaxObj.onreadystatechange = ProductOfClassProID;
            break ;
        case 4 :
            this.ajaxObj.onreadystatechange = ProductOfClassMolecular;
            break ;
        case 5 :
            this.ajaxObj.onreadystatechange = ProductOfClassSequence;
            break ;
        default :
            break;
    }
    
    this.ajaxObj.send( null );
}

ZhuFly.Tree.aTree.prototype.ClearHTML = function()
{
    varClearCtl  = document.getElementById("DivSearchR") ;
    setInnerHTML(varClearCtl, "");
    if( ! this.bPageResults)
    {
        setInnerHTML(document.getElementById( "DivClsNavi"), "");
    }
}

ZhuFly.Tree.aTree.prototype.PageState = function(nPage)
{
    // 设置上下页按钮可用状态
    if(nPage == 1)// 上一页不可用
    {
        document.getElementById("PrePage").disabled = true ;
        document.getElementById("NextPage").disabled = false;
    }
    // 下一页不可用
    else if (nPage == gClsTree.nPageCnt)
    {
        document.getElementById("PrePage").disabled = false;
        document.getElementById("NextPage").disabled = true;
    }
    // 均可用
    else
    {
        document.getElementById("PrePage").disabled = false;
        document.getElementById("NextPage").disabled = false;
    }
}

ZhuFly.Tree.aTree.prototype.ShowNaviHtml = function()
{
    if (gClsTree.ajaxObj.responseXML == null)
    {
        return ;
    }
    try
    {
        var xmlResponse = this.ajaxObj.responseXML;
        this.nPageCnt = xmlResponse.getElementsByTagName( "PageCnt" )[0].firstChild.nodeValue;
        if (this.nPageCnt  <= 0)
        {
            setInnerHTML(document.getElementById( "DivSearchR" ), "no results for that search ");
            return false ;
        }

        var sHtml = "<table width=100%><tr><td width=20% align=left ><a href=index.shtml><img src=images/11.jpg border=0 /></a></td>";
        sHtml += "<td width=80% align=right><button type='submit'disabled='true' id='PrePage' onclick ='ProductOfClassPrePage()' class='btn3_mouseover' style='width: 72px' >Previous</button>";
        // 不需要了，客户要求
        sHtml +=  "<select id='PageSelect' name='D1' style='cursor: hand; display:none'>";
      //  for (index = 1; index <= this.nPageCnt; index ++ )
      //  {
      //      sHtml += "<option>" + index + "</option>";
      //  }
        sHtml += "</select>";
        // 只有一页的时候
        if (this.nPageCnt > 1)
        {
            sHtml += "&nbsp;<button type='submit' id='NextPage' onclick ='ProductOfClassNextPage()' class='btn3_mouseover' style='width: 72px' >Next</button></td></tr></table>";
        }
        else
        {
            sHtml += "&nbsp;<button type='submit' disabled='true' id='NextPage' onclick ='ProductOfClassNextPage()' class='btn3_mouseover' style='width: 72px' >Next</button></td></tr></table>";
        }
        setInnerHTML(document.getElementById( "DivClsNavi" ), sHtml)  ;
    }
    catch(failed)
    {

    }
    return true ;
}

function IniProuClsTree()
{
    gClsTree = new ZhuFly.Tree.aTree("../GetProTree.ashx?lan=en") ;
    if (gClsTree== null)
    {
        alert("memory failed!");
    }
    gClsTree.CreateAjax();
    gClsTree.callServer(StartBulidTree);
}

function StartBulidTree()
{
    if ( gClsTree.ajaxObj.readyState == 4 )
    {
        if( gClsTree.ajaxObj.status == 200 )
        {
            try{
                var xmlResponse = gClsTree.ajaxObj.responseXML;
                nodelistTemp = xmlResponse.selectNodes( "//Table" );
                var cname = "";
                var cid = -1 ;
                var cParentid = -1;
                gClsDTree.add(0,-1,'Product List'); //根级
                var OnClickJs = "" ;
                for( i = 0; i < nodelistTemp.length; i ++ )
                {
                    cname = xmlResponse.getElementsByTagName( "ClassName" )[i].firstChild.nodeValue;
                    cid = xmlResponse.getElementsByTagName( "ClassID" )[i].firstChild.nodeValue;
                    cParentid = xmlResponse.getElementsByTagName( "ParentID" )[i].firstChild.nodeValue;
                    OnClickJs = "javascript:gClsTree.OnClick(" + cid + "," + cParentid + ");" ; 
                    gClsDTree.add(cid,cParentid,cname,OnClickJs ,'','','','','');
                }
                setInnerHTML(document.getElementById( "detree" ), gClsDTree);
                if (nodelistTemp.length >= 0)
                {
                    gClsTree.clsType = xmlResponse.getElementsByTagName( "ClassID" )[0].firstChild.nodeValue;
                    //设在默认选中的
                    gClsDTree.s(gClsTree.clsType );
                }
                gClsTree.Search(gClsTree.lastSearchType,false,true);
               // gClsDTree.openAll();
                  gClsDTree.closeAll();
            }
            catch(failed)
            {
                
            }
        }
        else  // 超时处理，
        {
            alert("服务超时，请稍后重试！");
        }
    }
}

function ProductOfClassCASID()
{
    if ( gClsTree.ajaxObj.readyState == 4 )
    {
        if( gClsTree.ajaxObj.status == 200 )
        {
            gClsTree.ClearHTML() ;
            try{
               if ( ! gClsTree.bPageResults)
                {
                    // 显示导航条
                    gClsTree.ShowNaviHtml();
                }
                if (gClsTree.nPageCnt <= 0 )
                    return ;
                var xmlResponse = gClsTree.ajaxObj.responseXML;
                nodelistTemp = xmlResponse.selectNodes( "//Products" );
                sHtmlTemp = '<table  class="table_title"  align="center" >';
                sHtmlTemp = sHtmlTemp + '<tr>';
                sHtmlTemp = sHtmlTemp + '<td  width="90px"  bgcolor="#bfe2eb">Code</td>';
                sHtmlTemp = sHtmlTemp + '<td  width="100px"  bgcolor="#bfe2eb"  style="text-align:center;"><div style="padding-left:30">CAS No.</div></td>';
                sHtmlTemp = sHtmlTemp + '<td  width="250px"  bgcolor="#bfe2eb"  style="text-align:center;">Details</td></tr>';
                var sData = "" ;
                for( i = 0; i < nodelistTemp.length; i ++ )
                {
                    sHtmlTemp = sHtmlTemp + '<tr><td   class="table_td_iron">' + xmlResponse.getElementsByTagName( "ProID" )[i].firstChild.nodeValue + '</td>';
                    sHtmlTemp = sHtmlTemp + '<td   style="text-align:right;" >' + xmlResponse.getElementsByTagName( "CASID" )[i].firstChild.nodeValue + '</td>';
                    sHtmlTemp = sHtmlTemp + '<td  style="text-align:center;"><a href="detail.shtml?ProID=';
                    sHtmlTemp += xmlResponse.getElementsByTagName("ProID")[i].firstChild.nodeValue + '" target="_blank" ><u>Enter</u></a></td></tr>';
                }
                sHtmlTemp = sHtmlTemp + '</table>';
                setInnerHTML(document.getElementById( "DivSearchR" ), sHtmlTemp);
            }
            catch(failed)
            {
                
            }
        }
        else  // 超时处理，
        {
            alert("服务超时，请稍后重试！");
        }
    }
}

function ProductOfClassMolecular()
{
    if ( gClsTree.ajaxObj.readyState == 4 )
    {
        if( gClsTree.ajaxObj.status == 200 )
        {
            try{
                gClsTree.ClearHTML() ;
                if ( ! gClsTree.bPageResults)
                {
                     gClsTree.ShowNaviHtml();
                }
                 if (gClsTree.nPageCnt <= 0 )
                    return ;
                var xmlResponse = gClsTree.ajaxObj.responseXML;
                nodelistTemp = xmlResponse.selectNodes( "//Products" );
                sHtmlTemp = "<table  class='table_title'  align='center'>" ;
                sHtmlTemp += "<tr> <td  width='80px' align='left' bgcolor='#BFE2EB'>&nbspCode/td>";
                sHtmlTemp += "<td   width='80px'  bgcolor='#BFE2EB'>&nbspFormula</td>";
                sHtmlTemp += "<td  width='240px'  bgcolor='#BFE2EB'  style='text-align:center;'>&nbspName</td>";
                sHtmlTemp += "<td   width='80px'  bgcolor='#BFE2EB'  style='text-align:center;'>&nbspDetails</td></tr>"

                for( i = 0; i < nodelistTemp.length; i ++ )
                {
                    var  pName = "暂缺";
                    sHtmlTemp += '<tr><td  class="table_td_iron">' + xmlResponse.getElementsByTagName( "ProID" )[i].firstChild.nodeValue + '</td>';
                    var moca=xmlResponse.getElementsByTagName( "Molecular" )[i].firstChild.nodeValue;
                    sHtmlTemp += '<td   ><div  nowrap style="overflow:hidden; text-overflow:ellipsis;word-break:keep-all;text-align:left; width:100px;" width=100px id="cc" onmouseover="ddrivetip(\''+moca +'\')"  onmouseout="hideddrivetip()">' + xmlResponse.getElementsByTagName( "Molecular" )[i].firstChild.nodeValue + '</div></td>';
                    pName = xmlResponse.getElementsByTagName( "EngName" )[i].firstChild.nodeValue ;
                    if (pName == "暂缺")
                    {
                        pName = "untitle";
                    }   
                    sHtmlTemp += '<td   style="text-align:left;" title='+pName+'>&nbsp' + CatStr(pName,14) + '</td>';
                    sHtmlTemp += '<td  style="text-align:center;"><a href="detail.shtml?ProID=';
                    sHtmlTemp += xmlResponse.getElementsByTagName("ProID")[i].firstChild.nodeValue + '" target="_blank"><u>Enter</u></a></td></tr>';
                }
                setInnerHTML(document.getElementById( "DivSearchR" ), sHtmlTemp);
            }
            catch(failed)
            {
                
            }
        }
        else  // 超时处理，
        {
            alert("服务超时，请稍后重试！");
        }
    }
}

function ProductOfClassSequence()
{
    if ( gClsTree.ajaxObj.readyState == 4 )
    {
        if( gClsTree.ajaxObj.status == 200 )
        {
            try{
                        gClsTree.ClearHTML() ;
                        if ( ! gClsTree.bPageResults)
                        {
                            gClsTree.ShowNaviHtml();
                        }
                        if (gClsTree.nPageCnt <= 0 )
                            return ;
                        var xmlResponse = gClsTree.ajaxObj.responseXML;
                        nodelistTemp = xmlResponse.selectNodes( "//Products" );
                        sHtmlTemp = '<table  class="table_title"  align="center" >';
                        sHtmlTemp = sHtmlTemp + '<tr   width="90px" bgcolor="#BFE2EB">';
                        sHtmlTemp = sHtmlTemp + '<td  width="90px"  bgcolor="#BFE2EB">Code</td>';
                        sHtmlTemp = sHtmlTemp + '<td  width="150px"  bgcolor="#BFE2EB">Sequence</td>';
                        sHtmlTemp = sHtmlTemp + '<td  width="150px"  bgcolor="#BFE2EB"  style="text-align:center;">Details</td></tr>';
                        for( i = 0; i < nodelistTemp.length; i ++ )
                        {
                            sHtmlTemp = sHtmlTemp + '<tr><td  class="table_td_iron">' + xmlResponse.getElementsByTagName( "ProID" )[i].firstChild.nodeValue + '</td>';
                            sHtmlTemp = sHtmlTemp + '<td  title='+xmlResponse.getElementsByTagName( "Sequence" )[i].firstChild.nodeValue+'>' +CatStr( xmlResponse.getElementsByTagName( "Sequence" )[i].firstChild.nodeValue,30) + '</td>';
                            sHtmlTemp = sHtmlTemp + '<td  style="text-align:center;"><a href="detail.shtml?ProID=';
                            sHtmlTemp += xmlResponse.getElementsByTagName("ProID")[i].firstChild.nodeValue + '" target="_blank" ><u>Enter</u></a></td></tr>';
                        }
                        sHtmlTemp = sHtmlTemp + '</table>';
                        setInnerHTML(document.getElementById( "DivSearchR" ), sHtmlTemp);              
            }
            catch(failed)
            {
                
            }
        }
        else  // 超时处理，
        {
            alert("服务超时，请稍后重试！");
        }
    }
}

function ProductOfClassProID()
{
    if ( gClsTree.ajaxObj.readyState == 4 )
    {
        if( gClsTree.ajaxObj.status == 200 )
        {
            var xmlResponse = gClsTree.ajaxObj.responseXML;
           
            try{
                gClsTree.ClearHTML() ;
                if ( ! gClsTree.bPageResults)
                {
                   gClsTree.ShowNaviHtml();
                }
                if (gClsTree.nPageCnt <= 0 )
                    return ;
                
                
                nodelistTemp = xmlResponse.selectNodes( "//Products" );
                sHtmlTemp = '<table  class="table_title"  align="center" style="table-layout:fixed" >';
                sHtmlTemp = sHtmlTemp + '<tr>';
                sHtmlTemp = sHtmlTemp + '<td  width="90px"  bgcolor="#BFE2EB">Code</td>';
                sHtmlTemp = sHtmlTemp + '<td width="200px"  bgcolor="#BFE2EB"  style="text-align:center;"> Name</td>';
                sHtmlTemp = sHtmlTemp + '<td  width="150px"  bgcolor="#BFE2EB" style="text-align:center;">Details</td></tr>';
                for( i = 0; i < nodelistTemp.length; i ++ )
                {
                    var  pName = gClsTree.sLost;
                    sHtmlTemp = sHtmlTemp + '<tr><td   class="table_td_iron">' + xmlResponse.getElementsByTagName( "ProID" )[i].firstChild.nodeValue + '</td>';
                    pName = xmlResponse.getElementsByTagName( "EngName" )[i].firstChild.nodeValue ;
                    if (pName == "暂缺")
                    {
                        pName = "untitle";
                    } 
                    sHtmlTemp = sHtmlTemp + '<td nowrap style="overflow:hidden; text-overflow:ellipsis;word-break:keep-all;text-align:left;" title="'+pName+'">' + pName + '</td>';
                    sHtmlTemp = sHtmlTemp + '<td  style="text-align:center;"><a href="detail.shtml?ProID=';
                    sHtmlTemp += xmlResponse.getElementsByTagName("ProID")[i].firstChild.nodeValue + '" target="_blank" ><u>Enter</u></a></td></tr>';
                }
                sHtmlTemp = sHtmlTemp + '</table>';
                setInnerHTML(document.getElementById( "DivSearchR" ), sHtmlTemp);
            }
            catch(failed)
            {
                
            }
        }
        else  // 超时处理，
        {
            alert("服务超时，请稍后重试！");
        }
    }
}

function ProductOfClassNextPage()
{
    //var eSelctTag = document.getElementById("PageSelect");
    var eSelctTag =gClsTree.npageindex;
    gClsTree.npageindex++;
    //var nSelectIndex = eSelctTag.selectedIndex;

    //eSelctTag.selectedIndex  = nSelectIndex + 1 ;

    // 设置按钮状态
    gClsTree.PageState(eSelctTag + 1 + 1);
    
    // 当前显示是分页查询的来的结果集合
    gClsTree.bPageResults  = true ;
    // 防止用户随便输入，然后点击分页导致结果认为不一致的误解
    document.getElementById("InputClsKey").value = gClsTree.KeyWord ;

    gClsTree.PageNum = eSelctTag + 1 + 1;
    // + 1最后一个1是为了表示当前人为的页数从第一页开始计算导致的
  
    gClsTree.Search(gClsTree.lastSearchType,true,gClsTree.bIsClass);
}
function ProductOfClassPrePage()
{
   //  var eSelctTag = document.getElementById("PageSelect");
    var eSelctTag =gClsTree.npageindex;
  //  var nSelectIndex = eSelctTag.selectedIndex;
    gClsTree.npageindex--;
   // eSelctTag.selectedIndex  = nSelectIndex - 1 ;

    // 设置按钮状态
    gClsTree.PageState(eSelctTag - 1 + 1);

    // 当前显示是分页查询的来的结果集合
    this.bPageResults  = true ;
    // 防止用户随便输入，然后点击分页导致结果认为不一致的误解
    document.getElementById("InputClsKey").value = gClsTree.KeyWord  ;

    gClsTree.PageNum  = eSelctTag - 1 + 1;
    gClsTree.Search(gClsTree.lastSearchType,true,gClsTree.bIsClass);
}

window.onload = function()
{
    addOnloadEvent(IniProuClsTree);
    //右边新闻页面
    addOnloadEvent(IniCropNewsTitle);
}
