//用户选择可以多选和单选。
//多选时，可以直接选择部门。
//用户列表有3种方式：按部门来显示、按姓名顺序来显示、按职位来显示
//开始时：
//      把按部门列表的用户保存在数组中。
//          DeptUserArr(部门或用户1数组,部门或用户2数组...)
//          部门或用户数组结构为：
//          PerDeptUserArr(DeptOrName,IsDept,DeptID,ParentID,Layer)
//      把按职位的用户保存在数组中。
//          PositionUserArr(用户或职位信息数组1,用户或职位信息数组2,....)
//          用户或职位信息数组结构为：
//          PerPositionUserArr(姓名,职位)
//      把按姓名的顺序的用户保存在数组中。
//          UserArr(姓名1,姓名2...)
//      把已经选择的用户保存在数组中。
//          UserSelectedArr(姓名或部门1,姓名或部门2...)
////////////////////////////////////////////////////////////////////
var UserSelectedArr=new Array();
//下面是根据DeptUserArr显示部门和用户选择框的函数
function DisplaySelectByDeptUserArr(SelectName,Size,IsMult,SelectWidth,HaveSpace,HaveDeptSelect){
 //IsMult：是否多选,HaveSpace:前面后空的选择,HaveDeptSelect:可以选择部门
 var A="";
 A=A+"<Select Name=\""+SelectName+"\" Size="+Size+" style=\"width:"+SelectWidth+";\"";
 if(IsMult==1){
  A=A+" multiple";
 }
 A=A+">";
 if(HaveSpace==1){
  A=A+"<option value=\"\"></option>";
 }
 var i;
 var j;
 var FrontSpace="";//前面的空格
 for(i in DeptUserArr){
  FrontSpace="";
  if(DeptUserArr[i][4]!=0){
   for(j=1;j<=DeptUserArr[i][4];j++){
    FrontSpace=FrontSpace+"&nbsp;&nbsp;";
   }
  }
  if(DeptUserArr[i][1]==1){
   if(HaveDeptSelect==1){
    A=A+"<option value=\""+DeptUserArr[i][0]+"("+DeptUserArr[i][2]+")\""+InUserSelectedArr(DeptUserArr[i][0]+"("+DeptUserArr[i][2]+")")+">"+FrontSpace+"■"+DeptUserArr[i][0]+"</option>";
   }else{
    A=A+"<option value=\"\">"+FrontSpace+"■"+DeptUserArr[i][0]+"</option>";
   }
  }else{
   A=A+"<option value=\""+DeptUserArr[i][0]+"\""+InUserSelectedArr(DeptUserArr[i][0])+">"+FrontSpace+"&nbsp;&nbsp;□"+DeptUserArr[i][0]+"</option>";
  }
 }
 A=A+"</Select>";
 return A;
}
///////////////////////////////////////////////////////
//下面的函数是当SelectValue在UserSelectedArr中存在时，返回" selected",否则返回""
function InUserSelectedArr(SelectValue){
 var i;
 for(i in UserSelectedArr){
  if(SelectValue==UserSelectedArr[i]){
   return " selected";
  }
 }
 return "";
}
////////////////////////////////////////////////////////
//把被选的用户(用,分开的字符串)加到数组UserSelectedArr中
function AdjustUserSelectedArr(UserStr){
 UserSelectedArr=new Array();
 var S=UserStr.split(",");
 var i;
 for(i in S){
  if(S[i]!=""){
   UserSelectedArr.push(S[i]);
  }
 }
}
//////////////////////////////////////////////////////////
//把用户选择框中的用户连成串
function GetUserStr(FormName,SelectName){
 var SelectOB=eval(FormName+"."+SelectName);
 var A="";
 var optionlen=SelectOB.options.length;
 for(var i=optionlen-1;i>=0;--i){
  if(SelectOB.options(i).selected&SelectOB.options(i).value!=""){
   if(A==""){
    A=SelectOB.options(i).value;
   }else{
    A=A+","+SelectOB.options(i).value;
   }
  }
 }
 return A;
}
//////////////////////////////////////////////////////////
//当点[按部门显示]时处理的函数
function OnClickByDept(){
 AdjustUserSelectedArr(GetUserStr("form1","SelectName"));
 ReturnStr=DisplaySelectByDeptUserArr("SelectName",16,IsMult,400,HaveSpace,HaveDeptSelect);
 DivUserSelect.innerHTML=ReturnStr;
}
//下面是根据PositionUserArr显示职位和用户选择框的函数
function DisplaySelectByPositionUserArr(SelectName,Size,IsMult,SelectWidth,HaveSpace){
 //IsMult：是否多选,HaveSpace:前面后空的选择
 var A="";
 A=A+"<Select Name=\""+SelectName+"\" Size="+Size+" style=\"width:"+SelectWidth+";\"";
 if(IsMult==1){
  A=A+" multiple";
 }
 A=A+">";
 if(HaveSpace==1){
  A=A+"<option value=\"\"></option>";
 }
 var i;
 var FrontSpace="&nbsp;&nbsp;";//前面的空格
 var Position="";
 for(i in PositionUserArr){
  if(PositionUserArr[i][1]!=Position){
   Position=PositionUserArr[i][1];
   A=A+"<option value=\"\">"+"■"+PositionUserArr[i][1]+"</option>";
  }
  A=A+"<option value=\""+PositionUserArr[i][0]+"\""+InUserSelectedArr(PositionUserArr[i][0])+">"+FrontSpace+"□"+PositionUserArr[i][0]+"</option>";
 }
 A=A+"</Select>";
 return A;
}
//////////////////////////////////////////////////////////
//当点[按职位显示]时处理的函数
function OnClickByPosition(){
 AdjustUserSelectedArr(GetUserStr("form1","SelectName"));
 ReturnStr=DisplaySelectByPositionUserArr("SelectName",16,IsMult,400,HaveSpace);
 DivUserSelect.innerHTML=ReturnStr;
}
//下面是根据UserArr显示用户选择框的函数
function DisplaySelectByUserArr(SelectName,Size,IsMult,SelectWidth,HaveSpace){
 //IsMult：是否多选,HaveSpace:前面后空的选择
 var A="";
 A=A+"<Select Name=\""+SelectName+"\" Size="+Size+" style=\"width:"+SelectWidth+";\"";
 if(IsMult==1){
  A=A+" multiple";
 }
 A=A+">";
 if(HaveSpace==1){
  A=A+"<option value=\"\"></option>";
 }
 var i;
 for(i in UserArr){
  A=A+"<option value=\""+UserArr[i]+"\""+InUserSelectedArr(UserArr[i])+">"+UserArr[i]+"</option>";
 }
 A=A+"</Select>";
 return A;
}
//////////////////////////////////////////////////////////
//当点[按姓名顺序显示]时处理的函数
function OnClickByName(){
 AdjustUserSelectedArr(GetUserStr("form1","SelectName"));
 ReturnStr=DisplaySelectByUserArr("SelectName",16,IsMult,400,HaveSpace);
 DivUserSelect.innerHTML=ReturnStr;
}
///////////////////////////////////////////////////
//下面是把被选的值返回给父窗口的函数
function ToParentWin(FormNameParent,InputNameParent,FormNameLoc,SelectNameLoc){
 if(FormNameParent==""){
  var ParentInputOB=eval("opener."+InputNameParent);
 }else{
  var ParentInputOB=eval("opener."+FormNameParent+"."+InputNameParent);
 }
 ParentInputOB.value=GetUserStr(FormNameLoc,SelectNameLoc);
}
