﻿String.prototype.trim=function(){return this.replace(/(^\s+)|\s+$/g,"")}
//-------------------------UTIL control--------------------------------------
var UTIL = {
    msgEnUs : {'CLTMSG_NO_SELECTED_ROW':'Please select a row first!'
        ,'CLTMSG_NO_CHANGES':'No changes should be save.'
        ,'CLTMSG_BE_DELETE_ROW':'Are you sure to delete?'
        ,'CLTMSG_NO_MASTER_DATA':'Please save master data first!'
        ,'CLTMSG_BE_SAVE_FIRST':'Please save current data first!'
        ,'CLTMSG_BE_LOST_CHANGE':'Are you sure to lost changes?'
        ,'CLTMSG_LOADING':'Loading data,please wait...'
        ,'CLTMSG_NO_GRID':'No data available,operation cancelled!'
        ,'CLTMSG_NO_RECORD':'There is no any record!'
        ,'V_REQUIRED':'\'%FIELDNAME%\' can\'t be empty!'
        ,'V_NUMERIC':'\'%FIELDNAME%\' must be numeric!'
        ,'V_DATETIME':'\'%FIELDNAME%\' must be datetime!'
        ,'V_INT':'\'%FIELDNAME%\' must be integer!'},
    msgZhCn:{'CLTMSG_NO_SELECTED_ROW':'请先选择一行!'
        ,'CLTMSG_NO_CHANGES':'未发现需保存的变更.'
        ,'CLTMSG_BE_DELETE_ROW':'确定要删除该数据?'
        ,'CLTMSG_NO_MASTER_DATA':'请先保存主数据!'
        ,'CLTMSG_BE_SAVE_FIRST':'请先保存该行数据!'
        ,'CLTMSG_BE_LOST_CHANGE':'确定要放弃所做的修改吗?'
        ,'CLTMSG_LOADING':'正在加载数据,请稍候...'
        ,'CLTMSG_NO_GRID':'无可用数据,操作已取消!'
        ,'CLTMSG_NO_RECORD':'无可用记录!'
        ,'V_REQUIRED':'\'%FIELDNAME%\' 不能为空!'
        ,'V_NUMERIC':'\'%FIELDNAME%\' 必须为数值型!'
        ,'V_DATETIME':'\'%FIELDNAME%\' 必须为日期型!'
        ,'V_INT':'\'%FIELDNAME%\' 必须为整型!'},

    //getMessage for globalization
    getMessage : function(_msgName)
    {
        if(document.forms[0]){
	        var msgArray=document.forms[0].id=='zhCN'?this.msgZhCn:this.msgEnUs;
            var msg = msgArray[_msgName];
        }
        if(!msg) msg = "#"+_msgName+"#";
        
        return msg;
    },
    
    convertStrToDate : function(_dateStr)
    {
	    var datePat = /^(\d{4})-(\d{1,2})-(\d{1,2})/; // Like '2005-10-9' pattern; matchArray[1]~3 => year,month,day
	    var matchArray = _dateStr.match(datePat); //date is the format ok?
	    if (matchArray == null) 
	    {
		    //alert(_dateStr + " Date is not in a valid format.")
		    return false;
	    }
	    _year = matchArray[1]; // parse date into variables
	    _month = matchArray[2]-1; //month {0..11}
	    _day = matchArray[3];

	    var timePat = /(\d{1,2}):(\d{1,2})/;  // Like '18:20' pattern; matchArray[1]~2 => hour,minute
	    matchArray = _dateStr.match(timePat); //time is the format ok?
	    if (matchArray == null) 
	    {
		    _hour=0;
		    _minute=0;
	    }
	    else{
		    _hour = matchArray[1]; // parse date into variables
		    _minute = matchArray[2];
	    }
	    return new Date(_year,_month,_day,_hour,_minute);
    },

    //通过设置span/td为els样式(对应style.css),显示内容为tooltip
    showEllipsis : function(){
        var e = this.getEventElement();
        if (!e.tagName || !e.innerHTML || e.tagName == 'BODY') return;
        if (e.offsetWidth < e.scrollWidth){
            if (!e.__title){
                if (e.title == e.innerHTML) return;
                if (e.title) e.__title = e.title;
            }
            if (e.__title)
                e.title = e.innerHTML;
            else
                e.title = e.innerHTML;
        }
        else{
            if (e.__title ){
                e.title = e.__title;
                e.__title = null;
            }
            else if(e.title == e.innerHTML )
                    e.title = '';
        }
    },
    
    refreshParent : function(){
        _opener=window.top.opener;
	    if(!_opener || _opener.closed) return;//parent closed?
    	
        if(_opener.document.getElementById('btn_Search_'))
            this.fireEvent('btn_Search_','click')
        else
            _opener.document.forms[0].submit();
    },
    //resetByPrefix : reset form elements to default value
    resetByPrefix : function(_prefix,grid){
	    var objField;
	    //var srcs='';
	    if(typeof(resetByPrefixEx) !="undefined"){
            resetByPrefixEx()
        }
	    for(var i=0;i<document.forms[0].elements.length;i++)
	    {
		    objField = document.forms[0].elements[i];
		    //if(objField.tagName=='BUTTON') break;
		    if(objField.id.indexOf(_prefix)==0)
		    {
			    //srcs += objField.id+'\t'+objField.type +'\n';
			    if(objField.type == 'text')
				    objField.value = '';
			    else
				    if(objField.type == 'select-one')
					    objField.selectedIndex = 0;
				    else
					    if(objField.type == 'checkbox')
						    objField.checked = false;
			    else 
			        if(objField.tagName=="TEXTAREA") objField.value = "";
		    }
	    }//end for
	    var oGrid = Json.BindContainer[grid];
	    if(oGrid != undefined){
            oGrid.DeleteAll();
            //oGrid.Control.div;
           // CreatePageIndex(null);
        }
    },
    
    //find parent by tag
    getParentNode : function(obj,tag){
	    if(obj && obj.tagName){
	        tag = tag.toUpperCase();
	        if(obj.tagName==tag)
	            return obj;
    	
	        while(obj=obj.parentNode){
		        if(obj.tagName==tag)
		            return obj;
	        }
	    }
	    return null;
    },
    
    getAbsolutePos : function(el) {
        var c = el, l = 0, t = 0;
	    for (; c.offsetParent; c = c.offsetParent){
		    l += c.offsetLeft;
		    t += c.offsetTop;
	    }
	    return {x: l, y: t};
    },
    
    addCssStyle : function(cssUrl){
        var sKey = cssUrl.substring(cssUrl.lastIndexOf('/')+1,cssUrl.lastIndexOf('.'))+cssUrl.length;
        if (!document.getElementById(sKey)){
          var oHead = document.getElementsByTagName('HEAD');
          if (oHead[0]){
            var objCSS = oHead[0].appendChild(document.createElement('link'));
            objCSS.id = sKey;            
            objCSS.href = cssUrl;
            objCSS.rel = 'stylesheet';
            objCSS.type = 'text/css';            
          }
        }
    },
    
    getEvent : function ()
    {
        if(document.all) return window.event;//IE
        func=this.getEvent.caller;//FireFox
        while(func!=null){
            var arg0=func.arguments[0];
            if(arg0){if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){return arg0;}}
            func=func.caller;
        }
        return null;
    },
    getEventElement : function ()
    {
        var evt=this.getEvent();
        if(evt)
            return evt.srcElement || evt.target;//IE || FireFox
        return null;
    },
    fireEvent : function (obj,evtName){
        if(!obj) return;
        if(typeof(obj)=='string') obj=document.getElementById(obj);
        if(!evtName) evtName='click';
        if(obj.fireEvent)//IE
            obj.fireEvent('on'+evtName);
        else if(obj.dispatchEvent){//FireFox
            var mevent=document.createEvent("MouseEvents");
            mevent.initEvent(evtName,true,true);
            obj.dispatchEvent(mevent);
        }else obj.onclick();
    },
    addEventHandler : function(element,type,func) {
        if(typeof(element)=='string') element=document.getElementById(element);
        if(element){
	        if(element.addEventListener)
		        element.addEventListener(type,func,false);
	        else if (element.attachEvent)
		        element.attachEvent('on'+type,func);
		    if(element.onclick && type.toUpperCase()=="CLICK"){//Bug fixed: add old to last.'__doPostBack'
		        element.onclick=null;
		        //var f=element.onclick;
		        //this.addEventHandler(element,'click',f);		        
		    }
		}
    },
    cancelSubmit:function(){
        var _event = this.getEvent();
        if(document.all){
            //_event.cancelBubble = true;
            //_event.contentOverflow = true; 
        }
        if(_event.preventDefault){
            _event.preventDefault();
            //_event.cancelBubble = true;
        }
    },
    checkCondition:function(){
        var flag=false;
        var objInput=document.getElementById("condition").getElementsByTagName("input");
        var objSelect=document.getElementById("condition").getElementsByTagName("select")
        var objTextarea=document.getElementById("condition").getElementsByTagName("textarea")
        for(var i=0;i<objInput.length;i++)
        {
            if (objInput[i].type=="text" && objInput[i].value.length>0) return true;
            if (objInput[i].type=="check" && objInput[i].checked) return true;
            if (objInput[i].type=="radio")
            {
                var objRadio=objInput[i];
                for(var j=0;j<objRadio.length;j++)
                {
                    if(objRadio[j].check) return true;
                }
            }
        }
        for(i=0;i<objSelect.length;i++)
        {
            if(objSelect[i].selectedIndex>0) return true;
        }
        for(i=0;i<objTextarea.length;i++)
        {
            if(objTextarea[i].value.length>0) return true;        
        }
        if (!flag)
        {
            alert("Please input one search condition at least!");
            return false;
        } 
    },
    onlyNum:function()
    {
        var oEvent = UTIL.getEvent();
        var keyValue = 0;
        if(document.all){
            keyValue=oEvent.keyCode;
            if(!((keyValue>=48&&keyValue<=57) ||(keyValue==8)||(keyValue==9) ||(keyValue==190) || (keyValue==46) ))
                oEvent.returnValue=false;
        }else{
           keyValue = oEvent.charCode;
           if(!oEvent.ctrlKey){
               if( ((keyValue>33 && keyValue<45) || (keyValue==47) || (keyValue>58 && keyValue <126)))
                    oEvent.preventDefault();
           }
        }
    },
    onlyInt:function()
    {
        var oEvent = UTIL.getEvent();
        var keyValue = 0;
        if(document.all){
            keyValue=oEvent.keyCode;
            if(!((keyValue>=48&&keyValue<=57) ||(keyValue==8)||(keyValue==9)||(keyValue==190)))
                oEvent.returnValue=false;
        }else{
           keyValue = oEvent.charCode;
           if(!oEvent.ctrlKey){
               if( ((keyValue>33 && keyValue<47) || (keyValue>58 && keyValue <126)))
                    oEvent.preventDefault();
           }
        }
    },
    maxLength:function(textarea,maxLength)
    {
        if((!textarea) || (!maxLength)) return;
        var oEvent = UTIL.getEvent();
        areaValue=textarea.id+"*"+textarea.value;
        if(maxLength <= textarea.value.length){            
            var keyValue = 0;  
            if(document.all){
                keyValue=oEvent.keyCode;
                if(!oEvent.ctrlKey){
                   if( ((keyValue>33 && keyValue <126) || keyValue==32))
                        oEvent.returnValue=false;
               }
            }else{
               keyValue = oEvent.charCode;
               if(!oEvent.ctrlKey){
                   if( ((keyValue>33 && keyValue <126) || keyValue==32))
                        oEvent.preventDefault();
               }
            }            
        }
    },
    checkLength:function(_textarea,_maxLength)
    {
        var oEvent = UTIL.getEvent();
        if (_maxLength<_textarea.value.length)
        {
           if(window.confirm("Surpasses the text frame the definition length, whether interrupts? "))
           {
              _textarea.value=_textarea.value.substring(0,_maxLength);
           }
           else
           {
              if (areaValue.indexOf(_textarea.id)>=0)
              {
                _textarea.value=areaValue.substr(areaValue.indexOf("*")+1)
              }
              else
              {
                _textarea.value=""
              }          
           }
           if (areaValue.indexOf(_textarea.id)>=0)
              areaValue=_textarea.value;
           else
              areaValue="";
        }        
    },
    getClipboard:function() 
    { 
        if (window.clipboardData)
        { 
	        return(window.clipboardData.getData('Text')); 
        } 
        else if (window.netscape)
        { 
	        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 
	        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); 
	        if (!clip) return; 
	        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); 
	        if (!trans) return; 
	        trans.addDataFlavor('text/unicode'); 
	        clip.getData(trans,clip.kGlobalClipboard); 
	        var str = new Object(); 
	        var len = new Object(); 
	        try { 
		        trans.getTransferData('text/unicode',str,len); 
	        } 
	        catch(error) { 
		        return null; 
	        } 
	        if (str) { 
		        if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString); 
		        else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString); 
		        else str = null; 
	        } 
	        if (str) { 
		        return(str.data.substring(0,len.value / 2)); 
	        }
        }
        return null; 
    },   
    Upper:function(control)
    { 
//        if(document.all){
//            var code=UTIL.getEvent().keyCode
//            if(code>96 & code<123)
//            {
//                if(UTIL.getEvent().keyCode)
//                    UTIL.getEvent().keyCode=code-32;
//            }
//            if(code==86)
//            {
//                if(control)
//                    control.value=control.value.toUpperCase();
//            }
//        }
     },
    GetArgsValue:function(obj,url,args)
    {            
        if(obj.value.length==0) return false;
        if(arguments.length<=2) 
        {   
            alert("At least 3 parameters");
            return false;
        }
        var ifrm=document.getElementById("gidframe");
        if(ifrm==null)
        {
            var ifrm=document.createElement("iframe");   
            document.body.appendChild(ifrm);
            ifrm.id="gidframe";
            ifrm.className="hiddenFrame";
        }
        var param="";
        for(var n=2;n<arguments.length;n++)
        {
            param=param+"&tid"+(n-1)+"="+arguments[n];
        }            
        ifrm.src=url+"&fld="+obj.value.toUpperCase()+param; 
     },
    GetPortDate:function(obj,url,target)
    {            
        var sfrm="gid";
        if (obj.indexOf("POL")>0) sfrm="pol";
        if (obj.indexOf("POD")>0) sfrm="pod";
        obj=document.getElementById(obj);
        if(obj.value.length==0) return false;
        var ifrm=document.getElementById(sfrm+"frame");
        if(ifrm==null)
        {
            var ifrm=document.createElement("iframe");   
            document.body.appendChild(ifrm);
            ifrm.id=sfrm+"frame";
            ifrm.className="hiddenFrame";
        }
        var param = "";
        if(target.indexOf(";")>0){
            var arr = target.split(";");
            for(var i=0;i<arr.length;i++){
                var nme = arr[i];
                if(document.getElementById(nme)){
                    param += nme + "=" + document.getElementById(nme).value.toUpperCase()+"&";
                }else if(nme == "null"){
                    param += "null" + i + "= &";
                }
            }
            param = "&"+param.substring(param.length-1,"");
        }   
        ifrm.src=url+"&fld="+obj.value.toUpperCase()+param; 
     },          
     TransWeight:function(weight,unit)
     {
          var d = 0;
          if (weight==null|| weight == 0){
                weight = 0;
                unit = "KGS";
          }
          switch (unit)
          {
              case "MTS":
                  d = this.FormatFloat(weight * 1000,3);
                  break;
              case "KGS":
                  d = weight;
                  break;
              case "LBS":
                  d = this.FormatFloat(weight * 0.4536,3);
                  break;
              default:
                  d = 999999;
                  break;
          }
          return d;
      },
      TransCube:function(Cube,unit)
      {
          var d = 0;
          if (Cube==null|| Cube == 0){
                Cube = 0;
                unit = "CBF";
          }
          switch (unit)
          {
              case "CBM":
                  d = this.FormatFloat(Cube * 0.0929,4);
                  break;
              case "CBF":
                  d = Cube;
                  break;
              default:
                  d = 999999;
                  break;
          }
          return d;
       },
      //length为要保留的小数位数
      FormatFloat:function(value,length)
      {
          if(value==null) return;
          var splitArray = new Array();
          if(value.toString().indexOf(".")>0){
              var i = Math.pow(10,length);
              value = Math.round(value*i)/i;
//              var splitArray=value.toString().split(".");
//              var temp=splitArray[1].substring(0,length);
//              value=parseFloat(splitArray[0]+"."+temp);
          } 
          return value;
      },
      toString:function(value){
        if(!value) return "";
        var str = value.toString();
        if(value.toUpperCase() =="NULL")
            str = "";
        return str;
      },
      //added by zhanglw on 2009-2-27
      //设置按钮的状态并改变样式
      DisableButton:function(curBtn)
      {
        
        if(curBtn && !curBtn.disabled)
        {
            curBtn.disabled=true;
            if(curBtn.className && curBtn.className.indexOf("_disabled")==-1)
                curBtn.className =curBtn.className+ "_disabled";
            if(curBtn.firstChild && curBtn.firstChild.src && curBtn.firstChild.src.indexOf("_.gif")==-1)
                curBtn.firstChild.src=curBtn.firstChild.src.replace(".gif","_.gif");
            
        }
      },
      EnableButton:function(curBtn)
      {
        if(curBtn && curBtn.disabled)
        {
             curBtn.disabled=false;
             if(curBtn.className && curBtn.className.indexOf("_disabled")>0)
                curBtn.className=curBtn.className.replace("_disabled","");
             if(curBtn.firstChild && curBtn.firstChild.src && curBtn.firstChild.src.indexOf("_.gif")>0)
                curBtn.firstChild.src=curBtn.firstChild.src.replace("_.gif",".gif");
           
        }
      }
}
//-------------------------window control--------------------------------------
var WINDOW = {
    catchWin:new Object(),
    open : function(_url,_width,_height){//center
	    var winFeature='toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes';
		    winFeature += ',width='+_width  +  ',height='+_height;
		    winFeature += ',left='+(window.screen.availWidth-_width)/2  +  ',top='+(window.screen.availHeight-_height)/2;
	    var key = _width.toString() + _height.toString();
	    if(this.catchWin[key] && typeof(this.catchWin[key].closed) != "undefined" && (!this.catchWin[key].closed)){
	        this.catchWin[key].location.href = _url;
	        this.catchWin[key].focus();
	    }else{
	        var win = window.open(_url,'',winFeature,'');
	        this.catchWin[key] = win;
	    }
	    
	    return this.catchWin[key];
    },

    openById : function(_url,_width,_height,key,_grid){//center with Id&Ts
	    var _id = Json.Util.getCellText(key,_grid);
	    if(_id){
	        _url = _url + (_url.indexOf('?')>0?'&':'?') + 'Id=' + _id;
		    return this.open(_url,_width,_height);
	    }
    },
    
    openAsFull : function(_url)//full & center
    {
        var winFeature='toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes';
		    winFeature += ',width='+(window.screen.availWidth-12)  +  ',height='+(window.screen.availHeight-26);
		    winFeature += ',left=0,top=0';
	    
	    var win = window.open(_url,'winId',winFeature,'');
	    if(win && typeof(win.focus) == "undefined"){
            win.focus();
        }
	    return win;
    },
    openInFrame : function(_url,_frameName){
        if(_frameName==null) _frameName="main";
        window.parent.frames[_frameName].document.location.replace(_url);
    },
    
    openCalendar : function(src,target){
        if(!src) src = UTIL.getEventElement();
        if(!target){
		    if(src.previousSibling.tagName=='INPUT')
		        target=src.previousSibling;
		    else if(src.previousSibling.previousSibling.tagName=='INPUT')
		        target=src.previousSibling.previousSibling;
		}    		    
	    if (target) 
	        PICKER.show(src.src.replace('.gif','.htm'),null,target,200,186);
    },
    openSearch : function(_url,target,_width,_height){
        if(!target) return;
        var param = "";
        if(target.indexOf(";")>0){
            var arr = target.split(";");
            for(var i=0;i<arr.length;i++){
                var nme = arr[i];
                if(document.getElementById(nme)){
                    param += nme + "=" + encodeURIComponent(document.getElementById(nme).value.toUpperCase())+"&";
                }else if(nme == "null"){
                    param += "null" + i + "= &";
                }
            }
            param = param.substring(param.length-1,"");
        }else{
           param = target + "="+document.getElementById(target).value;
        }
        _url = _url + "?" + param;
        this.open(_url,_width,_height,false);
    }
}

//-------------------------gridview control--------------------------------------
var GRID = {
    grid : null,
    idIdx : 1,
    chkIdx : 0,   
    selectedRow : null,
    oldSelectedClass : null,
    
    setup : function(_idIdx,_chkIdx,_grid,_notAlert){
        if(!_grid) _grid='grdv';//default
        
        this.grid = typeof(_grid)=='string'?document.getElementById(_grid):_grid;
        this.idIdx = (!_idIdx)?1:_idIdx;
        this.chkIdx = (!_chkIdx)?0:_chkIdx;
        
        if(this.grid)
            return true;
        else if(!_notAlert)
            alert(UTIL.getMessage('CLTMSG_NO_GRID'));
        return false;
    },
    setCheckBoxEnable : function (ctlOldIDs,idIdx,chkIdx,grid){
        if(!this.setup(idIdx,chkIdx,grid,true)) return;
        if(!ctlOldIDs) ctlOldIDs = document.getElementById('txtOldIDs');
        var _varIDs='';
        if(this.grid){
            for(var i=1;i<this.grid.rows.length;i++){//grid/row/cell/span/checkBox
                if(ctlOldIDs){//save old ids
                    if(this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0])//span/checkBox in gridview
                        var chkBoxValue = this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0].checked;
                        //var chkBoxValue = this.grid.rows[i].cells[this.chkIdx].childNodes[0].checked;//checkBox in datagrid
                    if(chkBoxValue==true)
                        _varIDs = _varIDs + ',' + this.grid.rows[i].cells[this.idIdx].innerHTML;
                }            
                this.grid.rows[i].cells[this.chkIdx].childNodes[0].disabled=false;
                if(this.grid.rows[i].cells.length>1 && this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0])//span/checkBox in gridview
                    this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0].disabled=false;
            }//end for
        }
        
        if(_varIDs!='')// at lease return a char
            _varIDs=_varIDs.substring(1,_varIDs.length);
        ctlOldIDs.value=_varIDs;
    },

    getChecked : function(ctlIDs,idIdx,chkIdx,grid){//gridview,textbox to save ids, id index in grdv, chkbox index in grdv
        if(!this.setup(idIdx,chkIdx,grid)) return;
        if(ctlIDs==null) ctlIDs = document.getElementById('txtIDs');
        var _varIDs='';
        if(this.grid){
            for(var i=1;i<this.grid.rows.length;i++){//grid/row/cell/span/checkBox
                 if(this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0])//span/checkBox in gridview
                    var chkBoxValue = this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0].checked;
                else
                    var chkBoxValue = this.grid.rows[i].cells[this.chkIdx].childNodes[0].checked;//checkBox in datagrid
                if(chkBoxValue==true)
                    _varIDs = _varIDs + ',' + this.grid.rows[i].cells[this.idIdx].innerHTML;
                    
                this.grid.rows[i].cells[this.chkIdx].childNodes[0].disabled=true;
            }
        }
        
        if(_varIDs!='')// at lease return a char
            _varIDs=_varIDs.substring(1,_varIDs.length);        
        ctlIDs.value=_varIDs;
    },

    setChecked : function(ctlIDs,idIdx,chkIdx,grid){//set checkbox status by IDs control
        if(!this.setup(idIdx,chkIdx,grid,true)) return;
        if(ctlIDs==null) ctlIDs = document.getElementById('txtIDs');
        
        var _varIDs=ctlIDs.value;
        if(this.grid && _varIDs.length>1)
        {
            if(_varIDs.indexOf(',')!=0) _varIDs=','+_varIDs;//add first ',' to match each item
                
            for(var i=1;i<this.grid.rows.length;i++){//grid/row/cell/span/checkBox
                if(this.grid.rows[i].cells[this.idIdx] && _varIDs.indexOf(','+this.grid.rows[i].cells[this.idIdx].innerHTML)>-1){//exists?
                    if(this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0])//span/checkBox in gridview
                        this.grid.rows[i].cells[this.chkIdx].childNodes[0].childNodes[0].checked=true;
                    else
                        this.grid.rows[i].cells[this.chkIdx].childNodes[0].checked=true;//checkBox in datagrid
                }
            }//end for
        }
    },
    
    deleteRow : function(autoSubmit,grid){
        if(!this.setup(null,null,grid)) return false;
        if(this.getCellText()){
	        if(autoSubmit && typeof(__doPostBack)=='function')//client Side select event
	        {
		        __doPostBack('DELETE',this.getCellText()+','+this.getCellText(this.idIdx+1));
		        return false;
		    }
		    if(window.confirm(UTIL.getMessage('CLTMSG_BE_DELETE_ROW')))
	            return true;
	    }
	    return false;
    },
    
    select : function(grid){
        if(!this.setup(null,null,grid)) return null;
        if(this.selectedRow)
            this.selectedRow.className = this.oldSelectedClass;

        var currentRow = UTIL.getParentNode(UTIL.getEventElement(),"TR");
        if(currentRow){
            this.oldSelectedClass = currentRow.className;//save old
	        currentRow.className = 'selected';
	    }
	    this.selectedRow=currentRow;    
    },
    
    getCellText : function(cellIdx,grid){
        if(!this.setup(null,null,grid)) return null;
	    if(!cellIdx) cellIdx=this.idIdx;
    	
	    if(this.selectedRow){
	        if(this.selectedRow.cells && this.selectedRow.cells[cellIdx])
	            return this.selectedRow.cells[cellIdx].innerHTML;
	        return 'DUMMY';//grid selected,but no data.
	    }
	    else{//serverside select event
	        for(var i=0;i<this.grid.rows.length;i++){
		        if(this.grid.rows[i].className == 'selected')
			        return this.grid.rows[i].cells[cellIdx].innerHTML;
	        }
	    }

	    window.alert(UTIL.getMessage('CLTMSG_NO_SELECTED_ROW'));
	    return null;
    },
    /*
    *功能：分组
    *参数：第一个参数为，要分组的表格ID，第二个到无限个，为要分组的参数在表格中的第几列（从0开始）
    *Author:guosg
    */
    group:function(){
	    var oldValue = new Array();
	    var arrArg = new Array();
	    var oGrid = null;
	    var ishow = 9999;
	    //解析用户传进来的参数
	    if(arguments.length>1){
		    for (i=0; i< arguments.length; i++){
		      if(i==0){
			      this.setup(null,null,arguments[i]);
		      }else{
			      arrArg.push(arguments[i]);
			  }
	       }
	    }else{
		    alert("至少拥有两个参数");
		    return;
	    }
        oGrid = this.grid;
	    for(r=0;r<oGrid.getElementsByTagName("TR").length;r++){
		    var oRow = oGrid.getElementsByTagName("TR")[r];
		    var isGroup = true;
		    if(arrArg.length >0){
			    //判断是否为同一组
			    for(c=0;c<arrArg.length;c++){
				    var oCell = oRow.getElementsByTagName("TD")[arrArg[c]];				    
				    var oMIT = oRow.getElementsByTagName("TD")[4];
				    if(r == 1 && oMIT && oMIT.innerHTML=="1"){
					    ishow=2;
				    }
				    if(oCell){
					    if(r == 0 || r == ishow){
						    oldValue[c]=oCell.innerHTML;
						    isGroup = isGroup && false;
					    }else{
						    isGroup = (oCell.innerHTML == oldValue[c]) && isGroup;
					    }
				    }
			    }

			    //
			    for(c=0;c<arrArg.length;c++){
				    var oCell = oRow.cells[arrArg[c]];
				    if(!oCell) continue;
				    if(isGroup && r>1)
					    oCell.innerHTML = "";
				    else
					    oldValue[c] = oCell.innerHTML;
			    }
		    }
	    }
    }
}
//-------------------------treeview control--------------------------------------
var TREE = {
    currentNode:null,
    
    setup : function(){
        this.attachNodeEvent();
    },
    attachNodeEvent : function()//Add event when Node click
    {
        var nodes = document.getElementsByTagName('A');
        for(var i=0;i<nodes.length;i++)
        {
            if(nodes[i].id.indexOf('trvt')==0 && nodes[i].href)
            {
                nodes[i].onclick=this.selectedNodeChanged;
            }
        }
    },
    
    selectedNodeChanged : function(src)//when node click, do something
    {
        if(!src) src= UTIL.getEventElement();
        src.className='trv_1';
        if(this.currentNode && src!=this.currentNode)
            this.currentNode.className='trv_0';
        this.currentNode = src;
        
        if (typeof(OnNodeChanged) == "function")
            OnNodeChanged(src,src.href.substring(11,src.href.length));//11= length of "javascript:"
         
        return false;//break from href
    }
}

var Format = {
	DateTime : {
		MONTH_NAMES:new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),
		DAY_NAMES:new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat'),
		LZ : function(x){return(x<0||x>9?"":"0")+x},
		isDate:function(val,format){var date=this.getDateFromFormat(val,format);if(date==0){return false;}return true;},
		compareDates:function(date1,dateformat1,date2,dateformat2){var d1=this.getDateFromFormat(date1,dateformat1);var d2=this.getDateFromFormat(date2,dateformat2);if(d1==0 || d2==0){return -1;}else if(d1 > d2){return 1;}return 0;},
		formatDate : function(date,format){format=format+"";var result="";var i_format=0;var c="";var token="";var y=date.getYear()+"";var M=date.getMonth()+1;var d=date.getDate();var E=date.getDay();var H=date.getHours();var m=date.getMinutes();var s=date.getSeconds();var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=new Object();if(y.length < 4){y=""+(y-0+1900);}value["y"]=""+y;value["yyyy"]=y;value["yy"]=y.substring(2,4);value["M"]=M;value["MM"]=this.LZ(M);value["MMM"]=this.MONTH_NAMES[M-1];value["NNN"]=this.MONTH_NAMES[M+11];value["d"]=d;value["dd"]=this.LZ(d);value["E"]=this.DAY_NAMES                        [E+7];value["EE"]=this.DAY_NAMES                        [E];value["H"]=H;value["HH"]=this.LZ(H);if(H==0){value["h"]=12;}else if(H>12){value["h"]=H-12;}else{value["h"]=H;}value["hh"]=this.LZ(value["h"]);if(H>11){value["K"]=H-12;}else{value["K"]=H;}value["k"]=H+1;value["KK"]=this.LZ(value["K"]);value["kk"]=this.LZ(value["k"]);if(H > 11){value["a"]="PM";}else{value["a"]="AM";}value["m"]=m;value["mm"]=this.LZ(m);value["s"]=s;value["ss"]=this.LZ(s);while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(value[token] != null){result=result + value[token];}else{result=result + token;}}return result;},
		_isInteger:function(val){var digits="1234567890";for(var i=0;i < val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;},
		_getInt:function(str,i,minlength,maxlength){for(var x=maxlength;x>=minlength;x--){var token=str.substring(i,i+x);if(token.length < minlength){return null;}if(this._isInteger(token)){return token;}}return null;},
		getDateFromFormat:function(val,format){val=val+"";format=format+"";var i_val=0;var i_format=0;var c="";var token="";var token2="";var x,y;var now=new Date();var year=now.getYear();var month=now.getMonth()+1;var date=1;var hh=now.getHours();var mm=now.getMinutes();var ss=now.getSeconds();var ampm="";while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(token=="yyyy" || token=="yy" || token=="y"){if(token=="yyyy"){x=4;y=4;}if(token=="yy"){x=2;y=2;}if(token=="y"){x=2;y=4;}year=this._getInt(val,i_val,x,y);if(year==null){return 0;}i_val += year.length;if(year.length==2){if(year > 70){year=1900+(year-0);}else{year=2000+(year-0);}}}else if(token=="MMM"||token=="NNN"){month=0;for(var i=0;i<this.MONTH_NAMES.length;i++){var month_name=this.MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){if(token=="MMM"||(token=="NNN"&&i>11)){month=i+1;if(month>12){month -= 12;}i_val += month_name.length;break;}}}if((month < 1)||(month>12)){return 0;}}else if(token=="EE"||token=="E"){for(var i=0;i<this.DAY_NAMES                        .length;i++){var day_name=this.DAY_NAMES                        [i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val += day_name.length;break;}}}else if(token=="MM"||token=="M"){month=this._getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return 0;}i_val+=month.length;}else if(token=="dd"||token=="d"){date=this._getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return 0;}i_val+=date.length;}else if(token=="hh"||token=="h"){hh=this._getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>12)){return 0;}i_val+=hh.length;}else if(token=="HH"||token=="H"){hh=this._getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>23)){return 0;}i_val+=hh.length;}else if(token=="KK"||token=="K"){hh=this._getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>11)){return 0;}i_val+=hh.length;}else if(token=="kk"||token=="k"){hh=this._getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>24)){return 0;}i_val+=hh.length;hh--;}else if(token=="mm"||token=="m"){mm=this._getInt(val,i_val,token.length,2);if(mm==null||(mm<0)||(mm>59)){return 0;}i_val+=mm.length;}else if(token=="ss"||token=="s"){ss=this._getInt(val,i_val,token.length,2);if(ss==null||(ss<0)||(ss>59)){return 0;}i_val+=ss.length;}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am"){ampm="AM";}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){ampm="PM";}else{return 0;}i_val+=2;}else{if(val.substring(i_val,i_val+token.length)!=token){return 0;}else{i_val+=token.length;}}}if(i_val != val.length){return 0;}if(month==2){if( ((year%4==0)&&(year%100 != 0) ) ||(year%400==0) ){if(date > 29){return 0;}}else{if(date > 28){return 0;}}}if((month==4)||(month==6)||(month==9)||(month==11)){if(date > 30){return 0;}}if(hh<12 && ampm=="PM"){hh=hh-0+12;}else if(hh>11 && ampm=="AM"){hh-=12;}var newdate=new Date(year,month-1,date,hh,mm,ss);return newdate.getTime();},
		parseDate:function(val){var preferEuro=(arguments.length==2)?arguments[1]:false;generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');var d=null;for(var i=0;i<checkList.length;i++){var l=window[checkList[i]];for(var j=0;j<l.length;j++){d=this.getDateFromFormat(val,l[j]);if(d!=0){return new Date(d);}}}return null;}
	},
	Decimal:function(){
	},
	/*val格式：d:y-MM-dd;n:#.###
	*
	*/
	F : function(inp,val){
		if(!inp || !val) return "";
		var arr = val.split(":");		
		if(arr[0].toUpperCase()=="D"){
			if(inp.getDate){
				return this.DateTime.formatDate(inp,arr[1]);
			}else{
			    var date = null
				var r = new RegExp("Date\\((\\d{1,})");
				if(inp.match(r))
				    date = new Date(parseInt(inp.match(r)[1]));
				else
				    date = new Date(parseInt(this.DateTime.getDateFromFormat(inp,arr[1])));
				
				return inp;
			}
		}else if(arr[0].toUpperCase()=="N"){
			
		}
		//add by linhc 090827
		else if(arr[0].toUpperCase()=="H"){
		    if(inp.toString().indexOf(":")==-1){
		       var h="";
               var m ="";
               for(i=inp.toString().length;i<4;i++){
                   inp = "0".concat(inp.toString());
               }
              var timePat = new RegExp("\\d{4}");   
                         
              if(inp.toString().match(timePat)){
                 h= inp.toString().substring(0,2);
                 m= inp.toString().substring(2);
              }
             return h.concat(":"+m);
            }else{
             //预防出现5为数字的错误情况
              var str = inp.toString().replace(":","");
              if(str.toString().length>5){
                 str.toString().substr(0,4);
              }
              return str;
            }
		}
	}
}


//-------------------------validate control--------------------------------------
var VALIDATOR = {
    JS_VALIDATORS:null,
    JS_VALIDATORS_ERROR:null,
    //PUBLIC
    setup : function()
    {
	    this.JS_VALIDATORS=new Array();

	    var ctlValObj = new RegExp("^\\w{3,5}?_(\\w*)_((\\w\\d)*)$");
	    var valFields=document.forms[0].elements;
	    for(var i=0;i<valFields.length;i++)
	    {
            m = valFields[i].id.match(ctlValObj);
            if(m && m[2] && m[2].indexOf('V')>-1)
                this.JS_VALIDATORS.push(this.initControl(valFields[i],m[1],m[2]));
	    }
    },
    //init each control 
    initControl : function(control,dataField,actionFlag) {
	    var dataTag=actionFlag.indexOf('D')<0 ? 0 : actionFlag.substring(actionFlag.indexOf('D')+1,actionFlag.indexOf('D')+2);
	    var validateTag=actionFlag.indexOf('V')<0 ? 0 : actionFlag.substring(actionFlag.indexOf('V')+1,actionFlag.indexOf('V')+2);
    	
	    control.dataField=dataField;
	    control.dataTag=dataTag;
	    control.validateTag=validateTag;
	    //changed  parentElement to parentNode  by zhanglw on 2009-4-2
	    if(control.parentNode.previousSibling.hasChildNodes()){
	        if(control.parentNode.previousSibling.childNodes[0].hasChildNodes())
                control.displayText=control.parentNode.previousSibling.childNodes[0].innerText;
            else
                control.displayText=control.parentNode.previousSibling.innerText;
        }
        if(!control.displayText || control.displayText.length==0) control.displayText=control.dataField;
    	
	    return control;
    },
    //every ajax refresh,obj ref should be refresh
    ajaxRefresh : function()
    {
        temp_JS_VALIDATORS=new Array();
        if(this.JS_VALIDATORS.length>0 && this.JS_VALIDATORS[0].parentNode) return;
        var oldCtl = this.JS_VALIDATORS.pop()
        while(oldCtl)
        {
            var newCtl = document.getElementById(oldCtl.id);
            newCtl.dataField=oldCtl.dataField;
            newCtl.dataTag=oldCtl.dataTag;
            newCtl.validateTag=oldCtl.validateTag;
            newCtl.displayText=oldCtl.displayText;
            temp_JS_VALIDATORS.push(newCtl);
            oldCtl = this.JS_VALIDATORS.pop()
        }
        this.JS_VALIDATORS=temp_JS_VALIDATORS;
    },
    //PUBLIC 按钮触发:校验
    validate : function(iDataTag,bAlert)
    {
        if(!this.JS_VALIDATORS) this.setup();
	    if(bAlert==null) bAlert=true;
	    if(iDataTag==null) iDataTag=0;	
    	
	    this.ajaxRefresh();
	    this.JS_VALIDATORS_ERROR='';
	    for(var i=0;i<this.JS_VALIDATORS.length;i++)
	    {
		    if(iDataTag==0 || (this.JS_VALIDATORS[i].dataTag&iDataTag)>0)
			    this.recheck(this.JS_VALIDATORS[i]);
	    }
    	
	    if(this.JS_VALIDATORS_ERROR.length==0)
	        return true;
	    else if(bAlert)
	        alert(this.JS_VALIDATORS_ERROR);
        return false;
    },

    recheck : function(control)
    {
        this.resetError(control);
        
	    if((control.validateTag&1)>0 && !this.checkRegex('V_REQUIRED',control))
		    this.raiseError(control,UTIL.getMessage('V_REQUIRED'));

        if(control.value.length==0) return;
    			
	    if((control.validateTag&2)>0 && !this.checkRegex('V_NUMERIC',control))
	        this.raiseError(control,UTIL.getMessage('V_NUMERIC'));
	    
	    if((control.validateTag&16)>0 && !this.checkRegex('V_INT',control))
	        this.raiseError(control,UTIL.getMessage('V_INT'));
    	
	    if((control.validateTag&4)>0 && !this.checkRegex('V_DATETIME',control))
	        this.raiseError(control,UTIL.getMessage('V_DATETIME'));
    	
	    if((control.validateTag&8)>0 && typeof(Page_Validate) == "function")//custom per page validate
	        Page_Validate(control);
    },
    checkRegex : function(valType,control){
        switch(valType)
        {
            case 'V_REQUIRED':
                control.value=control.value.replace(/(^\s+)|\s+$/g,'');
                return (control.value.length>0);// /.+/
                break;
            case 'V_NUMERIC':
                return (!isNaN(control.value));// /^[-\+]?\d+(\.\d+)?$/
                break;
            case 'V_DATETIME':
                return (/^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2}){0,1}$/).test(control.value);
                break;
                
            case 'V_INT':
                return (/^[-\+]?\d*/).test(control.value);
                break;
        }
    },    
    resetError : function(control){
        if(control.error=='1')
        {
            control.error='0';
            control.parentNode.removeChild(control.parentNode.lastChild);
        }
    },
    //PUBLIC
    raiseError : function(control,resource){
        this.JS_VALIDATORS_ERROR=this.JS_VALIDATORS_ERROR+'- '+resource.replace('%FIELDNAME%',control.displayText)+'\n';
        if(control.error!='1')
        {
            control.error='1';
            var valReq=document.createElement("SPAN");
	        valReq.style.cssText="color:Red";
	        valReq.innerText="*";
	        control.parentNode.appendChild(valReq);
	    }
    }
}


//-------------------------pop up control--------------------------------------
var PICKER = {
  pickerPad:null,
  pickerHeader:null,
  targetID:null,
  targetName:null,
  //--------Add pad and pad shadow effect-----
  addPickerPad : function(){
    var ctlPickerPad=document.createElement("DIV");
        ctlPickerPad.style.cssText='position:absolute;display:none;z-index:99;';
        ctlPickerPad.innerHTML='<div id="header"><b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b><div id="headerContent"></div>'
            +'<div id="controlBar"><ul><li><a href="javascript:PICKER.i();" id="aClose"></a></li>'
            +'<li><a href="javascript:PICKER.j();" id="aRefresh"></a></li>'
            +'<li><a href="javascript:PICKER.k();" id="aSelect"></a></li></ul></div></div>'
            +'<div id="content"><iframe id="elPickerFrm" scrolling="no" frameBorder="0"></iframe></div>';
    document.body.appendChild(ctlPickerPad);

   this.pickerPad=ctlPickerPad;
   this.pickerFrm=document.getElementById('elPickerFrm');
  },
  //PUBLIC---------Show Picker ------
  show : function(defaultURL,targetID,targetName,width,height,source){
    if(!this.pickerPad) this.setup();//Init on first load
    if(this.pickerPad.style.display!="none") { this.hide();return false;}//Toggle picker
    if(!targetName && !source && !targetID) { alert("Receiver control should be setted!"); return false;}//Verify
    
    this.targetName=null;this.targetID=null;this.source=null; //reset first    
    if(targetName)this.targetName=typeof(targetName)=='string'?document.getElementById(targetName):targetName;
    if(targetID)this.targetID=typeof(targetID)=='string'?document.getElementById(targetID):targetID;
    if(source)this.source=typeof(source)=='string'?document.getElementById(source):source;
   	    else if(targetName)
   	        this.source=this.targetName;
   	        else this.source=this.targetID;
   	//URL rewrite
   	if(this.targetName) defaultURL = defaultURL+(defaultURL.indexOf('?')>0?'&':'?')+'TNAME='+this.targetName.value;
   	if(this.targetID) defaultURL = defaultURL+(defaultURL.indexOf('?')>0?'&':'?')+'TID='+this.targetID.value;
	if(defaultURL&&this.pickerFrm.src!=defaultURL){this.pickerFrm.src="about:blank";this.pickerFrm.src=defaultURL;}
	
	if(width && height){
	    this.pickerPad.width=width;
		this.pickerPad.height=height;
		
		this.pickerFrm.width=width;
		this.pickerFrm.height=height;
	}
	this.pickerFrm.scrolling="no";
	this.pickerPad.style.display="block";
    this.setPosition();
  },
  //--reset position--
  setPosition : function(){
    var offsetPos=UTIL.getAbsolutePos(this.source);
    var calTop=0,calLeft=0;
    if((offsetPos.y+this.pickerPad.offsetHeight-document.body.scrollTop)>document.body.clientHeight)//set upper
        calTop=offsetPos.y-this.pickerPad.offsetHeight;
    if(calTop<1)//set lower
        calTop=offsetPos.y+2;

    if((offsetPos.x+this.pickerPad.offsetWidth-document.body.scrollLeft)>document.body.clientWidth)//set righter
        calLeft=offsetPos.x+this.source.offsetWidth-this.pickerPad.offsetWidth;
    if(calLeft<1)//set lefter
        calLeft=offsetPos.x;

   this.pickerPad.style.left=calLeft+'px';
   this.pickerPad.style.top=calTop+'px';
  },

  //---Hide---
  hide : function(){
   this.pickerPad.style.display="none";
  },
  
  //PUBLIC---Return--
  pick : function(vID,vName){
    if(vID &&this.targetID){this.targetID.value=vID; UTIL.fireEvent(this.targetID,'change');
        this.targetID.title=vName?vName:vID;}
    if(vName &&this.targetName){ this.targetName.value=vName;  UTIL.fireEvent(this.targetID,'change');}
    
    this.hide();
  },
  //--Set up--
  setup : function(){
    UTIL.addCssStyle('../App_Themes/Popup/popup.css');
    this.addPickerPad();
  },
  //Hide funcion detail
  i : function(){this.hide();},
  j : function(){this.pickerFrm.contentWindow.document.forms[0].submit();},
  k : function(){this.pickerFrm.contentWindow.pick();}
}

//-------------------------menu--------------------------------------
menuPrefix='menu'     // Prefix that all menu layers must start with
                      // All layers with this prefix will be treated
                      // as a part of the menu system.
var menuTree, mouseMenu, hideTimer, doHide;
var Menu={
    expandMenu:function(menuContainer,subContainer,menuLeft,menuTop){
        // Hide all submenus thats's not below the current level
        doHide = false;
        if((menuContainer) && (!subContainer) && menuContainer.indexOf("Sub")== -1)
        {
            var _hideMenu=document.getElementsByTagName("DIV");
            for(i=0; i<_hideMenu.length; i++)
            if ((_hideMenu[i].id.indexOf("Sub")!= -1)){
                Menu.hideObject(_hideMenu[i].id);
            }
        }
        if (menuContainer != menuTree) {
            var menuLayers = document.getElementsByTagName("DIV");
            for (i=0; i<menuLayers.length; i++) {
                if ((menuLayers[i].id.indexOf(menuContainer) != -1)){
                    //Menu.hideObject(menuLayers[i].id);
                }
            }
        }
        // If this is item has a submenu, display it, or it it's a toplevel menu, open it
        if (subContainer){
            if ((menuLeft) && (menuTop)){
    	        Menu.positionObject(subContainer,menuLeft,menuTop);
    	        //Menu.hideAll();
            }
            else {
      	        //Menu.positionObject(subContainer, document.getElementById(menuContainer).offsetWidth + document.getElementById(menuContainer).style.pixelLeft - 10, mouseY);
            }
            Menu.showObject(subContainer);
            menuTree = subContainer;
        }
    },
    showObject:function(obj){
        document.getElementById(obj).style.visibility = "visible";
    },
    hideObject:function(obj){
        document.getElementById(obj).style.visibility = "hidden";
    },
    positionObject:function(obj,x,y){
        var foo = document.getElementById(obj).style;
        foo.left = x;
        foo.top = y;
    },
    hideAll:function(){
        var menuLayers = document.getElementsByTagName("DIV");
        for (i=0; i<menuLayers.length; i++) {
            if (menuLayers[i].id.indexOf(menuPrefix) != -1){
                Menu.hideObject(menuLayers[i].id);
            }
        }
    },
    hideMe:function(hide){
	    if (hide) {
		    if (doHide) { Menu.hideAll(); }
	    }
	    else {
		    doHide = true;
		    hideTimer = window.setTimeout("Menu.hideMe(true)", 10);
	    }
    },
    mouseMove:function(e){
        mouseY = window.event.y;
    },
    getPos:function(el,sProp){
	    var iPos = 0;
	    while(el!=null){
		    iPos+=el["offset" + sProp];
		    el = el.offsetParent;
	    }
	    return iPos;
    }
}
//浮动窗口
var PopWin={
    MinMax:function(){    
        var _popWin=document.getElementById("popWin");
        var _top=_popWin.style.top;
        if(_top.replace("px","")==document.body.clientHeight-31){
            _popWin.style.top=document.body.clientHeight-212;
            document.getElementById("minmax").src="../IMAGES/min.gif";
        }
        else
        {
            _popWin.style.top=document.body.clientHeight-31;
            document.getElementById("minmax").src="../IMAGES/max.gif";
        }
    },
    Close:function(){
        document.getElementById("popWin").style.display="none";    
    }
}

//设置快键提交查询
function hotkey(func){
    var oEvent = UTIL.getEvent();
    var keyValue = 0;
    if(document.all){
        keyValue=oEvent.keyCode;
        if(keyValue == 13)
            func();
    }else{
       keyValue = oEvent.keyCode;
       if(!oEvent.ctrlKey){
           if( keyValue == 13)
                func();
       }
    }
    
}
