window.$=function(e){return (util.isString(e)||util.isNumber(e))?(document.getElementById(e)):e;} 
var D=document,util={
    $FA: function(a){
        var r=[];
        util.map(a,function(e){r.push(e)});
        return r
    },
	$AEV: function(t,e,fn){
		if(window.addEventListener){
			t.addEventListener(e,fn,false)
		}else if(window.attachEvent){
			t.attachEvent("on"+e,fn)
		}else{
			t["on"+e]=fn
		}
	},
	$ATT: function(a,b){
	   for(var i in a){
	      b[i]=a[i];
	   }
	},
	//获取Url中的参数
	$P: function(a,b){
		var s=null,str;
		b=b||location.href;
		if(util.isString(a)){
			if(b.match(new RegExp("[?&]?"+a+"=([^&#]*)[&$]?","gi"))){
				s=RegExp.$1
			}
		}else if(util.isNumber(a)&&(str=b.match(/\/([^\/]+)|^([^\/]+)$/gi))){
			s=a<str.length?str[a]:null;
			if(s.charAt(0)=="/"){
				s=s.substring(1)
			}
		}
		return s;
	},
	//函数绪定到某个对像
	$b: function(){
		var a=util.$FA(arguments),o=a.shift(),f=a.shift();
		return function(){
		   return f.apply(o,a.concat(util.$FA(arguments)))
		}		
	},	
	//根据name获取元素
	$by: function(n){
		return D.getElementsByName(n)	
	},
	//增加一个css样式
	addClass: function(e,c){
		if (!util.hasClass(e,c)) e.className = (e.className + ' ' + c).clean();
		return e
	},
	//移除一个css样式
	removeClass: function(e,c){
		e.className = e.className.replace(new RegExp('(^|\\s)' + c + '(?:\\s|$)'), '$1').clean();
		return e
	},	
	//是否包含样式类
	hasClass: function(e,c){
		return e.className.contains(c, ' ');
	},		
	//浏览器是否是IE
    isIe: function(){
    	var u=navigator.userAgent;
        return (u.toLowerCase().indexOf("msie")!=-1&&u.toLowerCase().indexOf("opera")==-1)
    },
    //浏览器是否是FireFox
    isMozilla: function(){
        return (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1&&navigator.productSub>=20030210)
    },
    //是否是数组
    isArray: function(a){
        return a instanceof Array
    },
    isIn:function (a){
       var r=false;
       var s=util.$FA(arguments);
       util.map(s,function(e){
           if(a==e){
             return r=true;
           }
       },1);
       return r;
    },
    toArray: function(a,b){
       if(!b)b=",";
       if(a)return a.split(b);
       else return [];
    },    
    //是否是字符串
    isString:function(a){
        return (typeof a=='string')
    },
    dealNull:function(a){
        return a==null?"":a
    },
    isDict: function(o){
          return String(o).indexOf(" Object")!=-1
    },  
    isObject: function(obj) {
        return (typeof obj=='object')
    },
    isNull: function(a){
        return (a==null||a==""||a==undefined)?true:false;
    },
    isNumber: function(a){
        return typeof a=='number';
    },
    isCheck: function(e){
       e=$(e)
       var t=e.type,n=e.name;
       var checked=false;
       if(t=="checkbox"){
          util.map(util.$by(n),function(d){
             if(d.checked){
               checked=true
             }
          })
       }if(t=="radio"){
          util.map(util.$by(n),function(d){
             if(d.checked){
               checked=true
             }
          })
       }
       return checked
    }
    ,showOrHide:function(){
        var a=util.$FA(arguments);
        var show=false;
        util.map(a,function(e){var d=$(e).style.display;if(d=="none"){$(e).style.display="list-item";show=true;}else {$(e).style.display="none";show=false;}});
        return show;
    }
    ,   
    //显示元素
    show: function(/*elms...*/){
        var a=util.$FA(arguments);
        util.map(a,function(e){$(e).style.display='block'})
    },
	//隐藏元素
    hide: function(/*elms...*/) {
        var a=util.$FA(arguments);
        util.map(a,function(e){$(e).style.display='none'})
    },  
    //创建dom元素
    $C: function(n,a) {    	
              var p,e=D.createElement(n),i=1,h;
        if(a&&util.isDict(a)){
        	var s='',h=util.isIe()&&a.type=='radio',hi=util.isIe()&&a.type=='checkbox';
            for(k in a){
                p=a[k];
               	if(h&&k||hi){
               		if(k!="checked"||(k=="checked"&&p==true)){
               		  s+=' '+k+'='+(util.isString(p)?'\''+p+'\'':p);
               	    }
               	}
         		else{                
	                if(k=="style"){
	                    e.style.cssText=p;
	                }
	                else if(k=="class"||k=='className'){
	                    e.className=p;
	                }
	                else if(k!="checked"||(k=="checked"&&p==true)){
	                    e.setAttribute(k,p);
	                }
                }
            }
            if(h)e=D.createElement('<input type=radio'+s+' >'); 
            if(hi)e=D.createElement('<input type=checkbox'+s+'>');          
            i++
        }
        util.map(arguments,function(p){
        	if(p){
        		var t=typeof(p);
                if(t=='string'||t=='number')
                    p=D.createTextNode(p);
                e.appendChild(p)        		
        	}
        },i)
        return e
    },
    $Ca: function(a,p,s){
      var p,e=D.createElement("A");
      if(a&&util.isDict(a)){
        for(k in a){
            p=a[k];
            if(k=='style')
              e.style.cssText=p;
            else if(k=="class"||k=='className')
	          e.className=p;
	        else e.setAttribute(k,p);  
        }
        if(p){
          var t=typeof(p); 
          if(t=='string'||t=='number'){
           p=D.createTextNode(p);
           e.appendChild(p);
          }
        }
        if(s){
          var common="?";
          for(k in s){
             e.href+=common;
             e.href+=(k+"="+s[k]);
             common="&";
          }
        }
      }
      return e;
    },
    $Ctable: function(a,v,fn,c,f,l){
        var tb=util.$C("table",v);
        var tr=null,td=null;
        var row=0,cell=0;
        util.map(a,function(o,i){
             if(i%c==0){
                tr=tb.insertRow(row);
		        row++;
		        cell=0;
             }
             td=tr.insertCell(cell);
             td.appendChild(fn(o,i));
             cell++;
        },f,l);
        return tb;
    },
    $Clist:function(l,p,a,fns,f,k){
        p=$(p);
        util.map(l,function(o,r){
             tr=p.insertRow(r);
             util.setStyle(tr,a);
		     for(var c=0;c<fns.length;c++){
		       var t=typeof(fns[c]);
               if(t=="function"){
                  td=tr.insertCell(c)
                  var e=fns[c](o,r,c);
                  if(typeof(e)=="object"){
                    td.appendChild(e);
                  }else {
                    td.appendChild(D.createTextNode(e));
                  }
               }else if(t=="string"||t=="number"){
                  td=tr.insertCell(c);
                  td.appendChild(D.createTextNode(fns[c]));
               }
             }
        },f,k);
    },
    //获取单个css属性 
    getCss: function(e,p){
        e=$(e);
        var y;
        if(e.currentStyle)
            y=e.currentStyle[p];
		else if (window.getComputedStyle)
            y=D.defaultView.getComputedStyle(e,null).getPropertyValue(p);
		return y
    },  
    //转换成CSS尺寸  
    getCssDim: function(a){
        return util.isString(a)?a:a+"px"
    }, 
    loadJs:function(s){
        var b=D.body;
		var c= (typeof b.children == "undefined") ? b.childNodes : b.children;
            c = c[0];
        var e = util.$C("script", {type:"text/javascript", charset:"utf-8", src:s});
		b.insertBefore(e, c);
    },
    //设置元素css样式
    setStyle: function(e,s) {
	    e=$(e);
	    var t=e.style,v;
	    for(var p in s){
	    	v=s[p];
	    	t[p]=p.toLowerCase()!='z-index'?util.getCssDim(v):v; 
	    }
    },
    //对数组中部分元素执行fn功能
    map: function(a,fn,/*optional*/f,l){
        var i=f||0,l=l||a.length;
        for(i;i<l;i++){
            var v=fn(a[i],i);
            if(v!=undefined)
                return v
        }
    },
    //查找元素
    find: function(a,fn,/*optional*/f,l){
        var i=f||0,l=l||a.length;
        for(i;i<l;i++)
            if(fn(a[i],i)) return a[i];
        return null
    },
    exist: function(a,b){
      return new String(a).indexOf(b)!=-1; 
    },
    //获取元素值
    $v: function(a){
        if(typeof(a)!='object'){
    	   a=$(a);
    	}
    	var r=null;
    	if(a){
	    	var t=a.type,n=a.name;
	    	if(t=='radio'){
				a=util.find(util.$by(n),function(e){
					return e&&e.checked
				});  
				r=a?a.value:r;     		 	  		
	    	}else if(t=='checkbox'){ 
				util.map(util.$by(n),function(d){
					if(d&&d.checked){
						r=r?r+','+d.value:d.value
					}		
				});     		
	    	}
	    	else
	    		r=a.value;
    	}
		return r    
    },
    //获得数组对象的值，以逗号相隔。
    $vv: function(a){
       var s=util.$by(a),r=null;
       if(s.length>0){
            var o=s[0];
            var t=o.type.toLowerCase(),n=o.tagName.toLowerCase();
            if(t=='text'){
                util.map(s,function(d){
                  if(d.value!=""){
                    r=r?r+','+d.value:d.value;
                  }
                });
            }
            else if(t=='hidden'){
                util.map(s,function(d){
                  if(d.value!=""){
                    r=r?r+','+d.value:d.value;
                  }
                });
            }else if(t=='radio'){
				o=util.find(s,function(d){
					return d&&d.checked
				});  
				r=o?o.value:r;     		 	  		
	    	}else if(t=='checkbox'){
				util.map(s,function(d){
				  if(d&&d.checked){
						r=r?r+','+d.value:d.value
				  }		
				});     		
	    	}else if(n=='select'){
	    	     util.map(s,function(d){
					r=r?r+','+d.value:d.value	
				});
	    	} 
      }
      return r;
    },
    //或缺form的值
    $f: function(data){
     var ele;
     if(DWRUtil._isHTMLElement(data)) ele = data;
     else if(typeof(data) == "string")ele = $(data);
     if(!ele) ele=document.forms[data];
     if (ele != null) {
        if (ele.elements == null) {
          return null;
        }
        var reply = {};
        var key,value;
        for (var i = 0; i < ele.elements.length; i++) {
         if (!util.isNull(ele[i].id)) {
           key = ele[i].id;
         }
         else if (!util.isNull(ele[i].name)) {
           key = ele[i].name;
         }
         else {
           key = "element" + i;
         }
         if(!util.isNull(key)){
           reply[key] = util.$v(ele[i]);
         }
        }
        return reply;
     }  
    },
    $set: function(formId,data){
     var ele;
      if(typeof formId == "string") ele = $(formId);
      if(DWRUtil._isHTMLElement(data)) ele = formId;
      if (ele != null) {
        if (ele.elements == null) {
          return null;
        }
        var key,o;
        var reply = {};
        for (var i = 0; i < ele.elements.length; i++) {
          if (!util.isNull(ele[i].id)) {
           key = ele[i].id;
          }
          else if (!util.isNull(ele[i].name)) {
           key = ele[i].name;
          }
          if(!util.isNull(key)){
           reply[key] = ele[i];
          }
          key=null;
        }
        for(k in data){
          o=reply[k];
          if(o)util.$s(o,data[k]);  
        }
      }
    },
    //设置元素值
    $s: function(e,v){
    	e=$(e);
    	if(!e){
    	  return ;
    	}
    	var t=e.type,f;
    	if(t=='radio'){
			util.map(util.$by(e.name),function(d){
				if(d&&d.value==v)
					d.checked=1;
				else if(d)
					d.checked=0					
			});      		
    	}else{
    		f=e.tagName.toLowerCase();
    		if(f=='select'){
	      		util.map(e.options,function(d){
	      			if(d&&d.value==v){
						d.selected=1;
					}
	      		});	
    		}else if(e&&t=='checkbox'){
    			f=util.isArray(v);
				util.map(util.$by(e.name),function(d){
					if(d&&f)
						util.map(v,function(x){if(x==d.value) d.checked=1});
					else if(d&&d.value==v) 
						d.checked=1	
				});     			
    		}
    		else if(e&&f=='input')
    			e.value=v;
    		else
    			e.innerHTML=v
    	}
    },
    $ss: function(m){
      DWRUtil.setValues(m);
    },
    selectAll: function(o,c){
       var s=util.$by(o);
       c=(c==undefined)?1:c;
       util.map(s,function(d){
          if(d.type=='checkbox'){
             d.checked=c;
          }
       });
    },
    $trim:function(str){
	   return str.replace(/(^\s*)|(\s*$)/g, "");
    },
    $fixed: function (x, n) {
	with(Math){
		var N = Math.pow(10,n);
		return Math.round(x * N) / N;
	 }
   },
   $http: function(h,b){
	  if(!b){
	     var index=0;
	     if(index=h.indexOf("http://")>-1){
	       return h.substring(index+"http://".length-1);
	     }
	  }else {
	      if(h.indexOf("http://")==-1){
	       return "http://"+h;
	     }
	  }
	  return h;
	},
	toDate: function(a) {
	  if (util.isNumber(a)) {
		  var d=new Date();
		  d.setTime(a);
		  a=d
	   }
	  return a
    },
    LZ: function(x) {
	  return (x < 0 || x > 9 ? "" : "0") + x
    },
    formate :function (a, format) {
	  if (a) {
		 format=format || "yyyy-MM-dd";
		 a=util.toDate(a);
		 if (typeof a == "object") {
			var dd=util.LZ(a.getDate());
			var MM=util.LZ(a.getMonth() + 1);
			var yyyy=a.getFullYear();
			var hh=util.LZ(a.getHours());
			var mi=util.LZ(a.getMinutes());
			var ss=util.LZ(a.getSeconds());
			return format.replace("yyyy", yyyy).replace("MM", MM).replace("dd", dd).replace("hh", hh).replace("mm", mi).replace("ss", ss);
		 }
	  }
    },
    limit: function(a,l){
      if(a){
         if(typeof(a)=='string'){
            if(a.length>l){
              return a.substring(0,l)+"...";
            }
         }
      }
      return a;
    }  
 }