﻿//通用二级分类多选对象
function multiLevel2SelectObject(objKey,strShowId1,strShowId2,strTypeId1,strTypeId2,data,typename,maxselectNum,cols){
	var key = objKey;
	var div1 = null;
	var div2 = null;
	var ctrShow1 = corefunc.$(strShowId1);
	var ctrShow2 = corefunc.$(strShowId2);
	var ctrId1 = corefunc.$(strTypeId1);
	var ctrId2 = corefunc.$(strTypeId2);
	var Id1 = 0;
	var values = new Array();
	var arrData = data;
    var maxnumber = isNaN(parseInt(maxselectNum)) ? 5 : parseInt(maxselectNum);
	var typename = typename;
	var columns = isNaN(parseInt(cols)) ? 1 : parseInt(cols);
	if(columns<1) columns = 1;

    var hasChild = function(id){
        for(var i=0;i<arrData.length;i++){
            if(arrData[i][1]==id) return true;
        }
        return false;
    }
	
    var setShowText = function(){
        var classname1 = "";
        if(Id1>0){
            for(var idx=0;idx<arrData.length; idx++){
                if(arrData[idx][0]==Id1 && arrData[idx][1]==0){
                    classname1=arrData[idx][2];
                    break;
                }
            }
        }
        if(classname1.length>0){
            ctrShow1.title = classname1;
            if(corefunc.byteLength(classname1)>28){
                classname1 = corefunc.leftByte(classname1,26) + "...";
            }
            ctrShow1.value = classname1;
        }else{
            ctrShow1.title = "未设置";
            ctrShow1.value = "请选择";
        }
        
        //显示二级分类
        var classname2coll = "";
        if(values.length>0){
            for(var idx1=0;idx1<values.length;idx1++){
                for(var idx2=0;idx2<arrData.length;idx2++){
                    if(arrData[idx2][0]==values[idx1] && arrData[idx2][1]==Id1){
                        if(idx1>0)classname2coll += ", ";
                        classname2coll += arrData[idx2][2];
                        break;
                    }
                }
            }
        }
        if(classname2coll.length>0){
            ctrShow2.title = classname2coll;
            if(corefunc.byteLength(classname2coll)>28){
                classname2coll = corefunc.leftByte(classname2coll,26) + "...";
            }
            ctrShow2.value = classname2coll;
        }else{
            ctrShow2.title = "不限";
            ctrShow2.value = "不限";
        }
    }
    
    this.doCancel = function(){
        if(div1!=null)div1.style.display="none";
        if(div2!=null)div2.style.display="none";
        globalMaskDiv.hide();
        init();
    }

    this.doClear = function(){
        Id1=0;
        values.length = 0;
        ctrId1.value = "0";
        ctrId2.value = "";
        this.doCancel();
    }

    this.doClear2 = function(){
        ctrId1.value = Id1;
        values.length = 0;
        ctrId2.value = "";
        this.doCancel();
    }
    
    this.doOK1 = function(id){
        Id1=id;
        values.length = 0;
        ctrId1.value = Id1;
        ctrId2.value = "";
        
        ctrShow2.disabled = !hasChild(Id1)
        this.doCancel();
    }
    
    this.doOK2 = function(){
        values.length = 0;
        var cbs = corefunc.$$("cb"+key);
        for(var idx=0;idx<cbs.length;idx++){
            if(cbs[idx].checked){
                values[values.length]=parseInt(cbs[idx].value);
            }
        }
        var strValue = "";
        for(var idx=0;idx<values.length;idx++){
            if(idx>0)strValue += ",";
            strValue += values[idx];
        }
        ctrId1.value = Id1;
        ctrId2.value = strValue;
        ctrShow2.disabled = false;
        if(values.length>0){
            ctrId1.value = "0";
        }
        this.doCancel();
    }
    
    var inSelect = function(id){
        for(var i=0;i<values.length;i++){
            if(values[i]==id){
                return true;
            }
        }
        return false;
    }
    
    this.addId2 = function(id){
        for(var i=0;i<values.length;i++){
            if(values[i]==id){
                values.splice(i,1);
                if(corefunc.$("cb" + key + id)!=null){
                    corefunc.$("cb" + key +id).checked = false;
                    corefunc.$("cb" + key + id).nextSibling.style.color = "";
                }
                return true;
            }
        }
        if(maxnumber>0){
            if(values.length>=maxnumber){
                alert("选择"+typename+"不能超过"+maxnumber+"个！");
                return false;
            }
        }
        values[values.length] = [id];
        corefunc.$("cb"+key+id).nextSibling.style.color="red";
        return true;
    }
    
	this.popDiv1 = function(){
        globalMaskDiv.show();
        if(div1==null){
            div1 = document.createElement("DIV");
            div1.className = "popDiv";
            if(corefunc.isIE()){
                document.body.appendChild(div1);
            }else{
                document.documentElement.appendChild(div1);
            }
        }
        var html = "<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">";
        if(columns>1){
            html+="<tr class=\"opbar\"><td colspan=\""+(columns-1)+"\" class=\"title\">选择"+typename+"</td><td>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doClear();\">[不限]</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doCancel();\">[取消]</span></td></tr>";
        }else{
            html+="<tr class=\"opbar\"><td><table border=\"0\" width=\"100%\"><tr><td class=\"title\">选择"+typename+"</td><td>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doClear();\">[不限]</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doCancel();\">[取消]</span></td></tr></table></td></tr>";
        }
        var html1 = "<tr>";
        var html2 = "<tr>";
        for(var idx=0,idx1=0,idx2=0;idx<arrData.length;idx++){
            if(arrData[idx][1]==0){
                var inSel = arrData[idx][0]==Id1;
                if(hasChild(arrData[idx][0])){
                    if(idx2>0 && idx2 % columns==0)html2+="</tr><tr>";
                    html2 += "<td><span style=\"cursor:pointer;\" onclick=\"javascript:multiLevel2Select.clients['"+key+"'].innerOpenDiv2("+arrData[idx][0]+");\">[＋]</span><span style=\"cursor:pointer;";
                    if(inSel) html2 += "color:red;";
                    html2 += "\" onclick=\"javascript:multiLevel2Select.clients['"+key+"'].doOK1("+arrData[idx][0]+");\">"+arrData[idx][2]+"</span></td>"
                    idx2++;
                }else{
                    if(idx1>0 && idx1 % columns==0)html1+="</tr><tr>";
                    html1 += "<td><span style=\"cursor:pointer;";
                    if(inSel) html1 += "color:red;";
                    html1 += "\" onclick=\"javascript:multiLevel2Select.clients['"+key+"'].doOK1("+arrData[idx][0]+");\">"+arrData[idx][2]+"</span></td>"
                    idx1++;
                }
                
            }
        }
        for(idx=0;idx<columns-idx1%columns;idx++){
            html1+="<td></td>";
        }
        for(idx=0;idx<columns-idx2%columns;idx++){
            html2+="<td></td>";
        }
        html1 += "</tr>";
        html2 += "</tr>";
        
        if(idx1>0){
            html+=html1+"<tr><td colspan=\""+columns+"\" style=\"height:5px;overflow:hidden;padding:0px;margin:0px;\"><hr noshade=\"noshade\" size=\"1\" color=\"#CCCCCC\" /></tr>";
        }
        if(idx2>0)html+=html2;
        html += "</table>";
        div1.innerHTML = html;
        div1.style.zIndex = globalMaskDiv.zIndex+1;
        div1.style.display = "";
        corefunc.moveCenter(div1);
	}

    this.innerOpenDiv2 = function(id){
        Id1=id;
        div1.style.zIndex = globalMaskDiv.zIndex-1;
        this.popDiv2();
    }

	this.popDiv2 = function(){
	    globalMaskDiv.show();
        if(div2==null)
        {
            div2 = document.createElement("DIV");
            div2.className = "popDiv";
            if(corefunc.isIE()){
                document.body.appendChild(div2);
            }else{
                document.documentElement.appendChild(div2);
            }
        }
        var name1 = "";
        for(var idx=0;idx<arrData.length;idx++){
            if(arrData[idx][0]==Id1&&arrData[idx][1]==0){
                name1 = arrData[idx][2];
                break;
            }
        }
        var html = "<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">";
        if(columns>1){
            html+="<tr class=\"opbar\"><td colspan=\""+(columns-1)+"\" class=\"title\">"+name1+"</td><td colspan=\"2\"><span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doClear2();\">[不限]</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+key+"'].doOK2();\">[确定]</span></td></tr>";
        }else{
            html+="<tr class=\"opbar\"><td><table border=\"0\" width=\"100%\"><tr><td class=\"title\">"+name1+"</td><td colspan=\"2\"><span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+ key +"'].doClear2();\">[不限]</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiLevel2Select.clients['"+key+"'].doOK2();\">[确定]</span></td></tr></table></td></tr>";
        }
        html += "<tr>"
        for(var idx=0,idx1=0;idx<arrData.length;idx++){
            if(arrData[idx][1]==Id1){
                var inSel = inSelect(arrData[idx][0]);
                if(idx1>0 && idx1 % columns==0)html+="</tr><tr>";
                html += "<td><input type=\"checkbox\" name=\"cb"+key+"\" id=\"cb"+key+arrData[idx][0]+"\" value=\""+arrData[idx][0]+"\" onclick=\"javascript:return multiLevel2Select.clients['"+key+"'].addId2("+arrData[idx][0]+");\"";
                if(inSel)html += " checked=\"checked\"";
                html += " /><span";
                if(inSel) html += " style=\"color:red;\"";
                html += ">"+arrData[idx][2]+"</span></td>";
                idx1 ++;
            }
        }
        html += "</tr></table>";
        if(div1!=null) div1.style.zIndex = globalMaskDiv.zIndex - 1;
        div2.style.zIndex = globalMaskDiv.zIndex + 1;
        div2.innerHTML = html;
        div2.style.display = "";
        corefunc.moveCenter(div2);
	}
	
	var init = function(){
	    Id1=parseInt(ctrId1.value);
	    values.length = 0;
	    if(isNaN(Id1)) Id1=0;
	    if(Id1<1 && corefunc.isIdSeries(ctrId2.value)==false){
	        ctrId1.value = "";
	        ctrId2.value = "";
	        ctrShow2.disabled = true;
	        setShowText();
	        return;
	    }
	    var ids = ctrId2.value.split(",");
	    for(var i=0;i<ids.length;i++){
	        values[values.length] = parseInt(ids[i]);
	    }
	    if(Id1<1 && ids.length>0){
	        for(var i=0;i<arrData.length;i++){
	            if(arrData[i][0]==values[0] && arrData[i][1]>0){
	                Id1=arrData[i][1];
	                break;
	            }
	        }
	    }
	    if(Id1<1){
	        Id1=0;
	        values.length = 0;
	        ctrShow2.disabled = true;
	        ctrId1.value = "";
	        ctrId2.value = "";
	        setShowText();
	        return;
	    }
	    ctrShow2.disabled = Id1<=0;
	    if(values.length>0){
	        for(var idx1=values.length-1;idx1>=0;idx1--){
	            for(var idx2=0;idx2<arrData.length;idx2++){
	                if(arrData[idx2][0]==values[idx1] && arrData[idx2][1]>0){
	                    if(arrData[idx2][1]!=Id1) values.splice(idx1,1);
	                    break;
	                }
	            }
	        }
	    }
	    setShowText();
	}
	init();
}

//二级分类单选
var multiLevel2Select = {
    clients:new Array(),
    add:function(objKey,strShowId1,strShowId2,strTypeId1,strTypeId2,data,typename,maxselectNum,cols){
        var obj = new multiLevel2SelectObject(objKey,strShowId1,strShowId2,strTypeId1,strTypeId2,data,typename,maxselectNum,cols);
        multiLevel2Select.clients[objKey] = obj;
    },
    show1:function(objKey){
        multiLevel2Select.clients[objKey].popDiv1();
    },
    show2:function(objKey){
        multiLevel2Select.clients[objKey].popDiv2();
    }
}

