

// 一级列表
function SetItemData(sObj, sData, sValue)
{
	var i=0;
	var sSelect=0;
	var sList = sData.split(";");
	for (i = 0; i < sList.length; i++)
	{
		sItem = sList[i].split(",");
		if (sValue == sItem[0]) sSelect = i;
		sObj.add (new Option(sItem[1], sItem[0]));
	}
	sObj.selectedIndex = sSelect;
}

function SetDownList(sObj, sData, sDestObj)
{
	this.init = function()
	{
		var i=0;
		var sSelect=0;
		this.Obj1 = sObj;  
		this.Obj2 = sDestObj;
		var sValue = sDestObj.value;
		var sList = sData.split(";");
		for (i = 0; i < sList.length; i++)
		{
			sItem = sList[i].split(",");
			if (sValue == sItem[0]) sSelect = i;
			sObj.add (new Option(sItem[1], sItem[0]));
		}
		sObj.SourceObj = sDestObj.SourceObj = this;
		//if (this.Obj1.options.length>0) this.Obj2.value = this.Obj1.options[0].value;
		this.Obj1.onchange = new Function("this.SourceObj.Changed(this.SourceObj.Obj1, this.SourceObj.Obj2);");
		this.Obj1.selectedIndex = sSelect;	
	}

	this.Changed = function(tObj1, tObj2)
	{
		tObj2.value = tObj1.options[tObj1.selectedIndex].value;
	}
	this.init();
}

// 三级列表
function SetMMItemData(oObj1, oObj2, oObj3, sData, sValue)
{
	this.init = function()
	{
		//防止同一个Select对象被多个实例初始化而引起混乱
		if (oObj1.SourceObj || oObj2.SourceObj || oObj3.SourceObj)
		{
			alert("初始化失败!引用的<select>对象有一个或多个已经被初始化过,请使用这个<select>对象的obj.SourceObj.reset()方法进行重新加载!");
			return null;
		}

		this.init = true;  //记录是否在初始化过程中
		this.Obj1 = oObj1;  //记录第一层下拉框对象
		this.Obj2 = oObj2;  //记录第二层下拉框对象
		this.Obj3 = oObj3;  //记录第三层下拉框对象
		this.SourceData = sData.split(";"); //源数据
		this.LenPerLevel = 2;  //指定代码中每一层级的字符位数
		this.ValueObj = eval(sValue);
		//this.FormFields = document.getElementsByName(sValue);  //自动赋值到的表单域集合
		this.FirstLevel = new Array();  //属于第一层的数据数组,分开存放它们是为了提高性能
		this.SecondLevel = new Array();  //属于第二层的数据数组
		this.ThirdLevel = new Array();  //属于第二层的数据数组
		//向各层次数据数组填充数据
		for (var i=0; i<this.SourceData.length; i++)
		{
			var codeLen = this.SourceData[i].split(",")[0].length;
			if (codeLen == this.LenPerLevel)this.FirstLevel[this.FirstLevel.length] = this.SourceData[i];
			if (codeLen == this.LenPerLevel * 2)this.SecondLevel[this.SecondLevel.length] = this.SourceData[i];
			if (codeLen == this.LenPerLevel * 3)this.ThirdLevel[this.ThirdLevel.length] = this.SourceData[i];
		}

		//标记每一个<select>对象的源对象
		oObj1.SourceObj = oObj2.SourceObj = oObj3.SourceObj = this;
		oObj1.ParentLevel = null;
		oObj2.ParentLevel = oObj1;
		oObj3.ParentLevel = oObj2;
	}

	//对象的初始化功能函数
	this.reset = function()
	{
		this.init = true;
		
		this.clearOpts(this.Obj1);
		this.clearOpts(this.Obj2);
		this.clearOpts(this.Obj3);
		for(var i=0; i<this.FirstLevel.length; i++)
			this.Obj1.options.add(new Option(this.FirstLevel[i].split(",")[1],this.FirstLevel[i].split(",")[0]));
		//顶级下拉需要空白选项时,请去掉下面两行的注释标记
		//设置顶级下拉空白项// this.Obj1.options.add(new Option("",""),0);
		//设置顶级下拉空白项// this.Obj1.value = "";

		this.Obj1.onchange = new Function("this.SourceObj.optionChanged(this.SourceObj.Obj2, this.SourceObj.SecondLevel, this.value);");
		this.Obj2.onchange = new Function("this.SourceObj.optionChanged(this.SourceObj.Obj3, this.SourceObj.ThirdLevel, this.value);");
		this.Obj3.onchange = new Function("this.SourceObj.setHideFormValue(this);");
		
		this.Obj2.style.display = "none";
		this.Obj3.style.display = "none";
		this.Obj1.onchange();
		this.Obj2.onchange();
		this.Obj3.onchange();

		//if(this.FormFields.length>0 && this.FormFields[0].value)
		if (this.ValueObj != null)
		{
			//defaultValue = this.FormFields[0].value;
			defaultValue = this.ValueObj.value;
			this.Obj1.value = defaultValue.substr(0,this.LenPerLevel);
			this.Obj1.onchange();
			this.Obj2.value = defaultValue.substr(0,this.LenPerLevel * 2);
			this.Obj2.onchange();
			this.Obj3.value = defaultValue.substr(0,this.LenPerLevel * 3);
			this.Obj3.onchange();
		}
		this.init = false;
		this.setHideFormValue(this.Obj1);
	};

	//下拉选项被改变时要做的事情,包括更新下级下拉列表和列新表单域值
	this.optionChanged = function(slt, arrData, value)
	{
		var started = false;
		if(value=="" || slt.ParentLevel.options[slt.ParentLevel.selectedIndex].style.color=="#888888") value="没可能的数据";
		this.clearOpts(slt);
		for (var i=0; i<arrData.length; i++)
		{
			if(arrData[i].substr(0,value.length) == value)
			{
				started = true;
				slt.options.add(new Option(arrData[i].split(",")[1],arrData[i].split(",")[0]));
			}
			else if(started) break;
		}
		if(slt.options.length>0)
		{
			if(slt.ParentLevel.selectedIndex == -1) slt.ParentLevel.selectedIndex = 0;
			var opt = slt.ParentLevel.options[slt.ParentLevel.selectedIndex];
			slt.options.add(new Option(slt.ParentLevel.options[slt.ParentLevel.selectedIndex].text,slt.ParentLevel.options[slt.ParentLevel.selectedIndex].value),0);
			slt.options[0].style.color = "#888888";
			slt.value = opt.value;
			slt.style.display = "";
			slt.SourceObj.setHideFormValue(slt);
		}
		else
			slt.style.display = "none";

		if(slt.onchange)slt.onchange(); //递归调用下级下拉框的onchange事件
	};

	//设置隐藏表单域的值
	this.setHideFormValue = function(obj)
	{
		if(this.init)return;
		if (this.ValueObj == null) return;
		//if(obj.SourceObj.FormFields <= 0)return;
		var val = null;

		if(obj.SourceObj.Obj3.style.display!="none" && obj.SourceObj.Obj3.value!="")
			val = obj.SourceObj.Obj3.value;
		else if(obj.SourceObj.Obj2.style.display!="none" && obj.SourceObj.Obj2.value!="")
			val = obj.SourceObj.Obj2.value;
		else// if(obj.SourceObj.Obj1.style.display!="none" && obj.SourceObj.Obj1.value!="")
			val = obj.SourceObj.Obj1.value;

		if(val!=null) this.ValueObj.value = val;
		//	for (var i=0; i<obj.SourceObj.FormFields.length; i++)
		//		obj.SourceObj.FormFields[i].value = val;
	}

	//清除下拉列表选项的功能函数
	this.clearOpts = function(slt)
	{
		while(slt.options.length>0)
			slt.options.remove(0);
	};

	//数组排序用到的函数
	this.SortFun = function(a,b)
	{
		var aa = a.split(",")[0];
		var bb = b.split(",")[0];
		if(aa.length>bb.length)aa = aa.substr(0,bb.length);
		else bb = bb.substr(0,aa.length);
		if(aa>bb)return 1;
		else if(aa<bb)return -1;
		else if(a.length<b.length)return -1;
		else if(a.length>b.length)return 1;
		else return 0;
	};

	//最后调用初始化函数初始化下拉框
	this.init();
	this.reset();
}


function SetList(sObj, sData)
{
	var i=0;
	var sList = sData.split(";");
	for (i = 0; i < sList.length; i++)
	{
		sItem = sList[i].split(",");
		if (sItem[0].length == 2)
			sObj.add (new Option(sItem[1], sItem[0]));
	}
}

function SetListOption(sObj, sData, sValue)
{
	var i=0;
	var sList = sData.split(";");
	while (sObj.options.length>0)
	{
		sObj.options.remove(0);
	}
	if (sValue.length<1) return ;
	for (i = 0; i < sList.length; i++)
	{
		var sItem = sList[i].split(",");		
		if (sItem[0].substr(0,sValue.length) == sValue || (sValue.indexOf(','+sItem[0]+',')>=0 && sValue.length>3))
		{
			if (sItem[0].length == 2)
			{
				sObj.add (new Option(sItem[1], sItem[0]));
			}
			else if (sItem[0].length == 4)
			{
				sObj.add (new Option("　"+sItem[1], sItem[0]));
			}
			else if (sItem[0].length == 6)
			{
				sObj.add (new Option("　　"+sItem[1], sItem[0]));
			}
		}
	}
}


function MoveOption(sSrcObj, sDestObj, sHideObj, sMaxLength)
{
    if(sSrcObj.value=="00")
    {
        alert("请先选择岗位");	
		return ;
    }
	var i=0;
	if (sDestObj.length+1>sMaxLength)
	{
		alert("超过限制数，您最多只能选"+ sMaxLength+"个");	
		return ;
	}
	for (i = 0; i < sSrcObj.options.length; i++)
	{
		if (sSrcObj.options[i].selected)
		{
			var t=0;
			var sValue = sSrcObj.options[i].value;
			for (t=0; t<sDestObj.options.length; t++)
			{
				if (sDestObj.options[t].value == sValue)
				{
					alert("不能重复选择。");	
					return ;					
				}
			}			
			sDestObj.add(new Option(sSrcObj.options[i].text, sSrcObj.options[i].value));	
		}
	}
	sHideObj.value = ",";
	for (i=0;i<sDestObj.options.length;i++)
	{
		sHideObj.value = sHideObj.value + sDestObj.options[i].value + ",";
	}
}

function DelOption(sSrcObj, sHideObj)
{
	var i=0;
	while(i<sSrcObj.options.length)
	{
		if (sSrcObj.options[i].selected)
			sSrcObj.options.remove(i);
		else
			i=i+1;
	}
	sHideObj.value = "";
	for (i=0;i<sSrcObj.options.length;i++)
	{
		sHideObj.value = sHideObj.value + sSrcObj.options[i].value + ",";
	}	
}

function SelCheck(sObj)
{
	for (var i=0; i<sObj.length;i++)
	{
		sObj[i].checked = true;	
	}
	return false;
}

function Test()
{
	alert("OK");
}