﻿
var DH_Title = null;                    //对象数组，对象有三个属性,Field对应数据库字段名 Name表格标题行显示的中文名 IsShow是否显示
var DH_Control = null;                  //input控件
var DH_PostObj = null;                  //传到后台的参数
var DH_KeyStr = null;                   //按键值
var DH_CallBack = null;                 //回调函数，返回选择的对象
var DH_SendPage = "AjaxMethod.aspx";    //后台页面
var DH_LoadStr = "数据加载中...";       //数据载入时显示的html代码
var DH_Height = "auto";                    //div高度

var DH_TitleBackground = "#212427";     //标题行背景色
var DH_TitleBackground1="#212427"
var DH_Data = null;                     //post返回的数据
var DH_Index = -1;                      //当前索引
var DH_MaxIndex = null;                 //最大索引
var DH_Div = null;                      //div层
var DH_DivTr = null;    
var hasclick = 1;


                //层里表格下的所有行

function DH_Show()
{
    if(DH_KeyStr != 38 && DH_KeyStr != 40 && DH_KeyStr != 13 && DH_KeyStr != null)
    {
        if($("#hide_div").length < 1)  //层不存在则插入
            $("body").append("<img style=\"position:absolute;height:21px; width:204px;\" id=\"hide_img\"  src=\"images/upArrow1.png\"/>");
             correctPNG() ;
            $("body").append("<div style=\"position:absolute;height:" + DH_Height + "px;display: inline;\" id=\"hide_div\"></div>");
        DH_Div = $("#hide_div");  
        DH_Img = $("#hide_img");
        DH_Div.empty();                //清空层 
        if(DH_PostObj != null && DH_Control != null&& DH_PostObj != ""&& DH_Control != "")  
        {   
        	DH_Div.css("top", getAbsoluteTop(DH_Control) + DH_Control.offsetHeight + 23 ); //设置层的top left属性
		    DH_Div.css("left", getAbsoluteLeft(DH_Control) );
		    DH_Img.css("top", getAbsoluteTop(DH_Control) + DH_Control.offsetHeight + 2 ); //设置层的top left属性
		    DH_Img.css("left", getAbsoluteLeft(DH_Control));
	        DH_Div.html(DH_LoadStr);                                                      //填入数据载入时显示的html
	        $.post(DH_SendPage ,DH_PostObj ,function(m){	                              //将准备好的参数post到后台面页，执行成功调用匿名函数
                eval(m);                                                                  //服务器返回的是一条javascript语句，这里执行它
                DH_Data = renObj;                                                         //将值赋给全局变量DH_Data
                DH_Div.html(JsonToTable());                                               //将DH_Data数据转换成table
                DH_Div.css("display","block");  
                DH_Img.css("display","block");                                               //设置div的属性为显示
                DH_DivTr = DH_Div.find("tr");                                             //获取div下面的所有tr元素存入DH_DivTr
                DH_MaxIndex = DH_DivTr.length - 1;
               
                if(DH_MaxIndex > 0)
                {
                    DH_Index = 1;
                    DH_DivTr.get(1).style.backgroundColor="#659CD8";
                    DH_DivTr.get(1).style.color = "#FFFFFF";                   
                }
                else
                {
                    DH_Div.css("display","none");
                    DH_Img.css("display","none");
                }
	        }); 
	    }
	    else 
	    {
	        DH_Div.css("display","none");
	    }
	} 
	else
	{
	    if (DH_Index == -1)
	        return;
	        
         if(DH_Div.css("display")=="block")  
         {             
             if(DH_KeyStr == 13) //回车
             {
                 if(DH_CallBack != null)
                    DH_CallBack(DH_Data[DH_Index - 1]);                 
		         DH_Div.css("display","none");
		         DH_Img.css("display","none");
		         DH_Index = -1 ;
             }
             else
             {   
                 if(DH_Index == -1)
                    return
                 
                 DH_DivTr.get(DH_Index).style.backgroundColor="";
                 DH_DivTr.get(DH_Index).style.color = "";
	             //按下方向键
	             if(DH_KeyStr == 40)
	             {   
	                 DH_Index ++; 	             
	             }
	             //按上方向键
	             else if(DH_KeyStr==38)
	             {   
	                 DH_Index --; 
	             }
	             if(DH_Index == 0)
	                 DH_Index = DH_MaxIndex ;
	             if(DH_Index > DH_MaxIndex)
	                 DH_Index = 1;	             
	             DH_DivTr.get(DH_Index).style.backgroundColor="#659CD8";
	             DH_DivTr.get(DH_Index).style.color = "#FFFFFF";
	             //控制滚动条相关
	             var div = DH_Div.get(0);
	             var tr = DH_DivTr.get(DH_Index);  
	             var scrollAreaMin = div.scrollTop;	            
	             var scrollAreaMax = div.scrollTop + div.offsetHeight;
	             if(tr.offsetTop - tr.offsetHeight < scrollAreaMin )
	                div.scrollTop = tr.offsetTop - DH_DivTr.get(0).offsetHeight;
	             if(tr.offsetTop + tr.offsetHeight > scrollAreaMax)
	                div.scrollTop = tr.offsetTop + tr.offsetHeight - div.offsetHeight;
	                
            }
	    }
	}
}

    //将返回的数据转换成table
    function JsonToTable()
    {
        var str = "<table style=\"font:12px;background-color: " + DH_TitleBackground1 + "; color:#fff;width:204px;\" onblur=\"setDisplay()\" id=\"tblContent\" >"        
        str += "<tr style=\"position: relative;top: expression(this.offsetParent.scrollTop);z-index: 10; width:204px;background-color: " + DH_TitleBackground + ";\">"; 
        var temp = new Array();     
        for(var i = 0;i < DH_Title.length ; i++)
        {
            if( DH_Title[i].IsShow == 1 )
            {
              //  str += "<td>" + DH_Title[i].Name + "</td>";
                temp.push(DH_Title[i].Field);
            }
        }
        str += "</tr>";
        for(var i = 0;i< DH_Data.length ; i++)
        {
            str += "<tr onclick=\"DH_click(" + (i + 1) + ")\" ondblclick=\"DH_dbclick(" + i + ")\" style=\"background-color: " + DH_TitleBackground1 + ";\">";
            for(var j = 0;j < temp.length ; j++)
            {
                str += "<td onblur=\"setDisplay()\">" + DH_Data[i][temp[j]] + "</td>";
            }
            str += "</tr>"
        }   
               
        str += "</table>";
        str +="<table style=\"margin-top:-3px;margin-left:-3px;\">";
        str +="<tr>";
        
        str += "<td ><img src=\"images/downArrow1.png\"/></td>";
        str +="</tr>"; 
        str += "</table>";
        

        return str;
    }
    //行单击
    function DH_click(i)
    {        
        DH_DivTr.get(DH_Index).style.backgroundColor="";
        DH_DivTr.get(DH_Index).style.color = "";
        DH_DivTr.get(i).style.backgroundColor = "#659CD8";
        DH_DivTr.get(i).style.color = "#FFFFFF";
        DH_Index = i;
        
    }
    //半双击
    function DH_dbclick(i)
    {
	     hasclick=0;
	     //alert(hasclick);
	     if(DH_CallBack != null)
           DH_CallBack(DH_Data[DH_Index - 1]);                 
		 hide();
		
    }
    
        function hide()
    {   
        //alert("ok");
	    DH_Div.css("display","none");
	    DH_Img.css("display","none");
    	
    	DH_Index = -1 ;
    }
    function getAbsoluteLeft(ob)
    {
        var mendingLeft = ob.offsetLeft;
        var mendingOb=ob;
        while( mendingOb != null && mendingOb.offsetParent != null && mendingOb.offsetParent.tagName != "BODY" )
        {
            mendingLeft += mendingOb.offsetParent.offsetLeft;
            mendingOb = mendingOb.offsetParent;
        }
        return mendingLeft ;
    }
    function getAbsoluteTop(ob)
    {
        var mendingTop = ob.offsetTop;
        var mendingOb=ob;
        while( mendingOb != null && mendingOb.offsetParent != null && mendingOb.offsetParent.tagName != "BODY" )
        {
            mendingTop += mendingOb.offsetParent.offsetTop;
            mendingOb = mendingOb.offsetParent;
        }
        return mendingTop ;
    }
    
    
      //文本框失去焦点时 设置下拉表可见性 
        function setDisplay()
        {
            //获取当前活动td的表格 
//            if (document.activeElement.tagName == "tb")
//            {    
               //  alert(111111);
               if(hasclick==0)
               {
               return;
               
               }
               
                 var tbl = document.activeElement.parentElement.parentElement.parentElement; 
              //   alert(tbl.id);
                //如果不是下拉表,则隐藏 下拉表 
                if (tbl.id != "tblContent")
                {
                  //  alert(222222);
                    hide();
                }
                return;
//            } 
            
  //          hide();
            
        } 
       
        function correctPNG() 
   {
   for(var i=0; i<document.images.length; i++)
      {
      var img = document.images[i]
      var imgName = img.src.toUpperCase()
      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
         var imgID = (img.id) ? "id='" + img.id + "' " : ""
         var imgClass = (img.className) ? "class='" + img.className + "' " : ""
         var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
         var imgStyle = "display:inline-block;" + img.style.cssText 
         if (img.align == "left") imgStyle = "float:left;" + imgStyle
         if (img.align == "right") imgStyle = "float:right;" + imgStyle
         if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle        
         var strNewHTML = "<span " + imgID + imgClass + imgTitle
         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
         + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
         img.outerHTML = strNewHTML
         i = i-1
         }
      }
   }
     window.attachEvent("onload", correctPNG);