// JavaScript Document
//定义解析类
function DataBind(){};
//定义扩展对象
var Extend_Obj={};
Extend_Obj.moreStr="..";
Extend_Obj.blank=function(v)
{
if(v==null||v==undefined||v.toString().replace(/(^\s*)|(\s*$)/g,"")=="")
   return "&nbsp;";
else
   return v;
}
Extend_Obj.subStr=function(v,lens)
{
  if(v==null||v==undefined||v.toString().replace(/(^\s*)|(\s*$)/g,"")=="")
     return "&nbsp;";
  else
  {
  	 var len=v.length;
	 if(len<=lens)
	    return v;
	 else
	    return v.substr(0,lens);
  }
}
Extend_Obj.changeState=function(v,h){
		if(islogin()){
			if((v||"")!=""){
				return v;
			}else
				return "";
		}else{
			if(h)
				return "<a href='"+h+"'>会员查看</a>";
			else
				return "<a href='/login.html'>会员查看</a>";
		}
};
Extend_Obj.changeJYJState=function(v){
		if(islogin()){
			if(((v||"")!="")){
				var arr = v.split(",");
				return roundFourNum(Math.round(parseFloat(arr[0])*parseFloat(arr[1]*10000))/10000);
			}else
				return "";
		}else{
			return "<a href='/login.html'>会员查看</a>";
		}
};
Extend_Obj.subByteStr=function(v,lens)
{
  if(v==null||v==undefined||v.toString().replace(/(^\s*)|(\s*$)/g,"")=="")
     return "&nbsp;";
  else
     {
	 var sublen=0;
	 var len=v.length;
	 if(len<=lens)
	    return v;
	 for(var i=0;i<len;i++)
	 {
	   if(v.substr(i,1).charCodeAt()>122)
	      sublen+=1;
	   else
	      sublen+=0.66;	  
	   if(sublen>=lens)	  
	       return v.substr(0,i) + Extend_Obj.moreStr;
      
	 }
	 return v;
  }	 
};
Extend_Obj.trim_zhcn=function(v,lens)
{
	if((v||"")!="")
	{
		v=v.replace(/(^\s*)|(\s*$)/g,"");
		v=v.replace(/(&nbsp;|&nbsp)/g,"");
		if(v.gblen()>lens)
		{
			return v.gbtrim(lens,"..");	
		}else
			return v;
	}else
		return "";
};
Extend_Obj.trim_date=function(v)
{
	if((v||"")!="")
	{
		return v.slice(0,10);
	}else
		return "";
};

//给解析类增加变量与方法
DataBind.prototype={
	infoField    : null,
	formField    : null,
	lineNum      : 0,
	oddLineClass : "",                              //奇数行样式
	evenLineClass: "",                              //偶数行样式
	templateTxt  : "",                              //绑定文本
	setLineClass    :  function(oddClass,evenClass) //设置行样式(奇数行样式，偶数行样式)
	{
	   this.oddLineClass=oddClass;
	   this.evenLineClass=evenClass;
	},
	getE            :  function(id)
	{
		return document.getElementById(id);
	},
	getN            :  function(id)
	{
		return document.getElementsByName(id);
	},
	setTemplateTxt  :  function(id)                 //设置绑定文本
	{
		var temp=this.getE(id);
		if(temp)
		  this.templateTxt=temp.innerHTML;
		this.lineNum=0;
	},
	setInfoField    :  function(fields,spe)
	{
		this.infoField=new Array();
		if(fields!=undefined&&fields!=null&&fields.toString()!="")
		   this.infoField=fields.split(spe.toString())
		else
		   this.infoField=null;
	},
	setFormField    :  function(fileds,spe)
	{
	    this.formField=new Array();	
		if(fileds!=undefined&&fileds!=null&&fileds.toString()!="")
		   this.formField=fileds.split(spe.toString())
		else
		   this.formField=null;
	},
	getResultHtml   :  function(data,templateHtml)
	{
		var cdomhtml=templateHtml;                         //取绑定模板内容
		var cdomhtmllen = cdomhtml.length;                 //模板长度
		var beginchar = "@{";                              //起始字符
		var endchar = "}";                                 //结束字符
		var endchar_t = "}";
		var start = -endchar_t.length;                                    //查找的开始位置
		while(start<cdomhtmllen)
		{
		   var startflag = cdomhtml.indexOf(beginchar,start+endchar_t.length);       //查找起始标志
		       if(startflag<0) break;
		   star=startflag;    
           var endflag = cdomhtml.indexOf(endchar, startflag + beginchar.length);    //查找结束标志  
		       if(endflag<0) break;
		   var fieldName = cdomhtml.substring(startflag+beginchar.length,endflag);                 //字段标志,起始标志占两位，所以起始位置为startflag+2
		   if(fieldName!="") 
			   {
		           var result = "";
	   		       result=this.replaceField(data,fieldName);
				   cdomhtml = cdomhtml.replace(beginchar+fieldName+endchar,result);		  
			   }
			start = endflag-beginchar.length-fieldName.length+String.valueOf(result).length;                                                       //重置搜索起始位置
			cdomhtmllen = cdomhtml.length;                                           //重置模板长度(模板内容经替换内容已改变)
		}
		return cdomhtml;                                                             //返回模板替换结果
	},	
	replaceField   :   function(data,fieldname)
	{
		var separateFlag = "|";                                                     //定义分隔符(用于返回对象的扩展）
		var fieldSeparateFlag = ",";                                                //定义多重字段分隔符
		var result="";
		var separateArr = fieldname.split(separateFlag);                            //分隔对象成数组
		var extendFlag = separateArr.length>1?true:false;                           //扩展标志（有扩展则为true,没有扩展则为false）
		if(extendFlag)
		{
			var funName=separateArr[1];
			var args="";
			var para=separateArr[0];
			var funcArr=funName.split(",");
			   funName=funcArr[0];
            if(funcArr[1]!=undefined&&funcArr[1]!=null&&funcArr[1]!="")
			   args=funcArr[1];
			if(typeof Extend_Obj[funName]=="function")                              //判断是否为方法(function)
			{
			   
			   var fieldArr=para.split(fieldSeparateFlag);                        //分隔字段名称
			   var filedArrLen=	fieldArr.length;
			   var paraArr = new Array(filedArrLen);
	 	   	   var callback = Extend_Obj[funName] || function(){};
			   for(var i=0;i<filedArrLen;i++)                                      //获取多字段参数
  	  	   	  	{
  	  	   	  		paraArr[i] = data[fieldArr[i]];
  	  	   	  	}
				return Extend_Obj[funName].call(null,paraArr.toString(),args);
                         
			}
		}else{
			if(fieldname=="css")
			  if(this.lineNum % 2==0)
			    return this.evenLineClass;
			  else
			    return this.oddLineClass;
			else
			{
				if(fieldname!="rownum")                                               //如果没有扩展方法且非行号获取，系统自动加上blank处理
				{
				  result=Extend_Obj["blank"](data[fieldname]);
				}
				else
				{
				  result=this.lineNum;
				}
			}
		}
	   return result;	
	},
	bindDataList    :  function(data,objid,callback)
	{
		var datalistLen=data.length;
		var callback = callback || function(){};
        var listInnerHtml="";
        var templateObj= this.getE(objid);
		if(templateObj==null)
		 {
			 return;
		 }
		var templateHtml="";
		this.lineNum=0;
		if(this.templateTxt=="")
		{
		    templateHtml=templateObj.innerHTML; 
		    this.templateTxt=templateHtml;
		}
		else
		templateHtml=this.templateTxt;
		templateHtml=templateHtml.replace(/(%7B)/g,"{");
        templateHtml=templateHtml.replace(/(%7D)/g,"}");
		templateHtml=templateHtml.replace(/(%7C)/g,"|");
		templateHtml=templateHtml.replace(/(%27)/g,"'");
       for(var i=0;i<datalistLen;i++)
		{
			this.lineNum+=1;
		   	listInnerHtml+=this.getResultHtml(data[i],templateHtml);
			
     	}
		templateObj.innerHTML=listInnerHtml;	
		callback();
	},
	bindInfo    :  function (data,callback)
	{
		var len=0;
		var callback = callback || function(){};
		if(this.infoField!=null)
		{
		 	len=this.infoField.length;
			for(var s=0;s<len;s++)
			{
				var fieldname=this.infoField[s].toString();
				var obj=this.getE(fieldname);
				if(obj)
				{
                   obj.innerHTML=Extend_Obj["blank"](data[fieldname]);
				}
			}			
		}
		callback();
	},
	bindForm    :  function (data,callback)
	{
		var len=0;
		var callback = callback || function(){};
		if(this.formField!=null)
		{
		 	len=this.formField.length;
			for(var s=0;s<len;s++)
			{
				var fieldname=this.formField[s].toString();
				var obj=this.getE(fieldname);
				if(!obj)
				   obj=this.getN(fieldname);
				var v="";
				if(obj.type=="text")
				{  v=data[fieldname];
				   if(v!=undefined&&v!=null)
				      obj.value=v;
				   else
				      obj.value="";
				}
				else
				if(obj.type=="select-one")
				{  
				   v=data[fieldname];
				   if(v!=undefined&&v!=null)
				      this.resetSelectByValue(fieldname,v);
				}
				
			}			
		}
		callback();
	},
	resetSelectByValue : function(selectId,optionValue)
    {
    var obj=this.getE(selectId);
    var option="";
    if(obj)	
    {
	 var len=obj.options.length;
	 for(var i=0;i<len;i++)
	 {
		option=obj.options[i];
	    if(option.value==optionValue)
		    option.selected=true;
	 }		
	}	
	},
	resetRadioByValue : function(radioName,radioValue)
	{
	var obj=this.getN(radioName);
	if(obj)
	{
		var objlen=obj.length;
		for(var i=0;i<objlen;i++)
		{
			if(obj[i].value==radioValue)
			  obj[i].checked=true;		
		}
	}
	}
};
String.prototype.gblen = function() {  
     var len = 0;  
	 if((this||"")!="")
	 {
		 var txt=this;
		 txt=txt.replace(/(^\s*)|(\s*$)/g,"");
		 txt=txt.replace(/(&nbsp;|&nbsp)/g,"");
		 var templen="";
		 var temptype=1;
		 for (var i=0; i<txt.length; i++) {  
			 if (txt.charCodeAt(i)>127 || txt.charCodeAt(i)==94) {  
				len += 2; 
				
			 } else {  
				len++;  
			 }  
		 }  
		 return len;
	 }else
	 	return 0;   
 };
 String.prototype.gbtrim = function(len, s) { 
 	if((this||"")!="")
	{
		 var txt=this;
		 txt=txt.replace(/(^\s*)|(\s*$)/g,"");
		 txt=txt.replace(/(&nbsp;|&nbsp)/g,"");
		 var str = '';  
		 var sp  = s || '';  
		 var len2 = 0;  
		 for (var i=0; i<txt.length; i++) {  
			 if (txt.charCodeAt(i)>127 || txt.charCodeAt(i)==94) {  
				 len2 += 2;  
			 } else {  
				 len2 ++;  
			 }  
		 }  
		 if (len2 <= len) {  
			 return txt;  
		 }  
		 len2 = 0;  
		 //是否包括自定义省略号，注释则不包括
		 len  = (len > sp.length) ? len-sp.length: len;  
		 for (var i=0; i<txt.length; i++) {  
			 if (txt.charCodeAt(i)>127 || txt.charCodeAt(i)==94) {  
				 len2 += 2;  
			 } else {  
				 len2 ++;  
			 }  
			 if (len2 > len) {  
				 str += sp;  
				 break;  
			 }  
			 str += txt.charAt(i);  
		 }  
		 return str;  
	}else
		return " ";
 }; 
