﻿function $(obj)
{
	if(typeof obj == 'string')
	    return document.getElementById(obj);
	else 
	    return obj;
}

//初始化一维列表DIV
InitSingleDivList = function (TblTargetID,TblSelectedID,TxtShowID,TxtResultID,selType,SelectType, limitNum)
{
    //TblTargetID 显示表格ID
    //TblSelectedID   选中表格ID
    //TxtResultID 初始化内容
    //selType   选择类型
    //SelectType CheckBox or Radio
    SetLimitNumber(TxtResultID, limitNum)

    var arr = eval("Get" + selType + "()");
    CreateCheckBoxListByArray(TblTargetID,TblSelectedID,TxtShowID,TxtResultID,arr,SelectType);
    SingleSetTxtShow(TxtShowID,TxtResultID,selType);
    SetTblSelected(TblSelectedID,TxtShowID,TxtResultID,SelectType);
}

SetLimitNumber = function(varName, limitNum)
{
	var limit = 0;
	if(typeof limitNum == "number") limit = (limitNum > 0)? limitNum : 0;
	eval('__limit_' + varName + ' = ' + limit + ';');
}

GetLimitNumber = function(varName)
{
	if(eval("(typeof __limit_" + varName + " == 'number')"))
		return eval('__limit_' + varName + ';');
	else
		return 0;
}

//初始化多维列表的DIV ...

InitMultiDivList = function(CheckAllID,SelSelectID,TblTargetID,TblSelectedID,TxtShowID,TxtResultID,selType,SelectType, limitNum, limitTotalNum)
{
    SetLimitNumber(TxtResultID, limitNum)
    SetLimitNumber(TxtResultID + "_total", limitTotalNum)
    InitMultiSelectList(SelSelectID,selType);
    MultiSetTxtShow(TxtShowID,TxtResultID,selType);
    SetTblSelected(TblSelectedID,TxtShowID,TxtResultID,SelectType);
}
//初始化单列表界面
ResetSingleDivList = function(TxtResultID)
{
	var resultObj = $(TxtResultID);
	var itemObj;
  var strArr = resultObj.value.replace(",,",",").split(",");
  for(var i=0;i<strArr.length;i++)
  {
      if(strArr[i]!="")
      {
          itemObj = $(TxtResultID+"_CHK_"+strArr[i]);
          if( typeof itemObj != "undefined" && itemObj != null)
          {
          	itemObj.checked = true;
          }
      }
  }
}
//初始化二级列表界面
ResetMultiDivList = function(CheckAllID,SelSelectID,TblTargetID,selType)
{
	  //初始化父列表
	  InitMultiSelectList(SelSelectID,selType);
    //清空CheckAll
    CheckAllobj = $(CheckAllID);
		CheckAllobj.innerHTML = "";
		//清空Items
	  TblTargetobj = $(TblTargetID);
	  var j=TblTargetobj.rows.length;
    while(j--)
    {
        TblTargetobj.deleteRow(j);
    }
  	TblTargetobj.parentNode.style.height = "";
}

function removeAll(obj)
{
	var len=obj.length;
	for(var i=len-1;i>=1;i--)
	{      
		obj.remove(i);  
	}
}	
 
InitMultiSelectList = function(SelSelectID,selType)
{
    parentObj = $(SelSelectID);
    removeAll(parentObj);
    var arr = eval("Get" + selType + "()");
    if(arr != null)
    {
	    for(i=0;i<arr.length;i++)
	    {
	        this.addOption(parentObj,arr[i][1],arr[i][0]);
	    }
 	}
}

addOption = function(obj,name,value)
{
	obj.options.add(new Option (name,value));
}

function GetSelectType(SelectType)
{
		var chkType = "CHECKBOX";
		if(SelectType)
			chkType = SelectType;	
		
		return chkType;
}

function OnSelChange(CheckAllID,SelSelectID,TblTargetID,TblSelectedID,TxtShowID,TxtResultID,selType,SelectType)
{
    var SelSelectobj = $(SelSelectID);
    var sel = SelSelectobj.selectedIndex;
	if(sel != -1)
	{   
		var parentValue = SelSelectobj.options[sel].value;
		if(parentValue!="")
		{
		    var arr = eval("GetSub" + selType + "('"+parentValue+"')");
		    //alert(arr.length);
            CreateCheckBoxListByArray(TblTargetID,TblSelectedID,TxtShowID,TxtResultID,arr, SelectType);
            CreateCheckAllByArray(CheckAllID,TblTargetID,TblSelectedID,TxtShowID,TxtResultID,parentValue,selType, SelectType);
    }
    else
    {
    		ResetMultiDivList(CheckAllID,SelSelectID,TblTargetID,selType);
    }
  }
}
//
function FoundFromResult(TxtResultID,strValue)
{
    TxtResultobj = $(TxtResultID);
    var str = TxtResultobj.value.replace(",,",",");
    var strArr = str.split(",");
    for(var i=0;i<strArr.length;i++)
    {
        if(strArr[i]==strValue)
        return true;
    }
    return false;
}
//初始化多选textbox
function MultiSetTxtShow(TxtShowID,TxtResultID,selType)
{
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);
    var str = TxtResultobj.value.replace(",,",",");
    var strArr = str.split(",");
    
    TxtShowobj.value = "";
    for(var i=0;i<strArr.length;i++)
    {
        if(strArr[i]!="" && strArr[i] != null)
        {
            TxtShowobj.value+=MultiGetValue(strArr[i],selType)+"+";
        }
    }
    
    //去掉末尾的+
    if(TxtShowobj.value!="")
    {
        TxtShowobj.value = TxtShowobj.value.substring(0,TxtShowobj.value.length-1)
    }
    
}

//初始化单选的展示textbox
function SingleSetTxtShow(TxtShowID,TxtResultID,selType)
{
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);
    var str = TxtResultobj.value.replace(",,",",");
    var strArr = str.split(",");
    
    TxtShowobj.value = "";
    for(var i=0;i<strArr.length;i++)
    {
        if(strArr[i]!="")
        {
            TxtShowobj.value+=SingleGetValue(strArr[i],selType)+"+";
        }
    }
    
    //去掉末尾的+
    if(TxtShowobj.value!="")
    {
        TxtShowobj.value = TxtShowobj.value.substring(0,TxtShowobj.value.length-1)
    }
}
//获取值。
function SingleGetValue(selValue,selType)
{
    var arr = eval("Get" + selType + "()");
    if(arr != null)
    {
	    for(i=0;i<arr.length;i++)
	    {
	        if(selValue == arr[i][0])
	        {
	            return arr[i][1];
	        }
	    }
 	}
}

GetParentValue = function(strValue)
{
	  var val = "";
		if(strValue != null && typeof(strValue) != 'undefined')
		{  
			  val += strValue.substring(0,2);
				for(i = 2; i < strValue.length; i++)
				val += "0";
		}	
			return val;
}


function MultiGetValue(selValue,selType)
{

    var arr = eval("Get" + selType + "()");
    var val = GetParentValue(selValue);
    
    if(val == selValue)
    {
        if(arr != null)
        {
	        for(i=0;i<arr.length;i++)
	        {
	            if(val == arr[i][0])
	            {
	                 return arr[i][1];
	            }
	        }
 	    }
    }
    else
    {
        arr = eval("GetSub" + selType + "('"+val+"')");
        if(arr != null)
        {
	        for(i=0;i<arr.length;i++)
	        {
	            if(selValue == arr[i][0])
	            {
	                return arr[i][1];
	            }
	        }
 	    }
    }
}
//创建checkbox
function CreateCheckAllByArray(CheckAllID,TblTargetID,TblSelectedID,TxtShowID,TxtResultID,parentValue,selType,SelectType)
{
    var id = parentValue;
    var text = MultiGetValue(parentValue,selType);
   
    CheckAllobj = $(CheckAllID);
    strhtml = "";
    var checked = "";
    
    var chkType = GetSelectType(SelectType);
    
    if(FoundFromResult(TxtResultID,id))
    {   
        checked = "checked";
        //TxtShowobj.value+=arr[index][1]+"+";
    }
    strhtml += "<INPUT TYPE='"+chkType+"' "+checked+" onclick=\"CheckAllIt(this,'"+TblTargetID+"','"+TblSelectedID+"','"+TxtShowID+"','"+TxtResultID+"')\" ID='"+TxtResultID+"_CHKAll_"+id+"' name='"+TxtResultID+"_CHK' text='"+text+"' value="+id+">";
    strhtml += "<b><label style=\"cursor:pointer\" for='"+TxtResultID+"_CHKAll_"+id+"'>"+text+"</label></b>&nbsp;&nbsp;&nbsp;"
    strhtml += "(选择此大类，将包括以下所有小类)";
    CheckAllobj.innerHTML = strhtml;
    obj = $(TxtResultID+"_CHKAll_"+id);
    InitCheckAll(obj,TblTargetID)
}
//
function InitCheckAll(obj,TblTargetID)
{
    var parentchecked = obj.checked;
    var   divs=   $(TblTargetID);//document.getElementsByid("div")   
    var   checkboxs=divs.getElementsByTagName("input");   
   
    for(var i=0;i<checkboxs.length;i++)   
    {
        if(checkboxs[i].type=="checkbox")
        {
            if(parentchecked)
            {
                if(checkboxs[i].checked)
                {
                    checkboxs[i].click();
                }
                checkboxs[i].disabled="true";
            }
            else
            {
                checkboxs[i].disabled="";
            }
        }
    }
}
//
function CheckAllIt(obj,TblTargetID,TblSelectedID,TxtShowID,TxtResultID)
{
    if(!CheckIt(obj,TblSelectedID,TxtShowID,TxtResultID))
    {
        InitCheckAll(obj,TblTargetID);
    }
    SetTblSelected(TblSelectedID,TxtShowID,TxtResultID);
}
//显示内容
function CreateCheckBoxListByArray(TblTargetID,TblSelectedID,TxtShowID,TxtResultID,arr,SelectType)
{
    TblTargetobj = $(TblTargetID);
    TxtShowobj = $(TxtShowID);
    var colsNum = 3;
    var chkType = GetSelectType(SelectType);
    
    var j=TblTargetobj.rows.length;
    while(j--)
    {
        TblTargetobj.deleteRow(j);
    }
    var sumRows;
    var sumItems;
    var isIncludeParent;
    sumItems=arr.length;
    
    if(sumItems%colsNum>0)sumRows=sumItems/colsNum+1;
    else sumRows=sumItems/colsNum;
    sumRows=parseInt(sumRows);
    var index=0;
    var isMore;
    
    for(i=0;i<sumRows;i++)
    {
        tr=TblTargetobj.insertRow(TblTargetobj.rows.length);
        
        for(j=0;j<colsNum;j++)
        {
            td=tr.insertCell(j);
            everyColsWidth=parseInt((1/colsNum)*100)+"%";
            td.width=everyColsWidth;
            if(colsNum==2)td.align="left";
            if(index<sumItems)
            {
                if(typeof arr[index]!= 'undefined' && arr[index]!="")
                {
                    spChk=document.createElement("SPAN");
                    spChk.id=TxtResultID+"_SPAN_"+arr[index][0];
                    spText=document.createElement("SPAN");
                    spText.id=TxtResultID+"_Txt_"+arr[index][0];
                    
                    var strChk;
                    var checked = "";
                    if(FoundFromResult(TxtResultID,arr[index][0]))
                    {   
                        checked = "checked";
                        //TxtShowobj.value+=arr[index][1]+"+";
                    }
                    
                    strChk="<INPUT TYPE='"+chkType+"' onclick=\"CheckIt(this,'"+TblSelectedID+"','"+TxtShowID+"','"+TxtResultID+"')\" "+checked+" ID='"+TxtResultID+"_CHK_"+arr[index][0]+"' name='"+TxtResultID+"_CHK' text='"+arr[index][1]+"' VALUE="+arr[index][0]+">";
                    spText.innerHTML="<label style=\"cursor:pointer\" for='"+TxtResultID+"_CHK_"+arr[index][0]+"'>"+arr[index][1]+"</label>";
               
                    spChk.innerHTML = strChk;
                    td.appendChild(spChk);
                    td.appendChild(spText);
                    
                }
            }
            else 
          	{
          		td.innerHTML="&nbsp;";
          	}
            index++;
        }
    }
    if(sumRows > 15)
    	TblTargetobj.parentNode.style.height = "360px";
		else
    	TblTargetobj.parentNode.style.height = "";
    return sumRows;
}

//设置已选列表
function SetTblSelected(TblSelectedID,TxtShowID,TxtResultID,SelectType)
{
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);
    TblSelectedobj = $(TblSelectedID);
    
    var str = TxtResultobj.value.replace(",,",",");
    var strArrResult = str.split(",");
    str = TxtShowobj.value;
    var strArrShow = str.split("+");
    strhtml = "";

	  var chkType = GetSelectType(SelectType);

    for(var i=0;i<strArrResult.length;i++)
    {//"+TxtResultID+"_
        if(strArrResult[i]!="")
        {
        strhtml += "<INPUT TYPE='"+chkType+"' checked onclick=\"UnCheckIt(this,'"+TblSelectedID+"','"+TxtShowID+"','"+TxtResultID+"')\" ID='"+TxtResultID+"_CHKSELECT_"+strArrResult[i]+"' text='"+strArrShow[i]+"' VALUE="+strArrResult[i]+">";
        strhtml += "<label style=\"cursor:pointer\" for='"+TxtResultID+"_CHKSELECT_"+strArrResult[i]+"'>"+strArrShow[i]+"</label>&nbsp;&nbsp;&nbsp;"
        }
    }
    TblSelectedobj.innerHTML = strhtml;
}
function UnCheckIt(obj,TblSelectedID,TxtShowID,TxtResultID)
{
    var ID = obj.value;
    Checkobj = $(TxtResultID+"_CHK_"+ID);
    if(Checkobj)
    {
        Checkobj.checked=false;
    }
    Checkobj  = $(TxtResultID+"_CHKAll_"+ID);
    if(Checkobj)
    {
        Checkobj.click();//=false;
    }
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);
   
    //remove
    RemoveItemFromTxt(TxtShowID,TxtResultID,ID);

    SetTblSelected(TblSelectedID,TxtShowID,TxtResultID);
}

//Remove Txt value
function RemoveItemFromTxt(TxtShowID,TxtResultID,ID)
{
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);
    
    if(TxtResultobj.value!="")
    {
        var strA = TxtResultobj.value.replace(",,",",").split(',');
        var strB = TxtShowobj.value.split('+');
        var indexof = -1;
        for(var i =0;i<strA.length;i++)
        {
            if(strA[i]==ID)
            {
            strA.splice(i,1);
            strB.splice(i,1);
            }
            //indexof = i;
        }
        TxtResultobj.value = strA.join(',').replace(",,",",");
        TxtShowobj.value = strB.join('+');
    }
}

function CheckIt(obj,TblSelectedID,TxtShowID,TxtResultID)
{
    TxtShowobj = $(TxtShowID);
    TxtResultobj = $(TxtResultID);

    var ID = obj.value;
    var TEXT = obj.getAttribute("text");
    
    var str = TxtResultobj.value.replace(",,",",");
    var strArrResult = str.split(",");
    var limitnum = GetLimitNumber(TxtResultID);
    var totallimitnum = GetLimitNumber(TxtResultID + "_total");

   if(obj.type.toLowerCase() != "checkbox")
    {
    	if(obj.value == TxtResultobj.value)
    	{
	    	TxtResultobj.value = "";
	    	TxtShowobj.value = "";
    	}
    	else
    	{
	    	TxtResultobj.value = ID;
	    	TxtShowobj.value = TEXT;
      }
    }
    else
    {
		    if(obj.checked)
		    {
		        var bigclass=1;
		        var smallclass=0;
		        
		        var _resultStr = "," + GetParentValue(ID) + ",";
		        var _itemValue;
		        for(var i=0;i<strArrResult.length;i++)
		        {
		            _itemValue = GetParentValue(strArrResult[i]);
		            if(_resultStr.indexOf(","+ _itemValue + ",") == -1)
		            {
		            	bigclass++;
		            	_resultStr += _itemValue + ",";
		            }
		        }
		        smallclass = strArrResult.length;
		        if(limitnum > 0 && bigclass > limitnum)
		        {
                obj.checked=false;
                alert("你已经选择了" + limitnum + "个大类！");
                return false;
		        }
		        if(totallimitnum > 0 && smallclass > totallimitnum)
		        {
                obj.checked=false;
                alert("你已经选择了" + totallimitnum + "个！");
                return false;
		        }
		        //add
		        if(TxtResultobj.value=="")
		        {
		            TxtResultobj.value += ID;
		        }
		        else
		        {
		            TxtResultobj.value += ","+ID;
		        }
		        
		        if(TxtShowobj.value=="")
		        {
		            TxtShowobj.value += TEXT;
		        }
		        else
		        {
		            TxtShowobj.value += "+"+TEXT;
		        }
		    }
		    else
		    {
		        //remove
		        RemoveItemFromTxt(TxtShowID,TxtResultID,ID);
		    }
		}
		
    SetTblSelected(TblSelectedID,TxtShowID,TxtResultID);
}

