// JavaScript Document
/*
 * 输出处理对象
 * 加载前需要导入 dataxml.class.js xmlRequest.class.js
 * 多 output 同时使用时 应该注意 逐一加载调用 否则会出现 因为xml 导入时间不同 产生的问题
 * selectID 为选择 的ID 号 参数 或字段 注意不要冲突
 * 
 * 081029 类改新写法
 */
//var self
var output = Class.create();    
Object.extend(output.prototype, xmlRequest.prototype);    
Object.extend(output.prototype, {    
	initialize: function() {    
		//self=this;
	} ,
	outputObj : null, //输出显示对象 类似$('ID')或者是 documentgetElementByID('ID')做表单填充时是表单名
	dataxml : '' , // 加载数据源 如 /jsd/webManage/dataxml.php?type=list
	listFieldName : new Array(),  // 列表显示参数 字段名称 xmlnode名称 数组 路 listFieldName[0]='ID'
	listTitleName : new Array(),	// 列表显示参数 字段标题 数组 路 listTitleName[0]='ID'
	listReplaceStr : new Array(),	//normal 显示时候的列表项替代标记,该项为空时,默认为 <!--fieldName-->
	reListStr:'', //循环体 字符串
	type : '',	//输出类型 一般为 调用函数名
	fnName : null,	//输出完毕后调用函数
	xmlObj : null , // xml文档对象
	option :new Array(), // 列表调用函数及参数 如 option[0]='del(ID,sortID)'
	optionName :new Array(), // 调用函数 显示
	listXmlNode : 'list', //列表基本节点名称
	amount : 0 , //列表显示条数 0 为不限制 显示条数等于 xml数据源条数
	formElementName : new Array(), //表单填充元素名称数组 例如 formElementName[0]='name'
	fieldReplace : new Array(), // 字段替代字符串 '' 为不替代 fieldReplace 为替代部分 比如ID值为38 替代字符串 <span style="cursor:pointer" onclick="plice(ID,sortID)">fieldReplace</span> 最终为 <span style="cursor:pointer" onclick="plice('38',sortID)">38</span> 
	fieldDisposal : new Array(),// 字段值预处理 字段处理后 再做输出调用
	strReplace : '', // 整体字符串 替代 处理 selectoption 这类 有xml 或数组数据处理完后还有处理字符串的情况
	keyword : 'list', // 关键字 生成 div ID 为 keyword + i(循环 或者是 区分其他的 数字或字符串)
	// 翻页按钮部分显示 
	pageButton : new Array('','','','',''), // 按钮设置 分别是 首页 前翻 页面按钮 后翻 尾页 默认为 << < 1 > >> [0][1][3][4] 直接替换 [2] 为根据相应数字处理的函数名
	pageButtonAction : new Array('','','','',''),//按钮动作 如果后面按钮 为空 或者不存在 取pageButtonAction[0]
	pageSize : 10,//  翻页显示
	thisPage : 1,
	pageButtonNum : 2,// page 按钮的数量 半径 2 相当于最多显示 5个  
	pageCount:0,	// page的总数 可以xml 文档读 也可以 根据pagecount 来设置
	inster : new Array(), // 插入 主要是用在tableList上
	onloadFn : 'displayFn', //读取完 加载 的 function 
	outputStr : '', ///返回 output字符串 
	
	//主调用函数
	display :function (){
		try{
			this.loadXml(this.dataxml);
		}catch(e){
			alert("output.display():"+e);
			return false;
		}
	},
	//
	displayFn : function(xmlobj){
		try{
			//alert(typeof(xmlobj));
//			/alert(xmlobj.getElementsByTagName(this.listXmlNode).length);
//			alert(this.type);
//			alert(this.listXmlNode);
			this.xmlObj=xmlobj;
			//eval('this.'+this.type+'()');
			//var self=arguments.callee;
			//alert('this.'+this.type+'()')
			if(eval('this.'+this.type+'()'))if(typeof(this.fnName)=='function')this.fnName();
			//if(typeof(this.fnName)=='function')window.setTimeout(this.fnName(),100);
			//if(typeof(this.fnName)=='function')this.fnName();
		}catch(e){
			alert("output.displayFn():"+e);
			return false;
		}
	},
	//简单列表
	easyList : function (){
		try{
			//alert('easyList');
			var str='';
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
//			try{
//				var sql=this.xmlObj.getElementsByTagName("sql");
//				alert (sql[0].firstChild.data);
//			}catch(e){}
			//alert(nodes.length);
			var n=0;
			if (this.amount == 0) {
				n = nodes.length;
			}else{
				n=nodes.length<this.amount?nodes.length : this.amount ;
			}
			for(var i=0;i<n;i++){
				str+='<div id=\"'+this.keyword+'_'+i+'\" class=\"list\">';
				for(var j=0;j<this.listFieldName.length;j++){
					if(j>0)str+='&nbsp;&nbsp;';
					// 取值预处理 不能处理 复杂字符串 
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[j]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[j]!='' && this.fieldDisposal[j]!=null)strTemp=eval(this.fieldDisposal[j]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					// 是否要替换
					if(this.fieldReplace.length==0){
						//str+=dataxml.getNodeValue(nodes[i],output.listFieldName[j]);
						str+=strTemp;
					}else{
						if(this.fieldReplace[j]=='' || this.fieldReplace[j]==null){
							//str+=dataxml.getNodeValue(nodes[i],output.listFieldName[j]);
							str+=strTemp;
						}else{
							if(dataxml.getNodeValue(nodes[i],this.listFieldName[j])!=false)str+=this.getFnStr(this.fieldReplace[j].replace(/fieldReplace/g,strTemp),nodes[i],i);
						}
					}
				}
				if(this.option.length>0){
					str+='&nbsp;&nbsp;';
					for(var j=0;j<this.option.length;j++){
						if(j>0)str+='&nbsp;&nbsp;';
						str+='<span class=\"listOption\" onclick=\"';
						str+=this.getFnStr(this.option[j],nodes[i],i);
						str+='\">[ '+this.optionName[j]+' ]</span>';
					}
				}
				str+='</div>';
			}
			//alert(str);
			
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.easyList():"+e);
			return false;
		}
	},
	//返回 option 显示字符串
	getFnStr : function(optionStr,node,selectID){
		try{
			var re=/\({1}[\,\w]*\){1}/ig;
			var r=optionStr.match(re);
			if(r==null) return optionStr;
			if(r.length>0){
				for (var i = 0; i < r.length; i++) {
					var temp=r[i].substring(1,r[i].length-1);
					var arguments=temp.split('\,');
					for(var j=0;j<arguments.length;j++){
						if (arguments[j]=='selectID'){
							arguments[j]=selectID;
							continue;
						}
						if(dataxml.getNodeValue(node,arguments[j])!==false){
							arguments[j]='\''+dataxml.getNodeValue(node,arguments[j])+'\'';
						}
					}
					optionStr=optionStr.replace(r[i],'('+arguments.join(',')+')');
				}					
			}
			return optionStr;
		}catch(e){
			alert("output.getFnstr():"+e);
			return false;
		}
	},
	//填充表单
	fillForm : function(){
		try{
			if(this.listFieldName.length>0){
				var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
				//alert(nodes.length);
				if(nodes.length<1)return;
				if(this.formElementName.length==0)this.formElementName=this.listFieldName;
				for(var i=0;i<this.listFieldName.length;i++){
					//alert(i)
					// 取值预处理 不能处理 复杂字符串 
					var strTemp=dataxml.getNodeValue(nodes[0],this.listFieldName[i]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[i]!='' && this.fieldDisposal[i]!=null)strTemp=eval(this.fieldDisposal[i]+'(\''+strTemp+'\',nodes[0])');
					}
					if(this.fieldReplace.length>0){
						if(this.fieldReplace[i]!='' && this.fieldReplace[i]!=null)strTemp=this.getFnStr(this.fieldReplace[i].replace(/fieldReplace/g,strTemp),nodes[0]);
					}
					if(dataxml.getNodeValue(nodes[0],this.listFieldName[i])!==false || $(this.formElementName[i])!=null){
						this.setFormValue(this.formElementName[i],dataxml.getNodeValue(nodes[0],this.listFieldName[i]),strTemp);
					}
					//alert('');
				}
			}
			return true;
		}catch(e){
			alert("output.fillForm():"+e);
			return false;
		}
	},
	// value 和 valueDisposal 为值和处理后的值
	setFormValue : function(name,value,valueDisposal){
    	try{
			var forms=this.outputObj.elements;
        	for(var i=0;i<forms.length;i++)
        	{
        		if(forms[i].name==name){
           		 	//复选框
            		if(forms[i].type=="checkbox"){ 
						var values=value.split(',');
						forms[i].checked = false;
						for(var j=0;j<values.length;j++){
							if(forms[i].value==values[j])forms[i].checked=true;
						}
              	  	}
					//单选按钮
              	 	if(forms[i].type=="radio"){                                
              	  		forms[i].checked = false;
						if(forms[i].value==value){
                    		forms[i].checked=true;        
                		}
               		}
					//输入框
                	if(forms[i].type=="text"||forms[i].type=="hidden" || forms[i].type=="textarea"){
                		forms[i].value=valueDisposal;
						try{$(name+'Display').innerHTML=valueDisposal}catch(e){}
                	}
					//下拉列表
                	if(forms[i].type=="select-one"){
                		for(var j=0;j<forms[i].length;j++){
                    		if(forms[i][j].value==value){
                        		forms[i][j].selected=true;
                        	}
                    	}
                	}
				}
				//check复选框 填值
				if (forms[i].name == (name+"_")) {
					if (forms[i].type == "checkbox") {
						//alert(forms[i].value);
						var values = value.split(',');
						forms[i].checked = false;
						for (var j = 0; j < values.length; j++) {
							if (forms[i].value == values[j]) forms[i].checked = true;
						}
					}
				}
        	}
        	return true;
		}catch(e){
			alert("output.setFormValue():"+e);
			return false;
		}
	},
	//重置表单 exclude 排除 formElements name 数组
	resetForm : function(formObj,exclude){
    	try{
			var forms=formObj.elements;
        	for(var i=0;i<forms.length;i++)
        	{
        		 	if(exclude.inArray(forms[i].name))continue;
					//复选框
            		if(forms[i].type=="checkbox"){ 
						forms[i].checked=false;
					}
					//单选按钮
              	 	if(forms[i].type=="radio"){                                
              	  		forms[i].checked=false;        
                	}
					//输入框
                	if(forms[i].type=="text"||forms[i].type=="hidden" || forms[i].type=="textarea"){
                		forms[i].value="";
                	}
					//下拉列表
                	if(forms[i].type=="select-one"){
                		forms[i].selectedIndex=0;
					}
				
        	}
        	return true;
		}catch(e){
			alert("output.resetForm():"+e);
			return false;
		}
	},
	//简单 详细
	easyDetail : function(){
		try{
			var str='';
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			if(nodes.length<1) return false;
			//alert('');
			for(var i=0;i<this.listFieldName.length;i++){
				str+='<div class=\"list\">'+this.listTitleName[i]+'：';
//				if(output.fieldReplace.length==0){
//					str+=dataxml.getNodeValue(nodes[0],output.listFieldName[i]);
//				}else{
//					if(output.fieldReplace[i]=='' || output.fieldReplace[i]==null){
//						str+=dataxml.getNodeValue(nodes[0],output.listFieldName[i]);
//					}else{
//						if(dataxml.getNodeValue(nodes[0],output.listFieldName[i])!=false)str+=output.getFnStr(output.fieldReplace[i].replace('fieldReplace',dataxml.getNodeValue(nodes[0],output.listFieldName[i])),nodes[0]);
//					}
//				}
				var strTemp=dataxml.getNodeValue(nodes[0],this.listFieldName[i]);
				if(this.fieldDisposal.length>0){
					if(this.fieldDisposal[i]!='' && this.fieldDisposal[i]!=null)strTemp=eval(this.fieldDisposal[i]+'(\''+strTemp+'\',nodes['+i+'])');
				}
				if(this.fieldReplace.length>0){
					if(this.fieldReplace[i]!='' && this.fieldReplace[i]!=null)strTemp=this.getFnStr(this.fieldReplace[i].replace(/fieldReplace/g,strTemp),nodes[0],i);
				}
				str+=strTemp;
				str+='</div>';
				
			}
			if(this.option.length>0){
				str+='<div class=\"list\">';
				for(var j=0;j<this.option.length;j++){
					if(j>0)str+='&nbsp;&nbsp;';
					str+='<span class=\"listOption\" onclick=\"';
					str+=this.getFnStr(this.option[j],nodes[0],i);
					str+='\">[ '+this.optionName[j]+' ]</span>';
				}
				str+='</div>';
			}
			
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.easyList():"+e);
			return false;
		}
	},
	//重置output
	reset :function(){
		this.outputObj=null ;
		this.dataxml='';
		this.listFieldName=new Array();
		this.listTitleName=new Array();
		this.type='';
		this.fnName='';
		this.xmlObj=null;
		this.option=new Array();
		this.optionName=new Array();
		this.listXmlNode='list';
		this.amount= 0;
		this.formElementName= new Array();
		this.fieldReplace=new Array();
		this.fieldDisposal=new Array();
		this.strReplace='';
		this.keyword='list';
	},
	// 根据 xml 返回 select option listFieldName [0] 为显示值 listFieldName [1] 为选择值
	selectOptionXml : function(){
		try {
			//var str='';
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			n = nodes.length;
			//alert (n);
			var str='';
			for(var i=0;i<n;i++){
				str+='';
				var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
				if(this.fieldDisposal.length>0){
					if(this.fieldDisposal[i]!='' && this.fieldDisposal[i]!=null)strTemp=eval(this.fieldDisposal[i]+'(\''+strTemp+'\',nodes['+i+'])');
				}
				if(this.fieldReplace.length>0){
					if(this.fieldReplace[i]!='' && this.fieldReplace[i]!=null)strTemp=this.getFnStr(this.fieldReplace[i].replace(/fieldReplace/g,strTemp),nodes[i],i);
				}
				str+=' <option value=\"'+dataxml.getNodeValue(nodes[i],this.listFieldName[1])+'\">'+strTemp+'</option>';
			}
			//alert(str);
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.selectOptionXml():"+e);
			return false;
		}
	},
	// 树状selectoption
	treeSelectOptionXml : function(){
		try {
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			//alert(nodes.length);
			//alert(this.treeSelectOptionXmlStr(nodes,0,'&nbsp;&nbsp;'));
			//if(this.strReplace=='')this.outputObj.innerHTML=this.treeSelectOptionXmlStr(nodes,0,'&nbsp;&nbsp;')
			//	else this.outputObj.innerHTML=this.strReplace.replace('strReplace',this.treeSelectOptionXmlStr(nodes,0,'&nbsp;&nbsp;'));
			if(this.strReplace=='')this.outputStr=this.treeSelectOptionXmlStr(nodes,0,'&nbsp;&nbsp;')
				else this.outputStr=this.strReplace.replace('strReplace',this.treeSelectOptionXmlStr(nodes,0,'&nbsp;&nbsp;'));
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.treeSelectOptionXml():"+e);
			return false;
		}
	},
	//
	treeSelectOptionXmlStr : function(nodes,ID,spacesStr){
		try{
			var str='';
			for(var i=0;i<nodes.length;i++){
				if (dataxml.getNodeValue(nodes[i], this.listFieldName[2]) == ID) {
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					if(this.fieldReplace.length>0){
						if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
					}
					str+='<option value=\"'+dataxml.getNodeValue(nodes[i],this.listFieldName[1])+'\" >'+spacesStr+strTemp+'</option>';
					if (this.treeHasSub(nodes, dataxml.getNodeValue(nodes[i], this.listFieldName[1]))) {
						str += this.treeSelectOptionXmlStr(nodes, dataxml.getNodeValue(nodes[i], this.listFieldName[1]) ,spacesStr+spacesStr);
					}
				}
				
			}
			return str;
		}catch(e){
			alert("output.treeSelectOptionXmlStr():"+e);
			return false;
		}
	},
	//根据数组返回 select option
	selectOption : function(arr){
		try {
			var str='';
			for(var i=0; i<arr.length ;i++){
				str+=' <option value=\"'+arr[1]+'\">'+arr[i][0]+'</option>';
			}
			return false;
		}catch(e){
			alert("output.select():"+e);
			return false;
		}
	},
	//树状列表 listFieldName 前三项 必须为 name ID parentID
	treeParentID : 0,
	treeList : function (){
		try{
			//alert('');
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			//alert( nodes.length);
			var str=this.treeListStr (nodes,this.treeParentID);
			var str1='';
			if(this.treeParentID){
				
				for (var i = 0; i < nodes.length; i++) {
					if(dataxml.getNodeValue(nodes[i], this.listFieldName[1])==this.treeParentID){
						var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
						if(this.fieldDisposal.length>0){
							if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
						}
						if(this.fieldReplace.length>0){
							if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
						}
					
						str1+='<div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
						if(this.option.length>0)str1+= '('+dataxml.getNodeValue(nodes[i], this.listFieldName[1])+')  ';
						str1+=strTemp;
						if(this.option.length>0){
							str1+='&nbsp;&nbsp;';
							for(var j=0;j<this.option.length;j++){
								if(!this.option[j])continue ;
								if(j>0)str+='&nbsp;&nbsp;';
								str1+='<span class=\"listOption\" onclick=\"';
								str1+=this.getFnStr(this.option[j],nodes[i],i);
								str1+='\">[ '+this.optionName[j]+' ]</span>';
							}
						}
						str1+='</div>';
						
						break;
					}
				}
			}
			if(this.treeParentID){
				str=str1+'<div class=\"treeListSub\">'+str+'</div>';
			}
			//alert(str);
			//document.getElementById('menuList').innerHTML=str;
			//$('menuList').innerHTML=str;
			//this.outputObj.innerHTML=str;
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.treeList():"+e);
			return false;
		}
	},
	// 树状列表返回 是否有下级菜单
	treeHasSub : function (nodes,ID){
		try{
			//alert(nodes.length) ;
			//return false;
			for(var i=0;i<nodes.length;i++){
				if (dataxml.getNodeValue(nodes[i], this.listFieldName[2]) == ID)return true;
			}
			return false ;
		}catch(e){
			alert("output.treeHasSub():"+e);
			return false;
		}
	},
	//树状列表 字符串 返回 
	treeListStr : function (nodes , ID){
		try{
			var str='';
			for(var i=0;i<nodes.length;i++){
				if (dataxml.getNodeValue(nodes[i], this.listFieldName[2]) == ID) {
					//str += output.treeListStr(nodes, 0);
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					if(this.fieldReplace.length>0){
						if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
					}
					str+='<div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
					if(this.option.length>0)str+= '('+dataxml.getNodeValue(nodes[i], this.listFieldName[1])+')  ';
					str+=strTemp;
					if(this.option.length>0){
						str+='&nbsp;&nbsp;';
						for(var j=0;j<this.option.length;j++){
							if(!this.option[j])continue ;
							if(j>0)str+='&nbsp;&nbsp;';
							str+='<span class=\"listOption\" onclick=\"';
							str+=this.getFnStr(this.option[j],nodes[i],i);
							str+='\">[ '+this.optionName[j]+' ]</span>';
						}
					}
					str+='</div>';
					if (this.treeHasSub(nodes, dataxml.getNodeValue(nodes[i], this.listFieldName[1]))) {
						str+='<div class=\"treeListSub\">';
						str += this.treeListStr(nodes, dataxml.getNodeValue(nodes[i], this.listFieldName[1]))
						str+='</div>';
					}
				}
				
			}
			return str;
		}catch(e){
			alert("output.treeListStr():"+e);
			return false;
		}
	},
	// 树状 select 生成 inptu  type=“select”
	treeSelect : function (){
		try{
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			var str=this.treeSelectStr (nodes,this.treeParentID);
			var str1='';
			if(this.treeParentID){
				for (var i = 0; i < nodes.length; i++) {
					if(dataxml.getNodeValue(nodes[i], this.listFieldName[1])==this.treeParentID){
						var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
						if(this.fieldDisposal.length>0){
							if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
						}
						if(this.fieldReplace.length>0){
							if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
						}
					
						str1+='<div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
						if(!this.treeHasSub(nodes, dataxml.getNodeValue(nodes[i], this.listFieldName[1]))){
							str1+='<input name=\"'+this.keyword+'\" type=\"radio\" value=\"'+dataxml.getNodeValue(nodes[i], this.listFieldName[1])+'\" />';
						}
						str1+=strTemp;
						str1+='</div>';
						break;
					}
				}
			}
			if(this.treeParentID){
				str=str1+'<div class=\"treeListSub\">'+str+'</div>';
			}
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.treeList():"+e);
			return false;
		}
	},
	treeSelectStr : function (nodes , ID){
		try{
			var str='';
			for(var i=0;i<nodes.length;i++){
				if (dataxml.getNodeValue(nodes[i], this.listFieldName[2]) == ID) {
					var thisID=dataxml.getNodeValue(nodes[i], this.listFieldName[1]);
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					if(this.fieldReplace.length>0){
						if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
					}
					if (!this.treeHasSub(nodes, thisID)) {
						str+='<div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
						str+='<input name=\"'+this.keyword+'\" type=\"radio\" value=\"'+thisID+'\" />';
						str+=strTemp;
						str+='</div>';
					}else{
						str+='<div style=\"width:100%\"><div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
						str+=strTemp;
						str+='</div></div>';
					}
//					str+='<div id=\"'+this.keyword+'_'+i+'\" class=\"treeList\">';
//					if(!this.treeHasSub(nodes, thisID)){
//						str+='<input name=\"'+this.keyword+'\" type=\"radio\" value=\"'+thisID+'\" />';
//					}
//					str+=strTemp;
//					str+='</div>';
					if (this.treeHasSub(nodes, thisID)) {
						str+='<div class=\"treeListSub\">';
						str+= this.treeSelectStr(nodes, thisID)
						str+='</div>';
					}
				}
				
			}
			return str;
		}catch(e){
			alert("output.treeListStr():"+e);
			return false;
		}
	},
	
	// 表格列表显示 只输出<tr><td>部分 table 由 strReplace 替换生成
	tableList : function (){
		try{
			var bg='';//背景设置参数
			var bg1='';
			var bg2='#f4f4f4';
			var bg3='#ffff99';
			var str='';
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			try{// 返回页面参数信息
				var pageNodes=this.xmlObj.getElementsByTagName('pageinfo');
				this.thisPage=dataxml.getNodeValue(pageNodes[0],'page');
				this.pageSize=dataxml.getNodeValue(pageNodes[0],'pagesize');
				this.pageCount=dataxml.getNodeValue(pageNodes[0],'pagecount');
			}catch(e){}
			//alert(nodes.length);
			var n=0;// 判断一共显示多少行
			if (this.amount == 0) {
				n = nodes.length;
			}else{
				n=nodes.length<this.amount?nodes.length : this.amount ;
			}
			//显示表格title
			if(this.listTitleName.length>0){
				str+='<tr>';
				for(var i=0;i<this.listTitleName.length;i++){
					str+='<td class=\"listTitle\">'+this.listTitleName[i]+'</td>';
				}
				if(this.option.length>0)str+='<td class=\"listTitle\">操 作</td>';
				str+='</tr>';
			}
			if(this.inster[0])str+=this.inster[0];
			//表格列表
			for(var i=0;i<n;i++){
				if(bg!=bg1)bg=bg1;
					else bg=bg2;
				str+='<tr bgcolor=\"'+bg+'\" onMouseOver=\"this.bgColor=\''+bg3+'\'\" onMouseOut=\"this.bgColor=\''+bg+'\'\">';
				for (var j=0;j<this.listFieldName.length;j++){
					str+='<td class=\"list\">';
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[j]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[j]!='' && this.fieldDisposal[j]!=null)strTemp=eval(this.fieldDisposal[j]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					// 是否要替换
					if(this.fieldReplace.length==0){
						str+=strTemp;
					}else{
						if(this.fieldReplace[j]=='' || this.fieldReplace[j]==null){
							str+=strTemp;
						}else{
							if(dataxml.getNodeValue(nodes[i],this.listFieldName[j])!=false)str+=this.getFnStr(this.fieldReplace[j].replace(/fieldReplace/g,strTemp),nodes[i],i);
						}
					}
					str+='</td>';
				}
				if(this.option.length>0){
					str+='<td class=\"listOption\">';
					for(var j=0;j<this.option.length;j++){
						if(j>0)str+='&nbsp;&nbsp;';
						str+='<span class=\"listOption\" onclick=\"';
						str+=this.getFnStr(this.option[j],nodes[i],i);
						str+='\">[ '+this.optionName[j]+' ]</span>';
					}
					str+='</td>';
				}
				str+='</tr>';
			}
			
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.tableList():"+e);
			return false;
		}
	},
	//简易option	listFieldName [0]为显示[1]为value
	easyOption : function (){
		try{
			var str='';
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			for(var i=0;i<nodes.length;i++){
				var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[0]);
				if(this.fieldDisposal.length>0){
					if(this.fieldDisposal[0]!='' && this.fieldDisposal[0]!=null)strTemp=eval(this.fieldDisposal[0]+'(\''+strTemp+'\',nodes['+i+'])');
				}
				if(this.fieldReplace.length>0){
					if(this.fieldReplace[0]!='' && this.fieldReplace[0]!=null)strTemp=this.getFnStr(this.fieldReplace[0].replace(/fieldReplace/g,strTemp),nodes[i],i);
				}
				str+='<option value=\"'+dataxml.getNodeValue(nodes[i],this.listFieldName[1])+'\" >'+strTemp+'</option>';
				
			}
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.easyOption():"+e);
			return false;
		}
	},
	// 翻页按钮 显示 listXmlNode 默认为pageinfo 节点 page 为当前页 pageSize 为页面尺寸 pagecount 为 页面总数
	// 用 fieldReplace 来生成按钮动作
	pageSelectList : function (){
		try{
			//var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			var str='';
			if(this.thisPage>1){
				var firstButton='<div class=\"firstPageButton\"';
				if(this.pageButtonAction[0])firstButton+='onclick=\"'+this.pageButtonAction[0]+'(1)'+'\"';
				firstButton+='>';
				if(this.pageButton[0]) firstButton+=this.pageButton[0];
					else firstButton+='&lt;&lt;';
				firstButton+='</div>';
				str+=firstButton;
				var forwardButton='<div class=\"forwardPageButton\"';
				if(this.pageButtonAction[1])forwardButton+='onclick=\"'+this.pageButtonAction[1]+'('+(this.thisPage-1)+')'+'\"';
					else if(this.pageButtonAction[0])forwardButton+='onclick=\"'+this.pageButtonAction[0]+'('+(this.thisPage-1)+')'+'\"';
				forwardButton+='>';
				if(this.pageButton[1]) forwardButton+=this.pageButton[1];
					else forwardButton+='&lt;';
				forwardButton+='</div>';
				str+=forwardButton;
			}
			if(!this.pageCount){
				var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
				this.pageCount=dataxml.getNodeValue(nodes[0],'pagecount');
				//alert(this.pageCount);
			}
		
			for (var i=1;i<=this.pageCount;i++){
				if(this.thisPage<(this.pageButtonNum+1)){
					if(i>(2*this.pageButtonNum+1)) continue;
				}else{
					if((this.pageCount-this.thisPage)<this.pageButtonNum){
						if((this.pageCount-i)>2*this.pageButtonNum) continue;
					}else{
						if(Math.abs(i-this.thisPage)>this.pageButtonNum)continue
					}
				}
				if((this.pageCount-this.thisPage)<this.pageButtonNum)if((this.pageCount-i)>(2*this.pageButtonNum))continue;
				//if(i>this.pageCount)if((i-this.thisPage+))
				str+='<div ';
				if(this.thisPage==i)str+='class=\"thisPageButton\"';
					else str+='class=\"pageButton\"';
				if(this.pageButtonAction[2])str+='onclick=\"'+this.pageButtonAction[1]+'('+i+')'+'\"';
					else if(this.pageButtonAction[0])str+='onclick=\"'+this.pageButtonAction[0]+'('+i+')'+'\"';
				str+='>';
				if(this.pageButton[2]){
					try{
						eval('str+='+this.pageButton[2]+'('+i+')');
					}catch(e){}
				}else{
					str+=i;
				} 
				str+='</div>';
			}
			
			if(this.thisPage<this.pageCount){
				var nextButton='<div class=\"nextPageButton\"';
				if(this.pageButtonAction[3])nextButton+='onclick=\"'+this.pageButtonAction[3]+'('+(this.thisPage+1)+')'+'\"';
					else if(this.pageButtonAction[0])nextButton+='onclick=\"'+this.pageButtonAction[0]+'('+(this.thisPage+1)+')'+'\"';
				nextButton+='>';
				if(this.pageButton[3]) nextButton+=this.pageButton[3];
					else nextButton+='&gt;';
				nextButton+='</div>';
				str+=nextButton;
				var endButton='<div class=\"endPageButton\"';
				if(this.pageButtonAction[4])endButton+='onclick=\"'+this.pageButtonAction[0]+'('+this.pageCount+')'+'\"';
					else if(this.pageButtonAction[0])endButton+='onclick=\"'+this.pageButtonAction[0]+'('+this.pageCount+')'+'\"';
				endButton+='>';
				if(this.pageButton[4]) endButton+=this.pageButton[4];
					else endButton+='&gt;&gt;';
				endButton+='</div>';
				str+=endButton;
			}
//			alert(str);
//			alert(this.pageCount);
			try {
				if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
				try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			}catch(e){
				return str;
			}
				
		}catch(e){
			alert("output.pageSelectList():"+e);
			return false;
		}
	},
	// 标准显示 
	// 读取 outputObj 内 innerHTML 为str
	// 用xml内数据替换str内listReplaceStr 标记 listReplaceStr 默认为<!--fieldName-->
	normalList : function(){
		try{
			var str='';
			var templateStr=this.outputObj.innerHTML;
			if(this.reListStr!='')templateStr=this.reListStr;
			var nodes=this.xmlObj.getElementsByTagName(this.listXmlNode);
			var n=0;
			if (this.amount == 0) {
				n = nodes.length;
			}else{
				n=nodes.length<this.amount?nodes.length : this.amount ;
			}
			for (var i = 0; i < n; i++) {
				var nowStr='';
				for(var j=0;j<this.listFieldName.length;j++){
					var strTemp=dataxml.getNodeValue(nodes[i],this.listFieldName[j]);
					if(this.fieldDisposal.length>0){
						if(this.fieldDisposal[j]!='' && this.fieldDisposal[j]!=null)strTemp=eval(this.fieldDisposal[j]+'(\''+strTemp+'\',nodes['+i+'])');
					}
					if(this.fieldReplace.length>0){
						if(this.fieldReplace[j]!='' && this.fieldReplace[j]!=null)strTemp=this.getFnStr(this.fieldReplace[j].replace(/fieldReplace/g,strTemp),nodes[i]);
					}
					if(!this.listReplaceStr[j]){
						if(nowStr=='')nowStr=templateStr.replace('<!--'+this.listFieldName[j]+'-->',strTemp);
							else nowStr=nowStr.replace('<!--'+this.listFieldName[j]+'-->',strTemp);
					}else{
						if(nowStr=='')nowStr==templateStr.replace(this.listReplaceStr[j],strTemp);
							else nowStr=nowStr.replace('<!--'+this.listReplaceStr[j]+'-->',strTemp);
					}
				}
				str+=nowStr;
			}
			if(this.strReplace=='')this.outputStr=str
				else this.outputStr=this.strReplace.replace('strReplace',str);
			try{this.outputObj.innerHTML=this.outputStr}catch(e){}
			return true;
		}catch(e){
			alert("output.normalList():"+e);
			return fasle;
		}
	}
})



