/*
=========================================================
 Version: Jax 0.5
 Date: 2006-5-1
 Script Written by Utoper Jax Group
 Copyright (C) 2006 Utoper Corp. All rights reserved.
 Web: http://Jax.Utoper.com
 Email: UtoJax@163.com
=========================================================
******************************************************************
** 名: bind  属于JFC － Jax Foundation Class
** 创建：welsham 2006-7-8  修改: welsham 2006-7-8
** 描述: parser之绑定模块，绑定数据和界面控件，如列表数据绑定
** 修改描述: 
******************************************************************
*/

//**************初始化parser对象和bind对象*************************
if(typeof parser != "object") { var parser={}; }
if(typeof parser.bind != "object") { parser.bind={}; }

//**************列表绑定******************************************
parser.bind.bindList=function(o,_value)
{
	var i;
	for(i=0;i<o.length;i++)
	{
		if(o.options[i].value==_value) o.options[i].selected=true;
	}
};

//**************单选和多选框绑定************************************
//参数：_oName-对象的name；_value-值如"1, 2",用“, ”分隔多值
parser.bind.bindBox=function(_oName,_value,_disableOther)
{
	var i, boxs;
	boxs = document.getElementsByName(_oName);
	if ( _value.indexOf(", ") == -1 && _value.indexOf(",") >=0 ) _value = _value.replace(new RegExp(",", "g"), ", ");	
	_value = " " + _value + ",";	
	for(i=0;i<boxs.length;i++)
	{
		if ( _value.indexOf(" "+boxs[i].value+",") != -1 ) boxs[i].checked = true;
		else
		{
			boxs[i].checked = false;
			if(_disableOther) boxs[i].disabled = true;
		}
	}
};

//**************列表数据填充绑定************************************
//参数：DD-数据字典；_key-填充键如"1, 2",用“, ”分隔多值;list节点对象,索引2源对象，索引3为对应对象
parser.bind.fillList=function(DD,_key)
{
	if(_key.length==0) return false;
	var i,j,toO=arguments[2],aboutO=arguments[3];
	var keys=_key.split(","),key,text;	
	for(i in keys)
	{
		key=trim(keys[i]);
		if(DD=="")
		{
			for(j=0;j<aboutO.options.length;j++)
			{
				if(aboutO.options[j].value==key) text=	aboutO.options[j].text;
			}
		}
		else
		{
			_key=key;
			if(!DD[_key]) continue;
			text=DD[_key].value;
			while(DD[_key].parent&&DD[_key].parent!="0")
			{
				_key=DD[_key].parent; text = DD[_key].value+">>"+text;
			}
		}
		toO.options[toO.length]=new Option(text,key);
	}
	parser.init.compareList(aboutO,toO);
};
//**************获取DD的名称************************************
parser.bind.bindInnerHTML=function(_id,DD,_key)
{
	if(_key.length==0) return false;
	var i,keys=_key.split(","),key,text,fullText="";
	for(i in keys)
	{
		key=trim(keys[i]);
		_key=key; text = DD[_key].value;
		while(DD[_key].parent&&DD[_key].parent!="0")
		{
			_key=DD[_key].parent; text = DD[_key].value+">>"+text;
		}
		fullText += text+"<br>"
	}
	$(_id).innerHTML=fullText;
};
//**************检测值是否包含在字符串中**************************
//_val：如"1, 2"，检测__val是否在_val中；_view：显示与否
parser.bind.checkValue=function(_val,__val,_view)
{
	_val = " "+_val+",";
	__val= " "+__val+",";
	if(_val.indexOf(__val)>=0)
	{	if(_view) document.write("√"); return true;	}
	else
	{	if(_view) document.write("×"); return false;	}
};

//**************发布时的字段绑定**************************
parser.bind.bindCommon=function(_bindList,_noCovHtmlID)
{
	var id,i,len=$("__data").childNodes.length;
	for(i=0;i<len;i++)
	{
		id=$("__data").childNodes[i].id;
		id=id.substring(2,id.length);
		if(!$(id)) continue;
		switch($(id).nodeName.toLowerCase())
		{
			case "input":
			{
				switch($(id).type.toLowerCase())
				{
					case "text":
					case "hidden":{ $(id).value=$$("__"+id);break; }
					case "radio":
					case "checkbox":{ parser.bind.bindBox(id,$$("__"+id));break; }
				}
				break;
			}
			case "textarea":
			{
				if(_noCovHtmlID && _noCovHtmlID.indexOf(id) != -1 )
				{
					$(id).value=$$("__"+id);
				}
				else
					$(id).value=unCovHtml($$("__"+id));
				break;
			}
			case "select":{if(_bindList) parser.bind.bindList($(id),$$("__"+id));break;}
			case "span":{ $(id).innerHTML=$$("__"+id);break; }
			case "div":{ $(id).innerHTML=$$("__"+id);break; }
		}	
	}
};