var m_aimObj;       // 全局变量，目标名称的对象
var m_aimObjValue;  // 全局变量，目标值的对象
var m_splitChar;    // 全局变量，分隔符
/**
 * 主函数，初始化并显示
 * 输入参数：aimObj                目标名称的对象
 *           aimObjValue           目标值的对象
 *           allObjList            全部项目的名称
 *           allObjValueList       全部项目的值
 *           splitChar             分隔符
 */
function do_two_select(aimObj, aimObjValue, allObjList, allObjValueList, splitChar){
  m_aimObj = aimObj;            // 将输入参数付给全局变量
  m_aimObjValue = aimObjValue;  // 将输入参数付给全局变量
  m_splitChar = splitChar;      // 将输入参数付给全局变量
  var selectedList = aimObj.value;  // 已选项目的名称
  var selectedValueList = aimObjValue.value;  // 已选项目的值
  var selectedList_array = selectedList.split(splitChar);  // 已选项目数组
  var selectedValueList_array = selectedValueList.split(splitChar);  // 已选项目的值数组
  var allObjList_array = allObjList.split(splitChar);  // 全部项目数组
  var allObjValueList_array = allObjValueList.split(splitChar);  // 全部项目的值数组
  var i, j;
  if (selectedList_array.length != selectedValueList_array.length){
    alert("'已选项目列表'和'已选项目的值列表'长度不同，请修改。");    
    return;
  }
  if (allObjList_array.length != allObjValueList_array.length){
    alert("'全部项目列表'和'全部项目的值列表'长度不同，请修改。");    
    return;
  }
  // 清除 twoSelect_selected 控件
  twoSelect_cleanSelected();
  // 清除 twoSelect_waitSelect 控件 
  twoSelect_cleanWaitSelect();
  
  // 比较“已选项目列表”和“全部项目列表”，将未选择的项目放在“待选项目列表”中
  var find = 0;
  for (i = 0; i < allObjList_array.length; i++){
    find = 0;
    for (j = 0; j < selectedList_array.length; j++){
      //alert(allObjList_array[i] + ' = ' + selectedList_array[j]);
      if (allObjList_array[i] == selectedList_array[j]){
        find = 1;
        break;
      }
    }
    if (! find){
      twoSelect_addOption(twoSelect_waitSelect, allObjValueList_array[i], allObjList_array[i]);
    }
  }
  // 将“已选项目列表”装入下拉菜单
  if (selectedList.Trim().length > 0){
    for (i = 0; i < selectedList_array.length; i++){
      twoSelect_addOption(twoSelect_selected, selectedValueList_array[i], selectedList_array[i]);
    }
  }
  // 设置默认选中的项目
  if (twoSelect_waitSelect.length > 0)
    twoSelect_waitSelect.options[0].selected = true;
  if (twoSelect_selected.length > 0)
    twoSelect_selected.options[0].selected = true;
  // 显示
  show_two_select();
  // 使下拉菜单的选择生效
  twoSelect_eval();
}

/**
 * 给 String 增加 Trim() 的方法：去空格
 */
String.prototype.Trim = function()
{
    return this.replace(/(^s*)|(s*$)/g, "");
}
/**
 * 使下拉菜单的选择生效
 */
function twoSelect_eval(){
  var i;
  var text = '';
  var value = '';
  for (i = 0; i < twoSelect_selected.length; i++){
    if (i == 0){
      text = text + twoSelect_selected.options[i].innerText ;
      value = value + twoSelect_selected.options[i].value ;
    }
    else{
      text = text + m_splitChar + twoSelect_selected.options[i].innerText;   
      value = value + m_splitChar + twoSelect_selected.options[i].value;   
    }
  }
  m_aimObj.value = text;
  m_aimObjValue.value = value;
  // 初始化状态提示
  twoSelect_showStatus(''); 
}
/**
 * 全部增加
 */
function twoSelect_selectAll()
{
	var i;
	var newOption, waitOption;
	// 将 twoSelect_waitSelect 里的内容全部移到 twoSelect_selected
	for (i = 0; i < twoSelect_waitSelect.length; i++){
	  waitOption = twoSelect_waitSelect.options[i];
	  newOption = new Option(waitOption.innerText, waitOption.value);
  	twoSelect_selected.options[twoSelect_selected.options.length] = newOption;
  	newOption.selected = true;
	}
	// 清除 twoSelect_waitSelect 控件 
  twoSelect_cleanWaitSelect();	
  // 使下拉菜单的选择生效
  twoSelect_eval();
  twoSelect_showStatus("成功增加全部'待选项目列表'中的项目。");
}
/**
 * 全部删除
 */
function twoSelect_removeAll()
{
	var i;
	var newOption, waitOption;
	// 将 twoSelect_selected 里的内容全部移到 twoSelect_waitSelect
	for (i = 0; i < twoSelect_selected.length; i++){
	  waitOption = twoSelect_selected.options[i];
	  newOption = new Option(waitOption.innerText, waitOption.value);
  	twoSelect_waitSelect.options[twoSelect_waitSelect.options.length] = newOption;
  	newOption.selected = true;
	}
	// 清除 twoSelect_waitSelect 控件 
  twoSelect_cleanSelected();	
  // 使下拉菜单的选择生效
  twoSelect_eval();
  twoSelect_showStatus("成功删除全部'已选项目列表'中的项目。");
}
/**
 * 增加当前项目
 */
function twoSelect_selectThis()
{
	var index;
	var newOption, waitOption;
	if (twoSelect_waitSelect.length < 1){
	  twoSelect_showStatus("'待选项目列表'已经全部增加。");
	  return;
	}
	index = twoSelect_waitSelect.selectedIndex;
	if (index < 0){
	  twoSelect_showStatus("请在'待选项目列表'中选择你需要增加的项目。");
	  return;
	}
	waitOption = twoSelect_waitSelect.options[index];	
	// 将 twoSelect_waitSelect 选中的项目增加到 twoSelect_selected
  newOption = new Option(waitOption.innerText, waitOption.value);
	twoSelect_selected.options[twoSelect_selected.options.length] = newOption;
	newOption.selected = true;
	// 删除 twoSelect_waitSelect 选中的项目
	twoSelect_waitSelect.options.remove(twoSelect_waitSelect.selectedIndex);
  // 使下拉菜单的选择生效
  twoSelect_eval();
  twoSelect_showStatus("成功'增加'。");
}
/**
 * 删除当前项目
 */
function twoSelect_removeThis()
{
	var index;
	var newOption, waitOption;
	if (twoSelect_selected.length < 1){
	  twoSelect_showStatus("'已选项目列表'已经全部删除。");
	  return;
	}
	index = twoSelect_selected.selectedIndex;
	if (index < 0){
	  twoSelect_showStatus("请在'已选项目列表'中选择你需要删除的项目。");
	  return;
	}
	waitOption = twoSelect_selected.options[index];
	// 将 twoSelect_selected 选中的项目增加到 twoSelect_waitSelect
  newOption = new Option(waitOption.innerText, waitOption.value);
	twoSelect_waitSelect.options[twoSelect_waitSelect.options.length] = newOption;
	newOption.selected = true;
	// 删除 twoSelect_selected 选中的项目
	twoSelect_selected.options.remove(twoSelect_selected.selectedIndex);
  // 使下拉菜单的选择生效
  twoSelect_eval();
  twoSelect_showStatus("成功'删除'。");
}
/**
 * 向上移动项目
 */
function twoSelect_moveUp(){
  var index;
  var newOption, waitOption, tempOption;
  if (twoSelect_selected.length < 2){
	  twoSelect_showStatus("'已选项目列表'中存在两个项目或两个以上才能进行移动。");
	  return;
	}
	index = twoSelect_selected.selectedIndex;
	if (index < 0){
	  twoSelect_showStatus("请在'已选项目列表'中选择你需要移动的项目。");
	  return;
	}
	if (index == 0){
	  twoSelect_showStatus("该项目已经移到最顶了。");
	  return;
	}
	tempOption = twoSelect_selected.options[index];
	newOption = new Option(tempOption.innerText, tempOption.value);
	tempOption = twoSelect_selected.options[index - 1];
	waitOption = new Option(tempOption.innerText, tempOption.value);
	twoSelect_selected.options[index] = waitOption;
	twoSelect_selected.options[index - 1] = newOption;
	newOption.selected = true;
	// 使下拉菜单的选择生效
	twoSelect_eval();
}
/**
 * 向下移动项目
 */
function twoSelect_moveDown(){
  var index;
  var newOption, waitOption, tempOption;
  if (twoSelect_selected.length < 2){
	  twoSelect_showStatus("'已选项目列表'中存在两个项目或两个以上才能进行移动。");
	  return;
	}
	index = twoSelect_selected.selectedIndex;
	if (index < 0){
	  twoSelect_showStatus("请在'已选项目列表'中选择你需要移动的项目。");
	  return;
	}
	if (index == twoSelect_selected.length - 1){
	  twoSelect_showStatus("该项目已经移到最底了。");
	  return;
	}
	tempOption = twoSelect_selected.options[index];
	newOption = new Option(tempOption.innerText, tempOption.value);
	tempOption = twoSelect_selected.options[index + 1];
	waitOption = new Option(tempOption.innerText, tempOption.value);
	twoSelect_selected.options[index] = waitOption;
	twoSelect_selected.options[index + 1] = newOption;
	newOption.selected = true;
	// 使下拉菜单的选择生效
	twoSelect_eval();
}
/**
 * 在下拉菜单中增加一项
 */
function twoSelect_addOption(obj, optionId, optionName)
{
	newOption = new Option(optionName, optionId);
	obj.options[obj.options.length] = newOption;
	newOption.selected = true;
}
/**
 * 清除 twoSelect_selected 控件的内容
 */
function twoSelect_cleanSelected(){
  var j = twoSelect_selected.length;
  for (var i = 0; i < j; i++){
    twoSelect_selected.options.remove(0);
  }
}
/**
 * 清除 twoSelect_waitSelect 控件的内容
 */
function twoSelect_cleanWaitSelect(){
  var j = twoSelect_waitSelect.length;
  for (var i = 0; i < j; i++){
    twoSelect_waitSelect.options.remove(0);
  }
} 
/**
 * 显示
 */
function show_two_select(){  
  if (document.all){
    if(two_select.style.visibility=="hidden"){
      two_select.style.visibility="visible";
      twoSelect_waitSelect.style.visibility="visible";
      twoSelect_selected.style.visibility="visible";
    }
  }
  else if (document.layers){
    if(document.two_select.visibility=="hide"){
      document.two_select.visibility="";
      document.twoSelect_waitSelect.style.visibility="";
      document.twoSelect_selected.style.visibility="";
    }
  }
}
/**
 * 隐藏
 */
function hide_two_select(){  
  
  if (document.all){
    two_select.style.visibility="hidden";
    twoSelect_waitSelect.style.visibility="hidden";
    twoSelect_selected.style.visibility="hidden";
  }
  else if (document.layers){
    document.two_select.visibility="hide";
    document.twoSelect_waitSelect.style.visibility="hide";
    document.twoSelect_selected.style.visibility="hide";
  }
}
/**
 * 状态提示，用来显示信息
 */
function twoSelect_showStatus(text){
  twoSelect_findObj('twoSelect_status').innerText = '状态提示：' + text;
}
/**
 * 查找一个对象
 */
function twoSelect_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

with (document) {
  write("<div onmouseleave='hide_two_select();'>");
  write("<div id='two_select' style='visibility=hidden;position: absolute; width: 500px; left: 300px; top: 300px; height: 250px;'> ");
  write("<TABLE width=470 align=center cellpadding=3 cellspacing=1 class=table01>");
  write("  <tr align='center'>");
  write("    <td class=td_title>请根据需要从'待选项目列表'中选择项目</td>");
  write("  </tr>");
  write("  <TR>");
  write("    <TD align='center' class=td_title><table width='100%' border='0' cellspacing='3'>");
  write("      <tr>");
  write("        <td height='95%'>&nbsp;</td>");
  write("        <td height='95%' align='center'>已选项目列表</td>");
  write("        <td height='95%'>&nbsp;</td>");
  write("        <td height='95%' align='center'>待选项目列表</td>");
  write("      </tr>");
  write("      <tr>");
  write("        <td width='10' height='95%'>");
  write("          <table border='0' width='100%'>");
  write("            <tr>");
  write("              <td width='100%' align='right'><img src='/images/zjm/IndexUp.gif' onclick='twoSelect_moveUp()'/></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='center'><img src='/images/zjm/shim.gif' width=1 height=15></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='right'><img src='/images/zjm/IndexDown.gif' onclick='twoSelect_moveDown()'/></td>");
  write("            </tr>");
  write("        </table></td>");
  write("        <td width='40%' height='95%'>");
  write("          <p align='center'>");
  write("            <select size='10' name='twoSelect_selected' style='width=150'>");
  write("            </select>");
  write("          </p>");
  write("        </td>");
  write("        <td width='15%' height='95%'>");
  write("          <table border='0' width='100%'>");
  write("            <tr>");
  write("              <td width='100%' align='center'><input name='button' type='button' class='button1' onClick='twoSelect_selectAll()' value='全部增加'></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='center'><input name='button' type='button' class='button1' onClick='twoSelect_selectThis()' value='<--增加--'></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='center'><input name='button' type='button' class='button1' onClick='twoSelect_removeThis()' value='--删除-->'></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='center'><input name='button' type='button' class='button1' onClick='twoSelect_removeAll()' value='全部删除'></td>");
  write("            </tr>");
  write("            <tr>");
  write("              <td width='100%' align='center'><input name='button' type='button' class='button1' onClick='hide_two_select()' value='关  闭'></td>");
  write("            </tr>");
  write("          </table>");
  write("        </td>");
  write("        <td width='40%' height='95%'>");
  write("          <p align='center'>");
  write("            <select size='10' name='twoSelect_waitSelect' style='width=150'>");
  write("            </select>");
  write("          </p>");
  write("        </td>");
  write("      </tr>");
  write("    </table> </TD>");
  write("  </TR>");
  write("  <TR>");
  write("    <TD class=td_title id='twoSelect_status'>状态：</TD>");
  write("  </TR>");
  write("</TABLE>");
  write("</div>");
  write("</div>");
}  