﻿/*
 * kxselect js  v1.0.0
 *
 * Copyright (c) 2009 tuzhen
 *
 * Date: 2009-11-12 10:48:21
 * Revision: 1000
 */
var isSelect = true;
var slbSize=3;//单排个数
var kxSize = 3;//子选项个数
var myArr = new Array();
var thisObj;
var thisdata={val:"",txt:"＋",chk:"",war:"",chkid:"",chkNo:"0"};
var size = 10;//字数


//一级目录
function setSelectBoxT(obj,title,data,NodesSize,lbwidth,childrenSize,slbwidth,sarr,size,selectSize)//设置级联
{
   obj.click(function(){
        
        thisdata.val="";
        thisdata.txt="";
        thisdata.chk="";
        thisdata.war="";
        thisdata.chkid="";
        thisdata.chkNo=0;
       
        kxSize = selectSize;
        slbSize = size;
        thisObj = obj;
        isSelect = false;
        _left = obj.offset().left +obj.width()+5;
        _top = obj.offset().top;
        $("#myselect").hide();
        $("#subMyselect").hide();
        $("#mytit").html(title);
        makeLabel(data,lbwidth,childrenSize,NodesSize,slbwidth,sarr);
        $("#myselect").css({left:""+_left+"",top:""+_top+""});
        //跟随鼠标移动
        move_div();


        return false;
   }); 
}
//设置一级选择项 
function makeLabel(data,lbwidth,childrenSize,NodesSize,slbwidth,sarr){
    
    myArr = sarr;
    var html="<div class='mydiv'><div class='myText' id='myText'><img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;请您选择：</div>";
    var myObj = new Array();
    myObj = data.arr.split(';'); 
        for(i=0;i<myObj.length-1;i++)
        {
            var myValue = new Array();
            myValue = myObj[i].split(',');
            html +="<a href='#'id=lb"+myValue[0]+" onclick='return false'; class='a"+lbwidth+"'><label class='a"+lbwidth+"' onclick=setSubSelectBox('lb"+myValue[0]+"',"+slbwidth+","+childrenSize+","+thisObj[0].id+"data);>&nbsp;&nbsp;"+myValue[1]+"</label></a>";
        }
    html+="<a href='#'id=lbReSet' onclick='return false'; class='a"+lbwidth+"'><label class='a"+lbwidth+"' onclick=ReSet("+thisObj[0].id+"data);>&nbsp;&nbsp;不限</label></a>";
    html+="</div>";
        
    $("#mydata").html(html);
    $("#myselect").show();
    var boxwidth = NodesSize * (lbwidth+12);
    
    
    //赋值判断
    thisdata.val = data.val;
    thisdata.txt = data.txt;
    thisdata.chk = data.chk;
    thisdata.chkNo = data.chkNo;
    
    if(thisdata.val==""){
        thisObj[0].value="选择/修改";
        $("#myText").html("<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;请您选择：");
    }
    else{
       thisObj[0].value = mySubstring(thisdata.txt);
       $("#myText").html("<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;您选择了："+thisdata.chk+""+thisdata.war+"");
    }
    var cellCount =Math.ceil((myObj.length)/NodesSize)
    var boxheight = cellCount*30+50;
         
    $("#myselect").css({width:""+boxwidth+"px"});
    $("#myselect").css({height:""+boxheight+"px"});   
    $("#myhed").css({width:""+boxwidth+""});
    $("#mydata").css({width:""+boxwidth+""});           

    
    
}
//设置二级选项框
function setSubSelectBox(objID,slbwidth,childrenSize,data){

    makeSubLabel(myArr, objID,data,slbwidth,childrenSize);
    isSelect = true;
    return false;
}


function makeSubLabel(arr, objID,data,slbwidth,childrenSize) {
    
    var mainID = objID.substring(2,4);
    var label="<div class='mydiv'><div>";
	var arrNew = arr(mainID);
	var j = arrNew.length;
	
	if($.browser.msie && $.browser.version == 8)
	{
		for (var i = 0; i < j; i++) {
            chkval = arrNew[i][0]+":"+arrNew[i][1];
            label +="<label class='a"+slbwidth+"'><input class='chk' type='checkbox'id='ck"+arrNew[i][0]+"' value='"+chkval+"' onclick=setSelectValue(this,'"+arrNew[i][0]+"','"+arrNew[i][1]+"','"+slbwidth+"',this.checked,"+thisObj[0].id+"data); />"+arrNew[i][1]+"</label>";
	    }
	}
	else
	{
	    for (var i = 0; i < j; i++) {
            chkval = arrNew[i][0]+":"+arrNew[i][1];
            label +="<label class='a"+slbwidth+"'><input type='checkbox'id='ck"+arrNew[i][0]+"' value='"+chkval+"' onclick=setSelectValue(this,'"+arrNew[i][0]+"','"+arrNew[i][1]+"','"+slbwidth+"',this.checked,"+thisObj[0].id+"data); />"+arrNew[i][1]+"</label>";
	    }
	}
	
	
	label+="</div><div class='xx'><a href=javascript:CloseKxSelect();>确定</a></div></div>";
	$("#subMyselect").html(label);
	
	
	var sboxwidth = childrenSize * (slbwidth+12);
	var sheight=(Math.ceil(arrNew.length/slbSize))*20+30;

	
	obj = $("#"+objID+"");
    _left = obj.offset().left - sboxwidth-5;
    _left =(_left<0)?5:_left;
    _top = obj.offset().top + 18;
    $("#subMyselect").show();
    $("#subMyselect").css({left:""+_left+"",top:""+_top+""});
	
	
	$("#subMyselect").css({height:""+sheight+"",width:""+sboxwidth+""});   
	var mychkbox = new Array();
    mychkbox = thisdata.val.split('*');
    for(i=0;i<mychkbox.length-1;i++){
        if($("#ck"+mychkbox[i]+"")[0] != null){
            $("#ck"+mychkbox[i]+"")[0].checked = true;
        }
    }
//----------------

}

function setSelectValue(obj,code,codevalue,subwidth,ischecked,data){
        chkid="";
        getMyData(!ischecked,code,codevalue,subwidth,data);
        if(thisdata.val==""){
            thisObj[0].value="选择/修改";
            $("#myText").html("<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;请您选择：");
        }
        else{
           thisObj[0].value = mySubstring(thisdata.txt);
           $("#myText").html("<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;您选择了："+thisdata.chk+""+thisdata.war+"");
           if(kxSize == 1){
                CloseKxSelect();
           }
        }
        if(!ischecked && $("#"+chkid+"")[0]!=null)
	    {
	       $("#"+chkid+"")[0].checked = false;
	    }
}

function getMyData(isCancel,code,codevalue,subwidth,data){   

    var chkval = code+":"+codevalue;
    var label ="<label style='width:"+subwidth+";'><input type='checkbox'id='k"+code+"' value='"+chkval+"' checked='checked' onclick=setSelectValue(this,'"+code+"','"+codevalue+"','"+subwidth+"',false,"+thisObj[0].id+"data); />"+codevalue+"</label>";
    chkid = "ck"+code;
    if(isCancel)
    {
        thisdata.val = thisdata.val.replace(""+code+"*", "");
        thisdata.txt = thisdata.txt.replace(""+codevalue+"＋","");
        thisdata.chk = thisdata.chk.replace(label,"");
        thisdata.chkNo--;
        thisdata.war="";
    }
    else
    {
         if(kxSize == 1){
                thisdata.val = code+"*";
                thisdata.txt = codevalue;
                thisdata.chk = label;
                thisdata.chkNo++;
                thisdata.war="";  ;
         }
         else{
            
            if(thisdata.chkNo < kxSize)
            {
                thisdata.val += code+"*";
                thisdata.txt += codevalue+"＋";
                thisdata.chk += label;
                thisdata.chkNo++;
                thisdata.war="";
            }
            else
            {
                thisdata.war="<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;您最多只能选择"+kxSize+"项!";
                if($("#"+chkid+"")[0] !=null){
                    $("#"+chkid+"")[0].checked = false;
                }
            }
         
         }

    }
    //保存值 
    data.val = thisdata.val;
    data.txt = thisdata.txt;
    data.chk = thisdata.chk;
    data.chkNo = thisdata.chkNo;
}


function displaySubSelectBox(obj)
{
    if(!isSelect){
        $("#subMyselect").hide();
    }
    isSelect = false;
}
function setIsSelect()
{
    isSelect = true;
}

function CloseKxSelect(){

    $("#subMyselect").hide();
    $("#myselect").hide();
}

function ReSet(thisdata){
    thisdata.val="";
    thisdata.txt="";
    thisdata.chk="";
    thisdata.war="";
    thisdata.chkid="";
    thisdata.chkNo=0;
    thisObj[0].value="选择/修改";
    $("#myText").html("<img src='http://images.jxrsrc.com/Q/dot.gif'/>&nbsp;&nbsp;请还没有选择任何项目");
    CloseKxSelect();
}
























//不级联
function setSelectBoxO(obj,title,data,NodesSize,lbwidth,isright)//
{

  obj.click(function(){
        thisObj = obj;
        thisdata.val="";
        thisdata.txt="";
        thisdata.chk="";
        thisdata.war="";
        thisdata.chkid="";
        thisdata.chkNo=0;
        isSelect = false;
        var _left;
        var boxwidth = NodesSize * (lbwidth+12);
        $("#myselect").css({width:""+boxwidth+"px"});
        $("#myhed").css({width:""+boxwidth+""});
        $("#mydata").css({width:""+boxwidth+""}); 
        if(isright)
        {
            _left = obj.offset().left +obj.width()+5;
        }
        else
        {
            _left = obj.offset().left -boxwidth-5;
        }
        _top = obj.offset().top;
        $("#myselect").hide();
        $("#subMyselect").hide();
        $("#mytit").html(title);
        $("#mydata").html(makeLabelO(data,lbwidth,NodesSize));
        //赋值
        thisdata.chkid= data.val;
        if(thisdata.chkid != "lb")
        {
            $("#lb"+thisdata.chkid+"").css({background:"#ef954c",color:"#FFF"});
        }
        $("#myselect").show();
        
                
        $("#myselect").css({left:""+_left+"",top:""+_top+""});
        move_div();
        return false;
   }); 
}
function makeLabelO(data,lbwidth,NodesSize)
{
    var html="<div class='mydiv'>";
    var myObj = new Array();
    myObj = data.arr.split(';'); 
    for(i=0;i<myObj.length-1;i++){
        var myValue = new Array();
        myValue = myObj[i].split(',');
        html +="<a href='#'id=lb"+myValue[0]+" class='a"+lbwidth+"' onclick='return false';><label class='a"+lbwidth+"' onclick=selitem('"+myValue[0]+"','"+myValue[1]+"',"+thisObj[0].id+"data);>&nbsp;&nbsp;"+myValue[1]+"</label></a>";
    }
    html+="<a href='#'id='reset' class='a"+lbwidth+"' onclick='return false';><label class='a"+lbwidth+"' onclick=selitem('','不限',"+thisObj[0].id+"data);>&nbsp;&nbsp;不限</label></a>";
    html+="</div>";
    
    $("#mydata").html(html);
    $("#myselect").show();

    //
    var boxheight = (Math.ceil((myObj.length)/NodesSize))*30 + 20;
    
    $("#myselect").css({height:""+boxheight+"px"});      
}
function selitem(code,codevalue,data)
{
    if(thisdata.chkid != "lb")
    {
        $("#lb"+thisdata.chkid+"").css({background:"",color:"#000"});
    }
    //保存值
    data.val = code;
    data.txt = codevalue;
    thisdata.chkid = code;
    $("#lb"+code+"").css({background:"#ef954c",color:"#FFF"});
    thisObj[0].value=mySubstring(codevalue);
    $("#myselect").hide();
}
function mySubstring(ftext)
{
    ftext = (ftext.length > size)?""+ftext.substring(0,size)+"..":ftext;
    return ftext;
}










//移动div
function move_div()
{
 var obj = document.getElementById("myselect");
 var sObj = document.getElementById("subMyselect");

 this.offsetX = 0;
 this.offsetY = 0; 
 
     $("#myhed").mousemove(function(){
            var e = window.event;
            if( e.button != 1 )
            return false;

            var top  = e.clientY;
            var left = e.clientX;

            obj.style.left = (left - this.offsetX < 0)?0:(left - this.offsetX);
            obj.style.top  = (top  - this.offsetY <0)?0:(top  - this.offsetY);
            
//            try{
//                sObj.style.left = left - this.offsetX;
//                sObj.style.top  = top  - this.offsetY;
//            }catch(ex){}
            
            
            return false;
     });
     
     $("#myhed").mousedown(function(){
          var e = window.event;
          this.offsetY = e.clientY - parseInt(obj.style.top);
          this.offsetX = e.clientX - parseInt(obj.style.left);
          
//          try{
//              this.offsetY = e.clientY - parseInt(sObj.style.top);
//              this.offsetX = e.clientX - parseInt(sObj.style.left);
//          }catch(ex){}
          
          return false;
     });
}







