
/*
功能：	根据代码表数组初始化SELECT
参数：	rsel:Select控件；
		raCode:代码表数组（二维数组，分别为值和描述）；
返回值： 无
*/
function initSelect(rsel, raCode) {
	var oSelOpt;
	var i;

	for(i = 0; i < raCode[0].length; i++ ){
		oSelOpt = new Option(raCode[1][i], raCode[0][i]);
		rsel.add(oSelOpt);
	}
}

/*
功能：	根据代码表数组产生并输出SELECT的HTML代码
参数：	rsName:Select控件的名称；
		raCode:代码表数组（二维数组，分别为值和描述）；
		rsWidth:SELECT宽度；
		rsOnChange:OnChange事件中调用的代码；
		rsNullDesc:第一个值的描述（空值的描述）；
返回值： 无
*/
function writeSelect(rsName, raCode, rsWidth, rsOnChange, rsNullDesc) {
	var sOutput;
	var i;
	var oselThis;
	
	if (!('undefined' == typeof(rsOnChange))) {
		sOutPut = '<select ' + 'name="' + rsName + '" onchange="' + rsOnChange + '"';
	} else {
		sOutPut = '<select ' + 'name="' + rsName + '" ';
	}
	//alert(sOutPut);

	if (!('undefined' == typeof(rsWidth)) ) {
		if (rsWidth != '') {
			sOutPut = sOutPut + ' style="width:' + rsWidth + '"';
		}
	}
	sOutPut = sOutPut + ' class="text-form1">';

	//如果输入了第一个值的描述，则将其作为第一个选项（值为0）
	if (4 < writeSelect.arguments.length && (!(typeof(rsNullDesc)=='undefined'))) {
		sOutPut = sOutPut + '<option value="0">' + rsNullDesc + '</option>'
	}
	for(i = 0; i < raCode[0].length; i++ ){
		sOutPut = sOutPut + '<option value="' + raCode[0][i] + '">' + raCode[1][i] + '</option>'
	}
	sOutPut = sOutPut +  '</select>'
	document.write(sOutPut);

	//如果ONCHANGE不为空，则创建SELECT以后触发该事件
	oselThis = getObject(rsName);
	var sEvtStr = oselThis.onchange;
	if(sEvtStr != null) {
		//屏蔽该调用，因为在构造该SELECT后，其ONCHANGE中有可能会调用到尚未建立的对象（比如二级的SELECT对象）
		//oselThis.onchange(); 
	}
}

/*
功能：	根据代码表数组产生并输出SELECT的HTML代码
参数：	rsName:Select控件的名称；
		raCode:代码表数组（二维数组，分别为值和描述）；
		rsWidth:SELECT宽度；
		rsOnChange:OnChange事件中调用的代码；
		rsNullDesc:第一个值的描述（空值的描述）；
		rsSelected:修改时，选中的值
返回值： 无
*/
function writeSelected(rsName, raCode, rsWidth, rsOnChange, rsNullDesc, rsSelected ) {
	var sOutput;
	var i;
	var oselThis;
	
	if (!('undefined' == typeof(rsOnChange))) {
		sOutPut = '<select ' + 'name="' + rsName + '" onchange="' + rsOnChange + '"';
	} else {
		sOutPut = '<select ' + 'name="' + rsName + '" ';
	}
	//alert(sOutPut);

	if (!('undefined' == typeof(rsWidth)) ) {
		if (rsWidth != '') {
			sOutPut = sOutPut + ' style="width:' + rsWidth + '"';
		}
	}
	sOutPut = sOutPut + ' class="text-form1">';

	//如果输入了第一个值的描述，则将其作为第一个选项（值为0）
	if (4 < writeSelected.arguments.length && (!(typeof(rsNullDesc)=='undefined'))) {
		if ('' != rsNullDesc) {
			sOutPut = sOutPut + '<option value="0">' + rsNullDesc + '</option>';
		}
	}
	for(i = 0; i < raCode[0].length; i++ ){
		if(!('undefined' == typeof(rsSelected)) && rsSelected != '' && raCode[0][i] == rsSelected )
		{
		   sOutPut = sOutPut + '<option value="' + raCode[0][i] + '" SELECTED >' + raCode[1][i] + '</option>'
	    }
	    else
	    {
	        sOutPut = sOutPut + '<option value="' + raCode[0][i] + '">' + raCode[1][i] + '</option>'
	    }
	}
	sOutPut = sOutPut +  '</select>'
	document.write(sOutPut);

	//如果ONCHANGE不为空，则创建SELECT以后触发该事件
	oselThis = getObject(rsName);
	var sEvtStr = oselThis.onchange;
	if(sEvtStr != null) {
		//屏蔽该调用，因为在构造该SELECT后，其ONCHANGE中有可能会调用到尚未建立的对象（比如二级的SELECT对象）
		//oselThis.onchange(); 
	}
}

/*
功能：	改变一级选项时设置二级选项的显示
参数：	rsel1:一级Select控件；
		rsel2:二级Select控件；
		raCode1:一级代码表数组（二维数组，分别为值和描述）；
		raCode2:二级代码表数组（三维数组，分别为值、描述以及父类值）；
返回值： 无
*/
function changeSelect(rsel1, rsel2, raCode1, raCode2) {
	var nSelectCnt;
	//清除原有二级选项内容
	clearSelectOpt(rsel2);
	
	//设置二级SELECT的显示
	setSelectLevel2(rsel2, rsel1.value, raCode2)
}

/*
功能：	按父代码的值设置当前SELECT控件的显示
参数：	rsel:二级Select控件；
		rnParent:父代码值；
		raCode:二级代码表数组（三维数组，分别为值、描述以及父类值）；
返回值： 无
*/
function setSelectLevel2(rsel, rnParent, raCode) {
	var i;
	var oSelOpt;
	//循环取所有二级代码值
	oSelOpt = new Option("选择", "");
	rsel.add(oSelOpt);
	
	if("undefined"!=typeof(raCode[2])){
		for(i = 0; i < raCode[0].length; i++ ){
			//当前代码的父类值与父代码值相同时，插入当前代码值到二级SELECT中
			if (rnParent == raCode[2][i])
			{
				oSelOpt = new Option(raCode[1][i], raCode[0][i]);
				rsel.add(oSelOpt);
			}
		}
	}
}

/*
功能：	清除SELECT内容
参数：	rsel:Select控件；
返回值： 无
*/
function clearSelectOpt(rsel){
	len=rsel.length;
	for (i = 0; i < len; i ++){
		rsel.options[0]=null;
	}
}

function getObject(sIdFlag) {
    var tBtn
	
	tBtn = document.getElementById(sIdFlag);
	return tBtn
}


/*
功能：	根据给定的数值范围产生并输出SELECT的HTML代码
参数：	rsName:Select控件的名称；
		rnStart:开始数值；
		rnEnd:结束数值；
		rsWidth:SELECT宽度；
		rsOnChange:OnChange事件中调用的代码；
		rsNullDesc:第一个值的描述（空值的描述）；
返回值： 无
*/
function writeNumberSelect(rsName, rnStart, rnEnd, rsWidth, rsOnChange, rsNullDesc) {
	var sOutput;
	var i;
	var oselThis;

	//设置onchange事件
	if (!('undefined' == typeof(rsOnChange))) {
		sOutPut = '<select ' + 'name="' + rsName + '" onchange="' + rsOnChange + '"';
	} else {
		sOutPut = '<select ' + 'name="' + rsName + '" ';
	}
	
	//设置宽度
	if (!('undefined' == typeof(rsWidth)) ) {
		if (rsWidth != '') {
			sOutPut = sOutPut + ' style="width:' + rsWidth + '"';
		}
	}

	sOutPut = sOutPut + ' class="text-form1">';

	//如果输入了第一个值的描述，则将其作为第一个选项（值为0）
	if (5 < writeNumberSelect.arguments.length && (!(typeof(rsNullDesc)=='undefined'))) {
		sOutPut = sOutPut + '<option value="0">' + rsNullDesc + '</option>'
	}

	if (rnStart < rnEnd) {
		//从小到大
		for (i=rnStart; i<=rnEnd; i++) {
			sOutPut = sOutPut + '<option value="' + i + '">' + i + '</option>'
		}
	} else {
		//从大到小
		for (i=rnStart; i>=rnEnd; i--) {
			sOutPut = sOutPut + '<option value="' + i + '">' + i + '</option>'
		}
	}
	
	sOutPut = sOutPut +  '</select>'
	document.write(sOutPut);
}


    function changeCountry(sltParent,sltChild,sltChild2){
		var nCountryCode = sltParent.value;
        if(""==nCountryCode || 0==nCountryCode){
            clearSelectOpt(sltChild);
			if("undefined"!=typeof(sltChild2)){
				clearSelectOpt(sltChild2);
			}
            return ;
        }
        var aProvinceCode = eval("aProvinceCode_"+nCountryCode);
        var aCityCode = eval("aCityCode_"+nCountryCode);
        clearSelectOpt(sltChild);
        //循环取所有二级代码值
        oSelOpt = new Option("选择", "");
        sltChild.add(oSelOpt);
        for(i = 0; i < aProvinceCode[0].length; i++ ){
            oSelOpt = new Option(aProvinceCode[1][i], aProvinceCode[0][i]);
            sltChild.add(oSelOpt);
        }
		if("undefined"!=typeof(sltChild2)){
			oSelOpt = new Option("选择", "");
			sltChild2.add(oSelOpt);
	        clearSelectOpt(sltChild2);
			sltChild.onchange=function (){
				 changeSelect(sltChild, sltChild2, aProvinceCode, aCityCode)	
			}
		}
    }

function getSelectHTML(rsName, raCode, rsWidth, rsNullDesc) {
	var sOutput;
	var i;
	var oselThis;
	
	sOutPut = '<select ' + 'name="' + rsName + '" ';

	if (!('undefined' == typeof(rsWidth)) ) {
		if (rsWidth != '') {
			sOutPut = sOutPut + ' style="width:' + rsWidth + '"';
		}
	}
	sOutPut = sOutPut + ' class="text-form1">';

	//如果输入了第一个值的描述，则将其作为第一个选项（值为0）
	if (3 < getSelectHTML.arguments.length && (!(typeof(rsNullDesc)=='undefined'))) {
		sOutPut = sOutPut + '<option value="0">' + rsNullDesc + '</option>'
	}
	for(i = 0; i < raCode[0].length; i++ ){
		sOutPut = sOutPut + '<option value="' + raCode[0][i] + '">' + raCode[1][i] + '</option>'
	}
	sOutPut = sOutPut +  '</select>';
	return sOutPut;
}