/*
-------------------------------------------------------------------------------
文件名称：cascadeselect.js
存放路径：/agi/common/script/cascadeselect.js
说    明：JavaScript脚本，用于动态生成级联Select框
版    本：	
*/

//去掉左右空格
function Trim(s) 
{ 
	if( s == "" || s == null )
	{
		return "";
	}
	return s.replace(/(^\s*)|(\s*$)/g, ""); 
}  
//去掉左空格
function LTrim(s) 
{ 
	if( s == "" || s == null )
	{
		return "";
	}
	return s.replace(/(^\s*)/g, ""); 
} 
//去掉右空格
function RTrim(s) 
{ 
	if( s == "" || s == null )
	{
		return "";
	}
	return s.replace(/(\s*$)/g, "");
} 

/**
 *	将数据添加到options里
 *	param1: 下拉框的value值  param2:下拉框对应的NAME值 param3:下拉框name或者ID名
*/
function initOptions(valueField,textField,selectName)
{
	if( valueField == "" && valueField.length<=0)
    {
		return;   
    }else
    {
		for( var i = 0; i < valueField.length; i++ ) 
		{
			var name = textField[i];
	 		var value = valueField[i];
	 		var ops = document.all(selectName).options;
	 		var	length = ops.length;
			ops[length]=new Option(name,value);		
		}
	}
}	

/**
 *	移除select中数据
 *	param1: 要移除的下拉框name或者ID
*/
function removeAllSelectOption(selectName)
{
	    for (var j = document.all(selectName).options.length - 1; j >= 1; j--)
    {
   	    document.all(selectName).remove(j);	     
    }       
}

/**
 * 初始化父下拉框
 * @param childName 父下拉框ID
 */
function initSelect(childName)
{
	if( childName == "" || childName == null )
	{
		alert("父下拉框中【id】属性为空，请配置！");
		return;
	}
	var action = "";                                                  //调用逻辑路径
	var bizMethod = "";                                               //调用方法名
	var valueFieldName = Trim(document.all(childName).valueField);    //返回的value值   对应SQL中结果集字段
	var textFieldName = Trim(document.all(childName).textField);      //显示的值         对应SQL中结果集字段
	var sql = Trim(document.all(childName).sql);                      //sql  sql参数不为空时  bizAction和bizMethod不生效

	if( valueFieldName == "" || valueFieldName == null )
	{
		alert("下拉框【"+childName+"】中【valueField】属性为空，请配置！");
		return;
	}
	if( textFieldName == "" || textFieldName == null )
	{
		alert("下拉框【"+childName+"】中【textFieldName】属性为空，请配置！");
		return;
	}
	
	if( sql == "" || sql == null )
	{
		action = Trim(document.all(childName).bizAction);
		bizMethod = Trim(document.all(childName).bizMethod);
		if( action == "" || action == null )
		{
			alert("下拉框【"+childName+"】中【bizAction】属性为空，请配置！");
			return;
		}
		if( bizMethod == "" || bizMethod == null )
		{
			alert("下拉框【"+childName+"】中【bizMethod】属性为空，请配置！");
			return;
		}
	}else                                                       //固定执行SQL的逻辑和方法
	{
		action = "org.agi.tag.richclient.InitCascadeSelect";
		bizMethod="initSelectBySql";		
	}
	
	//隐藏提交
	var sub = new AjaxSubmit(action,bizMethod);
	sub.add("TEMP/SQL",sql);
	if(sub.submit())
	{
		var valueField = sub.getValues("root/data/"+valueFieldName+"");        //得到SQL结果集中value字段值 
		var textField = sub.getValues("root/data/"+textFieldName+"");          //得到SQL结果集中显示字段值
		if( valueField == "" || valueField == null )
		{
			if( sql == "" || sql == null )
			{
				alert("初始化根下拉框时没有查询出数据，请检查类名【"+action+"】方法名【"+bizMethod+"】");
				return;
			}else
			{
				alert("初始化根下拉框时没有查询出数据，请检查sql是否正确");
				return;				
			}
		}    	 
		initOptions(valueField,textField,childName);                           //调用initOptions  将数据添加到options里
	}
}

/**
 * 初始化子下拉框
 * @param obj 父拉框
 */
function refreshChild_DS(obj)
{
	var parentSelectId = Trim(obj.id);                                //得到父下拉框ID值
	var parentValue = Trim(obj.value);                                //得到父下拉框选中值
	var childName = Trim(obj.childSelectId);                          //得到父下拉框中childSelectId的值
	if( childName == "" || childName == null )
	{
		//alert("没有找到子下拉框,请检查父下拉框【"+parentSelectId+"】中childSelectId是否配置！");
		return;
	}
	var action = "";                                                  //调用逻辑路径
	var bizMethod = "";                                               //调用方法名
	var valueFieldName = Trim(document.all(childName).valueField);    //返回的value值   对应SQL中结果集字段
	var textFieldName = Trim(document.all(childName).textField);      //显示的值         对应SQL中结果集字段
	var sql = Trim(document.all(childName).sql);                      //sql  sql参数不为空时  bizAction和bizMethod不生效  子下拉框中的与glidName配合使用
    var glidName = Trim(document.all(childName).glidName);            //查询子下拉框时  sql配置不为空时  作为关联字段追加到where条件后面   glidName='父下拉框选中的值'

	if( valueFieldName == "" || valueFieldName == null )
	{
		alert("下拉框【"+childName+"】中【valueField】属性为空，请配置！");
		return;
	}
	if( textFieldName == "" || textFieldName == null )
	{
		alert("下拉框【"+childName+"】中【textFieldName】属性为空，请配置！");
		return;
	}

	if( sql == "" || sql == null )
	{
		action = Trim(document.all(childName).bizAction);
		bizMethod = Trim(document.all(childName).bizMethod);
		if( action == "" || action == null )
		{
			alert("下拉框【"+childName+"】中【bizAction】属性为空，请配置！");
			return;
		}
		if( bizMethod == "" || bizMethod == null )
		{
			alert("下拉框【"+childName+"】中【bizMethod】属性为空，请配置！");
			return;
		}
	}else                                                       //固定执行SQL的逻辑和方法
	{
		action = "org.agi.tag.richclient.InitCascadeSelect";
		bizMethod="initSelectBySql";
		
		if( glidName == "" || glidName == null )
		{
			sql = " select * from ("+sql+")lin where 1=1 "	        //重新组装SQL			
		}else
		{
			sql = " select * from ("+sql+")lin where 1=1 and lin."+glidName+"='"+parentValue+"'"	        //重新组装SQL	  追加glidName  where条件
		}
	}

	removeAllSelectOption(childName);
	//隐藏提交
	var sub = new AjaxSubmit(action, bizMethod);
	sub.add("TEMP/SQL",sql);
	sub.add("TEMP/PARENTVALUE",parentValue);
	
	if( sub.submit() )
	{
		var valueField = sub.getValues("root/data/"+valueFieldName+"");      //得到SQL结果集中value字段值       
		var textField = sub.getValues("root/data/"+textFieldName+"");        //得到SQL结果集中显示字段值 
		if( valueField == "" || valueField == null )
		{
			return;
		}   	 
		initOptions(valueField,textField,childName);         //调用initOptions  将数据添加到options里
	}
}


