﻿//通用一级多选对象
function multiSelectObject(objKey,strShowId,strTypeId,data,typename,maxselectNum,cols){
    var key = objKey;
    var typename = typename;
    var maxnumber = isNaN(parseInt(maxselectNum)) ? 5 : parseInt(maxselectNum);
    var div = null;
    var ctrType = corefunc.$(strTypeId);
    var ctrShow = corefunc.$(strShowId);
	var arrData = data;
    var arrResult = new Array();
	var columns = 5;
	if(typeof(cols)!="undefined" && cols>0)columns = cols;

    var setShowText = function(){
        var showText="";
        if(arrResult.length>0){
            for(var i=0;i<arrResult.length;i++){
                if(i>0)showText+=", ";
                showText+=arrResult[i][1];
            }
        }
        if(showText.length>0){
            if(ctrShow.tagName.toLowerCase()=="input"){
                ctrShow.title = showText;
                if(corefunc.byteLength(showText)>28){
                    showText = corefunc.leftByte(showText,26) + "...";
                }
                ctrShow.value = showText;
            }else{
                ctrShow.innerHTML = showText;
            }
        }else{
            if(ctrShow.tagName.toLowerCase()=="input"){
                ctrShow.title = "未设置";
                ctrShow.value = "请选择";
            }else{
                ctrShow.innerHTML = "";
            }
        }
    }
    
    var inSelected = function(id){
        for(var i=0;i<arrResult.length;i++){
            if(arrResult[i][0]==id){
                return true;
            }
        }
        return false;
    }
    
    
    this.exchangeId = function(id,name){
        for(var i=0;i<arrResult.length;i++){
            if(arrResult[i][0]==id){
                arrResult.splice(i,1);
                corefunc.$(key+"Txt"+id).style.color="";
                return true;
            }
        }
        if(maxnumber>0){
            if(arrResult.length>=maxnumber){
                alert("选择"+typename+"不能超过"+maxnumber+"个！");
                return false;
            }
        }
        arrResult[arrResult.length] = [id,name];
        corefunc.$(key+"Txt"+id).style.color="red";
        return true;
    }
    
    this.doCancel = function(){
        if(div!=null)div.style.display="none";
        init();
        globalMaskDiv.hide();
    }
    
    this.doClear = function(){
        arrResult.length=0;
        var cbs = corefunc.$$("cb"+key);
        for(var i=0;i<cbs.length;i++){
            if(cbs[i].checked){
                cbs[i].checked=false;
                cbs[i].nextSibling.style.color="";
            }
        }
        ctrType.value="";
        setShowText();
    }
    
    this.doOK = function(){
        var ids = "";
        for(var i=0;i<arrResult.length;i++){
            if(i>0)ids+=",";
            ids += arrResult[i][0].toString();
        }
        ctrType.value = ids;
        setShowText();
        this.doCancel();
    }
    
    this.popDiv = function(){
        globalMaskDiv.show();
        if(div == null){
            div = document.createElement("DIV");
            div.className = "popDiv";
            div.style.zIndex = globalMaskDiv.zIndex+1;
            if(corefunc.isIE()){
                document.body.appendChild(div);
            }else{
                document.documentElement.appendChild(div);
            }
        }
            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 align=\"right\"><span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doOK();\">确定</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doClear();\">清空</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doCancel();\">取消</span></td></tr>";
            }else{
                html+="<tr class=\"opbar\"><td><table border=\"0\" width=\"100%\"><tr><td class=\"title\">"+typename+"</td><td align=\"right\"><span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doOK();\">确定</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doClear();\">清空</span>&nbsp;&nbsp;<span class=\"pointer\" onclick=\"javascript:multiSelect.clients['"+key+"'].doCancel();\">取消</span></td></tr></table></td></tr>";
            }
            html+="<tr>";
            var j=0;
            for(var idx=0;idx<arrData.length;idx++){
                var inSel = inSelected(arrData[idx][0]);
                if(idx>0 && idx % columns==0)html+="</tr><tr>";
                html += "<td><input name=\"cb"+key+"\" type=\"checkbox\" onclick=\"javascript:return multiSelect.clients['"+key+"'].exchangeId("+arrData[idx][0]+",'"+arrData[idx][1]+"');\"";
                if(inSel) html += " checked=\"checked\"";
                html += " /><span id=\""+key+"Txt"+arrData[idx][0]+"\"";
                if(inSel) html += " style=\"color:red;\"";
                html += ">"+arrData[idx][1] + "</span></td>";
            }
            html += "</tr></table>";
            div.innerHTML = html;
        corefunc.moveCenter(div);
        div.style.display = "";
    }
    
    var init = function(){
        arrResult.length = 0;
        var ids = ctrType.value.split(",");
        for(var idx=0;idx<ids.length;idx++){
            var id = parseInt(ids[idx]);
            for(var j=0;j<arrData.length;j++){
                if(arrData[j][0]==id){
                    arrResult[arrResult.length]= [arrData[j][0],arrData[j][1]];
                    continue;
                }
            }
        }
        setShowText();
    }
    init();
}
//通用一级多选模块
var multiSelect = {
    clients:new Array(),
    add:function(objKey,strShowId,strTypeId,data,typename,maxselectNum,cols){
        var obj = new multiSelectObject(objKey,strShowId,strTypeId,data,typename,maxselectNum,cols);
        multiSelect.clients[objKey] = obj;
    },
    show:function(key){
        multiSelect.clients[key].popDiv();
    }
}
