﻿/*
 * JQuery扩展控件库 alpha v1.0
 *
 * Copyright (c) 2009 Bingo(高斌) FE.NET.CN
 *
 * $Date: 2009-08-17 $
 */
var feValidatorList=null;
var isValidator=true;
var feMaskWindow_Params;  //当以LOAD方式打开窗口时，html不能接收POST数据，可将参数赋值给feMaskWindow_Params
(function($) {
    var docloaded = false;
	$(document).ready(function () {docloaded = true} );
	
	//****************selectArea初始化
    $.fn.feCircle = function(settings){
        return this.each( function(){			
			$.feCircle(this,settings);
		});
    };
    
    $.feCircle = function(control,settings){
        if (control.circle) return false; //如果存在则返回

        $("input[type='submit']").attr("disabled",true);
		//设置
		settings = $.extend({
		     circleName:"circleName",
		     controlId:control.id,
		     parentID:0,
		     url:"",
		     data:{},
		     order:{},
		     value:"",
		     Name:"",
		     Value:""
		  }, settings);
		  
		$(control).show();
		
		if($(control+" [id="+settings.circleName+"_circle_1]").length==0)
	        $(control).append("<input type=\"hidden\" id=\""+settings.circleName+"_val_name\" />\
	        <input type=\"hidden\" id=\""+settings.circleName+"_val_id\" /><input type=\"hidden\" \
	        id=\""+settings.circleName+"_val_fullname\" /><input type=\"hidden\" id=\""+settings.circleName+"_val_fullid\" />\
	        <div class=\""+settings.classes+"\"><ul  id=\""+settings.circleName+"_circle_"+settings.parentID+"\" ><ul><div>");
		
		var circle={
		    ajaxData:function(controlid,cir,parentId,count){
	            var total=0;
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        data+="ParentID:"+parentId+"}";
                //alert(data);
		        $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                async : false, 
	                dataType : "json", 
	                success : function(data){ 	                    
	                     if(!count) circle.fill(controlid,cir,data,parentId);
	                     else total=data.length;
	                },
	                complete : function(XMLHttpRequest,textStatus){
                        if(!count) $("#"+settings.treeName+"_load_"+parentId).hide();
	                }, 
	                beforeSend : function(){
		                if(!count) $("#"+controlid).append("<li id=\""+settings.treeName+"_load_"+parentId+"\" >\
		                <span class=\"load\">读取数据中..</span></li>");
	                }
                });    
                return total;                             
		    },
		    fill:function(controlid,cir,data,parentId){	
		        $("#"+controlid).append("<input type=\"hidden\" id=\""+settings.circleName+"_cname_"+cir+"\" /><input type=\"hidden\" id=\""+settings.circleName+"_cid_"+cir+"\" />");        
		        $.each(data,function(i,row){	          
                      var h="<li id=\""+settings.circleName+"_li_"+eval("row."+settings.fValue)+"\"><span class=\"s\">"+eval("row."+settings.fName)+"</span>";
                      var _c=circle.ajaxData("AA",cir,eval("row."+settings.fValue),true);
                      if(_c>0) h+="<span class=\"r\">></span>";
                      
                      h+="</li>";                
                      $("#"+controlid).append(h);                     
                      $("#"+settings.circleName+"_li_"+eval("row."+settings.fValue)).click(function(){
                            $("#"+controlid+" li").each(function(){
                                $(this).attr("class","");
                            });
                            $(this).attr("class","c_li");
                            
                            $("#"+settings.circleName+"_val_name").val(eval("row."+settings.fName));
                            $("#"+settings.circleName+"_val_id").val(eval("row."+settings.fValue));
                            $("#"+settings.circleName+"_cname_"+cir).val(eval("row."+settings.fName));
                            $("#"+settings.circleName+"_cid_"+cir).val(eval("row."+settings.fValue));

                            var _f="";
                            var _i="";
                            for(var i=0;i<=cir;i++){
                                if(i>0){
                                    _f+="|";
                                    _i+="|";
                                }    
                                _f+=$("#"+settings.circleName+"_cname_"+i).val();
                                _i+=$("#"+settings.circleName+"_cid_"+i).val();
                            }
                            $("#"+settings.circleName+"_val_fullname").val(_f);
                            $("#"+settings.circleName+"_val_fullid").val(_i);

                            circle.addCircle(_c,cir,eval("row."+settings.fValue));
                      });
                 });
		    },
		    addCircle:function(_c,cir,parentid){		
		        cir++;        
	            
	            if($("#"+settings.controlId+" [id="+settings.circleName+"_circle_div_"+cir+"]").length>0)
	                $("#"+settings.circleName+"_circle_div_"+cir).remove();
	                
		        if(_c>0){
	                $("#"+settings.controlId).append("<div id=\""+settings.circleName+"_circle_div_"+cir+"\" class=\""+settings.classes+"\"><ul  id=\""+settings.circleName+"_circle_"+cir+"\" ><ul><div>"); 
	                $("input[type='submit']").attr("disabled",true);
	                circle.ajaxData(settings.circleName+"_circle_"+cir,cir,parentid,false);
		        }else $("input[type='submit']").attr("disabled",false);
		    }
		};
		
		circle.ajaxData(settings.circleName+"_circle_0",0,settings.parentID,false);
	
	};
	
	//****************selectArea初始化
    $.fn.feArea = function(settings){
        return this.each( function(){			
			$.feArea(this,settings);
		});
    };
    
    $.feArea = function(control,settings){
        if (control.area) return false; //如果存在则返回

		//设置
		settings = $.extend({
		     selectName:"select_Area",
		     parentID:0,
		     value:""
		  }, settings);
		  
		$(control).show();
		
		if($("body [id="+settings.selectName+"_val]").length==0)
	        $('body').append("<div id=\""+settings.selectName+"_val\"><input type=\"hidden\" id=\""+settings.selectName+"_parentname\" /><div>");
		    
		$(control).click(function(){
		    var h="<div style='float:left;'><ul id=\""+settings.selectName+"_ul\"></ul></div>";
		    
		    $.feMaskWindow({
                name:settings.selectName+"_select_area_add_",
                titleHtml:"请选择运往的区域",
                width:450,
                height:330,
                winType:2,
                desc:h
            });
            area.ajaxData(settings.selectName+"_ul",settings.parentID);
		});
		
		var area={
		    ajaxData:function(controlid,parentId){
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        data+="ParentID:"+parentId+"}";
                //alert(data);
		        $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                dataType : "json", 
	                success : function(data){ 
	                     $.each(data,function(i,row){
	                          
	                          $("#"+controlid).append("<li style='float:left;margin-left:10px;width:80px;'><input id=\""+settings.selectName+"_s_"+row.AreaID+"\" value=\""+row.AreaName+"\" type=\"checkbox\" />"+row.AreaName+"</li>");
	                          
	                          if((","+$(control).val()).indexOf(","+row.AreaName)!=-1) $("#"+settings.selectName+"_s_"+row.AreaID).attr("checked",true);
	                          
	                          
	                          $("#"+settings.selectName+"_s_"+row.AreaID).click(function(){
	                                var v=$(control).val();
	                                if(v.substring(0,1)!=",") v=","+v;   
	                                if(this.checked){
	                                    if(v.indexOf(","+this.value)==-1) v=v+","+this.value;
	                                }else{
	                                    if(v.indexOf(","+this.value)!=-1) v=v.replace(","+this.value,"");
	                                }
	                                
	                                if(v.substring(0,1)==",") v=v.substring(1,v.length);    
	                                
	                                $(control).val(v);
	                          });
	                     });
	                },
	                complete : function(XMLHttpRequest,textStatus){
                        
	                }, 
	                beforeSend : function(){
		                
	                }
                });     
                
                           
		    }
		};
		
		
	};
	
	//****************selectArea初始化(2级)
    $.fn.feSelectArea = function(settings){
        return this.each( function(){			
			$.feSelectArea(this,settings);
		});
    };
    
    $.feSelectArea = function(control,settings){
        if (control.area) return false; //如果存在则返回
        
		//设置
		settings = $.extend({
		     selectName:"selectArea",
		     parentID:0,
		     value:""
		  }, settings);
		  
		$(control)
		.html("")
		.show() 
		.css({border:"1px solid #7F9DB9",width:"120px",height:"20px","line-height":"20px","float":"left","margin-left":"10px","font-size":"14px","background-color":"#F1F9FC","text-align":"center"})  
		.append("<a href=\"javascript:void(0);\" id=\""+settings.selectName+"_a\">请选择所在区域</a>")
		;
		
		if($("body [id="+settings.selectName+"_val]").length==0)
	        $(control).append("<div id=\""+settings.selectName+"_val\"><input type=\"hidden\" id=\""+settings.selectName+"_parentid\" /><input type=\"hidden\" id=\""+settings.selectName+"_childid\" /><input type=\"hidden\" id=\""+settings.selectName+"_parentname\" /><input type=\"hidden\" id=\""+settings.selectName+"_childname\" /><div>");
		    
		
		$("#"+settings.selectName+"_a").click(function(){
		    var h="<div style='float:left;'><ul id=\""+settings.selectName+"_ul\"></ul></div><div style='width:450px;float:left;text-align:left;' id=\""+settings.selectName+"_child\"><span style='text-align:left;font-size:14px;'>请选择城市：</span><ul id=\""+settings.selectName+"_clihd_ul\"></ul></div>";
		    
		    $.feMaskWindow({
                name:settings.selectName+"_select_area_add_",
                titleHtml:"请选择您所在的省市",
                width:450,
                height:330,
                winType:2,
                desc:h
            });
            $("#"+settings.selectName+"_child").hide();
            area.ajaxData(settings.selectName+"_ul",settings.parentID);
		});
		
		var area={
		    ajaxData:function(controlid,parentId){
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        data+="ParentID:"+parentId+"}";

		        $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                dataType : "json", 
	                success : function(data){ 
	                     $.each(data,function(i,row){
	                          $("#"+controlid).append("<li style='float:left;margin-left:10px;width:60px;'><a href='javascript:void(0);' id=\""+settings.selectName+"_s_"+row.AreaID+"\">"+row.AreaName+"</a></li>");
	                          $("#"+settings.selectName+"_s_"+row.AreaID).click(function(){
	                                $("#"+controlid+" a").each(function(){
	                                    $(this).css({"font-size":"12px","font-weight":"normal"});
	                                });
	                                $(this).css({"font-size":"14px","font-weight":"bold"});
	                                area.clickParent(row.AreaID,row.AreaName);
	                          });
	                     });
	                },
	                complete : function(XMLHttpRequest,textStatus){
	                    if($("#"+settings.selectName+"_parentid").val()){
	                        
                            $("#"+settings.selectName+"_s_"+$("#"+settings.selectName+"_parentid").val()).css({"font-size":"14px","font-weight":"bold"});
                            
                            area.clickParent($("#"+settings.selectName+"_parentid").val(),$("#"+settings.selectName+"_parentname").val());
                        }
                        $("#"+settings.selectName+"_loading").remove();
	                }, 
	                beforeSend : function(){
		                $("#"+settings.selectName+"_ul").append("<li id=\""+settings.selectName+"_loading\">正在载入数据...</li>");
	                }
                });     
                
                           
		    },
		    clickParent:function(id,name){
		        $("#"+settings.selectName+"_a").html(name);
		        $("#"+settings.selectName+"_parentid").val(id);
		        $("#"+settings.selectName+"_parentname").val(name);
		        $("#"+settings.selectName+"_child").show();
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        data+="ParentID:"+id+"}";
            
		        $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                dataType : "json", 
	                success : function(data){ 	                     
	                     $.each(data,function(i,row){
	                          $("#"+settings.selectName+"_clihd_ul").append("<li style='float:left;margin-left:10px;width:60px;'><a href='javascript:void(0);' id=\""+settings.selectName+"_s_"+row.AreaID+"\">"+row.AreaName+"</a></li>");
	                          $("#"+settings.selectName+"_s_"+row.AreaID).click(function(){
	                                $("#"+settings.selectName+"_childid").val(row.AreaID);
	                                $("#"+settings.selectName+"_a").append("-"+row.AreaName);
	                                $("#"+settings.selectName+"_childname").val(row.AreaName);
	                                $("#"+settings.selectName+"_select_area_add_MaskID").hide();
	                                $("#"+settings.selectName+"_select_area_add_WindowsID").hide();
	                          });
	                     });
	                     
	                },
	                complete : function(XMLHttpRequest,textStatus){	     
	                    if($("#"+settings.selectName+"_childid").val()){                    

                            $("#"+settings.selectName+"_s_"+$("#"+settings.selectName+"_childid").val()).css({"font-size":"14px","font-weight":"bold"});
                        }                 
                        $("#"+settings.selectName+"_loading").remove();
	                }, 
	                beforeSend : function(){
	                    $("#"+settings.selectName+"_clihd_ul").html("");
		                $("#"+settings.selectName+"_clihd_ul").append("<li id=\""+settings.selectName+"_loading\">正在载入区域数据...</li>");
		                
	                }
                });  
		    }
		};
		
		
	};
	
	//****************grid初始化
    $.fn.feTree = function(settings){
        return this.each( function(){			
			$.feTree(this,settings);
		});
    };
    
    $.feTree = function(control,settings){
        if (control.tree) return false; //如果存在则返回
        
		//设置
		settings = $.extend({
		     treeName:"tree",
		     treeCss:"fetree",
		     imagesPath:"../css/tree/images/",
		     mostly:"", //主键			 
			 columns: [],//数据列
			 operate:true,//是否允许操作列
			 operates:[],//操作列			 
			 checkBox:false,
			 radio:false,
			 haveTop:true,
			 textBox:false,
			 haveTopText:"顶部",
			 haveTopParent:"0",
			 onMouseOutColor:"#fff",
			 onMouseOverColor:"#E7F8F3",
			 url: "", //数据源获取地址
			 data:{},//参数
			 order:{},//排序字段以及值
			 errorMessage: "载入数据出现错误！",    //错误显示内容
			 loadMessage: "正在读取数据，请稍候 ...",   //载入数据进度条显示内容
			 allDel:''//是否显示全部删除按钮			 
		  }, settings);
		  
		$(control)
		.show() 
		.html("")
		.attr({cellPadding: 0, cellSpacing: 0, border: 0})  
		.append("<div id=\""+settings.treeName+"_tree\" class=\""+settings.treeCss+"\"><ul id=\""+settings.treeName+"_tree_ul\"></ul></div><input type=\"hidden\" id=\""+settings.treeName+"_val\" /><input type=\"hidden\" id=\""+settings.treeName+"_text\" />")
		;
		
		if(settings.value) $("#"+settings.treeName+"_val").val(settings.value);
		if(settings.textValue) $("#"+settings.treeName+"_text").val(settings.textValue.replace("{","").replace("}",""));
		
		var treeNameUL=settings.treeName+"_tree_ul";
		//开始加载
		var tree={
		    addData:function(contorl,data,left){		        
		        $.each(data,function(i,row){
		            var nextTotal=tree.ajaxData(null,0,eval("row."+settings.mostly),true);
		            var node="<li id=\""+settings.treeName+"_ul_li_"+eval("row."+settings.mostly)+"\" style=\"margin-left:"+left+"px;\">";
		            if((i+1)==data.length){
		                if(nextTotal>0) node+="<img src=\""+settings.imagesPath+"jianlast.gif\" border=0 /> ";
		                else node+="<img src=\""+settings.imagesPath+"last.gif\" border=0 /> ";
		            }else{
		                if(nextTotal>0) node+="<img src=\""+settings.imagesPath+"jiani.gif\" border=0 /> ";
		                else node+="<img src=\""+settings.imagesPath+"s.gif\" border=0 /> ";
		            }
		            if(nextTotal>0) node+="<img src=\""+settings.imagesPath+"folderopen.gif\" border=0 /> ";
		            else node+="<img src=\""+settings.imagesPath+"file.png\" border=0 />  ";
		            
		            var checked;
		            if(settings.value){
                        if((","+settings.value.toString()+",").indexOf(","+eval("row."+settings.mostly)+",")!=-1) checked="checked=\"checked\"";
                    }

		            if(settings.checkBox) node+="<input id=\""+settings.treeName+"_chkbox_"+eval("row."+settings.mostly)+"\" value=\""+eval("row."+settings.mostly)+"\" type=\"checkbox\" "+checked+" />";

		            if(settings.radio) node+=" <input id=\""+settings.treeName+"_radio_"+eval("row."+settings.mostly)+"\" name=\""+settings.treeName+"_radio\"  value=\""+eval("row."+settings.mostly)+"\" type=\"radio\"  "+checked+"/>";
		            
		            node+=eval("row."+settings.columns[0].field);
                    
                    if(settings.textBox){
                        node+="&nbsp;<input type=\"text\" id=\""+settings.treeName+"_text_"+eval("row."+settings.mostly)+"\" ";
                    
                        if(settings.textValue){

                            var textValue=eval('('+settings.textValue+')');
                            
                            if(eval("textValue.CategoryID_"+eval("row."+settings.mostly)))
                                node+=" value=\""+eval("textValue.CategoryID_"+eval("row."+settings.mostly))+"\" ";
                        }
                        node+="size=\"5\" />";
                    }
                    
		            $.each(settings.columns,function(_i,_row){
		                if(_i>0){
		                    if(_row.def){
		                        var value=eval("row."+_row.field);
		                        if(_row.operates){
		                            $.each(_row.operates,function(__i,__row){
		                                if(__row.type=="replace"){
		                                    $.each(__row.params,function(___i,___row){		      
		                                                                     
		                                        value=value.replace(___row.val,___row.toval);
		                                    });
		                                }
		                            });
		                        }
		                        
		                        node+="&nbsp;&nbsp;&nbsp;"+_row.title+"["+value+"]";
		                        
		                        
		                    }    		                    
		                }
		            });
		            
		            if(settings.operate){
		                if(settings.operates.length>0){
                            node+="<span class=\"operates\">";
                            $.each(settings.operates, function(_i,_row){
                                if(_row.type=="function"){
                                    node+=" <a href=\"javascript:void(0);\" id=\""+settings.treeName+"_operate_"+_i+"\" onclick=\""+_row.href+"(";
                                    $.each(_row.pars, function(__i,__row){
                                         if(__row.o) node+=eval(__row.n);
                                         else node+=__row.n;
                                         node+=",";
                                    });
                                    node+=")";
                                    node=node.replace(",)",")");
                                    node+=";return false;\">"+_row.title+"</a>";
                                    //alert(node);
                                }else if(_row.type=="url"){
                                    node+=" <a href=\"javascript:void(0);\" onclick=\"location.href='"+_row.href;
                                    if(_row.pars.length>0) node+="?1=1";
                                    $.each(_row.pars, function(__i,__row){
                                        var value=__row.value
                                        
                                        value=__row.value.replace(/\{.+?\}/g, function(v){
                                            return eval("row."+v.replace("{","").replace("}",""));
                                        });
                                        if(__row.name) node+="&"+__row.name+"="+value; 
                                    });                                        
                                    node+="';return false;\">"+_row.title+"</a>";
                                }
                            });
                            node+="</span>";
                        }
		            }
		            node+="</li>";		            
		            contorl.append(node);

		            if(settings.checkBox)
		                $("#"+settings.treeName+"_chkbox_"+eval("row."+settings.mostly)).click(function(){
		                    tree.selectCheckBox(this);
		                });

                    if(settings.radio)
		                $("#"+settings.treeName+"_radio_"+eval("row."+settings.mostly)).click(function(){
		                    tree.selectRadio(this);
		                });
		                
		            if(settings.textBox)
		                $("#"+settings.treeName+"_text_"+eval("row."+settings.mostly)).bind("blur",function(){
		                    tree.fillTextBox(this);
		                });
		                    
		            if(nextTotal>0)
		                tree.ajaxData($("#"+settings.treeName+"_ul_li_"+eval("row."+settings.mostly)),(left+8),eval("row."+settings.mostly),false);
		        });
		    },
		    addNode:function(title,left,x,ico){
		        
		    },
		    ajaxData:function(contorl,left,parentId,count){
		        var total=0;
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        data+="ParentID:"+parentId+"}";
		        //alert(data);
		        var async=true;
		        if(count) async=false;
                $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                async : async, 
	                dataType : "json", 
	                success : function(data){ 
	                    if(!count) tree.addData(contorl,data,left)
	                    else{
	                        total=data.length;
	                    }    
	                },
	                complete : function(XMLHttpRequest,textStatus){
                        if(!count) $("#"+settings.treeName+"_load_"+parentId).hide();
	                }, 
	                beforeSend : function(){
		                if(!count) contorl.append("<li class=\"last\" id=\""+settings.treeName+"_load_"+parentId+"\" style=\"margin-left:"+left+"px;\"><span class=\"load\">"+settings.loadMessage+"</span></li>");
	                }
                });
                return total; 
		    },
		    selectCheckBox:function(obj){
		        var allVal=$("#"+settings.treeName+"_val").val();		        
		        
	            $("#"+settings.treeName+"_ul_li_"+obj.value+" input[@type='checkbox']").each(function(){
	                if(obj.checked){
	                    this.checked=true;
	                    if(allVal.indexOf(","+this.value+",")==-1) allVal+=","+this.value;
	                }else{
	                    this.checked=false;
	                    if(allVal.indexOf(","+this.value+",")!=-1) allVal=allVal.replace(","+this.value,"");
	                }    
	            });
	            $("#"+settings.treeName+"_val").val(allVal);
		    },
		    selectRadio:function(obj){
		        $("#"+settings.treeName+"_val").val(obj.value);
		    },
		    fillTextBox:function(obj){
		        var allVal=$("#"+settings.treeName+"_text").val();
                $("#"+settings.treeName+"_ul_li_"+obj.id.replace(settings.treeName+"_text_","")+" input[@type='text']").each(function(){
                    var value=0;
                    if(this.value==""){
                        this.value=obj.value;
                    }
                    
                    
                    
                    if(allVal.indexOf("\"CategoryID_"+this.id.replace(settings.treeName+"_text_","")+"\":")==-1){
                        if(allVal!="") allVal+=",";
                        allVal+="\"CategoryID_"+this.id.replace(settings.treeName+"_text_","")+"\":\""+this.value.replace( /^\s*/,"").replace( /\s*$/,"")+"\"";
                    }else{
                        t="";
                        for(var i=0;i<allVal.split(',').length;i++){     

                            var k=allVal.split(',')[i].split(':');
                            if(t!="") t+=",";                            
                            if(k[0]=="\"CategoryID_"+this.id.replace(settings.treeName+"_text_","")+"\""){
                                t+=k[0]+":\""+this.value.replace( /^\s*/,"").replace( /\s*$/,"")+"\""; 
                            }else{
                                t+=allVal.split(',')[i];
                            }                            
                        }           
                        allVal=t;
                    }
                });
	            $("#"+settings.treeName+"_text").val(allVal);		    
		    }
		};
		
		if(settings.haveTop){
		    var checked;
		    
            if(settings.value!=null){
                if((","+settings.value.toString()+",").indexOf(","+settings.parentId+",")!=-1) checked="checked=\"checked\"";
            }
		    var node="<li id=\""+settings.treeName+"_ul_li_"+settings.parentId+"\" ><img src=\""+settings.imagesPath+"folderopen.gif\" border=0 />";
		    if(settings.checkBox) node+="<input id=\""+settings.treeName+"_chkbox_"+settings.parentId+"\" value=\""+settings.parentId+"\" type=\"checkbox\" "+checked+" />";
		    if(settings.radio) node+=" <input id=\""+settings.treeName+"_radio_"+settings.parentId+"\" name=\""+settings.treeName+"_radio\"  value=\""+settings.parentId+"\" type=\"radio\"  "+checked+"/>";
		    node+=""+settings.haveTopText;
		    
		    if(settings.textBox) node+="&nbsp;<input type=\"text\" id=\""+settings.treeName+"_text_"+settings.parentId+"\" size=\"5\" />";
		    
		    if(settings.parentUrl){
                if(settings.parentUrl.length>0){
                    node+="<span class=\"operates\">";
                    $.each(settings.parentUrl, function(_i,_row){
                        if(_row.type=="function"){
                            node+=" <a href=\"javascript:void(0);\" id=\""+settings.treeName+"_operate_"+_i+"\" onclick=\""+_row.href+"(";
                            $.each(_row.pars, function(__i,__row){
                                 if(__row.o) node+=eval(__row.n);
                                 else node+=__row.n;
                                 node+=",";
                            });
                            node+=")";
                            node=node.replace(",)",")");
                            
                            node+=";return false;\">"+_row.title+"</a>";
                            
                        }else if(_row.type=="url"){
                            node+=" <a href=\"javascript:void(0);\" onclick=\"location.href='"+_row.href;
                            if(_row.pars.length>0) node+="?1=1";
                            $.each(_row.pars, function(__i,__row){
                                 if(__row.name) node+="&"+__row.name+"="+__row.value;
                            });                                        
                            node+="';return false;\">"+_row.title+"</a>";
                        }
                    });
                    node+="</span>";
                }
            }
		    node+="</li>";
		    $("#"+treeNameUL).append(node);
		    
		    
		    if(settings.checkBox)
                $("#"+settings.treeName+"_chkbox_"+settings.parentId).click(function(){
                    tree.selectCheckBox(this);
                });

            if(settings.radio)
                $("#"+settings.treeName+"_radio_"+settings.parentId).click(function(){
                    tree.selectRadio(this);
                }); 

            if(settings.textBox)
                $("#"+settings.treeName+"_text_"+settings.parentId).bind("blur",function(){
                    tree.fillTextBox(this);
                });
                
		    tree.ajaxData($("#"+settings.treeName+"_ul_li_"+settings.parentId),8,settings.parentId,false);  
		}else tree.ajaxData($("#"+treeNameUL),8,settings.parentId,false);			
	};
	
	//****************grid初始化
    $.fn.feGrid = function(settings){
        return this.each( function(){
			if (!docloaded){
				$(this).hide();
				var control = this;
				$(document).ready(function (){
				    $.feGrid(control,settings);
				});
			}else $.feGrid(this,settings);
		});
    };
    
    $.feGrid = function(control,settings){
        if (control.grid) return false; //如果存在则返回

		//设置
		settings = $.extend({
		     tbName:"datatable",
		     tbTitle:"标题",
		     tbCss:"feGrid",
		     isHeader:true,
		     isSearch:true,
		     imagesPath:"../css/grid/images/",
			 columns: [],//数据列
			 operates:[],//操作列
			 operatesBtn:[],//操作按钮
			 mostly:"", //主键
			 operatesCss:"column_operate color",
			 hearderCss:"bgcolor",
			 tbodyId:"",
			 onMouseOutColor:"#fff",
			 onMouseOverColor:"#E7F8F3",
			 url: "", //数据源获取地址
			 data:{},//参数
			 order:{},//排序字段以及值
			 errorMessage: "载入数据出现错误！",    //错误显示内容
			 loadMessage: "正在读取数据，请稍候 ...",   //载入数据进度条显示内容
			 noDataMessage: "没有找到任何数据。",
			 pager:true,    //是否显示分页
			 pageIndex: 1, //当前页面
			 totalData: 1, //数据总条数
			 maxShowPage:10,//每页最大显示分页数
			 pageSize: 15, // 默认每页数据条数
			 perPageOptions: [10,15,20,25,40,60,100],   //可选每页显示数据
			 allOperates:'',//是否显示全部操作按钮
			 trLine:3,
			 
			 width: "100%", //默认宽
			 minWidth: 30, //单元格最小宽度
			 minHeight: 80, //单元格最小高度			 
			 autoLoad: true,   //打开loading窗口
			 viewType:"line",   //显示方式
			 onToggleCol: false,
			 onChangeSort: false,
			 onSuccess: false,
			 onSubmit: false,
			 childSearch:{}
		  }, settings);
		  
		if($.cookie("fe_"+settings.tbName+"_pageSize")!=null)  settings.pageSize=$.cookie("fe_"+settings.tbName+"_pageSize");
		else $.cookie("fe_"+settings.tbName+"_pageSize",settings.pageSize);  
		
	
        //初始控件的设置
		$(control)
		.show() 
		.html("")
		.attr({cellPadding: 0, cellSpacing: 0, border: 0})  
		.removeAttr('width')
		.append("<div id=\""+settings.tbName+"\" class=\""+settings.tbCss+"\" ></div>")
		;
       
		var grid={
		    addHeader:function(){
		        if(settings.isHeader) $("#"+settings.tbName).append("<div class=\"title\"><div class=\"left\"></div><div class=\"right\"><h1>"+settings.tbTitle+"</h1></div></div>");
		    },
		    addSearch:function(){
		        if(settings.isSearch){
		            var sLine=settings.trLine; //搜索字段多少列后换行
		            var search="";
		            if(settings.search){
		            search+="<div id=\""+settings.tbName+"_search\" class=\"search\"><div class=\"content\"><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		            if (settings.columns){
		                //生成搜索列
		                search+="<tr>";
		                
		                var _i=0;
		                for (i=0;i<settings.columns.length;i++){
				            var c = settings.columns[i];
				            if(c.search){
				                search+="<td class=\"text\">"+c.title+"：</td><td class=\"value\">";
				                if(c.searchParams){
				                    var _field=c.field;
				                    if(c.searchField) _field=c.searchField;
                                    switch(c.searchParams.type){
                                        case "text":
                                            search+="<input name=\""+settings.tbName+"_search_name_"+_field+"\" type=\"text\" id=\""+settings.tbName+"_search_id_"+_field+"\" size=\""+c.searchParams.size+"\" />";
                                            break;
                                        case "date":
                                            search+="<input name=\""+settings.tbName+"_search_name_"+_field+"_Start\"  onfocus=\"calendar()\" type=\"text\" id=\""+settings.tbName+"_search_id_"+_field+"_Start\" size=\""+c.searchParams.size+"\" />-<input name=\""+settings.tbName+"_search_name_"+_field+"_End\"  onfocus=\"calendar()\" type=\"text\" id=\""+settings.tbName+"_search_id_"+_field+"_End\" size=\""+c.searchParams.size+"\" />";
                                            break;    
                                        case "select":
                                            search+="<select id=\""+settings.tbName+"_search_id_"+_field+"\" name=\""+settings.tbName+"_search_name_"+_field+"\">";
                                            if(c.searchParams.item){
                                                $.each(c.searchParams.item,function(i,row){
                                                    search+="<option value=\""+row.Value+"\">"+row.Name+"</option>";
                                                });
                                            }else{
                                                if(c.searchParams.url){
                                                    var reName=c.searchParams.reName;
                                                    var reValue=c.searchParams.reValue;
                                                    search+="<option value=\"\"></option>";
                                                    $.ajax({	
	                                                    type : "POST", 
	                                                    url : c.searchParams.url, 
	                                                    data : c.searchParams.data, 
	                                                    async : false, 
	                                                    dataType : "json", 
	                                                    success : function(data){ 
    	                                                    $.each(data,function(i,row){
    	                                                        search+="<option value=\""+eval("row."+reValue)+"\">"+eval("row."+reName)+"</option>";
    	                                                    });
	                                                    }
                                                    });
                                                    
                                                }
                                            }
                                            search+="</select>";
                                            break;    
                                    } 
                                }
                                search+="&nbsp;</td>";
                                _i++;
                                
                                if(_i%sLine==0)
                                search+="</tr>";
                            }    
                            
			            }
			  
			            search+="<tr><td colspan=\""+(sLine*2)+"\"><div align=\"center\"><input type=\"button\" class=\"button\" id=\""+settings.tbName+"_search_submit\" value=\"搜索\" />&nbsp;</div></td></tr>";
		            }
		            search+="</table></div></div>";
        		    
		            search+="<div class=\"foldexpand\"><img src=\""+settings.imagesPath+"list_top_01.gif\" id=\""+settings.tbName+"_search_s\" alt=\"点击隐藏\" width=\"661\" height=\"9\" border=\"0\" /></div>";
        		    }
        		    
        		    
		            $("#"+settings.tbName).append(search);
        		    
		            //事件
		            $("#"+settings.tbName+"_search_s").hover(function(){
		                if(this.alt=="点击隐藏")        
			                this.src=settings.imagesPath+"list_top_02.gif";
			            else this.src=settings.imagesPath+"list_top_04.gif";
			        },function(){
			            if(this.alt=="点击隐藏")
			                this.src=settings.imagesPath+"list_top_01.gif";
			            else    this.src=settings.imagesPath+"list_top_03.gif";
			        }).toggle(function(){
			            if(this.alt=="点击隐藏"){
			                this.src=settings.imagesPath+"list_top_01.gif";
			                this.alt="点击展开";			        
			                $("#"+settings.tbName+"_search").hide();
			            }else{
			                this.src=settings.imagesPath+"list_top_03.gif";
			                this.alt="点击隐藏";
			                $("#"+settings.tbName+"_search").show();
			            }    
			        },function(){
			            if(this.alt=="点击隐藏"){
			                this.src=settings.imagesPath+"list_top_01.gif";
			                this.alt="点击展开";			        
			                $("#"+settings.tbName+"_search").hide();
			            }else{
			                this.src=settings.imagesPath+"list_top_03.gif";
			                this.alt="点击隐藏";
			                $("#"+settings.tbName+"_search").show();
			            }
			        });
        			
			        $("#"+settings.tbName+"_search_submit").click(grid.search);
			        
			        //加载搜索字符
			        if(settings.columns){
			            for (i=0;i<settings.columns.length;i++){
			                var c=settings.columns[i];
			                if(c.searchParams){
			                    var _field=c.field;
				                if(c.searchField) _field=c.searchField;
                                switch(c.searchParams.type){
                                    case "text":
                                        if($("#"+settings.tbName+"_search_id_"+_field)) $("#"+settings.tbName+"_search_id_"+_field).val(settings.data[_field]);
                                        break;
                                    case "date":
                                        if($("#"+settings.tbName+"_search_id_"+_field+"_Start")) $("#"+settings.tbName+"_search_id_"+_field+"_Start").val(settings.data[_field+"_Start"]);
                                        if($("#"+settings.tbName+"_search_id_"+_field+"_End")) $("#"+settings.tbName+"_search_id_"+_field+"_End").val(settings.data[_field+"_End"]);
                                        break;    
                                    case "select":
                                        if($("#"+settings.tbName+"_search_id_"+_field)) $("#"+settings.tbName+"_search_id_"+_field).val(settings.data[_field]);
                                        break;    
                                } 
                            }           
			                
		                }
		            }    
		        }
		    },
		    addTab:function(){
		        //切换卡
		        var th="<div class=\"function\"><ul id=\""+settings.tbName+"_tab_ul\"></ul><div id=\""+settings.tbName+"_operatesBtn_div\" style=\"float:right; margin-right:10px;\"></div></div>";
		        $("#"+settings.tbName).append(th);
		        if(settings.operatesBtn){
		            var btn="";
		            $.each(settings.operatesBtn, function(i,row){
                        if(row.type=="function"){
                            btn+="<input type=\"button\" class=\"button1\" value=\""+row.title+"\" id=\""+settings.tbName+"_operatesBtn_"+i+"\" onclick=\""+row.href+"(";
                            $.each(row.pars, function(_i,_row){
                                 if(_row.o) btn+=eval(_row.n);
                                 else btn+=_row.n;
                                 btn+=",";
                            });
                            btn+=")";
                            btn=btn.replace(",)",")");
                            
                            btn+="\" />";
                        }else if(row.type=="url"){
                            btn+="<input type=\"button\" class=\"button1\" value=\""+row.title+"\" id=\""+settings.tbName+"_operatesBtn_"+i+"\" onclick=\"location.href='"+row.href;
                            if(row.pars.length>0) btn+="?1=1";
                            $.each(row.pars, function(_i,_row){
                                 if(_row.name) btn+="&"+_row.name+"="+_row.value;
                            });                                        
                            btn+="'\" />";
                        }
                    });
                    $("#"+settings.tbName+"_operatesBtn_div").append(btn);
		        }
        		
		        $("#"+settings.tbName+"_operatesBtn_div").append($("<input type=\"button\" class=\"button1\" value=\"列表项↓\" />").click(grid.selectColumns));
        			
        		
		        if(settings.tab){
		            var t="";
		            $.each(settings.tab,function(i,row){
		                t+="<li><div";
		                if(row.def) t+=" class=\"selected\"";
		                t+="><a href=\"javascript:void(0);\" onclick=\"location.href='"+row.href+"';return false;\">"+row.title+"</a></div></li>";
		            });
		            $("#"+settings.tbName+"_tab_ul").append(t);
		        }
		    },
		    addSelectColumns:function(){
		        var h="<div id=\""+settings.tbName+"_list\" class=\"listbox\"><h1>请打勾选取择需要显示在列表上的项</h1>";
                h+="<div class=\"listitem\"><ul>";
                for (i=0;i<settings.columns.length;i++){
			        var c = settings.columns[i];
			        var sel=" ";
                    if(c.def) sel=" checked=\"checked\" ";
                    h+="<li><input type=\"checkbox\" name=\""+settings.tbName+"_sc_chk_name_"+c.field+"\" value=\""+c.field+"\" id=\""+settings.tbName+"_sc_chk_id_"+c.field+"\" "+sel+" /> "+c.title+"</li>"; 
		        }
                h+="</ul><p></p></div><div  class=\"button\"><img id=\""+settings.tbName+"_selectcolumns_btn\" src=\""+settings.imagesPath+"/list_btn_result.gif\" /></div><p></p></div>";
                $("#"+settings.tbName).append(h);
                

                $("#"+settings.tbName+"_selectcolumns_btn").click(function(){
                    for (i=0;i<settings.columns.length;i++){
                        var c = settings.columns[i];
                        if($("#"+settings.tbName+"_sc_chk_id_"+c.field).attr("checked")) c.def=true;
                        else c.def=false;
                    }
                    
                    $(control).feGrid(settings);//重新加载
                });
		    },
		    addData:function(data){
	
		        if(data){
		            if(settings.pager&&data.length==0) $("#"+settings.tbodyId).append("<tr><td colspan=\""+settings.columns.length+1+"\">"+settings.noDataMessage+"</td></tr>");
                  
                    var MostlyValue="";
                    
		            $.each(data,function(i,row){
		                
		                MostlyValue=eval("row."+settings.mostly);
		                
		                if(settings.pager&&i==0) settings.totalData=data[0].Record;
		                else{
		                    var tr="<tr style=\"background-color:"+settings.onMouseOutColor+"\" onmouseover=\"this.style.backgroundColor='"+settings.onMouseOverColor+"'\" onmouseout=\"this.style.backgroundColor='"+settings.onMouseOutColor+"'\">";
		                    if(settings.allOperates&&settings.mostly) tr+="<td width=\"20\" align=\"left\"><input id=\""+settings.tbName+"_chk_"+i+"\" type=\"checkbox\" value=\""+eval("row."+settings.mostly)+"\" /></td>";
		                    var _row_len=0;
		                    $.each(settings.columns, function(_i,_row){   
                               for (col in row){
                                    
                                    if(_row.field==col){
                                        var field=decodeURIComponent(eval("row."+col));
                                        
                                        //是否需要模板替换
                                        if(_row.template){
                                            field=_row.template.replace(/\{.+?\}/g, function(v){
                                                return decodeURIComponent(eval("row."+v.replace("{","").replace("}","")));
                                            });           
                                            if(!_row.tempnull){
                                                if(!decodeURIComponent(eval("row."+col))) field="";
                                            }                                 
                                        }
                                        
                                        //是否需要替换
                                        if(_row.replace){
                                            $.each(_row.replace, function(__i,__row){      
                                                if(field==__row.oldValue) field=__row.newValue;
                                                //field=field.replace(__row.oldValue,__row.newValue);                                                
                                            });
                                        }
                                        
                                        //如果字段为AJAX替换字段
                                        if(_row.fieldFrom){
                                            var dataJson="{";
	                                        for(var key in _row.fieldFrom.data){
	                                            dataJson+=key.toString()+":\""+_row.fieldFrom.data[key].replace("$this",field)+"\",";
	                                        }
	                                        dataJson+="show:true}";
	                                        field="无";
                                            $.ajax({	
                                                type : "POST", 
                                                url : _row.fieldFrom.url, 
                                                data : eval('('+dataJson+')'), 
                                                async : false, 
                                                dataType : "json", 
                                                success : function(data){
                                                    if(eval("data."+_row.fieldFrom.field)) field=decodeURIComponent(eval("data."+_row.fieldFrom.field));
                                                }
                                            });
                                        }
                                        
                                        //检查数据类型，为JSON则输出JSON类型
                                        if(_row.datatype){
                                            if(_row.datatype=="json"){
                                                var jsonstr="";
                                                if(field){
                                                    $.each(eval(field),function(_json_i,_json_p){              
                                                        jsonstr+=_json_p.Name+"："+_json_p.Value+"<br>";
                                                    });   
                                                }     
                                                field=jsonstr;
                                            }
                                        }
  
                                        if(_row.len){
                                            if(field.length>_row.len) field="<font title='"+field+"'>"+field.substring(0,_row.len)+"..</font>";
                                        }
                                        
                                        if(!field) field="&nbsp;"
                                        
                                        if(_row.def){
                                            tr+="<td";
                                            
                                            if(_row.width!=null&&_row.width!="") tr+=" width=\""+_row.width+"\" ";
                                            if(_row.algin) tr+=" style=\"text-align:"+_row.algin+"\" ";
                                            
                                            if(_row.search){    
                                                if($("#"+settings.tbName+"_search_id_"+col).val())
                                                    field=field.replaceAll($("#"+settings.tbName+"_search_id_"+col).val(),''+$("#"+settings.tbName+"_search_id_"+col).val()+'');                                  
                                                //alert(field);
                                            }
                                            tr+=">&nbsp;";
                                            if(_row.exFunction){
                                                var _f=_row.exFunction.replace(/\{.+?\}/g, function(v){
                                                    return "row."+v.replace("{","").replace("}","");
                                                });
                                          
                                                eval(_f);
                                            }else{ 
                                                if(_row.motifyParams){
                                                    if(_row.motifyParams.type=="text"){
                                                        tr+="<input type=\"text\" id=\""+_row.field+"_"+MostlyValue+"\" value=\""+field+"\" style=\"width:30px;\" />";
                                                    }
                                                }else tr+=field;
                                            }
                                            tr+="</td>";
                                        }    
                                    }
                               }
                               _row_len++;
                            });
                            //加载操作列
                            if(settings.operates.length>0){
                                tr+="<td class=\""+settings.operatesCss+"\">";
                                $.each(settings.operates, function(_i,_row){
                                    if(_row.type=="function"){
                                        tr+=" <a href=\"javascript:void(0);\" id=\""+settings.tbName+"_operate_"+_i+"\" onclick=\""+_row.href+"(";
                                        $.each(_row.pars, function(__i,__row){
                                             if(__row.o) tr+="'"+eval(__row.n)+"'";
                                             else tr+="'"+__row.n+"'";
                                             tr+=",";
                                        });
                                        tr+=")";
                                        tr=tr.replace(",)",")");
                                        tr+=";return false;\">"+_row.title+"</a>";
                                    }else if(_row.type=="url"){
                                        tr+=" <a href=\"javascript:void(0);\" onclick=\"location.href='"+_row.href;
                                        if(_row.pars.length>0) tr+="?1=1";
                                        $.each(_row.pars, function(__i,__row){
                                            var value=__row.value
                                            value=__row.value.replace(/\{.+?\}/g, function(v){
                                                return eval("row."+v.replace("{","").replace("}",""));
                                            });
                                             if(__row.name) tr+="&"+__row.name+"="+value;
                                        });                                        
                                        tr+="';return false;\">"+_row.title+"</a>";
                                       
                                    }
                                  
                                });
                                
                                if(settings.childSearch.data){
                                    tr+="<a href=\"javascript:void(0);\"  id=\""+settings.tbName+"_childSearch_a_"+eval("row."+settings.mostly)+"\" style=\"margin-left:5px;\">展开</a>";
                                }
                                tr+="</td>";
                                
                                
                            }
		                    tr+="</tr>";
		                    
		                    //加载子查询
		                    if(settings.childSearch.data){
		                        tr+="<tr id=\""+settings.tbName+"_childSearch_tr_"+eval("row."+settings.mostly)+"\"><td colspan=\""+_row_len+"\" style=\"text-align:left;\"  id=\""+settings.tbName+"_childSearch_td_"+eval("row."+settings.mostly)+"\" >正在载入子查询...</td></tr></tr>";
		                    }
		                   
		                    $("#"+settings.tbodyId).append(tr);
		                    
		                    if(settings.childSearch.allShow) $("#"+settings.tbName+"_childSearch_tr_"+eval("row."+settings.mostly)).show();
		                    else $("#"+settings.tbName+"_childSearch_tr_"+eval("row."+settings.mostly)).hide();
		                    $("#"+settings.tbName+"_childSearch_a_"+eval("row."+settings.mostly)).click(function(){
		                        if($(this).html()=="展开"){
		                            $(this).html("收缩");
		                            grid.childFlex(true,eval("row."+settings.mostly)); 
		                        }    
		                        else{
		                            $(this).html("展开");
		                            grid.childFlex(false,eval("row."+settings.mostly));
		                        }
                                
                            });
                            
		                    if(settings.allOperates&&settings.mostly) $("#"+settings.tbName+"_chk_"+i).click(function(){grid.selectCheckBox(this)});
		                    
		                    if(settings.childSearch.data){
		                        var adata="{";
		                        for(var key in settings.childSearch.data){
		                            var dataValue=settings.childSearch.data[key];
		                            if(dataValue=="{mostly}"&&MostlyValue) dataValue=MostlyValue;
		                            adata+=key.toString()+":\""+dataValue+"\",";
		                        }
		                        for(var key in settings.childSearch.order){
		                            adata+=key.toString()+":\""+settings.childSearch.order[key]+"\",";
		                        }
		                        adata+="show:true}";
		                        
                                $.ajax({	
	                                type : "POST", 
	                                url : settings.childSearch.url, 
	                                data : eval('('+adata+')'), 
	                                async : true, 
	                                dataType : "json", 
	                                success : function(data){ 
	                                    grid.addChildData(settings.tbName+"_childSearch_td_"+eval("row."+settings.mostly),data); 
	                                },
	                                complete : function(XMLHttpRequest,textStatus){}, 
	                                beforeSend : function(){}
                                });      
		                    }
		                }
		                
		            });	
		        }
		        
		        //绑定选择
		        var footDivId=settings.tbName+"_foot_tfoot";
		        $("#"+settings.tbName+"_grid").append("<tfoot id=\""+footDivId+"\" class=\"foooter font_statistics\"></tfoot>");
		            //加载批量操作
		        if(settings.allOperates&&settings.mostly){
		            var alloperStr="<tr><td  align=\"left\" colspan=\""+settings.columns.length+"\"><input id=\""+settings.tbName+"_allchk\" type=\"checkbox\" />全选";
		            $.each(settings.allOperates, function(_i,_row){
		                alloperStr+=" <a href=\"javascript:void(0);\" id=\""+settings.tbName+"_all"+_row.name+"\">"+_row.text+"</a>";
		            });
		            alloperStr+="</td></tr>";
		            $("#"+footDivId).append($(alloperStr));
		            
		            $("#"+settings.tbName+"_allchk").click(function(){grid.selectAllCheckBox(this)});
		            
		            //执行事件
		            $.each(settings.allOperates, function(_i,_row){
		                $("#"+settings.tbName+"_all"+_row.name+"").click(function(){grid.allOperates(_row);});
		            });
		        }
		        
		        if(settings.pager) grid.pagination(footDivId);
		    },
		    childFlex:function(type,id){
		        if(type) $("#"+settings.tbName+"_childSearch_tr_"+id).show();
		        else $("#"+settings.tbName+"_childSearch_tr_"+id).hide();
		    },
		    addChildData:function(obj,data){
		        
		        if(data){
		            var tr="<table width=\"100%\" border=\"0\" id=\""+settings.tbName+"_Child_grid\" class=\"gridviewchild\" cellpadding=\"0\" cellspacing=\"1\" class=\"childSearch\">";
		            //内容页头
		            if (settings.childSearch.columns){
			            var head="<tr class=\""+settings.childSearch.hearderCss+"\">";	
			            var col="<colgroup>";

			            for (i=0;i<settings.childSearch.columns.length;i++){
				            var c = settings.childSearch.columns[i];
			                head+="<th";
            				
                            if(c.width!=null&&c.width!="") head+=" width=\""+c.width+"px\"";
                            head+=">";
                            head+=c.title;
                            head+="</th>";
                            col+="<col";
                            col+=">";
			            }

//			            if(settings.operates.length>0){
//			                head+="<th width=\"120\">操作</th>";
//			                col+="<col>"
//			            }
            			
			            head+="</tr>";
			            col+="</colgroup>";
            			
                        tr+=head+col;
		            }		
                            
                    tr+="<tbody></tbody>";
                    
                    //内容
		            $.each(data,function(i,row){

		                if(i>=0){
		                    
		                    tr+="<tr style=\"background-color:"+settings.onMouseOutColor+"\" onmouseover=\"this.style.backgroundColor='"+settings.onMouseOverColor+"'\" onmouseout=\"this.style.backgroundColor='"+settings.onMouseOutColor+"'\">";
		                    var _row_len=0;
		                    $.each(settings.childSearch.columns, function(_i,_row){
                               for (col in row){
                                    if(_row.field==col){
                                        var field=decodeURIComponent(eval("row."+col));
                                        
                                        //是否需要模板替换
                                        if(_row.template){
                                            field=_row.template.replace(/\{.+?\}/g, function(v){
                                                return eval("row."+v.replace("{","").replace("}",""));
                                            });                                            
                                        }
                                        
                                        //是否需要替换
                                        if(_row.replace){
                                            $.each(_row.replace, function(__i,__row){      
                                                if(field==__row.oldValue) field=__row.newValue;
                                                //field=field.replace(__row.oldValue,__row.newValue);                                                
                                            });
                                        }
                                        
                                        //如果字段为AJAX替换字段
                                        if(_row.fieldFrom){
                                            var dataJson="{";
	                                        for(var key in _row.fieldFrom.data){
	                                            dataJson+=key.toString()+":\""+_row.fieldFrom.data[key].replace("$this",field)+"\",";
	                                        }
	                                        dataJson+="show:true}";
	                                        field="无";
                                            $.ajax({	
                                                type : "POST", 
                                                url : _row.fieldFrom.url, 
                                                data : eval('('+dataJson+')'), 
                                                async : false, 
                                                dataType : "json", 
                                                success : function(data){
                                                    if(eval("data."+_row.fieldFrom.field)) field=eval("data."+_row.fieldFrom.field);
                                                }
                                            });
                                        }
                                        
                                        //检查数据类型，为JSON则输出JSON类型
                                        if(_row.datatype){
                                            if(_row.datatype=="json"){
                                                var jsonstr="";
                                                if(field){
                                                    $.each(eval(field),function(_json_i,_json_p){              
                                                        jsonstr+=_json_p.Name+"："+_json_p.Value+"<br>";
                                                    });   
                                                }     
                                                field=jsonstr;
                                            }
                                        }
  
                                        if(_row.len){
                                            if(field.length>_row.len) field="<font title='"+field+"'>"+field.substring(0,_row.len)+"..</font>";
                                        }
                                        
                                        
                                        if(!field) field="&nbsp;"
                                        
                                        tr+="<td";
                                            
                                        if(_row.width!=null&&_row.width!="") tr+=" width=\""+_row.width+"\" ";
                                        if(_row.algin) tr+=" style=\"text-align:"+_row.algin+"\" ";
                                        tr+=">&nbsp;";
                                        tr+=field;
                                        tr+="</td>";
                                    }
                               }
                               _row_len++;
                            });
		                    tr+="</tr>";
		                }

		            });	

		            tr+="</table>";
                    
		            $("#"+obj).html(tr);
		        }else $("#"+obj).remove();
		    },
		    ajaxData:function(){
		        var data="{";
		        for(var key in settings.data){
		            data+=key.toString()+":\""+settings.data[key]+"\",";
		        }
		        for(var key in settings.order){
		            data+=key.toString()+":\""+settings.order[key]+"\",";
		        }
		        if(settings.pager) data+="pageindex:"+settings.pageIndex+",pagesize:"+settings.pageSize+",";
		        data+="show:true}";
                //alert(data);
                $.ajax({	
	                type : "POST", 
	                url : settings.url, 
	                data : eval('('+data+')'), 
	                async : true, 
	                dataType : "json", 
	                success : function(data){ grid.addData(data) },
	                complete : function(XMLHttpRequest,textStatus){
	                    //alert(XMLHttpRequest.readyState );
	                    if(textStatus!="success") alert("错误！原因："+textStatus);
                        $("#loadMaskID").hide();
                        $("#loadWindowsID").hide();
	                }, 
	                beforeSend : function(){
		                $.feMaskWindow({name:"load",titleHtml:"数据载入..",winType:2,width:350,height:120,closeId:"",desc:"<div style=\"float:left;text-align:center;color:#666; margin:20px; width:300px;\"><img src=\"../Images/loadbar.gif\" /><br />"+settings.loadMessage+"</div>"});
	                }
                });      
                      
		    },
		    pagination:function(footDivId){
                var totalPage=1;    //总页数
                var tr="<tr><td  colspan=\""+settings.columns.length+1+"\">";
                if(settings.pageSize<settings.totalData) totalPage=Math.round(settings.totalData/settings.pageSize);                
                if(settings.pageIndex>totalPage) settings.pageIndex=totalPage;
                
                tr+="共"+totalPage+"页/"+settings.totalData+"条数据 当前第"+settings.pageIndex+"页 每页"+settings.pageSize+"条数据 ";
                
                tr+="每页显示<select id=\""+settings.tbName+"_page_select\">";
                for (var nx=0;nx<settings.perPageOptions.length;nx++)
			    {
			        var sel="";
				    if (settings.pageSize == settings.perPageOptions[nx]) sel+= "selected=\"selected\"";
				    tr+="<option value='" +settings.perPageOptions[nx] + "' "+sel+ " >" + settings.perPageOptions[nx] + "&nbsp;&nbsp;</option>";
			    };
                tr+="</select>条";

                if(totalPage>1&&settings.pageIndex>1){
                    tr+=" <a href=\"javascript:void(0);\" id=\""+settings.tbName+"_page_home\">[首页]</a> ";
                    tr+=" <a href=\"javascript:void(0);\" id=\""+settings.tbName+"_page_last\" >[上一页]</a> ";
                }
                
                if(totalPage>1&&settings.pageIndex<totalPage){
                    tr+=" <a href=\"javascript:void(0);\"  id=\""+settings.tbName+"_page_next\">[下一页]</a> ";
                    tr+=" <a href=\"javascript:void(0);\" id=\""+settings.tbName+"_page_end\">[尾页]</a> ";
                }
                    
                tr+="跳转:<input type='text' size='1' id='page_index_input' value='"+settings.pageIndex+"' /> ";
                tr+="<input type='button' class='button' id=\""+settings.tbName+"_page_btn\" value='跳转'/>";
                tr+="</td></tr>";
                $("#"+footDivId).append(tr);

                $("#"+settings.tbName+"_page_home").click(function(){ grid.changePage(1); });        
                $("#"+settings.tbName+"_page_last").click(function(){ grid.changePage(settings.pageIndex-1); });    
                $("#"+settings.tbName+"_page_next").click(function(){ grid.changePage(settings.pageIndex+1); });    
                $("#"+settings.tbName+"_page_end").click(function(){ grid.changePage(totalPage); });    
                $("#"+settings.tbName+"_page_btn").click(function(){ grid.changePage($("#page_index_input").val()); }).css({width:"40px"});  
                $("#"+settings.tbName+"_page_select").change(function(){ grid.changePageSize(this.value); });    
		    },
		    changePage:function(page){
		        settings.pageIndex=page;
		        $(control).feGrid(settings);
		    },
		    changePageSize:function(pageSize){
		        settings.pageSize=pageSize;
		        $.cookie("fe_"+settings.tbName+"_pageSize",settings.pageSize);  
		        $(control).feGrid(settings);
		    },
		    selectCheckBox:function(obj){
		        var allVal=$("#"+settings.tbName+"_val").val();
		        if(obj.checked){
		            if(allVal.indexOf(","+obj.value)==-1) allVal+=","+obj.value;
		        }    
		        else{
		            if(allVal.indexOf(","+obj.value)!=-1) allVal=allVal.replace(","+obj.value,"");
		        }
		        $("#"+settings.tbName+"_val").val(allVal);
		    },
		    selectAllCheckBox:function(obj){		       
		        if($(obj).attr("checked")) $("#"+settings.tbName+" tbody input[@type='checkbox']").attr("checked","checked").each(function(){ grid.selectCheckBox(this);});		            
		        else  $("#"+settings.tbName+"  tbody input[@type='checkbox']").attr("checked","").each(function(){ grid.selectCheckBox(this);});		            
		    },
		    allOperatesFunction:function(r,idlist){
		        var data="{";
		        for(var key in r.data){
		            data+=key.toString()+":\""+r.data[key]+"\",";
		        }
		        data+=settings.mostly+"List"+":\""+idlist+"\"}";
		        $.ajax({	
	                type : "POST", 
	                url : r.url, 
	                data : eval('('+data+')'), 
	                async : true, 
	                dataType : "json", 
	                success : function(data){  },
	                complete : function(XMLHttpRequest,textStatus){$(control).feGrid(settings);}, 
	                beforeSend : function(){}
                });
		    },
		    allOperates:function(r){
		        var val=$("#"+settings.tbName+"_val").val();
		        if(!val) alert("您没有选中任何项！");
		        else if(confirm("您确定执行"+r.text+"，所选中的 "+(val.split(',').length-1)+" 项吗？执行操作后不可恢复！")){		
		            grid.allOperatesFunction(r,val.substring(1,val.length));
		        }
		    },
		    del:function(id){
		        if(confirm("您确定删除这条数据吗？删除后不可恢复！")){		
		            grid.delFunction(id);
		        }
		    },
		    search:function(){
		        if (settings.columns){
		            var data="{";
		            for(var key in settings.data){
		                data+=key.toString()+":\""+settings.data[key]+"\",";
		            }
		            for (i=0;i<settings.columns.length;i++){
				        var c = settings.columns[i];
				        if(c.search){
				            if(c.searchParams){
				                var _field=c.field;
				                if(c.searchField) _field=c.searchField;			
				                
                                switch(c.searchParams.type){
                                    case "text":
                                        data+=c.field+":\""+$("#"+settings.tbName+"_search_id_"+_field).val()+"\",";
                                        break;
                                    case "date":
                                        data+=_field+"_Start:\""+$("#"+settings.tbName+"_search_id_"+_field+"_Start").val()+"\",";
                                        data+=_field+"_End:\""+$("#"+settings.tbName+"_search_id_"+_field+"_End").val()+"\",";
                                        break;
                                    case "select":
                                        data+=_field+":\""+$("#"+settings.tbName+"_search_id_"+_field).val()+"\",";
                                        break;
                                } 
                            }
                        }  
			        }
		            data+="show:true}";
		          
		            settings.data=eval('('+data+')');
		            $(control).feGrid(settings);//重新加载		            
		        }
		    },
		    selectColumns:function(){
		        if($("#"+settings.tbName+"_search_s").attr("alt")=="点击展开") $("#"+settings.tbName+"_list").css("top","180px");
		        else $("#"+settings.tbName+"_list").css("top","270px");
		        if($("#"+settings.tbName+"_list").css("display")=="none") $("#"+settings.tbName+"_list").show();
		        else $("#"+settings.tbName+"_list").hide();
		    },
		    order:function(field){
		        if(settings.order.order==field){
		            if(settings.order.by==0) settings.order.by=1;
		            else settings.order.by=0;
		        }else{
		            settings.order.order=field;
		            settings.order.by=1;
		        }
		        
		        $(control).feGrid(settings);//重新加载	
		    }
		};
		
		grid.addHeader();
		grid.addSearch();
		grid.addTab();
		
		$("#"+settings.tbName).append("<div class=\"gridview\"><table width=\"100%\" border=\"0\" id=\""+settings.tbName+"_grid\" cellpadding=\"0\" cellspacing=\"1\"></table><input type=\"hidden\" id=\""+settings.tbName+"_val\"></div>");
		
		//内容页头
		if (settings.columns){
			var tr="<tr class=\""+settings.hearderCss+"\">";	
			var col="<colgroup>";
			if(settings.allOperates&&settings.mostly){
			    tr+="<th></th>";
			    col+="<col></col>";
			}
			for (i=0;i<settings.columns.length;i++){
				var c = settings.columns[i];
				if(c.def){
				    tr+="<th";
    				
                    if(c.width!=null&&c.width!="") tr+=" width=\""+c.width+"px\"";
                    tr+=">";
                    if(c.order){
                        tr+="<a href=\"javascript:void(0)\" id=\""+settings.tbName+"_order_"+c.field+"\" title=\"点击排序\">"+c.title;
                        if(c.field==settings.order.order){
                            if(settings.order.by==1) tr+="<img src=\""+settings.imagesPath+"list_icon_01.gif\" border=0 />";
                            else  tr+="<img src=\""+settings.imagesPath+"list_icon_02.gif\" border=0 />";
                        }
                        tr+="</a>";
                    }else tr+=c.title;
                    
                    tr+="</th>";
                    
                    
                    col+="<col";
                    //if(!c.def) col+=" style=\"display:none;\"";
                    col+=">";
                }
			}
			
			
			
			if(settings.operates.length>0){
			    tr+="<th width=\"120\">操作</th>";
			    col+="<col>"
			}
			
			tr+="</tr>";
			col+="</colgroup>";
			

			$("#"+settings.tbName+"_grid").append(tr).append(col);
			
			for (i=0;i<settings.columns.length;i++){
			    var c = settings.columns[i];
			    if(c.order){
			        $("#"+settings.tbName+"_order_"+c.field).click(function(){
			            grid.order(this.id.replace(settings.tbName+"_order_",""));
			        });
			    }    
			}
		}		
                
        settings.tbodyId=settings.tbName+"_body_tbody";
        $("#"+settings.tbName+"_grid").append("<tbody id=\""+settings.tbodyId+"\"></tbody>");
        grid.ajaxData();       
        grid.addSelectColumns();
    };
    
    //****************validator初始化
    $.fn.feValidator = function(settings){
        return this.each( function(){
			if (!docloaded){
				$(this).hide();
				var control = this;
				$(document).ready(function (){
				    $.feValidator(control,settings);
				});
			}else $.feValidator(this,settings);
		});
    };
    
    //submit
    $.feValidatorForm=function(formid,func,url,validatorGroup){
        if(!validatorGroup) validatorGroup=1;
        $("#"+formid).submit(function(){        
            var _isValidator=true;
            for(var i=0;i<feValidatorList.length;i++){
                if(feValidatorList[i].validatorGroup==validatorGroup){
                    feValidatorList[i].tosubmit=true;
                    $("#"+feValidatorList[i].controlid).feValidator(feValidatorList[i]);  
                }    
            }            
            for(var i=0;i<feValidatorList.length;i++){
                if(feValidatorList[i].validatorGroup==validatorGroup){
                    if(!feValidatorList[i].isValid){     
                        _isValidator=false;
                        continue;
                    }
                }    
            }
            if(_isValidator) {
                if(func) eval(func);
                else location.href=url;                
            }
            return false;
        });        
    }
    
    $.feValidator = function(control,settings){
        //设置
		settings = $.extend({
			 validatorGroup: 1, 
			 empty:false,
			 tosubmit:false,//是否来自form提交
			 controlid:control.id,
			 type:'',//验证类型
			 min:0,//最小长度
			 max:2000,//最大长度
			 cNormCss:"cNormCss",
			 cNormMessage:"",		
			 cLoadCss:"cLoadCss",
			 cLoadMessage:"",	 
			 //注释框设置
			 hintBox:'',//注释框
			 hint:1,//注释类型
			 hId:'',//注释框ID
			 hCss:'{}',//注释框绑定样式
			 hNormCss:'hintNormCss',//注释框样式
			 hNormMessage:'',//正常情况下的注释内容.
			 hLoadCss:'hLoadCss',//注释框点击样式
			 hClickCss:'hClickCss',//注释框点击样式
			 hClickMessage:'',//点击情况下的注释内容
			 hRightCss:'hRightCss',//注释框正确样式
			 hRightMessage:'',//正确输入后的注释内容
			 hErrorCss:'hErrorCss',//注释框错误样式
			 hErrorMessage:'',//错误输入后的注释内容
			 lastValidator:[],
			 planMessage:'正在检验...', //载入数据进度条显示内容
			 triggerEvent:'blur',//当前事件
			 isValid:false  //是否已经验证成功
		  }, settings);
		
		var v={
		    createValid:function(){		        
	            var codes = new Array(settings.min);       //用于存储随机验证码
                var colors = new Array("Red","Green","Gray","Blue","Maroon","Aqua","Fuchsia","Lime","Olive","Silver");
                var code="";
                if(!settings.tosubmit){    
                    for(var i=0;i < codes.length;i++)
                    {//获取随机验证码
                        codes[i] = Math.floor(Math.random()*10);
                        code+=codes[i];
                    }
                
                    //把随机生成的值存储在cookie里。
                    $.cookie("fe_ValidCode",code);
                }else{
                    codes=new Array(settings.min);        
                    for(var i=0;i < $.cookie("fe_ValidCode").length;i++)
                    {
                        //获取随机验证码
                        codes[i] = $.cookie("fe_ValidCode").substring(i,(i+1));                        
                    }
                }
                
		        if($("body [id="+settings.controlid+"_validcode]").length==0)
		            $(control.parentNode).append("<div id=\""+settings.controlid+"_validcode\" style=\"border:1px solid #ccc;float:left;line-height:20px;margin:0 3px 0 3px;padding-right:9px;\"></div>")
	            
	            var s="<a href=\"javascript:void(0)\" title=\"点击更换验证码\" id=\""+settings.controlid+"_validcode_a\">"; 
	            for(var i=0;i < codes.length;i++){   
	                s+="<span style=\"color:"+colors[Math.floor(Math.random()*10)]+";\">"+codes[i]+"</span>";      	   
	            }         
	            s+="</a>";	            

			    $("#"+settings.controlid+"_validcode").html(s);
			    
			    $("#"+settings.controlid+"_validcode_a").click(function(){
			         $(control).feValidator(settings);
	            });
		    },
		    createHint:function(){
		        $(control.parentNode).css({float:"left"});
		        settings.hId = settings.hId ? settings.hId : control.id+"_hint";	
		        if($("body [id="+settings.hId+"]").length==0){		            	            
				    $(control.parentNode).append($("<div class='"+settings.hNormCss+"' id='"+settings.hId+"'\"></div>").html(settings.hNormMessage).css({"margin-top":"2px"}));
				    if(settings.hCss) $("#"+settings.hId).css(settings.hCss);
		        }
		    },
		    onFocus:function(){
		        if(settings.cLoadCss) $(control).attr("class",settings.cLoadCss);
		        if(settings.hint==1){		            
		            if(settings.hClickCss) $("#"+settings.hId).attr("class",settings.hClickCss);
		            if(settings.hClickMessage) $("#"+settings.hId).html(settings.hClickMessage);
		        }
		    },
		    onBlur:function(){
		        if(settings.hint==1){
		            if(settings.hNormCss) $("#"+settings.hId).attr("class",settings.hNormCss);
		            if(settings.hNormMessage) $("#"+settings.hId).html(settings.hNormMessage);
		        }    
		    },
		    onError:function(){
		        if(settings.hint==1){
		            if(settings.hErrorCss) $("#"+settings.hId).attr("class",settings.hErrorCss);
		            if(settings.hErrorMessage) $("#"+settings.hId).html(settings.hErrorMessage);
		        }else if(settings.hint==2){
		            alert(settings.hErrorMessage);
		        }
		        
		        
		    },
		    onRight:function(){
		        if(settings.hint==1){
		            if(settings.hRightCss) $("#"+settings.hId).attr("class",settings.hRightCss);
		            if(settings.hRightMessage) $("#"+settings.hId).html(settings.hRightMessage);
		        }    
		    },
		    onLoad:function(){
		        if(settings.hLoadCss) $("#"+settings.hId).attr("class",settings.hLoadCss);
		    },
		    inputValidator:function(val){
		        switch(settings.type){
		            case "密码":
		                settings.isValid =true;
		                break;
		            case "整形":
		                settings.isValid = (new RegExp(regexEnum.intege)).test(val);
		                break;
		            case "数字":
		                settings.isValid = (new RegExp(regexEnum.num)).test(val);
		                break;
		            case "金额":
		                settings.isValid = (new RegExp(regexEnum.decmal)).test(val);
		                break;   
		            case "邮箱地址":
		                settings.isValid = (new RegExp(regexEnum.email)).test(val);
		                break;
		            case "颜色":
		                settings.isValid = (new RegExp(regexEnum.color)).test(val);
		                break;
		            case "URL":
		                settings.isValid = (new RegExp(regexEnum.url)).test(val);
		                break;
		            case "中文":
		                settings.isValid = (new RegExp(regexEnum.chinese)).test(val);
		                break;
		            case "ASCII":
		                settings.isValid = (new RegExp(regexEnum.ascii)).test(val);
		                break;
		            case "邮编":
		                settings.isValid = (new RegExp(regexEnum.zipcode)).test(val);
		                break;
		            case "手机":
		                settings.isValid = (new RegExp(regexEnum.mobile)).test(val);
		                break;
		            case "IP":
		                settings.isValid = (new RegExp(regexEnum.ip4)).test(val);
		                break;
		            case "非空":
		                settings.isValid = (new RegExp(regexEnum.notempty)).test(val);
		                break;
		            case "图片":
		                settings.isValid = (new RegExp(regexEnum.picture)).test(val);
		                break;
		            case "RAR":
		                settings.isValid = (new RegExp(regexEnum.rar)).test(val);
		                break;
		            case "日期":
		                settings.isValid = (new RegExp(regexEnum.date)).test(val);
		                break; 
		            case "QQ":
		                settings.isValid = (new RegExp(regexEnum.qq)).test(val);
		                break;
		            case "电话":
		                settings.isValid = (new RegExp(regexEnum.tel)).test(val);
		                break;
		            case "用户名":
		                settings.isValid = (new RegExp(regexEnum.username)).test(val);
		                break;
		            case "字母":
		                settings.isValid = (new RegExp(regexEnum.letter)).test(val);
		                break;
		            case "身份证":
		                settings.isValid = (new RegExp(regexEnum.idcard)).test(val);
		                break;
		            case "短时间":
		                settings.isValid = isTime(val);
		                break;    
		            case "短日期":
		                settings.isValid = isDate(val);
		                break; 
		            case "验证码":
		                settings.isValid = val==$.cookie("fe_ValidCode");
		                break;   
		            case "文件名":
		                settings.isValid = (new RegExp(regexEnum.filename)).test(val);
		                break;         
		            default:
		                settings.isValid =true;
		                break;
		        }

                //长度检查
		        if(val.length<settings.min||val.length>settings.max)  settings.isValid=false;
		        
		        //数字大小检查
		        if(settings.minNum>=0||settings.maxNum>=0)
		        {
		            if(val<settings.minNum||val>settings.maxNum)  settings.isValid=false;
		        }
		        
		        //再次验证
		        if(settings.lastValidator.length>0){
		            for(var i=0;i<settings.lastValidator.length;i++){
		                switch(settings.lastValidator[i].type){
		                    case "balance":
		                        if(!settings.lastValidator[i].controlid){
		                            settings.isValid=false;
		                            settings.hErrorMessage="必须指定对比的控件。";
		                        }else{
		                            if(val!=$("#"+settings.lastValidator[i].controlid).val()){
		                                settings.isValid=false;
		                                if(settings.type=="密码") settings.hErrorMessage="2次输入的密码必须一致。";
		                                else  settings.hErrorMessage="2次输入的数据必须一致。";
		                            }   
		                        }
		                        break;
		                     case "ajax":
		                        var data="{";
		                        for(var key in settings.lastValidator[i].data){
		                            data+=key.toString()+":\"";
		                            if(settings.lastValidator[i].data[key]=="{this}") data+=val;
		                            else data+=settings.lastValidator[i].data[key];
		                            data+="\",";
		                        }
		                        data+="show:true}";
            		    
		                        $.ajax({	
			                        type : 'POST', 
			                        url : settings.lastValidator[i].url, 
			                        data : eval('('+data+')'), 
			                        async : settings.lastValidator[i].async, 
			                        dataType : 'json', 
			                        success : function(data){
			                            if(data.staus=="ok") settings.isValid=true;
			                            else{
			                                settings.isValid=false;
			                            }    
			                        },
			                        complete : function(){
				                        $("input[@type='button']").attr("disabled",false);
			                        }, 
			                        beforeSend : function(){
				                        $("input[@type='button']").attr("disabled",true);
				                        v.onLoad();
			                        }, 
			                        error : function(){
			                            settings.isValid=false;
			                        }
		                        });
		                        break;		                        
		                }
		            }
		        }
		        
		        if(settings.isValid){ 
		            v.onRight();isValidator=true;
		         }
		        else{ v.onError(); isValidator=false;}
		    }
		};
		//$(control.parentNode).append("<div id=\""+controlid+"_div\"></div>");
		
		if(settings.type=="验证码"){
		    v.createValid()
		}
		
		

        if(settings.hint==1){
            v.createHint()
            $(control).css({float:"left"});
        }
		
        //初始控件的设置
		$(control)
		.show() 
		.attr("class",settings.cNormCss)
		;
		
		if(settings.cNormMessage&&$(control).html()=="") $(control).html(settings.cNormMessage);
		
		
		var tags=control.tagName.toLowerCase();
		var types=$(control).attr("type");
		if(tags == "input" || tags=="textarea"){
		    $(control).focus(function()
			{	
			    v.onFocus();		   
			});
			$(control).bind(settings.triggerEvent,function(){
			    if(settings.cNormCss) $(control).attr("class",settings.cNormCss);
	
			    v.inputValidator(this.value);
			});
			//判断是否由提交按钮提交过来的
			if(settings.tosubmit) {v.inputValidator($(control).val());}
		}else if(tags == "select"){
		    var s=$(control).val();
		    $(control).empty();
		    if(settings.item){
		        $.each(settings.item, function(i, n){
		            control.options.add(new Option(n.text,n.value,false,n.selected));	           
		        });
		    }
		    if(settings.dataFrom){
	            if(settings.dataFrom.type=="ajax"){
	                control.options.add(new Option("","0"));
	                $.ajax({
                        type:"POST",
                        async:false,
                        url:settings.dataFrom.url,
                        data:settings.dataFrom.data,
                        dataType:"json",    
                        success:function(data) {
                            if(data.length>0){                                
                                $.each(data, function(i, n){
                                    if(eval("n."+settings.dataFrom.text))
                                        control.options.add(new Option(decodeURIComponent(eval("n."+settings.dataFrom.text)),eval("n."+settings.dataFrom.value)));
                                });
                            }
                        }
                    });
                }
		    }
		    $(control).val(s);           
		    $(control).focus(function()
			{	
			    v.onFocus();		   
			});
			$(control).bind(settings.triggerEvent,function(){
			    if(settings.cNormCss) $(control).attr("class",settings.cNormCss);
	            
			    v.inputValidator(this.value);
			});
			//判断是否由提交按钮提交过来的
			if(settings.tosubmit) v.inputValidator($(control).val());
		}
		
		if (feValidatorList == null )  feValidatorList = new Array(); 
		var isInValidatorList=false;

		for(var fevl in feValidatorList){
		    if(feValidatorList[fevl].controlid==settings.controlid&&feValidatorList[fevl].validatorGroup==settings.validatorGroup){
		        feValidatorList[fevl].isValid=settings.isValid;
		        isInValidatorList=true;
		    }    
		}
		if(!isInValidatorList) feValidatorList.push(settings);
		
		
    };
    
    //****************Ajax
    $.feAjax=function(settings){
        var reobj=null;
        
        settings = $.extend({
	         sType: 'read', 
	         loadType:'Mask',
	         url:'',
	         data:{},
	         type:'POST',
	         dataType:'json',
	         async:true,
	         locationUrl:'',
	         func:'',
	         func1:'',
	         buttons:{}
          }, settings);          
        $.ajax({	            
	        type : settings.type, 
	        url : settings.url, 
	        data : settings.data, 
	        async : settings.async, 
	        dataType : settings.dataType, 
	        success : function(data){
	            if(settings.sType=="submit"){
	                //提交类型
	                
	                if(data.staus=="ok"){
	                    if(settings.locationUrl) location.href=settings.locationUrl;
	                    else{
	                        if(settings.func) eval(settings.func);
	                        if(settings.func1) eval(settings.func1);
	                    }    
	                }else{
	                    alert(data.msg);
//	                    if(settings.func) eval(settings.func);
//	                    if(settings.func1) eval(settings.func1);
	                    return false;
	                }
	            }else if(sType="read"){
	                
	                if(data){
	                    if(settings.func) eval(settings.func);
	                    if(settings.func1) eval(settings.func1);
	                }    
	            }
	        },
	        complete : function(XMLHttpRequest,textStatus){
	            $("input[@type='submit']").attr({"disabled":false});
                
                if(settings.sType!="submit"){
                    if(settings.loadType=="Mask"){
                        $("#loadMaskID").hide();
                        $("#loadWindowsID").hide();
                    }
                }        
	        }, 
	        beforeSend : function(){
		        $("input[@type='submit']").attr({"disabled":true});
		        if(settings.sType!="submit"){
		            if(settings.loadType=="Mask"){
		                $.feMaskWindow({name:"load",winType:2,width:400,titleHtml:"数据载入中...",desc:"<div style=\"text-align:center;color:#666; margin:20px; width:400px;\"><img src=\"../Images/loadbar.gif\" /><br />数据载入中，请稍候...</div>"});
		            }
		        }    
	        },
	        error:function (XMLHttpRequest, textStatus, errorThrown) {
                if(textStatus!="success") alert("系统错误！原因："+textStatus);
            }
        });
        return reobj;
    }
    
    //****************Mask
    $.feMaskWindow=function(settings){
        settings = $.extend({
             name:"load_",
	         maskCss:'Mask',
	         winType:1,//弹出层类型,1=载入文件，2=输出内容
	         titleHtml:'弹出层',//弹出层标题内容
	         titleCss:'Title',
	         winCss:'Windows',//弹出层css
	         descCss:'Description',
	         desc:'',//内容或html路径
	         closeCss:'Close',//关闭层CSS
	         closeHtml:'关闭',//关闭层内容
	         loadHtml:'正在加载，请稍候...',//载入中内容
	         width:200,
	         height:100,
	         params:[],
	         callback:'',
	         isMove:false//是否允许移动	         	         
          }, settings);
        
        var mask={
            createMask:function(){
                if($("body [id="+settings.name+"MaskID"+"]").length!=0) 
                    $("body [id="+settings.name+"MaskID"+"]").remove();
                $('body').append($("<div class='"+settings.maskCss+"' id='"+settings.name+"MaskID"+"'\"></div>"));
                $("#"+settings.name+"MaskID").css({width:mask.maskSize()[0]+"px",height:mask.maskSize()[1]+"px"}).show(); 
            },
            createWindow:function(){
                var h="<div id=\""+settings.name+"WindowsID"+"\" class=\""+settings.winCss+"\">\
                                    <div id=\""+settings.name+"TitleID"+"\" class=\""+settings.titleCss+"\">\
                                       <div><span>"+settings.titleHtml+"</span><div class=\""+settings.closeCss+"\">";
                if(settings.name+"CloseID") h+="<a href=\"javascript:void(0)\" id=\""+settings.name+"CloseID"+"\">"+settings.closeHtml+"</a>";
                h+="</div></div>\
                                    </div>\
                                    <div id=\""+settings.name+"DescriptionID"+"\" class=\""+settings.descCss+"\" ></div>\
                                    </div>";

                if($("body [id="+settings.name+"WindowsID"+"]").length!=0) 
                    $("body [id="+settings.name+"WindowsID"+"]").remove();
                $('body').append($(h));                                        
            },
            showWindow:function(){
                mask.createMask();
                mask.createWindow();

                
                if(settings.name+"CloseID"!="") $("#"+settings.name+"CloseID").click(mask.closeWindow)
                if($("#"+settings.name+"WindowsID")){
                    $("#"+settings.name+"DescriptionID").css({padding:"0px","text-align":"center","line-height":"40px"}).html(settings.loadHtml);
                    $("#"+settings.name+"WindowsID").css({top:mask.windowSize()[0]+"px",left:mask.windowSize()[1]+"px"}).show();
                    if(settings.width>0) $("#"+settings.name+"WindowsID").css({width:settings.width+"px"});
                    //if(settings.height>0) $("#"+settings.name+"WindowsID").css({height:settings.height+"px"});
                    if(settings.winType==1){     
                      
                        if(settings.params) feMaskWindow_Params=settings.params;
                        $("#"+settings.name+"DescriptionID").load(settings.desc,settings.callback);
                    }else $("#"+settings.name+"DescriptionID").css({padding:"0px","text-align":"center","line-height":"25px"}).html(settings.desc);
                }
            },
            closeWindow:function(){
                $("#"+settings.name+"MaskID").hide();
                $("#"+settings.name+"WindowsID").hide();
            },
            maskSize:function(){
                var myWidth = 0, myHeight = 0;
                myWidth=$("body").width();
                myHeight=$("body").height();
                
                if(myHeight<window.screen.availHeight-130) myHeight=window.screen.availHeight-130;
	            return [myWidth,myHeight];
            },
            windowSize:function(){
                var h=100,w=100;
                var sh=0;
                if(document.documentElement!=null) sh=document.documentElement.scrollTop;
                else sh=document.body.scrollTop;                
                h=window.screen.availHeight/2-settings.height+sh;            
                if(h<50) h=100;
                w=($("body").width()-settings.width)/2;
	            return [h,w];
            }
        }
        
        mask.showWindow(); 
    }
    
    //****************Cookie
    $.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { 
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); 
        }
        var path = options.path ? '; path=' + options.path : '';
        var domain = options.domain ? '; domain=' + options.domain : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { 
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
    
})(jQuery);

var regexEnum ={
        intege:"^-?[1-9]\\d*$",					//整数
        intege1:"^[1-9]\\d*$",					//正整数
        intege2:"^-[1-9]\\d*$",					//负整数
        num:"^([+-]?)\\d*\\.?\\d+$",			//数字
        num1:"^[1-9]\\d*|0$",					//正数（正整数 + 0）
        num2:"^-[1-9]\\d*|0$",					//负数（负整数 + 0）
        decmal:"^([+-]?)\\d*\\.?\\d+$",			//浮点数
        decmal1:"^\\d*\\.?\\d+$",　　	//正浮点数
        decmal2:"^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",　 //负浮点数
        decmal3:"^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",　 //浮点数
        decmal4:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",　　 //非负浮点数（正浮点数 + 0）
        decmal5:"^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",　　//非正浮点数（负浮点数 + 0）

        email:"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
        color:"^[a-fA-F0-9]{6}$",				//颜色
        url:"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$",	//url
        chinese:"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",					//仅中文
        ascii:"^[\\x00-\\xFF]+$",				//仅ACSII字符
        zipcode:"^\\d{6}$",						//邮编
        mobile:"^(13|15)[0-9]{9}$",				//手机
        ip4:"^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",	//ip地址
        notempty:"^\\S+$",						//非空
        picture:"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
        rar:"(.*)\\.(rar|zip|7zip|tgz)$",								//压缩文件
        date:"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",					//日期
        qq:"^[1-9]*[1-9][0-9]*$",				//QQ号码
        tel:"^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$",	//电话号码的函数(包括验证国内区号,国际区号,分机号)
        username:"^([a-zA-Z0-9]|[_]){4,30}$",						//用户名。匹配由数字、26个英文字母或者下划线组成的字符串
        letter:"^[A-Za-z]+$",					//字母
        letter_u:"^[A-Z]+$",					//大写字母
        letter_l:"^[a-z]+$",					//小写字母
        filename:"^.+\.(aspx)|(htm)|(html)|(shtml)$",					//文件名
        idcard:"^[1-9]([0-9]{14}|[0-9]{17})$"	//身份证
    }
                
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 

function isCardID(sId){ 
	var iSum=0 ;
	var info="" ;
	if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
	sId=sId.replace(/x$/i,"a"); 
	if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
	sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
	var d=new Date(sBirthday.replace(/-/g,"/")) ;
	if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
	for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
	if(iSum%11!=1) return "你输入的身份证号非法"; 
	return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") 
} 

//短时间，形如 (13:04:06)
function isTime(str){
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) {return false}
	if (a[1]>24 || a[3]>60 || a[4]>60) return false;
	return true;
}

//短日期，形如 (2003-12-05)
function isDate(str){
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
	if(r==null) return false; 
	var d= new Date(r[1], r[3]-1, r[4]); 
	return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//长时间，形如 (2003-12-05 13:04:06)
function isDateTime(str){
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
	var r = str.match(reg); 
	if(r==null) return false; 
	var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
	return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

function sc(str){
    var returnStr=str;
    switch(str.toLowerCase()){
        case "true":
            returnStr="是";
            break;
        case "false":
            returnStr="否";
            break;
    }
    return returnStr;
}