/**
* 显示Select控件的所有选项。原有的选项会首先清除。
* param objSelect Select控件对象
* param arrData  存放选项数据的数组，数据次序必须是，数组元素的前两项数据的次序必须是“选项的Text”、“选项的Value”。
* 				数组元素的可以只有一项数据，此时“选项的Value”和“选项的Text”使用同一数据。如果数组元素的数据项
*				多于两个，则其他数据项均忽略。
* param needAll 指出是否需要在所有的选项前增加一个“<<全部>>”的选项，该选项的Value是""。只有参数的值是
				NEEDALL（不分大小写）时，才自动增加全部选项，为空或者其他任何值，则不增加全部选项。
* param initValue Select控件的初始选项的value
*/
function showOptions(objSelect,arrData, needAll,initValue){
	if (objSelect == null) {		// 如果Select控件为空，则返回
		return;
	}
	if (arrData == null || arrData.length == 0) {	// 如果选项数据数组的为空，则返回
		return;
	}
	if (arrData[0].length == 0) {		// 如果数组中的选项数据为空，则返回
		return;
	}
	
	var textIsValue = false;				// Text和value是否相同
	if (arrData[0].length == 1) {
		textIsValue = true;
	}

	objSelect.options.length = 0;					// 清除已有选项
	
	if (needAll.toUpperCase() == "NEEDALL") {		// 增加“全部”选项
		objSelect.options[0] = new Option("<<全部>>","");
	}
	if (needAll.toUpperCase() == "NEEDEMPTY") {		// 增加“空”选项
		objSelect.options[0] = new Option("","");
	}
	if (needAll.toUpperCase() == "NONE") {		// 增加“不限”选项
		objSelect.options[0] = new Option("不限","不限");
	}

	for (var i = 0; i < arrData.length; i++) {		// 遍历所有的选项数据
		var value = arrData[i][0];
		var text = value;
		if (textIsValue == false ){
			text = arrData[i][1];
		}
		var objOption = new Option(text, value);			// 创建一个新的选项
		var index = objSelect.options.length;
		objSelect.options[index] = objOption;				
//		if (initValue != null && initValue == value) {		//比较是否是初始值
		//	objSelect.options[index].selected = true;
//		}
		//add by sungr	
		//alert("initValue "+initValue);
		if ((initValue != null && initValue == value) || (initValue != null && initValue == text)) {		//比较是否是初始值
			objSelect.options[index].selected = true;
		}

	}
}

/**
* 显示Select控件的所有联动选项。原有的选项会首先清除。
* param objSelect Select控件对象
* param arrData  存放选项数据的数组，每个数组元素包含两个一维数组，第一个数组存放需要匹配的联动值，可以是多个联动值。
				第二个存放选项数据，数据次序必须是，数组元素的前两项数据的次序必须是“选项的Text”、“选项的Value”。
* 				数组元素的可以只有一项数据，此时“选项的Value”和“选项的Text”使用同一数据。如果数组元素的数据项
*				多于两个，则其他数据项均忽略。
* param needAll 指出是否需要在所有的选项前增加一个“<<全部>>”的选项，该选项的Value是""。只有参数的值是
				NEEDALL（不分大小写）时，才自动增加全部选项，为空或者其他任何值，则不增加全部选项。
* param arrLinkedValue 从arrData中过滤选项数据的条件数据数组
* param initValue Select控件的初始选项的value
*/
function showLinkedOptions(objSelect,arrData, needAll, arrLinkedValue, initValue){
	
	if (objSelect == null) {		// 如果Select控件为空，则返回
		return;
	}
	if (arrData == null || arrData.length == 0) {	// 如果选项数据的数组为空，则返回
		return;
	}
	if (arrData[0].length != 2) {		// 选项数据的数组元素必须是一个长度为2，否则返回
		return;
	}
	var textIsValue = false;			// 每个选项的Text和Value是否一样
	if (arrData[0][1].length == 1) {
		textIsValue = true;
	}
	
	//while (objSelect.options.length > 0 ) objSelect.options.remove(0);
	clearOptions(objSelect);		// 清除Select控件的原有的选项

	if (needAll.toUpperCase() == "NEEDALL") {		// 增加“全部”选项
		objSelect.options[0] = new Option("<<全部>>","");
	}
	//added by tyh
	if (needAll.toUpperCase() == "NEEDEMPTY") {		// 增加“全部”选项
		objSelect.options[0] = new Option("","");
	}
	if (needAll.toUpperCase() == "NONE") {		// 增加“不限”选项
		objSelect.options[0] = new Option("不限","不限");
	}
	//alert();
	for (var i = 0; i < arrData.length; i++) {		// 遍历选项数组
		if (arrLinkedValue != null && arrLinkedValue.length == arrData[i][0].length) {		// 该选项是否满足联动条件
			var matched = true;
			for (var j =0; j < arrLinkedValue.length; j++) {
				if (arrData[i][0][j] != arrLinkedValue[j]) {
					matched = false;
					
					break;
				}
			}
			
			if (matched == false) continue;		// 如果不满足联动条件，则继续下一个
			
			var value = arrData[i][1][0];			// 获取Text和value
			var text = value;
			if (textIsValue == false ){
				text = arrData[i][1][1];
			}
			var objOption = new Option(text, value);   // 创建一个新的选项
			var index = objSelect.options.length;
			objSelect.options[index] = objOption;

			if ((initValue != null && initValue == value) || (initValue !=null && initValue == text)) {  // 是否是初始值
				objSelect.options[index].selected = true;
			}

		}
	}
	//alert(objSelect.length);
	
}

/**
* 清除Select控件的原有的选项
*
*/
function clearOptions(objSelect){
	objSelect.options.length = 0;		
	objSelect.options[0] = new Option("TEMP","");
	objSelect.options.remove(0);
}
